Quellcode durchsuchen

Synced with mrdoob's branch.

alteredq vor 15 Jahren
Ursprung
Commit
508d22f296
48 geänderte Dateien mit 1298 neuen und 14560 gelöschten Zeilen
  1. 38 22
      README.md
  2. 107 104
      build/Three.js
  3. 116 113
      build/ThreeDebug.js
  4. 153 150
      build/ThreeExtras.js
  5. 10 3
      examples/canvasrenderer_sandbox.html
  6. 2 2
      examples/geometry_earth.html
  7. 13 15
      examples/geometry_panorama.html
  8. 13 15
      examples/geometry_panorama_fisheye.html
  9. 2 2
      examples/geometry_terrain.html
  10. 3 3
      examples/materials.html
  11. 15 15
      examples/materials_cars.html
  12. 4 4
      examples/materials_cubemap.html
  13. 2 2
      examples/materials_cubemap_balls_reflection.html
  14. 1 1
      examples/materials_cubemap_balls_refraction.html
  15. 1 1
      examples/materials_cubemap_escher.html
  16. 1 1
      examples/materials_cubemap_refraction.html
  17. 1 1
      examples/materials_reflection.html
  18. 1 1
      examples/materials_shaders_fresnel.html
  19. 4 3
      examples/materials_video.html
  20. 0 4394
      examples/obj/Q5/Q5.js
  21. 0 5790
      examples/obj/Q5/Q5.obj
  22. BIN
      examples/obj/nano/.DS_Store
  23. 0 953
      examples/obj/nano/Nano.js
  24. 0 1137
      examples/obj/nano/Nano.obj
  25. 0 575
      examples/obj/nano/nanoBody.js
  26. 0 609
      examples/obj/nano/nanoBody.obj
  27. 52 55
      examples/obj_convert_test.html
  28. 1 0
      examples/textures/metal.txt
  29. 15 3
      examples/uqbiquity_test.html
  30. 3 12
      src/extras/ImageUtils.js
  31. 1 1
      src/materials/MeshBasicMaterial.js
  32. 1 1
      src/materials/MeshLambertMaterial.js
  33. 1 1
      src/materials/MeshPhongMaterial.js
  34. 5 5
      src/materials/MeshShaderMaterial.js
  35. 44 0
      src/materials/Texture.js
  36. 9 0
      src/materials/mappings/CubeReflectionMapping.js
  37. 9 0
      src/materials/mappings/CubeRefractionMapping.js
  38. 9 0
      src/materials/mappings/LatitudeReflectionMapping.js
  39. 9 0
      src/materials/mappings/LatitudeRefractionMapping.js
  40. 9 0
      src/materials/mappings/SphericalReflectionMapping.js
  41. 9 0
      src/materials/mappings/SphericalRefractionMapping.js
  42. 9 0
      src/materials/mappings/UVMapping.js
  43. 0 38
      src/materials/textures/Texture.js
  44. 0 21
      src/materials/textures/TextureCube.js
  45. 345 330
      src/renderers/CanvasRenderer.js
  46. 176 169
      src/renderers/WebGLRenderer.js
  47. 1 1
      utils/REVISION
  48. 103 7
      utils/build.py

+ 38 - 22
README.md

@@ -13,41 +13,40 @@ More? irc.freenode.net #three.js
 
 ### Examples ###
 
-Materials
+#### Canvas ####
 
-[![materials_cars](http://mrdoob.github.com/three.js/assets/examples/25_materials_cars.png)](http://mrdoob.github.com/three.js/examples/materials_cars.html)
-[![materials_cubemap_refraction](http://mrdoob.github.com/three.js/assets/examples/18_materials_cubemap_refraction.png)](http://mrdoob.github.com/three.js/examples/materials_cubemap_refraction.html)
-[![materials_cubemap_balls_reflection](http://mrdoob.github.com/three.js/assets/examples/15_materials_cubemap_balls_reflection.png)](http://mrdoob.github.com/three.js/examples/materials_cubemap_balls_reflection.html)
-[![materials_cubemap_balls_refraction](http://mrdoob.github.com/three.js/assets/examples/16_materials_cubemap_balls_refraction.png)](http://mrdoob.github.com/three.js/examples/materials_cubemap_balls_refraction.html)
-[![materials_cubemap_escher](http://mrdoob.github.com/three.js/assets/examples/17_materials_cubemap_escher.png)](http://mrdoob.github.com/three.js/examples/materials_cubemap_escher.html)
-[![materials_cubemap](http://mrdoob.github.com/three.js/assets/examples/14_materials_cubemap.png)](http://mrdoob.github.com/three.js/examples/materials_cubemap.html)
-[![materials_gl](http://mrdoob.github.com/three.js/assets/examples/20_materials_gl.png)](http://mrdoob.github.com/three.js/examples/materials_gl.html)
+[![materials_reflection](http://mrdoob.github.com/three.js/assets/examples/27_materials_reflection.png)](http://mrdoob.github.com/three.js/examples/materials_reflection.html)
 [![materials](http://mrdoob.github.com/three.js/assets/examples/13_materials.png)](http://mrdoob.github.com/three.js/examples/materials.html)
 [![materials_depth](http://mrdoob.github.com/three.js/assets/examples/19_materials_depth.png)](http://mrdoob.github.com/three.js/examples/materials_depth.html)
 [![materials_normal](http://mrdoob.github.com/three.js/assets/examples/22_materials_normal.png)](http://mrdoob.github.com/three.js/examples/materials_normal.html)
-[![materials_multimaterials](http://mrdoob.github.com/three.js/assets/examples/21_materials_multimaterials.png)](http://mrdoob.github.com/three.js/examples/materials_multimaterials.html)
-[![materials_shaders](http://mrdoob.github.com/three.js/assets/examples/23_materials_shaders.png)](http://mrdoob.github.com/three.js/examples/materials_shaders.html)
-[![materials_video](http://mrdoob.github.com/three.js/assets/examples/24_materials_video.png)](http://mrdoob.github.com/three.js/examples/materials_video.html)
-
-Geometry
-
-[![large_mesh](http://mrdoob.github.com/three.js/assets/examples/12_large_mesh.png)](http://mrdoob.github.com/three.js/examples/geometry_large_mesh.html)
+[![lights_pointlights](http://mrdoob.github.com/three.js/assets/examples/09_walthead.png)](http://mrdoob.github.com/three.js/examples/lights_pointlights.html)
 [![interactive_cubes](http://mrdoob.github.com/three.js/assets/examples/11_interactive.png)](http://mrdoob.github.com/three.js/examples/interactive_cubes.html)
 [![camera_ortographic](http://mrdoob.github.com/three.js/assets/examples/10_orthographic.png)](http://mrdoob.github.com/three.js/examples/camera_orthographic.html)
-[![lights_pointlights](http://mrdoob.github.com/three.js/assets/examples/09_walthead.png)](http://mrdoob.github.com/three.js/examples/lights_pointlights.html)
 [![geometry_birds](http://mrdoob.github.com/three.js/assets/examples/08_birds.png)](http://mrdoob.github.com/three.js/examples/geometry_birds.html)
 [![geometry_earth](http://mrdoob.github.com/three.js/assets/examples/07_earth.png)](http://mrdoob.github.com/three.js/examples/geometry_earth.html)
 [![geometry_terrain](http://mrdoob.github.com/three.js/assets/examples/06_terrain.png)](http://mrdoob.github.com/three.js/examples/geometry_terrain.html)
-[![geometry_vr](http://mrdoob.github.com/three.js/assets/examples/04_vr.png)](http://mrdoob.github.com/three.js/examples/geometry_vr.html)
+[![materials_video](http://mrdoob.github.com/three.js/assets/examples/24_materials_video.png)](http://mrdoob.github.com/three.js/examples/materials_video.html)
+[![geometry_panorama](http://mrdoob.github.com/three.js/assets/examples/04_vr.png)](http://mrdoob.github.com/three.js/examples/geometry_panorama.html)
 [![geometry_cube](http://mrdoob.github.com/three.js/assets/examples/03_cube.png)](http://mrdoob.github.com/three.js/examples/geometry_cube.html)
-
-Particles
-
 [![particles_sprites](http://mrdoob.github.com/three.js/assets/examples/26_particles_sprites.png)](http://mrdoob.github.com/three.js/examples/particles_sprites.html)
 [![particles_random](http://mrdoob.github.com/three.js/assets/examples/02_random.png)](http://mrdoob.github.com/three.js/examples/particles_random.html)
 [![particles_wave](http://mrdoob.github.com/three.js/assets/examples/01_waves.png)](http://mrdoob.github.com/three.js/examples/particles_waves.html)
 [![particles_floor](http://mrdoob.github.com/three.js/assets/examples/00_floor.png)](http://mrdoob.github.com/three.js/examples/particles_floor.html)
 
+#### WebGL ####
+
+[![materials_shader_fresnel](http://mrdoob.github.com/three.js/assets/examples/28_materials_shaders_fresnel.png)](http://mrdoob.github.com/three.js/examples/materials_shaders_fresnel.html)
+[![materials_cars](http://mrdoob.github.com/three.js/assets/examples/25_materials_cars.png)](http://mrdoob.github.com/three.js/examples/materials_cars.html)
+[![materials_cubemap_refraction](http://mrdoob.github.com/three.js/assets/examples/18_materials_cubemap_refraction.png)](http://mrdoob.github.com/three.js/examples/materials_cubemap_refraction.html)
+[![materials_cubemap_balls_reflection](http://mrdoob.github.com/three.js/assets/examples/15_materials_cubemap_balls_reflection.png)](http://mrdoob.github.com/three.js/examples/materials_cubemap_balls_reflection.html)
+[![materials_cubemap_balls_refraction](http://mrdoob.github.com/three.js/assets/examples/16_materials_cubemap_balls_refraction.png)](http://mrdoob.github.com/three.js/examples/materials_cubemap_balls_refraction.html)
+[![materials_cubemap_escher](http://mrdoob.github.com/three.js/assets/examples/17_materials_cubemap_escher.png)](http://mrdoob.github.com/three.js/examples/materials_cubemap_escher.html)
+[![materials_cubemap](http://mrdoob.github.com/three.js/assets/examples/14_materials_cubemap.png)](http://mrdoob.github.com/three.js/examples/materials_cubemap.html)
+[![materials_gl](http://mrdoob.github.com/three.js/assets/examples/20_materials_gl.png)](http://mrdoob.github.com/three.js/examples/materials_gl.html)
+[![materials_shaders](http://mrdoob.github.com/three.js/assets/examples/23_materials_shaders.png)](http://mrdoob.github.com/three.js/examples/materials_shaders.html)
+[![large_mesh](http://mrdoob.github.com/three.js/assets/examples/12_large_mesh.png)](http://mrdoob.github.com/three.js/examples/geometry_large_mesh.html)
+
+
 ### Featured projects ###
 
 [![Voxels](http://mrdoob.github.com/three.js/assets/projects/10_voxels.png)](http://mrdoob.com/projects/voxels/)
@@ -132,9 +131,9 @@ For creating a customised version of the library, including the source files in
 	<script type="text/javascript" src="../src/lights/DirectionalLight.js"></script>
 	<script type="text/javascript" src="../src/lights/PointLight.js"></script>
 	<script type="text/javascript" src="../src/objects/Object3D.js"></script>
-	<script type="text/javascript" src="../src/objects/Mesh.js"></script>
 	<script type="text/javascript" src="../src/objects/Particle.js"></script>
 	<script type="text/javascript" src="../src/objects/Line.js"></script>
+	<script type="text/javascript" src="../src/objects/Mesh.js"></script>
 	<script type="text/javascript" src="../src/materials/Material.js"></script>
 	<script type="text/javascript" src="../src/materials/LineBasicMaterial.js"></script>
 	<script type="text/javascript" src="../src/materials/MeshBasicMaterial.js"></script>
@@ -143,12 +142,22 @@ For creating a customised version of the library, including the source files in
 	<script type="text/javascript" src="../src/materials/MeshDepthMaterial.js"></script>
 	<script type="text/javascript" src="../src/materials/MeshNormalMaterial.js"></script>
 	<script type="text/javascript" src="../src/materials/MeshFaceMaterial.js"></script>
+	<script type="text/javascript" src="../src/materials/MeshCubeMaterial.js"></script>
 	<script type="text/javascript" src="../src/materials/MeshShaderMaterial.js"></script>
 	<script type="text/javascript" src="../src/materials/ParticleBasicMaterial.js"></script>
 	<script type="text/javascript" src="../src/materials/ParticleCircleMaterial.js"></script>
-	<script type="text/javascript" src="../src/materials/textures/Texture.js"></script>
+	<script type="text/javascript" src="../src/materials/ParticleDOMMaterial.js"></script>
+	<script type="text/javascript" src="../src/materials/Texture.js"></script>
+	<script type="text/javascript" src="../src/materials/mappings/CubeReflectionMapping.js"></script>
+	<script type="text/javascript" src="../src/materials/mappings/CubeRefractionMapping.js"></script>
+	<script type="text/javascript" src="../src/materials/mappings/LatitudeReflectionMapping.js"></script>
+	<script type="text/javascript" src="../src/materials/mappings/LatitudeRefractionMapping.js"></script>
+	<script type="text/javascript" src="../src/materials/mappings/SphericalReflectionMapping.js"></script>
+	<script type="text/javascript" src="../src/materials/mappings/SphericalRefractionMapping.js"></script>
+	<script type="text/javascript" src="../src/materials/mappings/UVMapping.js"></script>
 	<script type="text/javascript" src="../src/scenes/Scene.js"></script>
 	<script type="text/javascript" src="../src/renderers/Projector.js"></script>
+	<script type="text/javascript" src="../src/renderers/DOMRenderer.js"></script>
 	<script type="text/javascript" src="../src/renderers/CanvasRenderer.js"></script>
 	<script type="text/javascript" src="../src/renderers/SVGRenderer.js"></script>
 	<script type="text/javascript" src="../src/renderers/WebGLRenderer.js"></script>
@@ -159,6 +168,13 @@ For creating a customised version of the library, including the source files in
 
 ### Change Log ###
 
+2010 12 05 - **r31** (79.479 KB, gzip: 18.788 KB)
+
+* Minor Materials API change (mappings). ([alteredq](http://github.com/alteredq) & [mrdoob](http://github.com/mrdoob))
+* Added Filters to `WebGLRenderer`
+* `python build.py --includes` generates includes string
+
+
 2010 11 30 - **r30** (77.809 KB, gzip: 18.336 KB)
 
 * Reflection and Refraction materials support in `WebGLRenderer` ([alteredq](http://github.com/alteredq))

+ 107 - 104
build/Three.js

@@ -1,4 +1,4 @@
-// Three.js r30 - http://github.com/mrdoob/three.js
+// Three.js r31 - http://github.com/mrdoob/three.js
 var THREE=THREE||{};THREE.Color=function(a){this.autoUpdate=true;this.setHex(a)};
 THREE.Color.prototype={setRGB:function(a,b,d){this.r=a;this.g=b;this.b=d;if(this.autoUpdate){this.updateHex();this.updateStyleString()}},setHex:function(a){this.hex=~~a&16777215;if(this.autoUpdate){this.updateRGBA();this.updateStyleString()}},updateHex:function(){this.hex=~~(this.r*255)<<16^~~(this.g*255)<<8^~~(this.b*255)},updateRGBA:function(){this.r=(this.hex>>16&255)/255;this.g=(this.hex>>8&255)/255;this.b=(this.hex&255)/255},updateStyleString:function(){this.__styleString="rgb("+~~(this.r*255)+
 ","+~~(this.g*255)+","+~~(this.b*255)+")"},toString:function(){return"THREE.Color ( r: "+this.r+", g: "+this.g+", b: "+this.b+", hex: "+this.hex+" )"}};THREE.Vector2=function(a,b){this.x=a||0;this.y=b||0};
@@ -12,44 +12,44 @@ THREE.Vector4=function(a,b,d,g){this.x=a||0;this.y=b||0;this.z=d||0;this.w=g||1}
 THREE.Vector4.prototype={set:function(a,b,d,g){this.x=a;this.y=b;this.z=d;this.w=g;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=a.w||1;return this},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;this.w=a.w+b.w;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;this.z+=a.z;this.w+=a.w;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;this.w=a.w-b.w;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;this.z-=a.z;this.w-=a.w;
 return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;this.w*=a;return this},divideScalar:function(a){this.x/=a;this.y/=a;this.z/=a;this.w/=a;return this},lerpSelf:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;this.w+=(a.w-this.w)*b},clone:function(){return new THREE.Vector4(this.x,this.y,this.z,this.w)},toString:function(){return"THREE.Vector4 ("+this.x+", "+this.y+", "+this.z+", "+this.w+")"}};
 THREE.Ray=function(a,b){this.origin=a||new THREE.Vector3;this.direction=b||new THREE.Vector3};
-THREE.Ray.prototype={intersectScene:function(a){var b,d,g=a.objects,j=[];a=0;for(b=g.length;a<b;a++){d=g[a];if(d instanceof THREE.Mesh)j=j.concat(this.intersectObject(d))}j.sort(function(o,m){return o.distance-m.distance});return j},intersectObject:function(a){function b(M,r,S,z){z=z.clone().subSelf(r);S=S.clone().subSelf(r);var f=M.clone().subSelf(r);M=z.dot(z);r=z.dot(S);z=z.dot(f);var k=S.dot(S);S=S.dot(f);f=1/(M*k-r*r);k=(k*z-r*S)*f;M=(M*S-r*z)*f;return k>0&&M>0&&k+M<1}var d,g,j,o,m,p,l,c,E,G,
-w,F=a.geometry,O=F.vertices,J=[];d=0;for(g=F.faces.length;d<g;d++){j=F.faces[d];G=this.origin.clone();w=this.direction.clone();o=a.matrix.multiplyVector3(O[j.a].position.clone());m=a.matrix.multiplyVector3(O[j.b].position.clone());p=a.matrix.multiplyVector3(O[j.c].position.clone());l=j instanceof THREE.Face4?a.matrix.multiplyVector3(O[j.d].position.clone()):null;c=a.rotationMatrix.multiplyVector3(j.normal.clone());E=w.dot(c);if(E<0){c=c.dot((new THREE.Vector3).sub(o,G))/E;G=G.addSelf(w.multiplyScalar(c));
-if(j instanceof THREE.Face3){if(b(G,o,m,p)){j={distance:this.origin.distanceTo(G),point:G,face:j,object:a};J.push(j)}}else if(j instanceof THREE.Face4)if(b(G,o,m,l)||b(G,m,p,l)){j={distance:this.origin.distanceTo(G),point:G,face:j,object:a};J.push(j)}}}return J}};
-THREE.Rectangle=function(){function a(){o=g-b;m=j-d}var b,d,g,j,o,m,p=true;this.getX=function(){return b};this.getY=function(){return d};this.getWidth=function(){return o};this.getHeight=function(){return m};this.getLeft=function(){return b};this.getTop=function(){return d};this.getRight=function(){return g};this.getBottom=function(){return j};this.set=function(l,c,E,G){p=false;b=l;d=c;g=E;j=G;a()};this.addPoint=function(l,c){if(p){p=false;b=l;d=c;g=l;j=c}else{b=Math.min(b,l);d=Math.min(d,c);g=Math.max(g,
-l);j=Math.max(j,c)}a()};this.addRectangle=function(l){if(p){p=false;b=l.getLeft();d=l.getTop();g=l.getRight();j=l.getBottom()}else{b=Math.min(b,l.getLeft());d=Math.min(d,l.getTop());g=Math.max(g,l.getRight());j=Math.max(j,l.getBottom())}a()};this.inflate=function(l){b-=l;d-=l;g+=l;j+=l;a()};this.minSelf=function(l){b=Math.max(b,l.getLeft());d=Math.max(d,l.getTop());g=Math.min(g,l.getRight());j=Math.min(j,l.getBottom());a()};this.instersects=function(l){return Math.min(g,l.getRight())-Math.max(b,l.getLeft())>=
-0&&Math.min(j,l.getBottom())-Math.max(d,l.getTop())>=0};this.empty=function(){p=true;j=g=d=b=0;a()};this.isEmpty=function(){return p};this.toString=function(){return"THREE.Rectangle ( left: "+b+", right: "+g+", top: "+d+", bottom: "+j+", width: "+o+", height: "+m+" )"}};THREE.Matrix3=function(){this.m=[]};THREE.Matrix3.prototype={transpose:function(){var a;a=this.m[1];this.m[1]=this.m[3];this.m[3]=a;a=this.m[2];this.m[2]=this.m[6];this.m[6]=a;a=this.m[5];this.m[5]=this.m[7];this.m[7]=a;return this}};
+THREE.Ray.prototype={intersectScene:function(a){var b,d,g=a.objects,j=[];a=0;for(b=g.length;a<b;a++){d=g[a];if(d instanceof THREE.Mesh)j=j.concat(this.intersectObject(d))}j.sort(function(n,m){return n.distance-m.distance});return j},intersectObject:function(a){function b(K,N,O,v){v=v.clone().subSelf(N);O=O.clone().subSelf(N);var f=K.clone().subSelf(N);K=v.dot(v);N=v.dot(O);v=v.dot(f);var k=O.dot(O);O=O.dot(f);f=1/(K*k-N*N);k=(k*v-N*O)*f;K=(K*O-N*v)*f;return k>0&&K>0&&k+K<1}var d,g,j,n,m,l,o,c,F,D,
+w,x=a.geometry,H=x.vertices,G=[];d=0;for(g=x.faces.length;d<g;d++){j=x.faces[d];D=this.origin.clone();w=this.direction.clone();n=a.matrix.multiplyVector3(H[j.a].position.clone());m=a.matrix.multiplyVector3(H[j.b].position.clone());l=a.matrix.multiplyVector3(H[j.c].position.clone());o=j instanceof THREE.Face4?a.matrix.multiplyVector3(H[j.d].position.clone()):null;c=a.rotationMatrix.multiplyVector3(j.normal.clone());F=w.dot(c);if(F<0){c=c.dot((new THREE.Vector3).sub(n,D))/F;D=D.addSelf(w.multiplyScalar(c));
+if(j instanceof THREE.Face3){if(b(D,n,m,l)){j={distance:this.origin.distanceTo(D),point:D,face:j,object:a};G.push(j)}}else if(j instanceof THREE.Face4)if(b(D,n,m,o)||b(D,m,l,o)){j={distance:this.origin.distanceTo(D),point:D,face:j,object:a};G.push(j)}}}return G}};
+THREE.Rectangle=function(){function a(){n=g-b;m=j-d}var b,d,g,j,n,m,l=true;this.getX=function(){return b};this.getY=function(){return d};this.getWidth=function(){return n};this.getHeight=function(){return m};this.getLeft=function(){return b};this.getTop=function(){return d};this.getRight=function(){return g};this.getBottom=function(){return j};this.set=function(o,c,F,D){l=false;b=o;d=c;g=F;j=D;a()};this.addPoint=function(o,c){if(l){l=false;b=o;d=c;g=o;j=c}else{b=Math.min(b,o);d=Math.min(d,c);g=Math.max(g,
+o);j=Math.max(j,c)}a()};this.addRectangle=function(o){if(l){l=false;b=o.getLeft();d=o.getTop();g=o.getRight();j=o.getBottom()}else{b=Math.min(b,o.getLeft());d=Math.min(d,o.getTop());g=Math.max(g,o.getRight());j=Math.max(j,o.getBottom())}a()};this.inflate=function(o){b-=o;d-=o;g+=o;j+=o;a()};this.minSelf=function(o){b=Math.max(b,o.getLeft());d=Math.max(d,o.getTop());g=Math.min(g,o.getRight());j=Math.min(j,o.getBottom());a()};this.instersects=function(o){return Math.min(g,o.getRight())-Math.max(b,o.getLeft())>=
+0&&Math.min(j,o.getBottom())-Math.max(d,o.getTop())>=0};this.empty=function(){l=true;j=g=d=b=0;a()};this.isEmpty=function(){return l};this.toString=function(){return"THREE.Rectangle ( left: "+b+", right: "+g+", top: "+d+", bottom: "+j+", width: "+n+", height: "+m+" )"}};THREE.Matrix3=function(){this.m=[]};THREE.Matrix3.prototype={transpose:function(){var a;a=this.m[1];this.m[1]=this.m[3];this.m[3]=a;a=this.m[2];this.m[2]=this.m[6];this.m[6]=a;a=this.m[5];this.m[5]=this.m[7];this.m[7]=a;return this}};
 THREE.Matrix4=function(){};
 THREE.Matrix4.prototype={n11:1,n12:0,n13:0,n14:0,n21:0,n22:1,n23:0,n24:0,n31:0,n32:0,n33:1,n34:0,n41:0,n42:0,n43:0,n44:1,identity:function(){this.n11=1;this.n21=this.n14=this.n13=this.n12=0;this.n22=1;this.n32=this.n31=this.n24=this.n23=0;this.n33=1;this.n43=this.n42=this.n41=this.n34=0;this.n44=1},copy:function(a){this.n11=a.n11;this.n12=a.n12;this.n13=a.n13;this.n14=a.n14;this.n21=a.n21;this.n22=a.n22;this.n23=a.n23;this.n24=a.n24;this.n31=a.n31;this.n32=a.n32;this.n33=a.n33;this.n34=a.n34;this.n41=
-a.n41;this.n42=a.n42;this.n43=a.n43;this.n44=a.n44},lookAt:function(a,b,d){var g=new THREE.Vector3,j=new THREE.Vector3,o=new THREE.Vector3;o.sub(a,b).normalize();g.cross(d,o).normalize();j.cross(o,g).normalize();this.n11=g.x;this.n12=g.y;this.n13=g.z;this.n14=-g.dot(a);this.n21=j.x;this.n22=j.y;this.n23=j.z;this.n24=-j.dot(a);this.n31=o.x;this.n32=o.y;this.n33=o.z;this.n34=-o.dot(a);this.n43=this.n42=this.n41=0;this.n44=1},multiplyVector3:function(a){var b=a.x,d=a.y,g=a.z,j=1/(this.n41*b+this.n42*
+a.n41;this.n42=a.n42;this.n43=a.n43;this.n44=a.n44},lookAt:function(a,b,d){var g=new THREE.Vector3,j=new THREE.Vector3,n=new THREE.Vector3;n.sub(a,b).normalize();g.cross(d,n).normalize();j.cross(n,g).normalize();this.n11=g.x;this.n12=g.y;this.n13=g.z;this.n14=-g.dot(a);this.n21=j.x;this.n22=j.y;this.n23=j.z;this.n24=-j.dot(a);this.n31=n.x;this.n32=n.y;this.n33=n.z;this.n34=-n.dot(a);this.n43=this.n42=this.n41=0;this.n44=1},multiplyVector3:function(a){var b=a.x,d=a.y,g=a.z,j=1/(this.n41*b+this.n42*
 d+this.n43*g+this.n44);a.x=(this.n11*b+this.n12*d+this.n13*g+this.n14)*j;a.y=(this.n21*b+this.n22*d+this.n23*g+this.n24)*j;a.z=(this.n31*b+this.n32*d+this.n33*g+this.n34)*j;return a},multiplyVector4:function(a){var b=a.x,d=a.y,g=a.z,j=a.w;a.x=this.n11*b+this.n12*d+this.n13*g+this.n14*j;a.y=this.n21*b+this.n22*d+this.n23*g+this.n24*j;a.z=this.n31*b+this.n32*d+this.n33*g+this.n34*j;a.w=this.n41*b+this.n42*d+this.n43*g+this.n44*j;return a},crossVector:function(a){var b=new THREE.Vector4;b.x=this.n11*
-a.x+this.n12*a.y+this.n13*a.z+this.n14*a.w;b.y=this.n21*a.x+this.n22*a.y+this.n23*a.z+this.n24*a.w;b.z=this.n31*a.x+this.n32*a.y+this.n33*a.z+this.n34*a.w;b.w=a.w?this.n41*a.x+this.n42*a.y+this.n43*a.z+this.n44*a.w:1;return b},multiply:function(a,b){var d=a.n11,g=a.n12,j=a.n13,o=a.n14,m=a.n21,p=a.n22,l=a.n23,c=a.n24,E=a.n31,G=a.n32,w=a.n33,F=a.n34,O=a.n41,J=a.n42,M=a.n43,r=a.n44,S=b.n11,z=b.n12,f=b.n13,k=b.n14,e=b.n21,n=b.n22,i=b.n23,h=b.n24,q=b.n31,t=b.n32,K=b.n33,A=b.n34,H=b.n41,P=b.n42,u=b.n43,
-N=b.n44;this.n11=d*S+g*e+j*q+o*H;this.n12=d*z+g*n+j*t+o*P;this.n13=d*f+g*i+j*K+o*u;this.n14=d*k+g*h+j*A+o*N;this.n21=m*S+p*e+l*q+c*H;this.n22=m*z+p*n+l*t+c*P;this.n23=m*f+p*i+l*K+c*u;this.n24=m*k+p*h+l*A+c*N;this.n31=E*S+G*e+w*q+F*H;this.n32=E*z+G*n+w*t+F*P;this.n33=E*f+G*i+w*K+F*u;this.n34=E*k+G*h+w*A+F*N;this.n41=O*S+J*e+M*q+r*H;this.n42=O*z+J*n+M*t+r*P;this.n43=O*f+J*i+M*K+r*u;this.n44=O*k+J*h+M*A+r*N},multiplySelf:function(a){var b=this.n11,d=this.n12,g=this.n13,j=this.n14,o=this.n21,m=this.n22,
-p=this.n23,l=this.n24,c=this.n31,E=this.n32,G=this.n33,w=this.n34,F=this.n41,O=this.n42,J=this.n43,M=this.n44;this.n11=b*a.n11+d*a.n21+g*a.n31+j*a.n41;this.n12=b*a.n12+d*a.n22+g*a.n32+j*a.n42;this.n13=b*a.n13+d*a.n23+g*a.n33+j*a.n43;this.n14=b*a.n14+d*a.n24+g*a.n34+j*a.n44;this.n21=o*a.n11+m*a.n21+p*a.n31+l*a.n41;this.n22=o*a.n12+m*a.n22+p*a.n32+l*a.n42;this.n23=o*a.n13+m*a.n23+p*a.n33+l*a.n43;this.n24=o*a.n14+m*a.n24+p*a.n34+l*a.n44;this.n31=c*a.n11+E*a.n21+G*a.n31+w*a.n41;this.n32=c*a.n12+E*a.n22+
-G*a.n32+w*a.n42;this.n33=c*a.n13+E*a.n23+G*a.n33+w*a.n43;this.n34=c*a.n14+E*a.n24+G*a.n34+w*a.n44;this.n41=F*a.n11+O*a.n21+J*a.n31+M*a.n41;this.n42=F*a.n12+O*a.n22+J*a.n32+M*a.n42;this.n43=F*a.n13+O*a.n23+J*a.n33+M*a.n43;this.n44=F*a.n14+O*a.n24+J*a.n34+M*a.n44},multiplyScalar:function(a){this.n11*=a;this.n12*=a;this.n13*=a;this.n14*=a;this.n21*=a;this.n22*=a;this.n23*=a;this.n24*=a;this.n31*=a;this.n32*=a;this.n33*=a;this.n34*=a;this.n41*=a;this.n42*=a;this.n43*=a;this.n44*=a},determinant:function(){return this.n14*
+a.x+this.n12*a.y+this.n13*a.z+this.n14*a.w;b.y=this.n21*a.x+this.n22*a.y+this.n23*a.z+this.n24*a.w;b.z=this.n31*a.x+this.n32*a.y+this.n33*a.z+this.n34*a.w;b.w=a.w?this.n41*a.x+this.n42*a.y+this.n43*a.z+this.n44*a.w:1;return b},multiply:function(a,b){var d=a.n11,g=a.n12,j=a.n13,n=a.n14,m=a.n21,l=a.n22,o=a.n23,c=a.n24,F=a.n31,D=a.n32,w=a.n33,x=a.n34,H=a.n41,G=a.n42,K=a.n43,N=a.n44,O=b.n11,v=b.n12,f=b.n13,k=b.n14,e=b.n21,p=b.n22,h=b.n23,i=b.n24,s=b.n31,r=b.n32,L=b.n33,A=b.n34,M=b.n41,Q=b.n42,u=b.n43,
+R=b.n44;this.n11=d*O+g*e+j*s+n*M;this.n12=d*v+g*p+j*r+n*Q;this.n13=d*f+g*h+j*L+n*u;this.n14=d*k+g*i+j*A+n*R;this.n21=m*O+l*e+o*s+c*M;this.n22=m*v+l*p+o*r+c*Q;this.n23=m*f+l*h+o*L+c*u;this.n24=m*k+l*i+o*A+c*R;this.n31=F*O+D*e+w*s+x*M;this.n32=F*v+D*p+w*r+x*Q;this.n33=F*f+D*h+w*L+x*u;this.n34=F*k+D*i+w*A+x*R;this.n41=H*O+G*e+K*s+N*M;this.n42=H*v+G*p+K*r+N*Q;this.n43=H*f+G*h+K*L+N*u;this.n44=H*k+G*i+K*A+N*R},multiplySelf:function(a){var b=this.n11,d=this.n12,g=this.n13,j=this.n14,n=this.n21,m=this.n22,
+l=this.n23,o=this.n24,c=this.n31,F=this.n32,D=this.n33,w=this.n34,x=this.n41,H=this.n42,G=this.n43,K=this.n44;this.n11=b*a.n11+d*a.n21+g*a.n31+j*a.n41;this.n12=b*a.n12+d*a.n22+g*a.n32+j*a.n42;this.n13=b*a.n13+d*a.n23+g*a.n33+j*a.n43;this.n14=b*a.n14+d*a.n24+g*a.n34+j*a.n44;this.n21=n*a.n11+m*a.n21+l*a.n31+o*a.n41;this.n22=n*a.n12+m*a.n22+l*a.n32+o*a.n42;this.n23=n*a.n13+m*a.n23+l*a.n33+o*a.n43;this.n24=n*a.n14+m*a.n24+l*a.n34+o*a.n44;this.n31=c*a.n11+F*a.n21+D*a.n31+w*a.n41;this.n32=c*a.n12+F*a.n22+
+D*a.n32+w*a.n42;this.n33=c*a.n13+F*a.n23+D*a.n33+w*a.n43;this.n34=c*a.n14+F*a.n24+D*a.n34+w*a.n44;this.n41=x*a.n11+H*a.n21+G*a.n31+K*a.n41;this.n42=x*a.n12+H*a.n22+G*a.n32+K*a.n42;this.n43=x*a.n13+H*a.n23+G*a.n33+K*a.n43;this.n44=x*a.n14+H*a.n24+G*a.n34+K*a.n44},multiplyScalar:function(a){this.n11*=a;this.n12*=a;this.n13*=a;this.n14*=a;this.n21*=a;this.n22*=a;this.n23*=a;this.n24*=a;this.n31*=a;this.n32*=a;this.n33*=a;this.n34*=a;this.n41*=a;this.n42*=a;this.n43*=a;this.n44*=a},determinant:function(){return this.n14*
 this.n23*this.n32*this.n41-this.n13*this.n24*this.n32*this.n41-this.n14*this.n22*this.n33*this.n41+this.n12*this.n24*this.n33*this.n41+this.n13*this.n22*this.n34*this.n41-this.n12*this.n23*this.n34*this.n41-this.n14*this.n23*this.n31*this.n42+this.n13*this.n24*this.n31*this.n42+this.n14*this.n21*this.n33*this.n42-this.n11*this.n24*this.n33*this.n42-this.n13*this.n21*this.n34*this.n42+this.n11*this.n23*this.n34*this.n42+this.n14*this.n22*this.n31*this.n43-this.n12*this.n24*this.n31*this.n43-this.n14*
 this.n21*this.n32*this.n43+this.n11*this.n24*this.n32*this.n43+this.n12*this.n21*this.n34*this.n43-this.n11*this.n22*this.n34*this.n43-this.n13*this.n22*this.n31*this.n44+this.n12*this.n23*this.n31*this.n44+this.n13*this.n21*this.n32*this.n44-this.n11*this.n23*this.n32*this.n44-this.n12*this.n21*this.n33*this.n44+this.n11*this.n22*this.n33*this.n44},transpose:function(){function a(b,d,g){var j=b[d];b[d]=b[g];b[g]=j}a(this,"n21","n12");a(this,"n31","n13");a(this,"n32","n23");a(this,"n41","n14");a(this,
 "n42","n24");a(this,"n43","n34");return this},clone:function(){var a=new THREE.Matrix4;a.n11=this.n11;a.n12=this.n12;a.n13=this.n13;a.n14=this.n14;a.n21=this.n21;a.n22=this.n22;a.n23=this.n23;a.n24=this.n24;a.n31=this.n31;a.n32=this.n32;a.n33=this.n33;a.n34=this.n34;a.n41=this.n41;a.n42=this.n42;a.n43=this.n43;a.n44=this.n44;return a},flatten:function(){return[this.n11,this.n21,this.n31,this.n41,this.n12,this.n22,this.n32,this.n42,this.n13,this.n23,this.n33,this.n43,this.n14,this.n24,this.n34,this.n44]},
 toString:function(){return"| "+this.n11+" "+this.n12+" "+this.n13+" "+this.n14+" |\n| "+this.n21+" "+this.n22+" "+this.n23+" "+this.n24+" |\n| "+this.n31+" "+this.n32+" "+this.n33+" "+this.n34+" |\n| "+this.n41+" "+this.n42+" "+this.n43+" "+this.n44+" |"}};THREE.Matrix4.translationMatrix=function(a,b,d){var g=new THREE.Matrix4;g.n14=a;g.n24=b;g.n34=d;return g};THREE.Matrix4.scaleMatrix=function(a,b,d){var g=new THREE.Matrix4;g.n11=a;g.n22=b;g.n33=d;return g};
 THREE.Matrix4.rotationXMatrix=function(a){var b=new THREE.Matrix4;b.n22=b.n33=Math.cos(a);b.n32=Math.sin(a);b.n23=-b.n32;return b};THREE.Matrix4.rotationYMatrix=function(a){var b=new THREE.Matrix4;b.n11=b.n33=Math.cos(a);b.n13=Math.sin(a);b.n31=-b.n13;return b};THREE.Matrix4.rotationZMatrix=function(a){var b=new THREE.Matrix4;b.n11=b.n22=Math.cos(a);b.n21=Math.sin(a);b.n12=-b.n21;return b};
-THREE.Matrix4.rotationAxisAngleMatrix=function(a,b){var d=new THREE.Matrix4,g=Math.cos(b),j=Math.sin(b),o=1-g,m=a.x,p=a.y,l=a.z;d.n11=o*m*m+g;d.n12=o*m*p-j*l;d.n13=o*m*l+j*p;d.n21=o*m*p+j*l;d.n22=o*p*p+g;d.n23=o*p*l-j*m;d.n31=o*m*l-j*p;d.n32=o*p*l+j*m;d.n33=o*l*l+g;return d};
+THREE.Matrix4.rotationAxisAngleMatrix=function(a,b){var d=new THREE.Matrix4,g=Math.cos(b),j=Math.sin(b),n=1-g,m=a.x,l=a.y,o=a.z;d.n11=n*m*m+g;d.n12=n*m*l-j*o;d.n13=n*m*o+j*l;d.n21=n*m*l+j*o;d.n22=n*l*l+g;d.n23=n*l*o-j*m;d.n31=n*m*o-j*l;d.n32=n*l*o+j*m;d.n33=n*o*o+g;return d};
 THREE.Matrix4.makeInvert=function(a){var b=new THREE.Matrix4;b.n11=a.n23*a.n34*a.n42-a.n24*a.n33*a.n42+a.n24*a.n32*a.n43-a.n22*a.n34*a.n43-a.n23*a.n32*a.n44+a.n22*a.n33*a.n44;b.n12=a.n14*a.n33*a.n42-a.n13*a.n34*a.n42-a.n14*a.n32*a.n43+a.n12*a.n34*a.n43+a.n13*a.n32*a.n44-a.n12*a.n33*a.n44;b.n13=a.n13*a.n24*a.n42-a.n14*a.n23*a.n42+a.n14*a.n22*a.n43-a.n12*a.n24*a.n43-a.n13*a.n22*a.n44+a.n12*a.n23*a.n44;b.n14=a.n14*a.n23*a.n32-a.n13*a.n24*a.n32-a.n14*a.n22*a.n33+a.n12*a.n24*a.n33+a.n13*a.n22*a.n34-a.n12*
 a.n23*a.n34;b.n21=a.n24*a.n33*a.n41-a.n23*a.n34*a.n41-a.n24*a.n31*a.n43+a.n21*a.n34*a.n43+a.n23*a.n31*a.n44-a.n21*a.n33*a.n44;b.n22=a.n13*a.n34*a.n41-a.n14*a.n33*a.n41+a.n14*a.n31*a.n43-a.n11*a.n34*a.n43-a.n13*a.n31*a.n44+a.n11*a.n33*a.n44;b.n23=a.n14*a.n23*a.n41-a.n13*a.n24*a.n41-a.n14*a.n21*a.n43+a.n11*a.n24*a.n43+a.n13*a.n21*a.n44-a.n11*a.n23*a.n44;b.n24=a.n13*a.n24*a.n31-a.n14*a.n23*a.n31+a.n14*a.n21*a.n33-a.n11*a.n24*a.n33-a.n13*a.n21*a.n34+a.n11*a.n23*a.n34;b.n31=a.n22*a.n34*a.n41-a.n24*a.n32*
 a.n41+a.n24*a.n31*a.n42-a.n21*a.n34*a.n42-a.n22*a.n31*a.n44+a.n21*a.n32*a.n44;b.n32=a.n14*a.n32*a.n41-a.n12*a.n34*a.n41-a.n14*a.n31*a.n42+a.n11*a.n34*a.n42+a.n12*a.n31*a.n44-a.n11*a.n32*a.n44;b.n33=a.n13*a.n24*a.n41-a.n14*a.n22*a.n41+a.n14*a.n21*a.n42-a.n11*a.n24*a.n42-a.n12*a.n21*a.n44+a.n11*a.n22*a.n44;b.n34=a.n14*a.n22*a.n31-a.n12*a.n24*a.n31-a.n14*a.n21*a.n32+a.n11*a.n24*a.n32+a.n12*a.n21*a.n34-a.n11*a.n22*a.n34;b.n41=a.n23*a.n32*a.n41-a.n22*a.n33*a.n41-a.n23*a.n31*a.n42+a.n21*a.n33*a.n42+a.n22*
 a.n31*a.n43-a.n21*a.n32*a.n43;b.n42=a.n12*a.n33*a.n41-a.n13*a.n32*a.n41+a.n13*a.n31*a.n42-a.n11*a.n33*a.n42-a.n12*a.n31*a.n43+a.n11*a.n32*a.n43;b.n43=a.n13*a.n22*a.n41-a.n12*a.n23*a.n41-a.n13*a.n21*a.n42+a.n11*a.n23*a.n42+a.n12*a.n21*a.n43-a.n11*a.n22*a.n43;b.n44=a.n12*a.n23*a.n31-a.n13*a.n22*a.n31+a.n13*a.n21*a.n32-a.n11*a.n23*a.n32-a.n12*a.n21*a.n33+a.n11*a.n22*a.n33;b.multiplyScalar(1/a.determinant());return b};
-THREE.Matrix4.makeInvert3x3=function(a){var b=a.flatten();a=new THREE.Matrix3;var d=b[10]*b[5]-b[6]*b[9],g=-b[10]*b[1]+b[2]*b[9],j=b[6]*b[1]-b[2]*b[5],o=-b[10]*b[4]+b[6]*b[8],m=b[10]*b[0]-b[2]*b[8],p=-b[6]*b[0]+b[2]*b[4],l=b[9]*b[4]-b[5]*b[8],c=-b[9]*b[0]+b[1]*b[8],E=b[5]*b[0]-b[1]*b[4];b=b[0]*d+b[1]*o+b[2]*l;if(b==0)throw"matrix not invertible";b=1/b;a.m[0]=b*d;a.m[1]=b*g;a.m[2]=b*j;a.m[3]=b*o;a.m[4]=b*m;a.m[5]=b*p;a.m[6]=b*l;a.m[7]=b*c;a.m[8]=b*E;return a};
-THREE.Matrix4.makeFrustum=function(a,b,d,g,j,o){var m,p,l;m=new THREE.Matrix4;p=2*j/(b-a);l=2*j/(g-d);a=(b+a)/(b-a);d=(g+d)/(g-d);g=-(o+j)/(o-j);j=-2*o*j/(o-j);m.n11=p;m.n12=0;m.n13=a;m.n14=0;m.n21=0;m.n22=l;m.n23=d;m.n24=0;m.n31=0;m.n32=0;m.n33=g;m.n34=j;m.n41=0;m.n42=0;m.n43=-1;m.n44=0;return m};THREE.Matrix4.makePerspective=function(a,b,d,g){var j;a=d*Math.tan(a*Math.PI/360);j=-a;return THREE.Matrix4.makeFrustum(j*b,a*b,j,a,d,g)};
-THREE.Matrix4.makeOrtho=function(a,b,d,g,j,o){var m,p,l,c;m=new THREE.Matrix4;p=b-a;l=d-g;c=o-j;a=(b+a)/p;d=(d+g)/l;j=(o+j)/c;m.n11=2/p;m.n12=0;m.n13=0;m.n14=-a;m.n21=0;m.n22=2/l;m.n23=0;m.n24=-d;m.n31=0;m.n32=0;m.n33=-2/c;m.n34=-j;m.n41=0;m.n42=0;m.n43=0;m.n44=1;return m};
+THREE.Matrix4.makeInvert3x3=function(a){var b=a.flatten();a=new THREE.Matrix3;var d=b[10]*b[5]-b[6]*b[9],g=-b[10]*b[1]+b[2]*b[9],j=b[6]*b[1]-b[2]*b[5],n=-b[10]*b[4]+b[6]*b[8],m=b[10]*b[0]-b[2]*b[8],l=-b[6]*b[0]+b[2]*b[4],o=b[9]*b[4]-b[5]*b[8],c=-b[9]*b[0]+b[1]*b[8],F=b[5]*b[0]-b[1]*b[4];b=b[0]*d+b[1]*n+b[2]*o;if(b==0)throw"matrix not invertible";b=1/b;a.m[0]=b*d;a.m[1]=b*g;a.m[2]=b*j;a.m[3]=b*n;a.m[4]=b*m;a.m[5]=b*l;a.m[6]=b*o;a.m[7]=b*c;a.m[8]=b*F;return a};
+THREE.Matrix4.makeFrustum=function(a,b,d,g,j,n){var m,l,o;m=new THREE.Matrix4;l=2*j/(b-a);o=2*j/(g-d);a=(b+a)/(b-a);d=(g+d)/(g-d);g=-(n+j)/(n-j);j=-2*n*j/(n-j);m.n11=l;m.n12=0;m.n13=a;m.n14=0;m.n21=0;m.n22=o;m.n23=d;m.n24=0;m.n31=0;m.n32=0;m.n33=g;m.n34=j;m.n41=0;m.n42=0;m.n43=-1;m.n44=0;return m};THREE.Matrix4.makePerspective=function(a,b,d,g){var j;a=d*Math.tan(a*Math.PI/360);j=-a;return THREE.Matrix4.makeFrustum(j*b,a*b,j,a,d,g)};
+THREE.Matrix4.makeOrtho=function(a,b,d,g,j,n){var m,l,o,c;m=new THREE.Matrix4;l=b-a;o=d-g;c=n-j;a=(b+a)/l;d=(d+g)/o;j=(n+j)/c;m.n11=2/l;m.n12=0;m.n13=0;m.n14=-a;m.n21=0;m.n22=2/o;m.n23=0;m.n24=-d;m.n31=0;m.n32=0;m.n33=-2/c;m.n34=-j;m.n41=0;m.n42=0;m.n43=0;m.n44=1;return m};
 THREE.Vertex=function(a,b){this.position=a||new THREE.Vector3;this.positionWorld=new THREE.Vector3;this.positionScreen=new THREE.Vector4;this.normal=b||new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.normalScreen=new THREE.Vector3;this.__visible=true};THREE.Vertex.prototype={toString:function(){return"THREE.Vertex ( position: "+this.position+", normal: "+this.normal+" )"}};
 THREE.Face3=function(a,b,d,g,j){this.a=a;this.b=b;this.c=d;this.centroid=new THREE.Vector3;this.normal=g instanceof THREE.Vector3?g:new THREE.Vector3;this.vertexNormals=g instanceof Array?g:[];this.material=j instanceof Array?j:[j]};THREE.Face3.prototype={toString:function(){return"THREE.Face3 ( "+this.a+", "+this.b+", "+this.c+" )"}};
-THREE.Face4=function(a,b,d,g,j,o){this.a=a;this.b=b;this.c=d;this.d=g;this.centroid=new THREE.Vector3;this.normal=j instanceof THREE.Vector3?j:new THREE.Vector3;this.vertexNormals=j instanceof Array?j:[];this.material=o instanceof Array?o:[o]};THREE.Face4.prototype={toString:function(){return"THREE.Face4 ( "+this.a+", "+this.b+", "+this.c+" "+this.d+" )"}};THREE.UV=function(a,b){this.u=a||0;this.v=b||0};
+THREE.Face4=function(a,b,d,g,j,n){this.a=a;this.b=b;this.c=d;this.d=g;this.centroid=new THREE.Vector3;this.normal=j instanceof THREE.Vector3?j:new THREE.Vector3;this.vertexNormals=j instanceof Array?j:[];this.material=n instanceof Array?n:[n]};THREE.Face4.prototype={toString:function(){return"THREE.Face4 ( "+this.a+", "+this.b+", "+this.c+" "+this.d+" )"}};THREE.UV=function(a,b){this.u=a||0;this.v=b||0};
 THREE.UV.prototype={copy:function(a){this.u=a.u;this.v=a.v},toString:function(){return"THREE.UV ("+this.u+", "+this.v+")"}};THREE.Geometry=function(){this.vertices=[];this.faces=[];this.uvs=[];this.geometryChunks={}};
 THREE.Geometry.prototype={computeCentroids:function(){var a,b,d;a=0;for(b=this.faces.length;a<b;a++){d=this.faces[a];d.centroid.set(0,0,0);if(d instanceof THREE.Face3){d.centroid.addSelf(this.vertices[d.a].position);d.centroid.addSelf(this.vertices[d.b].position);d.centroid.addSelf(this.vertices[d.c].position);d.centroid.divideScalar(3)}else if(d instanceof THREE.Face4){d.centroid.addSelf(this.vertices[d.a].position);d.centroid.addSelf(this.vertices[d.b].position);d.centroid.addSelf(this.vertices[d.c].position);
-d.centroid.addSelf(this.vertices[d.d].position);d.centroid.divideScalar(4)}}},computeNormals:function(a){var b,d,g,j,o,m,p=new THREE.Vector3,l=new THREE.Vector3;g=0;for(j=this.vertices.length;g<j;g++){o=this.vertices[g];o.normal.set(0,0,0)}g=0;for(j=this.faces.length;g<j;g++){o=this.faces[g];if(a&&o.vertexNormals.length){p.set(0,0,0);b=0;for(d=o.normal.length;b<d;b++)p.addSelf(o.vertexNormals[b]);p.divideScalar(3)}else{b=this.vertices[o.a];d=this.vertices[o.b];m=this.vertices[o.c];p.sub(m.position,
-d.position);l.sub(b.position,d.position);p.crossSelf(l)}p.isZero()||p.normalize();o.normal.copy(p)}},computeVertexNormals:function(){var a,b=[],d,g;a=0;for(vl=this.vertices.length;a<vl;a++)b[a]=new THREE.Vector3;a=0;for(d=this.faces.length;a<d;a++){g=this.faces[a];if(g instanceof THREE.Face3){b[g.a].addSelf(g.normal);b[g.b].addSelf(g.normal);b[g.c].addSelf(g.normal)}else if(g instanceof THREE.Face4){b[g.a].addSelf(g.normal);b[g.b].addSelf(g.normal);b[g.c].addSelf(g.normal);b[g.d].addSelf(g.normal)}}a=
+d.centroid.addSelf(this.vertices[d.d].position);d.centroid.divideScalar(4)}}},computeNormals:function(a){var b,d,g,j,n,m,l=new THREE.Vector3,o=new THREE.Vector3;g=0;for(j=this.vertices.length;g<j;g++){n=this.vertices[g];n.normal.set(0,0,0)}g=0;for(j=this.faces.length;g<j;g++){n=this.faces[g];if(a&&n.vertexNormals.length){l.set(0,0,0);b=0;for(d=n.normal.length;b<d;b++)l.addSelf(n.vertexNormals[b]);l.divideScalar(3)}else{b=this.vertices[n.a];d=this.vertices[n.b];m=this.vertices[n.c];l.sub(m.position,
+d.position);o.sub(b.position,d.position);l.crossSelf(o)}l.isZero()||l.normalize();n.normal.copy(l)}},computeVertexNormals:function(){var a,b=[],d,g;a=0;for(vl=this.vertices.length;a<vl;a++)b[a]=new THREE.Vector3;a=0;for(d=this.faces.length;a<d;a++){g=this.faces[a];if(g instanceof THREE.Face3){b[g.a].addSelf(g.normal);b[g.b].addSelf(g.normal);b[g.c].addSelf(g.normal)}else if(g instanceof THREE.Face4){b[g.a].addSelf(g.normal);b[g.b].addSelf(g.normal);b[g.c].addSelf(g.normal);b[g.d].addSelf(g.normal)}}a=
 0;for(vl=this.vertices.length;a<vl;a++)b[a].normalize();a=0;for(d=this.faces.length;a<d;a++){g=this.faces[a];if(g instanceof THREE.Face3){g.vertexNormals[0]=b[g.a].clone();g.vertexNormals[1]=b[g.b].clone();g.vertexNormals[2]=b[g.c].clone()}else if(g instanceof THREE.Face4){g.vertexNormals[0]=b[g.a].clone();g.vertexNormals[1]=b[g.b].clone();g.vertexNormals[2]=b[g.c].clone();g.vertexNormals[3]=b[g.d].clone()}}},computeBoundingBox:function(){if(this.vertices.length>0){this.bbox={x:[this.vertices[0].position.x,
 this.vertices[0].position.x],y:[this.vertices[0].position.y,this.vertices[0].position.y],z:[this.vertices[0].position.z,this.vertices[0].position.z]};for(var a=1,b=this.vertices.length;a<b;a++){vertex=this.vertices[a];if(vertex.position.x<this.bbox.x[0])this.bbox.x[0]=vertex.position.x;else if(vertex.position.x>this.bbox.x[1])this.bbox.x[1]=vertex.position.x;if(vertex.position.y<this.bbox.y[0])this.bbox.y[0]=vertex.position.y;else if(vertex.position.y>this.bbox.y[1])this.bbox.y[1]=vertex.position.y;
-if(vertex.position.z<this.bbox.z[0])this.bbox.z[0]=vertex.position.z;else if(vertex.position.z>this.bbox.z[1])this.bbox.z[1]=vertex.position.z}}},sortFacesByMaterial:function(){function a(E){var G=[];b=0;for(d=E.length;b<d;b++)E[b]==undefined?G.push("undefined"):G.push(E[b].toString());return G.join("_")}var b,d,g,j,o,m,p,l,c={};g=0;for(j=this.faces.length;g<j;g++){o=this.faces[g];m=o.material;p=a(m);if(c[p]==undefined)c[p]={hash:p,counter:0};l=c[p].hash+"_"+c[p].counter;if(this.geometryChunks[l]==
-undefined)this.geometryChunks[l]={faces:[],material:m,vertices:0};o=o instanceof THREE.Face3?3:4;if(this.geometryChunks[l].vertices+o>65535){c[p].counter+=1;l=c[p].hash+"_"+c[p].counter;if(this.geometryChunks[l]==undefined)this.geometryChunks[l]={faces:[],material:m,vertices:0}}this.geometryChunks[l].faces.push(g);this.geometryChunks[l].vertices+=o}},toString:function(){return"THREE.Geometry ( vertices: "+this.vertices+", faces: "+this.faces+", uvs: "+this.uvs+" )"}};
+if(vertex.position.z<this.bbox.z[0])this.bbox.z[0]=vertex.position.z;else if(vertex.position.z>this.bbox.z[1])this.bbox.z[1]=vertex.position.z}}},sortFacesByMaterial:function(){function a(F){var D=[];b=0;for(d=F.length;b<d;b++)F[b]==undefined?D.push("undefined"):D.push(F[b].toString());return D.join("_")}var b,d,g,j,n,m,l,o,c={};g=0;for(j=this.faces.length;g<j;g++){n=this.faces[g];m=n.material;l=a(m);if(c[l]==undefined)c[l]={hash:l,counter:0};o=c[l].hash+"_"+c[l].counter;if(this.geometryChunks[o]==
+undefined)this.geometryChunks[o]={faces:[],material:m,vertices:0};n=n instanceof THREE.Face3?3:4;if(this.geometryChunks[o].vertices+n>65535){c[l].counter+=1;o=c[l].hash+"_"+c[l].counter;if(this.geometryChunks[o]==undefined)this.geometryChunks[o]={faces:[],material:m,vertices:0}}this.geometryChunks[o].faces.push(g);this.geometryChunks[o].vertices+=n}},toString:function(){return"THREE.Geometry ( vertices: "+this.vertices+", faces: "+this.faces+", uvs: "+this.uvs+" )"}};
 THREE.Camera=function(a,b,d,g){this.position=new THREE.Vector3(0,0,0);this.target={position:new THREE.Vector3(0,0,0)};this.up=new THREE.Vector3(0,1,0);this.matrix=new THREE.Matrix4;this.projectionMatrix=THREE.Matrix4.makePerspective(a,b,d,g);this.autoUpdateMatrix=true;this.updateMatrix=function(){this.matrix.lookAt(this.position,this.target.position,this.up)};this.toString=function(){return"THREE.Camera ( "+this.position+", "+this.target.position+" )"}};THREE.Light=function(a){this.color=new THREE.Color(a)};
 THREE.AmbientLight=function(a){THREE.Light.call(this,a)};THREE.AmbientLight.prototype=new THREE.Light;THREE.AmbientLight.prototype.constructor=THREE.AmbientLight;THREE.DirectionalLight=function(a,b){THREE.Light.call(this,a);this.position=new THREE.Vector3(0,1,0);this.intensity=b||1};THREE.DirectionalLight.prototype=new THREE.Light;THREE.DirectionalLight.prototype.constructor=THREE.DirectionalLight;
 THREE.PointLight=function(a,b){THREE.Light.call(this,a);this.position=new THREE.Vector3;this.intensity=b||1};THREE.DirectionalLight.prototype=new THREE.Light;THREE.DirectionalLight.prototype.constructor=THREE.PointLight;
@@ -60,15 +60,15 @@ THREE.Mesh=function(a,b,d){THREE.Object3D.call(this);this.geometry=a;this.materi
 THREE.Mesh.prototype.normalizeUVs=function(){var a,b,d,g,j;a=0;for(b=this.geometry.uvs.length;a<b;a++){j=this.geometry.uvs[a];d=0;for(g=j.length;d<g;d++){if(j[d].u!=1)j[d].u-=Math.floor(j[d].u);if(j[d].v!=1)j[d].v-=Math.floor(j[d].v)}}};THREE.FlatShading=0;THREE.SmoothShading=1;THREE.NormalBlending=0;THREE.AdditiveBlending=1;THREE.SubtractiveBlending=2;
 THREE.LineBasicMaterial=function(a){this.color=new THREE.Color(16711680);this.opacity=1;this.blending=THREE.NormalBlending;this.linewidth=1;this.linejoin=this.linecap="round";if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.opacity!==undefined)this.opacity=a.opacity;if(a.blending!==undefined)this.blending=a.blending;if(a.linewidth!==undefined)this.linewidth=a.linewidth;if(a.linecap!==undefined)this.linecap=a.linecap;if(a.linejoin!==undefined)this.linejoin=a.linejoin}this.toString=function(){return"THREE.LineBasicMaterial (<br/>color: "+
 this.color+"<br/>opacity: "+this.opacity+"<br/>blending: "+this.blending+"<br/>linewidth: "+this.linewidth+"<br/>linecap: "+this.linecap+"<br/>linejoin: "+this.linejoin+"<br/>)"}};
-THREE.MeshBasicMaterial=function(a){this.id=THREE.MeshBasicMaterialCounter.value++;this.color=new THREE.Color(15658734);this.env_map=this.map=null;this.combine=THREE.Multiply;this.reflectivity=1;this.refraction_ratio=0.98;this.opacity=1;this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap="round";if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.map!==undefined)this.map=a.map;if(a.env_map!==
-undefined)this.env_map=a.env_map;if(a.combine!==undefined)this.combine=a.combine;if(a.reflectivity!==undefined)this.reflectivity=a.reflectivity;if(a.refraction_ratio!==undefined)this.refraction_ratio=a.refraction_ratio;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending;if(a.wireframe!==undefined)this.wireframe=a.wireframe;if(a.wireframe_linewidth!==undefined)this.wireframe_linewidth=a.wireframe_linewidth;
-if(a.wireframe_linecap!==undefined)this.wireframe_linecap=a.wireframe_linecap;if(a.wireframe_linejoin!==undefined)this.wireframe_linejoin=a.wireframe_linejoin}this.toString=function(){return"THREE.MeshBasicMaterial (<br/>id: "+this.id+"<br/>color: "+this.color+"<br/>map: "+this.map+"<br/>env_map: "+this.env_map+"<br/>combine: "+this.combine+"<br/>reflectivity: "+this.reflectivity+"<br/>refraction_ratio: "+this.refraction_ratio+"<br/>opacity: "+this.opacity+"<br/>blending: "+this.blending+"<br/>wireframe: "+
-this.wireframe+"<br/>wireframe_linewidth: "+this.wireframe_linewidth+"<br/>wireframe_linecap: "+this.wireframe_linecap+"<br/>wireframe_linejoin: "+this.wireframe_linejoin+"<br/>)"}};THREE.MeshBasicMaterialCounter={value:0};
-THREE.MeshLambertMaterial=function(a){this.id=THREE.MeshLambertMaterialCounter.value++;this.color=new THREE.Color(15658734);this.env_map=this.map=null;this.combine=THREE.Multiply;this.reflectivity=1;this.refraction_ratio=0.98;this.opacity=1;this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap="round";if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.map!==undefined)this.map=a.map;
-if(a.env_map!==undefined)this.env_map=a.env_map;if(a.combine!==undefined)this.combine=a.combine;if(a.reflectivity!==undefined)this.reflectivity=a.reflectivity;if(a.refraction_ratio!==undefined)this.refraction_ratio=a.refraction_ratio;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending;if(a.wireframe!==undefined)this.wireframe=a.wireframe;if(a.wireframe_linewidth!==undefined)this.wireframe_linewidth=a.wireframe_linewidth;
-if(a.wireframe_linecap!==undefined)this.wireframe_linecap=a.wireframe_linecap;if(a.wireframe_linejoin!==undefined)this.wireframe_linejoin=a.wireframe_linejoin}this.toString=function(){return"THREE.MeshLambertMaterial (<br/>id: "+this.id+"<br/>color: "+this.color+"<br/>map: "+this.map+"<br/>env_map: "+this.env_map+"<br/>combine: "+this.combine+"<br/>reflectivity: "+this.reflectivity+"<br/>refraction_ratio: "+this.refraction_ratio+"<br/>opacity: "+this.opacity+"<br/>shading: "+this.shading+"<br/>blending: "+
-this.blending+"<br/>wireframe: "+this.wireframe+"<br/>wireframe_linewidth: "+this.wireframe_linewidth+"<br/>wireframe_linecap: "+this.wireframe_linecap+"<br/>wireframe_linejoin: "+this.wireframe_linejoin+"<br/> )"}};THREE.MeshLambertMaterialCounter={value:0};
-THREE.MeshPhongMaterial=function(a){this.id=THREE.MeshPhongMaterialCounter.value++;this.color=new THREE.Color(15658734);this.ambient=new THREE.Color(328965);this.specular=new THREE.Color(1118481);this.shininess=30;this.env_map=this.specular_map=this.map=null;this.combine=THREE.Multiply;this.reflectivity=1;this.refraction_ratio=0.98;this.opacity=1;this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap=
+THREE.MeshBasicMaterial=function(a){this.id=THREE.MeshBasicMaterialCounter.value++;this.color=new THREE.Color(15658734);this.env_map=this.map=null;this.combine=THREE.MultiplyOperation;this.reflectivity=1;this.refraction_ratio=0.98;this.opacity=1;this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap="round";if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.map!==undefined)this.map=
+a.map;if(a.env_map!==undefined)this.env_map=a.env_map;if(a.combine!==undefined)this.combine=a.combine;if(a.reflectivity!==undefined)this.reflectivity=a.reflectivity;if(a.refraction_ratio!==undefined)this.refraction_ratio=a.refraction_ratio;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending;if(a.wireframe!==undefined)this.wireframe=a.wireframe;if(a.wireframe_linewidth!==undefined)this.wireframe_linewidth=
+a.wireframe_linewidth;if(a.wireframe_linecap!==undefined)this.wireframe_linecap=a.wireframe_linecap;if(a.wireframe_linejoin!==undefined)this.wireframe_linejoin=a.wireframe_linejoin}this.toString=function(){return"THREE.MeshBasicMaterial (<br/>id: "+this.id+"<br/>color: "+this.color+"<br/>map: "+this.map+"<br/>env_map: "+this.env_map+"<br/>combine: "+this.combine+"<br/>reflectivity: "+this.reflectivity+"<br/>refraction_ratio: "+this.refraction_ratio+"<br/>opacity: "+this.opacity+"<br/>blending: "+
+this.blending+"<br/>wireframe: "+this.wireframe+"<br/>wireframe_linewidth: "+this.wireframe_linewidth+"<br/>wireframe_linecap: "+this.wireframe_linecap+"<br/>wireframe_linejoin: "+this.wireframe_linejoin+"<br/>)"}};THREE.MeshBasicMaterialCounter={value:0};
+THREE.MeshLambertMaterial=function(a){this.id=THREE.MeshLambertMaterialCounter.value++;this.color=new THREE.Color(15658734);this.env_map=this.map=null;this.combine=THREE.MultiplyOperation;this.reflectivity=1;this.refraction_ratio=0.98;this.opacity=1;this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap="round";if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.map!==undefined)this.map=
+a.map;if(a.env_map!==undefined)this.env_map=a.env_map;if(a.combine!==undefined)this.combine=a.combine;if(a.reflectivity!==undefined)this.reflectivity=a.reflectivity;if(a.refraction_ratio!==undefined)this.refraction_ratio=a.refraction_ratio;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending;if(a.wireframe!==undefined)this.wireframe=a.wireframe;if(a.wireframe_linewidth!==undefined)this.wireframe_linewidth=
+a.wireframe_linewidth;if(a.wireframe_linecap!==undefined)this.wireframe_linecap=a.wireframe_linecap;if(a.wireframe_linejoin!==undefined)this.wireframe_linejoin=a.wireframe_linejoin}this.toString=function(){return"THREE.MeshLambertMaterial (<br/>id: "+this.id+"<br/>color: "+this.color+"<br/>map: "+this.map+"<br/>env_map: "+this.env_map+"<br/>combine: "+this.combine+"<br/>reflectivity: "+this.reflectivity+"<br/>refraction_ratio: "+this.refraction_ratio+"<br/>opacity: "+this.opacity+"<br/>shading: "+
+this.shading+"<br/>blending: "+this.blending+"<br/>wireframe: "+this.wireframe+"<br/>wireframe_linewidth: "+this.wireframe_linewidth+"<br/>wireframe_linecap: "+this.wireframe_linecap+"<br/>wireframe_linejoin: "+this.wireframe_linejoin+"<br/> )"}};THREE.MeshLambertMaterialCounter={value:0};
+THREE.MeshPhongMaterial=function(a){this.id=THREE.MeshPhongMaterialCounter.value++;this.color=new THREE.Color(15658734);this.ambient=new THREE.Color(328965);this.specular=new THREE.Color(1118481);this.shininess=30;this.env_map=this.specular_map=this.map=null;this.combine=THREE.MultiplyOperation;this.reflectivity=1;this.refraction_ratio=0.98;this.opacity=1;this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap=
 "round";if(a){if(a.color!==undefined)this.color=new THREE.Color(a.color);if(a.ambient!==undefined)this.ambient=new THREE.Color(a.ambient);if(a.specular!==undefined)this.specular=new THREE.Color(a.specular);if(a.shininess!==undefined)this.shininess=a.shininess;if(a.map!==undefined)this.map=a.map;if(a.specular_map!==undefined)this.specular_map=a.specular_map;if(a.env_map!==undefined)this.env_map=a.env_map;if(a.combine!==undefined)this.combine=a.combine;if(a.reflectivity!==undefined)this.reflectivity=
 a.reflectivity;if(a.refraction_ratio!==undefined)this.refraction_ratio=a.refraction_ratio;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending;if(a.wireframe!==undefined)this.wireframe=a.wireframe;if(a.wireframe_linewidth!==undefined)this.wireframe_linewidth=a.wireframe_linewidth;if(a.wireframe_linecap!==undefined)this.wireframe_linecap=a.wireframe_linecap;if(a.wireframe_linejoin!==undefined)this.wireframe_linejoin=
 a.wireframe_linejoin}this.toString=function(){return"THREE.MeshPhongMaterial (<br/>id: "+this.id+"<br/>color: "+this.color+"<br/>ambient: "+this.ambient+"<br/>specular: "+this.specular+"<br/>shininess: "+this.shininess+"<br/>map: "+this.map+"<br/>specular_map: "+this.specular_map+"<br/>env_map: "+this.env_map+"<br/>combine: "+this.combine+"<br/>reflectivity: "+this.reflectivity+"<br/>refraction_ratio: "+this.refraction_ratio+"<br/>opacity: "+this.opacity+"<br/>shading: "+this.shading+"<br/>wireframe: "+
@@ -81,89 +81,92 @@ a.uniforms;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undef
 this.blending+"<br/>wireframe: "+this.wireframe+"<br/>wireframe_linewidth: "+this.wireframe_linewidth+"<br/>wireframe_linecap: "+this.wireframe_linecap+"<br/>wireframe_linejoin: "+this.wireframe_linejoin+"<br/>)"}};THREE.MeshShaderMaterialCounter={value:0};
 THREE.ParticleBasicMaterial=function(a){this.color=new THREE.Color(16711680);this.map=null;this.opacity=1;this.blending=THREE.NormalBlending;this.offset=new THREE.Vector2;if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.map!==undefined)this.map=a.map;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.blending!==undefined)this.blending=a.blending}this.toString=function(){return"THREE.ParticleBasicMaterial (<br/>color: "+this.color+"<br/>map: "+this.map+"<br/>opacity: "+this.opacity+"<br/>blending: "+
 this.blending+"<br/>)"}};THREE.ParticleCircleMaterial=function(a){this.color=new THREE.Color(16711680);this.opacity=1;this.blending=THREE.NormalBlending;if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.opacity!==undefined)this.opacity=a.opacity;if(a.blending!==undefined)this.blending=a.blending}this.toString=function(){return"THREE.ParticleCircleMaterial (<br/>color: "+this.color+"<br/>opacity: "+this.opacity+"<br/>blending: "+this.blending+"<br/>)"}};
-THREE.ParticleDOMMaterial=function(a){this.domElement=a;this.toString=function(){return"THREE.ParticleDOMMaterial ( domElement: "+this.domElement+" )"}};THREE.Texture=function(a,b,d,g){this.image=a;this.loaded=false;this.mapping=b!==undefined?b:THREE.UVMapping;this.wrap_s=d!==undefined?d:THREE.ClampToEdge;this.wrap_t=g!==undefined?g:THREE.ClampToEdge;this.toString=function(){return"THREE.Texture (<br/>image: "+this.image+"<br/>wrap_s: "+this.wrap_s+"<br/>wrap_t: "+this.wrap_t+"<br/>)"}};
-THREE.UVMapping=0;THREE.ReflectionMapping=1;THREE.RefractionMapping=2;THREE.Multiply=0;THREE.Mix=1;THREE.Repeat=0;THREE.ClampToEdge=1;THREE.MirroredRepeat=2;THREE.TextureCube=function(a,b){this.image=a;this.mapping=b?b:THREE.ReflectionMap;this.toString=function(){return"THREE.TextureCube (<br/>image: "+this.image+"<br/>mapping: "+this.mapping+"<br/>)"}};
+THREE.ParticleDOMMaterial=function(a){this.domElement=a;this.toString=function(){return"THREE.ParticleDOMMaterial ( domElement: "+this.domElement+" )"}};
+THREE.Texture=function(a,b,d,g,j,n){this.image=a;this.mapping=b!==undefined?b:new THREE.UVMapping;this.wrap_s=d!==undefined?d:THREE.ClampToEdgeWrapping;this.wrap_t=g!==undefined?g:THREE.ClampToEdgeWrapping;this.mag_filter=j!==undefined?j:THREE.LinearFilter;this.min_filter=n!==undefined?n:THREE.LinearMipMapLinearFilter;this.toString=function(){return"THREE.Texture (<br/>image: "+this.image+"<br/>wrap_s: "+this.wrap_s+"<br/>wrap_t: "+this.wrap_t+"<br/>mag_filter: "+this.mag_filter+"<br/>min_filter: "+
+this.min_filter+"<br/>)"}};THREE.MultiplyOperation=0;THREE.MixOperation=1;THREE.RepeatWrapping=0;THREE.ClampToEdgeWrapping=1;THREE.MirroredRepeatWrapping=2;THREE.NearestFilter=3;THREE.NearestMipMapNearestFilter=4;THREE.NearestMipMapLinearFilter=5;THREE.LinearFilter=6;THREE.LinearMipMapNearestFilter=7;THREE.LinearMipMapLinearFilter=8;THREE.CubeReflectionMapping=function(){};THREE.CubeRefractionMapping=function(){};THREE.LatitudeReflectionMapping=function(){};THREE.LatitudeRefractionMapping=function(){};
+THREE.SphericalReflectionMapping=function(){};THREE.SphericalRefractionMapping=function(){};THREE.UVMapping=function(){};
 THREE.Scene=function(){this.objects=[];this.lights=[];this.addObject=function(a){this.objects.push(a)};this.removeObject=function(a){a=this.objects.indexOf(a);a!==-1&&this.objects.splice(a,1)};this.addLight=function(a){this.lights.push(a)};this.removeLight=function(a){a=this.lights.indexOf(a);a!==-1&&this.lights.splice(a,1)};this.toString=function(){return"THREE.Scene ( "+this.objects+" )"}};
-THREE.Projector=function(){function a(S,z){var f=0,k=1,e=S.z+S.w,n=z.z+z.w,i=-S.z+S.w,h=-z.z+z.w;if(e>=0&&n>=0&&i>=0&&h>=0)return true;else if(e<0&&n<0||i<0&&h<0)return false;else{if(e<0)f=Math.max(f,e/(e-n));else if(n<0)k=Math.min(k,e/(e-n));if(i<0)f=Math.max(f,i/(i-h));else if(h<0)k=Math.min(k,i/(i-h));if(k<f)return false;else{S.lerpSelf(z,f);z.lerpSelf(S,1-k);return true}}}var b=null,d,g,j,o=[],m,p,l=[],c,E,G=[],w=new THREE.Vector4,F=new THREE.Matrix4,O=new THREE.Matrix4,J=new THREE.Vector4,M=
-new THREE.Vector4,r;this.projectScene=function(S,z){var f,k,e,n,i,h,q,t,K,A,H,P,u,N,s,y,x;b=[];j=p=E=0;z.autoUpdateMatrix&&z.updateMatrix();F.multiply(z.projectionMatrix,z.matrix);q=S.objects;f=0;for(k=q.length;f<k;f++){t=q[f];t.autoUpdateMatrix&&t.updateMatrix();K=t.matrix;A=t.rotationMatrix;H=t.material;P=t.overdraw;if(t instanceof THREE.Mesh){u=t.geometry.vertices;e=0;for(n=u.length;e<n;e++){N=u[e];N.positionWorld.copy(N.position);K.multiplyVector3(N.positionWorld);s=N.positionScreen;s.copy(N.positionWorld);
-F.multiplyVector4(s);s.multiplyScalar(1/s.w);N.__visible=s.z>0&&s.z<1}N=t.geometry.faces;e=0;for(n=N.length;e<n;e++){s=N[e];if(s instanceof THREE.Face3){i=u[s.a];h=u[s.b];y=u[s.c];if(i.__visible&&h.__visible&&y.__visible)if(t.doubleSided||t.flipSided!=(y.positionScreen.x-i.positionScreen.x)*(h.positionScreen.y-i.positionScreen.y)-(y.positionScreen.y-i.positionScreen.y)*(h.positionScreen.x-i.positionScreen.x)<0){d=o[j]=o[j]||new THREE.RenderableFace3;d.v1.positionWorld.copy(i.positionWorld);d.v2.positionWorld.copy(h.positionWorld);
-d.v3.positionWorld.copy(y.positionWorld);d.v1.positionScreen.copy(i.positionScreen);d.v2.positionScreen.copy(h.positionScreen);d.v3.positionScreen.copy(y.positionScreen);d.normalWorld.copy(s.normal);A.multiplyVector3(d.normalWorld);d.centroidWorld.copy(s.centroid);K.multiplyVector3(d.centroidWorld);d.centroidScreen.copy(d.centroidWorld);F.multiplyVector3(d.centroidScreen);y=s.vertexNormals;r=d.vertexNormalsWorld;i=0;for(h=y.length;i<h;i++){x=r[i]=r[i]||new THREE.Vector3;x.copy(y[i]);A.multiplyVector3(x)}d.z=
-d.centroidScreen.z;d.meshMaterial=H;d.faceMaterial=s.material;d.overdraw=P;if(t.geometry.uvs[e]){d.uvs[0]=t.geometry.uvs[e][0];d.uvs[1]=t.geometry.uvs[e][1];d.uvs[2]=t.geometry.uvs[e][2]}b.push(d);j++}}else if(s instanceof THREE.Face4){i=u[s.a];h=u[s.b];y=u[s.c];x=u[s.d];if(i.__visible&&h.__visible&&y.__visible&&x.__visible)if(t.doubleSided||t.flipSided!=((x.positionScreen.x-i.positionScreen.x)*(h.positionScreen.y-i.positionScreen.y)-(x.positionScreen.y-i.positionScreen.y)*(h.positionScreen.x-i.positionScreen.x)<
-0||(h.positionScreen.x-y.positionScreen.x)*(x.positionScreen.y-y.positionScreen.y)-(h.positionScreen.y-y.positionScreen.y)*(x.positionScreen.x-y.positionScreen.x)<0)){d=o[j]=o[j]||new THREE.RenderableFace3;d.v1.positionWorld.copy(i.positionWorld);d.v2.positionWorld.copy(h.positionWorld);d.v3.positionWorld.copy(x.positionWorld);d.v1.positionScreen.copy(i.positionScreen);d.v2.positionScreen.copy(h.positionScreen);d.v3.positionScreen.copy(x.positionScreen);d.normalWorld.copy(s.normal);A.multiplyVector3(d.normalWorld);
-d.centroidWorld.copy(s.centroid);K.multiplyVector3(d.centroidWorld);d.centroidScreen.copy(d.centroidWorld);F.multiplyVector3(d.centroidScreen);d.z=d.centroidScreen.z;d.meshMaterial=H;d.faceMaterial=s.material;d.overdraw=P;if(t.geometry.uvs[e]){d.uvs[0]=t.geometry.uvs[e][0];d.uvs[1]=t.geometry.uvs[e][1];d.uvs[2]=t.geometry.uvs[e][3]}b.push(d);j++;g=o[j]=o[j]||new THREE.RenderableFace3;g.v1.positionWorld.copy(h.positionWorld);g.v2.positionWorld.copy(y.positionWorld);g.v3.positionWorld.copy(x.positionWorld);
-g.v1.positionScreen.copy(h.positionScreen);g.v2.positionScreen.copy(y.positionScreen);g.v3.positionScreen.copy(x.positionScreen);g.normalWorld.copy(d.normalWorld);g.centroidWorld.copy(d.centroidWorld);g.centroidScreen.copy(d.centroidScreen);g.z=g.centroidScreen.z;g.meshMaterial=H;g.faceMaterial=s.material;g.overdraw=P;if(t.geometry.uvs[e]){g.uvs[0]=t.geometry.uvs[e][1];g.uvs[1]=t.geometry.uvs[e][2];g.uvs[2]=t.geometry.uvs[e][3]}b.push(g);j++}}}}else if(t instanceof THREE.Line){O.multiply(F,K);u=t.geometry.vertices;
-N=u[0];N.positionScreen.copy(N.position);O.multiplyVector4(N.positionScreen);e=1;for(n=u.length;e<n;e++){i=u[e];i.positionScreen.copy(i.position);O.multiplyVector4(i.positionScreen);h=u[e-1];J.copy(i.positionScreen);M.copy(h.positionScreen);if(a(J,M)){J.multiplyScalar(1/J.w);M.multiplyScalar(1/M.w);m=l[p]=l[p]||new THREE.RenderableLine;m.v1.positionScreen.copy(J);m.v2.positionScreen.copy(M);m.z=Math.max(J.z,M.z);m.material=t.material;b.push(m);p++}}}else if(t instanceof THREE.Particle){w.set(t.position.x,
-t.position.y,t.position.z,1);F.multiplyVector4(w);w.z/=w.w;if(w.z>0&&w.z<1){c=G[E]=G[E]||new THREE.RenderableParticle;c.x=w.x/w.w;c.y=w.y/w.w;c.z=w.z;c.rotation=t.rotation.z;c.scale.x=t.scale.x*Math.abs(c.x-(w.x+z.projectionMatrix.n11)/(w.w+z.projectionMatrix.n14));c.scale.y=t.scale.y*Math.abs(c.y-(w.y+z.projectionMatrix.n22)/(w.w+z.projectionMatrix.n24));c.material=t.material;b.push(c);E++}}}b.sort(function(Q,C){return C.z-Q.z});return b};this.unprojectVector=function(S,z){var f=new THREE.Matrix4;
-f.multiply(THREE.Matrix4.makeInvert(z.matrix),THREE.Matrix4.makeInvert(z.projectionMatrix));f.multiplyVector3(S);return S}};
-THREE.DOMRenderer=function(){THREE.Renderer.call(this);var a=null,b=new THREE.Projector,d,g,j,o;this.domElement=document.createElement("div");this.setSize=function(m,p){d=m;g=p;j=d/2;o=g/2};this.render=function(m,p){var l,c,E,G,w,F,O,J;a=b.projectScene(m,p);l=0;for(c=a.length;l<c;l++){w=a[l];if(w instanceof THREE.RenderableParticle){O=w.x*j+j;J=w.y*o+o;E=0;for(G=w.material.length;E<G;E++){F=w.material[E];if(F instanceof THREE.ParticleDOMMaterial){F=F.domElement;F.style.left=O+"px";F.style.top=J+"px"}}}}}};
-THREE.CanvasRenderer=function(){function a(I,Y,U,D){var v,L,$,T,X=I.lights;I=0;for(v=X.length;I<v;I++){L=X[I];$=L.color;T=L.intensity;if(L instanceof THREE.DirectionalLight){L=U.dot(L.position)*T;if(L>0){D.r+=$.r*L;D.g+=$.g*L;D.b+=$.b*L}}else if(L instanceof THREE.PointLight){aa.sub(L.position,Y);aa.normalize();L=U.dot(aa)*T;if(L>0){D.r+=$.r*L;D.g+=$.g*L;D.b+=$.b*L}}}}function b(I,Y,U,D,v,L){if(v.opacity!=0){o(v.opacity);m(v.blending);K=I.positionScreen.x;A=I.positionScreen.y;H=Y.positionScreen.x;
-P=Y.positionScreen.y;u=U.positionScreen.x;N=U.positionScreen.y;var $=K,T=A,X=H,ba=P,Z=u,ca=N;r.beginPath();r.moveTo($,T);r.lineTo(X,ba);r.lineTo(Z,ca);r.lineTo($,T);r.closePath();if(v instanceof THREE.MeshBasicMaterial)if(v.map&&v.map.loaded)j(K,A,H,P,u,N,v.map.image,D.uvs[0].u,D.uvs[0].v,D.uvs[1].u,D.uvs[1].v,D.uvs[2].u,D.uvs[2].v);else if(v.env_map&&v.env_map.loaded){if(v.env_map.mapping==THREE.ReflectionMapping){aa.copy(D.vertexNormalsWorld[0]);V=(aa.x*camera.matrix.n11+aa.y*camera.matrix.n12+
-aa.z*camera.matrix.n13)*0.5+0.5;ja=-(aa.x*camera.matrix.n21+aa.y*camera.matrix.n22+aa.z*camera.matrix.n23)*0.5+0.5;aa.copy(D.vertexNormalsWorld[1]);za=(aa.x*camera.matrix.n11+aa.y*camera.matrix.n12+aa.z*camera.matrix.n13)*0.5+0.5;Aa=-(aa.x*camera.matrix.n21+aa.y*camera.matrix.n22+aa.z*camera.matrix.n23)*0.5+0.5;aa.copy(D.vertexNormalsWorld[2]);Ba=(aa.x*camera.matrix.n11+aa.y*camera.matrix.n12+aa.z*camera.matrix.n13)*0.5+0.5;Ca=-(aa.x*camera.matrix.n21+aa.y*camera.matrix.n22+aa.z*camera.matrix.n23)*
-0.5+0.5;j(K,A,H,P,u,N,v.env_map.image,V,ja,za,Aa,Ba,Ca)}}else v.wireframe?d(v.color.__styleString,v.wireframe_linewidth):g(v.color.__styleString);else if(v instanceof THREE.MeshLambertMaterial){if(v.map&&!v.wireframe){j(K,A,H,P,u,N,v.map.image,D.uvs[0].u,D.uvs[0].v,D.uvs[1].u,D.uvs[1].v,D.uvs[2].u,D.uvs[2].v);m(THREE.SubtractiveBlending)}if(va)if(!v.wireframe&&v.shading==THREE.SmoothShading&&D.vertexNormalsWorld.length==3){y.r=x.r=Q.r=ga.r;y.g=x.g=Q.g=ga.g;y.b=x.b=Q.b=ga.b;a(L,D.v1.positionWorld,
-D.vertexNormalsWorld[0],y);a(L,D.v2.positionWorld,D.vertexNormalsWorld[1],x);a(L,D.v3.positionWorld,D.vertexNormalsWorld[2],Q);C.r=(x.r+Q.r)*0.5;C.g=(x.g+Q.g)*0.5;C.b=(x.b+Q.b)*0.5;R=p(y,x,Q,C);j(K,A,H,P,u,N,R,0,0,1,0,0,1)}else{ha.r=ga.r;ha.g=ga.g;ha.b=ga.b;a(L,D.centroidWorld,D.normalWorld,ha);s.r=v.color.r*ha.r;s.g=v.color.g*ha.g;s.b=v.color.b*ha.b;s.updateStyleString();v.wireframe?d(s.__styleString,v.wireframe_linewidth):g(s.__styleString)}else v.wireframe?d(v.color.__styleString,v.wireframe_linewidth):
-g(v.color.__styleString)}else if(v instanceof THREE.MeshDepthMaterial){B=v.__2near;W=v.__farPlusNear;ea=v.__farMinusNear;y.r=y.g=y.b=1-B/(W-I.positionScreen.z*ea);x.r=x.g=x.b=1-B/(W-Y.positionScreen.z*ea);Q.r=Q.g=Q.b=1-B/(W-U.positionScreen.z*ea);C.r=(x.r+Q.r)*0.5;C.g=(x.g+Q.g)*0.5;C.b=(x.b+Q.b)*0.5;R=p(y,x,Q,C);j(K,A,H,P,u,N,R,0,0,1,0,0,1)}else if(v instanceof THREE.MeshNormalMaterial){s.r=l(D.normalWorld.x);s.g=l(D.normalWorld.y);s.b=l(D.normalWorld.z);s.updateStyleString();v.wireframe?d(s.__styleString,
-v.wireframe_linewidth):g(s.__styleString)}}}function d(I,Y){if(f!=I)r.strokeStyle=f=I;if(e!=Y)r.lineWidth=e=Y;r.stroke();da.inflate(Y*2)}function g(I){if(k!=I)r.fillStyle=k=I;r.fill()}function j(I,Y,U,D,v,L,$,T,X,ba,Z,ca,la){var ka,fa;ka=$.width-1;fa=$.height-1;T*=ka;X*=fa;ba*=ka;Z*=fa;ca*=ka;la*=fa;U-=I;D-=Y;v-=I;L-=Y;ba-=T;Z-=X;ca-=T;la-=X;fa=1/(ba*la-ca*Z);ka=(la*U-Z*v)*fa;Z=(la*D-Z*L)*fa;U=(ba*v-ca*U)*fa;D=(ba*L-ca*D)*fa;I=I-ka*T-U*X;Y=Y-Z*T-D*X;r.save();r.transform(ka,Z,U,D,I,Y);r.clip();r.drawImage($,
-0,0);r.restore()}function o(I){if(S!=I)r.globalAlpha=S=I}function m(I){if(z!=I){switch(I){case THREE.NormalBlending:r.globalCompositeOperation="source-over";break;case THREE.AdditiveBlending:r.globalCompositeOperation="lighter";break;case THREE.SubtractiveBlending:r.globalCompositeOperation="darker"}z=I}}function p(I,Y,U,D){ia[0]=i(0,n(255,~~(I.r*255)));ia[1]=i(0,n(255,~~(I.g*255)));ia[2]=i(0,n(255,~~(I.b*255)));ia[4]=i(0,n(255,~~(Y.r*255)));ia[5]=i(0,n(255,~~(Y.g*255)));ia[6]=i(0,n(255,~~(Y.b*255)));
-ia[8]=i(0,n(255,~~(U.r*255)));ia[9]=i(0,n(255,~~(U.g*255)));ia[10]=i(0,n(255,~~(U.b*255)));ia[12]=i(0,n(255,~~(D.r*255)));ia[13]=i(0,n(255,~~(D.g*255)));ia[14]=i(0,n(255,~~(D.b*255)));ra.putImageData(wa,0,0);ua.drawImage(sa,0,0);return ta}function l(I){return I<0?n((1+I)*0.5,0.5):0.5+n(I*0.5,0.5)}function c(I,Y){var U=Y.x-I.x,D=Y.y-I.y,v=1/Math.sqrt(U*U+D*D);U*=v;D*=v;Y.x+=U;Y.y+=D;I.x-=U;I.y-=D}var E=null,G=new THREE.Projector,w=document.createElement("canvas"),F,O,J,M,r=w.getContext("2d"),S=1,z=
-0,f=null,k=null,e=1,n=Math.min,i=Math.max,h,q,t,K,A,H,P,u,N,s=new THREE.Color,y=new THREE.Color,x=new THREE.Color,Q=new THREE.Color,C=new THREE.Color,B,W,ea,R,V,ja,za,Aa,Ba,Ca,pa=new THREE.Rectangle,ma=new THREE.Rectangle,da=new THREE.Rectangle,va=false,ha=new THREE.Color,ga=new THREE.Color,na=new THREE.Color,oa=new THREE.Color,Da=Math.PI*2,aa=new THREE.Vector3,sa,ra,wa,ia,ta,ua,qa=16;sa=document.createElement("canvas");sa.width=sa.height=2;ra=sa.getContext("2d");ra.fillStyle="rgba(0,0,0,1)";ra.fillRect(0,
-0,2,2);wa=ra.getImageData(0,0,2,2);ia=wa.data;ta=document.createElement("canvas");ta.width=ta.height=qa;ua=ta.getContext("2d");ua.translate(-qa/2,-qa/2);ua.scale(qa,qa);qa--;this.domElement=w;this.autoClear=true;this.setSize=function(I,Y){F=I;O=Y;J=F/2;M=O/2;w.width=F;w.height=O;pa.set(-J,-M,J,M)};this.clear=function(){if(!ma.isEmpty()){ma.inflate(1);ma.minSelf(pa);r.clearRect(ma.getX(),ma.getY(),ma.getWidth(),ma.getHeight());ma.empty()}};this.render=function(I,Y){var U,D,v,L,$,T,X,ba;r.setTransform(1,
-0,0,-1,J,M);this.autoClear&&this.clear();E=G.projectScene(I,Y);if(va=I.lights.length>0){$=I.lights;ga.setRGB(0,0,0);na.setRGB(0,0,0);oa.setRGB(0,0,0);U=0;for(D=$.length;U<D;U++){v=$[U];L=v.color;if(v instanceof THREE.AmbientLight){ga.r+=L.r;ga.g+=L.g;ga.b+=L.b}else if(v instanceof THREE.DirectionalLight){na.r+=L.r;na.g+=L.g;na.b+=L.b}else if(v instanceof THREE.PointLight){oa.r+=L.r;oa.g+=L.g;oa.b+=L.b}}}U=0;for(D=E.length;U<D;U++){v=E[U];da.empty();if(v instanceof THREE.RenderableParticle){h=v;h.x*=
-J;h.y*=M;L=0;for($=v.material.length;L<$;L++){T=h;X=v;var Z=v.material[L];if(Z.opacity!=0){o(Z.opacity);m(Z.blending);ba=void 0;var ca=void 0,la=void 0,ka=void 0,fa=void 0,xa=void 0,ya=void 0;if(Z instanceof THREE.ParticleBasicMaterial){if(Z.map){fa=Z.map;xa=fa.width>>1;ya=fa.height>>1;la=X.scale.x*J;ka=X.scale.y*M;ba=la*xa;ca=ka*ya;da.set(T.x-ba,T.y-ca,T.x+ba,T.y+ca);if(pa.instersects(da)){r.save();r.translate(T.x,T.y);r.rotate(-X.rotation);r.scale(la,-ka);r.translate(-xa,-ya);r.drawImage(fa,0,0);
-r.restore()}}}else if(Z instanceof THREE.ParticleCircleMaterial){if(va){ha.r=ga.r+na.r+oa.r;ha.g=ga.g+na.g+oa.g;ha.b=ga.b+na.b+oa.b;s.r=Z.color.r*ha.r;s.g=Z.color.g*ha.g;s.b=Z.color.b*ha.b;s.updateStyleString()}else s.__styleString=Z.color.__styleString;ba=X.scale.x*J;ca=X.scale.y*M;da.set(T.x-ba,T.y-ca,T.x+ba,T.y+ca);if(pa.instersects(da)){Z=s.__styleString;if(k!=Z)r.fillStyle=k=Z;r.save();r.translate(T.x,T.y);r.rotate(-X.rotation);r.scale(ba,ca);r.beginPath();r.arc(0,0,1,0,Da,true);r.closePath();
-r.fill();r.restore()}}}}}else if(v instanceof THREE.RenderableLine){h=v.v1;q=v.v2;h.positionScreen.x*=J;h.positionScreen.y*=M;q.positionScreen.x*=J;q.positionScreen.y*=M;da.addPoint(h.positionScreen.x,h.positionScreen.y);da.addPoint(q.positionScreen.x,q.positionScreen.y);if(pa.instersects(da)){L=0;for($=v.material.length;L<$;){X=h;ba=q;T=v.material[L++];if(T.opacity!=0){o(T.opacity);m(T.blending);r.beginPath();r.moveTo(X.positionScreen.x,X.positionScreen.y);r.lineTo(ba.positionScreen.x,ba.positionScreen.y);
-r.closePath();if(T instanceof THREE.LineBasicMaterial){s.__styleString=T.color.__styleString;X=T.linewidth;if(e!=X)r.lineWidth=e=X;X=s.__styleString;if(f!=X)r.strokeStyle=f=X;r.stroke();da.inflate(T.linewidth*2)}}}}}else if(v instanceof THREE.RenderableFace3){h=v.v1;q=v.v2;t=v.v3;h.positionScreen.x*=J;h.positionScreen.y*=M;q.positionScreen.x*=J;q.positionScreen.y*=M;t.positionScreen.x*=J;t.positionScreen.y*=M;if(v.overdraw){c(h.positionScreen,q.positionScreen);c(q.positionScreen,t.positionScreen);
-c(t.positionScreen,h.positionScreen)}da.addPoint(h.positionScreen.x,h.positionScreen.y);da.addPoint(q.positionScreen.x,q.positionScreen.y);da.addPoint(t.positionScreen.x,t.positionScreen.y);if(pa.instersects(da)){L=0;for($=v.meshMaterial.length;L<$;){ba=v.meshMaterial[L++];if(ba instanceof THREE.MeshFaceMaterial){T=0;for(X=v.faceMaterial.length;T<X;)(ba=v.faceMaterial[T++])&&b(h,q,t,v,ba,I)}else b(h,q,t,v,ba,I)}}}ma.addRectangle(da)}r.setTransform(1,0,0,1,0,0)}};
-THREE.SVGRenderer=function(){function a(s,y,x){var Q,C,B,W;Q=0;for(C=s.lights.length;Q<C;Q++){B=s.lights[Q];if(B instanceof THREE.DirectionalLight){W=y.normalWorld.dot(B.position)*B.intensity;if(W>0){x.r+=B.color.r*W;x.g+=B.color.g*W;x.b+=B.color.b*W}}else if(B instanceof THREE.PointLight){h.sub(B.position,y.centroidWorld);h.normalize();W=y.normalWorld.dot(h)*B.intensity;if(W>0){x.r+=B.color.r*W;x.g+=B.color.g*W;x.b+=B.color.b*W}}}}function b(s,y,x,Q,C,B){A=g(H++);A.setAttribute("d","M "+s.positionScreen.x+
-" "+s.positionScreen.y+" L "+y.positionScreen.x+" "+y.positionScreen.y+" L "+x.positionScreen.x+","+x.positionScreen.y+"z");if(C instanceof THREE.MeshBasicMaterial)z.__styleString=C.color.__styleString;else if(C instanceof THREE.MeshLambertMaterial)if(S){f.r=k.r;f.g=k.g;f.b=k.b;a(B,Q,f);z.r=C.color.r*f.r;z.g=C.color.g*f.g;z.b=C.color.b*f.b;z.updateStyleString()}else z.__styleString=C.color.__styleString;else if(C instanceof THREE.MeshDepthMaterial){i=1-C.__2near/(C.__farPlusNear-Q.z*C.__farMinusNear);
-z.setRGB(i,i,i)}else C instanceof THREE.MeshNormalMaterial&&z.setRGB(j(Q.normalWorld.x),j(Q.normalWorld.y),j(Q.normalWorld.z));C.wireframe?A.setAttribute("style","fill: none; stroke: "+z.__styleString+"; stroke-width: "+C.wireframe_linewidth+"; stroke-opacity: "+C.opacity+"; stroke-linecap: "+C.wireframe_linecap+"; stroke-linejoin: "+C.wireframe_linejoin):A.setAttribute("style","fill: "+z.__styleString+"; fill-opacity: "+C.opacity);p.appendChild(A)}function d(s,y,x,Q,C,B,W){A=g(H++);A.setAttribute("d",
-"M "+s.positionScreen.x+" "+s.positionScreen.y+" L "+y.positionScreen.x+" "+y.positionScreen.y+" L "+x.positionScreen.x+","+x.positionScreen.y+" L "+Q.positionScreen.x+","+Q.positionScreen.y+"z");if(B instanceof THREE.MeshBasicMaterial)z.__styleString=B.color.__styleString;else if(B instanceof THREE.MeshLambertMaterial)if(S){f.r=k.r;f.g=k.g;f.b=k.b;a(W,C,f);z.r=B.color.r*f.r;z.g=B.color.g*f.g;z.b=B.color.b*f.b;z.updateStyleString()}else z.__styleString=B.color.__styleString;else if(B instanceof THREE.MeshDepthMaterial){i=
-1-B.__2near/(B.__farPlusNear-C.z*B.__farMinusNear);z.setRGB(i,i,i)}else B instanceof THREE.MeshNormalMaterial&&z.setRGB(j(C.normalWorld.x),j(C.normalWorld.y),j(C.normalWorld.z));B.wireframe?A.setAttribute("style","fill: none; stroke: "+z.__styleString+"; stroke-width: "+B.wireframe_linewidth+"; stroke-opacity: "+B.opacity+"; stroke-linecap: "+B.wireframe_linecap+"; stroke-linejoin: "+B.wireframe_linejoin):A.setAttribute("style","fill: "+z.__styleString+"; fill-opacity: "+B.opacity);p.appendChild(A)}
-function g(s){if(q[s]==null){q[s]=document.createElementNS("http://www.w3.org/2000/svg","path");N==0&&q[s].setAttribute("shape-rendering","crispEdges");return q[s]}return q[s]}function j(s){return s<0?Math.min((1+s)*0.5,0.5):0.5+Math.min(s*0.5,0.5)}var o=null,m=new THREE.Projector,p=document.createElementNS("http://www.w3.org/2000/svg","svg"),l,c,E,G,w,F,O,J,M=new THREE.Rectangle,r=new THREE.Rectangle,S=false,z=new THREE.Color(16777215),f=new THREE.Color(16777215),k=new THREE.Color(0),e=new THREE.Color(0),
-n=new THREE.Color(0),i,h=new THREE.Vector3,q=[],t=[],K=[],A,H,P,u,N=1;this.domElement=p;this.autoClear=true;this.setQuality=function(s){switch(s){case "high":N=1;break;case "low":N=0}};this.setSize=function(s,y){l=s;c=y;E=l/2;G=c/2;p.setAttribute("viewBox",-E+" "+-G+" "+l+" "+c);p.setAttribute("width",l);p.setAttribute("height",c);M.set(-E,-G,E,G)};this.clear=function(){for(;p.childNodes.length>0;)p.removeChild(p.childNodes[0])};this.render=function(s,y){var x,Q,C,B,W,ea,R,V;this.autoClear&&this.clear();
-o=m.projectScene(s,y);u=P=H=0;if(S=s.lights.length>0){R=s.lights;k.setRGB(0,0,0);e.setRGB(0,0,0);n.setRGB(0,0,0);x=0;for(Q=R.length;x<Q;x++){C=R[x];B=C.color;if(C instanceof THREE.AmbientLight){k.r+=B.r;k.g+=B.g;k.b+=B.b}else if(C instanceof THREE.DirectionalLight){e.r+=B.r;e.g+=B.g;e.b+=B.b}else if(C instanceof THREE.PointLight){n.r+=B.r;n.g+=B.g;n.b+=B.b}}}x=0;for(Q=o.length;x<Q;x++){R=o[x];r.empty();if(R instanceof THREE.RenderableParticle){w=R;w.x*=E;w.y*=-G;C=0;for(B=R.material.length;C<B;C++)if(V=
-R.material[C]){W=w;ea=R;V=V;var ja=P++;if(t[ja]==null){t[ja]=document.createElementNS("http://www.w3.org/2000/svg","circle");N==0&&t[ja].setAttribute("shape-rendering","crispEdges")}A=t[ja];A.setAttribute("cx",W.x);A.setAttribute("cy",W.y);A.setAttribute("r",ea.scale.x*E);if(V instanceof THREE.ParticleCircleMaterial){if(S){f.r=k.r+e.r+n.r;f.g=k.g+e.g+n.g;f.b=k.b+e.b+n.b;z.r=V.color.r*f.r;z.g=V.color.g*f.g;z.b=V.color.b*f.b;z.updateStyleString()}else z=V.color;A.setAttribute("style","fill: "+z.__styleString)}p.appendChild(A)}}else if(R instanceof
-THREE.RenderableLine){w=R.v1;F=R.v2;w.positionScreen.x*=E;w.positionScreen.y*=-G;F.positionScreen.x*=E;F.positionScreen.y*=-G;r.addPoint(w.positionScreen.x,w.positionScreen.y);r.addPoint(F.positionScreen.x,F.positionScreen.y);if(M.instersects(r)){C=0;for(B=R.material.length;C<B;)if(V=R.material[C++]){W=w;ea=F;V=V;ja=u++;if(K[ja]==null){K[ja]=document.createElementNS("http://www.w3.org/2000/svg","line");N==0&&K[ja].setAttribute("shape-rendering","crispEdges")}A=K[ja];A.setAttribute("x1",W.positionScreen.x);
-A.setAttribute("y1",W.positionScreen.y);A.setAttribute("x2",ea.positionScreen.x);A.setAttribute("y2",ea.positionScreen.y);if(V instanceof THREE.LineBasicMaterial){z.__styleString=V.color.__styleString;A.setAttribute("style","fill: none; stroke: "+z.__styleString+"; stroke-width: "+V.linewidth+"; stroke-opacity: "+V.opacity+"; stroke-linecap: "+V.linecap+"; stroke-linejoin: "+V.linejoin);p.appendChild(A)}}}}else if(R instanceof THREE.RenderableFace3){w=R.v1;F=R.v2;O=R.v3;w.positionScreen.x*=E;w.positionScreen.y*=
--G;F.positionScreen.x*=E;F.positionScreen.y*=-G;O.positionScreen.x*=E;O.positionScreen.y*=-G;r.addPoint(w.positionScreen.x,w.positionScreen.y);r.addPoint(F.positionScreen.x,F.positionScreen.y);r.addPoint(O.positionScreen.x,O.positionScreen.y);if(M.instersects(r)){C=0;for(B=R.meshMaterial.length;C<B;){V=R.meshMaterial[C++];if(V instanceof THREE.MeshFaceMaterial){W=0;for(ea=R.faceMaterial.length;W<ea;)(V=R.faceMaterial[W++])&&b(w,F,O,R,V,s)}else V&&b(w,F,O,R,V,s)}}}else if(R instanceof THREE.RenderableFace4){w=
-R.v1;F=R.v2;O=R.v3;J=R.v4;w.positionScreen.x*=E;w.positionScreen.y*=-G;F.positionScreen.x*=E;F.positionScreen.y*=-G;O.positionScreen.x*=E;O.positionScreen.y*=-G;J.positionScreen.x*=E;J.positionScreen.y*=-G;r.addPoint(w.positionScreen.x,w.positionScreen.y);r.addPoint(F.positionScreen.x,F.positionScreen.y);r.addPoint(O.positionScreen.x,O.positionScreen.y);r.addPoint(J.positionScreen.x,J.positionScreen.y);if(M.instersects(r)){C=0;for(B=R.meshMaterial.length;C<B;){V=R.meshMaterial[C++];if(V instanceof
-THREE.MeshFaceMaterial){W=0;for(ea=R.faceMaterial.length;W<ea;)(V=R.faceMaterial[W++])&&d(w,F,O,J,R,V,s)}else V&&d(w,F,O,J,R,V,s)}}}}}};
+THREE.Projector=function(){function a(O,v){var f=0,k=1,e=O.z+O.w,p=v.z+v.w,h=-O.z+O.w,i=-v.z+v.w;if(e>=0&&p>=0&&h>=0&&i>=0)return true;else if(e<0&&p<0||h<0&&i<0)return false;else{if(e<0)f=Math.max(f,e/(e-p));else if(p<0)k=Math.min(k,e/(e-p));if(h<0)f=Math.max(f,h/(h-i));else if(i<0)k=Math.min(k,h/(h-i));if(k<f)return false;else{O.lerpSelf(v,f);v.lerpSelf(O,1-k);return true}}}var b=null,d,g,j,n=[],m,l,o=[],c,F,D=[],w=new THREE.Vector4,x=new THREE.Matrix4,H=new THREE.Matrix4,G=new THREE.Vector4,K=
+new THREE.Vector4,N;this.projectScene=function(O,v){var f,k,e,p,h,i,s,r,L,A,M,Q,u,R,y,z,E;b=[];j=l=F=0;v.autoUpdateMatrix&&v.updateMatrix();x.multiply(v.projectionMatrix,v.matrix);s=O.objects;f=0;for(k=s.length;f<k;f++){r=s[f];r.autoUpdateMatrix&&r.updateMatrix();L=r.matrix;A=r.rotationMatrix;M=r.material;Q=r.overdraw;if(r instanceof THREE.Mesh){u=r.geometry.vertices;e=0;for(p=u.length;e<p;e++){R=u[e];R.positionWorld.copy(R.position);L.multiplyVector3(R.positionWorld);y=R.positionScreen;y.copy(R.positionWorld);
+x.multiplyVector4(y);y.multiplyScalar(1/y.w);R.__visible=y.z>0&&y.z<1}R=r.geometry.faces;e=0;for(p=R.length;e<p;e++){y=R[e];if(y instanceof THREE.Face3){h=u[y.a];i=u[y.b];z=u[y.c];if(h.__visible&&i.__visible&&z.__visible)if(r.doubleSided||r.flipSided!=(z.positionScreen.x-h.positionScreen.x)*(i.positionScreen.y-h.positionScreen.y)-(z.positionScreen.y-h.positionScreen.y)*(i.positionScreen.x-h.positionScreen.x)<0){d=n[j]=n[j]||new THREE.RenderableFace3;d.v1.positionWorld.copy(h.positionWorld);d.v2.positionWorld.copy(i.positionWorld);
+d.v3.positionWorld.copy(z.positionWorld);d.v1.positionScreen.copy(h.positionScreen);d.v2.positionScreen.copy(i.positionScreen);d.v3.positionScreen.copy(z.positionScreen);d.normalWorld.copy(y.normal);A.multiplyVector3(d.normalWorld);d.centroidWorld.copy(y.centroid);L.multiplyVector3(d.centroidWorld);d.centroidScreen.copy(d.centroidWorld);x.multiplyVector3(d.centroidScreen);z=y.vertexNormals;N=d.vertexNormalsWorld;h=0;for(i=z.length;h<i;h++){E=N[h]=N[h]||new THREE.Vector3;E.copy(z[h]);A.multiplyVector3(E)}d.z=
+d.centroidScreen.z;d.meshMaterial=M;d.faceMaterial=y.material;d.overdraw=Q;if(r.geometry.uvs[e]){d.uvs[0]=r.geometry.uvs[e][0];d.uvs[1]=r.geometry.uvs[e][1];d.uvs[2]=r.geometry.uvs[e][2]}b.push(d);j++}}else if(y instanceof THREE.Face4){h=u[y.a];i=u[y.b];z=u[y.c];E=u[y.d];if(h.__visible&&i.__visible&&z.__visible&&E.__visible)if(r.doubleSided||r.flipSided!=((E.positionScreen.x-h.positionScreen.x)*(i.positionScreen.y-h.positionScreen.y)-(E.positionScreen.y-h.positionScreen.y)*(i.positionScreen.x-h.positionScreen.x)<
+0||(i.positionScreen.x-z.positionScreen.x)*(E.positionScreen.y-z.positionScreen.y)-(i.positionScreen.y-z.positionScreen.y)*(E.positionScreen.x-z.positionScreen.x)<0)){d=n[j]=n[j]||new THREE.RenderableFace3;d.v1.positionWorld.copy(h.positionWorld);d.v2.positionWorld.copy(i.positionWorld);d.v3.positionWorld.copy(E.positionWorld);d.v1.positionScreen.copy(h.positionScreen);d.v2.positionScreen.copy(i.positionScreen);d.v3.positionScreen.copy(E.positionScreen);d.normalWorld.copy(y.normal);A.multiplyVector3(d.normalWorld);
+d.centroidWorld.copy(y.centroid);L.multiplyVector3(d.centroidWorld);d.centroidScreen.copy(d.centroidWorld);x.multiplyVector3(d.centroidScreen);d.z=d.centroidScreen.z;d.meshMaterial=M;d.faceMaterial=y.material;d.overdraw=Q;if(r.geometry.uvs[e]){d.uvs[0]=r.geometry.uvs[e][0];d.uvs[1]=r.geometry.uvs[e][1];d.uvs[2]=r.geometry.uvs[e][3]}b.push(d);j++;g=n[j]=n[j]||new THREE.RenderableFace3;g.v1.positionWorld.copy(i.positionWorld);g.v2.positionWorld.copy(z.positionWorld);g.v3.positionWorld.copy(E.positionWorld);
+g.v1.positionScreen.copy(i.positionScreen);g.v2.positionScreen.copy(z.positionScreen);g.v3.positionScreen.copy(E.positionScreen);g.normalWorld.copy(d.normalWorld);g.centroidWorld.copy(d.centroidWorld);g.centroidScreen.copy(d.centroidScreen);g.z=g.centroidScreen.z;g.meshMaterial=M;g.faceMaterial=y.material;g.overdraw=Q;if(r.geometry.uvs[e]){g.uvs[0]=r.geometry.uvs[e][1];g.uvs[1]=r.geometry.uvs[e][2];g.uvs[2]=r.geometry.uvs[e][3]}b.push(g);j++}}}}else if(r instanceof THREE.Line){H.multiply(x,L);u=r.geometry.vertices;
+R=u[0];R.positionScreen.copy(R.position);H.multiplyVector4(R.positionScreen);e=1;for(p=u.length;e<p;e++){h=u[e];h.positionScreen.copy(h.position);H.multiplyVector4(h.positionScreen);i=u[e-1];G.copy(h.positionScreen);K.copy(i.positionScreen);if(a(G,K)){G.multiplyScalar(1/G.w);K.multiplyScalar(1/K.w);m=o[l]=o[l]||new THREE.RenderableLine;m.v1.positionScreen.copy(G);m.v2.positionScreen.copy(K);m.z=Math.max(G.z,K.z);m.material=r.material;b.push(m);l++}}}else if(r instanceof THREE.Particle){w.set(r.position.x,
+r.position.y,r.position.z,1);x.multiplyVector4(w);w.z/=w.w;if(w.z>0&&w.z<1){c=D[F]=D[F]||new THREE.RenderableParticle;c.x=w.x/w.w;c.y=w.y/w.w;c.z=w.z;c.rotation=r.rotation.z;c.scale.x=r.scale.x*Math.abs(c.x-(w.x+v.projectionMatrix.n11)/(w.w+v.projectionMatrix.n14));c.scale.y=r.scale.y*Math.abs(c.y-(w.y+v.projectionMatrix.n22)/(w.w+v.projectionMatrix.n24));c.material=r.material;b.push(c);F++}}}b.sort(function(W,I){return I.z-W.z});return b};this.unprojectVector=function(O,v){var f=new THREE.Matrix4;
+f.multiply(THREE.Matrix4.makeInvert(v.matrix),THREE.Matrix4.makeInvert(v.projectionMatrix));f.multiplyVector3(O);return O}};
+THREE.DOMRenderer=function(){THREE.Renderer.call(this);var a=null,b=new THREE.Projector,d,g,j,n;this.domElement=document.createElement("div");this.setSize=function(m,l){d=m;g=l;j=d/2;n=g/2};this.render=function(m,l){var o,c,F,D,w,x,H,G;a=b.projectScene(m,l);o=0;for(c=a.length;o<c;o++){w=a[o];if(w instanceof THREE.RenderableParticle){H=w.x*j+j;G=w.y*n+n;F=0;for(D=w.material.length;F<D;F++){x=w.material[F];if(x instanceof THREE.ParticleDOMMaterial){x=x.domElement;x.style.left=H+"px";x.style.top=G+"px"}}}}}};
+THREE.CanvasRenderer=function(){var a=null,b=new THREE.Projector,d=document.createElement("canvas"),g,j,n,m,l=d.getContext("2d"),o=1,c=0,F=null,D=null,w=1,x=Math.min,H=Math.max,G,K,N,O,v,f,k,e,p,h=new THREE.Color,i=new THREE.Color,s=new THREE.Color,r=new THREE.Color,L=new THREE.Color,A,M,Q,u,R,y,z,E,W,I,B=new THREE.Rectangle,U=new THREE.Rectangle,X=new THREE.Rectangle,S=false,P=new THREE.Color,Z=new THREE.Color,ia=new THREE.Color,ja=new THREE.Color,La=Math.PI*2,Y=new THREE.Vector3,na,oa,Ca,ba,pa,
+va,la=16;na=document.createElement("canvas");na.width=na.height=2;oa=na.getContext("2d");oa.fillStyle="rgba(0,0,0,1)";oa.fillRect(0,0,2,2);Ca=oa.getImageData(0,0,2,2);ba=Ca.data;pa=document.createElement("canvas");pa.width=pa.height=la;va=pa.getContext("2d");va.translate(-la/2,-la/2);va.scale(la,la);la--;this.domElement=d;this.autoClear=true;this.setSize=function(fa,wa){g=fa;j=wa;n=g/2;m=j/2;d.width=g;d.height=j;B.set(-n,-m,n,m)};this.clear=function(){if(!U.isEmpty()){U.inflate(1);U.minSelf(B);l.clearRect(U.getX(),
+U.getY(),U.getWidth(),U.getHeight());U.empty()}};this.render=function(fa,wa){function Ma(q){var T,J,t,C=q.lights;Z.setRGB(0,0,0);ia.setRGB(0,0,0);ja.setRGB(0,0,0);q=0;for(T=C.length;q<T;q++){J=C[q];t=J.color;if(J instanceof THREE.AmbientLight){Z.r+=t.r;Z.g+=t.g;Z.b+=t.b}else if(J instanceof THREE.DirectionalLight){ia.r+=t.r;ia.g+=t.g;ia.b+=t.b}else if(J instanceof THREE.PointLight){ja.r+=t.r;ja.g+=t.g;ja.b+=t.b}}}function xa(q,T,J,t){var C,V,aa,ca,da=q.lights;q=0;for(C=da.length;q<C;q++){V=da[q];
+aa=V.color;ca=V.intensity;if(V instanceof THREE.DirectionalLight){V=J.dot(V.position)*ca;if(V>0){t.r+=aa.r*V;t.g+=aa.g*V;t.b+=aa.b*V}}else if(V instanceof THREE.PointLight){Y.sub(V.position,T);Y.normalize();V=J.dot(Y)*ca;if(V>0){t.r+=aa.r*V;t.g+=aa.g*V;t.b+=aa.b*V}}}}function Na(q,T,J){if(J.opacity!=0){Da(J.opacity);ya(J.blending);var t,C,V,aa,ca,da;if(J instanceof THREE.ParticleBasicMaterial){if(J.map){aa=J.map;ca=aa.width>>1;da=aa.height>>1;C=T.scale.x*n;V=T.scale.y*m;J=C*ca;t=V*da;X.set(q.x-J,
+q.y-t,q.x+J,q.y+t);if(B.instersects(X)){l.save();l.translate(q.x,q.y);l.rotate(-T.rotation);l.scale(C,-V);l.translate(-ca,-da);l.drawImage(aa,0,0);l.restore()}}}else if(J instanceof THREE.ParticleCircleMaterial){if(S){P.r=Z.r+ia.r+ja.r;P.g=Z.g+ia.g+ja.g;P.b=Z.b+ia.b+ja.b;h.r=J.color.r*P.r;h.g=J.color.g*P.g;h.b=J.color.b*P.b;h.updateStyleString()}else h.__styleString=J.color.__styleString;J=T.scale.x*n;t=T.scale.y*m;X.set(q.x-J,q.y-t,q.x+J,q.y+t);if(B.instersects(X)){C=h.__styleString;if(D!=C)l.fillStyle=
+D=C;l.save();l.translate(q.x,q.y);l.rotate(-T.rotation);l.scale(J,t);l.beginPath();l.arc(0,0,1,0,La,true);l.closePath();l.fill();l.restore()}}}}function Oa(q,T,J,t){if(t.opacity!=0){Da(t.opacity);ya(t.blending);l.beginPath();l.moveTo(q.positionScreen.x,q.positionScreen.y);l.lineTo(T.positionScreen.x,T.positionScreen.y);l.closePath();if(t instanceof THREE.LineBasicMaterial){h.__styleString=t.color.__styleString;q=t.linewidth;if(w!=q)l.lineWidth=w=q;q=h.__styleString;if(F!=q)l.strokeStyle=F=q;l.stroke();
+X.inflate(t.linewidth*2)}}}function Ha(q,T,J,t,C,V){if(C.opacity!=0){Da(C.opacity);ya(C.blending);O=q.positionScreen.x;v=q.positionScreen.y;f=T.positionScreen.x;k=T.positionScreen.y;e=J.positionScreen.x;p=J.positionScreen.y;l.beginPath();l.moveTo(O,v);l.lineTo(f,k);l.lineTo(e,p);l.lineTo(O,v);l.closePath();if(C instanceof THREE.MeshBasicMaterial)if(C.map)C.map.image.loaded&&C.map.mapping instanceof THREE.UVMapping&&qa(O,v,f,k,e,p,C.map.image,t.uvs[0].u,t.uvs[0].v,t.uvs[1].u,t.uvs[1].v,t.uvs[2].u,
+t.uvs[2].v);else if(C.env_map){if(C.env_map.image.loaded)if(C.env_map.mapping instanceof THREE.SphericalReflectionMapping){q=wa.matrix;Y.copy(t.vertexNormalsWorld[0]);R=(Y.x*q.n11+Y.y*q.n12+Y.z*q.n13)*0.5+0.5;y=-(Y.x*q.n21+Y.y*q.n22+Y.z*q.n23)*0.5+0.5;Y.copy(t.vertexNormalsWorld[1]);z=(Y.x*q.n11+Y.y*q.n12+Y.z*q.n13)*0.5+0.5;E=-(Y.x*q.n21+Y.y*q.n22+Y.z*q.n23)*0.5+0.5;Y.copy(t.vertexNormalsWorld[2]);W=(Y.x*q.n11+Y.y*q.n12+Y.z*q.n13)*0.5+0.5;I=-(Y.x*q.n21+Y.y*q.n22+Y.z*q.n23)*0.5+0.5;qa(O,v,f,k,e,p,
+C.env_map.image,R,y,z,E,W,I)}}else C.wireframe?za(C.color.__styleString,C.wireframe_linewidth):Aa(C.color.__styleString);else if(C instanceof THREE.MeshLambertMaterial){if(C.map&&!C.wireframe){C.map.mapping instanceof THREE.UVMapping&&qa(O,v,f,k,e,p,C.map.image,t.uvs[0].u,t.uvs[0].v,t.uvs[1].u,t.uvs[1].v,t.uvs[2].u,t.uvs[2].v);ya(THREE.SubtractiveBlending)}if(S)if(!C.wireframe&&C.shading==THREE.SmoothShading&&t.vertexNormalsWorld.length==3){i.r=s.r=r.r=Z.r;i.g=s.g=r.g=Z.g;i.b=s.b=r.b=Z.b;xa(V,t.v1.positionWorld,
+t.vertexNormalsWorld[0],i);xa(V,t.v2.positionWorld,t.vertexNormalsWorld[1],s);xa(V,t.v3.positionWorld,t.vertexNormalsWorld[2],r);L.r=(s.r+r.r)*0.5;L.g=(s.g+r.g)*0.5;L.b=(s.b+r.b)*0.5;u=Ia(i,s,r,L);qa(O,v,f,k,e,p,u,0,0,1,0,0,1)}else{P.r=Z.r;P.g=Z.g;P.b=Z.b;xa(V,t.centroidWorld,t.normalWorld,P);h.r=C.color.r*P.r;h.g=C.color.g*P.g;h.b=C.color.b*P.b;h.updateStyleString();C.wireframe?za(h.__styleString,C.wireframe_linewidth):Aa(h.__styleString)}else C.wireframe?za(C.color.__styleString,C.wireframe_linewidth):
+Aa(C.color.__styleString)}else if(C instanceof THREE.MeshDepthMaterial){A=C.__2near;M=C.__farPlusNear;Q=C.__farMinusNear;i.r=i.g=i.b=1-A/(M-q.positionScreen.z*Q);s.r=s.g=s.b=1-A/(M-T.positionScreen.z*Q);r.r=r.g=r.b=1-A/(M-J.positionScreen.z*Q);L.r=(s.r+r.r)*0.5;L.g=(s.g+r.g)*0.5;L.b=(s.b+r.b)*0.5;u=Ia(i,s,r,L);qa(O,v,f,k,e,p,u,0,0,1,0,0,1)}else if(C instanceof THREE.MeshNormalMaterial){h.r=Ea(t.normalWorld.x);h.g=Ea(t.normalWorld.y);h.b=Ea(t.normalWorld.z);h.updateStyleString();C.wireframe?za(h.__styleString,
+C.wireframe_linewidth):Aa(h.__styleString)}}}function za(q,T){if(F!=q)l.strokeStyle=F=q;if(w!=T)l.lineWidth=w=T;l.stroke();X.inflate(T*2)}function Aa(q){if(D!=q)l.fillStyle=D=q;l.fill()}function qa(q,T,J,t,C,V,aa,ca,da,ra,ha,sa,ta){var ka,ga;ka=aa.width-1;ga=aa.height-1;ca*=ka;da*=ga;ra*=ka;ha*=ga;sa*=ka;ta*=ga;J-=q;t-=T;C-=q;V-=T;ra-=ca;ha-=da;sa-=ca;ta-=da;ga=1/(ra*ta-sa*ha);ka=(ta*J-ha*C)*ga;ha=(ta*t-ha*V)*ga;J=(ra*C-sa*J)*ga;t=(ra*V-sa*t)*ga;q=q-ka*ca-J*da;T=T-ha*ca-t*da;l.save();l.transform(ka,
+ha,J,t,q,T);l.clip();l.drawImage(aa,0,0);l.restore()}function Da(q){if(o!=q)l.globalAlpha=o=q}function ya(q){if(c!=q){switch(q){case THREE.NormalBlending:l.globalCompositeOperation="source-over";break;case THREE.AdditiveBlending:l.globalCompositeOperation="lighter";break;case THREE.SubtractiveBlending:l.globalCompositeOperation="darker"}c=q}}function Ia(q,T,J,t){ba[0]=H(0,x(255,~~(q.r*255)));ba[1]=H(0,x(255,~~(q.g*255)));ba[2]=H(0,x(255,~~(q.b*255)));ba[4]=H(0,x(255,~~(T.r*255)));ba[5]=H(0,x(255,
+~~(T.g*255)));ba[6]=H(0,x(255,~~(T.b*255)));ba[8]=H(0,x(255,~~(J.r*255)));ba[9]=H(0,x(255,~~(J.g*255)));ba[10]=H(0,x(255,~~(J.b*255)));ba[12]=H(0,x(255,~~(t.r*255)));ba[13]=H(0,x(255,~~(t.g*255)));ba[14]=H(0,x(255,~~(t.b*255)));oa.putImageData(Ca,0,0);va.drawImage(na,0,0);return pa}function Ea(q){return q<0?x((1+q)*0.5,0.5):0.5+x(q*0.5,0.5)}function Fa(q,T){var J=T.x-q.x,t=T.y-q.y,C=1/Math.sqrt(J*J+t*t);J*=C;t*=C;T.x+=J;T.y+=t;q.x-=J;q.y-=t}var Ba,Ja,$,ea,ma,Ga,Ka,ua;l.setTransform(1,0,0,-1,n,m);
+this.autoClear&&this.clear();a=b.projectScene(fa,wa);(S=fa.lights.length>0)&&Ma(fa);Ba=0;for(Ja=a.length;Ba<Ja;Ba++){$=a[Ba];X.empty();if($ instanceof THREE.RenderableParticle){G=$;G.x*=n;G.y*=m;ea=0;for(ma=$.material.length;ea<ma;ea++)Na(G,$,$.material[ea],fa)}else if($ instanceof THREE.RenderableLine){G=$.v1;K=$.v2;G.positionScreen.x*=n;G.positionScreen.y*=m;K.positionScreen.x*=n;K.positionScreen.y*=m;X.addPoint(G.positionScreen.x,G.positionScreen.y);X.addPoint(K.positionScreen.x,K.positionScreen.y);
+if(B.instersects(X)){ea=0;for(ma=$.material.length;ea<ma;)Oa(G,K,$,$.material[ea++],fa)}}else if($ instanceof THREE.RenderableFace3){G=$.v1;K=$.v2;N=$.v3;G.positionScreen.x*=n;G.positionScreen.y*=m;K.positionScreen.x*=n;K.positionScreen.y*=m;N.positionScreen.x*=n;N.positionScreen.y*=m;if($.overdraw){Fa(G.positionScreen,K.positionScreen);Fa(K.positionScreen,N.positionScreen);Fa(N.positionScreen,G.positionScreen)}X.addPoint(G.positionScreen.x,G.positionScreen.y);X.addPoint(K.positionScreen.x,K.positionScreen.y);
+X.addPoint(N.positionScreen.x,N.positionScreen.y);if(B.instersects(X)){ea=0;for(ma=$.meshMaterial.length;ea<ma;){ua=$.meshMaterial[ea++];if(ua instanceof THREE.MeshFaceMaterial){Ga=0;for(Ka=$.faceMaterial.length;Ga<Ka;)(ua=$.faceMaterial[Ga++])&&Ha(G,K,N,$,ua,fa)}else Ha(G,K,N,$,ua,fa)}}}U.addRectangle(X)}l.setTransform(1,0,0,1,0,0)}};
+THREE.SVGRenderer=function(){function a(y,z,E){var W,I,B,U;W=0;for(I=y.lights.length;W<I;W++){B=y.lights[W];if(B instanceof THREE.DirectionalLight){U=z.normalWorld.dot(B.position)*B.intensity;if(U>0){E.r+=B.color.r*U;E.g+=B.color.g*U;E.b+=B.color.b*U}}else if(B instanceof THREE.PointLight){i.sub(B.position,z.centroidWorld);i.normalize();U=z.normalWorld.dot(i)*B.intensity;if(U>0){E.r+=B.color.r*U;E.g+=B.color.g*U;E.b+=B.color.b*U}}}}function b(y,z,E,W,I,B){A=g(M++);A.setAttribute("d","M "+y.positionScreen.x+
+" "+y.positionScreen.y+" L "+z.positionScreen.x+" "+z.positionScreen.y+" L "+E.positionScreen.x+","+E.positionScreen.y+"z");if(I instanceof THREE.MeshBasicMaterial)v.__styleString=I.color.__styleString;else if(I instanceof THREE.MeshLambertMaterial)if(O){f.r=k.r;f.g=k.g;f.b=k.b;a(B,W,f);v.r=I.color.r*f.r;v.g=I.color.g*f.g;v.b=I.color.b*f.b;v.updateStyleString()}else v.__styleString=I.color.__styleString;else if(I instanceof THREE.MeshDepthMaterial){h=1-I.__2near/(I.__farPlusNear-W.z*I.__farMinusNear);
+v.setRGB(h,h,h)}else I instanceof THREE.MeshNormalMaterial&&v.setRGB(j(W.normalWorld.x),j(W.normalWorld.y),j(W.normalWorld.z));I.wireframe?A.setAttribute("style","fill: none; stroke: "+v.__styleString+"; stroke-width: "+I.wireframe_linewidth+"; stroke-opacity: "+I.opacity+"; stroke-linecap: "+I.wireframe_linecap+"; stroke-linejoin: "+I.wireframe_linejoin):A.setAttribute("style","fill: "+v.__styleString+"; fill-opacity: "+I.opacity);l.appendChild(A)}function d(y,z,E,W,I,B,U){A=g(M++);A.setAttribute("d",
+"M "+y.positionScreen.x+" "+y.positionScreen.y+" L "+z.positionScreen.x+" "+z.positionScreen.y+" L "+E.positionScreen.x+","+E.positionScreen.y+" L "+W.positionScreen.x+","+W.positionScreen.y+"z");if(B instanceof THREE.MeshBasicMaterial)v.__styleString=B.color.__styleString;else if(B instanceof THREE.MeshLambertMaterial)if(O){f.r=k.r;f.g=k.g;f.b=k.b;a(U,I,f);v.r=B.color.r*f.r;v.g=B.color.g*f.g;v.b=B.color.b*f.b;v.updateStyleString()}else v.__styleString=B.color.__styleString;else if(B instanceof THREE.MeshDepthMaterial){h=
+1-B.__2near/(B.__farPlusNear-I.z*B.__farMinusNear);v.setRGB(h,h,h)}else B instanceof THREE.MeshNormalMaterial&&v.setRGB(j(I.normalWorld.x),j(I.normalWorld.y),j(I.normalWorld.z));B.wireframe?A.setAttribute("style","fill: none; stroke: "+v.__styleString+"; stroke-width: "+B.wireframe_linewidth+"; stroke-opacity: "+B.opacity+"; stroke-linecap: "+B.wireframe_linecap+"; stroke-linejoin: "+B.wireframe_linejoin):A.setAttribute("style","fill: "+v.__styleString+"; fill-opacity: "+B.opacity);l.appendChild(A)}
+function g(y){if(s[y]==null){s[y]=document.createElementNS("http://www.w3.org/2000/svg","path");R==0&&s[y].setAttribute("shape-rendering","crispEdges");return s[y]}return s[y]}function j(y){return y<0?Math.min((1+y)*0.5,0.5):0.5+Math.min(y*0.5,0.5)}var n=null,m=new THREE.Projector,l=document.createElementNS("http://www.w3.org/2000/svg","svg"),o,c,F,D,w,x,H,G,K=new THREE.Rectangle,N=new THREE.Rectangle,O=false,v=new THREE.Color(16777215),f=new THREE.Color(16777215),k=new THREE.Color(0),e=new THREE.Color(0),
+p=new THREE.Color(0),h,i=new THREE.Vector3,s=[],r=[],L=[],A,M,Q,u,R=1;this.domElement=l;this.autoClear=true;this.setQuality=function(y){switch(y){case "high":R=1;break;case "low":R=0}};this.setSize=function(y,z){o=y;c=z;F=o/2;D=c/2;l.setAttribute("viewBox",-F+" "+-D+" "+o+" "+c);l.setAttribute("width",o);l.setAttribute("height",c);K.set(-F,-D,F,D)};this.clear=function(){for(;l.childNodes.length>0;)l.removeChild(l.childNodes[0])};this.render=function(y,z){var E,W,I,B,U,X,S,P;this.autoClear&&this.clear();
+n=m.projectScene(y,z);u=Q=M=0;if(O=y.lights.length>0){S=y.lights;k.setRGB(0,0,0);e.setRGB(0,0,0);p.setRGB(0,0,0);E=0;for(W=S.length;E<W;E++){I=S[E];B=I.color;if(I instanceof THREE.AmbientLight){k.r+=B.r;k.g+=B.g;k.b+=B.b}else if(I instanceof THREE.DirectionalLight){e.r+=B.r;e.g+=B.g;e.b+=B.b}else if(I instanceof THREE.PointLight){p.r+=B.r;p.g+=B.g;p.b+=B.b}}}E=0;for(W=n.length;E<W;E++){S=n[E];N.empty();if(S instanceof THREE.RenderableParticle){w=S;w.x*=F;w.y*=-D;I=0;for(B=S.material.length;I<B;I++)if(P=
+S.material[I]){U=w;X=S;P=P;var Z=Q++;if(r[Z]==null){r[Z]=document.createElementNS("http://www.w3.org/2000/svg","circle");R==0&&r[Z].setAttribute("shape-rendering","crispEdges")}A=r[Z];A.setAttribute("cx",U.x);A.setAttribute("cy",U.y);A.setAttribute("r",X.scale.x*F);if(P instanceof THREE.ParticleCircleMaterial){if(O){f.r=k.r+e.r+p.r;f.g=k.g+e.g+p.g;f.b=k.b+e.b+p.b;v.r=P.color.r*f.r;v.g=P.color.g*f.g;v.b=P.color.b*f.b;v.updateStyleString()}else v=P.color;A.setAttribute("style","fill: "+v.__styleString)}l.appendChild(A)}}else if(S instanceof
+THREE.RenderableLine){w=S.v1;x=S.v2;w.positionScreen.x*=F;w.positionScreen.y*=-D;x.positionScreen.x*=F;x.positionScreen.y*=-D;N.addPoint(w.positionScreen.x,w.positionScreen.y);N.addPoint(x.positionScreen.x,x.positionScreen.y);if(K.instersects(N)){I=0;for(B=S.material.length;I<B;)if(P=S.material[I++]){U=w;X=x;P=P;Z=u++;if(L[Z]==null){L[Z]=document.createElementNS("http://www.w3.org/2000/svg","line");R==0&&L[Z].setAttribute("shape-rendering","crispEdges")}A=L[Z];A.setAttribute("x1",U.positionScreen.x);
+A.setAttribute("y1",U.positionScreen.y);A.setAttribute("x2",X.positionScreen.x);A.setAttribute("y2",X.positionScreen.y);if(P instanceof THREE.LineBasicMaterial){v.__styleString=P.color.__styleString;A.setAttribute("style","fill: none; stroke: "+v.__styleString+"; stroke-width: "+P.linewidth+"; stroke-opacity: "+P.opacity+"; stroke-linecap: "+P.linecap+"; stroke-linejoin: "+P.linejoin);l.appendChild(A)}}}}else if(S instanceof THREE.RenderableFace3){w=S.v1;x=S.v2;H=S.v3;w.positionScreen.x*=F;w.positionScreen.y*=
+-D;x.positionScreen.x*=F;x.positionScreen.y*=-D;H.positionScreen.x*=F;H.positionScreen.y*=-D;N.addPoint(w.positionScreen.x,w.positionScreen.y);N.addPoint(x.positionScreen.x,x.positionScreen.y);N.addPoint(H.positionScreen.x,H.positionScreen.y);if(K.instersects(N)){I=0;for(B=S.meshMaterial.length;I<B;){P=S.meshMaterial[I++];if(P instanceof THREE.MeshFaceMaterial){U=0;for(X=S.faceMaterial.length;U<X;)(P=S.faceMaterial[U++])&&b(w,x,H,S,P,y)}else P&&b(w,x,H,S,P,y)}}}else if(S instanceof THREE.RenderableFace4){w=
+S.v1;x=S.v2;H=S.v3;G=S.v4;w.positionScreen.x*=F;w.positionScreen.y*=-D;x.positionScreen.x*=F;x.positionScreen.y*=-D;H.positionScreen.x*=F;H.positionScreen.y*=-D;G.positionScreen.x*=F;G.positionScreen.y*=-D;N.addPoint(w.positionScreen.x,w.positionScreen.y);N.addPoint(x.positionScreen.x,x.positionScreen.y);N.addPoint(H.positionScreen.x,H.positionScreen.y);N.addPoint(G.positionScreen.x,G.positionScreen.y);if(K.instersects(N)){I=0;for(B=S.meshMaterial.length;I<B;){P=S.meshMaterial[I++];if(P instanceof
+THREE.MeshFaceMaterial){U=0;for(X=S.faceMaterial.length;U<X;)(P=S.faceMaterial[U++])&&d(w,x,H,G,S,P,y)}else P&&d(w,x,H,G,S,P,y)}}}}}};
 THREE.WebGLRenderer=function(a){function b(f,k){var e=c.createProgram();c.attachShader(e,m("fragment","#ifdef GL_ES\nprecision highp float;\n#endif\n"+f));c.attachShader(e,m("vertex","uniform mat4 objectMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform vec3 cameraPosition;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\n"+k));c.linkProgram(e);c.getProgramParameter(e,c.LINK_STATUS)||alert("Could not initialise shaders\nVALIDATE_STATUS: "+c.getProgramParameter(e,
-c.VALIDATE_STATUS)+", gl error ["+c.getError()+"]");e.uniforms={};e.attributes={};return e}function d(f,k){if(f instanceof THREE.TextureCube&&f.image.length==6){if(!f.image.__webGLTextureCube&&!f.image.__cubeMapInitialized&&f.image.loadCount==6){f.image.__webGLTextureCube=c.createTexture();c.bindTexture(c.TEXTURE_CUBE_MAP,f.image.__webGLTextureCube);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_CUBE_MAP,
-c.TEXTURE_MAG_FILTER,c.LINEAR);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_MIN_FILTER,c.LINEAR_MIPMAP_LINEAR);for(var e=0;e<6;++e)c.texImage2D(c.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,f.image[e]);c.generateMipmap(c.TEXTURE_CUBE_MAP);c.bindTexture(c.TEXTURE_CUBE_MAP,null);f.image.__cubeMapInitialized=true}c.activeTexture(c.TEXTURE0+k);c.bindTexture(c.TEXTURE_CUBE_MAP,f.image.__webGLTextureCube)}}function g(f,k){if(!f.__webGLTexture&&f.image.loaded){f.__webGLTexture=c.createTexture();
-c.bindTexture(c.TEXTURE_2D,f.__webGLTexture);c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,f.image);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,p(f.wrap_s));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,p(f.wrap_t));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,c.LINEAR);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,c.LINEAR_MIPMAP_LINEAR);c.generateMipmap(c.TEXTURE_2D);c.bindTexture(c.TEXTURE_2D,null)}c.activeTexture(c.TEXTURE0+k);c.bindTexture(c.TEXTURE_2D,f.__webGLTexture)}
-function j(f,k){var e,n,i;e=0;for(n=k.length;e<n;e++){i=k[e];f.uniforms[i]=c.getUniformLocation(f,i)}}function o(f,k){var e,n,i;e=0;for(n=k.length;e<n;e++){i=k[e];f.attributes[i]=c.getAttribLocation(f,i);f.attributes[i]>=0&&c.enableVertexAttribArray(f.attributes[i])}}function m(f,k){var e;if(f=="fragment")e=c.createShader(c.FRAGMENT_SHADER);else if(f=="vertex")e=c.createShader(c.VERTEX_SHADER);c.shaderSource(e,k);c.compileShader(e);if(!c.getShaderParameter(e,c.COMPILE_STATUS)){alert(c.getShaderInfoLog(e));
-return null}return e}function p(f){switch(f){case THREE.Repeat:return c.REPEAT;case THREE.ClampToEdge:return c.CLAMP_TO_EDGE;case THREE.MirroredRepeat:return c.MIRRORED_REPEAT}return 0}var l=document.createElement("canvas"),c,E,G,w=new THREE.Matrix4,F,O=new Float32Array(16),J=new Float32Array(16),M=new Float32Array(16),r=new Float32Array(9),S=new Float32Array(16);a=function(f,k){if(f){var e,n,i,h=pointLights=maxDirLights=maxPointLights=0;e=0;for(n=f.lights.length;e<n;e++){i=f.lights[e];i instanceof
-THREE.DirectionalLight&&h++;i instanceof THREE.PointLight&&pointLights++}if(pointLights+h<=k){maxDirLights=h;maxPointLights=pointLights}else{maxDirLights=Math.ceil(k*h/(pointLights+h));maxPointLights=k-maxDirLights}return{directional:maxDirLights,point:maxPointLights}}return{directional:1,point:k-1}}(a,4);this.domElement=l;this.autoClear=true;try{c=l.getContext("experimental-webgl",{antialias:true})}catch(z){}if(!c){alert("WebGL not supported");throw"cannot create webgl context";}c.clearColor(0,0,
-0,1);c.clearDepth(1);c.enable(c.DEPTH_TEST);c.depthFunc(c.LEQUAL);c.frontFace(c.CCW);c.cullFace(c.BACK);c.enable(c.CULL_FACE);c.enable(c.BLEND);c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA);c.clearColor(0,0,0,0);E=G=function(f,k){var e=[f?"#define MAX_DIR_LIGHTS "+f:"",k?"#define MAX_POINT_LIGHTS "+k:"","uniform bool enableLighting;\nuniform bool useRefract;\nuniform int pointLightNumber;\nuniform int directionalLightNumber;\nuniform vec3 ambientLightColor;",f?"uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];":
-"",f?"uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];":"",k?"uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];":"",k?"uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];":"","uniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nvarying vec3 vNormal;\nvarying vec2 vUv;\nvarying vec3 vLightWeighting;",k?"varying vec3 vPointLightVector[ MAX_POINT_LIGHTS ];":"","varying vec3 vViewPosition;\nvarying vec3 vReflect;\nuniform float mRefractionRatio;\nvoid main(void) {\nvec4 mPosition = objectMatrix * vec4( position, 1.0 );\nvViewPosition = cameraPosition - mPosition.xyz;\nvec3 nWorld = mat3( objectMatrix[0].xyz, objectMatrix[1].xyz, objectMatrix[2].xyz ) * normal;\nvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\nvec3 transformedNormal = normalize( normalMatrix * normal );\nif ( !enableLighting ) {\nvLightWeighting = vec3( 1.0, 1.0, 1.0 );\n} else {\nvLightWeighting = ambientLightColor;",
+c.VALIDATE_STATUS)+", gl error ["+c.getError()+"]");e.uniforms={};e.attributes={};return e}function d(f,k){if(f.image.length==6){if(!f.image.__webGLTextureCube&&!f.image.__cubeMapInitialized&&f.image.loadCount==6){f.image.__webGLTextureCube=c.createTexture();c.bindTexture(c.TEXTURE_CUBE_MAP,f.image.__webGLTextureCube);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_MAG_FILTER,
+c.LINEAR);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_MIN_FILTER,c.LINEAR_MIPMAP_LINEAR);for(var e=0;e<6;++e)c.texImage2D(c.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,f.image[e]);c.generateMipmap(c.TEXTURE_CUBE_MAP);c.bindTexture(c.TEXTURE_CUBE_MAP,null);f.image.__cubeMapInitialized=true}c.activeTexture(c.TEXTURE0+k);c.bindTexture(c.TEXTURE_CUBE_MAP,f.image.__webGLTextureCube)}}function g(f,k){if(!f.__webGLTexture&&f.image.loaded){f.__webGLTexture=c.createTexture();c.bindTexture(c.TEXTURE_2D,
+f.__webGLTexture);c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,f.image);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,l(f.wrap_s));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,l(f.wrap_t));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,l(f.mag_filter));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,l(f.min_filter));c.generateMipmap(c.TEXTURE_2D);c.bindTexture(c.TEXTURE_2D,null)}c.activeTexture(c.TEXTURE0+k);c.bindTexture(c.TEXTURE_2D,f.__webGLTexture)}function j(f,k){var e,p,h;
+e=0;for(p=k.length;e<p;e++){h=k[e];f.uniforms[h]=c.getUniformLocation(f,h)}}function n(f,k){var e,p,h;e=0;for(p=k.length;e<p;e++){h=k[e];f.attributes[h]=c.getAttribLocation(f,h);f.attributes[h]>=0&&c.enableVertexAttribArray(f.attributes[h])}}function m(f,k){var e;if(f=="fragment")e=c.createShader(c.FRAGMENT_SHADER);else if(f=="vertex")e=c.createShader(c.VERTEX_SHADER);c.shaderSource(e,k);c.compileShader(e);if(!c.getShaderParameter(e,c.COMPILE_STATUS)){alert(c.getShaderInfoLog(e));return null}return e}
+function l(f){switch(f){case THREE.RepeatWrapping:return c.REPEAT;case THREE.ClampToEdgeWrapping:return c.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return c.MIRRORED_REPEAT;case THREE.NearestFilter:return c.NEAREST;case THREE.NearestMipMapNearestFilter:return c.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return c.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return c.LINEAR;case THREE.LinearMipMapNearestFilter:return c.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return c.LINEAR_MIPMAP_LINEAR}return 0}
+var o=document.createElement("canvas"),c,F,D,w=new THREE.Matrix4,x,H=new Float32Array(16),G=new Float32Array(16),K=new Float32Array(16),N=new Float32Array(9),O=new Float32Array(16);a=function(f,k){if(f){var e,p,h,i=pointLights=maxDirLights=maxPointLights=0;e=0;for(p=f.lights.length;e<p;e++){h=f.lights[e];h instanceof THREE.DirectionalLight&&i++;h instanceof THREE.PointLight&&pointLights++}if(pointLights+i<=k){maxDirLights=i;maxPointLights=pointLights}else{maxDirLights=Math.ceil(k*i/(pointLights+i));
+maxPointLights=k-maxDirLights}return{directional:maxDirLights,point:maxPointLights}}return{directional:1,point:k-1}}(a,4);this.domElement=o;this.autoClear=true;try{c=o.getContext("experimental-webgl",{antialias:true})}catch(v){}if(!c){alert("WebGL not supported");throw"cannot create webgl context";}c.clearColor(0,0,0,1);c.clearDepth(1);c.enable(c.DEPTH_TEST);c.depthFunc(c.LEQUAL);c.frontFace(c.CCW);c.cullFace(c.BACK);c.enable(c.CULL_FACE);c.enable(c.BLEND);c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA);
+c.clearColor(0,0,0,0);F=D=function(f,k){var e=[f?"#define MAX_DIR_LIGHTS "+f:"",k?"#define MAX_POINT_LIGHTS "+k:"","uniform bool enableLighting;\nuniform bool useRefract;\nuniform int pointLightNumber;\nuniform int directionalLightNumber;\nuniform vec3 ambientLightColor;",f?"uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];":"",f?"uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];":"",k?"uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];":"",k?"uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];":
+"","uniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nvarying vec3 vNormal;\nvarying vec2 vUv;\nvarying vec3 vLightWeighting;",k?"varying vec3 vPointLightVector[ MAX_POINT_LIGHTS ];":"","varying vec3 vViewPosition;\nvarying vec3 vReflect;\nuniform float mRefractionRatio;\nvoid main(void) {\nvec4 mPosition = objectMatrix * vec4( position, 1.0 );\nvViewPosition = cameraPosition - mPosition.xyz;\nvec3 nWorld = mat3( objectMatrix[0].xyz, objectMatrix[1].xyz, objectMatrix[2].xyz ) * normal;\nvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\nvec3 transformedNormal = normalize( normalMatrix * normal );\nif ( !enableLighting ) {\nvLightWeighting = vec3( 1.0, 1.0, 1.0 );\n} else {\nvLightWeighting = ambientLightColor;",
 f?"for( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {":"",f?"vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );":"",f?"float directionalLightWeighting = max( dot( transformedNormal, normalize(lDirection.xyz ) ), 0.0 );":"",f?"vLightWeighting += directionalLightColor[ i ] * directionalLightWeighting;":"",f?"}":"",k?"for( int i = 0; i < MAX_POINT_LIGHTS; i++ ) {":"",k?"vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );":"",k?"vPointLightVector[ i ] = normalize( lPosition.xyz - mvPosition.xyz );":
 "",k?"float pointLightWeighting = max( dot( transformedNormal, vPointLightVector[ i ] ), 0.0 );":"",k?"vLightWeighting += pointLightColor[ i ] * pointLightWeighting;":"",k?"}":"","}\nvNormal = transformedNormal;\nvUv = uv;\nif ( useRefract ) {\nvReflect = refract( normalize(mPosition.xyz - cameraPosition), normalize(nWorld.xyz), mRefractionRatio );\n} else {\nvReflect = reflect( normalize(mPosition.xyz - cameraPosition), normalize(nWorld.xyz) );\n}\ngl_Position = projectionMatrix * mvPosition;\n}"].join("\n"),
-n=[f?"#define MAX_DIR_LIGHTS "+f:"",k?"#define MAX_POINT_LIGHTS "+k:"","uniform int material;\nuniform bool enableMap;\nuniform bool enableCubeMap;\nuniform bool mixEnvMap;\nuniform samplerCube tCube;\nuniform float mReflectivity;\nuniform sampler2D tMap;\nuniform vec4 mColor;\nuniform float mOpacity;\nuniform vec4 mAmbient;\nuniform vec4 mSpecular;\nuniform float mShininess;\nuniform float m2Near;\nuniform float mFarPlusNear;\nuniform float mFarMinusNear;\nuniform int pointLightNumber;\nuniform int directionalLightNumber;",
+p=[f?"#define MAX_DIR_LIGHTS "+f:"",k?"#define MAX_POINT_LIGHTS "+k:"","uniform int material;\nuniform bool enableMap;\nuniform bool enableCubeMap;\nuniform bool mixEnvMap;\nuniform samplerCube tCube;\nuniform float mReflectivity;\nuniform sampler2D tMap;\nuniform vec4 mColor;\nuniform float mOpacity;\nuniform vec4 mAmbient;\nuniform vec4 mSpecular;\nuniform float mShininess;\nuniform float m2Near;\nuniform float mFarPlusNear;\nuniform float mFarMinusNear;\nuniform int pointLightNumber;\nuniform int directionalLightNumber;",
 f?"uniform mat4 viewMatrix;":"",f?"uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];":"","varying vec3 vNormal;\nvarying vec2 vUv;\nvarying vec3 vLightWeighting;",k?"varying vec3 vPointLightVector[ MAX_POINT_LIGHTS ];":"","varying vec3 vViewPosition;\nvarying vec3 vReflect;\nuniform vec3 cameraPosition;\nvoid main() {\nvec4 mapColor = vec4( 1.0, 1.0, 1.0, 1.0 );\nvec4 cubeColor = vec4( 1.0, 1.0, 1.0, 1.0 );\nif ( enableMap ) {\nmapColor = texture2D( tMap, vUv );\n}\nif ( enableCubeMap ) {\ncubeColor = textureCube( tCube, vec3( -vReflect.x, vReflect.yz ) );\n}\nif ( material == 5 ) { \nvec3 wPos = cameraPosition - vViewPosition;\ngl_FragColor = textureCube( tCube, vec3( -wPos.x, wPos.yz ) );\n} else if ( material == 4 ) { \ngl_FragColor = vec4( 0.5*normalize( vNormal ) + vec3(0.5, 0.5, 0.5), mOpacity );\n} else if ( material == 3 ) { \nfloat w = 0.5;\ngl_FragColor = vec4( w, w, w, mOpacity );\n} else if ( material == 2 ) { \nvec3 normal = normalize( vNormal );\nvec3 viewPosition = normalize( vViewPosition );",
 k?"vec4 pointDiffuse  = vec4( 0.0, 0.0, 0.0, 0.0 );":"",k?"vec4 pointSpecular = vec4( 0.0, 0.0, 0.0, 0.0 );":"",k?"for( int i = 0; i < MAX_POINT_LIGHTS; i++ ) {":"",k?"vec3 pointVector = normalize( vPointLightVector[ i ] );":"",k?"vec3 pointHalfVector = normalize( vPointLightVector[ i ] + vViewPosition );":"",k?"float pointDotNormalHalf = dot( normal, pointHalfVector );":"",k?"float pointDiffuseWeight = max( dot( normal, pointVector ), 0.0 );":"",k?"float pointSpecularWeight = 0.0;":"",k?"if ( pointDotNormalHalf >= 0.0 )":
 "",k?"pointSpecularWeight = pow( pointDotNormalHalf, mShininess );":"",k?"pointDiffuse  += mColor * pointDiffuseWeight;":"",k?"pointSpecular += mSpecular * pointSpecularWeight;":"",k?"}":"",f?"vec4 dirDiffuse  = vec4( 0.0, 0.0, 0.0, 0.0 );":"",f?"vec4 dirSpecular = vec4( 0.0, 0.0, 0.0, 0.0 );":"",f?"for( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {":"",f?"vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );":"",f?"vec3 dirVector = normalize( lDirection.xyz );":"",f?"vec3 dirHalfVector = normalize( lDirection.xyz + vViewPosition );":
 "",f?"float dirDotNormalHalf = dot( normal, dirHalfVector );":"",f?"float dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );":"",f?"float dirSpecularWeight = 0.0;":"",f?"if ( dirDotNormalHalf >= 0.0 )":"",f?"dirSpecularWeight = pow( dirDotNormalHalf, mShininess );":"",f?"dirDiffuse  += mColor * dirDiffuseWeight;":"",f?"dirSpecular += mSpecular * dirSpecularWeight;":"",f?"}":"","vec4 totalLight = mAmbient;",f?"totalLight += dirDiffuse + dirSpecular;":"",k?"totalLight += pointDiffuse + pointSpecular;":
 "","if ( mixEnvMap ) {\ngl_FragColor = vec4( mix( mapColor.rgb * totalLight.xyz * vLightWeighting, cubeColor.rgb, mReflectivity ), mapColor.a );\n} else {\ngl_FragColor = vec4( mapColor.rgb * cubeColor.rgb * totalLight.xyz * vLightWeighting, mapColor.a );\n}\n} else if ( material == 1 ) {\nif ( mixEnvMap ) {\ngl_FragColor = vec4( mix( mColor.rgb * mapColor.rgb * vLightWeighting, cubeColor.rgb, mReflectivity ), mColor.a * mapColor.a );\n} else {\ngl_FragColor = vec4( mColor.rgb * mapColor.rgb * cubeColor.rgb * vLightWeighting, mColor.a * mapColor.a );\n}\n} else {\nif ( mixEnvMap ) {\ngl_FragColor = mix( mColor * mapColor, cubeColor, mReflectivity );\n} else {\ngl_FragColor = mColor * mapColor * cubeColor;\n}\n}\n}"].join("\n");
-e=b(n,e);c.useProgram(e);j(e,["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition","enableLighting","ambientLightColor","material","mColor","mAmbient","mSpecular","mShininess","mOpacity","enableMap","tMap","enableCubeMap","tCube","mixEnvMap","mReflectivity","mRefractionRatio","useRefract","m2Near","mFarPlusNear","mFarMinusNear"]);f&&j(e,["directionalLightNumber","directionalLightColor","directionalLightDirection"]);k&&j(e,["pointLightNumber","pointLightColor",
-"pointLightPosition"]);c.uniform1i(e.uniforms.enableMap,0);c.uniform1i(e.uniforms.tMap,0);c.uniform1i(e.uniforms.enableCubeMap,0);c.uniform1i(e.uniforms.tCube,1);c.uniform1i(e.uniforms.mixEnvMap,0);c.uniform1i(e.uniforms.useRefract,0);o(e,["position","normal","uv"]);return e}(a.directional,a.point);this.setSize=function(f,k){l.width=f;l.height=k;c.viewport(0,0,l.width,l.height)};this.clear=function(){c.clear(c.COLOR_BUFFER_BIT|c.DEPTH_BUFFER_BIT)};this.setupLights=function(f,k){var e,n,i,h,q,t=[],
-K=[],A=[];h=[];q=[];c.uniform1i(f.uniforms.enableLighting,k.length);e=0;for(n=k.length;e<n;e++){i=k[e];if(i instanceof THREE.AmbientLight)t.push(i);else if(i instanceof THREE.DirectionalLight)A.push(i);else i instanceof THREE.PointLight&&K.push(i)}e=i=h=q=0;for(n=t.length;e<n;e++){i+=t[e].color.r;h+=t[e].color.g;q+=t[e].color.b}c.uniform3f(f.uniforms.ambientLightColor,i,h,q);h=[];q=[];e=0;for(n=A.length;e<n;e++){i=A[e];h.push(i.color.r*i.intensity);h.push(i.color.g*i.intensity);h.push(i.color.b*i.intensity);
-q.push(i.position.x);q.push(i.position.y);q.push(i.position.z)}if(A.length){c.uniform1i(f.uniforms.directionalLightNumber,A.length);c.uniform3fv(f.uniforms.directionalLightDirection,q);c.uniform3fv(f.uniforms.directionalLightColor,h)}h=[];q=[];e=0;for(n=K.length;e<n;e++){i=K[e];h.push(i.color.r*i.intensity);h.push(i.color.g*i.intensity);h.push(i.color.b*i.intensity);q.push(i.position.x);q.push(i.position.y);q.push(i.position.z)}if(K.length){c.uniform1i(f.uniforms.pointLightNumber,K.length);c.uniform3fv(f.uniforms.pointLightPosition,
-q);c.uniform3fv(f.uniforms.pointLightColor,h)}};this.createBuffers=function(f,k){var e,n,i,h,q,t,K,A,H=[],P=[],u=[],N=[],s=[],y=0,x=f.geometry.geometryChunks[k],Q;i=false;e=0;for(n=f.material.length;e<n;e++){meshMaterial=f.material[e];if(meshMaterial instanceof THREE.MeshFaceMaterial){q=0;for(Q=x.material.length;q<Q;q++)if(x.material[q]&&x.material[q].shading!=undefined&&x.material[q].shading==THREE.SmoothShading){i=true;break}}else if(meshMaterial&&meshMaterial.shading!=undefined&&meshMaterial.shading==
-THREE.SmoothShading){i=true;break}if(i)break}Q=i;e=0;for(n=x.faces.length;e<n;e++){i=x.faces[e];h=f.geometry.faces[i];q=h.vertexNormals;faceNormal=h.normal;i=f.geometry.uvs[i];if(h instanceof THREE.Face3){t=f.geometry.vertices[h.a].position;K=f.geometry.vertices[h.b].position;A=f.geometry.vertices[h.c].position;u.push(t.x,t.y,t.z);u.push(K.x,K.y,K.z);u.push(A.x,A.y,A.z);if(q.length==3&&Q)for(h=0;h<3;h++)N.push(q[h].x,q[h].y,q[h].z);else for(h=0;h<3;h++)N.push(faceNormal.x,faceNormal.y,faceNormal.z);
-if(i)for(h=0;h<3;h++)s.push(i[h].u,i[h].v);H.push(y,y+1,y+2);P.push(y,y+1);P.push(y,y+2);P.push(y+1,y+2);y+=3}else if(h instanceof THREE.Face4){t=f.geometry.vertices[h.a].position;K=f.geometry.vertices[h.b].position;A=f.geometry.vertices[h.c].position;h=f.geometry.vertices[h.d].position;u.push(t.x,t.y,t.z);u.push(K.x,K.y,K.z);u.push(A.x,A.y,A.z);u.push(h.x,h.y,h.z);if(q.length==4&&Q)for(h=0;h<4;h++)N.push(q[h].x,q[h].y,q[h].z);else for(h=0;h<4;h++)N.push(faceNormal.x,faceNormal.y,faceNormal.z);if(i)for(h=
-0;h<4;h++)s.push(i[h].u,i[h].v);H.push(y,y+1,y+2);H.push(y,y+2,y+3);P.push(y,y+1);P.push(y,y+2);P.push(y,y+3);P.push(y+1,y+2);P.push(y+2,y+3);y+=4}}if(u.length){x.__webGLVertexBuffer=c.createBuffer();c.bindBuffer(c.ARRAY_BUFFER,x.__webGLVertexBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(u),c.STATIC_DRAW);x.__webGLNormalBuffer=c.createBuffer();c.bindBuffer(c.ARRAY_BUFFER,x.__webGLNormalBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(N),c.STATIC_DRAW);if(s.length>0){x.__webGLUVBuffer=c.createBuffer();
-c.bindBuffer(c.ARRAY_BUFFER,x.__webGLUVBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(s),c.STATIC_DRAW)}x.__webGLFaceBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,x.__webGLFaceBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(H),c.STATIC_DRAW);x.__webGLLineBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,x.__webGLLineBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(P),c.STATIC_DRAW);x.__webGLFaceCount=H.length;x.__webGLLineCount=P.length}};this.renderBuffer=
-function(f,k,e,n){var i,h,q,t,K,A,H,P,u;if(e instanceof THREE.MeshShaderMaterial){if(!e.program){e.program=b(e.fragment_shader,e.vertex_shader);H=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition"];for(u in e.uniforms)H.push(u);j(e.program,H);o(e.program,["position","normal","uv"])}u=e.program}else u=G;if(u!=E){c.useProgram(u);E=u}u==G&&this.setupLights(u,k);this.loadCamera(u,f);this.loadMatrices(u);if(e instanceof THREE.MeshShaderMaterial){q=e.wireframe;
-t=e.wireframe_linewidth;f=u;k=e.uniforms;var N;for(i in k){P=k[i].type;H=k[i].value;N=f.uniforms[i];if(P=="i")c.uniform1i(N,H);else if(P=="f")c.uniform1f(N,H);else if(P=="t"){c.uniform1i(N,H);P=k[i].texture;if(P instanceof THREE.TextureCube)d(P,H);else P instanceof THREE.Texture&&g(P,H)}}}if(e instanceof THREE.MeshPhongMaterial||e instanceof THREE.MeshLambertMaterial||e instanceof THREE.MeshBasicMaterial){i=e.color;h=e.opacity;q=e.wireframe;t=e.wireframe_linewidth;K=e.map;A=e.env_map;k=e.combine==
-THREE.Mix;f=e.reflectivity;P=e.env_map&&e.env_map.mapping==THREE.RefractionMapping;H=e.refraction_ratio;c.uniform4f(u.uniforms.mColor,i.r*h,i.g*h,i.b*h,h);c.uniform1i(u.uniforms.mixEnvMap,k);c.uniform1f(u.uniforms.mReflectivity,f);c.uniform1i(u.uniforms.useRefract,P);c.uniform1f(u.uniforms.mRefractionRatio,H)}if(e instanceof THREE.MeshNormalMaterial){h=e.opacity;c.uniform1f(u.uniforms.mOpacity,h);c.uniform1i(u.uniforms.material,4)}else if(e instanceof THREE.MeshDepthMaterial){h=e.opacity;q=e.wireframe;
-t=e.wireframe_linewidth;c.uniform1f(u.uniforms.mOpacity,h);c.uniform1f(u.uniforms.m2Near,e.__2near);c.uniform1f(u.uniforms.mFarPlusNear,e.__farPlusNear);c.uniform1f(u.uniforms.mFarMinusNear,e.__farMinusNear);c.uniform1i(u.uniforms.material,3)}else if(e instanceof THREE.MeshPhongMaterial){i=e.ambient;f=e.specular;e=e.shininess;c.uniform4f(u.uniforms.mAmbient,i.r,i.g,i.b,h);c.uniform4f(u.uniforms.mSpecular,f.r,f.g,f.b,h);c.uniform1f(u.uniforms.mShininess,e);c.uniform1i(u.uniforms.material,2)}else if(e instanceof
-THREE.MeshLambertMaterial)c.uniform1i(u.uniforms.material,1);else if(e instanceof THREE.MeshBasicMaterial)c.uniform1i(u.uniforms.material,0);else if(e instanceof THREE.MeshCubeMaterial){c.uniform1i(u.uniforms.material,5);A=e.env_map}if(K){g(K,0);c.uniform1i(u.uniforms.tMap,0);c.uniform1i(u.uniforms.enableMap,1)}else c.uniform1i(u.uniforms.enableMap,0);if(A){d(A,1);c.uniform1i(u.uniforms.tCube,1);c.uniform1i(u.uniforms.enableCubeMap,1)}else c.uniform1i(u.uniforms.enableCubeMap,0);h=u.attributes;c.bindBuffer(c.ARRAY_BUFFER,
-n.__webGLVertexBuffer);c.vertexAttribPointer(h.position,3,c.FLOAT,false,0,0);c.bindBuffer(c.ARRAY_BUFFER,n.__webGLNormalBuffer);c.vertexAttribPointer(h.normal,3,c.FLOAT,false,0,0);if(h.uv>=0)if(n.__webGLUVBuffer){c.bindBuffer(c.ARRAY_BUFFER,n.__webGLUVBuffer);c.enableVertexAttribArray(h.uv);c.vertexAttribPointer(h.uv,2,c.FLOAT,false,0,0)}else c.disableVertexAttribArray(h.uv);if(q){c.lineWidth(t);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,n.__webGLLineBuffer);c.drawElements(c.LINES,n.__webGLLineCount,c.UNSIGNED_SHORT,
-0)}else{c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,n.__webGLFaceBuffer);c.drawElements(c.TRIANGLES,n.__webGLFaceCount,c.UNSIGNED_SHORT,0)}};this.renderPass=function(f,k,e,n,i,h){var q,t,K,A,H;K=0;for(A=e.material.length;K<A;K++){q=e.material[K];if(q instanceof THREE.MeshFaceMaterial){q=0;for(t=n.material.length;q<t;q++)if((H=n.material[q])&&H.blending==i&&H.opacity<1==h){this.setBlending(H.blending);this.renderBuffer(f,k,H,n)}}else if((H=q)&&H.blending==i&&H.opacity<1==h){this.setBlending(H.blending);this.renderBuffer(f,
-k,H,n)}}};this.render=function(f,k){var e,n,i,h,q=f.lights;this.initWebGLObjects(f);this.autoClear&&this.clear();k.autoUpdateMatrix&&k.updateMatrix();e=0;for(n=f.__webGLObjects.length;e<n;e++){i=f.__webGLObjects[e];h=i.object;i=i.buffer;if(h.visible){this.setupMatrices(h,k);this.renderPass(k,q,h,i,THREE.NormalBlending,false)}}e=0;for(n=f.__webGLObjects.length;e<n;e++){i=f.__webGLObjects[e];h=i.object;i=i.buffer;if(h.visible){this.setupMatrices(h,k);this.renderPass(k,q,h,i,THREE.AdditiveBlending,false);
-this.renderPass(k,q,h,i,THREE.SubtractiveBlending,false);this.renderPass(k,q,h,i,THREE.AdditiveBlending,true);this.renderPass(k,q,h,i,THREE.SubtractiveBlending,true);this.renderPass(k,q,h,i,THREE.NormalBlending,true)}}};this.initWebGLObjects=function(f){var k,e,n,i,h,q;if(!f.__webGLObjects){f.__webGLObjects=[];f.__webGLObjectsMap={}}k=0;for(e=f.objects.length;k<e;k++){n=f.objects[k];if(f.__webGLObjectsMap[n.id]==undefined)f.__webGLObjectsMap[n.id]={};q=f.__webGLObjectsMap[n.id];if(n instanceof THREE.Mesh)for(h in n.geometry.geometryChunks){i=
-n.geometry.geometryChunks[h];i.__webGLVertexBuffer||this.createBuffers(n,h);if(q[h]==undefined){i={buffer:i,object:n};f.__webGLObjects.push(i);q[h]=1}}}};this.removeObject=function(f,k){var e,n;for(e=f.__webGLObjects.length-1;e>=0;e--){n=f.__webGLObjects[e].object;k==n&&f.__webGLObjects.splice(e,1)}};this.setupMatrices=function(f,k){f.autoUpdateMatrix&&f.updateMatrix();w.multiply(k.matrix,f.matrix);O.set(k.matrix.flatten());J.set(w.flatten());M.set(k.projectionMatrix.flatten());F=THREE.Matrix4.makeInvert3x3(w).transpose();
-r.set(F.m);S.set(f.matrix.flatten())};this.loadMatrices=function(f){c.uniformMatrix4fv(f.uniforms.viewMatrix,false,O);c.uniformMatrix4fv(f.uniforms.modelViewMatrix,false,J);c.uniformMatrix4fv(f.uniforms.projectionMatrix,false,M);c.uniformMatrix3fv(f.uniforms.normalMatrix,false,r);c.uniformMatrix4fv(f.uniforms.objectMatrix,false,S)};this.loadCamera=function(f,k){c.uniform3f(f.uniforms.cameraPosition,k.position.x,k.position.y,k.position.z)};this.setBlending=function(f){switch(f){case THREE.AdditiveBlending:c.blendEquation(c.FUNC_ADD);
+e=b(p,e);c.useProgram(e);j(e,["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition","enableLighting","ambientLightColor","material","mColor","mAmbient","mSpecular","mShininess","mOpacity","enableMap","tMap","enableCubeMap","tCube","mixEnvMap","mReflectivity","mRefractionRatio","useRefract","m2Near","mFarPlusNear","mFarMinusNear"]);f&&j(e,["directionalLightNumber","directionalLightColor","directionalLightDirection"]);k&&j(e,["pointLightNumber","pointLightColor",
+"pointLightPosition"]);c.uniform1i(e.uniforms.enableMap,0);c.uniform1i(e.uniforms.tMap,0);c.uniform1i(e.uniforms.enableCubeMap,0);c.uniform1i(e.uniforms.tCube,1);c.uniform1i(e.uniforms.mixEnvMap,0);c.uniform1i(e.uniforms.useRefract,0);n(e,["position","normal","uv"]);return e}(a.directional,a.point);this.setSize=function(f,k){o.width=f;o.height=k;c.viewport(0,0,o.width,o.height)};this.clear=function(){c.clear(c.COLOR_BUFFER_BIT|c.DEPTH_BUFFER_BIT)};this.setupLights=function(f,k){var e,p,h,i,s,r=[],
+L=[],A=[];i=[];s=[];c.uniform1i(f.uniforms.enableLighting,k.length);e=0;for(p=k.length;e<p;e++){h=k[e];if(h instanceof THREE.AmbientLight)r.push(h);else if(h instanceof THREE.DirectionalLight)A.push(h);else h instanceof THREE.PointLight&&L.push(h)}e=h=i=s=0;for(p=r.length;e<p;e++){h+=r[e].color.r;i+=r[e].color.g;s+=r[e].color.b}c.uniform3f(f.uniforms.ambientLightColor,h,i,s);i=[];s=[];e=0;for(p=A.length;e<p;e++){h=A[e];i.push(h.color.r*h.intensity);i.push(h.color.g*h.intensity);i.push(h.color.b*h.intensity);
+s.push(h.position.x);s.push(h.position.y);s.push(h.position.z)}if(A.length){c.uniform1i(f.uniforms.directionalLightNumber,A.length);c.uniform3fv(f.uniforms.directionalLightDirection,s);c.uniform3fv(f.uniforms.directionalLightColor,i)}i=[];s=[];e=0;for(p=L.length;e<p;e++){h=L[e];i.push(h.color.r*h.intensity);i.push(h.color.g*h.intensity);i.push(h.color.b*h.intensity);s.push(h.position.x);s.push(h.position.y);s.push(h.position.z)}if(L.length){c.uniform1i(f.uniforms.pointLightNumber,L.length);c.uniform3fv(f.uniforms.pointLightPosition,
+s);c.uniform3fv(f.uniforms.pointLightColor,i)}};this.createBuffers=function(f,k){var e,p,h,i,s,r,L,A,M=[],Q=[],u=[],R=[],y=[],z=0,E=f.geometry.geometryChunks[k],W;h=false;e=0;for(p=f.material.length;e<p;e++){meshMaterial=f.material[e];if(meshMaterial instanceof THREE.MeshFaceMaterial){s=0;for(W=E.material.length;s<W;s++)if(E.material[s]&&E.material[s].shading!=undefined&&E.material[s].shading==THREE.SmoothShading){h=true;break}}else if(meshMaterial&&meshMaterial.shading!=undefined&&meshMaterial.shading==
+THREE.SmoothShading){h=true;break}if(h)break}W=h;e=0;for(p=E.faces.length;e<p;e++){h=E.faces[e];i=f.geometry.faces[h];s=i.vertexNormals;faceNormal=i.normal;h=f.geometry.uvs[h];if(i instanceof THREE.Face3){r=f.geometry.vertices[i.a].position;L=f.geometry.vertices[i.b].position;A=f.geometry.vertices[i.c].position;u.push(r.x,r.y,r.z);u.push(L.x,L.y,L.z);u.push(A.x,A.y,A.z);if(s.length==3&&W)for(i=0;i<3;i++)R.push(s[i].x,s[i].y,s[i].z);else for(i=0;i<3;i++)R.push(faceNormal.x,faceNormal.y,faceNormal.z);
+if(h)for(i=0;i<3;i++)y.push(h[i].u,h[i].v);M.push(z,z+1,z+2);Q.push(z,z+1);Q.push(z,z+2);Q.push(z+1,z+2);z+=3}else if(i instanceof THREE.Face4){r=f.geometry.vertices[i.a].position;L=f.geometry.vertices[i.b].position;A=f.geometry.vertices[i.c].position;i=f.geometry.vertices[i.d].position;u.push(r.x,r.y,r.z);u.push(L.x,L.y,L.z);u.push(A.x,A.y,A.z);u.push(i.x,i.y,i.z);if(s.length==4&&W)for(i=0;i<4;i++)R.push(s[i].x,s[i].y,s[i].z);else for(i=0;i<4;i++)R.push(faceNormal.x,faceNormal.y,faceNormal.z);if(h)for(i=
+0;i<4;i++)y.push(h[i].u,h[i].v);M.push(z,z+1,z+2);M.push(z,z+2,z+3);Q.push(z,z+1);Q.push(z,z+2);Q.push(z,z+3);Q.push(z+1,z+2);Q.push(z+2,z+3);z+=4}}if(u.length){E.__webGLVertexBuffer=c.createBuffer();c.bindBuffer(c.ARRAY_BUFFER,E.__webGLVertexBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(u),c.STATIC_DRAW);E.__webGLNormalBuffer=c.createBuffer();c.bindBuffer(c.ARRAY_BUFFER,E.__webGLNormalBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(R),c.STATIC_DRAW);if(y.length>0){E.__webGLUVBuffer=c.createBuffer();
+c.bindBuffer(c.ARRAY_BUFFER,E.__webGLUVBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(y),c.STATIC_DRAW)}E.__webGLFaceBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,E.__webGLFaceBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(M),c.STATIC_DRAW);E.__webGLLineBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,E.__webGLLineBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(Q),c.STATIC_DRAW);E.__webGLFaceCount=M.length;E.__webGLLineCount=Q.length}};this.renderBuffer=
+function(f,k,e,p){var h,i,s,r,L,A,M,Q,u;if(e instanceof THREE.MeshShaderMaterial){if(!e.program){e.program=b(e.fragment_shader,e.vertex_shader);M=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition"];for(u in e.uniforms)M.push(u);j(e.program,M);n(e.program,["position","normal","uv"])}u=e.program}else u=D;if(u!=F){c.useProgram(u);F=u}u==D&&this.setupLights(u,k);this.loadCamera(u,f);this.loadMatrices(u);if(e instanceof THREE.MeshShaderMaterial){s=e.wireframe;
+r=e.wireframe_linewidth;f=u;k=e.uniforms;var R;for(h in k){Q=k[h].type;M=k[h].value;R=f.uniforms[h];if(Q=="i")c.uniform1i(R,M);else if(Q=="f")c.uniform1f(R,M);else if(Q=="t"){c.uniform1i(R,M);if(Q=k[h].texture)Q.image instanceof Array&&Q.image.length==6?d(Q,M):g(Q,M)}}}if(e instanceof THREE.MeshPhongMaterial||e instanceof THREE.MeshLambertMaterial||e instanceof THREE.MeshBasicMaterial){h=e.color;i=e.opacity;s=e.wireframe;r=e.wireframe_linewidth;L=e.map;A=e.env_map;k=e.combine==THREE.MixOperation;
+f=e.reflectivity;Q=e.env_map&&e.env_map.mapping instanceof THREE.CubeRefractionMapping;M=e.refraction_ratio;c.uniform4f(u.uniforms.mColor,h.r*i,h.g*i,h.b*i,i);c.uniform1i(u.uniforms.mixEnvMap,k);c.uniform1f(u.uniforms.mReflectivity,f);c.uniform1i(u.uniforms.useRefract,Q);c.uniform1f(u.uniforms.mRefractionRatio,M)}if(e instanceof THREE.MeshNormalMaterial){i=e.opacity;c.uniform1f(u.uniforms.mOpacity,i);c.uniform1i(u.uniforms.material,4)}else if(e instanceof THREE.MeshDepthMaterial){i=e.opacity;s=e.wireframe;
+r=e.wireframe_linewidth;c.uniform1f(u.uniforms.mOpacity,i);c.uniform1f(u.uniforms.m2Near,e.__2near);c.uniform1f(u.uniforms.mFarPlusNear,e.__farPlusNear);c.uniform1f(u.uniforms.mFarMinusNear,e.__farMinusNear);c.uniform1i(u.uniforms.material,3)}else if(e instanceof THREE.MeshPhongMaterial){h=e.ambient;f=e.specular;e=e.shininess;c.uniform4f(u.uniforms.mAmbient,h.r,h.g,h.b,i);c.uniform4f(u.uniforms.mSpecular,f.r,f.g,f.b,i);c.uniform1f(u.uniforms.mShininess,e);c.uniform1i(u.uniforms.material,2)}else if(e instanceof
+THREE.MeshLambertMaterial)c.uniform1i(u.uniforms.material,1);else if(e instanceof THREE.MeshBasicMaterial)c.uniform1i(u.uniforms.material,0);else if(e instanceof THREE.MeshCubeMaterial){c.uniform1i(u.uniforms.material,5);A=e.env_map}if(L){g(L,0);c.uniform1i(u.uniforms.tMap,0);c.uniform1i(u.uniforms.enableMap,1)}else c.uniform1i(u.uniforms.enableMap,0);if(A){d(A,1);c.uniform1i(u.uniforms.tCube,1);c.uniform1i(u.uniforms.enableCubeMap,1)}else c.uniform1i(u.uniforms.enableCubeMap,0);i=u.attributes;c.bindBuffer(c.ARRAY_BUFFER,
+p.__webGLVertexBuffer);c.vertexAttribPointer(i.position,3,c.FLOAT,false,0,0);c.bindBuffer(c.ARRAY_BUFFER,p.__webGLNormalBuffer);c.vertexAttribPointer(i.normal,3,c.FLOAT,false,0,0);if(i.uv>=0)if(p.__webGLUVBuffer){c.bindBuffer(c.ARRAY_BUFFER,p.__webGLUVBuffer);c.enableVertexAttribArray(i.uv);c.vertexAttribPointer(i.uv,2,c.FLOAT,false,0,0)}else c.disableVertexAttribArray(i.uv);if(s){c.lineWidth(r);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,p.__webGLLineBuffer);c.drawElements(c.LINES,p.__webGLLineCount,c.UNSIGNED_SHORT,
+0)}else{c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,p.__webGLFaceBuffer);c.drawElements(c.TRIANGLES,p.__webGLFaceCount,c.UNSIGNED_SHORT,0)}};this.renderPass=function(f,k,e,p,h,i){var s,r,L,A,M;L=0;for(A=e.material.length;L<A;L++){s=e.material[L];if(s instanceof THREE.MeshFaceMaterial){s=0;for(r=p.material.length;s<r;s++)if((M=p.material[s])&&M.blending==h&&M.opacity<1==i){this.setBlending(M.blending);this.renderBuffer(f,k,M,p)}}else if((M=s)&&M.blending==h&&M.opacity<1==i){this.setBlending(M.blending);this.renderBuffer(f,
+k,M,p)}}};this.render=function(f,k){var e,p,h,i,s=f.lights;this.initWebGLObjects(f);this.autoClear&&this.clear();k.autoUpdateMatrix&&k.updateMatrix();e=0;for(p=f.__webGLObjects.length;e<p;e++){h=f.__webGLObjects[e];i=h.object;h=h.buffer;if(i.visible){this.setupMatrices(i,k);this.renderPass(k,s,i,h,THREE.NormalBlending,false)}}e=0;for(p=f.__webGLObjects.length;e<p;e++){h=f.__webGLObjects[e];i=h.object;h=h.buffer;if(i.visible){this.setupMatrices(i,k);this.renderPass(k,s,i,h,THREE.AdditiveBlending,false);
+this.renderPass(k,s,i,h,THREE.SubtractiveBlending,false);this.renderPass(k,s,i,h,THREE.AdditiveBlending,true);this.renderPass(k,s,i,h,THREE.SubtractiveBlending,true);this.renderPass(k,s,i,h,THREE.NormalBlending,true)}}};this.initWebGLObjects=function(f){var k,e,p,h,i,s;if(!f.__webGLObjects){f.__webGLObjects=[];f.__webGLObjectsMap={}}k=0;for(e=f.objects.length;k<e;k++){p=f.objects[k];if(f.__webGLObjectsMap[p.id]==undefined)f.__webGLObjectsMap[p.id]={};s=f.__webGLObjectsMap[p.id];if(p instanceof THREE.Mesh)for(i in p.geometry.geometryChunks){h=
+p.geometry.geometryChunks[i];h.__webGLVertexBuffer||this.createBuffers(p,i);if(s[i]==undefined){h={buffer:h,object:p};f.__webGLObjects.push(h);s[i]=1}}}};this.removeObject=function(f,k){var e,p;for(e=f.__webGLObjects.length-1;e>=0;e--){p=f.__webGLObjects[e].object;k==p&&f.__webGLObjects.splice(e,1)}};this.setupMatrices=function(f,k){f.autoUpdateMatrix&&f.updateMatrix();w.multiply(k.matrix,f.matrix);H.set(k.matrix.flatten());G.set(w.flatten());K.set(k.projectionMatrix.flatten());x=THREE.Matrix4.makeInvert3x3(w).transpose();
+N.set(x.m);O.set(f.matrix.flatten())};this.loadMatrices=function(f){c.uniformMatrix4fv(f.uniforms.viewMatrix,false,H);c.uniformMatrix4fv(f.uniforms.modelViewMatrix,false,G);c.uniformMatrix4fv(f.uniforms.projectionMatrix,false,K);c.uniformMatrix3fv(f.uniforms.normalMatrix,false,N);c.uniformMatrix4fv(f.uniforms.objectMatrix,false,O)};this.loadCamera=function(f,k){c.uniform3f(f.uniforms.cameraPosition,k.position.x,k.position.y,k.position.z)};this.setBlending=function(f){switch(f){case THREE.AdditiveBlending:c.blendEquation(c.FUNC_ADD);
 c.blendFunc(c.ONE,c.ONE);break;case THREE.SubtractiveBlending:c.blendFunc(c.DST_COLOR,c.ZERO);break;default:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA)}};this.setFaceCulling=function(f,k){if(f){!k||k=="ccw"?c.frontFace(c.CCW):c.frontFace(c.CW);if(f=="back")c.cullFace(c.BACK);else f=="front"?c.cullFace(c.FRONT):c.cullFace(c.FRONT_AND_BACK);c.enable(c.CULL_FACE)}else c.disable(c.CULL_FACE)}};
 THREE.RenderableFace3=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.v3=new THREE.Vertex;this.centroidWorld=new THREE.Vector3;this.centroidScreen=new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.vertexNormalsWorld=[];this.faceMaterial=this.meshMaterial=null;this.overdraw=false;this.uvs=[null,null,null]};THREE.RenderableParticle=function(){this.rotation=this.z=this.y=this.x=null;this.scale=new THREE.Vector2;this.material=null};
 THREE.RenderableLine=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.material=null};

+ 116 - 113
build/ThreeDebug.js

@@ -1,4 +1,4 @@
-// ThreeDebug.js r30 - http://github.com/mrdoob/three.js
+// ThreeDebug.js r31 - http://github.com/mrdoob/three.js
 var THREE=THREE||{};THREE.Color=function(a){this.autoUpdate=true;this.setHex(a)};
 THREE.Color.prototype={setRGB:function(a,b,d){this.r=a;this.g=b;this.b=d;if(this.autoUpdate){this.updateHex();this.updateStyleString()}},setHex:function(a){this.hex=~~a&16777215;if(this.autoUpdate){this.updateRGBA();this.updateStyleString()}},updateHex:function(){this.hex=~~(this.r*255)<<16^~~(this.g*255)<<8^~~(this.b*255)},updateRGBA:function(){this.r=(this.hex>>16&255)/255;this.g=(this.hex>>8&255)/255;this.b=(this.hex&255)/255},updateStyleString:function(){this.__styleString="rgb("+~~(this.r*255)+
 ","+~~(this.g*255)+","+~~(this.b*255)+")"},toString:function(){return"THREE.Color ( r: "+this.r+", g: "+this.g+", b: "+this.b+", hex: "+this.hex+" )"}};THREE.Vector2=function(a,b){this.x=a||0;this.y=b||0};
@@ -12,44 +12,44 @@ THREE.Vector4=function(a,b,d,g){this.x=a||0;this.y=b||0;this.z=d||0;this.w=g||1}
 THREE.Vector4.prototype={set:function(a,b,d,g){this.x=a;this.y=b;this.z=d;this.w=g;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=a.w||1;return this},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;this.w=a.w+b.w;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;this.z+=a.z;this.w+=a.w;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;this.w=a.w-b.w;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;this.z-=a.z;this.w-=a.w;
 return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;this.w*=a;return this},divideScalar:function(a){this.x/=a;this.y/=a;this.z/=a;this.w/=a;return this},lerpSelf:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;this.w+=(a.w-this.w)*b},clone:function(){return new THREE.Vector4(this.x,this.y,this.z,this.w)},toString:function(){return"THREE.Vector4 ("+this.x+", "+this.y+", "+this.z+", "+this.w+")"}};
 THREE.Ray=function(a,b){this.origin=a||new THREE.Vector3;this.direction=b||new THREE.Vector3};
-THREE.Ray.prototype={intersectScene:function(a){var b,d,g=a.objects,j=[];a=0;for(b=g.length;a<b;a++){d=g[a];if(d instanceof THREE.Mesh)j=j.concat(this.intersectObject(d))}j.sort(function(p,m){return p.distance-m.distance});return j},intersectObject:function(a){function b(M,o,T,z){z=z.clone().subSelf(o);T=T.clone().subSelf(o);var f=M.clone().subSelf(o);M=z.dot(z);o=z.dot(T);z=z.dot(f);var k=T.dot(T);T=T.dot(f);f=1/(M*k-o*o);k=(k*z-o*T)*f;M=(M*T-o*z)*f;return k>0&&M>0&&k+M<1}var d,g,j,p,m,q,l,c,E,G,
-w,F=a.geometry,P=F.vertices,J=[];d=0;for(g=F.faces.length;d<g;d++){j=F.faces[d];G=this.origin.clone();w=this.direction.clone();p=a.matrix.multiplyVector3(P[j.a].position.clone());m=a.matrix.multiplyVector3(P[j.b].position.clone());q=a.matrix.multiplyVector3(P[j.c].position.clone());l=j instanceof THREE.Face4?a.matrix.multiplyVector3(P[j.d].position.clone()):null;c=a.rotationMatrix.multiplyVector3(j.normal.clone());E=w.dot(c);if(E<0){c=c.dot((new THREE.Vector3).sub(p,G))/E;G=G.addSelf(w.multiplyScalar(c));
-if(j instanceof THREE.Face3){if(b(G,p,m,q)){j={distance:this.origin.distanceTo(G),point:G,face:j,object:a};J.push(j)}}else if(j instanceof THREE.Face4)if(b(G,p,m,l)||b(G,m,q,l)){j={distance:this.origin.distanceTo(G),point:G,face:j,object:a};J.push(j)}}}return J}};
-THREE.Rectangle=function(){function a(){p=g-b;m=j-d}var b,d,g,j,p,m,q=true;this.getX=function(){return b};this.getY=function(){return d};this.getWidth=function(){return p};this.getHeight=function(){return m};this.getLeft=function(){return b};this.getTop=function(){return d};this.getRight=function(){return g};this.getBottom=function(){return j};this.set=function(l,c,E,G){q=false;b=l;d=c;g=E;j=G;a()};this.addPoint=function(l,c){if(q){q=false;b=l;d=c;g=l;j=c}else{b=Math.min(b,l);d=Math.min(d,c);g=Math.max(g,
-l);j=Math.max(j,c)}a()};this.addRectangle=function(l){if(q){q=false;b=l.getLeft();d=l.getTop();g=l.getRight();j=l.getBottom()}else{b=Math.min(b,l.getLeft());d=Math.min(d,l.getTop());g=Math.max(g,l.getRight());j=Math.max(j,l.getBottom())}a()};this.inflate=function(l){b-=l;d-=l;g+=l;j+=l;a()};this.minSelf=function(l){b=Math.max(b,l.getLeft());d=Math.max(d,l.getTop());g=Math.min(g,l.getRight());j=Math.min(j,l.getBottom());a()};this.instersects=function(l){return Math.min(g,l.getRight())-Math.max(b,l.getLeft())>=
-0&&Math.min(j,l.getBottom())-Math.max(d,l.getTop())>=0};this.empty=function(){q=true;j=g=d=b=0;a()};this.isEmpty=function(){return q};this.toString=function(){return"THREE.Rectangle ( left: "+b+", right: "+g+", top: "+d+", bottom: "+j+", width: "+p+", height: "+m+" )"}};THREE.Matrix3=function(){this.m=[]};THREE.Matrix3.prototype={transpose:function(){var a;a=this.m[1];this.m[1]=this.m[3];this.m[3]=a;a=this.m[2];this.m[2]=this.m[6];this.m[6]=a;a=this.m[5];this.m[5]=this.m[7];this.m[7]=a;return this}};
+THREE.Ray.prototype={intersectScene:function(a){var b,d,g=a.objects,j=[];a=0;for(b=g.length;a<b;a++){d=g[a];if(d instanceof THREE.Mesh)j=j.concat(this.intersectObject(d))}j.sort(function(n,m){return n.distance-m.distance});return j},intersectObject:function(a){function b(K,N,O,v){v=v.clone().subSelf(N);O=O.clone().subSelf(N);var f=K.clone().subSelf(N);K=v.dot(v);N=v.dot(O);v=v.dot(f);var l=O.dot(O);O=O.dot(f);f=1/(K*l-N*N);l=(l*v-N*O)*f;K=(K*O-N*v)*f;return l>0&&K>0&&l+K<1}var d,g,j,n,m,k,o,c,F,D,
+w,x=a.geometry,H=x.vertices,G=[];d=0;for(g=x.faces.length;d<g;d++){j=x.faces[d];D=this.origin.clone();w=this.direction.clone();n=a.matrix.multiplyVector3(H[j.a].position.clone());m=a.matrix.multiplyVector3(H[j.b].position.clone());k=a.matrix.multiplyVector3(H[j.c].position.clone());o=j instanceof THREE.Face4?a.matrix.multiplyVector3(H[j.d].position.clone()):null;c=a.rotationMatrix.multiplyVector3(j.normal.clone());F=w.dot(c);if(F<0){c=c.dot((new THREE.Vector3).sub(n,D))/F;D=D.addSelf(w.multiplyScalar(c));
+if(j instanceof THREE.Face3){if(b(D,n,m,k)){j={distance:this.origin.distanceTo(D),point:D,face:j,object:a};G.push(j)}}else if(j instanceof THREE.Face4)if(b(D,n,m,o)||b(D,m,k,o)){j={distance:this.origin.distanceTo(D),point:D,face:j,object:a};G.push(j)}}}return G}};
+THREE.Rectangle=function(){function a(){n=g-b;m=j-d}var b,d,g,j,n,m,k=true;this.getX=function(){return b};this.getY=function(){return d};this.getWidth=function(){return n};this.getHeight=function(){return m};this.getLeft=function(){return b};this.getTop=function(){return d};this.getRight=function(){return g};this.getBottom=function(){return j};this.set=function(o,c,F,D){k=false;b=o;d=c;g=F;j=D;a()};this.addPoint=function(o,c){if(k){k=false;b=o;d=c;g=o;j=c}else{b=Math.min(b,o);d=Math.min(d,c);g=Math.max(g,
+o);j=Math.max(j,c)}a()};this.addRectangle=function(o){if(k){k=false;b=o.getLeft();d=o.getTop();g=o.getRight();j=o.getBottom()}else{b=Math.min(b,o.getLeft());d=Math.min(d,o.getTop());g=Math.max(g,o.getRight());j=Math.max(j,o.getBottom())}a()};this.inflate=function(o){b-=o;d-=o;g+=o;j+=o;a()};this.minSelf=function(o){b=Math.max(b,o.getLeft());d=Math.max(d,o.getTop());g=Math.min(g,o.getRight());j=Math.min(j,o.getBottom());a()};this.instersects=function(o){return Math.min(g,o.getRight())-Math.max(b,o.getLeft())>=
+0&&Math.min(j,o.getBottom())-Math.max(d,o.getTop())>=0};this.empty=function(){k=true;j=g=d=b=0;a()};this.isEmpty=function(){return k};this.toString=function(){return"THREE.Rectangle ( left: "+b+", right: "+g+", top: "+d+", bottom: "+j+", width: "+n+", height: "+m+" )"}};THREE.Matrix3=function(){this.m=[]};THREE.Matrix3.prototype={transpose:function(){var a;a=this.m[1];this.m[1]=this.m[3];this.m[3]=a;a=this.m[2];this.m[2]=this.m[6];this.m[6]=a;a=this.m[5];this.m[5]=this.m[7];this.m[7]=a;return this}};
 THREE.Matrix4=function(){};
 THREE.Matrix4.prototype={n11:1,n12:0,n13:0,n14:0,n21:0,n22:1,n23:0,n24:0,n31:0,n32:0,n33:1,n34:0,n41:0,n42:0,n43:0,n44:1,identity:function(){this.n11=1;this.n21=this.n14=this.n13=this.n12=0;this.n22=1;this.n32=this.n31=this.n24=this.n23=0;this.n33=1;this.n43=this.n42=this.n41=this.n34=0;this.n44=1},copy:function(a){this.n11=a.n11;this.n12=a.n12;this.n13=a.n13;this.n14=a.n14;this.n21=a.n21;this.n22=a.n22;this.n23=a.n23;this.n24=a.n24;this.n31=a.n31;this.n32=a.n32;this.n33=a.n33;this.n34=a.n34;this.n41=
-a.n41;this.n42=a.n42;this.n43=a.n43;this.n44=a.n44},lookAt:function(a,b,d){var g=new THREE.Vector3,j=new THREE.Vector3,p=new THREE.Vector3;p.sub(a,b).normalize();g.cross(d,p).normalize();j.cross(p,g).normalize();this.n11=g.x;this.n12=g.y;this.n13=g.z;this.n14=-g.dot(a);this.n21=j.x;this.n22=j.y;this.n23=j.z;this.n24=-j.dot(a);this.n31=p.x;this.n32=p.y;this.n33=p.z;this.n34=-p.dot(a);this.n43=this.n42=this.n41=0;this.n44=1},multiplyVector3:function(a){var b=a.x,d=a.y,g=a.z,j=1/(this.n41*b+this.n42*
+a.n41;this.n42=a.n42;this.n43=a.n43;this.n44=a.n44},lookAt:function(a,b,d){var g=new THREE.Vector3,j=new THREE.Vector3,n=new THREE.Vector3;n.sub(a,b).normalize();g.cross(d,n).normalize();j.cross(n,g).normalize();this.n11=g.x;this.n12=g.y;this.n13=g.z;this.n14=-g.dot(a);this.n21=j.x;this.n22=j.y;this.n23=j.z;this.n24=-j.dot(a);this.n31=n.x;this.n32=n.y;this.n33=n.z;this.n34=-n.dot(a);this.n43=this.n42=this.n41=0;this.n44=1},multiplyVector3:function(a){var b=a.x,d=a.y,g=a.z,j=1/(this.n41*b+this.n42*
 d+this.n43*g+this.n44);a.x=(this.n11*b+this.n12*d+this.n13*g+this.n14)*j;a.y=(this.n21*b+this.n22*d+this.n23*g+this.n24)*j;a.z=(this.n31*b+this.n32*d+this.n33*g+this.n34)*j;return a},multiplyVector4:function(a){var b=a.x,d=a.y,g=a.z,j=a.w;a.x=this.n11*b+this.n12*d+this.n13*g+this.n14*j;a.y=this.n21*b+this.n22*d+this.n23*g+this.n24*j;a.z=this.n31*b+this.n32*d+this.n33*g+this.n34*j;a.w=this.n41*b+this.n42*d+this.n43*g+this.n44*j;return a},crossVector:function(a){var b=new THREE.Vector4;b.x=this.n11*
-a.x+this.n12*a.y+this.n13*a.z+this.n14*a.w;b.y=this.n21*a.x+this.n22*a.y+this.n23*a.z+this.n24*a.w;b.z=this.n31*a.x+this.n32*a.y+this.n33*a.z+this.n34*a.w;b.w=a.w?this.n41*a.x+this.n42*a.y+this.n43*a.z+this.n44*a.w:1;return b},multiply:function(a,b){var d=a.n11,g=a.n12,j=a.n13,p=a.n14,m=a.n21,q=a.n22,l=a.n23,c=a.n24,E=a.n31,G=a.n32,w=a.n33,F=a.n34,P=a.n41,J=a.n42,M=a.n43,o=a.n44,T=b.n11,z=b.n12,f=b.n13,k=b.n14,e=b.n21,n=b.n22,i=b.n23,h=b.n24,r=b.n31,t=b.n32,K=b.n33,A=b.n34,H=b.n41,Q=b.n42,u=b.n43,
-O=b.n44;this.n11=d*T+g*e+j*r+p*H;this.n12=d*z+g*n+j*t+p*Q;this.n13=d*f+g*i+j*K+p*u;this.n14=d*k+g*h+j*A+p*O;this.n21=m*T+q*e+l*r+c*H;this.n22=m*z+q*n+l*t+c*Q;this.n23=m*f+q*i+l*K+c*u;this.n24=m*k+q*h+l*A+c*O;this.n31=E*T+G*e+w*r+F*H;this.n32=E*z+G*n+w*t+F*Q;this.n33=E*f+G*i+w*K+F*u;this.n34=E*k+G*h+w*A+F*O;this.n41=P*T+J*e+M*r+o*H;this.n42=P*z+J*n+M*t+o*Q;this.n43=P*f+J*i+M*K+o*u;this.n44=P*k+J*h+M*A+o*O},multiplySelf:function(a){var b=this.n11,d=this.n12,g=this.n13,j=this.n14,p=this.n21,m=this.n22,
-q=this.n23,l=this.n24,c=this.n31,E=this.n32,G=this.n33,w=this.n34,F=this.n41,P=this.n42,J=this.n43,M=this.n44;this.n11=b*a.n11+d*a.n21+g*a.n31+j*a.n41;this.n12=b*a.n12+d*a.n22+g*a.n32+j*a.n42;this.n13=b*a.n13+d*a.n23+g*a.n33+j*a.n43;this.n14=b*a.n14+d*a.n24+g*a.n34+j*a.n44;this.n21=p*a.n11+m*a.n21+q*a.n31+l*a.n41;this.n22=p*a.n12+m*a.n22+q*a.n32+l*a.n42;this.n23=p*a.n13+m*a.n23+q*a.n33+l*a.n43;this.n24=p*a.n14+m*a.n24+q*a.n34+l*a.n44;this.n31=c*a.n11+E*a.n21+G*a.n31+w*a.n41;this.n32=c*a.n12+E*a.n22+
-G*a.n32+w*a.n42;this.n33=c*a.n13+E*a.n23+G*a.n33+w*a.n43;this.n34=c*a.n14+E*a.n24+G*a.n34+w*a.n44;this.n41=F*a.n11+P*a.n21+J*a.n31+M*a.n41;this.n42=F*a.n12+P*a.n22+J*a.n32+M*a.n42;this.n43=F*a.n13+P*a.n23+J*a.n33+M*a.n43;this.n44=F*a.n14+P*a.n24+J*a.n34+M*a.n44},multiplyScalar:function(a){this.n11*=a;this.n12*=a;this.n13*=a;this.n14*=a;this.n21*=a;this.n22*=a;this.n23*=a;this.n24*=a;this.n31*=a;this.n32*=a;this.n33*=a;this.n34*=a;this.n41*=a;this.n42*=a;this.n43*=a;this.n44*=a},determinant:function(){return this.n14*
+a.x+this.n12*a.y+this.n13*a.z+this.n14*a.w;b.y=this.n21*a.x+this.n22*a.y+this.n23*a.z+this.n24*a.w;b.z=this.n31*a.x+this.n32*a.y+this.n33*a.z+this.n34*a.w;b.w=a.w?this.n41*a.x+this.n42*a.y+this.n43*a.z+this.n44*a.w:1;return b},multiply:function(a,b){var d=a.n11,g=a.n12,j=a.n13,n=a.n14,m=a.n21,k=a.n22,o=a.n23,c=a.n24,F=a.n31,D=a.n32,w=a.n33,x=a.n34,H=a.n41,G=a.n42,K=a.n43,N=a.n44,O=b.n11,v=b.n12,f=b.n13,l=b.n14,e=b.n21,q=b.n22,h=b.n23,i=b.n24,s=b.n31,r=b.n32,L=b.n33,B=b.n34,M=b.n41,Q=b.n42,u=b.n43,
+R=b.n44;this.n11=d*O+g*e+j*s+n*M;this.n12=d*v+g*q+j*r+n*Q;this.n13=d*f+g*h+j*L+n*u;this.n14=d*l+g*i+j*B+n*R;this.n21=m*O+k*e+o*s+c*M;this.n22=m*v+k*q+o*r+c*Q;this.n23=m*f+k*h+o*L+c*u;this.n24=m*l+k*i+o*B+c*R;this.n31=F*O+D*e+w*s+x*M;this.n32=F*v+D*q+w*r+x*Q;this.n33=F*f+D*h+w*L+x*u;this.n34=F*l+D*i+w*B+x*R;this.n41=H*O+G*e+K*s+N*M;this.n42=H*v+G*q+K*r+N*Q;this.n43=H*f+G*h+K*L+N*u;this.n44=H*l+G*i+K*B+N*R},multiplySelf:function(a){var b=this.n11,d=this.n12,g=this.n13,j=this.n14,n=this.n21,m=this.n22,
+k=this.n23,o=this.n24,c=this.n31,F=this.n32,D=this.n33,w=this.n34,x=this.n41,H=this.n42,G=this.n43,K=this.n44;this.n11=b*a.n11+d*a.n21+g*a.n31+j*a.n41;this.n12=b*a.n12+d*a.n22+g*a.n32+j*a.n42;this.n13=b*a.n13+d*a.n23+g*a.n33+j*a.n43;this.n14=b*a.n14+d*a.n24+g*a.n34+j*a.n44;this.n21=n*a.n11+m*a.n21+k*a.n31+o*a.n41;this.n22=n*a.n12+m*a.n22+k*a.n32+o*a.n42;this.n23=n*a.n13+m*a.n23+k*a.n33+o*a.n43;this.n24=n*a.n14+m*a.n24+k*a.n34+o*a.n44;this.n31=c*a.n11+F*a.n21+D*a.n31+w*a.n41;this.n32=c*a.n12+F*a.n22+
+D*a.n32+w*a.n42;this.n33=c*a.n13+F*a.n23+D*a.n33+w*a.n43;this.n34=c*a.n14+F*a.n24+D*a.n34+w*a.n44;this.n41=x*a.n11+H*a.n21+G*a.n31+K*a.n41;this.n42=x*a.n12+H*a.n22+G*a.n32+K*a.n42;this.n43=x*a.n13+H*a.n23+G*a.n33+K*a.n43;this.n44=x*a.n14+H*a.n24+G*a.n34+K*a.n44},multiplyScalar:function(a){this.n11*=a;this.n12*=a;this.n13*=a;this.n14*=a;this.n21*=a;this.n22*=a;this.n23*=a;this.n24*=a;this.n31*=a;this.n32*=a;this.n33*=a;this.n34*=a;this.n41*=a;this.n42*=a;this.n43*=a;this.n44*=a},determinant:function(){return this.n14*
 this.n23*this.n32*this.n41-this.n13*this.n24*this.n32*this.n41-this.n14*this.n22*this.n33*this.n41+this.n12*this.n24*this.n33*this.n41+this.n13*this.n22*this.n34*this.n41-this.n12*this.n23*this.n34*this.n41-this.n14*this.n23*this.n31*this.n42+this.n13*this.n24*this.n31*this.n42+this.n14*this.n21*this.n33*this.n42-this.n11*this.n24*this.n33*this.n42-this.n13*this.n21*this.n34*this.n42+this.n11*this.n23*this.n34*this.n42+this.n14*this.n22*this.n31*this.n43-this.n12*this.n24*this.n31*this.n43-this.n14*
 this.n21*this.n32*this.n43+this.n11*this.n24*this.n32*this.n43+this.n12*this.n21*this.n34*this.n43-this.n11*this.n22*this.n34*this.n43-this.n13*this.n22*this.n31*this.n44+this.n12*this.n23*this.n31*this.n44+this.n13*this.n21*this.n32*this.n44-this.n11*this.n23*this.n32*this.n44-this.n12*this.n21*this.n33*this.n44+this.n11*this.n22*this.n33*this.n44},transpose:function(){function a(b,d,g){var j=b[d];b[d]=b[g];b[g]=j}a(this,"n21","n12");a(this,"n31","n13");a(this,"n32","n23");a(this,"n41","n14");a(this,
 "n42","n24");a(this,"n43","n34");return this},clone:function(){var a=new THREE.Matrix4;a.n11=this.n11;a.n12=this.n12;a.n13=this.n13;a.n14=this.n14;a.n21=this.n21;a.n22=this.n22;a.n23=this.n23;a.n24=this.n24;a.n31=this.n31;a.n32=this.n32;a.n33=this.n33;a.n34=this.n34;a.n41=this.n41;a.n42=this.n42;a.n43=this.n43;a.n44=this.n44;return a},flatten:function(){return[this.n11,this.n21,this.n31,this.n41,this.n12,this.n22,this.n32,this.n42,this.n13,this.n23,this.n33,this.n43,this.n14,this.n24,this.n34,this.n44]},
 toString:function(){return"| "+this.n11+" "+this.n12+" "+this.n13+" "+this.n14+" |\n| "+this.n21+" "+this.n22+" "+this.n23+" "+this.n24+" |\n| "+this.n31+" "+this.n32+" "+this.n33+" "+this.n34+" |\n| "+this.n41+" "+this.n42+" "+this.n43+" "+this.n44+" |"}};THREE.Matrix4.translationMatrix=function(a,b,d){var g=new THREE.Matrix4;g.n14=a;g.n24=b;g.n34=d;return g};THREE.Matrix4.scaleMatrix=function(a,b,d){var g=new THREE.Matrix4;g.n11=a;g.n22=b;g.n33=d;return g};
 THREE.Matrix4.rotationXMatrix=function(a){var b=new THREE.Matrix4;b.n22=b.n33=Math.cos(a);b.n32=Math.sin(a);b.n23=-b.n32;return b};THREE.Matrix4.rotationYMatrix=function(a){var b=new THREE.Matrix4;b.n11=b.n33=Math.cos(a);b.n13=Math.sin(a);b.n31=-b.n13;return b};THREE.Matrix4.rotationZMatrix=function(a){var b=new THREE.Matrix4;b.n11=b.n22=Math.cos(a);b.n21=Math.sin(a);b.n12=-b.n21;return b};
-THREE.Matrix4.rotationAxisAngleMatrix=function(a,b){var d=new THREE.Matrix4,g=Math.cos(b),j=Math.sin(b),p=1-g,m=a.x,q=a.y,l=a.z;d.n11=p*m*m+g;d.n12=p*m*q-j*l;d.n13=p*m*l+j*q;d.n21=p*m*q+j*l;d.n22=p*q*q+g;d.n23=p*q*l-j*m;d.n31=p*m*l-j*q;d.n32=p*q*l+j*m;d.n33=p*l*l+g;return d};
+THREE.Matrix4.rotationAxisAngleMatrix=function(a,b){var d=new THREE.Matrix4,g=Math.cos(b),j=Math.sin(b),n=1-g,m=a.x,k=a.y,o=a.z;d.n11=n*m*m+g;d.n12=n*m*k-j*o;d.n13=n*m*o+j*k;d.n21=n*m*k+j*o;d.n22=n*k*k+g;d.n23=n*k*o-j*m;d.n31=n*m*o-j*k;d.n32=n*k*o+j*m;d.n33=n*o*o+g;return d};
 THREE.Matrix4.makeInvert=function(a){var b=new THREE.Matrix4;b.n11=a.n23*a.n34*a.n42-a.n24*a.n33*a.n42+a.n24*a.n32*a.n43-a.n22*a.n34*a.n43-a.n23*a.n32*a.n44+a.n22*a.n33*a.n44;b.n12=a.n14*a.n33*a.n42-a.n13*a.n34*a.n42-a.n14*a.n32*a.n43+a.n12*a.n34*a.n43+a.n13*a.n32*a.n44-a.n12*a.n33*a.n44;b.n13=a.n13*a.n24*a.n42-a.n14*a.n23*a.n42+a.n14*a.n22*a.n43-a.n12*a.n24*a.n43-a.n13*a.n22*a.n44+a.n12*a.n23*a.n44;b.n14=a.n14*a.n23*a.n32-a.n13*a.n24*a.n32-a.n14*a.n22*a.n33+a.n12*a.n24*a.n33+a.n13*a.n22*a.n34-a.n12*
 a.n23*a.n34;b.n21=a.n24*a.n33*a.n41-a.n23*a.n34*a.n41-a.n24*a.n31*a.n43+a.n21*a.n34*a.n43+a.n23*a.n31*a.n44-a.n21*a.n33*a.n44;b.n22=a.n13*a.n34*a.n41-a.n14*a.n33*a.n41+a.n14*a.n31*a.n43-a.n11*a.n34*a.n43-a.n13*a.n31*a.n44+a.n11*a.n33*a.n44;b.n23=a.n14*a.n23*a.n41-a.n13*a.n24*a.n41-a.n14*a.n21*a.n43+a.n11*a.n24*a.n43+a.n13*a.n21*a.n44-a.n11*a.n23*a.n44;b.n24=a.n13*a.n24*a.n31-a.n14*a.n23*a.n31+a.n14*a.n21*a.n33-a.n11*a.n24*a.n33-a.n13*a.n21*a.n34+a.n11*a.n23*a.n34;b.n31=a.n22*a.n34*a.n41-a.n24*a.n32*
 a.n41+a.n24*a.n31*a.n42-a.n21*a.n34*a.n42-a.n22*a.n31*a.n44+a.n21*a.n32*a.n44;b.n32=a.n14*a.n32*a.n41-a.n12*a.n34*a.n41-a.n14*a.n31*a.n42+a.n11*a.n34*a.n42+a.n12*a.n31*a.n44-a.n11*a.n32*a.n44;b.n33=a.n13*a.n24*a.n41-a.n14*a.n22*a.n41+a.n14*a.n21*a.n42-a.n11*a.n24*a.n42-a.n12*a.n21*a.n44+a.n11*a.n22*a.n44;b.n34=a.n14*a.n22*a.n31-a.n12*a.n24*a.n31-a.n14*a.n21*a.n32+a.n11*a.n24*a.n32+a.n12*a.n21*a.n34-a.n11*a.n22*a.n34;b.n41=a.n23*a.n32*a.n41-a.n22*a.n33*a.n41-a.n23*a.n31*a.n42+a.n21*a.n33*a.n42+a.n22*
 a.n31*a.n43-a.n21*a.n32*a.n43;b.n42=a.n12*a.n33*a.n41-a.n13*a.n32*a.n41+a.n13*a.n31*a.n42-a.n11*a.n33*a.n42-a.n12*a.n31*a.n43+a.n11*a.n32*a.n43;b.n43=a.n13*a.n22*a.n41-a.n12*a.n23*a.n41-a.n13*a.n21*a.n42+a.n11*a.n23*a.n42+a.n12*a.n21*a.n43-a.n11*a.n22*a.n43;b.n44=a.n12*a.n23*a.n31-a.n13*a.n22*a.n31+a.n13*a.n21*a.n32-a.n11*a.n23*a.n32-a.n12*a.n21*a.n33+a.n11*a.n22*a.n33;b.multiplyScalar(1/a.determinant());return b};
-THREE.Matrix4.makeInvert3x3=function(a){var b=a.flatten();a=new THREE.Matrix3;var d=b[10]*b[5]-b[6]*b[9],g=-b[10]*b[1]+b[2]*b[9],j=b[6]*b[1]-b[2]*b[5],p=-b[10]*b[4]+b[6]*b[8],m=b[10]*b[0]-b[2]*b[8],q=-b[6]*b[0]+b[2]*b[4],l=b[9]*b[4]-b[5]*b[8],c=-b[9]*b[0]+b[1]*b[8],E=b[5]*b[0]-b[1]*b[4];b=b[0]*d+b[1]*p+b[2]*l;if(b==0)throw"matrix not invertible";b=1/b;a.m[0]=b*d;a.m[1]=b*g;a.m[2]=b*j;a.m[3]=b*p;a.m[4]=b*m;a.m[5]=b*q;a.m[6]=b*l;a.m[7]=b*c;a.m[8]=b*E;return a};
-THREE.Matrix4.makeFrustum=function(a,b,d,g,j,p){var m,q,l;m=new THREE.Matrix4;q=2*j/(b-a);l=2*j/(g-d);a=(b+a)/(b-a);d=(g+d)/(g-d);g=-(p+j)/(p-j);j=-2*p*j/(p-j);m.n11=q;m.n12=0;m.n13=a;m.n14=0;m.n21=0;m.n22=l;m.n23=d;m.n24=0;m.n31=0;m.n32=0;m.n33=g;m.n34=j;m.n41=0;m.n42=0;m.n43=-1;m.n44=0;return m};THREE.Matrix4.makePerspective=function(a,b,d,g){var j;a=d*Math.tan(a*Math.PI/360);j=-a;return THREE.Matrix4.makeFrustum(j*b,a*b,j,a,d,g)};
-THREE.Matrix4.makeOrtho=function(a,b,d,g,j,p){var m,q,l,c;m=new THREE.Matrix4;q=b-a;l=d-g;c=p-j;a=(b+a)/q;d=(d+g)/l;j=(p+j)/c;m.n11=2/q;m.n12=0;m.n13=0;m.n14=-a;m.n21=0;m.n22=2/l;m.n23=0;m.n24=-d;m.n31=0;m.n32=0;m.n33=-2/c;m.n34=-j;m.n41=0;m.n42=0;m.n43=0;m.n44=1;return m};
+THREE.Matrix4.makeInvert3x3=function(a){var b=a.flatten();a=new THREE.Matrix3;var d=b[10]*b[5]-b[6]*b[9],g=-b[10]*b[1]+b[2]*b[9],j=b[6]*b[1]-b[2]*b[5],n=-b[10]*b[4]+b[6]*b[8],m=b[10]*b[0]-b[2]*b[8],k=-b[6]*b[0]+b[2]*b[4],o=b[9]*b[4]-b[5]*b[8],c=-b[9]*b[0]+b[1]*b[8],F=b[5]*b[0]-b[1]*b[4];b=b[0]*d+b[1]*n+b[2]*o;if(b==0)throw"matrix not invertible";b=1/b;a.m[0]=b*d;a.m[1]=b*g;a.m[2]=b*j;a.m[3]=b*n;a.m[4]=b*m;a.m[5]=b*k;a.m[6]=b*o;a.m[7]=b*c;a.m[8]=b*F;return a};
+THREE.Matrix4.makeFrustum=function(a,b,d,g,j,n){var m,k,o;m=new THREE.Matrix4;k=2*j/(b-a);o=2*j/(g-d);a=(b+a)/(b-a);d=(g+d)/(g-d);g=-(n+j)/(n-j);j=-2*n*j/(n-j);m.n11=k;m.n12=0;m.n13=a;m.n14=0;m.n21=0;m.n22=o;m.n23=d;m.n24=0;m.n31=0;m.n32=0;m.n33=g;m.n34=j;m.n41=0;m.n42=0;m.n43=-1;m.n44=0;return m};THREE.Matrix4.makePerspective=function(a,b,d,g){var j;a=d*Math.tan(a*Math.PI/360);j=-a;return THREE.Matrix4.makeFrustum(j*b,a*b,j,a,d,g)};
+THREE.Matrix4.makeOrtho=function(a,b,d,g,j,n){var m,k,o,c;m=new THREE.Matrix4;k=b-a;o=d-g;c=n-j;a=(b+a)/k;d=(d+g)/o;j=(n+j)/c;m.n11=2/k;m.n12=0;m.n13=0;m.n14=-a;m.n21=0;m.n22=2/o;m.n23=0;m.n24=-d;m.n31=0;m.n32=0;m.n33=-2/c;m.n34=-j;m.n41=0;m.n42=0;m.n43=0;m.n44=1;return m};
 THREE.Vertex=function(a,b){this.position=a||new THREE.Vector3;this.positionWorld=new THREE.Vector3;this.positionScreen=new THREE.Vector4;this.normal=b||new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.normalScreen=new THREE.Vector3;this.__visible=true};THREE.Vertex.prototype={toString:function(){return"THREE.Vertex ( position: "+this.position+", normal: "+this.normal+" )"}};
 THREE.Face3=function(a,b,d,g,j){this.a=a;this.b=b;this.c=d;this.centroid=new THREE.Vector3;this.normal=g instanceof THREE.Vector3?g:new THREE.Vector3;this.vertexNormals=g instanceof Array?g:[];this.material=j instanceof Array?j:[j]};THREE.Face3.prototype={toString:function(){return"THREE.Face3 ( "+this.a+", "+this.b+", "+this.c+" )"}};
-THREE.Face4=function(a,b,d,g,j,p){this.a=a;this.b=b;this.c=d;this.d=g;this.centroid=new THREE.Vector3;this.normal=j instanceof THREE.Vector3?j:new THREE.Vector3;this.vertexNormals=j instanceof Array?j:[];this.material=p instanceof Array?p:[p]};THREE.Face4.prototype={toString:function(){return"THREE.Face4 ( "+this.a+", "+this.b+", "+this.c+" "+this.d+" )"}};THREE.UV=function(a,b){this.u=a||0;this.v=b||0};
+THREE.Face4=function(a,b,d,g,j,n){this.a=a;this.b=b;this.c=d;this.d=g;this.centroid=new THREE.Vector3;this.normal=j instanceof THREE.Vector3?j:new THREE.Vector3;this.vertexNormals=j instanceof Array?j:[];this.material=n instanceof Array?n:[n]};THREE.Face4.prototype={toString:function(){return"THREE.Face4 ( "+this.a+", "+this.b+", "+this.c+" "+this.d+" )"}};THREE.UV=function(a,b){this.u=a||0;this.v=b||0};
 THREE.UV.prototype={copy:function(a){this.u=a.u;this.v=a.v},toString:function(){return"THREE.UV ("+this.u+", "+this.v+")"}};THREE.Geometry=function(){this.vertices=[];this.faces=[];this.uvs=[];this.geometryChunks={}};
 THREE.Geometry.prototype={computeCentroids:function(){var a,b,d;a=0;for(b=this.faces.length;a<b;a++){d=this.faces[a];d.centroid.set(0,0,0);if(d instanceof THREE.Face3){d.centroid.addSelf(this.vertices[d.a].position);d.centroid.addSelf(this.vertices[d.b].position);d.centroid.addSelf(this.vertices[d.c].position);d.centroid.divideScalar(3)}else if(d instanceof THREE.Face4){d.centroid.addSelf(this.vertices[d.a].position);d.centroid.addSelf(this.vertices[d.b].position);d.centroid.addSelf(this.vertices[d.c].position);
-d.centroid.addSelf(this.vertices[d.d].position);d.centroid.divideScalar(4)}}},computeNormals:function(a){var b,d,g,j,p,m,q=new THREE.Vector3,l=new THREE.Vector3;g=0;for(j=this.vertices.length;g<j;g++){p=this.vertices[g];p.normal.set(0,0,0)}g=0;for(j=this.faces.length;g<j;g++){p=this.faces[g];if(a&&p.vertexNormals.length){q.set(0,0,0);b=0;for(d=p.normal.length;b<d;b++)q.addSelf(p.vertexNormals[b]);q.divideScalar(3)}else{b=this.vertices[p.a];d=this.vertices[p.b];m=this.vertices[p.c];q.sub(m.position,
-d.position);l.sub(b.position,d.position);q.crossSelf(l)}q.isZero()||q.normalize();p.normal.copy(q)}},computeVertexNormals:function(){var a,b=[],d,g;a=0;for(vl=this.vertices.length;a<vl;a++)b[a]=new THREE.Vector3;a=0;for(d=this.faces.length;a<d;a++){g=this.faces[a];if(g instanceof THREE.Face3){b[g.a].addSelf(g.normal);b[g.b].addSelf(g.normal);b[g.c].addSelf(g.normal)}else if(g instanceof THREE.Face4){b[g.a].addSelf(g.normal);b[g.b].addSelf(g.normal);b[g.c].addSelf(g.normal);b[g.d].addSelf(g.normal)}}a=
+d.centroid.addSelf(this.vertices[d.d].position);d.centroid.divideScalar(4)}}},computeNormals:function(a){var b,d,g,j,n,m,k=new THREE.Vector3,o=new THREE.Vector3;g=0;for(j=this.vertices.length;g<j;g++){n=this.vertices[g];n.normal.set(0,0,0)}g=0;for(j=this.faces.length;g<j;g++){n=this.faces[g];if(a&&n.vertexNormals.length){k.set(0,0,0);b=0;for(d=n.normal.length;b<d;b++)k.addSelf(n.vertexNormals[b]);k.divideScalar(3)}else{b=this.vertices[n.a];d=this.vertices[n.b];m=this.vertices[n.c];k.sub(m.position,
+d.position);o.sub(b.position,d.position);k.crossSelf(o)}k.isZero()||k.normalize();n.normal.copy(k)}},computeVertexNormals:function(){var a,b=[],d,g;a=0;for(vl=this.vertices.length;a<vl;a++)b[a]=new THREE.Vector3;a=0;for(d=this.faces.length;a<d;a++){g=this.faces[a];if(g instanceof THREE.Face3){b[g.a].addSelf(g.normal);b[g.b].addSelf(g.normal);b[g.c].addSelf(g.normal)}else if(g instanceof THREE.Face4){b[g.a].addSelf(g.normal);b[g.b].addSelf(g.normal);b[g.c].addSelf(g.normal);b[g.d].addSelf(g.normal)}}a=
 0;for(vl=this.vertices.length;a<vl;a++)b[a].normalize();a=0;for(d=this.faces.length;a<d;a++){g=this.faces[a];if(g instanceof THREE.Face3){g.vertexNormals[0]=b[g.a].clone();g.vertexNormals[1]=b[g.b].clone();g.vertexNormals[2]=b[g.c].clone()}else if(g instanceof THREE.Face4){g.vertexNormals[0]=b[g.a].clone();g.vertexNormals[1]=b[g.b].clone();g.vertexNormals[2]=b[g.c].clone();g.vertexNormals[3]=b[g.d].clone()}}},computeBoundingBox:function(){if(this.vertices.length>0){this.bbox={x:[this.vertices[0].position.x,
 this.vertices[0].position.x],y:[this.vertices[0].position.y,this.vertices[0].position.y],z:[this.vertices[0].position.z,this.vertices[0].position.z]};for(var a=1,b=this.vertices.length;a<b;a++){vertex=this.vertices[a];if(vertex.position.x<this.bbox.x[0])this.bbox.x[0]=vertex.position.x;else if(vertex.position.x>this.bbox.x[1])this.bbox.x[1]=vertex.position.x;if(vertex.position.y<this.bbox.y[0])this.bbox.y[0]=vertex.position.y;else if(vertex.position.y>this.bbox.y[1])this.bbox.y[1]=vertex.position.y;
-if(vertex.position.z<this.bbox.z[0])this.bbox.z[0]=vertex.position.z;else if(vertex.position.z>this.bbox.z[1])this.bbox.z[1]=vertex.position.z}}},sortFacesByMaterial:function(){function a(E){var G=[];b=0;for(d=E.length;b<d;b++)E[b]==undefined?G.push("undefined"):G.push(E[b].toString());return G.join("_")}var b,d,g,j,p,m,q,l,c={};g=0;for(j=this.faces.length;g<j;g++){p=this.faces[g];m=p.material;q=a(m);if(c[q]==undefined)c[q]={hash:q,counter:0};l=c[q].hash+"_"+c[q].counter;if(this.geometryChunks[l]==
-undefined)this.geometryChunks[l]={faces:[],material:m,vertices:0};p=p instanceof THREE.Face3?3:4;if(this.geometryChunks[l].vertices+p>65535){c[q].counter+=1;l=c[q].hash+"_"+c[q].counter;if(this.geometryChunks[l]==undefined)this.geometryChunks[l]={faces:[],material:m,vertices:0}}this.geometryChunks[l].faces.push(g);this.geometryChunks[l].vertices+=p}},toString:function(){return"THREE.Geometry ( vertices: "+this.vertices+", faces: "+this.faces+", uvs: "+this.uvs+" )"}};
+if(vertex.position.z<this.bbox.z[0])this.bbox.z[0]=vertex.position.z;else if(vertex.position.z>this.bbox.z[1])this.bbox.z[1]=vertex.position.z}}},sortFacesByMaterial:function(){function a(F){var D=[];b=0;for(d=F.length;b<d;b++)F[b]==undefined?D.push("undefined"):D.push(F[b].toString());return D.join("_")}var b,d,g,j,n,m,k,o,c={};g=0;for(j=this.faces.length;g<j;g++){n=this.faces[g];m=n.material;k=a(m);if(c[k]==undefined)c[k]={hash:k,counter:0};o=c[k].hash+"_"+c[k].counter;if(this.geometryChunks[o]==
+undefined)this.geometryChunks[o]={faces:[],material:m,vertices:0};n=n instanceof THREE.Face3?3:4;if(this.geometryChunks[o].vertices+n>65535){c[k].counter+=1;o=c[k].hash+"_"+c[k].counter;if(this.geometryChunks[o]==undefined)this.geometryChunks[o]={faces:[],material:m,vertices:0}}this.geometryChunks[o].faces.push(g);this.geometryChunks[o].vertices+=n}},toString:function(){return"THREE.Geometry ( vertices: "+this.vertices+", faces: "+this.faces+", uvs: "+this.uvs+" )"}};
 THREE.Camera=function(a,b,d,g){this.position=new THREE.Vector3(0,0,0);this.target={position:new THREE.Vector3(0,0,0)};this.up=new THREE.Vector3(0,1,0);this.matrix=new THREE.Matrix4;this.projectionMatrix=THREE.Matrix4.makePerspective(a,b,d,g);this.autoUpdateMatrix=true;this.updateMatrix=function(){this.matrix.lookAt(this.position,this.target.position,this.up)};this.toString=function(){return"THREE.Camera ( "+this.position+", "+this.target.position+" )"}};THREE.Light=function(a){this.color=new THREE.Color(a)};
 THREE.AmbientLight=function(a){THREE.Light.call(this,a)};THREE.AmbientLight.prototype=new THREE.Light;THREE.AmbientLight.prototype.constructor=THREE.AmbientLight;THREE.DirectionalLight=function(a,b){THREE.Light.call(this,a);this.position=new THREE.Vector3(0,1,0);this.intensity=b||1};THREE.DirectionalLight.prototype=new THREE.Light;THREE.DirectionalLight.prototype.constructor=THREE.DirectionalLight;
 THREE.PointLight=function(a,b){THREE.Light.call(this,a);this.position=new THREE.Vector3;this.intensity=b||1};THREE.DirectionalLight.prototype=new THREE.Light;THREE.DirectionalLight.prototype.constructor=THREE.PointLight;
@@ -60,15 +60,15 @@ THREE.Mesh=function(a,b,d){THREE.Object3D.call(this);this.geometry=a;this.materi
 THREE.Mesh.prototype.normalizeUVs=function(){var a,b,d,g,j;a=0;for(b=this.geometry.uvs.length;a<b;a++){j=this.geometry.uvs[a];d=0;for(g=j.length;d<g;d++){if(j[d].u!=1)j[d].u-=Math.floor(j[d].u);if(j[d].v!=1)j[d].v-=Math.floor(j[d].v)}}};THREE.FlatShading=0;THREE.SmoothShading=1;THREE.NormalBlending=0;THREE.AdditiveBlending=1;THREE.SubtractiveBlending=2;
 THREE.LineBasicMaterial=function(a){this.color=new THREE.Color(16711680);this.opacity=1;this.blending=THREE.NormalBlending;this.linewidth=1;this.linejoin=this.linecap="round";if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.opacity!==undefined)this.opacity=a.opacity;if(a.blending!==undefined)this.blending=a.blending;if(a.linewidth!==undefined)this.linewidth=a.linewidth;if(a.linecap!==undefined)this.linecap=a.linecap;if(a.linejoin!==undefined)this.linejoin=a.linejoin}this.toString=function(){return"THREE.LineBasicMaterial (<br/>color: "+
 this.color+"<br/>opacity: "+this.opacity+"<br/>blending: "+this.blending+"<br/>linewidth: "+this.linewidth+"<br/>linecap: "+this.linecap+"<br/>linejoin: "+this.linejoin+"<br/>)"}};
-THREE.MeshBasicMaterial=function(a){this.id=THREE.MeshBasicMaterialCounter.value++;this.color=new THREE.Color(15658734);this.env_map=this.map=null;this.combine=THREE.Multiply;this.reflectivity=1;this.refraction_ratio=0.98;this.opacity=1;this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap="round";if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.map!==undefined)this.map=a.map;if(a.env_map!==
-undefined)this.env_map=a.env_map;if(a.combine!==undefined)this.combine=a.combine;if(a.reflectivity!==undefined)this.reflectivity=a.reflectivity;if(a.refraction_ratio!==undefined)this.refraction_ratio=a.refraction_ratio;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending;if(a.wireframe!==undefined)this.wireframe=a.wireframe;if(a.wireframe_linewidth!==undefined)this.wireframe_linewidth=a.wireframe_linewidth;
-if(a.wireframe_linecap!==undefined)this.wireframe_linecap=a.wireframe_linecap;if(a.wireframe_linejoin!==undefined)this.wireframe_linejoin=a.wireframe_linejoin}this.toString=function(){return"THREE.MeshBasicMaterial (<br/>id: "+this.id+"<br/>color: "+this.color+"<br/>map: "+this.map+"<br/>env_map: "+this.env_map+"<br/>combine: "+this.combine+"<br/>reflectivity: "+this.reflectivity+"<br/>refraction_ratio: "+this.refraction_ratio+"<br/>opacity: "+this.opacity+"<br/>blending: "+this.blending+"<br/>wireframe: "+
-this.wireframe+"<br/>wireframe_linewidth: "+this.wireframe_linewidth+"<br/>wireframe_linecap: "+this.wireframe_linecap+"<br/>wireframe_linejoin: "+this.wireframe_linejoin+"<br/>)"}};THREE.MeshBasicMaterialCounter={value:0};
-THREE.MeshLambertMaterial=function(a){this.id=THREE.MeshLambertMaterialCounter.value++;this.color=new THREE.Color(15658734);this.env_map=this.map=null;this.combine=THREE.Multiply;this.reflectivity=1;this.refraction_ratio=0.98;this.opacity=1;this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap="round";if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.map!==undefined)this.map=a.map;
-if(a.env_map!==undefined)this.env_map=a.env_map;if(a.combine!==undefined)this.combine=a.combine;if(a.reflectivity!==undefined)this.reflectivity=a.reflectivity;if(a.refraction_ratio!==undefined)this.refraction_ratio=a.refraction_ratio;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending;if(a.wireframe!==undefined)this.wireframe=a.wireframe;if(a.wireframe_linewidth!==undefined)this.wireframe_linewidth=a.wireframe_linewidth;
-if(a.wireframe_linecap!==undefined)this.wireframe_linecap=a.wireframe_linecap;if(a.wireframe_linejoin!==undefined)this.wireframe_linejoin=a.wireframe_linejoin}this.toString=function(){return"THREE.MeshLambertMaterial (<br/>id: "+this.id+"<br/>color: "+this.color+"<br/>map: "+this.map+"<br/>env_map: "+this.env_map+"<br/>combine: "+this.combine+"<br/>reflectivity: "+this.reflectivity+"<br/>refraction_ratio: "+this.refraction_ratio+"<br/>opacity: "+this.opacity+"<br/>shading: "+this.shading+"<br/>blending: "+
-this.blending+"<br/>wireframe: "+this.wireframe+"<br/>wireframe_linewidth: "+this.wireframe_linewidth+"<br/>wireframe_linecap: "+this.wireframe_linecap+"<br/>wireframe_linejoin: "+this.wireframe_linejoin+"<br/> )"}};THREE.MeshLambertMaterialCounter={value:0};
-THREE.MeshPhongMaterial=function(a){this.id=THREE.MeshPhongMaterialCounter.value++;this.color=new THREE.Color(15658734);this.ambient=new THREE.Color(328965);this.specular=new THREE.Color(1118481);this.shininess=30;this.env_map=this.specular_map=this.map=null;this.combine=THREE.Multiply;this.reflectivity=1;this.refraction_ratio=0.98;this.opacity=1;this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap=
+THREE.MeshBasicMaterial=function(a){this.id=THREE.MeshBasicMaterialCounter.value++;this.color=new THREE.Color(15658734);this.env_map=this.map=null;this.combine=THREE.MultiplyOperation;this.reflectivity=1;this.refraction_ratio=0.98;this.opacity=1;this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap="round";if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.map!==undefined)this.map=
+a.map;if(a.env_map!==undefined)this.env_map=a.env_map;if(a.combine!==undefined)this.combine=a.combine;if(a.reflectivity!==undefined)this.reflectivity=a.reflectivity;if(a.refraction_ratio!==undefined)this.refraction_ratio=a.refraction_ratio;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending;if(a.wireframe!==undefined)this.wireframe=a.wireframe;if(a.wireframe_linewidth!==undefined)this.wireframe_linewidth=
+a.wireframe_linewidth;if(a.wireframe_linecap!==undefined)this.wireframe_linecap=a.wireframe_linecap;if(a.wireframe_linejoin!==undefined)this.wireframe_linejoin=a.wireframe_linejoin}this.toString=function(){return"THREE.MeshBasicMaterial (<br/>id: "+this.id+"<br/>color: "+this.color+"<br/>map: "+this.map+"<br/>env_map: "+this.env_map+"<br/>combine: "+this.combine+"<br/>reflectivity: "+this.reflectivity+"<br/>refraction_ratio: "+this.refraction_ratio+"<br/>opacity: "+this.opacity+"<br/>blending: "+
+this.blending+"<br/>wireframe: "+this.wireframe+"<br/>wireframe_linewidth: "+this.wireframe_linewidth+"<br/>wireframe_linecap: "+this.wireframe_linecap+"<br/>wireframe_linejoin: "+this.wireframe_linejoin+"<br/>)"}};THREE.MeshBasicMaterialCounter={value:0};
+THREE.MeshLambertMaterial=function(a){this.id=THREE.MeshLambertMaterialCounter.value++;this.color=new THREE.Color(15658734);this.env_map=this.map=null;this.combine=THREE.MultiplyOperation;this.reflectivity=1;this.refraction_ratio=0.98;this.opacity=1;this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap="round";if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.map!==undefined)this.map=
+a.map;if(a.env_map!==undefined)this.env_map=a.env_map;if(a.combine!==undefined)this.combine=a.combine;if(a.reflectivity!==undefined)this.reflectivity=a.reflectivity;if(a.refraction_ratio!==undefined)this.refraction_ratio=a.refraction_ratio;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending;if(a.wireframe!==undefined)this.wireframe=a.wireframe;if(a.wireframe_linewidth!==undefined)this.wireframe_linewidth=
+a.wireframe_linewidth;if(a.wireframe_linecap!==undefined)this.wireframe_linecap=a.wireframe_linecap;if(a.wireframe_linejoin!==undefined)this.wireframe_linejoin=a.wireframe_linejoin}this.toString=function(){return"THREE.MeshLambertMaterial (<br/>id: "+this.id+"<br/>color: "+this.color+"<br/>map: "+this.map+"<br/>env_map: "+this.env_map+"<br/>combine: "+this.combine+"<br/>reflectivity: "+this.reflectivity+"<br/>refraction_ratio: "+this.refraction_ratio+"<br/>opacity: "+this.opacity+"<br/>shading: "+
+this.shading+"<br/>blending: "+this.blending+"<br/>wireframe: "+this.wireframe+"<br/>wireframe_linewidth: "+this.wireframe_linewidth+"<br/>wireframe_linecap: "+this.wireframe_linecap+"<br/>wireframe_linejoin: "+this.wireframe_linejoin+"<br/> )"}};THREE.MeshLambertMaterialCounter={value:0};
+THREE.MeshPhongMaterial=function(a){this.id=THREE.MeshPhongMaterialCounter.value++;this.color=new THREE.Color(15658734);this.ambient=new THREE.Color(328965);this.specular=new THREE.Color(1118481);this.shininess=30;this.env_map=this.specular_map=this.map=null;this.combine=THREE.MultiplyOperation;this.reflectivity=1;this.refraction_ratio=0.98;this.opacity=1;this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap=
 "round";if(a){if(a.color!==undefined)this.color=new THREE.Color(a.color);if(a.ambient!==undefined)this.ambient=new THREE.Color(a.ambient);if(a.specular!==undefined)this.specular=new THREE.Color(a.specular);if(a.shininess!==undefined)this.shininess=a.shininess;if(a.map!==undefined)this.map=a.map;if(a.specular_map!==undefined)this.specular_map=a.specular_map;if(a.env_map!==undefined)this.env_map=a.env_map;if(a.combine!==undefined)this.combine=a.combine;if(a.reflectivity!==undefined)this.reflectivity=
 a.reflectivity;if(a.refraction_ratio!==undefined)this.refraction_ratio=a.refraction_ratio;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending;if(a.wireframe!==undefined)this.wireframe=a.wireframe;if(a.wireframe_linewidth!==undefined)this.wireframe_linewidth=a.wireframe_linewidth;if(a.wireframe_linecap!==undefined)this.wireframe_linecap=a.wireframe_linecap;if(a.wireframe_linejoin!==undefined)this.wireframe_linejoin=
 a.wireframe_linejoin}this.toString=function(){return"THREE.MeshPhongMaterial (<br/>id: "+this.id+"<br/>color: "+this.color+"<br/>ambient: "+this.ambient+"<br/>specular: "+this.specular+"<br/>shininess: "+this.shininess+"<br/>map: "+this.map+"<br/>specular_map: "+this.specular_map+"<br/>env_map: "+this.env_map+"<br/>combine: "+this.combine+"<br/>reflectivity: "+this.reflectivity+"<br/>refraction_ratio: "+this.refraction_ratio+"<br/>opacity: "+this.opacity+"<br/>shading: "+this.shading+"<br/>wireframe: "+
@@ -81,90 +81,93 @@ a.uniforms;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undef
 this.blending+"<br/>wireframe: "+this.wireframe+"<br/>wireframe_linewidth: "+this.wireframe_linewidth+"<br/>wireframe_linecap: "+this.wireframe_linecap+"<br/>wireframe_linejoin: "+this.wireframe_linejoin+"<br/>)"}};THREE.MeshShaderMaterialCounter={value:0};
 THREE.ParticleBasicMaterial=function(a){this.color=new THREE.Color(16711680);this.map=null;this.opacity=1;this.blending=THREE.NormalBlending;this.offset=new THREE.Vector2;if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.map!==undefined)this.map=a.map;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.blending!==undefined)this.blending=a.blending}this.toString=function(){return"THREE.ParticleBasicMaterial (<br/>color: "+this.color+"<br/>map: "+this.map+"<br/>opacity: "+this.opacity+"<br/>blending: "+
 this.blending+"<br/>)"}};THREE.ParticleCircleMaterial=function(a){this.color=new THREE.Color(16711680);this.opacity=1;this.blending=THREE.NormalBlending;if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.opacity!==undefined)this.opacity=a.opacity;if(a.blending!==undefined)this.blending=a.blending}this.toString=function(){return"THREE.ParticleCircleMaterial (<br/>color: "+this.color+"<br/>opacity: "+this.opacity+"<br/>blending: "+this.blending+"<br/>)"}};
-THREE.ParticleDOMMaterial=function(a){this.domElement=a;this.toString=function(){return"THREE.ParticleDOMMaterial ( domElement: "+this.domElement+" )"}};THREE.Texture=function(a,b,d,g){this.image=a;this.loaded=false;this.mapping=b!==undefined?b:THREE.UVMapping;this.wrap_s=d!==undefined?d:THREE.ClampToEdge;this.wrap_t=g!==undefined?g:THREE.ClampToEdge;this.toString=function(){return"THREE.Texture (<br/>image: "+this.image+"<br/>wrap_s: "+this.wrap_s+"<br/>wrap_t: "+this.wrap_t+"<br/>)"}};
-THREE.UVMapping=0;THREE.ReflectionMapping=1;THREE.RefractionMapping=2;THREE.Multiply=0;THREE.Mix=1;THREE.Repeat=0;THREE.ClampToEdge=1;THREE.MirroredRepeat=2;THREE.TextureCube=function(a,b){this.image=a;this.mapping=b?b:THREE.ReflectionMap;this.toString=function(){return"THREE.TextureCube (<br/>image: "+this.image+"<br/>mapping: "+this.mapping+"<br/>)"}};
+THREE.ParticleDOMMaterial=function(a){this.domElement=a;this.toString=function(){return"THREE.ParticleDOMMaterial ( domElement: "+this.domElement+" )"}};
+THREE.Texture=function(a,b,d,g,j,n){this.image=a;this.mapping=b!==undefined?b:new THREE.UVMapping;this.wrap_s=d!==undefined?d:THREE.ClampToEdgeWrapping;this.wrap_t=g!==undefined?g:THREE.ClampToEdgeWrapping;this.mag_filter=j!==undefined?j:THREE.LinearFilter;this.min_filter=n!==undefined?n:THREE.LinearMipMapLinearFilter;this.toString=function(){return"THREE.Texture (<br/>image: "+this.image+"<br/>wrap_s: "+this.wrap_s+"<br/>wrap_t: "+this.wrap_t+"<br/>mag_filter: "+this.mag_filter+"<br/>min_filter: "+
+this.min_filter+"<br/>)"}};THREE.MultiplyOperation=0;THREE.MixOperation=1;THREE.RepeatWrapping=0;THREE.ClampToEdgeWrapping=1;THREE.MirroredRepeatWrapping=2;THREE.NearestFilter=3;THREE.NearestMipMapNearestFilter=4;THREE.NearestMipMapLinearFilter=5;THREE.LinearFilter=6;THREE.LinearMipMapNearestFilter=7;THREE.LinearMipMapLinearFilter=8;THREE.CubeReflectionMapping=function(){};THREE.CubeRefractionMapping=function(){};THREE.LatitudeReflectionMapping=function(){};THREE.LatitudeRefractionMapping=function(){};
+THREE.SphericalReflectionMapping=function(){};THREE.SphericalRefractionMapping=function(){};THREE.UVMapping=function(){};
 THREE.Scene=function(){this.objects=[];this.lights=[];this.addObject=function(a){this.objects.push(a)};this.removeObject=function(a){a=this.objects.indexOf(a);a!==-1&&this.objects.splice(a,1)};this.addLight=function(a){this.lights.push(a)};this.removeLight=function(a){a=this.lights.indexOf(a);a!==-1&&this.lights.splice(a,1)};this.toString=function(){return"THREE.Scene ( "+this.objects+" )"}};
-THREE.Projector=function(){function a(T,z){var f=0,k=1,e=T.z+T.w,n=z.z+z.w,i=-T.z+T.w,h=-z.z+z.w;if(e>=0&&n>=0&&i>=0&&h>=0)return true;else if(e<0&&n<0||i<0&&h<0)return false;else{if(e<0)f=Math.max(f,e/(e-n));else if(n<0)k=Math.min(k,e/(e-n));if(i<0)f=Math.max(f,i/(i-h));else if(h<0)k=Math.min(k,i/(i-h));if(k<f)return false;else{T.lerpSelf(z,f);z.lerpSelf(T,1-k);return true}}}var b=null,d,g,j,p=[],m,q,l=[],c,E,G=[],w=new THREE.Vector4,F=new THREE.Matrix4,P=new THREE.Matrix4,J=new THREE.Vector4,M=
-new THREE.Vector4,o;this.projectScene=function(T,z){var f,k,e,n,i,h,r,t,K,A,H,Q,u,O,s,y,x;b=[];j=q=E=0;z.autoUpdateMatrix&&z.updateMatrix();F.multiply(z.projectionMatrix,z.matrix);r=T.objects;f=0;for(k=r.length;f<k;f++){t=r[f];t.autoUpdateMatrix&&t.updateMatrix();K=t.matrix;A=t.rotationMatrix;H=t.material;Q=t.overdraw;if(t instanceof THREE.Mesh){u=t.geometry.vertices;e=0;for(n=u.length;e<n;e++){O=u[e];O.positionWorld.copy(O.position);K.multiplyVector3(O.positionWorld);s=O.positionScreen;s.copy(O.positionWorld);
-F.multiplyVector4(s);s.multiplyScalar(1/s.w);O.__visible=s.z>0&&s.z<1}O=t.geometry.faces;e=0;for(n=O.length;e<n;e++){s=O[e];if(s instanceof THREE.Face3){i=u[s.a];h=u[s.b];y=u[s.c];if(i.__visible&&h.__visible&&y.__visible)if(t.doubleSided||t.flipSided!=(y.positionScreen.x-i.positionScreen.x)*(h.positionScreen.y-i.positionScreen.y)-(y.positionScreen.y-i.positionScreen.y)*(h.positionScreen.x-i.positionScreen.x)<0){d=p[j]=p[j]||new THREE.RenderableFace3;d.v1.positionWorld.copy(i.positionWorld);d.v2.positionWorld.copy(h.positionWorld);
-d.v3.positionWorld.copy(y.positionWorld);d.v1.positionScreen.copy(i.positionScreen);d.v2.positionScreen.copy(h.positionScreen);d.v3.positionScreen.copy(y.positionScreen);d.normalWorld.copy(s.normal);A.multiplyVector3(d.normalWorld);d.centroidWorld.copy(s.centroid);K.multiplyVector3(d.centroidWorld);d.centroidScreen.copy(d.centroidWorld);F.multiplyVector3(d.centroidScreen);y=s.vertexNormals;o=d.vertexNormalsWorld;i=0;for(h=y.length;i<h;i++){x=o[i]=o[i]||new THREE.Vector3;x.copy(y[i]);A.multiplyVector3(x)}d.z=
-d.centroidScreen.z;d.meshMaterial=H;d.faceMaterial=s.material;d.overdraw=Q;if(t.geometry.uvs[e]){d.uvs[0]=t.geometry.uvs[e][0];d.uvs[1]=t.geometry.uvs[e][1];d.uvs[2]=t.geometry.uvs[e][2]}b.push(d);j++}}else if(s instanceof THREE.Face4){i=u[s.a];h=u[s.b];y=u[s.c];x=u[s.d];if(i.__visible&&h.__visible&&y.__visible&&x.__visible)if(t.doubleSided||t.flipSided!=((x.positionScreen.x-i.positionScreen.x)*(h.positionScreen.y-i.positionScreen.y)-(x.positionScreen.y-i.positionScreen.y)*(h.positionScreen.x-i.positionScreen.x)<
-0||(h.positionScreen.x-y.positionScreen.x)*(x.positionScreen.y-y.positionScreen.y)-(h.positionScreen.y-y.positionScreen.y)*(x.positionScreen.x-y.positionScreen.x)<0)){d=p[j]=p[j]||new THREE.RenderableFace3;d.v1.positionWorld.copy(i.positionWorld);d.v2.positionWorld.copy(h.positionWorld);d.v3.positionWorld.copy(x.positionWorld);d.v1.positionScreen.copy(i.positionScreen);d.v2.positionScreen.copy(h.positionScreen);d.v3.positionScreen.copy(x.positionScreen);d.normalWorld.copy(s.normal);A.multiplyVector3(d.normalWorld);
-d.centroidWorld.copy(s.centroid);K.multiplyVector3(d.centroidWorld);d.centroidScreen.copy(d.centroidWorld);F.multiplyVector3(d.centroidScreen);d.z=d.centroidScreen.z;d.meshMaterial=H;d.faceMaterial=s.material;d.overdraw=Q;if(t.geometry.uvs[e]){d.uvs[0]=t.geometry.uvs[e][0];d.uvs[1]=t.geometry.uvs[e][1];d.uvs[2]=t.geometry.uvs[e][3]}b.push(d);j++;g=p[j]=p[j]||new THREE.RenderableFace3;g.v1.positionWorld.copy(h.positionWorld);g.v2.positionWorld.copy(y.positionWorld);g.v3.positionWorld.copy(x.positionWorld);
-g.v1.positionScreen.copy(h.positionScreen);g.v2.positionScreen.copy(y.positionScreen);g.v3.positionScreen.copy(x.positionScreen);g.normalWorld.copy(d.normalWorld);g.centroidWorld.copy(d.centroidWorld);g.centroidScreen.copy(d.centroidScreen);g.z=g.centroidScreen.z;g.meshMaterial=H;g.faceMaterial=s.material;g.overdraw=Q;if(t.geometry.uvs[e]){g.uvs[0]=t.geometry.uvs[e][1];g.uvs[1]=t.geometry.uvs[e][2];g.uvs[2]=t.geometry.uvs[e][3]}b.push(g);j++}}}}else if(t instanceof THREE.Line){P.multiply(F,K);u=t.geometry.vertices;
-O=u[0];O.positionScreen.copy(O.position);P.multiplyVector4(O.positionScreen);e=1;for(n=u.length;e<n;e++){i=u[e];i.positionScreen.copy(i.position);P.multiplyVector4(i.positionScreen);h=u[e-1];J.copy(i.positionScreen);M.copy(h.positionScreen);if(a(J,M)){J.multiplyScalar(1/J.w);M.multiplyScalar(1/M.w);m=l[q]=l[q]||new THREE.RenderableLine;m.v1.positionScreen.copy(J);m.v2.positionScreen.copy(M);m.z=Math.max(J.z,M.z);m.material=t.material;b.push(m);q++}}}else if(t instanceof THREE.Particle){w.set(t.position.x,
-t.position.y,t.position.z,1);F.multiplyVector4(w);w.z/=w.w;if(w.z>0&&w.z<1){c=G[E]=G[E]||new THREE.RenderableParticle;c.x=w.x/w.w;c.y=w.y/w.w;c.z=w.z;c.rotation=t.rotation.z;c.scale.x=t.scale.x*Math.abs(c.x-(w.x+z.projectionMatrix.n11)/(w.w+z.projectionMatrix.n14));c.scale.y=t.scale.y*Math.abs(c.y-(w.y+z.projectionMatrix.n22)/(w.w+z.projectionMatrix.n24));c.material=t.material;b.push(c);E++}}}b.sort(function(R,C){return C.z-R.z});return b};this.unprojectVector=function(T,z){var f=new THREE.Matrix4;
-f.multiply(THREE.Matrix4.makeInvert(z.matrix),THREE.Matrix4.makeInvert(z.projectionMatrix));f.multiplyVector3(T);return T}};
-THREE.DOMRenderer=function(){THREE.Renderer.call(this);var a=null,b=new THREE.Projector,d,g,j,p;this.domElement=document.createElement("div");this.setSize=function(m,q){d=m;g=q;j=d/2;p=g/2};this.render=function(m,q){var l,c,E,G,w,F,P,J;a=b.projectScene(m,q);l=0;for(c=a.length;l<c;l++){w=a[l];if(w instanceof THREE.RenderableParticle){P=w.x*j+j;J=w.y*p+p;E=0;for(G=w.material.length;E<G;E++){F=w.material[E];if(F instanceof THREE.ParticleDOMMaterial){F=F.domElement;F.style.left=P+"px";F.style.top=J+"px"}}}}}};
-THREE.CanvasRenderer=function(){function a(I,Y,U,D){var v,L,$,N,X=I.lights;I=0;for(v=X.length;I<v;I++){L=X[I];$=L.color;N=L.intensity;if(L instanceof THREE.DirectionalLight){L=U.dot(L.position)*N;if(L>0){D.r+=$.r*L;D.g+=$.g*L;D.b+=$.b*L}}else if(L instanceof THREE.PointLight){aa.sub(L.position,Y);aa.normalize();L=U.dot(aa)*N;if(L>0){D.r+=$.r*L;D.g+=$.g*L;D.b+=$.b*L}}}}function b(I,Y,U,D,v,L){if(v.opacity!=0){p(v.opacity);m(v.blending);K=I.positionScreen.x;A=I.positionScreen.y;H=Y.positionScreen.x;
-Q=Y.positionScreen.y;u=U.positionScreen.x;O=U.positionScreen.y;var $=K,N=A,X=H,ba=Q,Z=u,ca=O;o.beginPath();o.moveTo($,N);o.lineTo(X,ba);o.lineTo(Z,ca);o.lineTo($,N);o.closePath();if(v instanceof THREE.MeshBasicMaterial)if(v.map&&v.map.loaded)j(K,A,H,Q,u,O,v.map.image,D.uvs[0].u,D.uvs[0].v,D.uvs[1].u,D.uvs[1].v,D.uvs[2].u,D.uvs[2].v);else if(v.env_map&&v.env_map.loaded){if(v.env_map.mapping==THREE.ReflectionMapping){aa.copy(D.vertexNormalsWorld[0]);V=(aa.x*camera.matrix.n11+aa.y*camera.matrix.n12+
-aa.z*camera.matrix.n13)*0.5+0.5;ka=-(aa.x*camera.matrix.n21+aa.y*camera.matrix.n22+aa.z*camera.matrix.n23)*0.5+0.5;aa.copy(D.vertexNormalsWorld[1]);za=(aa.x*camera.matrix.n11+aa.y*camera.matrix.n12+aa.z*camera.matrix.n13)*0.5+0.5;Aa=-(aa.x*camera.matrix.n21+aa.y*camera.matrix.n22+aa.z*camera.matrix.n23)*0.5+0.5;aa.copy(D.vertexNormalsWorld[2]);Ba=(aa.x*camera.matrix.n11+aa.y*camera.matrix.n12+aa.z*camera.matrix.n13)*0.5+0.5;Ca=-(aa.x*camera.matrix.n21+aa.y*camera.matrix.n22+aa.z*camera.matrix.n23)*
-0.5+0.5;j(K,A,H,Q,u,O,v.env_map.image,V,ka,za,Aa,Ba,Ca)}}else v.wireframe?d(v.color.__styleString,v.wireframe_linewidth):g(v.color.__styleString);else if(v instanceof THREE.MeshLambertMaterial){if(v.map&&!v.wireframe){j(K,A,H,Q,u,O,v.map.image,D.uvs[0].u,D.uvs[0].v,D.uvs[1].u,D.uvs[1].v,D.uvs[2].u,D.uvs[2].v);m(THREE.SubtractiveBlending)}if(va)if(!v.wireframe&&v.shading==THREE.SmoothShading&&D.vertexNormalsWorld.length==3){y.r=x.r=R.r=ga.r;y.g=x.g=R.g=ga.g;y.b=x.b=R.b=ga.b;a(L,D.v1.positionWorld,
-D.vertexNormalsWorld[0],y);a(L,D.v2.positionWorld,D.vertexNormalsWorld[1],x);a(L,D.v3.positionWorld,D.vertexNormalsWorld[2],R);C.r=(x.r+R.r)*0.5;C.g=(x.g+R.g)*0.5;C.b=(x.b+R.b)*0.5;S=q(y,x,R,C);j(K,A,H,Q,u,O,S,0,0,1,0,0,1)}else{ha.r=ga.r;ha.g=ga.g;ha.b=ga.b;a(L,D.centroidWorld,D.normalWorld,ha);s.r=v.color.r*ha.r;s.g=v.color.g*ha.g;s.b=v.color.b*ha.b;s.updateStyleString();v.wireframe?d(s.__styleString,v.wireframe_linewidth):g(s.__styleString)}else v.wireframe?d(v.color.__styleString,v.wireframe_linewidth):
-g(v.color.__styleString)}else if(v instanceof THREE.MeshDepthMaterial){B=v.__2near;W=v.__farPlusNear;ea=v.__farMinusNear;y.r=y.g=y.b=1-B/(W-I.positionScreen.z*ea);x.r=x.g=x.b=1-B/(W-Y.positionScreen.z*ea);R.r=R.g=R.b=1-B/(W-U.positionScreen.z*ea);C.r=(x.r+R.r)*0.5;C.g=(x.g+R.g)*0.5;C.b=(x.b+R.b)*0.5;S=q(y,x,R,C);j(K,A,H,Q,u,O,S,0,0,1,0,0,1)}else if(v instanceof THREE.MeshNormalMaterial){s.r=l(D.normalWorld.x);s.g=l(D.normalWorld.y);s.b=l(D.normalWorld.z);s.updateStyleString();v.wireframe?d(s.__styleString,
-v.wireframe_linewidth):g(s.__styleString)}}}function d(I,Y){if(f!=I)o.strokeStyle=f=I;if(e!=Y)o.lineWidth=e=Y;o.stroke();da.inflate(Y*2)}function g(I){if(k!=I)o.fillStyle=k=I;o.fill()}function j(I,Y,U,D,v,L,$,N,X,ba,Z,ca,na){var la,fa;la=$.width-1;fa=$.height-1;N*=la;X*=fa;ba*=la;Z*=fa;ca*=la;na*=fa;U-=I;D-=Y;v-=I;L-=Y;ba-=N;Z-=X;ca-=N;na-=X;fa=1/(ba*na-ca*Z);la=(na*U-Z*v)*fa;Z=(na*D-Z*L)*fa;U=(ba*v-ca*U)*fa;D=(ba*L-ca*D)*fa;I=I-la*N-U*X;Y=Y-Z*N-D*X;o.save();o.transform(la,Z,U,D,I,Y);o.clip();o.drawImage($,
-0,0);o.restore()}function p(I){if(T!=I)o.globalAlpha=T=I}function m(I){if(z!=I){switch(I){case THREE.NormalBlending:o.globalCompositeOperation="source-over";break;case THREE.AdditiveBlending:o.globalCompositeOperation="lighter";break;case THREE.SubtractiveBlending:o.globalCompositeOperation="darker"}z=I}}function q(I,Y,U,D){ia[0]=i(0,n(255,~~(I.r*255)));ia[1]=i(0,n(255,~~(I.g*255)));ia[2]=i(0,n(255,~~(I.b*255)));ia[4]=i(0,n(255,~~(Y.r*255)));ia[5]=i(0,n(255,~~(Y.g*255)));ia[6]=i(0,n(255,~~(Y.b*255)));
-ia[8]=i(0,n(255,~~(U.r*255)));ia[9]=i(0,n(255,~~(U.g*255)));ia[10]=i(0,n(255,~~(U.b*255)));ia[12]=i(0,n(255,~~(D.r*255)));ia[13]=i(0,n(255,~~(D.g*255)));ia[14]=i(0,n(255,~~(D.b*255)));ra.putImageData(wa,0,0);ua.drawImage(sa,0,0);return ta}function l(I){return I<0?n((1+I)*0.5,0.5):0.5+n(I*0.5,0.5)}function c(I,Y){var U=Y.x-I.x,D=Y.y-I.y,v=1/Math.sqrt(U*U+D*D);U*=v;D*=v;Y.x+=U;Y.y+=D;I.x-=U;I.y-=D}var E=null,G=new THREE.Projector,w=document.createElement("canvas"),F,P,J,M,o=w.getContext("2d"),T=1,z=
-0,f=null,k=null,e=1,n=Math.min,i=Math.max,h,r,t,K,A,H,Q,u,O,s=new THREE.Color,y=new THREE.Color,x=new THREE.Color,R=new THREE.Color,C=new THREE.Color,B,W,ea,S,V,ka,za,Aa,Ba,Ca,ma=new THREE.Rectangle,ja=new THREE.Rectangle,da=new THREE.Rectangle,va=false,ha=new THREE.Color,ga=new THREE.Color,oa=new THREE.Color,pa=new THREE.Color,Da=Math.PI*2,aa=new THREE.Vector3,sa,ra,wa,ia,ta,ua,qa=16;sa=document.createElement("canvas");sa.width=sa.height=2;ra=sa.getContext("2d");ra.fillStyle="rgba(0,0,0,1)";ra.fillRect(0,
-0,2,2);wa=ra.getImageData(0,0,2,2);ia=wa.data;ta=document.createElement("canvas");ta.width=ta.height=qa;ua=ta.getContext("2d");ua.translate(-qa/2,-qa/2);ua.scale(qa,qa);qa--;this.domElement=w;this.autoClear=true;this.setSize=function(I,Y){F=I;P=Y;J=F/2;M=P/2;w.width=F;w.height=P;ma.set(-J,-M,J,M)};this.clear=function(){if(!ja.isEmpty()){ja.inflate(1);ja.minSelf(ma);o.clearRect(ja.getX(),ja.getY(),ja.getWidth(),ja.getHeight());ja.empty()}};this.render=function(I,Y){var U,D,v,L,$,N,X,ba;o.setTransform(1,
-0,0,-1,J,M);this.autoClear&&this.clear();E=G.projectScene(I,Y);o.fillStyle="rgba(0, 255, 255, 0.5)";o.fillRect(ma.getX(),ma.getY(),ma.getWidth(),ma.getHeight());if(va=I.lights.length>0){$=I.lights;ga.setRGB(0,0,0);oa.setRGB(0,0,0);pa.setRGB(0,0,0);U=0;for(D=$.length;U<D;U++){v=$[U];L=v.color;if(v instanceof THREE.AmbientLight){ga.r+=L.r;ga.g+=L.g;ga.b+=L.b}else if(v instanceof THREE.DirectionalLight){oa.r+=L.r;oa.g+=L.g;oa.b+=L.b}else if(v instanceof THREE.PointLight){pa.r+=L.r;pa.g+=L.g;pa.b+=L.b}}}U=
-0;for(D=E.length;U<D;U++){v=E[U];da.empty();if(v instanceof THREE.RenderableParticle){h=v;h.x*=J;h.y*=M;L=0;for($=v.material.length;L<$;L++)a:{N=h;X=v;var Z=v.material[L];if(Z.opacity!=0){p(Z.opacity);m(Z.blending);ba=void 0;var ca=void 0,na=void 0,la=void 0,fa=void 0,xa=void 0,ya=void 0;if(Z instanceof THREE.ParticleBasicMaterial){if(Z.map){fa=Z.map;xa=fa.width>>1;ya=fa.height>>1;na=X.scale.x*J;la=X.scale.y*M;ba=na*xa;ca=la*ya;da.set(N.x-ba,N.y-ca,N.x+ba,N.y+ca);if(!ma.instersects(da))break a;o.save();
-o.translate(N.x,N.y);o.rotate(-X.rotation);o.scale(na,-la);o.translate(-xa,-ya);o.drawImage(fa,0,0);o.restore()}o.beginPath();o.moveTo(N.x-10,N.y);o.lineTo(N.x+10,N.y);o.moveTo(N.x,N.y-10);o.lineTo(N.x,N.y+10);o.closePath();o.strokeStyle="rgb(255,255,0)";o.stroke()}else if(Z instanceof THREE.ParticleCircleMaterial){if(va){ha.r=ga.r+oa.r+pa.r;ha.g=ga.g+oa.g+pa.g;ha.b=ga.b+oa.b+pa.b;s.r=Z.color.r*ha.r;s.g=Z.color.g*ha.g;s.b=Z.color.b*ha.b;s.updateStyleString()}else s.__styleString=Z.color.__styleString;
-ba=X.scale.x*J;ca=X.scale.y*M;da.set(N.x-ba,N.y-ca,N.x+ba,N.y+ca);if(ma.instersects(da)){Z=s.__styleString;if(k!=Z)o.fillStyle=k=Z;o.save();o.translate(N.x,N.y);o.rotate(-X.rotation);o.scale(ba,ca);o.beginPath();o.arc(0,0,1,0,Da,true);o.closePath();o.fill();o.restore()}}}}}else if(v instanceof THREE.RenderableLine){h=v.v1;r=v.v2;h.positionScreen.x*=J;h.positionScreen.y*=M;r.positionScreen.x*=J;r.positionScreen.y*=M;da.addPoint(h.positionScreen.x,h.positionScreen.y);da.addPoint(r.positionScreen.x,
-r.positionScreen.y);if(ma.instersects(da)){L=0;for($=v.material.length;L<$;){X=h;ba=r;N=v.material[L++];if(N.opacity!=0){p(N.opacity);m(N.blending);o.beginPath();o.moveTo(X.positionScreen.x,X.positionScreen.y);o.lineTo(ba.positionScreen.x,ba.positionScreen.y);o.closePath();if(N instanceof THREE.LineBasicMaterial){s.__styleString=N.color.__styleString;X=N.linewidth;if(e!=X)o.lineWidth=e=X;X=s.__styleString;if(f!=X)o.strokeStyle=f=X;o.stroke();da.inflate(N.linewidth*2)}}}}}else if(v instanceof THREE.RenderableFace3){h=
-v.v1;r=v.v2;t=v.v3;h.positionScreen.x*=J;h.positionScreen.y*=M;r.positionScreen.x*=J;r.positionScreen.y*=M;t.positionScreen.x*=J;t.positionScreen.y*=M;if(v.overdraw){c(h.positionScreen,r.positionScreen);c(r.positionScreen,t.positionScreen);c(t.positionScreen,h.positionScreen)}da.addPoint(h.positionScreen.x,h.positionScreen.y);da.addPoint(r.positionScreen.x,r.positionScreen.y);da.addPoint(t.positionScreen.x,t.positionScreen.y);if(ma.instersects(da)){L=0;for($=v.meshMaterial.length;L<$;){ba=v.meshMaterial[L++];
-if(ba instanceof THREE.MeshFaceMaterial){N=0;for(X=v.faceMaterial.length;N<X;)(ba=v.faceMaterial[N++])&&b(h,r,t,v,ba,I)}else b(h,r,t,v,ba,I)}}}ja.addRectangle(da)}o.lineWidth=1;o.strokeStyle="rgba( 255, 0, 0, 0.5 )";o.strokeRect(ja.getX(),ja.getY(),ja.getWidth(),ja.getHeight());o.setTransform(1,0,0,1,0,0)}};
-THREE.SVGRenderer=function(){function a(s,y,x){var R,C,B,W;R=0;for(C=s.lights.length;R<C;R++){B=s.lights[R];if(B instanceof THREE.DirectionalLight){W=y.normalWorld.dot(B.position)*B.intensity;if(W>0){x.r+=B.color.r*W;x.g+=B.color.g*W;x.b+=B.color.b*W}}else if(B instanceof THREE.PointLight){h.sub(B.position,y.centroidWorld);h.normalize();W=y.normalWorld.dot(h)*B.intensity;if(W>0){x.r+=B.color.r*W;x.g+=B.color.g*W;x.b+=B.color.b*W}}}}function b(s,y,x,R,C,B){A=g(H++);A.setAttribute("d","M "+s.positionScreen.x+
-" "+s.positionScreen.y+" L "+y.positionScreen.x+" "+y.positionScreen.y+" L "+x.positionScreen.x+","+x.positionScreen.y+"z");if(C instanceof THREE.MeshBasicMaterial)z.__styleString=C.color.__styleString;else if(C instanceof THREE.MeshLambertMaterial)if(T){f.r=k.r;f.g=k.g;f.b=k.b;a(B,R,f);z.r=C.color.r*f.r;z.g=C.color.g*f.g;z.b=C.color.b*f.b;z.updateStyleString()}else z.__styleString=C.color.__styleString;else if(C instanceof THREE.MeshDepthMaterial){i=1-C.__2near/(C.__farPlusNear-R.z*C.__farMinusNear);
-z.setRGB(i,i,i)}else C instanceof THREE.MeshNormalMaterial&&z.setRGB(j(R.normalWorld.x),j(R.normalWorld.y),j(R.normalWorld.z));C.wireframe?A.setAttribute("style","fill: none; stroke: "+z.__styleString+"; stroke-width: "+C.wireframe_linewidth+"; stroke-opacity: "+C.opacity+"; stroke-linecap: "+C.wireframe_linecap+"; stroke-linejoin: "+C.wireframe_linejoin):A.setAttribute("style","fill: "+z.__styleString+"; fill-opacity: "+C.opacity);q.appendChild(A)}function d(s,y,x,R,C,B,W){A=g(H++);A.setAttribute("d",
-"M "+s.positionScreen.x+" "+s.positionScreen.y+" L "+y.positionScreen.x+" "+y.positionScreen.y+" L "+x.positionScreen.x+","+x.positionScreen.y+" L "+R.positionScreen.x+","+R.positionScreen.y+"z");if(B instanceof THREE.MeshBasicMaterial)z.__styleString=B.color.__styleString;else if(B instanceof THREE.MeshLambertMaterial)if(T){f.r=k.r;f.g=k.g;f.b=k.b;a(W,C,f);z.r=B.color.r*f.r;z.g=B.color.g*f.g;z.b=B.color.b*f.b;z.updateStyleString()}else z.__styleString=B.color.__styleString;else if(B instanceof THREE.MeshDepthMaterial){i=
-1-B.__2near/(B.__farPlusNear-C.z*B.__farMinusNear);z.setRGB(i,i,i)}else B instanceof THREE.MeshNormalMaterial&&z.setRGB(j(C.normalWorld.x),j(C.normalWorld.y),j(C.normalWorld.z));B.wireframe?A.setAttribute("style","fill: none; stroke: "+z.__styleString+"; stroke-width: "+B.wireframe_linewidth+"; stroke-opacity: "+B.opacity+"; stroke-linecap: "+B.wireframe_linecap+"; stroke-linejoin: "+B.wireframe_linejoin):A.setAttribute("style","fill: "+z.__styleString+"; fill-opacity: "+B.opacity);q.appendChild(A)}
-function g(s){if(r[s]==null){r[s]=document.createElementNS("http://www.w3.org/2000/svg","path");O==0&&r[s].setAttribute("shape-rendering","crispEdges");return r[s]}return r[s]}function j(s){return s<0?Math.min((1+s)*0.5,0.5):0.5+Math.min(s*0.5,0.5)}var p=null,m=new THREE.Projector,q=document.createElementNS("http://www.w3.org/2000/svg","svg"),l,c,E,G,w,F,P,J,M=new THREE.Rectangle,o=new THREE.Rectangle,T=false,z=new THREE.Color(16777215),f=new THREE.Color(16777215),k=new THREE.Color(0),e=new THREE.Color(0),
-n=new THREE.Color(0),i,h=new THREE.Vector3,r=[],t=[],K=[],A,H,Q,u,O=1;this.domElement=q;this.autoClear=true;this.setQuality=function(s){switch(s){case "high":O=1;break;case "low":O=0}};this.setSize=function(s,y){l=s;c=y;E=l/2;G=c/2;q.setAttribute("viewBox",-E+" "+-G+" "+l+" "+c);q.setAttribute("width",l);q.setAttribute("height",c);M.set(-E,-G,E,G)};this.clear=function(){for(;q.childNodes.length>0;)q.removeChild(q.childNodes[0])};this.render=function(s,y){var x,R,C,B,W,ea,S,V;this.autoClear&&this.clear();
-p=m.projectScene(s,y);u=Q=H=0;if(T=s.lights.length>0){S=s.lights;k.setRGB(0,0,0);e.setRGB(0,0,0);n.setRGB(0,0,0);x=0;for(R=S.length;x<R;x++){C=S[x];B=C.color;if(C instanceof THREE.AmbientLight){k.r+=B.r;k.g+=B.g;k.b+=B.b}else if(C instanceof THREE.DirectionalLight){e.r+=B.r;e.g+=B.g;e.b+=B.b}else if(C instanceof THREE.PointLight){n.r+=B.r;n.g+=B.g;n.b+=B.b}}}x=0;for(R=p.length;x<R;x++){S=p[x];o.empty();if(S instanceof THREE.RenderableParticle){w=S;w.x*=E;w.y*=-G;C=0;for(B=S.material.length;C<B;C++)if(V=
-S.material[C]){W=w;ea=S;V=V;var ka=Q++;if(t[ka]==null){t[ka]=document.createElementNS("http://www.w3.org/2000/svg","circle");O==0&&t[ka].setAttribute("shape-rendering","crispEdges")}A=t[ka];A.setAttribute("cx",W.x);A.setAttribute("cy",W.y);A.setAttribute("r",ea.scale.x*E);if(V instanceof THREE.ParticleCircleMaterial){if(T){f.r=k.r+e.r+n.r;f.g=k.g+e.g+n.g;f.b=k.b+e.b+n.b;z.r=V.color.r*f.r;z.g=V.color.g*f.g;z.b=V.color.b*f.b;z.updateStyleString()}else z=V.color;A.setAttribute("style","fill: "+z.__styleString)}q.appendChild(A)}}else if(S instanceof
-THREE.RenderableLine){w=S.v1;F=S.v2;w.positionScreen.x*=E;w.positionScreen.y*=-G;F.positionScreen.x*=E;F.positionScreen.y*=-G;o.addPoint(w.positionScreen.x,w.positionScreen.y);o.addPoint(F.positionScreen.x,F.positionScreen.y);if(M.instersects(o)){C=0;for(B=S.material.length;C<B;)if(V=S.material[C++]){W=w;ea=F;V=V;ka=u++;if(K[ka]==null){K[ka]=document.createElementNS("http://www.w3.org/2000/svg","line");O==0&&K[ka].setAttribute("shape-rendering","crispEdges")}A=K[ka];A.setAttribute("x1",W.positionScreen.x);
-A.setAttribute("y1",W.positionScreen.y);A.setAttribute("x2",ea.positionScreen.x);A.setAttribute("y2",ea.positionScreen.y);if(V instanceof THREE.LineBasicMaterial){z.__styleString=V.color.__styleString;A.setAttribute("style","fill: none; stroke: "+z.__styleString+"; stroke-width: "+V.linewidth+"; stroke-opacity: "+V.opacity+"; stroke-linecap: "+V.linecap+"; stroke-linejoin: "+V.linejoin);q.appendChild(A)}}}}else if(S instanceof THREE.RenderableFace3){w=S.v1;F=S.v2;P=S.v3;w.positionScreen.x*=E;w.positionScreen.y*=
--G;F.positionScreen.x*=E;F.positionScreen.y*=-G;P.positionScreen.x*=E;P.positionScreen.y*=-G;o.addPoint(w.positionScreen.x,w.positionScreen.y);o.addPoint(F.positionScreen.x,F.positionScreen.y);o.addPoint(P.positionScreen.x,P.positionScreen.y);if(M.instersects(o)){C=0;for(B=S.meshMaterial.length;C<B;){V=S.meshMaterial[C++];if(V instanceof THREE.MeshFaceMaterial){W=0;for(ea=S.faceMaterial.length;W<ea;)(V=S.faceMaterial[W++])&&b(w,F,P,S,V,s)}else V&&b(w,F,P,S,V,s)}}}else if(S instanceof THREE.RenderableFace4){w=
-S.v1;F=S.v2;P=S.v3;J=S.v4;w.positionScreen.x*=E;w.positionScreen.y*=-G;F.positionScreen.x*=E;F.positionScreen.y*=-G;P.positionScreen.x*=E;P.positionScreen.y*=-G;J.positionScreen.x*=E;J.positionScreen.y*=-G;o.addPoint(w.positionScreen.x,w.positionScreen.y);o.addPoint(F.positionScreen.x,F.positionScreen.y);o.addPoint(P.positionScreen.x,P.positionScreen.y);o.addPoint(J.positionScreen.x,J.positionScreen.y);if(M.instersects(o)){C=0;for(B=S.meshMaterial.length;C<B;){V=S.meshMaterial[C++];if(V instanceof
-THREE.MeshFaceMaterial){W=0;for(ea=S.faceMaterial.length;W<ea;)(V=S.faceMaterial[W++])&&d(w,F,P,J,S,V,s)}else V&&d(w,F,P,J,S,V,s)}}}}}};
-THREE.WebGLRenderer=function(a){function b(f,k){var e=c.createProgram();c.attachShader(e,m("fragment","#ifdef GL_ES\nprecision highp float;\n#endif\n"+f));c.attachShader(e,m("vertex","uniform mat4 objectMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform vec3 cameraPosition;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\n"+k));c.linkProgram(e);c.getProgramParameter(e,c.LINK_STATUS)||alert("Could not initialise shaders\nVALIDATE_STATUS: "+c.getProgramParameter(e,
-c.VALIDATE_STATUS)+", gl error ["+c.getError()+"]");e.uniforms={};e.attributes={};return e}function d(f,k){if(f instanceof THREE.TextureCube&&f.image.length==6){if(!f.image.__webGLTextureCube&&!f.image.__cubeMapInitialized&&f.image.loadCount==6){f.image.__webGLTextureCube=c.createTexture();c.bindTexture(c.TEXTURE_CUBE_MAP,f.image.__webGLTextureCube);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_CUBE_MAP,
-c.TEXTURE_MAG_FILTER,c.LINEAR);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_MIN_FILTER,c.LINEAR_MIPMAP_LINEAR);for(var e=0;e<6;++e)c.texImage2D(c.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,f.image[e]);c.generateMipmap(c.TEXTURE_CUBE_MAP);c.bindTexture(c.TEXTURE_CUBE_MAP,null);f.image.__cubeMapInitialized=true}c.activeTexture(c.TEXTURE0+k);c.bindTexture(c.TEXTURE_CUBE_MAP,f.image.__webGLTextureCube)}}function g(f,k){if(!f.__webGLTexture&&f.image.loaded){f.__webGLTexture=c.createTexture();
-c.bindTexture(c.TEXTURE_2D,f.__webGLTexture);c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,f.image);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,q(f.wrap_s));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,q(f.wrap_t));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,c.LINEAR);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,c.LINEAR_MIPMAP_LINEAR);c.generateMipmap(c.TEXTURE_2D);c.bindTexture(c.TEXTURE_2D,null)}c.activeTexture(c.TEXTURE0+k);c.bindTexture(c.TEXTURE_2D,f.__webGLTexture)}
-function j(f,k){var e,n,i;e=0;for(n=k.length;e<n;e++){i=k[e];f.uniforms[i]=c.getUniformLocation(f,i)}}function p(f,k){var e,n,i;e=0;for(n=k.length;e<n;e++){i=k[e];f.attributes[i]=c.getAttribLocation(f,i);f.attributes[i]>=0&&c.enableVertexAttribArray(f.attributes[i])}}function m(f,k){var e;if(f=="fragment")e=c.createShader(c.FRAGMENT_SHADER);else if(f=="vertex")e=c.createShader(c.VERTEX_SHADER);c.shaderSource(e,k);c.compileShader(e);if(!c.getShaderParameter(e,c.COMPILE_STATUS)){alert(c.getShaderInfoLog(e));
-return null}return e}function q(f){switch(f){case THREE.Repeat:return c.REPEAT;case THREE.ClampToEdge:return c.CLAMP_TO_EDGE;case THREE.MirroredRepeat:return c.MIRRORED_REPEAT}return 0}var l=document.createElement("canvas"),c,E,G,w=new THREE.Matrix4,F,P=new Float32Array(16),J=new Float32Array(16),M=new Float32Array(16),o=new Float32Array(9),T=new Float32Array(16);a=function(f,k){if(f){var e,n,i,h=pointLights=maxDirLights=maxPointLights=0;e=0;for(n=f.lights.length;e<n;e++){i=f.lights[e];i instanceof
-THREE.DirectionalLight&&h++;i instanceof THREE.PointLight&&pointLights++}if(pointLights+h<=k){maxDirLights=h;maxPointLights=pointLights}else{maxDirLights=Math.ceil(k*h/(pointLights+h));maxPointLights=k-maxDirLights}return{directional:maxDirLights,point:maxPointLights}}return{directional:1,point:k-1}}(a,4);this.domElement=l;this.autoClear=true;try{c=l.getContext("experimental-webgl",{antialias:true})}catch(z){}if(!c){alert("WebGL not supported");throw"cannot create webgl context";}c.clearColor(0,0,
-0,1);c.clearDepth(1);c.enable(c.DEPTH_TEST);c.depthFunc(c.LEQUAL);c.frontFace(c.CCW);c.cullFace(c.BACK);c.enable(c.CULL_FACE);c.enable(c.BLEND);c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA);c.clearColor(0,0,0,0);E=G=function(f,k){var e=[f?"#define MAX_DIR_LIGHTS "+f:"",k?"#define MAX_POINT_LIGHTS "+k:"","uniform bool enableLighting;\nuniform bool useRefract;\nuniform int pointLightNumber;\nuniform int directionalLightNumber;\nuniform vec3 ambientLightColor;",f?"uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];":
-"",f?"uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];":"",k?"uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];":"",k?"uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];":"","uniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nvarying vec3 vNormal;\nvarying vec2 vUv;\nvarying vec3 vLightWeighting;",k?"varying vec3 vPointLightVector[ MAX_POINT_LIGHTS ];":"","varying vec3 vViewPosition;\nvarying vec3 vReflect;\nuniform float mRefractionRatio;\nvoid main(void) {\nvec4 mPosition = objectMatrix * vec4( position, 1.0 );\nvViewPosition = cameraPosition - mPosition.xyz;\nvec3 nWorld = mat3( objectMatrix[0].xyz, objectMatrix[1].xyz, objectMatrix[2].xyz ) * normal;\nvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\nvec3 transformedNormal = normalize( normalMatrix * normal );\nif ( !enableLighting ) {\nvLightWeighting = vec3( 1.0, 1.0, 1.0 );\n} else {\nvLightWeighting = ambientLightColor;",
-f?"for( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {":"",f?"vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );":"",f?"float directionalLightWeighting = max( dot( transformedNormal, normalize(lDirection.xyz ) ), 0.0 );":"",f?"vLightWeighting += directionalLightColor[ i ] * directionalLightWeighting;":"",f?"}":"",k?"for( int i = 0; i < MAX_POINT_LIGHTS; i++ ) {":"",k?"vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );":"",k?"vPointLightVector[ i ] = normalize( lPosition.xyz - mvPosition.xyz );":
-"",k?"float pointLightWeighting = max( dot( transformedNormal, vPointLightVector[ i ] ), 0.0 );":"",k?"vLightWeighting += pointLightColor[ i ] * pointLightWeighting;":"",k?"}":"","}\nvNormal = transformedNormal;\nvUv = uv;\nif ( useRefract ) {\nvReflect = refract( normalize(mPosition.xyz - cameraPosition), normalize(nWorld.xyz), mRefractionRatio );\n} else {\nvReflect = reflect( normalize(mPosition.xyz - cameraPosition), normalize(nWorld.xyz) );\n}\ngl_Position = projectionMatrix * mvPosition;\n}"].join("\n"),
-n=[f?"#define MAX_DIR_LIGHTS "+f:"",k?"#define MAX_POINT_LIGHTS "+k:"","uniform int material;\nuniform bool enableMap;\nuniform bool enableCubeMap;\nuniform bool mixEnvMap;\nuniform samplerCube tCube;\nuniform float mReflectivity;\nuniform sampler2D tMap;\nuniform vec4 mColor;\nuniform float mOpacity;\nuniform vec4 mAmbient;\nuniform vec4 mSpecular;\nuniform float mShininess;\nuniform float m2Near;\nuniform float mFarPlusNear;\nuniform float mFarMinusNear;\nuniform int pointLightNumber;\nuniform int directionalLightNumber;",
-f?"uniform mat4 viewMatrix;":"",f?"uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];":"","varying vec3 vNormal;\nvarying vec2 vUv;\nvarying vec3 vLightWeighting;",k?"varying vec3 vPointLightVector[ MAX_POINT_LIGHTS ];":"","varying vec3 vViewPosition;\nvarying vec3 vReflect;\nuniform vec3 cameraPosition;\nvoid main() {\nvec4 mapColor = vec4( 1.0, 1.0, 1.0, 1.0 );\nvec4 cubeColor = vec4( 1.0, 1.0, 1.0, 1.0 );\nif ( enableMap ) {\nmapColor = texture2D( tMap, vUv );\n}\nif ( enableCubeMap ) {\ncubeColor = textureCube( tCube, vec3( -vReflect.x, vReflect.yz ) );\n}\nif ( material == 5 ) { \nvec3 wPos = cameraPosition - vViewPosition;\ngl_FragColor = textureCube( tCube, vec3( -wPos.x, wPos.yz ) );\n} else if ( material == 4 ) { \ngl_FragColor = vec4( 0.5*normalize( vNormal ) + vec3(0.5, 0.5, 0.5), mOpacity );\n} else if ( material == 3 ) { \nfloat w = 0.5;\ngl_FragColor = vec4( w, w, w, mOpacity );\n} else if ( material == 2 ) { \nvec3 normal = normalize( vNormal );\nvec3 viewPosition = normalize( vViewPosition );",
-k?"vec4 pointDiffuse  = vec4( 0.0, 0.0, 0.0, 0.0 );":"",k?"vec4 pointSpecular = vec4( 0.0, 0.0, 0.0, 0.0 );":"",k?"for( int i = 0; i < MAX_POINT_LIGHTS; i++ ) {":"",k?"vec3 pointVector = normalize( vPointLightVector[ i ] );":"",k?"vec3 pointHalfVector = normalize( vPointLightVector[ i ] + vViewPosition );":"",k?"float pointDotNormalHalf = dot( normal, pointHalfVector );":"",k?"float pointDiffuseWeight = max( dot( normal, pointVector ), 0.0 );":"",k?"float pointSpecularWeight = 0.0;":"",k?"if ( pointDotNormalHalf >= 0.0 )":
-"",k?"pointSpecularWeight = pow( pointDotNormalHalf, mShininess );":"",k?"pointDiffuse  += mColor * pointDiffuseWeight;":"",k?"pointSpecular += mSpecular * pointSpecularWeight;":"",k?"}":"",f?"vec4 dirDiffuse  = vec4( 0.0, 0.0, 0.0, 0.0 );":"",f?"vec4 dirSpecular = vec4( 0.0, 0.0, 0.0, 0.0 );":"",f?"for( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {":"",f?"vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );":"",f?"vec3 dirVector = normalize( lDirection.xyz );":"",f?"vec3 dirHalfVector = normalize( lDirection.xyz + vViewPosition );":
-"",f?"float dirDotNormalHalf = dot( normal, dirHalfVector );":"",f?"float dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );":"",f?"float dirSpecularWeight = 0.0;":"",f?"if ( dirDotNormalHalf >= 0.0 )":"",f?"dirSpecularWeight = pow( dirDotNormalHalf, mShininess );":"",f?"dirDiffuse  += mColor * dirDiffuseWeight;":"",f?"dirSpecular += mSpecular * dirSpecularWeight;":"",f?"}":"","vec4 totalLight = mAmbient;",f?"totalLight += dirDiffuse + dirSpecular;":"",k?"totalLight += pointDiffuse + pointSpecular;":
+THREE.Projector=function(){function a(O,v){var f=0,l=1,e=O.z+O.w,q=v.z+v.w,h=-O.z+O.w,i=-v.z+v.w;if(e>=0&&q>=0&&h>=0&&i>=0)return true;else if(e<0&&q<0||h<0&&i<0)return false;else{if(e<0)f=Math.max(f,e/(e-q));else if(q<0)l=Math.min(l,e/(e-q));if(h<0)f=Math.max(f,h/(h-i));else if(i<0)l=Math.min(l,h/(h-i));if(l<f)return false;else{O.lerpSelf(v,f);v.lerpSelf(O,1-l);return true}}}var b=null,d,g,j,n=[],m,k,o=[],c,F,D=[],w=new THREE.Vector4,x=new THREE.Matrix4,H=new THREE.Matrix4,G=new THREE.Vector4,K=
+new THREE.Vector4,N;this.projectScene=function(O,v){var f,l,e,q,h,i,s,r,L,B,M,Q,u,R,y,A,E;b=[];j=k=F=0;v.autoUpdateMatrix&&v.updateMatrix();x.multiply(v.projectionMatrix,v.matrix);s=O.objects;f=0;for(l=s.length;f<l;f++){r=s[f];r.autoUpdateMatrix&&r.updateMatrix();L=r.matrix;B=r.rotationMatrix;M=r.material;Q=r.overdraw;if(r instanceof THREE.Mesh){u=r.geometry.vertices;e=0;for(q=u.length;e<q;e++){R=u[e];R.positionWorld.copy(R.position);L.multiplyVector3(R.positionWorld);y=R.positionScreen;y.copy(R.positionWorld);
+x.multiplyVector4(y);y.multiplyScalar(1/y.w);R.__visible=y.z>0&&y.z<1}R=r.geometry.faces;e=0;for(q=R.length;e<q;e++){y=R[e];if(y instanceof THREE.Face3){h=u[y.a];i=u[y.b];A=u[y.c];if(h.__visible&&i.__visible&&A.__visible)if(r.doubleSided||r.flipSided!=(A.positionScreen.x-h.positionScreen.x)*(i.positionScreen.y-h.positionScreen.y)-(A.positionScreen.y-h.positionScreen.y)*(i.positionScreen.x-h.positionScreen.x)<0){d=n[j]=n[j]||new THREE.RenderableFace3;d.v1.positionWorld.copy(h.positionWorld);d.v2.positionWorld.copy(i.positionWorld);
+d.v3.positionWorld.copy(A.positionWorld);d.v1.positionScreen.copy(h.positionScreen);d.v2.positionScreen.copy(i.positionScreen);d.v3.positionScreen.copy(A.positionScreen);d.normalWorld.copy(y.normal);B.multiplyVector3(d.normalWorld);d.centroidWorld.copy(y.centroid);L.multiplyVector3(d.centroidWorld);d.centroidScreen.copy(d.centroidWorld);x.multiplyVector3(d.centroidScreen);A=y.vertexNormals;N=d.vertexNormalsWorld;h=0;for(i=A.length;h<i;h++){E=N[h]=N[h]||new THREE.Vector3;E.copy(A[h]);B.multiplyVector3(E)}d.z=
+d.centroidScreen.z;d.meshMaterial=M;d.faceMaterial=y.material;d.overdraw=Q;if(r.geometry.uvs[e]){d.uvs[0]=r.geometry.uvs[e][0];d.uvs[1]=r.geometry.uvs[e][1];d.uvs[2]=r.geometry.uvs[e][2]}b.push(d);j++}}else if(y instanceof THREE.Face4){h=u[y.a];i=u[y.b];A=u[y.c];E=u[y.d];if(h.__visible&&i.__visible&&A.__visible&&E.__visible)if(r.doubleSided||r.flipSided!=((E.positionScreen.x-h.positionScreen.x)*(i.positionScreen.y-h.positionScreen.y)-(E.positionScreen.y-h.positionScreen.y)*(i.positionScreen.x-h.positionScreen.x)<
+0||(i.positionScreen.x-A.positionScreen.x)*(E.positionScreen.y-A.positionScreen.y)-(i.positionScreen.y-A.positionScreen.y)*(E.positionScreen.x-A.positionScreen.x)<0)){d=n[j]=n[j]||new THREE.RenderableFace3;d.v1.positionWorld.copy(h.positionWorld);d.v2.positionWorld.copy(i.positionWorld);d.v3.positionWorld.copy(E.positionWorld);d.v1.positionScreen.copy(h.positionScreen);d.v2.positionScreen.copy(i.positionScreen);d.v3.positionScreen.copy(E.positionScreen);d.normalWorld.copy(y.normal);B.multiplyVector3(d.normalWorld);
+d.centroidWorld.copy(y.centroid);L.multiplyVector3(d.centroidWorld);d.centroidScreen.copy(d.centroidWorld);x.multiplyVector3(d.centroidScreen);d.z=d.centroidScreen.z;d.meshMaterial=M;d.faceMaterial=y.material;d.overdraw=Q;if(r.geometry.uvs[e]){d.uvs[0]=r.geometry.uvs[e][0];d.uvs[1]=r.geometry.uvs[e][1];d.uvs[2]=r.geometry.uvs[e][3]}b.push(d);j++;g=n[j]=n[j]||new THREE.RenderableFace3;g.v1.positionWorld.copy(i.positionWorld);g.v2.positionWorld.copy(A.positionWorld);g.v3.positionWorld.copy(E.positionWorld);
+g.v1.positionScreen.copy(i.positionScreen);g.v2.positionScreen.copy(A.positionScreen);g.v3.positionScreen.copy(E.positionScreen);g.normalWorld.copy(d.normalWorld);g.centroidWorld.copy(d.centroidWorld);g.centroidScreen.copy(d.centroidScreen);g.z=g.centroidScreen.z;g.meshMaterial=M;g.faceMaterial=y.material;g.overdraw=Q;if(r.geometry.uvs[e]){g.uvs[0]=r.geometry.uvs[e][1];g.uvs[1]=r.geometry.uvs[e][2];g.uvs[2]=r.geometry.uvs[e][3]}b.push(g);j++}}}}else if(r instanceof THREE.Line){H.multiply(x,L);u=r.geometry.vertices;
+R=u[0];R.positionScreen.copy(R.position);H.multiplyVector4(R.positionScreen);e=1;for(q=u.length;e<q;e++){h=u[e];h.positionScreen.copy(h.position);H.multiplyVector4(h.positionScreen);i=u[e-1];G.copy(h.positionScreen);K.copy(i.positionScreen);if(a(G,K)){G.multiplyScalar(1/G.w);K.multiplyScalar(1/K.w);m=o[k]=o[k]||new THREE.RenderableLine;m.v1.positionScreen.copy(G);m.v2.positionScreen.copy(K);m.z=Math.max(G.z,K.z);m.material=r.material;b.push(m);k++}}}else if(r instanceof THREE.Particle){w.set(r.position.x,
+r.position.y,r.position.z,1);x.multiplyVector4(w);w.z/=w.w;if(w.z>0&&w.z<1){c=D[F]=D[F]||new THREE.RenderableParticle;c.x=w.x/w.w;c.y=w.y/w.w;c.z=w.z;c.rotation=r.rotation.z;c.scale.x=r.scale.x*Math.abs(c.x-(w.x+v.projectionMatrix.n11)/(w.w+v.projectionMatrix.n14));c.scale.y=r.scale.y*Math.abs(c.y-(w.y+v.projectionMatrix.n22)/(w.w+v.projectionMatrix.n24));c.material=r.material;b.push(c);F++}}}b.sort(function(W,I){return I.z-W.z});return b};this.unprojectVector=function(O,v){var f=new THREE.Matrix4;
+f.multiply(THREE.Matrix4.makeInvert(v.matrix),THREE.Matrix4.makeInvert(v.projectionMatrix));f.multiplyVector3(O);return O}};
+THREE.DOMRenderer=function(){THREE.Renderer.call(this);var a=null,b=new THREE.Projector,d,g,j,n;this.domElement=document.createElement("div");this.setSize=function(m,k){d=m;g=k;j=d/2;n=g/2};this.render=function(m,k){var o,c,F,D,w,x,H,G;a=b.projectScene(m,k);o=0;for(c=a.length;o<c;o++){w=a[o];if(w instanceof THREE.RenderableParticle){H=w.x*j+j;G=w.y*n+n;F=0;for(D=w.material.length;F<D;F++){x=w.material[F];if(x instanceof THREE.ParticleDOMMaterial){x=x.domElement;x.style.left=H+"px";x.style.top=G+"px"}}}}}};
+THREE.CanvasRenderer=function(){var a=null,b=new THREE.Projector,d=document.createElement("canvas"),g,j,n,m,k=d.getContext("2d"),o=1,c=0,F=null,D=null,w=1,x=Math.min,H=Math.max,G,K,N,O,v,f,l,e,q,h=new THREE.Color,i=new THREE.Color,s=new THREE.Color,r=new THREE.Color,L=new THREE.Color,B,M,Q,u,R,y,A,E,W,I,z=new THREE.Rectangle,S=new THREE.Rectangle,X=new THREE.Rectangle,T=false,P=new THREE.Color,Z=new THREE.Color,ia=new THREE.Color,ja=new THREE.Color,La=Math.PI*2,Y=new THREE.Vector3,na,oa,Ca,ba,pa,
+va,la=16;na=document.createElement("canvas");na.width=na.height=2;oa=na.getContext("2d");oa.fillStyle="rgba(0,0,0,1)";oa.fillRect(0,0,2,2);Ca=oa.getImageData(0,0,2,2);ba=Ca.data;pa=document.createElement("canvas");pa.width=pa.height=la;va=pa.getContext("2d");va.translate(-la/2,-la/2);va.scale(la,la);la--;this.domElement=d;this.autoClear=true;this.setSize=function(fa,wa){g=fa;j=wa;n=g/2;m=j/2;d.width=g;d.height=j;z.set(-n,-m,n,m)};this.clear=function(){if(!S.isEmpty()){S.inflate(1);S.minSelf(z);k.clearRect(S.getX(),
+S.getY(),S.getWidth(),S.getHeight());S.empty()}};this.render=function(fa,wa){function Ma(p){var U,J,t,C=p.lights;Z.setRGB(0,0,0);ia.setRGB(0,0,0);ja.setRGB(0,0,0);p=0;for(U=C.length;p<U;p++){J=C[p];t=J.color;if(J instanceof THREE.AmbientLight){Z.r+=t.r;Z.g+=t.g;Z.b+=t.b}else if(J instanceof THREE.DirectionalLight){ia.r+=t.r;ia.g+=t.g;ia.b+=t.b}else if(J instanceof THREE.PointLight){ja.r+=t.r;ja.g+=t.g;ja.b+=t.b}}}function xa(p,U,J,t){var C,V,aa,ca,da=p.lights;p=0;for(C=da.length;p<C;p++){V=da[p];
+aa=V.color;ca=V.intensity;if(V instanceof THREE.DirectionalLight){V=J.dot(V.position)*ca;if(V>0){t.r+=aa.r*V;t.g+=aa.g*V;t.b+=aa.b*V}}else if(V instanceof THREE.PointLight){Y.sub(V.position,U);Y.normalize();V=J.dot(Y)*ca;if(V>0){t.r+=aa.r*V;t.g+=aa.g*V;t.b+=aa.b*V}}}}function Na(p,U,J){if(J.opacity!=0){Da(J.opacity);ya(J.blending);var t,C,V,aa,ca,da;if(J instanceof THREE.ParticleBasicMaterial){if(J.map){aa=J.map;ca=aa.width>>1;da=aa.height>>1;C=U.scale.x*n;V=U.scale.y*m;J=C*ca;t=V*da;X.set(p.x-J,
+p.y-t,p.x+J,p.y+t);if(!z.instersects(X))return;k.save();k.translate(p.x,p.y);k.rotate(-U.rotation);k.scale(C,-V);k.translate(-ca,-da);k.drawImage(aa,0,0);k.restore()}k.beginPath();k.moveTo(p.x-10,p.y);k.lineTo(p.x+10,p.y);k.moveTo(p.x,p.y-10);k.lineTo(p.x,p.y+10);k.closePath();k.strokeStyle="rgb(255,255,0)";k.stroke()}else if(J instanceof THREE.ParticleCircleMaterial){if(T){P.r=Z.r+ia.r+ja.r;P.g=Z.g+ia.g+ja.g;P.b=Z.b+ia.b+ja.b;h.r=J.color.r*P.r;h.g=J.color.g*P.g;h.b=J.color.b*P.b;h.updateStyleString()}else h.__styleString=
+J.color.__styleString;J=U.scale.x*n;t=U.scale.y*m;X.set(p.x-J,p.y-t,p.x+J,p.y+t);if(z.instersects(X)){C=h.__styleString;if(D!=C)k.fillStyle=D=C;k.save();k.translate(p.x,p.y);k.rotate(-U.rotation);k.scale(J,t);k.beginPath();k.arc(0,0,1,0,La,true);k.closePath();k.fill();k.restore()}}}}function Oa(p,U,J,t){if(t.opacity!=0){Da(t.opacity);ya(t.blending);k.beginPath();k.moveTo(p.positionScreen.x,p.positionScreen.y);k.lineTo(U.positionScreen.x,U.positionScreen.y);k.closePath();if(t instanceof THREE.LineBasicMaterial){h.__styleString=
+t.color.__styleString;p=t.linewidth;if(w!=p)k.lineWidth=w=p;p=h.__styleString;if(F!=p)k.strokeStyle=F=p;k.stroke();X.inflate(t.linewidth*2)}}}function Ha(p,U,J,t,C,V){if(C.opacity!=0){Da(C.opacity);ya(C.blending);O=p.positionScreen.x;v=p.positionScreen.y;f=U.positionScreen.x;l=U.positionScreen.y;e=J.positionScreen.x;q=J.positionScreen.y;k.beginPath();k.moveTo(O,v);k.lineTo(f,l);k.lineTo(e,q);k.lineTo(O,v);k.closePath();if(C instanceof THREE.MeshBasicMaterial)if(C.map)C.map.image.loaded&&C.map.mapping instanceof
+THREE.UVMapping&&qa(O,v,f,l,e,q,C.map.image,t.uvs[0].u,t.uvs[0].v,t.uvs[1].u,t.uvs[1].v,t.uvs[2].u,t.uvs[2].v);else if(C.env_map){if(C.env_map.image.loaded)if(C.env_map.mapping instanceof THREE.SphericalReflectionMapping){p=wa.matrix;Y.copy(t.vertexNormalsWorld[0]);R=(Y.x*p.n11+Y.y*p.n12+Y.z*p.n13)*0.5+0.5;y=-(Y.x*p.n21+Y.y*p.n22+Y.z*p.n23)*0.5+0.5;Y.copy(t.vertexNormalsWorld[1]);A=(Y.x*p.n11+Y.y*p.n12+Y.z*p.n13)*0.5+0.5;E=-(Y.x*p.n21+Y.y*p.n22+Y.z*p.n23)*0.5+0.5;Y.copy(t.vertexNormalsWorld[2]);W=
+(Y.x*p.n11+Y.y*p.n12+Y.z*p.n13)*0.5+0.5;I=-(Y.x*p.n21+Y.y*p.n22+Y.z*p.n23)*0.5+0.5;qa(O,v,f,l,e,q,C.env_map.image,R,y,A,E,W,I)}}else C.wireframe?za(C.color.__styleString,C.wireframe_linewidth):Aa(C.color.__styleString);else if(C instanceof THREE.MeshLambertMaterial){if(C.map&&!C.wireframe){C.map.mapping instanceof THREE.UVMapping&&qa(O,v,f,l,e,q,C.map.image,t.uvs[0].u,t.uvs[0].v,t.uvs[1].u,t.uvs[1].v,t.uvs[2].u,t.uvs[2].v);ya(THREE.SubtractiveBlending)}if(T)if(!C.wireframe&&C.shading==THREE.SmoothShading&&
+t.vertexNormalsWorld.length==3){i.r=s.r=r.r=Z.r;i.g=s.g=r.g=Z.g;i.b=s.b=r.b=Z.b;xa(V,t.v1.positionWorld,t.vertexNormalsWorld[0],i);xa(V,t.v2.positionWorld,t.vertexNormalsWorld[1],s);xa(V,t.v3.positionWorld,t.vertexNormalsWorld[2],r);L.r=(s.r+r.r)*0.5;L.g=(s.g+r.g)*0.5;L.b=(s.b+r.b)*0.5;u=Ia(i,s,r,L);qa(O,v,f,l,e,q,u,0,0,1,0,0,1)}else{P.r=Z.r;P.g=Z.g;P.b=Z.b;xa(V,t.centroidWorld,t.normalWorld,P);h.r=C.color.r*P.r;h.g=C.color.g*P.g;h.b=C.color.b*P.b;h.updateStyleString();C.wireframe?za(h.__styleString,
+C.wireframe_linewidth):Aa(h.__styleString)}else C.wireframe?za(C.color.__styleString,C.wireframe_linewidth):Aa(C.color.__styleString)}else if(C instanceof THREE.MeshDepthMaterial){B=C.__2near;M=C.__farPlusNear;Q=C.__farMinusNear;i.r=i.g=i.b=1-B/(M-p.positionScreen.z*Q);s.r=s.g=s.b=1-B/(M-U.positionScreen.z*Q);r.r=r.g=r.b=1-B/(M-J.positionScreen.z*Q);L.r=(s.r+r.r)*0.5;L.g=(s.g+r.g)*0.5;L.b=(s.b+r.b)*0.5;u=Ia(i,s,r,L);qa(O,v,f,l,e,q,u,0,0,1,0,0,1)}else if(C instanceof THREE.MeshNormalMaterial){h.r=
+Ea(t.normalWorld.x);h.g=Ea(t.normalWorld.y);h.b=Ea(t.normalWorld.z);h.updateStyleString();C.wireframe?za(h.__styleString,C.wireframe_linewidth):Aa(h.__styleString)}}}function za(p,U){if(F!=p)k.strokeStyle=F=p;if(w!=U)k.lineWidth=w=U;k.stroke();X.inflate(U*2)}function Aa(p){if(D!=p)k.fillStyle=D=p;k.fill()}function qa(p,U,J,t,C,V,aa,ca,da,ra,ha,sa,ta){var ka,ga;ka=aa.width-1;ga=aa.height-1;ca*=ka;da*=ga;ra*=ka;ha*=ga;sa*=ka;ta*=ga;J-=p;t-=U;C-=p;V-=U;ra-=ca;ha-=da;sa-=ca;ta-=da;ga=1/(ra*ta-sa*ha);
+ka=(ta*J-ha*C)*ga;ha=(ta*t-ha*V)*ga;J=(ra*C-sa*J)*ga;t=(ra*V-sa*t)*ga;p=p-ka*ca-J*da;U=U-ha*ca-t*da;k.save();k.transform(ka,ha,J,t,p,U);k.clip();k.drawImage(aa,0,0);k.restore()}function Da(p){if(o!=p)k.globalAlpha=o=p}function ya(p){if(c!=p){switch(p){case THREE.NormalBlending:k.globalCompositeOperation="source-over";break;case THREE.AdditiveBlending:k.globalCompositeOperation="lighter";break;case THREE.SubtractiveBlending:k.globalCompositeOperation="darker"}c=p}}function Ia(p,U,J,t){ba[0]=H(0,x(255,
+~~(p.r*255)));ba[1]=H(0,x(255,~~(p.g*255)));ba[2]=H(0,x(255,~~(p.b*255)));ba[4]=H(0,x(255,~~(U.r*255)));ba[5]=H(0,x(255,~~(U.g*255)));ba[6]=H(0,x(255,~~(U.b*255)));ba[8]=H(0,x(255,~~(J.r*255)));ba[9]=H(0,x(255,~~(J.g*255)));ba[10]=H(0,x(255,~~(J.b*255)));ba[12]=H(0,x(255,~~(t.r*255)));ba[13]=H(0,x(255,~~(t.g*255)));ba[14]=H(0,x(255,~~(t.b*255)));oa.putImageData(Ca,0,0);va.drawImage(na,0,0);return pa}function Ea(p){return p<0?x((1+p)*0.5,0.5):0.5+x(p*0.5,0.5)}function Fa(p,U){var J=U.x-p.x,t=U.y-p.y,
+C=1/Math.sqrt(J*J+t*t);J*=C;t*=C;U.x+=J;U.y+=t;p.x-=J;p.y-=t}var Ba,Ja,$,ea,ma,Ga,Ka,ua;k.setTransform(1,0,0,-1,n,m);this.autoClear&&this.clear();a=b.projectScene(fa,wa);k.fillStyle="rgba(0, 255, 255, 0.5)";k.fillRect(z.getX(),z.getY(),z.getWidth(),z.getHeight());(T=fa.lights.length>0)&&Ma(fa);Ba=0;for(Ja=a.length;Ba<Ja;Ba++){$=a[Ba];X.empty();if($ instanceof THREE.RenderableParticle){G=$;G.x*=n;G.y*=m;ea=0;for(ma=$.material.length;ea<ma;ea++)Na(G,$,$.material[ea],fa)}else if($ instanceof THREE.RenderableLine){G=
+$.v1;K=$.v2;G.positionScreen.x*=n;G.positionScreen.y*=m;K.positionScreen.x*=n;K.positionScreen.y*=m;X.addPoint(G.positionScreen.x,G.positionScreen.y);X.addPoint(K.positionScreen.x,K.positionScreen.y);if(z.instersects(X)){ea=0;for(ma=$.material.length;ea<ma;)Oa(G,K,$,$.material[ea++],fa)}}else if($ instanceof THREE.RenderableFace3){G=$.v1;K=$.v2;N=$.v3;G.positionScreen.x*=n;G.positionScreen.y*=m;K.positionScreen.x*=n;K.positionScreen.y*=m;N.positionScreen.x*=n;N.positionScreen.y*=m;if($.overdraw){Fa(G.positionScreen,
+K.positionScreen);Fa(K.positionScreen,N.positionScreen);Fa(N.positionScreen,G.positionScreen)}X.addPoint(G.positionScreen.x,G.positionScreen.y);X.addPoint(K.positionScreen.x,K.positionScreen.y);X.addPoint(N.positionScreen.x,N.positionScreen.y);if(z.instersects(X)){ea=0;for(ma=$.meshMaterial.length;ea<ma;){ua=$.meshMaterial[ea++];if(ua instanceof THREE.MeshFaceMaterial){Ga=0;for(Ka=$.faceMaterial.length;Ga<Ka;)(ua=$.faceMaterial[Ga++])&&Ha(G,K,N,$,ua,fa)}else Ha(G,K,N,$,ua,fa)}}}S.addRectangle(X)}k.lineWidth=
+1;k.strokeStyle="rgba( 255, 0, 0, 0.5 )";k.strokeRect(S.getX(),S.getY(),S.getWidth(),S.getHeight());k.setTransform(1,0,0,1,0,0)}};
+THREE.SVGRenderer=function(){function a(y,A,E){var W,I,z,S;W=0;for(I=y.lights.length;W<I;W++){z=y.lights[W];if(z instanceof THREE.DirectionalLight){S=A.normalWorld.dot(z.position)*z.intensity;if(S>0){E.r+=z.color.r*S;E.g+=z.color.g*S;E.b+=z.color.b*S}}else if(z instanceof THREE.PointLight){i.sub(z.position,A.centroidWorld);i.normalize();S=A.normalWorld.dot(i)*z.intensity;if(S>0){E.r+=z.color.r*S;E.g+=z.color.g*S;E.b+=z.color.b*S}}}}function b(y,A,E,W,I,z){B=g(M++);B.setAttribute("d","M "+y.positionScreen.x+
+" "+y.positionScreen.y+" L "+A.positionScreen.x+" "+A.positionScreen.y+" L "+E.positionScreen.x+","+E.positionScreen.y+"z");if(I instanceof THREE.MeshBasicMaterial)v.__styleString=I.color.__styleString;else if(I instanceof THREE.MeshLambertMaterial)if(O){f.r=l.r;f.g=l.g;f.b=l.b;a(z,W,f);v.r=I.color.r*f.r;v.g=I.color.g*f.g;v.b=I.color.b*f.b;v.updateStyleString()}else v.__styleString=I.color.__styleString;else if(I instanceof THREE.MeshDepthMaterial){h=1-I.__2near/(I.__farPlusNear-W.z*I.__farMinusNear);
+v.setRGB(h,h,h)}else I instanceof THREE.MeshNormalMaterial&&v.setRGB(j(W.normalWorld.x),j(W.normalWorld.y),j(W.normalWorld.z));I.wireframe?B.setAttribute("style","fill: none; stroke: "+v.__styleString+"; stroke-width: "+I.wireframe_linewidth+"; stroke-opacity: "+I.opacity+"; stroke-linecap: "+I.wireframe_linecap+"; stroke-linejoin: "+I.wireframe_linejoin):B.setAttribute("style","fill: "+v.__styleString+"; fill-opacity: "+I.opacity);k.appendChild(B)}function d(y,A,E,W,I,z,S){B=g(M++);B.setAttribute("d",
+"M "+y.positionScreen.x+" "+y.positionScreen.y+" L "+A.positionScreen.x+" "+A.positionScreen.y+" L "+E.positionScreen.x+","+E.positionScreen.y+" L "+W.positionScreen.x+","+W.positionScreen.y+"z");if(z instanceof THREE.MeshBasicMaterial)v.__styleString=z.color.__styleString;else if(z instanceof THREE.MeshLambertMaterial)if(O){f.r=l.r;f.g=l.g;f.b=l.b;a(S,I,f);v.r=z.color.r*f.r;v.g=z.color.g*f.g;v.b=z.color.b*f.b;v.updateStyleString()}else v.__styleString=z.color.__styleString;else if(z instanceof THREE.MeshDepthMaterial){h=
+1-z.__2near/(z.__farPlusNear-I.z*z.__farMinusNear);v.setRGB(h,h,h)}else z instanceof THREE.MeshNormalMaterial&&v.setRGB(j(I.normalWorld.x),j(I.normalWorld.y),j(I.normalWorld.z));z.wireframe?B.setAttribute("style","fill: none; stroke: "+v.__styleString+"; stroke-width: "+z.wireframe_linewidth+"; stroke-opacity: "+z.opacity+"; stroke-linecap: "+z.wireframe_linecap+"; stroke-linejoin: "+z.wireframe_linejoin):B.setAttribute("style","fill: "+v.__styleString+"; fill-opacity: "+z.opacity);k.appendChild(B)}
+function g(y){if(s[y]==null){s[y]=document.createElementNS("http://www.w3.org/2000/svg","path");R==0&&s[y].setAttribute("shape-rendering","crispEdges");return s[y]}return s[y]}function j(y){return y<0?Math.min((1+y)*0.5,0.5):0.5+Math.min(y*0.5,0.5)}var n=null,m=new THREE.Projector,k=document.createElementNS("http://www.w3.org/2000/svg","svg"),o,c,F,D,w,x,H,G,K=new THREE.Rectangle,N=new THREE.Rectangle,O=false,v=new THREE.Color(16777215),f=new THREE.Color(16777215),l=new THREE.Color(0),e=new THREE.Color(0),
+q=new THREE.Color(0),h,i=new THREE.Vector3,s=[],r=[],L=[],B,M,Q,u,R=1;this.domElement=k;this.autoClear=true;this.setQuality=function(y){switch(y){case "high":R=1;break;case "low":R=0}};this.setSize=function(y,A){o=y;c=A;F=o/2;D=c/2;k.setAttribute("viewBox",-F+" "+-D+" "+o+" "+c);k.setAttribute("width",o);k.setAttribute("height",c);K.set(-F,-D,F,D)};this.clear=function(){for(;k.childNodes.length>0;)k.removeChild(k.childNodes[0])};this.render=function(y,A){var E,W,I,z,S,X,T,P;this.autoClear&&this.clear();
+n=m.projectScene(y,A);u=Q=M=0;if(O=y.lights.length>0){T=y.lights;l.setRGB(0,0,0);e.setRGB(0,0,0);q.setRGB(0,0,0);E=0;for(W=T.length;E<W;E++){I=T[E];z=I.color;if(I instanceof THREE.AmbientLight){l.r+=z.r;l.g+=z.g;l.b+=z.b}else if(I instanceof THREE.DirectionalLight){e.r+=z.r;e.g+=z.g;e.b+=z.b}else if(I instanceof THREE.PointLight){q.r+=z.r;q.g+=z.g;q.b+=z.b}}}E=0;for(W=n.length;E<W;E++){T=n[E];N.empty();if(T instanceof THREE.RenderableParticle){w=T;w.x*=F;w.y*=-D;I=0;for(z=T.material.length;I<z;I++)if(P=
+T.material[I]){S=w;X=T;P=P;var Z=Q++;if(r[Z]==null){r[Z]=document.createElementNS("http://www.w3.org/2000/svg","circle");R==0&&r[Z].setAttribute("shape-rendering","crispEdges")}B=r[Z];B.setAttribute("cx",S.x);B.setAttribute("cy",S.y);B.setAttribute("r",X.scale.x*F);if(P instanceof THREE.ParticleCircleMaterial){if(O){f.r=l.r+e.r+q.r;f.g=l.g+e.g+q.g;f.b=l.b+e.b+q.b;v.r=P.color.r*f.r;v.g=P.color.g*f.g;v.b=P.color.b*f.b;v.updateStyleString()}else v=P.color;B.setAttribute("style","fill: "+v.__styleString)}k.appendChild(B)}}else if(T instanceof
+THREE.RenderableLine){w=T.v1;x=T.v2;w.positionScreen.x*=F;w.positionScreen.y*=-D;x.positionScreen.x*=F;x.positionScreen.y*=-D;N.addPoint(w.positionScreen.x,w.positionScreen.y);N.addPoint(x.positionScreen.x,x.positionScreen.y);if(K.instersects(N)){I=0;for(z=T.material.length;I<z;)if(P=T.material[I++]){S=w;X=x;P=P;Z=u++;if(L[Z]==null){L[Z]=document.createElementNS("http://www.w3.org/2000/svg","line");R==0&&L[Z].setAttribute("shape-rendering","crispEdges")}B=L[Z];B.setAttribute("x1",S.positionScreen.x);
+B.setAttribute("y1",S.positionScreen.y);B.setAttribute("x2",X.positionScreen.x);B.setAttribute("y2",X.positionScreen.y);if(P instanceof THREE.LineBasicMaterial){v.__styleString=P.color.__styleString;B.setAttribute("style","fill: none; stroke: "+v.__styleString+"; stroke-width: "+P.linewidth+"; stroke-opacity: "+P.opacity+"; stroke-linecap: "+P.linecap+"; stroke-linejoin: "+P.linejoin);k.appendChild(B)}}}}else if(T instanceof THREE.RenderableFace3){w=T.v1;x=T.v2;H=T.v3;w.positionScreen.x*=F;w.positionScreen.y*=
+-D;x.positionScreen.x*=F;x.positionScreen.y*=-D;H.positionScreen.x*=F;H.positionScreen.y*=-D;N.addPoint(w.positionScreen.x,w.positionScreen.y);N.addPoint(x.positionScreen.x,x.positionScreen.y);N.addPoint(H.positionScreen.x,H.positionScreen.y);if(K.instersects(N)){I=0;for(z=T.meshMaterial.length;I<z;){P=T.meshMaterial[I++];if(P instanceof THREE.MeshFaceMaterial){S=0;for(X=T.faceMaterial.length;S<X;)(P=T.faceMaterial[S++])&&b(w,x,H,T,P,y)}else P&&b(w,x,H,T,P,y)}}}else if(T instanceof THREE.RenderableFace4){w=
+T.v1;x=T.v2;H=T.v3;G=T.v4;w.positionScreen.x*=F;w.positionScreen.y*=-D;x.positionScreen.x*=F;x.positionScreen.y*=-D;H.positionScreen.x*=F;H.positionScreen.y*=-D;G.positionScreen.x*=F;G.positionScreen.y*=-D;N.addPoint(w.positionScreen.x,w.positionScreen.y);N.addPoint(x.positionScreen.x,x.positionScreen.y);N.addPoint(H.positionScreen.x,H.positionScreen.y);N.addPoint(G.positionScreen.x,G.positionScreen.y);if(K.instersects(N)){I=0;for(z=T.meshMaterial.length;I<z;){P=T.meshMaterial[I++];if(P instanceof
+THREE.MeshFaceMaterial){S=0;for(X=T.faceMaterial.length;S<X;)(P=T.faceMaterial[S++])&&d(w,x,H,G,T,P,y)}else P&&d(w,x,H,G,T,P,y)}}}}}};
+THREE.WebGLRenderer=function(a){function b(f,l){var e=c.createProgram();c.attachShader(e,m("fragment","#ifdef GL_ES\nprecision highp float;\n#endif\n"+f));c.attachShader(e,m("vertex","uniform mat4 objectMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform vec3 cameraPosition;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\n"+l));c.linkProgram(e);c.getProgramParameter(e,c.LINK_STATUS)||alert("Could not initialise shaders\nVALIDATE_STATUS: "+c.getProgramParameter(e,
+c.VALIDATE_STATUS)+", gl error ["+c.getError()+"]");e.uniforms={};e.attributes={};return e}function d(f,l){if(f.image.length==6){if(!f.image.__webGLTextureCube&&!f.image.__cubeMapInitialized&&f.image.loadCount==6){f.image.__webGLTextureCube=c.createTexture();c.bindTexture(c.TEXTURE_CUBE_MAP,f.image.__webGLTextureCube);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_MAG_FILTER,
+c.LINEAR);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_MIN_FILTER,c.LINEAR_MIPMAP_LINEAR);for(var e=0;e<6;++e)c.texImage2D(c.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,f.image[e]);c.generateMipmap(c.TEXTURE_CUBE_MAP);c.bindTexture(c.TEXTURE_CUBE_MAP,null);f.image.__cubeMapInitialized=true}c.activeTexture(c.TEXTURE0+l);c.bindTexture(c.TEXTURE_CUBE_MAP,f.image.__webGLTextureCube)}}function g(f,l){if(!f.__webGLTexture&&f.image.loaded){f.__webGLTexture=c.createTexture();c.bindTexture(c.TEXTURE_2D,
+f.__webGLTexture);c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,f.image);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,k(f.wrap_s));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,k(f.wrap_t));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,k(f.mag_filter));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,k(f.min_filter));c.generateMipmap(c.TEXTURE_2D);c.bindTexture(c.TEXTURE_2D,null)}c.activeTexture(c.TEXTURE0+l);c.bindTexture(c.TEXTURE_2D,f.__webGLTexture)}function j(f,l){var e,q,h;
+e=0;for(q=l.length;e<q;e++){h=l[e];f.uniforms[h]=c.getUniformLocation(f,h)}}function n(f,l){var e,q,h;e=0;for(q=l.length;e<q;e++){h=l[e];f.attributes[h]=c.getAttribLocation(f,h);f.attributes[h]>=0&&c.enableVertexAttribArray(f.attributes[h])}}function m(f,l){var e;if(f=="fragment")e=c.createShader(c.FRAGMENT_SHADER);else if(f=="vertex")e=c.createShader(c.VERTEX_SHADER);c.shaderSource(e,l);c.compileShader(e);if(!c.getShaderParameter(e,c.COMPILE_STATUS)){alert(c.getShaderInfoLog(e));return null}return e}
+function k(f){switch(f){case THREE.RepeatWrapping:return c.REPEAT;case THREE.ClampToEdgeWrapping:return c.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return c.MIRRORED_REPEAT;case THREE.NearestFilter:return c.NEAREST;case THREE.NearestMipMapNearestFilter:return c.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return c.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return c.LINEAR;case THREE.LinearMipMapNearestFilter:return c.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return c.LINEAR_MIPMAP_LINEAR}return 0}
+var o=document.createElement("canvas"),c,F,D,w=new THREE.Matrix4,x,H=new Float32Array(16),G=new Float32Array(16),K=new Float32Array(16),N=new Float32Array(9),O=new Float32Array(16);a=function(f,l){if(f){var e,q,h,i=pointLights=maxDirLights=maxPointLights=0;e=0;for(q=f.lights.length;e<q;e++){h=f.lights[e];h instanceof THREE.DirectionalLight&&i++;h instanceof THREE.PointLight&&pointLights++}if(pointLights+i<=l){maxDirLights=i;maxPointLights=pointLights}else{maxDirLights=Math.ceil(l*i/(pointLights+i));
+maxPointLights=l-maxDirLights}return{directional:maxDirLights,point:maxPointLights}}return{directional:1,point:l-1}}(a,4);this.domElement=o;this.autoClear=true;try{c=o.getContext("experimental-webgl",{antialias:true})}catch(v){}if(!c){alert("WebGL not supported");throw"cannot create webgl context";}c.clearColor(0,0,0,1);c.clearDepth(1);c.enable(c.DEPTH_TEST);c.depthFunc(c.LEQUAL);c.frontFace(c.CCW);c.cullFace(c.BACK);c.enable(c.CULL_FACE);c.enable(c.BLEND);c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA);
+c.clearColor(0,0,0,0);F=D=function(f,l){var e=[f?"#define MAX_DIR_LIGHTS "+f:"",l?"#define MAX_POINT_LIGHTS "+l:"","uniform bool enableLighting;\nuniform bool useRefract;\nuniform int pointLightNumber;\nuniform int directionalLightNumber;\nuniform vec3 ambientLightColor;",f?"uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];":"",f?"uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];":"",l?"uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];":"",l?"uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];":
+"","uniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nvarying vec3 vNormal;\nvarying vec2 vUv;\nvarying vec3 vLightWeighting;",l?"varying vec3 vPointLightVector[ MAX_POINT_LIGHTS ];":"","varying vec3 vViewPosition;\nvarying vec3 vReflect;\nuniform float mRefractionRatio;\nvoid main(void) {\nvec4 mPosition = objectMatrix * vec4( position, 1.0 );\nvViewPosition = cameraPosition - mPosition.xyz;\nvec3 nWorld = mat3( objectMatrix[0].xyz, objectMatrix[1].xyz, objectMatrix[2].xyz ) * normal;\nvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\nvec3 transformedNormal = normalize( normalMatrix * normal );\nif ( !enableLighting ) {\nvLightWeighting = vec3( 1.0, 1.0, 1.0 );\n} else {\nvLightWeighting = ambientLightColor;",
+f?"for( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {":"",f?"vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );":"",f?"float directionalLightWeighting = max( dot( transformedNormal, normalize(lDirection.xyz ) ), 0.0 );":"",f?"vLightWeighting += directionalLightColor[ i ] * directionalLightWeighting;":"",f?"}":"",l?"for( int i = 0; i < MAX_POINT_LIGHTS; i++ ) {":"",l?"vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );":"",l?"vPointLightVector[ i ] = normalize( lPosition.xyz - mvPosition.xyz );":
+"",l?"float pointLightWeighting = max( dot( transformedNormal, vPointLightVector[ i ] ), 0.0 );":"",l?"vLightWeighting += pointLightColor[ i ] * pointLightWeighting;":"",l?"}":"","}\nvNormal = transformedNormal;\nvUv = uv;\nif ( useRefract ) {\nvReflect = refract( normalize(mPosition.xyz - cameraPosition), normalize(nWorld.xyz), mRefractionRatio );\n} else {\nvReflect = reflect( normalize(mPosition.xyz - cameraPosition), normalize(nWorld.xyz) );\n}\ngl_Position = projectionMatrix * mvPosition;\n}"].join("\n"),
+q=[f?"#define MAX_DIR_LIGHTS "+f:"",l?"#define MAX_POINT_LIGHTS "+l:"","uniform int material;\nuniform bool enableMap;\nuniform bool enableCubeMap;\nuniform bool mixEnvMap;\nuniform samplerCube tCube;\nuniform float mReflectivity;\nuniform sampler2D tMap;\nuniform vec4 mColor;\nuniform float mOpacity;\nuniform vec4 mAmbient;\nuniform vec4 mSpecular;\nuniform float mShininess;\nuniform float m2Near;\nuniform float mFarPlusNear;\nuniform float mFarMinusNear;\nuniform int pointLightNumber;\nuniform int directionalLightNumber;",
+f?"uniform mat4 viewMatrix;":"",f?"uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];":"","varying vec3 vNormal;\nvarying vec2 vUv;\nvarying vec3 vLightWeighting;",l?"varying vec3 vPointLightVector[ MAX_POINT_LIGHTS ];":"","varying vec3 vViewPosition;\nvarying vec3 vReflect;\nuniform vec3 cameraPosition;\nvoid main() {\nvec4 mapColor = vec4( 1.0, 1.0, 1.0, 1.0 );\nvec4 cubeColor = vec4( 1.0, 1.0, 1.0, 1.0 );\nif ( enableMap ) {\nmapColor = texture2D( tMap, vUv );\n}\nif ( enableCubeMap ) {\ncubeColor = textureCube( tCube, vec3( -vReflect.x, vReflect.yz ) );\n}\nif ( material == 5 ) { \nvec3 wPos = cameraPosition - vViewPosition;\ngl_FragColor = textureCube( tCube, vec3( -wPos.x, wPos.yz ) );\n} else if ( material == 4 ) { \ngl_FragColor = vec4( 0.5*normalize( vNormal ) + vec3(0.5, 0.5, 0.5), mOpacity );\n} else if ( material == 3 ) { \nfloat w = 0.5;\ngl_FragColor = vec4( w, w, w, mOpacity );\n} else if ( material == 2 ) { \nvec3 normal = normalize( vNormal );\nvec3 viewPosition = normalize( vViewPosition );",
+l?"vec4 pointDiffuse  = vec4( 0.0, 0.0, 0.0, 0.0 );":"",l?"vec4 pointSpecular = vec4( 0.0, 0.0, 0.0, 0.0 );":"",l?"for( int i = 0; i < MAX_POINT_LIGHTS; i++ ) {":"",l?"vec3 pointVector = normalize( vPointLightVector[ i ] );":"",l?"vec3 pointHalfVector = normalize( vPointLightVector[ i ] + vViewPosition );":"",l?"float pointDotNormalHalf = dot( normal, pointHalfVector );":"",l?"float pointDiffuseWeight = max( dot( normal, pointVector ), 0.0 );":"",l?"float pointSpecularWeight = 0.0;":"",l?"if ( pointDotNormalHalf >= 0.0 )":
+"",l?"pointSpecularWeight = pow( pointDotNormalHalf, mShininess );":"",l?"pointDiffuse  += mColor * pointDiffuseWeight;":"",l?"pointSpecular += mSpecular * pointSpecularWeight;":"",l?"}":"",f?"vec4 dirDiffuse  = vec4( 0.0, 0.0, 0.0, 0.0 );":"",f?"vec4 dirSpecular = vec4( 0.0, 0.0, 0.0, 0.0 );":"",f?"for( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {":"",f?"vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );":"",f?"vec3 dirVector = normalize( lDirection.xyz );":"",f?"vec3 dirHalfVector = normalize( lDirection.xyz + vViewPosition );":
+"",f?"float dirDotNormalHalf = dot( normal, dirHalfVector );":"",f?"float dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );":"",f?"float dirSpecularWeight = 0.0;":"",f?"if ( dirDotNormalHalf >= 0.0 )":"",f?"dirSpecularWeight = pow( dirDotNormalHalf, mShininess );":"",f?"dirDiffuse  += mColor * dirDiffuseWeight;":"",f?"dirSpecular += mSpecular * dirSpecularWeight;":"",f?"}":"","vec4 totalLight = mAmbient;",f?"totalLight += dirDiffuse + dirSpecular;":"",l?"totalLight += pointDiffuse + pointSpecular;":
 "","if ( mixEnvMap ) {\ngl_FragColor = vec4( mix( mapColor.rgb * totalLight.xyz * vLightWeighting, cubeColor.rgb, mReflectivity ), mapColor.a );\n} else {\ngl_FragColor = vec4( mapColor.rgb * cubeColor.rgb * totalLight.xyz * vLightWeighting, mapColor.a );\n}\n} else if ( material == 1 ) {\nif ( mixEnvMap ) {\ngl_FragColor = vec4( mix( mColor.rgb * mapColor.rgb * vLightWeighting, cubeColor.rgb, mReflectivity ), mColor.a * mapColor.a );\n} else {\ngl_FragColor = vec4( mColor.rgb * mapColor.rgb * cubeColor.rgb * vLightWeighting, mColor.a * mapColor.a );\n}\n} else {\nif ( mixEnvMap ) {\ngl_FragColor = mix( mColor * mapColor, cubeColor, mReflectivity );\n} else {\ngl_FragColor = mColor * mapColor * cubeColor;\n}\n}\n}"].join("\n");
-e=b(n,e);c.useProgram(e);j(e,["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition","enableLighting","ambientLightColor","material","mColor","mAmbient","mSpecular","mShininess","mOpacity","enableMap","tMap","enableCubeMap","tCube","mixEnvMap","mReflectivity","mRefractionRatio","useRefract","m2Near","mFarPlusNear","mFarMinusNear"]);f&&j(e,["directionalLightNumber","directionalLightColor","directionalLightDirection"]);k&&j(e,["pointLightNumber","pointLightColor",
-"pointLightPosition"]);c.uniform1i(e.uniforms.enableMap,0);c.uniform1i(e.uniforms.tMap,0);c.uniform1i(e.uniforms.enableCubeMap,0);c.uniform1i(e.uniforms.tCube,1);c.uniform1i(e.uniforms.mixEnvMap,0);c.uniform1i(e.uniforms.useRefract,0);p(e,["position","normal","uv"]);return e}(a.directional,a.point);this.setSize=function(f,k){l.width=f;l.height=k;c.viewport(0,0,l.width,l.height)};this.clear=function(){c.clear(c.COLOR_BUFFER_BIT|c.DEPTH_BUFFER_BIT)};this.setupLights=function(f,k){var e,n,i,h,r,t=[],
-K=[],A=[];h=[];r=[];c.uniform1i(f.uniforms.enableLighting,k.length);e=0;for(n=k.length;e<n;e++){i=k[e];if(i instanceof THREE.AmbientLight)t.push(i);else if(i instanceof THREE.DirectionalLight)A.push(i);else i instanceof THREE.PointLight&&K.push(i)}e=i=h=r=0;for(n=t.length;e<n;e++){i+=t[e].color.r;h+=t[e].color.g;r+=t[e].color.b}c.uniform3f(f.uniforms.ambientLightColor,i,h,r);h=[];r=[];e=0;for(n=A.length;e<n;e++){i=A[e];h.push(i.color.r*i.intensity);h.push(i.color.g*i.intensity);h.push(i.color.b*i.intensity);
-r.push(i.position.x);r.push(i.position.y);r.push(i.position.z)}if(A.length){c.uniform1i(f.uniforms.directionalLightNumber,A.length);c.uniform3fv(f.uniforms.directionalLightDirection,r);c.uniform3fv(f.uniforms.directionalLightColor,h)}h=[];r=[];e=0;for(n=K.length;e<n;e++){i=K[e];h.push(i.color.r*i.intensity);h.push(i.color.g*i.intensity);h.push(i.color.b*i.intensity);r.push(i.position.x);r.push(i.position.y);r.push(i.position.z)}if(K.length){c.uniform1i(f.uniforms.pointLightNumber,K.length);c.uniform3fv(f.uniforms.pointLightPosition,
-r);c.uniform3fv(f.uniforms.pointLightColor,h)}};this.createBuffers=function(f,k){var e,n,i,h,r,t,K,A,H=[],Q=[],u=[],O=[],s=[],y=0,x=f.geometry.geometryChunks[k],R;i=false;e=0;for(n=f.material.length;e<n;e++){meshMaterial=f.material[e];if(meshMaterial instanceof THREE.MeshFaceMaterial){r=0;for(R=x.material.length;r<R;r++)if(x.material[r]&&x.material[r].shading!=undefined&&x.material[r].shading==THREE.SmoothShading){i=true;break}}else if(meshMaterial&&meshMaterial.shading!=undefined&&meshMaterial.shading==
-THREE.SmoothShading){i=true;break}if(i)break}R=i;e=0;for(n=x.faces.length;e<n;e++){i=x.faces[e];h=f.geometry.faces[i];r=h.vertexNormals;faceNormal=h.normal;i=f.geometry.uvs[i];if(h instanceof THREE.Face3){t=f.geometry.vertices[h.a].position;K=f.geometry.vertices[h.b].position;A=f.geometry.vertices[h.c].position;u.push(t.x,t.y,t.z);u.push(K.x,K.y,K.z);u.push(A.x,A.y,A.z);if(r.length==3&&R)for(h=0;h<3;h++)O.push(r[h].x,r[h].y,r[h].z);else for(h=0;h<3;h++)O.push(faceNormal.x,faceNormal.y,faceNormal.z);
-if(i)for(h=0;h<3;h++)s.push(i[h].u,i[h].v);H.push(y,y+1,y+2);Q.push(y,y+1);Q.push(y,y+2);Q.push(y+1,y+2);y+=3}else if(h instanceof THREE.Face4){t=f.geometry.vertices[h.a].position;K=f.geometry.vertices[h.b].position;A=f.geometry.vertices[h.c].position;h=f.geometry.vertices[h.d].position;u.push(t.x,t.y,t.z);u.push(K.x,K.y,K.z);u.push(A.x,A.y,A.z);u.push(h.x,h.y,h.z);if(r.length==4&&R)for(h=0;h<4;h++)O.push(r[h].x,r[h].y,r[h].z);else for(h=0;h<4;h++)O.push(faceNormal.x,faceNormal.y,faceNormal.z);if(i)for(h=
-0;h<4;h++)s.push(i[h].u,i[h].v);H.push(y,y+1,y+2);H.push(y,y+2,y+3);Q.push(y,y+1);Q.push(y,y+2);Q.push(y,y+3);Q.push(y+1,y+2);Q.push(y+2,y+3);y+=4}}if(u.length){x.__webGLVertexBuffer=c.createBuffer();c.bindBuffer(c.ARRAY_BUFFER,x.__webGLVertexBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(u),c.STATIC_DRAW);x.__webGLNormalBuffer=c.createBuffer();c.bindBuffer(c.ARRAY_BUFFER,x.__webGLNormalBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(O),c.STATIC_DRAW);if(s.length>0){x.__webGLUVBuffer=c.createBuffer();
-c.bindBuffer(c.ARRAY_BUFFER,x.__webGLUVBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(s),c.STATIC_DRAW)}x.__webGLFaceBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,x.__webGLFaceBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(H),c.STATIC_DRAW);x.__webGLLineBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,x.__webGLLineBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(Q),c.STATIC_DRAW);x.__webGLFaceCount=H.length;x.__webGLLineCount=Q.length}};this.renderBuffer=
-function(f,k,e,n){var i,h,r,t,K,A,H,Q,u;if(e instanceof THREE.MeshShaderMaterial){if(!e.program){e.program=b(e.fragment_shader,e.vertex_shader);H=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition"];for(u in e.uniforms)H.push(u);j(e.program,H);p(e.program,["position","normal","uv"])}u=e.program}else u=G;if(u!=E){c.useProgram(u);E=u}u==G&&this.setupLights(u,k);this.loadCamera(u,f);this.loadMatrices(u);if(e instanceof THREE.MeshShaderMaterial){r=e.wireframe;
-t=e.wireframe_linewidth;f=u;k=e.uniforms;var O;for(i in k){Q=k[i].type;H=k[i].value;O=f.uniforms[i];if(Q=="i")c.uniform1i(O,H);else if(Q=="f")c.uniform1f(O,H);else if(Q=="t"){c.uniform1i(O,H);Q=k[i].texture;if(Q instanceof THREE.TextureCube)d(Q,H);else Q instanceof THREE.Texture&&g(Q,H)}}}if(e instanceof THREE.MeshPhongMaterial||e instanceof THREE.MeshLambertMaterial||e instanceof THREE.MeshBasicMaterial){i=e.color;h=e.opacity;r=e.wireframe;t=e.wireframe_linewidth;K=e.map;A=e.env_map;k=e.combine==
-THREE.Mix;f=e.reflectivity;Q=e.env_map&&e.env_map.mapping==THREE.RefractionMapping;H=e.refraction_ratio;c.uniform4f(u.uniforms.mColor,i.r*h,i.g*h,i.b*h,h);c.uniform1i(u.uniforms.mixEnvMap,k);c.uniform1f(u.uniforms.mReflectivity,f);c.uniform1i(u.uniforms.useRefract,Q);c.uniform1f(u.uniforms.mRefractionRatio,H)}if(e instanceof THREE.MeshNormalMaterial){h=e.opacity;c.uniform1f(u.uniforms.mOpacity,h);c.uniform1i(u.uniforms.material,4)}else if(e instanceof THREE.MeshDepthMaterial){h=e.opacity;r=e.wireframe;
-t=e.wireframe_linewidth;c.uniform1f(u.uniforms.mOpacity,h);c.uniform1f(u.uniforms.m2Near,e.__2near);c.uniform1f(u.uniforms.mFarPlusNear,e.__farPlusNear);c.uniform1f(u.uniforms.mFarMinusNear,e.__farMinusNear);c.uniform1i(u.uniforms.material,3)}else if(e instanceof THREE.MeshPhongMaterial){i=e.ambient;f=e.specular;e=e.shininess;c.uniform4f(u.uniforms.mAmbient,i.r,i.g,i.b,h);c.uniform4f(u.uniforms.mSpecular,f.r,f.g,f.b,h);c.uniform1f(u.uniforms.mShininess,e);c.uniform1i(u.uniforms.material,2)}else if(e instanceof
-THREE.MeshLambertMaterial)c.uniform1i(u.uniforms.material,1);else if(e instanceof THREE.MeshBasicMaterial)c.uniform1i(u.uniforms.material,0);else if(e instanceof THREE.MeshCubeMaterial){c.uniform1i(u.uniforms.material,5);A=e.env_map}if(K){g(K,0);c.uniform1i(u.uniforms.tMap,0);c.uniform1i(u.uniforms.enableMap,1)}else c.uniform1i(u.uniforms.enableMap,0);if(A){d(A,1);c.uniform1i(u.uniforms.tCube,1);c.uniform1i(u.uniforms.enableCubeMap,1)}else c.uniform1i(u.uniforms.enableCubeMap,0);h=u.attributes;c.bindBuffer(c.ARRAY_BUFFER,
-n.__webGLVertexBuffer);c.vertexAttribPointer(h.position,3,c.FLOAT,false,0,0);c.bindBuffer(c.ARRAY_BUFFER,n.__webGLNormalBuffer);c.vertexAttribPointer(h.normal,3,c.FLOAT,false,0,0);if(h.uv>=0)if(n.__webGLUVBuffer){c.bindBuffer(c.ARRAY_BUFFER,n.__webGLUVBuffer);c.enableVertexAttribArray(h.uv);c.vertexAttribPointer(h.uv,2,c.FLOAT,false,0,0)}else c.disableVertexAttribArray(h.uv);if(r){c.lineWidth(t);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,n.__webGLLineBuffer);c.drawElements(c.LINES,n.__webGLLineCount,c.UNSIGNED_SHORT,
-0)}else{c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,n.__webGLFaceBuffer);c.drawElements(c.TRIANGLES,n.__webGLFaceCount,c.UNSIGNED_SHORT,0)}};this.renderPass=function(f,k,e,n,i,h){var r,t,K,A,H;K=0;for(A=e.material.length;K<A;K++){r=e.material[K];if(r instanceof THREE.MeshFaceMaterial){r=0;for(t=n.material.length;r<t;r++)if((H=n.material[r])&&H.blending==i&&H.opacity<1==h){this.setBlending(H.blending);this.renderBuffer(f,k,H,n)}}else if((H=r)&&H.blending==i&&H.opacity<1==h){this.setBlending(H.blending);this.renderBuffer(f,
-k,H,n)}}};this.render=function(f,k){var e,n,i,h,r=f.lights;this.initWebGLObjects(f);this.autoClear&&this.clear();k.autoUpdateMatrix&&k.updateMatrix();e=0;for(n=f.__webGLObjects.length;e<n;e++){i=f.__webGLObjects[e];h=i.object;i=i.buffer;if(h.visible){this.setupMatrices(h,k);this.renderPass(k,r,h,i,THREE.NormalBlending,false)}}e=0;for(n=f.__webGLObjects.length;e<n;e++){i=f.__webGLObjects[e];h=i.object;i=i.buffer;if(h.visible){this.setupMatrices(h,k);this.renderPass(k,r,h,i,THREE.AdditiveBlending,false);
-this.renderPass(k,r,h,i,THREE.SubtractiveBlending,false);this.renderPass(k,r,h,i,THREE.AdditiveBlending,true);this.renderPass(k,r,h,i,THREE.SubtractiveBlending,true);this.renderPass(k,r,h,i,THREE.NormalBlending,true)}}};this.initWebGLObjects=function(f){var k,e,n,i,h,r;if(!f.__webGLObjects){f.__webGLObjects=[];f.__webGLObjectsMap={}}k=0;for(e=f.objects.length;k<e;k++){n=f.objects[k];if(f.__webGLObjectsMap[n.id]==undefined)f.__webGLObjectsMap[n.id]={};r=f.__webGLObjectsMap[n.id];if(n instanceof THREE.Mesh)for(h in n.geometry.geometryChunks){i=
-n.geometry.geometryChunks[h];i.__webGLVertexBuffer||this.createBuffers(n,h);if(r[h]==undefined){i={buffer:i,object:n};f.__webGLObjects.push(i);r[h]=1}}}};this.removeObject=function(f,k){var e,n;for(e=f.__webGLObjects.length-1;e>=0;e--){n=f.__webGLObjects[e].object;k==n&&f.__webGLObjects.splice(e,1)}};this.setupMatrices=function(f,k){f.autoUpdateMatrix&&f.updateMatrix();w.multiply(k.matrix,f.matrix);P.set(k.matrix.flatten());J.set(w.flatten());M.set(k.projectionMatrix.flatten());F=THREE.Matrix4.makeInvert3x3(w).transpose();
-o.set(F.m);T.set(f.matrix.flatten())};this.loadMatrices=function(f){c.uniformMatrix4fv(f.uniforms.viewMatrix,false,P);c.uniformMatrix4fv(f.uniforms.modelViewMatrix,false,J);c.uniformMatrix4fv(f.uniforms.projectionMatrix,false,M);c.uniformMatrix3fv(f.uniforms.normalMatrix,false,o);c.uniformMatrix4fv(f.uniforms.objectMatrix,false,T)};this.loadCamera=function(f,k){c.uniform3f(f.uniforms.cameraPosition,k.position.x,k.position.y,k.position.z)};this.setBlending=function(f){switch(f){case THREE.AdditiveBlending:c.blendEquation(c.FUNC_ADD);
-c.blendFunc(c.ONE,c.ONE);break;case THREE.SubtractiveBlending:c.blendFunc(c.DST_COLOR,c.ZERO);break;default:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA)}};this.setFaceCulling=function(f,k){if(f){!k||k=="ccw"?c.frontFace(c.CCW):c.frontFace(c.CW);if(f=="back")c.cullFace(c.BACK);else f=="front"?c.cullFace(c.FRONT):c.cullFace(c.FRONT_AND_BACK);c.enable(c.CULL_FACE)}else c.disable(c.CULL_FACE)}};
+e=b(q,e);c.useProgram(e);j(e,["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition","enableLighting","ambientLightColor","material","mColor","mAmbient","mSpecular","mShininess","mOpacity","enableMap","tMap","enableCubeMap","tCube","mixEnvMap","mReflectivity","mRefractionRatio","useRefract","m2Near","mFarPlusNear","mFarMinusNear"]);f&&j(e,["directionalLightNumber","directionalLightColor","directionalLightDirection"]);l&&j(e,["pointLightNumber","pointLightColor",
+"pointLightPosition"]);c.uniform1i(e.uniforms.enableMap,0);c.uniform1i(e.uniforms.tMap,0);c.uniform1i(e.uniforms.enableCubeMap,0);c.uniform1i(e.uniforms.tCube,1);c.uniform1i(e.uniforms.mixEnvMap,0);c.uniform1i(e.uniforms.useRefract,0);n(e,["position","normal","uv"]);return e}(a.directional,a.point);this.setSize=function(f,l){o.width=f;o.height=l;c.viewport(0,0,o.width,o.height)};this.clear=function(){c.clear(c.COLOR_BUFFER_BIT|c.DEPTH_BUFFER_BIT)};this.setupLights=function(f,l){var e,q,h,i,s,r=[],
+L=[],B=[];i=[];s=[];c.uniform1i(f.uniforms.enableLighting,l.length);e=0;for(q=l.length;e<q;e++){h=l[e];if(h instanceof THREE.AmbientLight)r.push(h);else if(h instanceof THREE.DirectionalLight)B.push(h);else h instanceof THREE.PointLight&&L.push(h)}e=h=i=s=0;for(q=r.length;e<q;e++){h+=r[e].color.r;i+=r[e].color.g;s+=r[e].color.b}c.uniform3f(f.uniforms.ambientLightColor,h,i,s);i=[];s=[];e=0;for(q=B.length;e<q;e++){h=B[e];i.push(h.color.r*h.intensity);i.push(h.color.g*h.intensity);i.push(h.color.b*h.intensity);
+s.push(h.position.x);s.push(h.position.y);s.push(h.position.z)}if(B.length){c.uniform1i(f.uniforms.directionalLightNumber,B.length);c.uniform3fv(f.uniforms.directionalLightDirection,s);c.uniform3fv(f.uniforms.directionalLightColor,i)}i=[];s=[];e=0;for(q=L.length;e<q;e++){h=L[e];i.push(h.color.r*h.intensity);i.push(h.color.g*h.intensity);i.push(h.color.b*h.intensity);s.push(h.position.x);s.push(h.position.y);s.push(h.position.z)}if(L.length){c.uniform1i(f.uniforms.pointLightNumber,L.length);c.uniform3fv(f.uniforms.pointLightPosition,
+s);c.uniform3fv(f.uniforms.pointLightColor,i)}};this.createBuffers=function(f,l){var e,q,h,i,s,r,L,B,M=[],Q=[],u=[],R=[],y=[],A=0,E=f.geometry.geometryChunks[l],W;h=false;e=0;for(q=f.material.length;e<q;e++){meshMaterial=f.material[e];if(meshMaterial instanceof THREE.MeshFaceMaterial){s=0;for(W=E.material.length;s<W;s++)if(E.material[s]&&E.material[s].shading!=undefined&&E.material[s].shading==THREE.SmoothShading){h=true;break}}else if(meshMaterial&&meshMaterial.shading!=undefined&&meshMaterial.shading==
+THREE.SmoothShading){h=true;break}if(h)break}W=h;e=0;for(q=E.faces.length;e<q;e++){h=E.faces[e];i=f.geometry.faces[h];s=i.vertexNormals;faceNormal=i.normal;h=f.geometry.uvs[h];if(i instanceof THREE.Face3){r=f.geometry.vertices[i.a].position;L=f.geometry.vertices[i.b].position;B=f.geometry.vertices[i.c].position;u.push(r.x,r.y,r.z);u.push(L.x,L.y,L.z);u.push(B.x,B.y,B.z);if(s.length==3&&W)for(i=0;i<3;i++)R.push(s[i].x,s[i].y,s[i].z);else for(i=0;i<3;i++)R.push(faceNormal.x,faceNormal.y,faceNormal.z);
+if(h)for(i=0;i<3;i++)y.push(h[i].u,h[i].v);M.push(A,A+1,A+2);Q.push(A,A+1);Q.push(A,A+2);Q.push(A+1,A+2);A+=3}else if(i instanceof THREE.Face4){r=f.geometry.vertices[i.a].position;L=f.geometry.vertices[i.b].position;B=f.geometry.vertices[i.c].position;i=f.geometry.vertices[i.d].position;u.push(r.x,r.y,r.z);u.push(L.x,L.y,L.z);u.push(B.x,B.y,B.z);u.push(i.x,i.y,i.z);if(s.length==4&&W)for(i=0;i<4;i++)R.push(s[i].x,s[i].y,s[i].z);else for(i=0;i<4;i++)R.push(faceNormal.x,faceNormal.y,faceNormal.z);if(h)for(i=
+0;i<4;i++)y.push(h[i].u,h[i].v);M.push(A,A+1,A+2);M.push(A,A+2,A+3);Q.push(A,A+1);Q.push(A,A+2);Q.push(A,A+3);Q.push(A+1,A+2);Q.push(A+2,A+3);A+=4}}if(u.length){E.__webGLVertexBuffer=c.createBuffer();c.bindBuffer(c.ARRAY_BUFFER,E.__webGLVertexBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(u),c.STATIC_DRAW);E.__webGLNormalBuffer=c.createBuffer();c.bindBuffer(c.ARRAY_BUFFER,E.__webGLNormalBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(R),c.STATIC_DRAW);if(y.length>0){E.__webGLUVBuffer=c.createBuffer();
+c.bindBuffer(c.ARRAY_BUFFER,E.__webGLUVBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(y),c.STATIC_DRAW)}E.__webGLFaceBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,E.__webGLFaceBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(M),c.STATIC_DRAW);E.__webGLLineBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,E.__webGLLineBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(Q),c.STATIC_DRAW);E.__webGLFaceCount=M.length;E.__webGLLineCount=Q.length}};this.renderBuffer=
+function(f,l,e,q){var h,i,s,r,L,B,M,Q,u;if(e instanceof THREE.MeshShaderMaterial){if(!e.program){e.program=b(e.fragment_shader,e.vertex_shader);M=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition"];for(u in e.uniforms)M.push(u);j(e.program,M);n(e.program,["position","normal","uv"])}u=e.program}else u=D;if(u!=F){c.useProgram(u);F=u}u==D&&this.setupLights(u,l);this.loadCamera(u,f);this.loadMatrices(u);if(e instanceof THREE.MeshShaderMaterial){s=e.wireframe;
+r=e.wireframe_linewidth;f=u;l=e.uniforms;var R;for(h in l){Q=l[h].type;M=l[h].value;R=f.uniforms[h];if(Q=="i")c.uniform1i(R,M);else if(Q=="f")c.uniform1f(R,M);else if(Q=="t"){c.uniform1i(R,M);if(Q=l[h].texture)Q.image instanceof Array&&Q.image.length==6?d(Q,M):g(Q,M)}}}if(e instanceof THREE.MeshPhongMaterial||e instanceof THREE.MeshLambertMaterial||e instanceof THREE.MeshBasicMaterial){h=e.color;i=e.opacity;s=e.wireframe;r=e.wireframe_linewidth;L=e.map;B=e.env_map;l=e.combine==THREE.MixOperation;
+f=e.reflectivity;Q=e.env_map&&e.env_map.mapping instanceof THREE.CubeRefractionMapping;M=e.refraction_ratio;c.uniform4f(u.uniforms.mColor,h.r*i,h.g*i,h.b*i,i);c.uniform1i(u.uniforms.mixEnvMap,l);c.uniform1f(u.uniforms.mReflectivity,f);c.uniform1i(u.uniforms.useRefract,Q);c.uniform1f(u.uniforms.mRefractionRatio,M)}if(e instanceof THREE.MeshNormalMaterial){i=e.opacity;c.uniform1f(u.uniforms.mOpacity,i);c.uniform1i(u.uniforms.material,4)}else if(e instanceof THREE.MeshDepthMaterial){i=e.opacity;s=e.wireframe;
+r=e.wireframe_linewidth;c.uniform1f(u.uniforms.mOpacity,i);c.uniform1f(u.uniforms.m2Near,e.__2near);c.uniform1f(u.uniforms.mFarPlusNear,e.__farPlusNear);c.uniform1f(u.uniforms.mFarMinusNear,e.__farMinusNear);c.uniform1i(u.uniforms.material,3)}else if(e instanceof THREE.MeshPhongMaterial){h=e.ambient;f=e.specular;e=e.shininess;c.uniform4f(u.uniforms.mAmbient,h.r,h.g,h.b,i);c.uniform4f(u.uniforms.mSpecular,f.r,f.g,f.b,i);c.uniform1f(u.uniforms.mShininess,e);c.uniform1i(u.uniforms.material,2)}else if(e instanceof
+THREE.MeshLambertMaterial)c.uniform1i(u.uniforms.material,1);else if(e instanceof THREE.MeshBasicMaterial)c.uniform1i(u.uniforms.material,0);else if(e instanceof THREE.MeshCubeMaterial){c.uniform1i(u.uniforms.material,5);B=e.env_map}if(L){g(L,0);c.uniform1i(u.uniforms.tMap,0);c.uniform1i(u.uniforms.enableMap,1)}else c.uniform1i(u.uniforms.enableMap,0);if(B){d(B,1);c.uniform1i(u.uniforms.tCube,1);c.uniform1i(u.uniforms.enableCubeMap,1)}else c.uniform1i(u.uniforms.enableCubeMap,0);i=u.attributes;c.bindBuffer(c.ARRAY_BUFFER,
+q.__webGLVertexBuffer);c.vertexAttribPointer(i.position,3,c.FLOAT,false,0,0);c.bindBuffer(c.ARRAY_BUFFER,q.__webGLNormalBuffer);c.vertexAttribPointer(i.normal,3,c.FLOAT,false,0,0);if(i.uv>=0)if(q.__webGLUVBuffer){c.bindBuffer(c.ARRAY_BUFFER,q.__webGLUVBuffer);c.enableVertexAttribArray(i.uv);c.vertexAttribPointer(i.uv,2,c.FLOAT,false,0,0)}else c.disableVertexAttribArray(i.uv);if(s){c.lineWidth(r);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,q.__webGLLineBuffer);c.drawElements(c.LINES,q.__webGLLineCount,c.UNSIGNED_SHORT,
+0)}else{c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,q.__webGLFaceBuffer);c.drawElements(c.TRIANGLES,q.__webGLFaceCount,c.UNSIGNED_SHORT,0)}};this.renderPass=function(f,l,e,q,h,i){var s,r,L,B,M;L=0;for(B=e.material.length;L<B;L++){s=e.material[L];if(s instanceof THREE.MeshFaceMaterial){s=0;for(r=q.material.length;s<r;s++)if((M=q.material[s])&&M.blending==h&&M.opacity<1==i){this.setBlending(M.blending);this.renderBuffer(f,l,M,q)}}else if((M=s)&&M.blending==h&&M.opacity<1==i){this.setBlending(M.blending);this.renderBuffer(f,
+l,M,q)}}};this.render=function(f,l){var e,q,h,i,s=f.lights;this.initWebGLObjects(f);this.autoClear&&this.clear();l.autoUpdateMatrix&&l.updateMatrix();e=0;for(q=f.__webGLObjects.length;e<q;e++){h=f.__webGLObjects[e];i=h.object;h=h.buffer;if(i.visible){this.setupMatrices(i,l);this.renderPass(l,s,i,h,THREE.NormalBlending,false)}}e=0;for(q=f.__webGLObjects.length;e<q;e++){h=f.__webGLObjects[e];i=h.object;h=h.buffer;if(i.visible){this.setupMatrices(i,l);this.renderPass(l,s,i,h,THREE.AdditiveBlending,false);
+this.renderPass(l,s,i,h,THREE.SubtractiveBlending,false);this.renderPass(l,s,i,h,THREE.AdditiveBlending,true);this.renderPass(l,s,i,h,THREE.SubtractiveBlending,true);this.renderPass(l,s,i,h,THREE.NormalBlending,true)}}};this.initWebGLObjects=function(f){var l,e,q,h,i,s;if(!f.__webGLObjects){f.__webGLObjects=[];f.__webGLObjectsMap={}}l=0;for(e=f.objects.length;l<e;l++){q=f.objects[l];if(f.__webGLObjectsMap[q.id]==undefined)f.__webGLObjectsMap[q.id]={};s=f.__webGLObjectsMap[q.id];if(q instanceof THREE.Mesh)for(i in q.geometry.geometryChunks){h=
+q.geometry.geometryChunks[i];h.__webGLVertexBuffer||this.createBuffers(q,i);if(s[i]==undefined){h={buffer:h,object:q};f.__webGLObjects.push(h);s[i]=1}}}};this.removeObject=function(f,l){var e,q;for(e=f.__webGLObjects.length-1;e>=0;e--){q=f.__webGLObjects[e].object;l==q&&f.__webGLObjects.splice(e,1)}};this.setupMatrices=function(f,l){f.autoUpdateMatrix&&f.updateMatrix();w.multiply(l.matrix,f.matrix);H.set(l.matrix.flatten());G.set(w.flatten());K.set(l.projectionMatrix.flatten());x=THREE.Matrix4.makeInvert3x3(w).transpose();
+N.set(x.m);O.set(f.matrix.flatten())};this.loadMatrices=function(f){c.uniformMatrix4fv(f.uniforms.viewMatrix,false,H);c.uniformMatrix4fv(f.uniforms.modelViewMatrix,false,G);c.uniformMatrix4fv(f.uniforms.projectionMatrix,false,K);c.uniformMatrix3fv(f.uniforms.normalMatrix,false,N);c.uniformMatrix4fv(f.uniforms.objectMatrix,false,O)};this.loadCamera=function(f,l){c.uniform3f(f.uniforms.cameraPosition,l.position.x,l.position.y,l.position.z)};this.setBlending=function(f){switch(f){case THREE.AdditiveBlending:c.blendEquation(c.FUNC_ADD);
+c.blendFunc(c.ONE,c.ONE);break;case THREE.SubtractiveBlending:c.blendFunc(c.DST_COLOR,c.ZERO);break;default:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA)}};this.setFaceCulling=function(f,l){if(f){!l||l=="ccw"?c.frontFace(c.CCW):c.frontFace(c.CW);if(f=="back")c.cullFace(c.BACK);else f=="front"?c.cullFace(c.FRONT):c.cullFace(c.FRONT_AND_BACK);c.enable(c.CULL_FACE)}else c.disable(c.CULL_FACE)}};
 THREE.RenderableFace3=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.v3=new THREE.Vertex;this.centroidWorld=new THREE.Vector3;this.centroidScreen=new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.vertexNormalsWorld=[];this.faceMaterial=this.meshMaterial=null;this.overdraw=false;this.uvs=[null,null,null]};THREE.RenderableParticle=function(){this.rotation=this.z=this.y=this.x=null;this.scale=new THREE.Vector2;this.material=null};
 THREE.RenderableLine=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.material=null};

+ 153 - 150
build/ThreeExtras.js

@@ -1,4 +1,4 @@
-// ThreeExtras.js r30 - http://github.com/mrdoob/three.js
+// ThreeExtras.js r31 - http://github.com/mrdoob/three.js
 var THREE=THREE||{};THREE.Color=function(a){this.autoUpdate=true;this.setHex(a)};
 THREE.Color.prototype={setRGB:function(a,b,d){this.r=a;this.g=b;this.b=d;if(this.autoUpdate){this.updateHex();this.updateStyleString()}},setHex:function(a){this.hex=~~a&16777215;if(this.autoUpdate){this.updateRGBA();this.updateStyleString()}},updateHex:function(){this.hex=~~(this.r*255)<<16^~~(this.g*255)<<8^~~(this.b*255)},updateRGBA:function(){this.r=(this.hex>>16&255)/255;this.g=(this.hex>>8&255)/255;this.b=(this.hex&255)/255},updateStyleString:function(){this.__styleString="rgb("+~~(this.r*255)+
 ","+~~(this.g*255)+","+~~(this.b*255)+")"},toString:function(){return"THREE.Color ( r: "+this.r+", g: "+this.g+", b: "+this.b+", hex: "+this.hex+" )"}};THREE.Vector2=function(a,b){this.x=a||0;this.y=b||0};
@@ -12,44 +12,44 @@ THREE.Vector4=function(a,b,d,e){this.x=a||0;this.y=b||0;this.z=d||0;this.w=e||1}
 THREE.Vector4.prototype={set:function(a,b,d,e){this.x=a;this.y=b;this.z=d;this.w=e;return this},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=a.w||1;return this},add:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;this.w=a.w+b.w;return this},addSelf:function(a){this.x+=a.x;this.y+=a.y;this.z+=a.z;this.w+=a.w;return this},sub:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;this.w=a.w-b.w;return this},subSelf:function(a){this.x-=a.x;this.y-=a.y;this.z-=a.z;this.w-=a.w;
 return this},multiplyScalar:function(a){this.x*=a;this.y*=a;this.z*=a;this.w*=a;return this},divideScalar:function(a){this.x/=a;this.y/=a;this.z/=a;this.w/=a;return this},lerpSelf:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z-this.z)*b;this.w+=(a.w-this.w)*b},clone:function(){return new THREE.Vector4(this.x,this.y,this.z,this.w)},toString:function(){return"THREE.Vector4 ("+this.x+", "+this.y+", "+this.z+", "+this.w+")"}};
 THREE.Ray=function(a,b){this.origin=a||new THREE.Vector3;this.direction=b||new THREE.Vector3};
-THREE.Ray.prototype={intersectScene:function(a){var b,d,e=a.objects,f=[];a=0;for(b=e.length;a<b;a++){d=e[a];if(d instanceof THREE.Mesh)f=f.concat(this.intersectObject(d))}f.sort(function(j,k){return j.distance-k.distance});return f},intersectObject:function(a){function b(L,u,A,o){o=o.clone().subSelf(u);A=A.clone().subSelf(u);var i=L.clone().subSelf(u);L=o.dot(o);u=o.dot(A);o=o.dot(i);var n=A.dot(A);A=A.dot(i);i=1/(L*n-u*u);n=(n*o-u*A)*i;L=(L*A-u*o)*i;return n>0&&L>0&&n+L<1}var d,e,f,j,k,g,p,c,t,F,
-r,w=a.geometry,v=w.vertices,y=[];d=0;for(e=w.faces.length;d<e;d++){f=w.faces[d];F=this.origin.clone();r=this.direction.clone();j=a.matrix.multiplyVector3(v[f.a].position.clone());k=a.matrix.multiplyVector3(v[f.b].position.clone());g=a.matrix.multiplyVector3(v[f.c].position.clone());p=f instanceof THREE.Face4?a.matrix.multiplyVector3(v[f.d].position.clone()):null;c=a.rotationMatrix.multiplyVector3(f.normal.clone());t=r.dot(c);if(t<0){c=c.dot((new THREE.Vector3).sub(j,F))/t;F=F.addSelf(r.multiplyScalar(c));
-if(f instanceof THREE.Face3){if(b(F,j,k,g)){f={distance:this.origin.distanceTo(F),point:F,face:f,object:a};y.push(f)}}else if(f instanceof THREE.Face4)if(b(F,j,k,p)||b(F,k,g,p)){f={distance:this.origin.distanceTo(F),point:F,face:f,object:a};y.push(f)}}}return y}};
-THREE.Rectangle=function(){function a(){j=e-b;k=f-d}var b,d,e,f,j,k,g=true;this.getX=function(){return b};this.getY=function(){return d};this.getWidth=function(){return j};this.getHeight=function(){return k};this.getLeft=function(){return b};this.getTop=function(){return d};this.getRight=function(){return e};this.getBottom=function(){return f};this.set=function(p,c,t,F){g=false;b=p;d=c;e=t;f=F;a()};this.addPoint=function(p,c){if(g){g=false;b=p;d=c;e=p;f=c}else{b=Math.min(b,p);d=Math.min(d,c);e=Math.max(e,
-p);f=Math.max(f,c)}a()};this.addRectangle=function(p){if(g){g=false;b=p.getLeft();d=p.getTop();e=p.getRight();f=p.getBottom()}else{b=Math.min(b,p.getLeft());d=Math.min(d,p.getTop());e=Math.max(e,p.getRight());f=Math.max(f,p.getBottom())}a()};this.inflate=function(p){b-=p;d-=p;e+=p;f+=p;a()};this.minSelf=function(p){b=Math.max(b,p.getLeft());d=Math.max(d,p.getTop());e=Math.min(e,p.getRight());f=Math.min(f,p.getBottom());a()};this.instersects=function(p){return Math.min(e,p.getRight())-Math.max(b,p.getLeft())>=
-0&&Math.min(f,p.getBottom())-Math.max(d,p.getTop())>=0};this.empty=function(){g=true;f=e=d=b=0;a()};this.isEmpty=function(){return g};this.toString=function(){return"THREE.Rectangle ( left: "+b+", right: "+e+", top: "+d+", bottom: "+f+", width: "+j+", height: "+k+" )"}};THREE.Matrix3=function(){this.m=[]};THREE.Matrix3.prototype={transpose:function(){var a;a=this.m[1];this.m[1]=this.m[3];this.m[3]=a;a=this.m[2];this.m[2]=this.m[6];this.m[6]=a;a=this.m[5];this.m[5]=this.m[7];this.m[7]=a;return this}};
+THREE.Ray.prototype={intersectScene:function(a){var b,d,e=a.objects,g=[];a=0;for(b=e.length;a<b;a++){d=e[a];if(d instanceof THREE.Mesh)g=g.concat(this.intersectObject(d))}g.sort(function(j,k){return j.distance-k.distance});return g},intersectObject:function(a){function b(I,F,y,n){n=n.clone().subSelf(F);y=y.clone().subSelf(F);var i=I.clone().subSelf(F);I=n.dot(n);F=n.dot(y);n=n.dot(i);var m=y.dot(y);y=y.dot(i);i=1/(I*m-F*F);m=(m*n-F*y)*i;I=(I*y-F*n)*i;return m>0&&I>0&&m+I<1}var d,e,g,j,k,f,p,c,v,D,
+r,t=a.geometry,u=t.vertices,w=[];d=0;for(e=t.faces.length;d<e;d++){g=t.faces[d];D=this.origin.clone();r=this.direction.clone();j=a.matrix.multiplyVector3(u[g.a].position.clone());k=a.matrix.multiplyVector3(u[g.b].position.clone());f=a.matrix.multiplyVector3(u[g.c].position.clone());p=g instanceof THREE.Face4?a.matrix.multiplyVector3(u[g.d].position.clone()):null;c=a.rotationMatrix.multiplyVector3(g.normal.clone());v=r.dot(c);if(v<0){c=c.dot((new THREE.Vector3).sub(j,D))/v;D=D.addSelf(r.multiplyScalar(c));
+if(g instanceof THREE.Face3){if(b(D,j,k,f)){g={distance:this.origin.distanceTo(D),point:D,face:g,object:a};w.push(g)}}else if(g instanceof THREE.Face4)if(b(D,j,k,p)||b(D,k,f,p)){g={distance:this.origin.distanceTo(D),point:D,face:g,object:a};w.push(g)}}}return w}};
+THREE.Rectangle=function(){function a(){j=e-b;k=g-d}var b,d,e,g,j,k,f=true;this.getX=function(){return b};this.getY=function(){return d};this.getWidth=function(){return j};this.getHeight=function(){return k};this.getLeft=function(){return b};this.getTop=function(){return d};this.getRight=function(){return e};this.getBottom=function(){return g};this.set=function(p,c,v,D){f=false;b=p;d=c;e=v;g=D;a()};this.addPoint=function(p,c){if(f){f=false;b=p;d=c;e=p;g=c}else{b=Math.min(b,p);d=Math.min(d,c);e=Math.max(e,
+p);g=Math.max(g,c)}a()};this.addRectangle=function(p){if(f){f=false;b=p.getLeft();d=p.getTop();e=p.getRight();g=p.getBottom()}else{b=Math.min(b,p.getLeft());d=Math.min(d,p.getTop());e=Math.max(e,p.getRight());g=Math.max(g,p.getBottom())}a()};this.inflate=function(p){b-=p;d-=p;e+=p;g+=p;a()};this.minSelf=function(p){b=Math.max(b,p.getLeft());d=Math.max(d,p.getTop());e=Math.min(e,p.getRight());g=Math.min(g,p.getBottom());a()};this.instersects=function(p){return Math.min(e,p.getRight())-Math.max(b,p.getLeft())>=
+0&&Math.min(g,p.getBottom())-Math.max(d,p.getTop())>=0};this.empty=function(){f=true;g=e=d=b=0;a()};this.isEmpty=function(){return f};this.toString=function(){return"THREE.Rectangle ( left: "+b+", right: "+e+", top: "+d+", bottom: "+g+", width: "+j+", height: "+k+" )"}};THREE.Matrix3=function(){this.m=[]};THREE.Matrix3.prototype={transpose:function(){var a;a=this.m[1];this.m[1]=this.m[3];this.m[3]=a;a=this.m[2];this.m[2]=this.m[6];this.m[6]=a;a=this.m[5];this.m[5]=this.m[7];this.m[7]=a;return this}};
 THREE.Matrix4=function(){};
 THREE.Matrix4.prototype={n11:1,n12:0,n13:0,n14:0,n21:0,n22:1,n23:0,n24:0,n31:0,n32:0,n33:1,n34:0,n41:0,n42:0,n43:0,n44:1,identity:function(){this.n11=1;this.n21=this.n14=this.n13=this.n12=0;this.n22=1;this.n32=this.n31=this.n24=this.n23=0;this.n33=1;this.n43=this.n42=this.n41=this.n34=0;this.n44=1},copy:function(a){this.n11=a.n11;this.n12=a.n12;this.n13=a.n13;this.n14=a.n14;this.n21=a.n21;this.n22=a.n22;this.n23=a.n23;this.n24=a.n24;this.n31=a.n31;this.n32=a.n32;this.n33=a.n33;this.n34=a.n34;this.n41=
-a.n41;this.n42=a.n42;this.n43=a.n43;this.n44=a.n44},lookAt:function(a,b,d){var e=new THREE.Vector3,f=new THREE.Vector3,j=new THREE.Vector3;j.sub(a,b).normalize();e.cross(d,j).normalize();f.cross(j,e).normalize();this.n11=e.x;this.n12=e.y;this.n13=e.z;this.n14=-e.dot(a);this.n21=f.x;this.n22=f.y;this.n23=f.z;this.n24=-f.dot(a);this.n31=j.x;this.n32=j.y;this.n33=j.z;this.n34=-j.dot(a);this.n43=this.n42=this.n41=0;this.n44=1},multiplyVector3:function(a){var b=a.x,d=a.y,e=a.z,f=1/(this.n41*b+this.n42*
-d+this.n43*e+this.n44);a.x=(this.n11*b+this.n12*d+this.n13*e+this.n14)*f;a.y=(this.n21*b+this.n22*d+this.n23*e+this.n24)*f;a.z=(this.n31*b+this.n32*d+this.n33*e+this.n34)*f;return a},multiplyVector4:function(a){var b=a.x,d=a.y,e=a.z,f=a.w;a.x=this.n11*b+this.n12*d+this.n13*e+this.n14*f;a.y=this.n21*b+this.n22*d+this.n23*e+this.n24*f;a.z=this.n31*b+this.n32*d+this.n33*e+this.n34*f;a.w=this.n41*b+this.n42*d+this.n43*e+this.n44*f;return a},crossVector:function(a){var b=new THREE.Vector4;b.x=this.n11*
-a.x+this.n12*a.y+this.n13*a.z+this.n14*a.w;b.y=this.n21*a.x+this.n22*a.y+this.n23*a.z+this.n24*a.w;b.z=this.n31*a.x+this.n32*a.y+this.n33*a.z+this.n34*a.w;b.w=a.w?this.n41*a.x+this.n42*a.y+this.n43*a.z+this.n44*a.w:1;return b},multiply:function(a,b){var d=a.n11,e=a.n12,f=a.n13,j=a.n14,k=a.n21,g=a.n22,p=a.n23,c=a.n24,t=a.n31,F=a.n32,r=a.n33,w=a.n34,v=a.n41,y=a.n42,L=a.n43,u=a.n44,A=b.n11,o=b.n12,i=b.n13,n=b.n14,h=b.n21,x=b.n22,m=b.n23,l=b.n24,B=b.n31,C=b.n32,Q=b.n33,J=b.n34,P=b.n41,S=b.n42,E=b.n43,
-T=b.n44;this.n11=d*A+e*h+f*B+j*P;this.n12=d*o+e*x+f*C+j*S;this.n13=d*i+e*m+f*Q+j*E;this.n14=d*n+e*l+f*J+j*T;this.n21=k*A+g*h+p*B+c*P;this.n22=k*o+g*x+p*C+c*S;this.n23=k*i+g*m+p*Q+c*E;this.n24=k*n+g*l+p*J+c*T;this.n31=t*A+F*h+r*B+w*P;this.n32=t*o+F*x+r*C+w*S;this.n33=t*i+F*m+r*Q+w*E;this.n34=t*n+F*l+r*J+w*T;this.n41=v*A+y*h+L*B+u*P;this.n42=v*o+y*x+L*C+u*S;this.n43=v*i+y*m+L*Q+u*E;this.n44=v*n+y*l+L*J+u*T},multiplySelf:function(a){var b=this.n11,d=this.n12,e=this.n13,f=this.n14,j=this.n21,k=this.n22,
-g=this.n23,p=this.n24,c=this.n31,t=this.n32,F=this.n33,r=this.n34,w=this.n41,v=this.n42,y=this.n43,L=this.n44;this.n11=b*a.n11+d*a.n21+e*a.n31+f*a.n41;this.n12=b*a.n12+d*a.n22+e*a.n32+f*a.n42;this.n13=b*a.n13+d*a.n23+e*a.n33+f*a.n43;this.n14=b*a.n14+d*a.n24+e*a.n34+f*a.n44;this.n21=j*a.n11+k*a.n21+g*a.n31+p*a.n41;this.n22=j*a.n12+k*a.n22+g*a.n32+p*a.n42;this.n23=j*a.n13+k*a.n23+g*a.n33+p*a.n43;this.n24=j*a.n14+k*a.n24+g*a.n34+p*a.n44;this.n31=c*a.n11+t*a.n21+F*a.n31+r*a.n41;this.n32=c*a.n12+t*a.n22+
-F*a.n32+r*a.n42;this.n33=c*a.n13+t*a.n23+F*a.n33+r*a.n43;this.n34=c*a.n14+t*a.n24+F*a.n34+r*a.n44;this.n41=w*a.n11+v*a.n21+y*a.n31+L*a.n41;this.n42=w*a.n12+v*a.n22+y*a.n32+L*a.n42;this.n43=w*a.n13+v*a.n23+y*a.n33+L*a.n43;this.n44=w*a.n14+v*a.n24+y*a.n34+L*a.n44},multiplyScalar:function(a){this.n11*=a;this.n12*=a;this.n13*=a;this.n14*=a;this.n21*=a;this.n22*=a;this.n23*=a;this.n24*=a;this.n31*=a;this.n32*=a;this.n33*=a;this.n34*=a;this.n41*=a;this.n42*=a;this.n43*=a;this.n44*=a},determinant:function(){return this.n14*
+a.n41;this.n42=a.n42;this.n43=a.n43;this.n44=a.n44},lookAt:function(a,b,d){var e=new THREE.Vector3,g=new THREE.Vector3,j=new THREE.Vector3;j.sub(a,b).normalize();e.cross(d,j).normalize();g.cross(j,e).normalize();this.n11=e.x;this.n12=e.y;this.n13=e.z;this.n14=-e.dot(a);this.n21=g.x;this.n22=g.y;this.n23=g.z;this.n24=-g.dot(a);this.n31=j.x;this.n32=j.y;this.n33=j.z;this.n34=-j.dot(a);this.n43=this.n42=this.n41=0;this.n44=1},multiplyVector3:function(a){var b=a.x,d=a.y,e=a.z,g=1/(this.n41*b+this.n42*
+d+this.n43*e+this.n44);a.x=(this.n11*b+this.n12*d+this.n13*e+this.n14)*g;a.y=(this.n21*b+this.n22*d+this.n23*e+this.n24)*g;a.z=(this.n31*b+this.n32*d+this.n33*e+this.n34)*g;return a},multiplyVector4:function(a){var b=a.x,d=a.y,e=a.z,g=a.w;a.x=this.n11*b+this.n12*d+this.n13*e+this.n14*g;a.y=this.n21*b+this.n22*d+this.n23*e+this.n24*g;a.z=this.n31*b+this.n32*d+this.n33*e+this.n34*g;a.w=this.n41*b+this.n42*d+this.n43*e+this.n44*g;return a},crossVector:function(a){var b=new THREE.Vector4;b.x=this.n11*
+a.x+this.n12*a.y+this.n13*a.z+this.n14*a.w;b.y=this.n21*a.x+this.n22*a.y+this.n23*a.z+this.n24*a.w;b.z=this.n31*a.x+this.n32*a.y+this.n33*a.z+this.n34*a.w;b.w=a.w?this.n41*a.x+this.n42*a.y+this.n43*a.z+this.n44*a.w:1;return b},multiply:function(a,b){var d=a.n11,e=a.n12,g=a.n13,j=a.n14,k=a.n21,f=a.n22,p=a.n23,c=a.n24,v=a.n31,D=a.n32,r=a.n33,t=a.n34,u=a.n41,w=a.n42,I=a.n43,F=a.n44,y=b.n11,n=b.n12,i=b.n13,m=b.n14,h=b.n21,z=b.n22,l=b.n23,o=b.n24,B=b.n31,A=b.n32,Q=b.n33,K=b.n34,R=b.n41,T=b.n42,E=b.n43,
+V=b.n44;this.n11=d*y+e*h+g*B+j*R;this.n12=d*n+e*z+g*A+j*T;this.n13=d*i+e*l+g*Q+j*E;this.n14=d*m+e*o+g*K+j*V;this.n21=k*y+f*h+p*B+c*R;this.n22=k*n+f*z+p*A+c*T;this.n23=k*i+f*l+p*Q+c*E;this.n24=k*m+f*o+p*K+c*V;this.n31=v*y+D*h+r*B+t*R;this.n32=v*n+D*z+r*A+t*T;this.n33=v*i+D*l+r*Q+t*E;this.n34=v*m+D*o+r*K+t*V;this.n41=u*y+w*h+I*B+F*R;this.n42=u*n+w*z+I*A+F*T;this.n43=u*i+w*l+I*Q+F*E;this.n44=u*m+w*o+I*K+F*V},multiplySelf:function(a){var b=this.n11,d=this.n12,e=this.n13,g=this.n14,j=this.n21,k=this.n22,
+f=this.n23,p=this.n24,c=this.n31,v=this.n32,D=this.n33,r=this.n34,t=this.n41,u=this.n42,w=this.n43,I=this.n44;this.n11=b*a.n11+d*a.n21+e*a.n31+g*a.n41;this.n12=b*a.n12+d*a.n22+e*a.n32+g*a.n42;this.n13=b*a.n13+d*a.n23+e*a.n33+g*a.n43;this.n14=b*a.n14+d*a.n24+e*a.n34+g*a.n44;this.n21=j*a.n11+k*a.n21+f*a.n31+p*a.n41;this.n22=j*a.n12+k*a.n22+f*a.n32+p*a.n42;this.n23=j*a.n13+k*a.n23+f*a.n33+p*a.n43;this.n24=j*a.n14+k*a.n24+f*a.n34+p*a.n44;this.n31=c*a.n11+v*a.n21+D*a.n31+r*a.n41;this.n32=c*a.n12+v*a.n22+
+D*a.n32+r*a.n42;this.n33=c*a.n13+v*a.n23+D*a.n33+r*a.n43;this.n34=c*a.n14+v*a.n24+D*a.n34+r*a.n44;this.n41=t*a.n11+u*a.n21+w*a.n31+I*a.n41;this.n42=t*a.n12+u*a.n22+w*a.n32+I*a.n42;this.n43=t*a.n13+u*a.n23+w*a.n33+I*a.n43;this.n44=t*a.n14+u*a.n24+w*a.n34+I*a.n44},multiplyScalar:function(a){this.n11*=a;this.n12*=a;this.n13*=a;this.n14*=a;this.n21*=a;this.n22*=a;this.n23*=a;this.n24*=a;this.n31*=a;this.n32*=a;this.n33*=a;this.n34*=a;this.n41*=a;this.n42*=a;this.n43*=a;this.n44*=a},determinant:function(){return this.n14*
 this.n23*this.n32*this.n41-this.n13*this.n24*this.n32*this.n41-this.n14*this.n22*this.n33*this.n41+this.n12*this.n24*this.n33*this.n41+this.n13*this.n22*this.n34*this.n41-this.n12*this.n23*this.n34*this.n41-this.n14*this.n23*this.n31*this.n42+this.n13*this.n24*this.n31*this.n42+this.n14*this.n21*this.n33*this.n42-this.n11*this.n24*this.n33*this.n42-this.n13*this.n21*this.n34*this.n42+this.n11*this.n23*this.n34*this.n42+this.n14*this.n22*this.n31*this.n43-this.n12*this.n24*this.n31*this.n43-this.n14*
-this.n21*this.n32*this.n43+this.n11*this.n24*this.n32*this.n43+this.n12*this.n21*this.n34*this.n43-this.n11*this.n22*this.n34*this.n43-this.n13*this.n22*this.n31*this.n44+this.n12*this.n23*this.n31*this.n44+this.n13*this.n21*this.n32*this.n44-this.n11*this.n23*this.n32*this.n44-this.n12*this.n21*this.n33*this.n44+this.n11*this.n22*this.n33*this.n44},transpose:function(){function a(b,d,e){var f=b[d];b[d]=b[e];b[e]=f}a(this,"n21","n12");a(this,"n31","n13");a(this,"n32","n23");a(this,"n41","n14");a(this,
+this.n21*this.n32*this.n43+this.n11*this.n24*this.n32*this.n43+this.n12*this.n21*this.n34*this.n43-this.n11*this.n22*this.n34*this.n43-this.n13*this.n22*this.n31*this.n44+this.n12*this.n23*this.n31*this.n44+this.n13*this.n21*this.n32*this.n44-this.n11*this.n23*this.n32*this.n44-this.n12*this.n21*this.n33*this.n44+this.n11*this.n22*this.n33*this.n44},transpose:function(){function a(b,d,e){var g=b[d];b[d]=b[e];b[e]=g}a(this,"n21","n12");a(this,"n31","n13");a(this,"n32","n23");a(this,"n41","n14");a(this,
 "n42","n24");a(this,"n43","n34");return this},clone:function(){var a=new THREE.Matrix4;a.n11=this.n11;a.n12=this.n12;a.n13=this.n13;a.n14=this.n14;a.n21=this.n21;a.n22=this.n22;a.n23=this.n23;a.n24=this.n24;a.n31=this.n31;a.n32=this.n32;a.n33=this.n33;a.n34=this.n34;a.n41=this.n41;a.n42=this.n42;a.n43=this.n43;a.n44=this.n44;return a},flatten:function(){return[this.n11,this.n21,this.n31,this.n41,this.n12,this.n22,this.n32,this.n42,this.n13,this.n23,this.n33,this.n43,this.n14,this.n24,this.n34,this.n44]},
 toString:function(){return"| "+this.n11+" "+this.n12+" "+this.n13+" "+this.n14+" |\n| "+this.n21+" "+this.n22+" "+this.n23+" "+this.n24+" |\n| "+this.n31+" "+this.n32+" "+this.n33+" "+this.n34+" |\n| "+this.n41+" "+this.n42+" "+this.n43+" "+this.n44+" |"}};THREE.Matrix4.translationMatrix=function(a,b,d){var e=new THREE.Matrix4;e.n14=a;e.n24=b;e.n34=d;return e};THREE.Matrix4.scaleMatrix=function(a,b,d){var e=new THREE.Matrix4;e.n11=a;e.n22=b;e.n33=d;return e};
 THREE.Matrix4.rotationXMatrix=function(a){var b=new THREE.Matrix4;b.n22=b.n33=Math.cos(a);b.n32=Math.sin(a);b.n23=-b.n32;return b};THREE.Matrix4.rotationYMatrix=function(a){var b=new THREE.Matrix4;b.n11=b.n33=Math.cos(a);b.n13=Math.sin(a);b.n31=-b.n13;return b};THREE.Matrix4.rotationZMatrix=function(a){var b=new THREE.Matrix4;b.n11=b.n22=Math.cos(a);b.n21=Math.sin(a);b.n12=-b.n21;return b};
-THREE.Matrix4.rotationAxisAngleMatrix=function(a,b){var d=new THREE.Matrix4,e=Math.cos(b),f=Math.sin(b),j=1-e,k=a.x,g=a.y,p=a.z;d.n11=j*k*k+e;d.n12=j*k*g-f*p;d.n13=j*k*p+f*g;d.n21=j*k*g+f*p;d.n22=j*g*g+e;d.n23=j*g*p-f*k;d.n31=j*k*p-f*g;d.n32=j*g*p+f*k;d.n33=j*p*p+e;return d};
+THREE.Matrix4.rotationAxisAngleMatrix=function(a,b){var d=new THREE.Matrix4,e=Math.cos(b),g=Math.sin(b),j=1-e,k=a.x,f=a.y,p=a.z;d.n11=j*k*k+e;d.n12=j*k*f-g*p;d.n13=j*k*p+g*f;d.n21=j*k*f+g*p;d.n22=j*f*f+e;d.n23=j*f*p-g*k;d.n31=j*k*p-g*f;d.n32=j*f*p+g*k;d.n33=j*p*p+e;return d};
 THREE.Matrix4.makeInvert=function(a){var b=new THREE.Matrix4;b.n11=a.n23*a.n34*a.n42-a.n24*a.n33*a.n42+a.n24*a.n32*a.n43-a.n22*a.n34*a.n43-a.n23*a.n32*a.n44+a.n22*a.n33*a.n44;b.n12=a.n14*a.n33*a.n42-a.n13*a.n34*a.n42-a.n14*a.n32*a.n43+a.n12*a.n34*a.n43+a.n13*a.n32*a.n44-a.n12*a.n33*a.n44;b.n13=a.n13*a.n24*a.n42-a.n14*a.n23*a.n42+a.n14*a.n22*a.n43-a.n12*a.n24*a.n43-a.n13*a.n22*a.n44+a.n12*a.n23*a.n44;b.n14=a.n14*a.n23*a.n32-a.n13*a.n24*a.n32-a.n14*a.n22*a.n33+a.n12*a.n24*a.n33+a.n13*a.n22*a.n34-a.n12*
 a.n23*a.n34;b.n21=a.n24*a.n33*a.n41-a.n23*a.n34*a.n41-a.n24*a.n31*a.n43+a.n21*a.n34*a.n43+a.n23*a.n31*a.n44-a.n21*a.n33*a.n44;b.n22=a.n13*a.n34*a.n41-a.n14*a.n33*a.n41+a.n14*a.n31*a.n43-a.n11*a.n34*a.n43-a.n13*a.n31*a.n44+a.n11*a.n33*a.n44;b.n23=a.n14*a.n23*a.n41-a.n13*a.n24*a.n41-a.n14*a.n21*a.n43+a.n11*a.n24*a.n43+a.n13*a.n21*a.n44-a.n11*a.n23*a.n44;b.n24=a.n13*a.n24*a.n31-a.n14*a.n23*a.n31+a.n14*a.n21*a.n33-a.n11*a.n24*a.n33-a.n13*a.n21*a.n34+a.n11*a.n23*a.n34;b.n31=a.n22*a.n34*a.n41-a.n24*a.n32*
 a.n41+a.n24*a.n31*a.n42-a.n21*a.n34*a.n42-a.n22*a.n31*a.n44+a.n21*a.n32*a.n44;b.n32=a.n14*a.n32*a.n41-a.n12*a.n34*a.n41-a.n14*a.n31*a.n42+a.n11*a.n34*a.n42+a.n12*a.n31*a.n44-a.n11*a.n32*a.n44;b.n33=a.n13*a.n24*a.n41-a.n14*a.n22*a.n41+a.n14*a.n21*a.n42-a.n11*a.n24*a.n42-a.n12*a.n21*a.n44+a.n11*a.n22*a.n44;b.n34=a.n14*a.n22*a.n31-a.n12*a.n24*a.n31-a.n14*a.n21*a.n32+a.n11*a.n24*a.n32+a.n12*a.n21*a.n34-a.n11*a.n22*a.n34;b.n41=a.n23*a.n32*a.n41-a.n22*a.n33*a.n41-a.n23*a.n31*a.n42+a.n21*a.n33*a.n42+a.n22*
 a.n31*a.n43-a.n21*a.n32*a.n43;b.n42=a.n12*a.n33*a.n41-a.n13*a.n32*a.n41+a.n13*a.n31*a.n42-a.n11*a.n33*a.n42-a.n12*a.n31*a.n43+a.n11*a.n32*a.n43;b.n43=a.n13*a.n22*a.n41-a.n12*a.n23*a.n41-a.n13*a.n21*a.n42+a.n11*a.n23*a.n42+a.n12*a.n21*a.n43-a.n11*a.n22*a.n43;b.n44=a.n12*a.n23*a.n31-a.n13*a.n22*a.n31+a.n13*a.n21*a.n32-a.n11*a.n23*a.n32-a.n12*a.n21*a.n33+a.n11*a.n22*a.n33;b.multiplyScalar(1/a.determinant());return b};
-THREE.Matrix4.makeInvert3x3=function(a){var b=a.flatten();a=new THREE.Matrix3;var d=b[10]*b[5]-b[6]*b[9],e=-b[10]*b[1]+b[2]*b[9],f=b[6]*b[1]-b[2]*b[5],j=-b[10]*b[4]+b[6]*b[8],k=b[10]*b[0]-b[2]*b[8],g=-b[6]*b[0]+b[2]*b[4],p=b[9]*b[4]-b[5]*b[8],c=-b[9]*b[0]+b[1]*b[8],t=b[5]*b[0]-b[1]*b[4];b=b[0]*d+b[1]*j+b[2]*p;if(b==0)throw"matrix not invertible";b=1/b;a.m[0]=b*d;a.m[1]=b*e;a.m[2]=b*f;a.m[3]=b*j;a.m[4]=b*k;a.m[5]=b*g;a.m[6]=b*p;a.m[7]=b*c;a.m[8]=b*t;return a};
-THREE.Matrix4.makeFrustum=function(a,b,d,e,f,j){var k,g,p;k=new THREE.Matrix4;g=2*f/(b-a);p=2*f/(e-d);a=(b+a)/(b-a);d=(e+d)/(e-d);e=-(j+f)/(j-f);f=-2*j*f/(j-f);k.n11=g;k.n12=0;k.n13=a;k.n14=0;k.n21=0;k.n22=p;k.n23=d;k.n24=0;k.n31=0;k.n32=0;k.n33=e;k.n34=f;k.n41=0;k.n42=0;k.n43=-1;k.n44=0;return k};THREE.Matrix4.makePerspective=function(a,b,d,e){var f;a=d*Math.tan(a*Math.PI/360);f=-a;return THREE.Matrix4.makeFrustum(f*b,a*b,f,a,d,e)};
-THREE.Matrix4.makeOrtho=function(a,b,d,e,f,j){var k,g,p,c;k=new THREE.Matrix4;g=b-a;p=d-e;c=j-f;a=(b+a)/g;d=(d+e)/p;f=(j+f)/c;k.n11=2/g;k.n12=0;k.n13=0;k.n14=-a;k.n21=0;k.n22=2/p;k.n23=0;k.n24=-d;k.n31=0;k.n32=0;k.n33=-2/c;k.n34=-f;k.n41=0;k.n42=0;k.n43=0;k.n44=1;return k};
+THREE.Matrix4.makeInvert3x3=function(a){var b=a.flatten();a=new THREE.Matrix3;var d=b[10]*b[5]-b[6]*b[9],e=-b[10]*b[1]+b[2]*b[9],g=b[6]*b[1]-b[2]*b[5],j=-b[10]*b[4]+b[6]*b[8],k=b[10]*b[0]-b[2]*b[8],f=-b[6]*b[0]+b[2]*b[4],p=b[9]*b[4]-b[5]*b[8],c=-b[9]*b[0]+b[1]*b[8],v=b[5]*b[0]-b[1]*b[4];b=b[0]*d+b[1]*j+b[2]*p;if(b==0)throw"matrix not invertible";b=1/b;a.m[0]=b*d;a.m[1]=b*e;a.m[2]=b*g;a.m[3]=b*j;a.m[4]=b*k;a.m[5]=b*f;a.m[6]=b*p;a.m[7]=b*c;a.m[8]=b*v;return a};
+THREE.Matrix4.makeFrustum=function(a,b,d,e,g,j){var k,f,p;k=new THREE.Matrix4;f=2*g/(b-a);p=2*g/(e-d);a=(b+a)/(b-a);d=(e+d)/(e-d);e=-(j+g)/(j-g);g=-2*j*g/(j-g);k.n11=f;k.n12=0;k.n13=a;k.n14=0;k.n21=0;k.n22=p;k.n23=d;k.n24=0;k.n31=0;k.n32=0;k.n33=e;k.n34=g;k.n41=0;k.n42=0;k.n43=-1;k.n44=0;return k};THREE.Matrix4.makePerspective=function(a,b,d,e){var g;a=d*Math.tan(a*Math.PI/360);g=-a;return THREE.Matrix4.makeFrustum(g*b,a*b,g,a,d,e)};
+THREE.Matrix4.makeOrtho=function(a,b,d,e,g,j){var k,f,p,c;k=new THREE.Matrix4;f=b-a;p=d-e;c=j-g;a=(b+a)/f;d=(d+e)/p;g=(j+g)/c;k.n11=2/f;k.n12=0;k.n13=0;k.n14=-a;k.n21=0;k.n22=2/p;k.n23=0;k.n24=-d;k.n31=0;k.n32=0;k.n33=-2/c;k.n34=-g;k.n41=0;k.n42=0;k.n43=0;k.n44=1;return k};
 THREE.Vertex=function(a,b){this.position=a||new THREE.Vector3;this.positionWorld=new THREE.Vector3;this.positionScreen=new THREE.Vector4;this.normal=b||new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.normalScreen=new THREE.Vector3;this.__visible=true};THREE.Vertex.prototype={toString:function(){return"THREE.Vertex ( position: "+this.position+", normal: "+this.normal+" )"}};
-THREE.Face3=function(a,b,d,e,f){this.a=a;this.b=b;this.c=d;this.centroid=new THREE.Vector3;this.normal=e instanceof THREE.Vector3?e:new THREE.Vector3;this.vertexNormals=e instanceof Array?e:[];this.material=f instanceof Array?f:[f]};THREE.Face3.prototype={toString:function(){return"THREE.Face3 ( "+this.a+", "+this.b+", "+this.c+" )"}};
-THREE.Face4=function(a,b,d,e,f,j){this.a=a;this.b=b;this.c=d;this.d=e;this.centroid=new THREE.Vector3;this.normal=f instanceof THREE.Vector3?f:new THREE.Vector3;this.vertexNormals=f instanceof Array?f:[];this.material=j instanceof Array?j:[j]};THREE.Face4.prototype={toString:function(){return"THREE.Face4 ( "+this.a+", "+this.b+", "+this.c+" "+this.d+" )"}};THREE.UV=function(a,b){this.u=a||0;this.v=b||0};
+THREE.Face3=function(a,b,d,e,g){this.a=a;this.b=b;this.c=d;this.centroid=new THREE.Vector3;this.normal=e instanceof THREE.Vector3?e:new THREE.Vector3;this.vertexNormals=e instanceof Array?e:[];this.material=g instanceof Array?g:[g]};THREE.Face3.prototype={toString:function(){return"THREE.Face3 ( "+this.a+", "+this.b+", "+this.c+" )"}};
+THREE.Face4=function(a,b,d,e,g,j){this.a=a;this.b=b;this.c=d;this.d=e;this.centroid=new THREE.Vector3;this.normal=g instanceof THREE.Vector3?g:new THREE.Vector3;this.vertexNormals=g instanceof Array?g:[];this.material=j instanceof Array?j:[j]};THREE.Face4.prototype={toString:function(){return"THREE.Face4 ( "+this.a+", "+this.b+", "+this.c+" "+this.d+" )"}};THREE.UV=function(a,b){this.u=a||0;this.v=b||0};
 THREE.UV.prototype={copy:function(a){this.u=a.u;this.v=a.v},toString:function(){return"THREE.UV ("+this.u+", "+this.v+")"}};THREE.Geometry=function(){this.vertices=[];this.faces=[];this.uvs=[];this.geometryChunks={}};
 THREE.Geometry.prototype={computeCentroids:function(){var a,b,d;a=0;for(b=this.faces.length;a<b;a++){d=this.faces[a];d.centroid.set(0,0,0);if(d instanceof THREE.Face3){d.centroid.addSelf(this.vertices[d.a].position);d.centroid.addSelf(this.vertices[d.b].position);d.centroid.addSelf(this.vertices[d.c].position);d.centroid.divideScalar(3)}else if(d instanceof THREE.Face4){d.centroid.addSelf(this.vertices[d.a].position);d.centroid.addSelf(this.vertices[d.b].position);d.centroid.addSelf(this.vertices[d.c].position);
-d.centroid.addSelf(this.vertices[d.d].position);d.centroid.divideScalar(4)}}},computeNormals:function(a){var b,d,e,f,j,k,g=new THREE.Vector3,p=new THREE.Vector3;e=0;for(f=this.vertices.length;e<f;e++){j=this.vertices[e];j.normal.set(0,0,0)}e=0;for(f=this.faces.length;e<f;e++){j=this.faces[e];if(a&&j.vertexNormals.length){g.set(0,0,0);b=0;for(d=j.normal.length;b<d;b++)g.addSelf(j.vertexNormals[b]);g.divideScalar(3)}else{b=this.vertices[j.a];d=this.vertices[j.b];k=this.vertices[j.c];g.sub(k.position,
-d.position);p.sub(b.position,d.position);g.crossSelf(p)}g.isZero()||g.normalize();j.normal.copy(g)}},computeVertexNormals:function(){var a,b=[],d,e;a=0;for(vl=this.vertices.length;a<vl;a++)b[a]=new THREE.Vector3;a=0;for(d=this.faces.length;a<d;a++){e=this.faces[a];if(e instanceof THREE.Face3){b[e.a].addSelf(e.normal);b[e.b].addSelf(e.normal);b[e.c].addSelf(e.normal)}else if(e instanceof THREE.Face4){b[e.a].addSelf(e.normal);b[e.b].addSelf(e.normal);b[e.c].addSelf(e.normal);b[e.d].addSelf(e.normal)}}a=
+d.centroid.addSelf(this.vertices[d.d].position);d.centroid.divideScalar(4)}}},computeNormals:function(a){var b,d,e,g,j,k,f=new THREE.Vector3,p=new THREE.Vector3;e=0;for(g=this.vertices.length;e<g;e++){j=this.vertices[e];j.normal.set(0,0,0)}e=0;for(g=this.faces.length;e<g;e++){j=this.faces[e];if(a&&j.vertexNormals.length){f.set(0,0,0);b=0;for(d=j.normal.length;b<d;b++)f.addSelf(j.vertexNormals[b]);f.divideScalar(3)}else{b=this.vertices[j.a];d=this.vertices[j.b];k=this.vertices[j.c];f.sub(k.position,
+d.position);p.sub(b.position,d.position);f.crossSelf(p)}f.isZero()||f.normalize();j.normal.copy(f)}},computeVertexNormals:function(){var a,b=[],d,e;a=0;for(vl=this.vertices.length;a<vl;a++)b[a]=new THREE.Vector3;a=0;for(d=this.faces.length;a<d;a++){e=this.faces[a];if(e instanceof THREE.Face3){b[e.a].addSelf(e.normal);b[e.b].addSelf(e.normal);b[e.c].addSelf(e.normal)}else if(e instanceof THREE.Face4){b[e.a].addSelf(e.normal);b[e.b].addSelf(e.normal);b[e.c].addSelf(e.normal);b[e.d].addSelf(e.normal)}}a=
 0;for(vl=this.vertices.length;a<vl;a++)b[a].normalize();a=0;for(d=this.faces.length;a<d;a++){e=this.faces[a];if(e instanceof THREE.Face3){e.vertexNormals[0]=b[e.a].clone();e.vertexNormals[1]=b[e.b].clone();e.vertexNormals[2]=b[e.c].clone()}else if(e instanceof THREE.Face4){e.vertexNormals[0]=b[e.a].clone();e.vertexNormals[1]=b[e.b].clone();e.vertexNormals[2]=b[e.c].clone();e.vertexNormals[3]=b[e.d].clone()}}},computeBoundingBox:function(){if(this.vertices.length>0){this.bbox={x:[this.vertices[0].position.x,
 this.vertices[0].position.x],y:[this.vertices[0].position.y,this.vertices[0].position.y],z:[this.vertices[0].position.z,this.vertices[0].position.z]};for(var a=1,b=this.vertices.length;a<b;a++){vertex=this.vertices[a];if(vertex.position.x<this.bbox.x[0])this.bbox.x[0]=vertex.position.x;else if(vertex.position.x>this.bbox.x[1])this.bbox.x[1]=vertex.position.x;if(vertex.position.y<this.bbox.y[0])this.bbox.y[0]=vertex.position.y;else if(vertex.position.y>this.bbox.y[1])this.bbox.y[1]=vertex.position.y;
-if(vertex.position.z<this.bbox.z[0])this.bbox.z[0]=vertex.position.z;else if(vertex.position.z>this.bbox.z[1])this.bbox.z[1]=vertex.position.z}}},sortFacesByMaterial:function(){function a(t){var F=[];b=0;for(d=t.length;b<d;b++)t[b]==undefined?F.push("undefined"):F.push(t[b].toString());return F.join("_")}var b,d,e,f,j,k,g,p,c={};e=0;for(f=this.faces.length;e<f;e++){j=this.faces[e];k=j.material;g=a(k);if(c[g]==undefined)c[g]={hash:g,counter:0};p=c[g].hash+"_"+c[g].counter;if(this.geometryChunks[p]==
-undefined)this.geometryChunks[p]={faces:[],material:k,vertices:0};j=j instanceof THREE.Face3?3:4;if(this.geometryChunks[p].vertices+j>65535){c[g].counter+=1;p=c[g].hash+"_"+c[g].counter;if(this.geometryChunks[p]==undefined)this.geometryChunks[p]={faces:[],material:k,vertices:0}}this.geometryChunks[p].faces.push(e);this.geometryChunks[p].vertices+=j}},toString:function(){return"THREE.Geometry ( vertices: "+this.vertices+", faces: "+this.faces+", uvs: "+this.uvs+" )"}};
+if(vertex.position.z<this.bbox.z[0])this.bbox.z[0]=vertex.position.z;else if(vertex.position.z>this.bbox.z[1])this.bbox.z[1]=vertex.position.z}}},sortFacesByMaterial:function(){function a(v){var D=[];b=0;for(d=v.length;b<d;b++)v[b]==undefined?D.push("undefined"):D.push(v[b].toString());return D.join("_")}var b,d,e,g,j,k,f,p,c={};e=0;for(g=this.faces.length;e<g;e++){j=this.faces[e];k=j.material;f=a(k);if(c[f]==undefined)c[f]={hash:f,counter:0};p=c[f].hash+"_"+c[f].counter;if(this.geometryChunks[p]==
+undefined)this.geometryChunks[p]={faces:[],material:k,vertices:0};j=j instanceof THREE.Face3?3:4;if(this.geometryChunks[p].vertices+j>65535){c[f].counter+=1;p=c[f].hash+"_"+c[f].counter;if(this.geometryChunks[p]==undefined)this.geometryChunks[p]={faces:[],material:k,vertices:0}}this.geometryChunks[p].faces.push(e);this.geometryChunks[p].vertices+=j}},toString:function(){return"THREE.Geometry ( vertices: "+this.vertices+", faces: "+this.faces+", uvs: "+this.uvs+" )"}};
 THREE.Camera=function(a,b,d,e){this.position=new THREE.Vector3(0,0,0);this.target={position:new THREE.Vector3(0,0,0)};this.up=new THREE.Vector3(0,1,0);this.matrix=new THREE.Matrix4;this.projectionMatrix=THREE.Matrix4.makePerspective(a,b,d,e);this.autoUpdateMatrix=true;this.updateMatrix=function(){this.matrix.lookAt(this.position,this.target.position,this.up)};this.toString=function(){return"THREE.Camera ( "+this.position+", "+this.target.position+" )"}};THREE.Light=function(a){this.color=new THREE.Color(a)};
 THREE.AmbientLight=function(a){THREE.Light.call(this,a)};THREE.AmbientLight.prototype=new THREE.Light;THREE.AmbientLight.prototype.constructor=THREE.AmbientLight;THREE.DirectionalLight=function(a,b){THREE.Light.call(this,a);this.position=new THREE.Vector3(0,1,0);this.intensity=b||1};THREE.DirectionalLight.prototype=new THREE.Light;THREE.DirectionalLight.prototype.constructor=THREE.DirectionalLight;
 THREE.PointLight=function(a,b){THREE.Light.call(this,a);this.position=new THREE.Vector3;this.intensity=b||1};THREE.DirectionalLight.prototype=new THREE.Light;THREE.DirectionalLight.prototype.constructor=THREE.PointLight;
@@ -57,18 +57,18 @@ THREE.Object3D=function(){this.id=THREE.Object3DCounter.value++;this.position=ne
 this.rotationMatrix=THREE.Matrix4.rotationXMatrix(this.rotation.x);this.rotationMatrix.multiplySelf(THREE.Matrix4.rotationYMatrix(this.rotation.y));this.rotationMatrix.multiplySelf(THREE.Matrix4.rotationZMatrix(this.rotation.z));this.scaleMatrix=THREE.Matrix4.scaleMatrix(this.scale.x,this.scale.y,this.scale.z);this.matrix.copy(this.matrixPosition);this.matrix.multiplySelf(this.rotationMatrix);this.matrix.multiplySelf(this.scaleMatrix)}};THREE.Object3DCounter={value:0};
 THREE.Particle=function(a){THREE.Object3D.call(this);this.material=a instanceof Array?a:[a];this.autoUpdateMatrix=false};THREE.Particle.prototype=new THREE.Object3D;THREE.Particle.prototype.constructor=THREE.Particle;THREE.Line=function(a,b){THREE.Object3D.call(this);this.geometry=a;this.material=b instanceof Array?b:[b]};THREE.Line.prototype=new THREE.Object3D;THREE.Line.prototype.constructor=THREE.Line;
 THREE.Mesh=function(a,b,d){THREE.Object3D.call(this);this.geometry=a;this.material=b instanceof Array?b:[b];this.overdraw=this.doubleSided=this.flipSided=false;d&&this.normalizeUVs();this.geometry.computeBoundingBox()};THREE.Mesh.prototype=new THREE.Object3D;THREE.Mesh.prototype.constructor=THREE.Mesh;
-THREE.Mesh.prototype.normalizeUVs=function(){var a,b,d,e,f;a=0;for(b=this.geometry.uvs.length;a<b;a++){f=this.geometry.uvs[a];d=0;for(e=f.length;d<e;d++){if(f[d].u!=1)f[d].u-=Math.floor(f[d].u);if(f[d].v!=1)f[d].v-=Math.floor(f[d].v)}}};THREE.FlatShading=0;THREE.SmoothShading=1;THREE.NormalBlending=0;THREE.AdditiveBlending=1;THREE.SubtractiveBlending=2;
+THREE.Mesh.prototype.normalizeUVs=function(){var a,b,d,e,g;a=0;for(b=this.geometry.uvs.length;a<b;a++){g=this.geometry.uvs[a];d=0;for(e=g.length;d<e;d++){if(g[d].u!=1)g[d].u-=Math.floor(g[d].u);if(g[d].v!=1)g[d].v-=Math.floor(g[d].v)}}};THREE.FlatShading=0;THREE.SmoothShading=1;THREE.NormalBlending=0;THREE.AdditiveBlending=1;THREE.SubtractiveBlending=2;
 THREE.LineBasicMaterial=function(a){this.color=new THREE.Color(16711680);this.opacity=1;this.blending=THREE.NormalBlending;this.linewidth=1;this.linejoin=this.linecap="round";if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.opacity!==undefined)this.opacity=a.opacity;if(a.blending!==undefined)this.blending=a.blending;if(a.linewidth!==undefined)this.linewidth=a.linewidth;if(a.linecap!==undefined)this.linecap=a.linecap;if(a.linejoin!==undefined)this.linejoin=a.linejoin}this.toString=function(){return"THREE.LineBasicMaterial (<br/>color: "+
 this.color+"<br/>opacity: "+this.opacity+"<br/>blending: "+this.blending+"<br/>linewidth: "+this.linewidth+"<br/>linecap: "+this.linecap+"<br/>linejoin: "+this.linejoin+"<br/>)"}};
-THREE.MeshBasicMaterial=function(a){this.id=THREE.MeshBasicMaterialCounter.value++;this.color=new THREE.Color(15658734);this.env_map=this.map=null;this.combine=THREE.Multiply;this.reflectivity=1;this.refraction_ratio=0.98;this.opacity=1;this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap="round";if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.map!==undefined)this.map=a.map;if(a.env_map!==
-undefined)this.env_map=a.env_map;if(a.combine!==undefined)this.combine=a.combine;if(a.reflectivity!==undefined)this.reflectivity=a.reflectivity;if(a.refraction_ratio!==undefined)this.refraction_ratio=a.refraction_ratio;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending;if(a.wireframe!==undefined)this.wireframe=a.wireframe;if(a.wireframe_linewidth!==undefined)this.wireframe_linewidth=a.wireframe_linewidth;
-if(a.wireframe_linecap!==undefined)this.wireframe_linecap=a.wireframe_linecap;if(a.wireframe_linejoin!==undefined)this.wireframe_linejoin=a.wireframe_linejoin}this.toString=function(){return"THREE.MeshBasicMaterial (<br/>id: "+this.id+"<br/>color: "+this.color+"<br/>map: "+this.map+"<br/>env_map: "+this.env_map+"<br/>combine: "+this.combine+"<br/>reflectivity: "+this.reflectivity+"<br/>refraction_ratio: "+this.refraction_ratio+"<br/>opacity: "+this.opacity+"<br/>blending: "+this.blending+"<br/>wireframe: "+
-this.wireframe+"<br/>wireframe_linewidth: "+this.wireframe_linewidth+"<br/>wireframe_linecap: "+this.wireframe_linecap+"<br/>wireframe_linejoin: "+this.wireframe_linejoin+"<br/>)"}};THREE.MeshBasicMaterialCounter={value:0};
-THREE.MeshLambertMaterial=function(a){this.id=THREE.MeshLambertMaterialCounter.value++;this.color=new THREE.Color(15658734);this.env_map=this.map=null;this.combine=THREE.Multiply;this.reflectivity=1;this.refraction_ratio=0.98;this.opacity=1;this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap="round";if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.map!==undefined)this.map=a.map;
-if(a.env_map!==undefined)this.env_map=a.env_map;if(a.combine!==undefined)this.combine=a.combine;if(a.reflectivity!==undefined)this.reflectivity=a.reflectivity;if(a.refraction_ratio!==undefined)this.refraction_ratio=a.refraction_ratio;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending;if(a.wireframe!==undefined)this.wireframe=a.wireframe;if(a.wireframe_linewidth!==undefined)this.wireframe_linewidth=a.wireframe_linewidth;
-if(a.wireframe_linecap!==undefined)this.wireframe_linecap=a.wireframe_linecap;if(a.wireframe_linejoin!==undefined)this.wireframe_linejoin=a.wireframe_linejoin}this.toString=function(){return"THREE.MeshLambertMaterial (<br/>id: "+this.id+"<br/>color: "+this.color+"<br/>map: "+this.map+"<br/>env_map: "+this.env_map+"<br/>combine: "+this.combine+"<br/>reflectivity: "+this.reflectivity+"<br/>refraction_ratio: "+this.refraction_ratio+"<br/>opacity: "+this.opacity+"<br/>shading: "+this.shading+"<br/>blending: "+
-this.blending+"<br/>wireframe: "+this.wireframe+"<br/>wireframe_linewidth: "+this.wireframe_linewidth+"<br/>wireframe_linecap: "+this.wireframe_linecap+"<br/>wireframe_linejoin: "+this.wireframe_linejoin+"<br/> )"}};THREE.MeshLambertMaterialCounter={value:0};
-THREE.MeshPhongMaterial=function(a){this.id=THREE.MeshPhongMaterialCounter.value++;this.color=new THREE.Color(15658734);this.ambient=new THREE.Color(328965);this.specular=new THREE.Color(1118481);this.shininess=30;this.env_map=this.specular_map=this.map=null;this.combine=THREE.Multiply;this.reflectivity=1;this.refraction_ratio=0.98;this.opacity=1;this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap=
+THREE.MeshBasicMaterial=function(a){this.id=THREE.MeshBasicMaterialCounter.value++;this.color=new THREE.Color(15658734);this.env_map=this.map=null;this.combine=THREE.MultiplyOperation;this.reflectivity=1;this.refraction_ratio=0.98;this.opacity=1;this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap="round";if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.map!==undefined)this.map=
+a.map;if(a.env_map!==undefined)this.env_map=a.env_map;if(a.combine!==undefined)this.combine=a.combine;if(a.reflectivity!==undefined)this.reflectivity=a.reflectivity;if(a.refraction_ratio!==undefined)this.refraction_ratio=a.refraction_ratio;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending;if(a.wireframe!==undefined)this.wireframe=a.wireframe;if(a.wireframe_linewidth!==undefined)this.wireframe_linewidth=
+a.wireframe_linewidth;if(a.wireframe_linecap!==undefined)this.wireframe_linecap=a.wireframe_linecap;if(a.wireframe_linejoin!==undefined)this.wireframe_linejoin=a.wireframe_linejoin}this.toString=function(){return"THREE.MeshBasicMaterial (<br/>id: "+this.id+"<br/>color: "+this.color+"<br/>map: "+this.map+"<br/>env_map: "+this.env_map+"<br/>combine: "+this.combine+"<br/>reflectivity: "+this.reflectivity+"<br/>refraction_ratio: "+this.refraction_ratio+"<br/>opacity: "+this.opacity+"<br/>blending: "+
+this.blending+"<br/>wireframe: "+this.wireframe+"<br/>wireframe_linewidth: "+this.wireframe_linewidth+"<br/>wireframe_linecap: "+this.wireframe_linecap+"<br/>wireframe_linejoin: "+this.wireframe_linejoin+"<br/>)"}};THREE.MeshBasicMaterialCounter={value:0};
+THREE.MeshLambertMaterial=function(a){this.id=THREE.MeshLambertMaterialCounter.value++;this.color=new THREE.Color(15658734);this.env_map=this.map=null;this.combine=THREE.MultiplyOperation;this.reflectivity=1;this.refraction_ratio=0.98;this.opacity=1;this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap="round";if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.map!==undefined)this.map=
+a.map;if(a.env_map!==undefined)this.env_map=a.env_map;if(a.combine!==undefined)this.combine=a.combine;if(a.reflectivity!==undefined)this.reflectivity=a.reflectivity;if(a.refraction_ratio!==undefined)this.refraction_ratio=a.refraction_ratio;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending;if(a.wireframe!==undefined)this.wireframe=a.wireframe;if(a.wireframe_linewidth!==undefined)this.wireframe_linewidth=
+a.wireframe_linewidth;if(a.wireframe_linecap!==undefined)this.wireframe_linecap=a.wireframe_linecap;if(a.wireframe_linejoin!==undefined)this.wireframe_linejoin=a.wireframe_linejoin}this.toString=function(){return"THREE.MeshLambertMaterial (<br/>id: "+this.id+"<br/>color: "+this.color+"<br/>map: "+this.map+"<br/>env_map: "+this.env_map+"<br/>combine: "+this.combine+"<br/>reflectivity: "+this.reflectivity+"<br/>refraction_ratio: "+this.refraction_ratio+"<br/>opacity: "+this.opacity+"<br/>shading: "+
+this.shading+"<br/>blending: "+this.blending+"<br/>wireframe: "+this.wireframe+"<br/>wireframe_linewidth: "+this.wireframe_linewidth+"<br/>wireframe_linecap: "+this.wireframe_linecap+"<br/>wireframe_linejoin: "+this.wireframe_linejoin+"<br/> )"}};THREE.MeshLambertMaterialCounter={value:0};
+THREE.MeshPhongMaterial=function(a){this.id=THREE.MeshPhongMaterialCounter.value++;this.color=new THREE.Color(15658734);this.ambient=new THREE.Color(328965);this.specular=new THREE.Color(1118481);this.shininess=30;this.env_map=this.specular_map=this.map=null;this.combine=THREE.MultiplyOperation;this.reflectivity=1;this.refraction_ratio=0.98;this.opacity=1;this.shading=THREE.SmoothShading;this.blending=THREE.NormalBlending;this.wireframe=false;this.wireframe_linewidth=1;this.wireframe_linejoin=this.wireframe_linecap=
 "round";if(a){if(a.color!==undefined)this.color=new THREE.Color(a.color);if(a.ambient!==undefined)this.ambient=new THREE.Color(a.ambient);if(a.specular!==undefined)this.specular=new THREE.Color(a.specular);if(a.shininess!==undefined)this.shininess=a.shininess;if(a.map!==undefined)this.map=a.map;if(a.specular_map!==undefined)this.specular_map=a.specular_map;if(a.env_map!==undefined)this.env_map=a.env_map;if(a.combine!==undefined)this.combine=a.combine;if(a.reflectivity!==undefined)this.reflectivity=
 a.reflectivity;if(a.refraction_ratio!==undefined)this.refraction_ratio=a.refraction_ratio;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undefined)this.blending=a.blending;if(a.wireframe!==undefined)this.wireframe=a.wireframe;if(a.wireframe_linewidth!==undefined)this.wireframe_linewidth=a.wireframe_linewidth;if(a.wireframe_linecap!==undefined)this.wireframe_linecap=a.wireframe_linecap;if(a.wireframe_linejoin!==undefined)this.wireframe_linejoin=
 a.wireframe_linejoin}this.toString=function(){return"THREE.MeshPhongMaterial (<br/>id: "+this.id+"<br/>color: "+this.color+"<br/>ambient: "+this.ambient+"<br/>specular: "+this.specular+"<br/>shininess: "+this.shininess+"<br/>map: "+this.map+"<br/>specular_map: "+this.specular_map+"<br/>env_map: "+this.env_map+"<br/>combine: "+this.combine+"<br/>reflectivity: "+this.reflectivity+"<br/>refraction_ratio: "+this.refraction_ratio+"<br/>opacity: "+this.opacity+"<br/>shading: "+this.shading+"<br/>wireframe: "+
@@ -81,129 +81,132 @@ a.uniforms;if(a.shading!==undefined)this.shading=a.shading;if(a.blending!==undef
 this.blending+"<br/>wireframe: "+this.wireframe+"<br/>wireframe_linewidth: "+this.wireframe_linewidth+"<br/>wireframe_linecap: "+this.wireframe_linecap+"<br/>wireframe_linejoin: "+this.wireframe_linejoin+"<br/>)"}};THREE.MeshShaderMaterialCounter={value:0};
 THREE.ParticleBasicMaterial=function(a){this.color=new THREE.Color(16711680);this.map=null;this.opacity=1;this.blending=THREE.NormalBlending;this.offset=new THREE.Vector2;if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.map!==undefined)this.map=a.map;if(a.opacity!==undefined)this.opacity=a.opacity;if(a.blending!==undefined)this.blending=a.blending}this.toString=function(){return"THREE.ParticleBasicMaterial (<br/>color: "+this.color+"<br/>map: "+this.map+"<br/>opacity: "+this.opacity+"<br/>blending: "+
 this.blending+"<br/>)"}};THREE.ParticleCircleMaterial=function(a){this.color=new THREE.Color(16711680);this.opacity=1;this.blending=THREE.NormalBlending;if(a){a.color!==undefined&&this.color.setHex(a.color);if(a.opacity!==undefined)this.opacity=a.opacity;if(a.blending!==undefined)this.blending=a.blending}this.toString=function(){return"THREE.ParticleCircleMaterial (<br/>color: "+this.color+"<br/>opacity: "+this.opacity+"<br/>blending: "+this.blending+"<br/>)"}};
-THREE.ParticleDOMMaterial=function(a){this.domElement=a;this.toString=function(){return"THREE.ParticleDOMMaterial ( domElement: "+this.domElement+" )"}};THREE.Texture=function(a,b,d,e){this.image=a;this.loaded=false;this.mapping=b!==undefined?b:THREE.UVMapping;this.wrap_s=d!==undefined?d:THREE.ClampToEdge;this.wrap_t=e!==undefined?e:THREE.ClampToEdge;this.toString=function(){return"THREE.Texture (<br/>image: "+this.image+"<br/>wrap_s: "+this.wrap_s+"<br/>wrap_t: "+this.wrap_t+"<br/>)"}};
-THREE.UVMapping=0;THREE.ReflectionMapping=1;THREE.RefractionMapping=2;THREE.Multiply=0;THREE.Mix=1;THREE.Repeat=0;THREE.ClampToEdge=1;THREE.MirroredRepeat=2;THREE.TextureCube=function(a,b){this.image=a;this.mapping=b?b:THREE.ReflectionMap;this.toString=function(){return"THREE.TextureCube (<br/>image: "+this.image+"<br/>mapping: "+this.mapping+"<br/>)"}};
+THREE.ParticleDOMMaterial=function(a){this.domElement=a;this.toString=function(){return"THREE.ParticleDOMMaterial ( domElement: "+this.domElement+" )"}};
+THREE.Texture=function(a,b,d,e,g,j){this.image=a;this.mapping=b!==undefined?b:new THREE.UVMapping;this.wrap_s=d!==undefined?d:THREE.ClampToEdgeWrapping;this.wrap_t=e!==undefined?e:THREE.ClampToEdgeWrapping;this.mag_filter=g!==undefined?g:THREE.LinearFilter;this.min_filter=j!==undefined?j:THREE.LinearMipMapLinearFilter;this.toString=function(){return"THREE.Texture (<br/>image: "+this.image+"<br/>wrap_s: "+this.wrap_s+"<br/>wrap_t: "+this.wrap_t+"<br/>mag_filter: "+this.mag_filter+"<br/>min_filter: "+
+this.min_filter+"<br/>)"}};THREE.MultiplyOperation=0;THREE.MixOperation=1;THREE.RepeatWrapping=0;THREE.ClampToEdgeWrapping=1;THREE.MirroredRepeatWrapping=2;THREE.NearestFilter=3;THREE.NearestMipMapNearestFilter=4;THREE.NearestMipMapLinearFilter=5;THREE.LinearFilter=6;THREE.LinearMipMapNearestFilter=7;THREE.LinearMipMapLinearFilter=8;THREE.CubeReflectionMapping=function(){};THREE.CubeRefractionMapping=function(){};THREE.LatitudeReflectionMapping=function(){};THREE.LatitudeRefractionMapping=function(){};
+THREE.SphericalReflectionMapping=function(){};THREE.SphericalRefractionMapping=function(){};THREE.UVMapping=function(){};
 THREE.Scene=function(){this.objects=[];this.lights=[];this.addObject=function(a){this.objects.push(a)};this.removeObject=function(a){a=this.objects.indexOf(a);a!==-1&&this.objects.splice(a,1)};this.addLight=function(a){this.lights.push(a)};this.removeLight=function(a){a=this.lights.indexOf(a);a!==-1&&this.lights.splice(a,1)};this.toString=function(){return"THREE.Scene ( "+this.objects+" )"}};
-THREE.Projector=function(){function a(A,o){var i=0,n=1,h=A.z+A.w,x=o.z+o.w,m=-A.z+A.w,l=-o.z+o.w;if(h>=0&&x>=0&&m>=0&&l>=0)return true;else if(h<0&&x<0||m<0&&l<0)return false;else{if(h<0)i=Math.max(i,h/(h-x));else if(x<0)n=Math.min(n,h/(h-x));if(m<0)i=Math.max(i,m/(m-l));else if(l<0)n=Math.min(n,m/(m-l));if(n<i)return false;else{A.lerpSelf(o,i);o.lerpSelf(A,1-n);return true}}}var b=null,d,e,f,j=[],k,g,p=[],c,t,F=[],r=new THREE.Vector4,w=new THREE.Matrix4,v=new THREE.Matrix4,y=new THREE.Vector4,L=
-new THREE.Vector4,u;this.projectScene=function(A,o){var i,n,h,x,m,l,B,C,Q,J,P,S,E,T,D,I,H;b=[];f=g=t=0;o.autoUpdateMatrix&&o.updateMatrix();w.multiply(o.projectionMatrix,o.matrix);B=A.objects;i=0;for(n=B.length;i<n;i++){C=B[i];C.autoUpdateMatrix&&C.updateMatrix();Q=C.matrix;J=C.rotationMatrix;P=C.material;S=C.overdraw;if(C instanceof THREE.Mesh){E=C.geometry.vertices;h=0;for(x=E.length;h<x;h++){T=E[h];T.positionWorld.copy(T.position);Q.multiplyVector3(T.positionWorld);D=T.positionScreen;D.copy(T.positionWorld);
-w.multiplyVector4(D);D.multiplyScalar(1/D.w);T.__visible=D.z>0&&D.z<1}T=C.geometry.faces;h=0;for(x=T.length;h<x;h++){D=T[h];if(D instanceof THREE.Face3){m=E[D.a];l=E[D.b];I=E[D.c];if(m.__visible&&l.__visible&&I.__visible)if(C.doubleSided||C.flipSided!=(I.positionScreen.x-m.positionScreen.x)*(l.positionScreen.y-m.positionScreen.y)-(I.positionScreen.y-m.positionScreen.y)*(l.positionScreen.x-m.positionScreen.x)<0){d=j[f]=j[f]||new THREE.RenderableFace3;d.v1.positionWorld.copy(m.positionWorld);d.v2.positionWorld.copy(l.positionWorld);
-d.v3.positionWorld.copy(I.positionWorld);d.v1.positionScreen.copy(m.positionScreen);d.v2.positionScreen.copy(l.positionScreen);d.v3.positionScreen.copy(I.positionScreen);d.normalWorld.copy(D.normal);J.multiplyVector3(d.normalWorld);d.centroidWorld.copy(D.centroid);Q.multiplyVector3(d.centroidWorld);d.centroidScreen.copy(d.centroidWorld);w.multiplyVector3(d.centroidScreen);I=D.vertexNormals;u=d.vertexNormalsWorld;m=0;for(l=I.length;m<l;m++){H=u[m]=u[m]||new THREE.Vector3;H.copy(I[m]);J.multiplyVector3(H)}d.z=
-d.centroidScreen.z;d.meshMaterial=P;d.faceMaterial=D.material;d.overdraw=S;if(C.geometry.uvs[h]){d.uvs[0]=C.geometry.uvs[h][0];d.uvs[1]=C.geometry.uvs[h][1];d.uvs[2]=C.geometry.uvs[h][2]}b.push(d);f++}}else if(D instanceof THREE.Face4){m=E[D.a];l=E[D.b];I=E[D.c];H=E[D.d];if(m.__visible&&l.__visible&&I.__visible&&H.__visible)if(C.doubleSided||C.flipSided!=((H.positionScreen.x-m.positionScreen.x)*(l.positionScreen.y-m.positionScreen.y)-(H.positionScreen.y-m.positionScreen.y)*(l.positionScreen.x-m.positionScreen.x)<
-0||(l.positionScreen.x-I.positionScreen.x)*(H.positionScreen.y-I.positionScreen.y)-(l.positionScreen.y-I.positionScreen.y)*(H.positionScreen.x-I.positionScreen.x)<0)){d=j[f]=j[f]||new THREE.RenderableFace3;d.v1.positionWorld.copy(m.positionWorld);d.v2.positionWorld.copy(l.positionWorld);d.v3.positionWorld.copy(H.positionWorld);d.v1.positionScreen.copy(m.positionScreen);d.v2.positionScreen.copy(l.positionScreen);d.v3.positionScreen.copy(H.positionScreen);d.normalWorld.copy(D.normal);J.multiplyVector3(d.normalWorld);
-d.centroidWorld.copy(D.centroid);Q.multiplyVector3(d.centroidWorld);d.centroidScreen.copy(d.centroidWorld);w.multiplyVector3(d.centroidScreen);d.z=d.centroidScreen.z;d.meshMaterial=P;d.faceMaterial=D.material;d.overdraw=S;if(C.geometry.uvs[h]){d.uvs[0]=C.geometry.uvs[h][0];d.uvs[1]=C.geometry.uvs[h][1];d.uvs[2]=C.geometry.uvs[h][3]}b.push(d);f++;e=j[f]=j[f]||new THREE.RenderableFace3;e.v1.positionWorld.copy(l.positionWorld);e.v2.positionWorld.copy(I.positionWorld);e.v3.positionWorld.copy(H.positionWorld);
-e.v1.positionScreen.copy(l.positionScreen);e.v2.positionScreen.copy(I.positionScreen);e.v3.positionScreen.copy(H.positionScreen);e.normalWorld.copy(d.normalWorld);e.centroidWorld.copy(d.centroidWorld);e.centroidScreen.copy(d.centroidScreen);e.z=e.centroidScreen.z;e.meshMaterial=P;e.faceMaterial=D.material;e.overdraw=S;if(C.geometry.uvs[h]){e.uvs[0]=C.geometry.uvs[h][1];e.uvs[1]=C.geometry.uvs[h][2];e.uvs[2]=C.geometry.uvs[h][3]}b.push(e);f++}}}}else if(C instanceof THREE.Line){v.multiply(w,Q);E=C.geometry.vertices;
-T=E[0];T.positionScreen.copy(T.position);v.multiplyVector4(T.positionScreen);h=1;for(x=E.length;h<x;h++){m=E[h];m.positionScreen.copy(m.position);v.multiplyVector4(m.positionScreen);l=E[h-1];y.copy(m.positionScreen);L.copy(l.positionScreen);if(a(y,L)){y.multiplyScalar(1/y.w);L.multiplyScalar(1/L.w);k=p[g]=p[g]||new THREE.RenderableLine;k.v1.positionScreen.copy(y);k.v2.positionScreen.copy(L);k.z=Math.max(y.z,L.z);k.material=C.material;b.push(k);g++}}}else if(C instanceof THREE.Particle){r.set(C.position.x,
-C.position.y,C.position.z,1);w.multiplyVector4(r);r.z/=r.w;if(r.z>0&&r.z<1){c=F[t]=F[t]||new THREE.RenderableParticle;c.x=r.x/r.w;c.y=r.y/r.w;c.z=r.z;c.rotation=C.rotation.z;c.scale.x=C.scale.x*Math.abs(c.x-(r.x+o.projectionMatrix.n11)/(r.w+o.projectionMatrix.n14));c.scale.y=C.scale.y*Math.abs(c.y-(r.y+o.projectionMatrix.n22)/(r.w+o.projectionMatrix.n24));c.material=C.material;b.push(c);t++}}}b.sort(function(V,N){return N.z-V.z});return b};this.unprojectVector=function(A,o){var i=new THREE.Matrix4;
-i.multiply(THREE.Matrix4.makeInvert(o.matrix),THREE.Matrix4.makeInvert(o.projectionMatrix));i.multiplyVector3(A);return A}};
-THREE.DOMRenderer=function(){THREE.Renderer.call(this);var a=null,b=new THREE.Projector,d,e,f,j;this.domElement=document.createElement("div");this.setSize=function(k,g){d=k;e=g;f=d/2;j=e/2};this.render=function(k,g){var p,c,t,F,r,w,v,y;a=b.projectScene(k,g);p=0;for(c=a.length;p<c;p++){r=a[p];if(r instanceof THREE.RenderableParticle){v=r.x*f+f;y=r.y*j+j;t=0;for(F=r.material.length;t<F;t++){w=r.material[t];if(w instanceof THREE.ParticleDOMMaterial){w=w.domElement;w.style.left=v+"px";w.style.top=y+"px"}}}}}};
-THREE.CanvasRenderer=function(){function a(R,aa,Z,O){var G,U,ca,X,$=R.lights;R=0;for(G=$.length;R<G;R++){U=$[R];ca=U.color;X=U.intensity;if(U instanceof THREE.DirectionalLight){U=Z.dot(U.position)*X;if(U>0){O.r+=ca.r*U;O.g+=ca.g*U;O.b+=ca.b*U}}else if(U instanceof THREE.PointLight){da.sub(U.position,aa);da.normalize();U=Z.dot(da)*X;if(U>0){O.r+=ca.r*U;O.g+=ca.g*U;O.b+=ca.b*U}}}}function b(R,aa,Z,O,G,U){if(G.opacity!=0){j(G.opacity);k(G.blending);Q=R.positionScreen.x;J=R.positionScreen.y;P=aa.positionScreen.x;
-S=aa.positionScreen.y;E=Z.positionScreen.x;T=Z.positionScreen.y;var ca=Q,X=J,$=P,ea=S,ba=E,fa=T;u.beginPath();u.moveTo(ca,X);u.lineTo($,ea);u.lineTo(ba,fa);u.lineTo(ca,X);u.closePath();if(G instanceof THREE.MeshBasicMaterial)if(G.map&&G.map.loaded)f(Q,J,P,S,E,T,G.map.image,O.uvs[0].u,O.uvs[0].v,O.uvs[1].u,O.uvs[1].v,O.uvs[2].u,O.uvs[2].v);else if(G.env_map&&G.env_map.loaded){if(G.env_map.mapping==THREE.ReflectionMapping){da.copy(O.vertexNormalsWorld[0]);z=(da.x*camera.matrix.n11+da.y*camera.matrix.n12+
-da.z*camera.matrix.n13)*0.5+0.5;K=-(da.x*camera.matrix.n21+da.y*camera.matrix.n22+da.z*camera.matrix.n23)*0.5+0.5;da.copy(O.vertexNormalsWorld[1]);W=(da.x*camera.matrix.n11+da.y*camera.matrix.n12+da.z*camera.matrix.n13)*0.5+0.5;ga=-(da.x*camera.matrix.n21+da.y*camera.matrix.n22+da.z*camera.matrix.n23)*0.5+0.5;da.copy(O.vertexNormalsWorld[2]);ma=(da.x*camera.matrix.n11+da.y*camera.matrix.n12+da.z*camera.matrix.n13)*0.5+0.5;ua=-(da.x*camera.matrix.n21+da.y*camera.matrix.n22+da.z*camera.matrix.n23)*
-0.5+0.5;f(Q,J,P,S,E,T,G.env_map.image,z,K,W,ga,ma,ua)}}else G.wireframe?d(G.color.__styleString,G.wireframe_linewidth):e(G.color.__styleString);else if(G instanceof THREE.MeshLambertMaterial){if(G.map&&!G.wireframe){f(Q,J,P,S,E,T,G.map.image,O.uvs[0].u,O.uvs[0].v,O.uvs[1].u,O.uvs[1].v,O.uvs[2].u,O.uvs[2].v);k(THREE.SubtractiveBlending)}if(za)if(!G.wireframe&&G.shading==THREE.SmoothShading&&O.vertexNormalsWorld.length==3){I.r=H.r=V.r=ja.r;I.g=H.g=V.g=ja.g;I.b=H.b=V.b=ja.b;a(U,O.v1.positionWorld,O.vertexNormalsWorld[0],
-I);a(U,O.v2.positionWorld,O.vertexNormalsWorld[1],H);a(U,O.v3.positionWorld,O.vertexNormalsWorld[2],V);N.r=(H.r+V.r)*0.5;N.g=(H.g+V.g)*0.5;N.b=(H.b+V.b)*0.5;s=g(I,H,V,N);f(Q,J,P,S,E,T,s,0,0,1,0,0,1)}else{ka.r=ja.r;ka.g=ja.g;ka.b=ja.b;a(U,O.centroidWorld,O.normalWorld,ka);D.r=G.color.r*ka.r;D.g=G.color.g*ka.g;D.b=G.color.b*ka.b;D.updateStyleString();G.wireframe?d(D.__styleString,G.wireframe_linewidth):e(D.__styleString)}else G.wireframe?d(G.color.__styleString,G.wireframe_linewidth):e(G.color.__styleString)}else if(G instanceof
-THREE.MeshDepthMaterial){M=G.__2near;Y=G.__farPlusNear;q=G.__farMinusNear;I.r=I.g=I.b=1-M/(Y-R.positionScreen.z*q);H.r=H.g=H.b=1-M/(Y-aa.positionScreen.z*q);V.r=V.g=V.b=1-M/(Y-Z.positionScreen.z*q);N.r=(H.r+V.r)*0.5;N.g=(H.g+V.g)*0.5;N.b=(H.b+V.b)*0.5;s=g(I,H,V,N);f(Q,J,P,S,E,T,s,0,0,1,0,0,1)}else if(G instanceof THREE.MeshNormalMaterial){D.r=p(O.normalWorld.x);D.g=p(O.normalWorld.y);D.b=p(O.normalWorld.z);D.updateStyleString();G.wireframe?d(D.__styleString,G.wireframe_linewidth):e(D.__styleString)}}}
-function d(R,aa){if(i!=R)u.strokeStyle=i=R;if(h!=aa)u.lineWidth=h=aa;u.stroke();ha.inflate(aa*2)}function e(R){if(n!=R)u.fillStyle=n=R;u.fill()}function f(R,aa,Z,O,G,U,ca,X,$,ea,ba,fa,oa){var na,ia;na=ca.width-1;ia=ca.height-1;X*=na;$*=ia;ea*=na;ba*=ia;fa*=na;oa*=ia;Z-=R;O-=aa;G-=R;U-=aa;ea-=X;ba-=$;fa-=X;oa-=$;ia=1/(ea*oa-fa*ba);na=(oa*Z-ba*G)*ia;ba=(oa*O-ba*U)*ia;Z=(ea*G-fa*Z)*ia;O=(ea*U-fa*O)*ia;R=R-na*X-Z*$;aa=aa-ba*X-O*$;u.save();u.transform(na,ba,Z,O,R,aa);u.clip();u.drawImage(ca,0,0);u.restore()}
-function j(R){if(A!=R)u.globalAlpha=A=R}function k(R){if(o!=R){switch(R){case THREE.NormalBlending:u.globalCompositeOperation="source-over";break;case THREE.AdditiveBlending:u.globalCompositeOperation="lighter";break;case THREE.SubtractiveBlending:u.globalCompositeOperation="darker"}o=R}}function g(R,aa,Z,O){la[0]=m(0,x(255,~~(R.r*255)));la[1]=m(0,x(255,~~(R.g*255)));la[2]=m(0,x(255,~~(R.b*255)));la[4]=m(0,x(255,~~(aa.r*255)));la[5]=m(0,x(255,~~(aa.g*255)));la[6]=m(0,x(255,~~(aa.b*255)));la[8]=m(0,
-x(255,~~(Z.r*255)));la[9]=m(0,x(255,~~(Z.g*255)));la[10]=m(0,x(255,~~(Z.b*255)));la[12]=m(0,x(255,~~(O.r*255)));la[13]=m(0,x(255,~~(O.g*255)));la[14]=m(0,x(255,~~(O.b*255)));va.putImageData(Aa,0,0);ya.drawImage(wa,0,0);return xa}function p(R){return R<0?x((1+R)*0.5,0.5):0.5+x(R*0.5,0.5)}function c(R,aa){var Z=aa.x-R.x,O=aa.y-R.y,G=1/Math.sqrt(Z*Z+O*O);Z*=G;O*=G;aa.x+=Z;aa.y+=O;R.x-=Z;R.y-=O}var t=null,F=new THREE.Projector,r=document.createElement("canvas"),w,v,y,L,u=r.getContext("2d"),A=1,o=0,i=
-null,n=null,h=1,x=Math.min,m=Math.max,l,B,C,Q,J,P,S,E,T,D=new THREE.Color,I=new THREE.Color,H=new THREE.Color,V=new THREE.Color,N=new THREE.Color,M,Y,q,s,z,K,W,ga,ma,ua,pa=new THREE.Rectangle,qa=new THREE.Rectangle,ha=new THREE.Rectangle,za=false,ka=new THREE.Color,ja=new THREE.Color,ra=new THREE.Color,sa=new THREE.Color,Da=Math.PI*2,da=new THREE.Vector3,wa,va,Aa,la,xa,ya,ta=16;wa=document.createElement("canvas");wa.width=wa.height=2;va=wa.getContext("2d");va.fillStyle="rgba(0,0,0,1)";va.fillRect(0,
-0,2,2);Aa=va.getImageData(0,0,2,2);la=Aa.data;xa=document.createElement("canvas");xa.width=xa.height=ta;ya=xa.getContext("2d");ya.translate(-ta/2,-ta/2);ya.scale(ta,ta);ta--;this.domElement=r;this.autoClear=true;this.setSize=function(R,aa){w=R;v=aa;y=w/2;L=v/2;r.width=w;r.height=v;pa.set(-y,-L,y,L)};this.clear=function(){if(!qa.isEmpty()){qa.inflate(1);qa.minSelf(pa);u.clearRect(qa.getX(),qa.getY(),qa.getWidth(),qa.getHeight());qa.empty()}};this.render=function(R,aa){var Z,O,G,U,ca,X,$,ea;u.setTransform(1,
-0,0,-1,y,L);this.autoClear&&this.clear();t=F.projectScene(R,aa);if(za=R.lights.length>0){ca=R.lights;ja.setRGB(0,0,0);ra.setRGB(0,0,0);sa.setRGB(0,0,0);Z=0;for(O=ca.length;Z<O;Z++){G=ca[Z];U=G.color;if(G instanceof THREE.AmbientLight){ja.r+=U.r;ja.g+=U.g;ja.b+=U.b}else if(G instanceof THREE.DirectionalLight){ra.r+=U.r;ra.g+=U.g;ra.b+=U.b}else if(G instanceof THREE.PointLight){sa.r+=U.r;sa.g+=U.g;sa.b+=U.b}}}Z=0;for(O=t.length;Z<O;Z++){G=t[Z];ha.empty();if(G instanceof THREE.RenderableParticle){l=
-G;l.x*=y;l.y*=L;U=0;for(ca=G.material.length;U<ca;U++){X=l;$=G;var ba=G.material[U];if(ba.opacity!=0){j(ba.opacity);k(ba.blending);ea=void 0;var fa=void 0,oa=void 0,na=void 0,ia=void 0,Ba=void 0,Ca=void 0;if(ba instanceof THREE.ParticleBasicMaterial){if(ba.map){ia=ba.map;Ba=ia.width>>1;Ca=ia.height>>1;oa=$.scale.x*y;na=$.scale.y*L;ea=oa*Ba;fa=na*Ca;ha.set(X.x-ea,X.y-fa,X.x+ea,X.y+fa);if(pa.instersects(ha)){u.save();u.translate(X.x,X.y);u.rotate(-$.rotation);u.scale(oa,-na);u.translate(-Ba,-Ca);u.drawImage(ia,
-0,0);u.restore()}}}else if(ba instanceof THREE.ParticleCircleMaterial){if(za){ka.r=ja.r+ra.r+sa.r;ka.g=ja.g+ra.g+sa.g;ka.b=ja.b+ra.b+sa.b;D.r=ba.color.r*ka.r;D.g=ba.color.g*ka.g;D.b=ba.color.b*ka.b;D.updateStyleString()}else D.__styleString=ba.color.__styleString;ea=$.scale.x*y;fa=$.scale.y*L;ha.set(X.x-ea,X.y-fa,X.x+ea,X.y+fa);if(pa.instersects(ha)){ba=D.__styleString;if(n!=ba)u.fillStyle=n=ba;u.save();u.translate(X.x,X.y);u.rotate(-$.rotation);u.scale(ea,fa);u.beginPath();u.arc(0,0,1,0,Da,true);
-u.closePath();u.fill();u.restore()}}}}}else if(G instanceof THREE.RenderableLine){l=G.v1;B=G.v2;l.positionScreen.x*=y;l.positionScreen.y*=L;B.positionScreen.x*=y;B.positionScreen.y*=L;ha.addPoint(l.positionScreen.x,l.positionScreen.y);ha.addPoint(B.positionScreen.x,B.positionScreen.y);if(pa.instersects(ha)){U=0;for(ca=G.material.length;U<ca;){$=l;ea=B;X=G.material[U++];if(X.opacity!=0){j(X.opacity);k(X.blending);u.beginPath();u.moveTo($.positionScreen.x,$.positionScreen.y);u.lineTo(ea.positionScreen.x,
-ea.positionScreen.y);u.closePath();if(X instanceof THREE.LineBasicMaterial){D.__styleString=X.color.__styleString;$=X.linewidth;if(h!=$)u.lineWidth=h=$;$=D.__styleString;if(i!=$)u.strokeStyle=i=$;u.stroke();ha.inflate(X.linewidth*2)}}}}}else if(G instanceof THREE.RenderableFace3){l=G.v1;B=G.v2;C=G.v3;l.positionScreen.x*=y;l.positionScreen.y*=L;B.positionScreen.x*=y;B.positionScreen.y*=L;C.positionScreen.x*=y;C.positionScreen.y*=L;if(G.overdraw){c(l.positionScreen,B.positionScreen);c(B.positionScreen,
-C.positionScreen);c(C.positionScreen,l.positionScreen)}ha.addPoint(l.positionScreen.x,l.positionScreen.y);ha.addPoint(B.positionScreen.x,B.positionScreen.y);ha.addPoint(C.positionScreen.x,C.positionScreen.y);if(pa.instersects(ha)){U=0;for(ca=G.meshMaterial.length;U<ca;){ea=G.meshMaterial[U++];if(ea instanceof THREE.MeshFaceMaterial){X=0;for($=G.faceMaterial.length;X<$;)(ea=G.faceMaterial[X++])&&b(l,B,C,G,ea,R)}else b(l,B,C,G,ea,R)}}}qa.addRectangle(ha)}u.setTransform(1,0,0,1,0,0)}};
-THREE.SVGRenderer=function(){function a(D,I,H){var V,N,M,Y;V=0;for(N=D.lights.length;V<N;V++){M=D.lights[V];if(M instanceof THREE.DirectionalLight){Y=I.normalWorld.dot(M.position)*M.intensity;if(Y>0){H.r+=M.color.r*Y;H.g+=M.color.g*Y;H.b+=M.color.b*Y}}else if(M instanceof THREE.PointLight){l.sub(M.position,I.centroidWorld);l.normalize();Y=I.normalWorld.dot(l)*M.intensity;if(Y>0){H.r+=M.color.r*Y;H.g+=M.color.g*Y;H.b+=M.color.b*Y}}}}function b(D,I,H,V,N,M){J=e(P++);J.setAttribute("d","M "+D.positionScreen.x+
-" "+D.positionScreen.y+" L "+I.positionScreen.x+" "+I.positionScreen.y+" L "+H.positionScreen.x+","+H.positionScreen.y+"z");if(N instanceof THREE.MeshBasicMaterial)o.__styleString=N.color.__styleString;else if(N instanceof THREE.MeshLambertMaterial)if(A){i.r=n.r;i.g=n.g;i.b=n.b;a(M,V,i);o.r=N.color.r*i.r;o.g=N.color.g*i.g;o.b=N.color.b*i.b;o.updateStyleString()}else o.__styleString=N.color.__styleString;else if(N instanceof THREE.MeshDepthMaterial){m=1-N.__2near/(N.__farPlusNear-V.z*N.__farMinusNear);
-o.setRGB(m,m,m)}else N instanceof THREE.MeshNormalMaterial&&o.setRGB(f(V.normalWorld.x),f(V.normalWorld.y),f(V.normalWorld.z));N.wireframe?J.setAttribute("style","fill: none; stroke: "+o.__styleString+"; stroke-width: "+N.wireframe_linewidth+"; stroke-opacity: "+N.opacity+"; stroke-linecap: "+N.wireframe_linecap+"; stroke-linejoin: "+N.wireframe_linejoin):J.setAttribute("style","fill: "+o.__styleString+"; fill-opacity: "+N.opacity);g.appendChild(J)}function d(D,I,H,V,N,M,Y){J=e(P++);J.setAttribute("d",
-"M "+D.positionScreen.x+" "+D.positionScreen.y+" L "+I.positionScreen.x+" "+I.positionScreen.y+" L "+H.positionScreen.x+","+H.positionScreen.y+" L "+V.positionScreen.x+","+V.positionScreen.y+"z");if(M instanceof THREE.MeshBasicMaterial)o.__styleString=M.color.__styleString;else if(M instanceof THREE.MeshLambertMaterial)if(A){i.r=n.r;i.g=n.g;i.b=n.b;a(Y,N,i);o.r=M.color.r*i.r;o.g=M.color.g*i.g;o.b=M.color.b*i.b;o.updateStyleString()}else o.__styleString=M.color.__styleString;else if(M instanceof THREE.MeshDepthMaterial){m=
-1-M.__2near/(M.__farPlusNear-N.z*M.__farMinusNear);o.setRGB(m,m,m)}else M instanceof THREE.MeshNormalMaterial&&o.setRGB(f(N.normalWorld.x),f(N.normalWorld.y),f(N.normalWorld.z));M.wireframe?J.setAttribute("style","fill: none; stroke: "+o.__styleString+"; stroke-width: "+M.wireframe_linewidth+"; stroke-opacity: "+M.opacity+"; stroke-linecap: "+M.wireframe_linecap+"; stroke-linejoin: "+M.wireframe_linejoin):J.setAttribute("style","fill: "+o.__styleString+"; fill-opacity: "+M.opacity);g.appendChild(J)}
-function e(D){if(B[D]==null){B[D]=document.createElementNS("http://www.w3.org/2000/svg","path");T==0&&B[D].setAttribute("shape-rendering","crispEdges");return B[D]}return B[D]}function f(D){return D<0?Math.min((1+D)*0.5,0.5):0.5+Math.min(D*0.5,0.5)}var j=null,k=new THREE.Projector,g=document.createElementNS("http://www.w3.org/2000/svg","svg"),p,c,t,F,r,w,v,y,L=new THREE.Rectangle,u=new THREE.Rectangle,A=false,o=new THREE.Color(16777215),i=new THREE.Color(16777215),n=new THREE.Color(0),h=new THREE.Color(0),
-x=new THREE.Color(0),m,l=new THREE.Vector3,B=[],C=[],Q=[],J,P,S,E,T=1;this.domElement=g;this.autoClear=true;this.setQuality=function(D){switch(D){case "high":T=1;break;case "low":T=0}};this.setSize=function(D,I){p=D;c=I;t=p/2;F=c/2;g.setAttribute("viewBox",-t+" "+-F+" "+p+" "+c);g.setAttribute("width",p);g.setAttribute("height",c);L.set(-t,-F,t,F)};this.clear=function(){for(;g.childNodes.length>0;)g.removeChild(g.childNodes[0])};this.render=function(D,I){var H,V,N,M,Y,q,s,z;this.autoClear&&this.clear();
-j=k.projectScene(D,I);E=S=P=0;if(A=D.lights.length>0){s=D.lights;n.setRGB(0,0,0);h.setRGB(0,0,0);x.setRGB(0,0,0);H=0;for(V=s.length;H<V;H++){N=s[H];M=N.color;if(N instanceof THREE.AmbientLight){n.r+=M.r;n.g+=M.g;n.b+=M.b}else if(N instanceof THREE.DirectionalLight){h.r+=M.r;h.g+=M.g;h.b+=M.b}else if(N instanceof THREE.PointLight){x.r+=M.r;x.g+=M.g;x.b+=M.b}}}H=0;for(V=j.length;H<V;H++){s=j[H];u.empty();if(s instanceof THREE.RenderableParticle){r=s;r.x*=t;r.y*=-F;N=0;for(M=s.material.length;N<M;N++)if(z=
-s.material[N]){Y=r;q=s;z=z;var K=S++;if(C[K]==null){C[K]=document.createElementNS("http://www.w3.org/2000/svg","circle");T==0&&C[K].setAttribute("shape-rendering","crispEdges")}J=C[K];J.setAttribute("cx",Y.x);J.setAttribute("cy",Y.y);J.setAttribute("r",q.scale.x*t);if(z instanceof THREE.ParticleCircleMaterial){if(A){i.r=n.r+h.r+x.r;i.g=n.g+h.g+x.g;i.b=n.b+h.b+x.b;o.r=z.color.r*i.r;o.g=z.color.g*i.g;o.b=z.color.b*i.b;o.updateStyleString()}else o=z.color;J.setAttribute("style","fill: "+o.__styleString)}g.appendChild(J)}}else if(s instanceof
-THREE.RenderableLine){r=s.v1;w=s.v2;r.positionScreen.x*=t;r.positionScreen.y*=-F;w.positionScreen.x*=t;w.positionScreen.y*=-F;u.addPoint(r.positionScreen.x,r.positionScreen.y);u.addPoint(w.positionScreen.x,w.positionScreen.y);if(L.instersects(u)){N=0;for(M=s.material.length;N<M;)if(z=s.material[N++]){Y=r;q=w;z=z;K=E++;if(Q[K]==null){Q[K]=document.createElementNS("http://www.w3.org/2000/svg","line");T==0&&Q[K].setAttribute("shape-rendering","crispEdges")}J=Q[K];J.setAttribute("x1",Y.positionScreen.x);
-J.setAttribute("y1",Y.positionScreen.y);J.setAttribute("x2",q.positionScreen.x);J.setAttribute("y2",q.positionScreen.y);if(z instanceof THREE.LineBasicMaterial){o.__styleString=z.color.__styleString;J.setAttribute("style","fill: none; stroke: "+o.__styleString+"; stroke-width: "+z.linewidth+"; stroke-opacity: "+z.opacity+"; stroke-linecap: "+z.linecap+"; stroke-linejoin: "+z.linejoin);g.appendChild(J)}}}}else if(s instanceof THREE.RenderableFace3){r=s.v1;w=s.v2;v=s.v3;r.positionScreen.x*=t;r.positionScreen.y*=
--F;w.positionScreen.x*=t;w.positionScreen.y*=-F;v.positionScreen.x*=t;v.positionScreen.y*=-F;u.addPoint(r.positionScreen.x,r.positionScreen.y);u.addPoint(w.positionScreen.x,w.positionScreen.y);u.addPoint(v.positionScreen.x,v.positionScreen.y);if(L.instersects(u)){N=0;for(M=s.meshMaterial.length;N<M;){z=s.meshMaterial[N++];if(z instanceof THREE.MeshFaceMaterial){Y=0;for(q=s.faceMaterial.length;Y<q;)(z=s.faceMaterial[Y++])&&b(r,w,v,s,z,D)}else z&&b(r,w,v,s,z,D)}}}else if(s instanceof THREE.RenderableFace4){r=
-s.v1;w=s.v2;v=s.v3;y=s.v4;r.positionScreen.x*=t;r.positionScreen.y*=-F;w.positionScreen.x*=t;w.positionScreen.y*=-F;v.positionScreen.x*=t;v.positionScreen.y*=-F;y.positionScreen.x*=t;y.positionScreen.y*=-F;u.addPoint(r.positionScreen.x,r.positionScreen.y);u.addPoint(w.positionScreen.x,w.positionScreen.y);u.addPoint(v.positionScreen.x,v.positionScreen.y);u.addPoint(y.positionScreen.x,y.positionScreen.y);if(L.instersects(u)){N=0;for(M=s.meshMaterial.length;N<M;){z=s.meshMaterial[N++];if(z instanceof
-THREE.MeshFaceMaterial){Y=0;for(q=s.faceMaterial.length;Y<q;)(z=s.faceMaterial[Y++])&&d(r,w,v,y,s,z,D)}else z&&d(r,w,v,y,s,z,D)}}}}}};
-THREE.WebGLRenderer=function(a){function b(i,n){var h=c.createProgram();c.attachShader(h,k("fragment","#ifdef GL_ES\nprecision highp float;\n#endif\n"+i));c.attachShader(h,k("vertex","uniform mat4 objectMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform vec3 cameraPosition;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\n"+n));c.linkProgram(h);c.getProgramParameter(h,c.LINK_STATUS)||alert("Could not initialise shaders\nVALIDATE_STATUS: "+c.getProgramParameter(h,
-c.VALIDATE_STATUS)+", gl error ["+c.getError()+"]");h.uniforms={};h.attributes={};return h}function d(i,n){if(i instanceof THREE.TextureCube&&i.image.length==6){if(!i.image.__webGLTextureCube&&!i.image.__cubeMapInitialized&&i.image.loadCount==6){i.image.__webGLTextureCube=c.createTexture();c.bindTexture(c.TEXTURE_CUBE_MAP,i.image.__webGLTextureCube);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_CUBE_MAP,
-c.TEXTURE_MAG_FILTER,c.LINEAR);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_MIN_FILTER,c.LINEAR_MIPMAP_LINEAR);for(var h=0;h<6;++h)c.texImage2D(c.TEXTURE_CUBE_MAP_POSITIVE_X+h,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,i.image[h]);c.generateMipmap(c.TEXTURE_CUBE_MAP);c.bindTexture(c.TEXTURE_CUBE_MAP,null);i.image.__cubeMapInitialized=true}c.activeTexture(c.TEXTURE0+n);c.bindTexture(c.TEXTURE_CUBE_MAP,i.image.__webGLTextureCube)}}function e(i,n){if(!i.__webGLTexture&&i.image.loaded){i.__webGLTexture=c.createTexture();
-c.bindTexture(c.TEXTURE_2D,i.__webGLTexture);c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,i.image);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,g(i.wrap_s));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,g(i.wrap_t));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,c.LINEAR);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,c.LINEAR_MIPMAP_LINEAR);c.generateMipmap(c.TEXTURE_2D);c.bindTexture(c.TEXTURE_2D,null)}c.activeTexture(c.TEXTURE0+n);c.bindTexture(c.TEXTURE_2D,i.__webGLTexture)}
-function f(i,n){var h,x,m;h=0;for(x=n.length;h<x;h++){m=n[h];i.uniforms[m]=c.getUniformLocation(i,m)}}function j(i,n){var h,x,m;h=0;for(x=n.length;h<x;h++){m=n[h];i.attributes[m]=c.getAttribLocation(i,m);i.attributes[m]>=0&&c.enableVertexAttribArray(i.attributes[m])}}function k(i,n){var h;if(i=="fragment")h=c.createShader(c.FRAGMENT_SHADER);else if(i=="vertex")h=c.createShader(c.VERTEX_SHADER);c.shaderSource(h,n);c.compileShader(h);if(!c.getShaderParameter(h,c.COMPILE_STATUS)){alert(c.getShaderInfoLog(h));
-return null}return h}function g(i){switch(i){case THREE.Repeat:return c.REPEAT;case THREE.ClampToEdge:return c.CLAMP_TO_EDGE;case THREE.MirroredRepeat:return c.MIRRORED_REPEAT}return 0}var p=document.createElement("canvas"),c,t,F,r=new THREE.Matrix4,w,v=new Float32Array(16),y=new Float32Array(16),L=new Float32Array(16),u=new Float32Array(9),A=new Float32Array(16);a=function(i,n){if(i){var h,x,m,l=pointLights=maxDirLights=maxPointLights=0;h=0;for(x=i.lights.length;h<x;h++){m=i.lights[h];m instanceof
-THREE.DirectionalLight&&l++;m instanceof THREE.PointLight&&pointLights++}if(pointLights+l<=n){maxDirLights=l;maxPointLights=pointLights}else{maxDirLights=Math.ceil(n*l/(pointLights+l));maxPointLights=n-maxDirLights}return{directional:maxDirLights,point:maxPointLights}}return{directional:1,point:n-1}}(a,4);this.domElement=p;this.autoClear=true;try{c=p.getContext("experimental-webgl",{antialias:true})}catch(o){}if(!c){alert("WebGL not supported");throw"cannot create webgl context";}c.clearColor(0,0,
-0,1);c.clearDepth(1);c.enable(c.DEPTH_TEST);c.depthFunc(c.LEQUAL);c.frontFace(c.CCW);c.cullFace(c.BACK);c.enable(c.CULL_FACE);c.enable(c.BLEND);c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA);c.clearColor(0,0,0,0);t=F=function(i,n){var h=[i?"#define MAX_DIR_LIGHTS "+i:"",n?"#define MAX_POINT_LIGHTS "+n:"","uniform bool enableLighting;\nuniform bool useRefract;\nuniform int pointLightNumber;\nuniform int directionalLightNumber;\nuniform vec3 ambientLightColor;",i?"uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];":
-"",i?"uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];":"",n?"uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];":"",n?"uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];":"","uniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nvarying vec3 vNormal;\nvarying vec2 vUv;\nvarying vec3 vLightWeighting;",n?"varying vec3 vPointLightVector[ MAX_POINT_LIGHTS ];":"","varying vec3 vViewPosition;\nvarying vec3 vReflect;\nuniform float mRefractionRatio;\nvoid main(void) {\nvec4 mPosition = objectMatrix * vec4( position, 1.0 );\nvViewPosition = cameraPosition - mPosition.xyz;\nvec3 nWorld = mat3( objectMatrix[0].xyz, objectMatrix[1].xyz, objectMatrix[2].xyz ) * normal;\nvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\nvec3 transformedNormal = normalize( normalMatrix * normal );\nif ( !enableLighting ) {\nvLightWeighting = vec3( 1.0, 1.0, 1.0 );\n} else {\nvLightWeighting = ambientLightColor;",
-i?"for( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {":"",i?"vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );":"",i?"float directionalLightWeighting = max( dot( transformedNormal, normalize(lDirection.xyz ) ), 0.0 );":"",i?"vLightWeighting += directionalLightColor[ i ] * directionalLightWeighting;":"",i?"}":"",n?"for( int i = 0; i < MAX_POINT_LIGHTS; i++ ) {":"",n?"vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );":"",n?"vPointLightVector[ i ] = normalize( lPosition.xyz - mvPosition.xyz );":
-"",n?"float pointLightWeighting = max( dot( transformedNormal, vPointLightVector[ i ] ), 0.0 );":"",n?"vLightWeighting += pointLightColor[ i ] * pointLightWeighting;":"",n?"}":"","}\nvNormal = transformedNormal;\nvUv = uv;\nif ( useRefract ) {\nvReflect = refract( normalize(mPosition.xyz - cameraPosition), normalize(nWorld.xyz), mRefractionRatio );\n} else {\nvReflect = reflect( normalize(mPosition.xyz - cameraPosition), normalize(nWorld.xyz) );\n}\ngl_Position = projectionMatrix * mvPosition;\n}"].join("\n"),
-x=[i?"#define MAX_DIR_LIGHTS "+i:"",n?"#define MAX_POINT_LIGHTS "+n:"","uniform int material;\nuniform bool enableMap;\nuniform bool enableCubeMap;\nuniform bool mixEnvMap;\nuniform samplerCube tCube;\nuniform float mReflectivity;\nuniform sampler2D tMap;\nuniform vec4 mColor;\nuniform float mOpacity;\nuniform vec4 mAmbient;\nuniform vec4 mSpecular;\nuniform float mShininess;\nuniform float m2Near;\nuniform float mFarPlusNear;\nuniform float mFarMinusNear;\nuniform int pointLightNumber;\nuniform int directionalLightNumber;",
-i?"uniform mat4 viewMatrix;":"",i?"uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];":"","varying vec3 vNormal;\nvarying vec2 vUv;\nvarying vec3 vLightWeighting;",n?"varying vec3 vPointLightVector[ MAX_POINT_LIGHTS ];":"","varying vec3 vViewPosition;\nvarying vec3 vReflect;\nuniform vec3 cameraPosition;\nvoid main() {\nvec4 mapColor = vec4( 1.0, 1.0, 1.0, 1.0 );\nvec4 cubeColor = vec4( 1.0, 1.0, 1.0, 1.0 );\nif ( enableMap ) {\nmapColor = texture2D( tMap, vUv );\n}\nif ( enableCubeMap ) {\ncubeColor = textureCube( tCube, vec3( -vReflect.x, vReflect.yz ) );\n}\nif ( material == 5 ) { \nvec3 wPos = cameraPosition - vViewPosition;\ngl_FragColor = textureCube( tCube, vec3( -wPos.x, wPos.yz ) );\n} else if ( material == 4 ) { \ngl_FragColor = vec4( 0.5*normalize( vNormal ) + vec3(0.5, 0.5, 0.5), mOpacity );\n} else if ( material == 3 ) { \nfloat w = 0.5;\ngl_FragColor = vec4( w, w, w, mOpacity );\n} else if ( material == 2 ) { \nvec3 normal = normalize( vNormal );\nvec3 viewPosition = normalize( vViewPosition );",
-n?"vec4 pointDiffuse  = vec4( 0.0, 0.0, 0.0, 0.0 );":"",n?"vec4 pointSpecular = vec4( 0.0, 0.0, 0.0, 0.0 );":"",n?"for( int i = 0; i < MAX_POINT_LIGHTS; i++ ) {":"",n?"vec3 pointVector = normalize( vPointLightVector[ i ] );":"",n?"vec3 pointHalfVector = normalize( vPointLightVector[ i ] + vViewPosition );":"",n?"float pointDotNormalHalf = dot( normal, pointHalfVector );":"",n?"float pointDiffuseWeight = max( dot( normal, pointVector ), 0.0 );":"",n?"float pointSpecularWeight = 0.0;":"",n?"if ( pointDotNormalHalf >= 0.0 )":
-"",n?"pointSpecularWeight = pow( pointDotNormalHalf, mShininess );":"",n?"pointDiffuse  += mColor * pointDiffuseWeight;":"",n?"pointSpecular += mSpecular * pointSpecularWeight;":"",n?"}":"",i?"vec4 dirDiffuse  = vec4( 0.0, 0.0, 0.0, 0.0 );":"",i?"vec4 dirSpecular = vec4( 0.0, 0.0, 0.0, 0.0 );":"",i?"for( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {":"",i?"vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );":"",i?"vec3 dirVector = normalize( lDirection.xyz );":"",i?"vec3 dirHalfVector = normalize( lDirection.xyz + vViewPosition );":
-"",i?"float dirDotNormalHalf = dot( normal, dirHalfVector );":"",i?"float dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );":"",i?"float dirSpecularWeight = 0.0;":"",i?"if ( dirDotNormalHalf >= 0.0 )":"",i?"dirSpecularWeight = pow( dirDotNormalHalf, mShininess );":"",i?"dirDiffuse  += mColor * dirDiffuseWeight;":"",i?"dirSpecular += mSpecular * dirSpecularWeight;":"",i?"}":"","vec4 totalLight = mAmbient;",i?"totalLight += dirDiffuse + dirSpecular;":"",n?"totalLight += pointDiffuse + pointSpecular;":
+THREE.Projector=function(){function a(y,n){var i=0,m=1,h=y.z+y.w,z=n.z+n.w,l=-y.z+y.w,o=-n.z+n.w;if(h>=0&&z>=0&&l>=0&&o>=0)return true;else if(h<0&&z<0||l<0&&o<0)return false;else{if(h<0)i=Math.max(i,h/(h-z));else if(z<0)m=Math.min(m,h/(h-z));if(l<0)i=Math.max(i,l/(l-o));else if(o<0)m=Math.min(m,l/(l-o));if(m<i)return false;else{y.lerpSelf(n,i);n.lerpSelf(y,1-m);return true}}}var b=null,d,e,g,j=[],k,f,p=[],c,v,D=[],r=new THREE.Vector4,t=new THREE.Matrix4,u=new THREE.Matrix4,w=new THREE.Vector4,I=
+new THREE.Vector4,F;this.projectScene=function(y,n){var i,m,h,z,l,o,B,A,Q,K,R,T,E,V,J,L,N;b=[];g=f=v=0;n.autoUpdateMatrix&&n.updateMatrix();t.multiply(n.projectionMatrix,n.matrix);B=y.objects;i=0;for(m=B.length;i<m;i++){A=B[i];A.autoUpdateMatrix&&A.updateMatrix();Q=A.matrix;K=A.rotationMatrix;R=A.material;T=A.overdraw;if(A instanceof THREE.Mesh){E=A.geometry.vertices;h=0;for(z=E.length;h<z;h++){V=E[h];V.positionWorld.copy(V.position);Q.multiplyVector3(V.positionWorld);J=V.positionScreen;J.copy(V.positionWorld);
+t.multiplyVector4(J);J.multiplyScalar(1/J.w);V.__visible=J.z>0&&J.z<1}V=A.geometry.faces;h=0;for(z=V.length;h<z;h++){J=V[h];if(J instanceof THREE.Face3){l=E[J.a];o=E[J.b];L=E[J.c];if(l.__visible&&o.__visible&&L.__visible)if(A.doubleSided||A.flipSided!=(L.positionScreen.x-l.positionScreen.x)*(o.positionScreen.y-l.positionScreen.y)-(L.positionScreen.y-l.positionScreen.y)*(o.positionScreen.x-l.positionScreen.x)<0){d=j[g]=j[g]||new THREE.RenderableFace3;d.v1.positionWorld.copy(l.positionWorld);d.v2.positionWorld.copy(o.positionWorld);
+d.v3.positionWorld.copy(L.positionWorld);d.v1.positionScreen.copy(l.positionScreen);d.v2.positionScreen.copy(o.positionScreen);d.v3.positionScreen.copy(L.positionScreen);d.normalWorld.copy(J.normal);K.multiplyVector3(d.normalWorld);d.centroidWorld.copy(J.centroid);Q.multiplyVector3(d.centroidWorld);d.centroidScreen.copy(d.centroidWorld);t.multiplyVector3(d.centroidScreen);L=J.vertexNormals;F=d.vertexNormalsWorld;l=0;for(o=L.length;l<o;l++){N=F[l]=F[l]||new THREE.Vector3;N.copy(L[l]);K.multiplyVector3(N)}d.z=
+d.centroidScreen.z;d.meshMaterial=R;d.faceMaterial=J.material;d.overdraw=T;if(A.geometry.uvs[h]){d.uvs[0]=A.geometry.uvs[h][0];d.uvs[1]=A.geometry.uvs[h][1];d.uvs[2]=A.geometry.uvs[h][2]}b.push(d);g++}}else if(J instanceof THREE.Face4){l=E[J.a];o=E[J.b];L=E[J.c];N=E[J.d];if(l.__visible&&o.__visible&&L.__visible&&N.__visible)if(A.doubleSided||A.flipSided!=((N.positionScreen.x-l.positionScreen.x)*(o.positionScreen.y-l.positionScreen.y)-(N.positionScreen.y-l.positionScreen.y)*(o.positionScreen.x-l.positionScreen.x)<
+0||(o.positionScreen.x-L.positionScreen.x)*(N.positionScreen.y-L.positionScreen.y)-(o.positionScreen.y-L.positionScreen.y)*(N.positionScreen.x-L.positionScreen.x)<0)){d=j[g]=j[g]||new THREE.RenderableFace3;d.v1.positionWorld.copy(l.positionWorld);d.v2.positionWorld.copy(o.positionWorld);d.v3.positionWorld.copy(N.positionWorld);d.v1.positionScreen.copy(l.positionScreen);d.v2.positionScreen.copy(o.positionScreen);d.v3.positionScreen.copy(N.positionScreen);d.normalWorld.copy(J.normal);K.multiplyVector3(d.normalWorld);
+d.centroidWorld.copy(J.centroid);Q.multiplyVector3(d.centroidWorld);d.centroidScreen.copy(d.centroidWorld);t.multiplyVector3(d.centroidScreen);d.z=d.centroidScreen.z;d.meshMaterial=R;d.faceMaterial=J.material;d.overdraw=T;if(A.geometry.uvs[h]){d.uvs[0]=A.geometry.uvs[h][0];d.uvs[1]=A.geometry.uvs[h][1];d.uvs[2]=A.geometry.uvs[h][3]}b.push(d);g++;e=j[g]=j[g]||new THREE.RenderableFace3;e.v1.positionWorld.copy(o.positionWorld);e.v2.positionWorld.copy(L.positionWorld);e.v3.positionWorld.copy(N.positionWorld);
+e.v1.positionScreen.copy(o.positionScreen);e.v2.positionScreen.copy(L.positionScreen);e.v3.positionScreen.copy(N.positionScreen);e.normalWorld.copy(d.normalWorld);e.centroidWorld.copy(d.centroidWorld);e.centroidScreen.copy(d.centroidScreen);e.z=e.centroidScreen.z;e.meshMaterial=R;e.faceMaterial=J.material;e.overdraw=T;if(A.geometry.uvs[h]){e.uvs[0]=A.geometry.uvs[h][1];e.uvs[1]=A.geometry.uvs[h][2];e.uvs[2]=A.geometry.uvs[h][3]}b.push(e);g++}}}}else if(A instanceof THREE.Line){u.multiply(t,Q);E=A.geometry.vertices;
+V=E[0];V.positionScreen.copy(V.position);u.multiplyVector4(V.positionScreen);h=1;for(z=E.length;h<z;h++){l=E[h];l.positionScreen.copy(l.position);u.multiplyVector4(l.positionScreen);o=E[h-1];w.copy(l.positionScreen);I.copy(o.positionScreen);if(a(w,I)){w.multiplyScalar(1/w.w);I.multiplyScalar(1/I.w);k=p[f]=p[f]||new THREE.RenderableLine;k.v1.positionScreen.copy(w);k.v2.positionScreen.copy(I);k.z=Math.max(w.z,I.z);k.material=A.material;b.push(k);f++}}}else if(A instanceof THREE.Particle){r.set(A.position.x,
+A.position.y,A.position.z,1);t.multiplyVector4(r);r.z/=r.w;if(r.z>0&&r.z<1){c=D[v]=D[v]||new THREE.RenderableParticle;c.x=r.x/r.w;c.y=r.y/r.w;c.z=r.z;c.rotation=A.rotation.z;c.scale.x=A.scale.x*Math.abs(c.x-(r.x+n.projectionMatrix.n11)/(r.w+n.projectionMatrix.n14));c.scale.y=A.scale.y*Math.abs(c.y-(r.y+n.projectionMatrix.n22)/(r.w+n.projectionMatrix.n24));c.material=A.material;b.push(c);v++}}}b.sort(function(Y,P){return P.z-Y.z});return b};this.unprojectVector=function(y,n){var i=new THREE.Matrix4;
+i.multiply(THREE.Matrix4.makeInvert(n.matrix),THREE.Matrix4.makeInvert(n.projectionMatrix));i.multiplyVector3(y);return y}};
+THREE.DOMRenderer=function(){THREE.Renderer.call(this);var a=null,b=new THREE.Projector,d,e,g,j;this.domElement=document.createElement("div");this.setSize=function(k,f){d=k;e=f;g=d/2;j=e/2};this.render=function(k,f){var p,c,v,D,r,t,u,w;a=b.projectScene(k,f);p=0;for(c=a.length;p<c;p++){r=a[p];if(r instanceof THREE.RenderableParticle){u=r.x*g+g;w=r.y*j+j;v=0;for(D=r.material.length;v<D;v++){t=r.material[v];if(t instanceof THREE.ParticleDOMMaterial){t=t.domElement;t.style.left=u+"px";t.style.top=w+"px"}}}}}};
+THREE.CanvasRenderer=function(){var a=null,b=new THREE.Projector,d=document.createElement("canvas"),e,g,j,k,f=d.getContext("2d"),p=1,c=0,v=null,D=null,r=1,t=Math.min,u=Math.max,w,I,F,y,n,i,m,h,z,l=new THREE.Color,o=new THREE.Color,B=new THREE.Color,A=new THREE.Color,Q=new THREE.Color,K,R,T,E,V,J,L,N,Y,P,M=new THREE.Rectangle,W=new THREE.Rectangle,q=new THREE.Rectangle,s=false,x=new THREE.Color,H=new THREE.Color,U=new THREE.Color,ba=new THREE.Color,ga=Math.PI*2,$=new THREE.Vector3,ka,pa,Da,da,qa,wa,
+na=16;ka=document.createElement("canvas");ka.width=ka.height=2;pa=ka.getContext("2d");pa.fillStyle="rgba(0,0,0,1)";pa.fillRect(0,0,2,2);Da=pa.getImageData(0,0,2,2);da=Da.data;qa=document.createElement("canvas");qa.width=qa.height=na;wa=qa.getContext("2d");wa.translate(-na/2,-na/2);wa.scale(na,na);na--;this.domElement=d;this.autoClear=true;this.setSize=function(ia,xa){e=ia;g=xa;j=e/2;k=g/2;d.width=e;d.height=g;M.set(-j,-k,j,k)};this.clear=function(){if(!W.isEmpty()){W.inflate(1);W.minSelf(M);f.clearRect(W.getX(),
+W.getY(),W.getWidth(),W.getHeight());W.empty()}};this.render=function(ia,xa){function Ma(C){var X,S,G,O=C.lights;H.setRGB(0,0,0);U.setRGB(0,0,0);ba.setRGB(0,0,0);C=0;for(X=O.length;C<X;C++){S=O[C];G=S.color;if(S instanceof THREE.AmbientLight){H.r+=G.r;H.g+=G.g;H.b+=G.b}else if(S instanceof THREE.DirectionalLight){U.r+=G.r;U.g+=G.g;U.b+=G.b}else if(S instanceof THREE.PointLight){ba.r+=G.r;ba.g+=G.g;ba.b+=G.b}}}function ya(C,X,S,G){var O,Z,ca,ea,fa=C.lights;C=0;for(O=fa.length;C<O;C++){Z=fa[C];ca=Z.color;
+ea=Z.intensity;if(Z instanceof THREE.DirectionalLight){Z=S.dot(Z.position)*ea;if(Z>0){G.r+=ca.r*Z;G.g+=ca.g*Z;G.b+=ca.b*Z}}else if(Z instanceof THREE.PointLight){$.sub(Z.position,X);$.normalize();Z=S.dot($)*ea;if(Z>0){G.r+=ca.r*Z;G.g+=ca.g*Z;G.b+=ca.b*Z}}}}function Na(C,X,S){if(S.opacity!=0){Ea(S.opacity);za(S.blending);var G,O,Z,ca,ea,fa;if(S instanceof THREE.ParticleBasicMaterial){if(S.map){ca=S.map;ea=ca.width>>1;fa=ca.height>>1;O=X.scale.x*j;Z=X.scale.y*k;S=O*ea;G=Z*fa;q.set(C.x-S,C.y-G,C.x+S,
+C.y+G);if(M.instersects(q)){f.save();f.translate(C.x,C.y);f.rotate(-X.rotation);f.scale(O,-Z);f.translate(-ea,-fa);f.drawImage(ca,0,0);f.restore()}}}else if(S instanceof THREE.ParticleCircleMaterial){if(s){x.r=H.r+U.r+ba.r;x.g=H.g+U.g+ba.g;x.b=H.b+U.b+ba.b;l.r=S.color.r*x.r;l.g=S.color.g*x.g;l.b=S.color.b*x.b;l.updateStyleString()}else l.__styleString=S.color.__styleString;S=X.scale.x*j;G=X.scale.y*k;q.set(C.x-S,C.y-G,C.x+S,C.y+G);if(M.instersects(q)){O=l.__styleString;if(D!=O)f.fillStyle=D=O;f.save();
+f.translate(C.x,C.y);f.rotate(-X.rotation);f.scale(S,G);f.beginPath();f.arc(0,0,1,0,ga,true);f.closePath();f.fill();f.restore()}}}}function Oa(C,X,S,G){if(G.opacity!=0){Ea(G.opacity);za(G.blending);f.beginPath();f.moveTo(C.positionScreen.x,C.positionScreen.y);f.lineTo(X.positionScreen.x,X.positionScreen.y);f.closePath();if(G instanceof THREE.LineBasicMaterial){l.__styleString=G.color.__styleString;C=G.linewidth;if(r!=C)f.lineWidth=r=C;C=l.__styleString;if(v!=C)f.strokeStyle=v=C;f.stroke();q.inflate(G.linewidth*
+2)}}}function Ia(C,X,S,G,O,Z){if(O.opacity!=0){Ea(O.opacity);za(O.blending);y=C.positionScreen.x;n=C.positionScreen.y;i=X.positionScreen.x;m=X.positionScreen.y;h=S.positionScreen.x;z=S.positionScreen.y;f.beginPath();f.moveTo(y,n);f.lineTo(i,m);f.lineTo(h,z);f.lineTo(y,n);f.closePath();if(O instanceof THREE.MeshBasicMaterial)if(O.map)O.map.image.loaded&&O.map.mapping instanceof THREE.UVMapping&&ra(y,n,i,m,h,z,O.map.image,G.uvs[0].u,G.uvs[0].v,G.uvs[1].u,G.uvs[1].v,G.uvs[2].u,G.uvs[2].v);else if(O.env_map){if(O.env_map.image.loaded)if(O.env_map.mapping instanceof
+THREE.SphericalReflectionMapping){C=xa.matrix;$.copy(G.vertexNormalsWorld[0]);V=($.x*C.n11+$.y*C.n12+$.z*C.n13)*0.5+0.5;J=-($.x*C.n21+$.y*C.n22+$.z*C.n23)*0.5+0.5;$.copy(G.vertexNormalsWorld[1]);L=($.x*C.n11+$.y*C.n12+$.z*C.n13)*0.5+0.5;N=-($.x*C.n21+$.y*C.n22+$.z*C.n23)*0.5+0.5;$.copy(G.vertexNormalsWorld[2]);Y=($.x*C.n11+$.y*C.n12+$.z*C.n13)*0.5+0.5;P=-($.x*C.n21+$.y*C.n22+$.z*C.n23)*0.5+0.5;ra(y,n,i,m,h,z,O.env_map.image,V,J,L,N,Y,P)}}else O.wireframe?Aa(O.color.__styleString,O.wireframe_linewidth):
+Ba(O.color.__styleString);else if(O instanceof THREE.MeshLambertMaterial){if(O.map&&!O.wireframe){O.map.mapping instanceof THREE.UVMapping&&ra(y,n,i,m,h,z,O.map.image,G.uvs[0].u,G.uvs[0].v,G.uvs[1].u,G.uvs[1].v,G.uvs[2].u,G.uvs[2].v);za(THREE.SubtractiveBlending)}if(s)if(!O.wireframe&&O.shading==THREE.SmoothShading&&G.vertexNormalsWorld.length==3){o.r=B.r=A.r=H.r;o.g=B.g=A.g=H.g;o.b=B.b=A.b=H.b;ya(Z,G.v1.positionWorld,G.vertexNormalsWorld[0],o);ya(Z,G.v2.positionWorld,G.vertexNormalsWorld[1],B);ya(Z,
+G.v3.positionWorld,G.vertexNormalsWorld[2],A);Q.r=(B.r+A.r)*0.5;Q.g=(B.g+A.g)*0.5;Q.b=(B.b+A.b)*0.5;E=Ja(o,B,A,Q);ra(y,n,i,m,h,z,E,0,0,1,0,0,1)}else{x.r=H.r;x.g=H.g;x.b=H.b;ya(Z,G.centroidWorld,G.normalWorld,x);l.r=O.color.r*x.r;l.g=O.color.g*x.g;l.b=O.color.b*x.b;l.updateStyleString();O.wireframe?Aa(l.__styleString,O.wireframe_linewidth):Ba(l.__styleString)}else O.wireframe?Aa(O.color.__styleString,O.wireframe_linewidth):Ba(O.color.__styleString)}else if(O instanceof THREE.MeshDepthMaterial){K=O.__2near;
+R=O.__farPlusNear;T=O.__farMinusNear;o.r=o.g=o.b=1-K/(R-C.positionScreen.z*T);B.r=B.g=B.b=1-K/(R-X.positionScreen.z*T);A.r=A.g=A.b=1-K/(R-S.positionScreen.z*T);Q.r=(B.r+A.r)*0.5;Q.g=(B.g+A.g)*0.5;Q.b=(B.b+A.b)*0.5;E=Ja(o,B,A,Q);ra(y,n,i,m,h,z,E,0,0,1,0,0,1)}else if(O instanceof THREE.MeshNormalMaterial){l.r=Fa(G.normalWorld.x);l.g=Fa(G.normalWorld.y);l.b=Fa(G.normalWorld.z);l.updateStyleString();O.wireframe?Aa(l.__styleString,O.wireframe_linewidth):Ba(l.__styleString)}}}function Aa(C,X){if(v!=C)f.strokeStyle=
+v=C;if(r!=X)f.lineWidth=r=X;f.stroke();q.inflate(X*2)}function Ba(C){if(D!=C)f.fillStyle=D=C;f.fill()}function ra(C,X,S,G,O,Z,ca,ea,fa,sa,la,ta,ua){var ma,ja;ma=ca.width-1;ja=ca.height-1;ea*=ma;fa*=ja;sa*=ma;la*=ja;ta*=ma;ua*=ja;S-=C;G-=X;O-=C;Z-=X;sa-=ea;la-=fa;ta-=ea;ua-=fa;ja=1/(sa*ua-ta*la);ma=(ua*S-la*O)*ja;la=(ua*G-la*Z)*ja;S=(sa*O-ta*S)*ja;G=(sa*Z-ta*G)*ja;C=C-ma*ea-S*fa;X=X-la*ea-G*fa;f.save();f.transform(ma,la,S,G,C,X);f.clip();f.drawImage(ca,0,0);f.restore()}function Ea(C){if(p!=C)f.globalAlpha=
+p=C}function za(C){if(c!=C){switch(C){case THREE.NormalBlending:f.globalCompositeOperation="source-over";break;case THREE.AdditiveBlending:f.globalCompositeOperation="lighter";break;case THREE.SubtractiveBlending:f.globalCompositeOperation="darker"}c=C}}function Ja(C,X,S,G){da[0]=u(0,t(255,~~(C.r*255)));da[1]=u(0,t(255,~~(C.g*255)));da[2]=u(0,t(255,~~(C.b*255)));da[4]=u(0,t(255,~~(X.r*255)));da[5]=u(0,t(255,~~(X.g*255)));da[6]=u(0,t(255,~~(X.b*255)));da[8]=u(0,t(255,~~(S.r*255)));da[9]=u(0,t(255,
+~~(S.g*255)));da[10]=u(0,t(255,~~(S.b*255)));da[12]=u(0,t(255,~~(G.r*255)));da[13]=u(0,t(255,~~(G.g*255)));da[14]=u(0,t(255,~~(G.b*255)));pa.putImageData(Da,0,0);wa.drawImage(ka,0,0);return qa}function Fa(C){return C<0?t((1+C)*0.5,0.5):0.5+t(C*0.5,0.5)}function Ga(C,X){var S=X.x-C.x,G=X.y-C.y,O=1/Math.sqrt(S*S+G*G);S*=O;G*=O;X.x+=S;X.y+=G;C.x-=S;C.y-=G}var Ca,Ka,aa,ha,oa,Ha,La,va;f.setTransform(1,0,0,-1,j,k);this.autoClear&&this.clear();a=b.projectScene(ia,xa);(s=ia.lights.length>0)&&Ma(ia);Ca=0;
+for(Ka=a.length;Ca<Ka;Ca++){aa=a[Ca];q.empty();if(aa instanceof THREE.RenderableParticle){w=aa;w.x*=j;w.y*=k;ha=0;for(oa=aa.material.length;ha<oa;ha++)Na(w,aa,aa.material[ha],ia)}else if(aa instanceof THREE.RenderableLine){w=aa.v1;I=aa.v2;w.positionScreen.x*=j;w.positionScreen.y*=k;I.positionScreen.x*=j;I.positionScreen.y*=k;q.addPoint(w.positionScreen.x,w.positionScreen.y);q.addPoint(I.positionScreen.x,I.positionScreen.y);if(M.instersects(q)){ha=0;for(oa=aa.material.length;ha<oa;)Oa(w,I,aa,aa.material[ha++],
+ia)}}else if(aa instanceof THREE.RenderableFace3){w=aa.v1;I=aa.v2;F=aa.v3;w.positionScreen.x*=j;w.positionScreen.y*=k;I.positionScreen.x*=j;I.positionScreen.y*=k;F.positionScreen.x*=j;F.positionScreen.y*=k;if(aa.overdraw){Ga(w.positionScreen,I.positionScreen);Ga(I.positionScreen,F.positionScreen);Ga(F.positionScreen,w.positionScreen)}q.addPoint(w.positionScreen.x,w.positionScreen.y);q.addPoint(I.positionScreen.x,I.positionScreen.y);q.addPoint(F.positionScreen.x,F.positionScreen.y);if(M.instersects(q)){ha=
+0;for(oa=aa.meshMaterial.length;ha<oa;){va=aa.meshMaterial[ha++];if(va instanceof THREE.MeshFaceMaterial){Ha=0;for(La=aa.faceMaterial.length;Ha<La;)(va=aa.faceMaterial[Ha++])&&Ia(w,I,F,aa,va,ia)}else Ia(w,I,F,aa,va,ia)}}}W.addRectangle(q)}f.setTransform(1,0,0,1,0,0)}};
+THREE.SVGRenderer=function(){function a(J,L,N){var Y,P,M,W;Y=0;for(P=J.lights.length;Y<P;Y++){M=J.lights[Y];if(M instanceof THREE.DirectionalLight){W=L.normalWorld.dot(M.position)*M.intensity;if(W>0){N.r+=M.color.r*W;N.g+=M.color.g*W;N.b+=M.color.b*W}}else if(M instanceof THREE.PointLight){o.sub(M.position,L.centroidWorld);o.normalize();W=L.normalWorld.dot(o)*M.intensity;if(W>0){N.r+=M.color.r*W;N.g+=M.color.g*W;N.b+=M.color.b*W}}}}function b(J,L,N,Y,P,M){K=e(R++);K.setAttribute("d","M "+J.positionScreen.x+
+" "+J.positionScreen.y+" L "+L.positionScreen.x+" "+L.positionScreen.y+" L "+N.positionScreen.x+","+N.positionScreen.y+"z");if(P instanceof THREE.MeshBasicMaterial)n.__styleString=P.color.__styleString;else if(P instanceof THREE.MeshLambertMaterial)if(y){i.r=m.r;i.g=m.g;i.b=m.b;a(M,Y,i);n.r=P.color.r*i.r;n.g=P.color.g*i.g;n.b=P.color.b*i.b;n.updateStyleString()}else n.__styleString=P.color.__styleString;else if(P instanceof THREE.MeshDepthMaterial){l=1-P.__2near/(P.__farPlusNear-Y.z*P.__farMinusNear);
+n.setRGB(l,l,l)}else P instanceof THREE.MeshNormalMaterial&&n.setRGB(g(Y.normalWorld.x),g(Y.normalWorld.y),g(Y.normalWorld.z));P.wireframe?K.setAttribute("style","fill: none; stroke: "+n.__styleString+"; stroke-width: "+P.wireframe_linewidth+"; stroke-opacity: "+P.opacity+"; stroke-linecap: "+P.wireframe_linecap+"; stroke-linejoin: "+P.wireframe_linejoin):K.setAttribute("style","fill: "+n.__styleString+"; fill-opacity: "+P.opacity);f.appendChild(K)}function d(J,L,N,Y,P,M,W){K=e(R++);K.setAttribute("d",
+"M "+J.positionScreen.x+" "+J.positionScreen.y+" L "+L.positionScreen.x+" "+L.positionScreen.y+" L "+N.positionScreen.x+","+N.positionScreen.y+" L "+Y.positionScreen.x+","+Y.positionScreen.y+"z");if(M instanceof THREE.MeshBasicMaterial)n.__styleString=M.color.__styleString;else if(M instanceof THREE.MeshLambertMaterial)if(y){i.r=m.r;i.g=m.g;i.b=m.b;a(W,P,i);n.r=M.color.r*i.r;n.g=M.color.g*i.g;n.b=M.color.b*i.b;n.updateStyleString()}else n.__styleString=M.color.__styleString;else if(M instanceof THREE.MeshDepthMaterial){l=
+1-M.__2near/(M.__farPlusNear-P.z*M.__farMinusNear);n.setRGB(l,l,l)}else M instanceof THREE.MeshNormalMaterial&&n.setRGB(g(P.normalWorld.x),g(P.normalWorld.y),g(P.normalWorld.z));M.wireframe?K.setAttribute("style","fill: none; stroke: "+n.__styleString+"; stroke-width: "+M.wireframe_linewidth+"; stroke-opacity: "+M.opacity+"; stroke-linecap: "+M.wireframe_linecap+"; stroke-linejoin: "+M.wireframe_linejoin):K.setAttribute("style","fill: "+n.__styleString+"; fill-opacity: "+M.opacity);f.appendChild(K)}
+function e(J){if(B[J]==null){B[J]=document.createElementNS("http://www.w3.org/2000/svg","path");V==0&&B[J].setAttribute("shape-rendering","crispEdges");return B[J]}return B[J]}function g(J){return J<0?Math.min((1+J)*0.5,0.5):0.5+Math.min(J*0.5,0.5)}var j=null,k=new THREE.Projector,f=document.createElementNS("http://www.w3.org/2000/svg","svg"),p,c,v,D,r,t,u,w,I=new THREE.Rectangle,F=new THREE.Rectangle,y=false,n=new THREE.Color(16777215),i=new THREE.Color(16777215),m=new THREE.Color(0),h=new THREE.Color(0),
+z=new THREE.Color(0),l,o=new THREE.Vector3,B=[],A=[],Q=[],K,R,T,E,V=1;this.domElement=f;this.autoClear=true;this.setQuality=function(J){switch(J){case "high":V=1;break;case "low":V=0}};this.setSize=function(J,L){p=J;c=L;v=p/2;D=c/2;f.setAttribute("viewBox",-v+" "+-D+" "+p+" "+c);f.setAttribute("width",p);f.setAttribute("height",c);I.set(-v,-D,v,D)};this.clear=function(){for(;f.childNodes.length>0;)f.removeChild(f.childNodes[0])};this.render=function(J,L){var N,Y,P,M,W,q,s,x;this.autoClear&&this.clear();
+j=k.projectScene(J,L);E=T=R=0;if(y=J.lights.length>0){s=J.lights;m.setRGB(0,0,0);h.setRGB(0,0,0);z.setRGB(0,0,0);N=0;for(Y=s.length;N<Y;N++){P=s[N];M=P.color;if(P instanceof THREE.AmbientLight){m.r+=M.r;m.g+=M.g;m.b+=M.b}else if(P instanceof THREE.DirectionalLight){h.r+=M.r;h.g+=M.g;h.b+=M.b}else if(P instanceof THREE.PointLight){z.r+=M.r;z.g+=M.g;z.b+=M.b}}}N=0;for(Y=j.length;N<Y;N++){s=j[N];F.empty();if(s instanceof THREE.RenderableParticle){r=s;r.x*=v;r.y*=-D;P=0;for(M=s.material.length;P<M;P++)if(x=
+s.material[P]){W=r;q=s;x=x;var H=T++;if(A[H]==null){A[H]=document.createElementNS("http://www.w3.org/2000/svg","circle");V==0&&A[H].setAttribute("shape-rendering","crispEdges")}K=A[H];K.setAttribute("cx",W.x);K.setAttribute("cy",W.y);K.setAttribute("r",q.scale.x*v);if(x instanceof THREE.ParticleCircleMaterial){if(y){i.r=m.r+h.r+z.r;i.g=m.g+h.g+z.g;i.b=m.b+h.b+z.b;n.r=x.color.r*i.r;n.g=x.color.g*i.g;n.b=x.color.b*i.b;n.updateStyleString()}else n=x.color;K.setAttribute("style","fill: "+n.__styleString)}f.appendChild(K)}}else if(s instanceof
+THREE.RenderableLine){r=s.v1;t=s.v2;r.positionScreen.x*=v;r.positionScreen.y*=-D;t.positionScreen.x*=v;t.positionScreen.y*=-D;F.addPoint(r.positionScreen.x,r.positionScreen.y);F.addPoint(t.positionScreen.x,t.positionScreen.y);if(I.instersects(F)){P=0;for(M=s.material.length;P<M;)if(x=s.material[P++]){W=r;q=t;x=x;H=E++;if(Q[H]==null){Q[H]=document.createElementNS("http://www.w3.org/2000/svg","line");V==0&&Q[H].setAttribute("shape-rendering","crispEdges")}K=Q[H];K.setAttribute("x1",W.positionScreen.x);
+K.setAttribute("y1",W.positionScreen.y);K.setAttribute("x2",q.positionScreen.x);K.setAttribute("y2",q.positionScreen.y);if(x instanceof THREE.LineBasicMaterial){n.__styleString=x.color.__styleString;K.setAttribute("style","fill: none; stroke: "+n.__styleString+"; stroke-width: "+x.linewidth+"; stroke-opacity: "+x.opacity+"; stroke-linecap: "+x.linecap+"; stroke-linejoin: "+x.linejoin);f.appendChild(K)}}}}else if(s instanceof THREE.RenderableFace3){r=s.v1;t=s.v2;u=s.v3;r.positionScreen.x*=v;r.positionScreen.y*=
+-D;t.positionScreen.x*=v;t.positionScreen.y*=-D;u.positionScreen.x*=v;u.positionScreen.y*=-D;F.addPoint(r.positionScreen.x,r.positionScreen.y);F.addPoint(t.positionScreen.x,t.positionScreen.y);F.addPoint(u.positionScreen.x,u.positionScreen.y);if(I.instersects(F)){P=0;for(M=s.meshMaterial.length;P<M;){x=s.meshMaterial[P++];if(x instanceof THREE.MeshFaceMaterial){W=0;for(q=s.faceMaterial.length;W<q;)(x=s.faceMaterial[W++])&&b(r,t,u,s,x,J)}else x&&b(r,t,u,s,x,J)}}}else if(s instanceof THREE.RenderableFace4){r=
+s.v1;t=s.v2;u=s.v3;w=s.v4;r.positionScreen.x*=v;r.positionScreen.y*=-D;t.positionScreen.x*=v;t.positionScreen.y*=-D;u.positionScreen.x*=v;u.positionScreen.y*=-D;w.positionScreen.x*=v;w.positionScreen.y*=-D;F.addPoint(r.positionScreen.x,r.positionScreen.y);F.addPoint(t.positionScreen.x,t.positionScreen.y);F.addPoint(u.positionScreen.x,u.positionScreen.y);F.addPoint(w.positionScreen.x,w.positionScreen.y);if(I.instersects(F)){P=0;for(M=s.meshMaterial.length;P<M;){x=s.meshMaterial[P++];if(x instanceof
+THREE.MeshFaceMaterial){W=0;for(q=s.faceMaterial.length;W<q;)(x=s.faceMaterial[W++])&&d(r,t,u,w,s,x,J)}else x&&d(r,t,u,w,s,x,J)}}}}}};
+THREE.WebGLRenderer=function(a){function b(i,m){var h=c.createProgram();c.attachShader(h,k("fragment","#ifdef GL_ES\nprecision highp float;\n#endif\n"+i));c.attachShader(h,k("vertex","uniform mat4 objectMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform vec3 cameraPosition;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\n"+m));c.linkProgram(h);c.getProgramParameter(h,c.LINK_STATUS)||alert("Could not initialise shaders\nVALIDATE_STATUS: "+c.getProgramParameter(h,
+c.VALIDATE_STATUS)+", gl error ["+c.getError()+"]");h.uniforms={};h.attributes={};return h}function d(i,m){if(i.image.length==6){if(!i.image.__webGLTextureCube&&!i.image.__cubeMapInitialized&&i.image.loadCount==6){i.image.__webGLTextureCube=c.createTexture();c.bindTexture(c.TEXTURE_CUBE_MAP,i.image.__webGLTextureCube);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_WRAP_S,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_WRAP_T,c.CLAMP_TO_EDGE);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_MAG_FILTER,
+c.LINEAR);c.texParameteri(c.TEXTURE_CUBE_MAP,c.TEXTURE_MIN_FILTER,c.LINEAR_MIPMAP_LINEAR);for(var h=0;h<6;++h)c.texImage2D(c.TEXTURE_CUBE_MAP_POSITIVE_X+h,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,i.image[h]);c.generateMipmap(c.TEXTURE_CUBE_MAP);c.bindTexture(c.TEXTURE_CUBE_MAP,null);i.image.__cubeMapInitialized=true}c.activeTexture(c.TEXTURE0+m);c.bindTexture(c.TEXTURE_CUBE_MAP,i.image.__webGLTextureCube)}}function e(i,m){if(!i.__webGLTexture&&i.image.loaded){i.__webGLTexture=c.createTexture();c.bindTexture(c.TEXTURE_2D,
+i.__webGLTexture);c.texImage2D(c.TEXTURE_2D,0,c.RGBA,c.RGBA,c.UNSIGNED_BYTE,i.image);c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_S,f(i.wrap_s));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_WRAP_T,f(i.wrap_t));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MAG_FILTER,f(i.mag_filter));c.texParameteri(c.TEXTURE_2D,c.TEXTURE_MIN_FILTER,f(i.min_filter));c.generateMipmap(c.TEXTURE_2D);c.bindTexture(c.TEXTURE_2D,null)}c.activeTexture(c.TEXTURE0+m);c.bindTexture(c.TEXTURE_2D,i.__webGLTexture)}function g(i,m){var h,z,l;
+h=0;for(z=m.length;h<z;h++){l=m[h];i.uniforms[l]=c.getUniformLocation(i,l)}}function j(i,m){var h,z,l;h=0;for(z=m.length;h<z;h++){l=m[h];i.attributes[l]=c.getAttribLocation(i,l);i.attributes[l]>=0&&c.enableVertexAttribArray(i.attributes[l])}}function k(i,m){var h;if(i=="fragment")h=c.createShader(c.FRAGMENT_SHADER);else if(i=="vertex")h=c.createShader(c.VERTEX_SHADER);c.shaderSource(h,m);c.compileShader(h);if(!c.getShaderParameter(h,c.COMPILE_STATUS)){alert(c.getShaderInfoLog(h));return null}return h}
+function f(i){switch(i){case THREE.RepeatWrapping:return c.REPEAT;case THREE.ClampToEdgeWrapping:return c.CLAMP_TO_EDGE;case THREE.MirroredRepeatWrapping:return c.MIRRORED_REPEAT;case THREE.NearestFilter:return c.NEAREST;case THREE.NearestMipMapNearestFilter:return c.NEAREST_MIPMAP_NEAREST;case THREE.NearestMipMapLinearFilter:return c.NEAREST_MIPMAP_LINEAR;case THREE.LinearFilter:return c.LINEAR;case THREE.LinearMipMapNearestFilter:return c.LINEAR_MIPMAP_NEAREST;case THREE.LinearMipMapLinearFilter:return c.LINEAR_MIPMAP_LINEAR}return 0}
+var p=document.createElement("canvas"),c,v,D,r=new THREE.Matrix4,t,u=new Float32Array(16),w=new Float32Array(16),I=new Float32Array(16),F=new Float32Array(9),y=new Float32Array(16);a=function(i,m){if(i){var h,z,l,o=pointLights=maxDirLights=maxPointLights=0;h=0;for(z=i.lights.length;h<z;h++){l=i.lights[h];l instanceof THREE.DirectionalLight&&o++;l instanceof THREE.PointLight&&pointLights++}if(pointLights+o<=m){maxDirLights=o;maxPointLights=pointLights}else{maxDirLights=Math.ceil(m*o/(pointLights+o));
+maxPointLights=m-maxDirLights}return{directional:maxDirLights,point:maxPointLights}}return{directional:1,point:m-1}}(a,4);this.domElement=p;this.autoClear=true;try{c=p.getContext("experimental-webgl",{antialias:true})}catch(n){}if(!c){alert("WebGL not supported");throw"cannot create webgl context";}c.clearColor(0,0,0,1);c.clearDepth(1);c.enable(c.DEPTH_TEST);c.depthFunc(c.LEQUAL);c.frontFace(c.CCW);c.cullFace(c.BACK);c.enable(c.CULL_FACE);c.enable(c.BLEND);c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA);
+c.clearColor(0,0,0,0);v=D=function(i,m){var h=[i?"#define MAX_DIR_LIGHTS "+i:"",m?"#define MAX_POINT_LIGHTS "+m:"","uniform bool enableLighting;\nuniform bool useRefract;\nuniform int pointLightNumber;\nuniform int directionalLightNumber;\nuniform vec3 ambientLightColor;",i?"uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];":"",i?"uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];":"",m?"uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];":"",m?"uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];":
+"","uniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nvarying vec3 vNormal;\nvarying vec2 vUv;\nvarying vec3 vLightWeighting;",m?"varying vec3 vPointLightVector[ MAX_POINT_LIGHTS ];":"","varying vec3 vViewPosition;\nvarying vec3 vReflect;\nuniform float mRefractionRatio;\nvoid main(void) {\nvec4 mPosition = objectMatrix * vec4( position, 1.0 );\nvViewPosition = cameraPosition - mPosition.xyz;\nvec3 nWorld = mat3( objectMatrix[0].xyz, objectMatrix[1].xyz, objectMatrix[2].xyz ) * normal;\nvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\nvec3 transformedNormal = normalize( normalMatrix * normal );\nif ( !enableLighting ) {\nvLightWeighting = vec3( 1.0, 1.0, 1.0 );\n} else {\nvLightWeighting = ambientLightColor;",
+i?"for( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {":"",i?"vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );":"",i?"float directionalLightWeighting = max( dot( transformedNormal, normalize(lDirection.xyz ) ), 0.0 );":"",i?"vLightWeighting += directionalLightColor[ i ] * directionalLightWeighting;":"",i?"}":"",m?"for( int i = 0; i < MAX_POINT_LIGHTS; i++ ) {":"",m?"vec4 lPosition = viewMatrix * vec4( pointLightPosition[ i ], 1.0 );":"",m?"vPointLightVector[ i ] = normalize( lPosition.xyz - mvPosition.xyz );":
+"",m?"float pointLightWeighting = max( dot( transformedNormal, vPointLightVector[ i ] ), 0.0 );":"",m?"vLightWeighting += pointLightColor[ i ] * pointLightWeighting;":"",m?"}":"","}\nvNormal = transformedNormal;\nvUv = uv;\nif ( useRefract ) {\nvReflect = refract( normalize(mPosition.xyz - cameraPosition), normalize(nWorld.xyz), mRefractionRatio );\n} else {\nvReflect = reflect( normalize(mPosition.xyz - cameraPosition), normalize(nWorld.xyz) );\n}\ngl_Position = projectionMatrix * mvPosition;\n}"].join("\n"),
+z=[i?"#define MAX_DIR_LIGHTS "+i:"",m?"#define MAX_POINT_LIGHTS "+m:"","uniform int material;\nuniform bool enableMap;\nuniform bool enableCubeMap;\nuniform bool mixEnvMap;\nuniform samplerCube tCube;\nuniform float mReflectivity;\nuniform sampler2D tMap;\nuniform vec4 mColor;\nuniform float mOpacity;\nuniform vec4 mAmbient;\nuniform vec4 mSpecular;\nuniform float mShininess;\nuniform float m2Near;\nuniform float mFarPlusNear;\nuniform float mFarMinusNear;\nuniform int pointLightNumber;\nuniform int directionalLightNumber;",
+i?"uniform mat4 viewMatrix;":"",i?"uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];":"","varying vec3 vNormal;\nvarying vec2 vUv;\nvarying vec3 vLightWeighting;",m?"varying vec3 vPointLightVector[ MAX_POINT_LIGHTS ];":"","varying vec3 vViewPosition;\nvarying vec3 vReflect;\nuniform vec3 cameraPosition;\nvoid main() {\nvec4 mapColor = vec4( 1.0, 1.0, 1.0, 1.0 );\nvec4 cubeColor = vec4( 1.0, 1.0, 1.0, 1.0 );\nif ( enableMap ) {\nmapColor = texture2D( tMap, vUv );\n}\nif ( enableCubeMap ) {\ncubeColor = textureCube( tCube, vec3( -vReflect.x, vReflect.yz ) );\n}\nif ( material == 5 ) { \nvec3 wPos = cameraPosition - vViewPosition;\ngl_FragColor = textureCube( tCube, vec3( -wPos.x, wPos.yz ) );\n} else if ( material == 4 ) { \ngl_FragColor = vec4( 0.5*normalize( vNormal ) + vec3(0.5, 0.5, 0.5), mOpacity );\n} else if ( material == 3 ) { \nfloat w = 0.5;\ngl_FragColor = vec4( w, w, w, mOpacity );\n} else if ( material == 2 ) { \nvec3 normal = normalize( vNormal );\nvec3 viewPosition = normalize( vViewPosition );",
+m?"vec4 pointDiffuse  = vec4( 0.0, 0.0, 0.0, 0.0 );":"",m?"vec4 pointSpecular = vec4( 0.0, 0.0, 0.0, 0.0 );":"",m?"for( int i = 0; i < MAX_POINT_LIGHTS; i++ ) {":"",m?"vec3 pointVector = normalize( vPointLightVector[ i ] );":"",m?"vec3 pointHalfVector = normalize( vPointLightVector[ i ] + vViewPosition );":"",m?"float pointDotNormalHalf = dot( normal, pointHalfVector );":"",m?"float pointDiffuseWeight = max( dot( normal, pointVector ), 0.0 );":"",m?"float pointSpecularWeight = 0.0;":"",m?"if ( pointDotNormalHalf >= 0.0 )":
+"",m?"pointSpecularWeight = pow( pointDotNormalHalf, mShininess );":"",m?"pointDiffuse  += mColor * pointDiffuseWeight;":"",m?"pointSpecular += mSpecular * pointSpecularWeight;":"",m?"}":"",i?"vec4 dirDiffuse  = vec4( 0.0, 0.0, 0.0, 0.0 );":"",i?"vec4 dirSpecular = vec4( 0.0, 0.0, 0.0, 0.0 );":"",i?"for( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {":"",i?"vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );":"",i?"vec3 dirVector = normalize( lDirection.xyz );":"",i?"vec3 dirHalfVector = normalize( lDirection.xyz + vViewPosition );":
+"",i?"float dirDotNormalHalf = dot( normal, dirHalfVector );":"",i?"float dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );":"",i?"float dirSpecularWeight = 0.0;":"",i?"if ( dirDotNormalHalf >= 0.0 )":"",i?"dirSpecularWeight = pow( dirDotNormalHalf, mShininess );":"",i?"dirDiffuse  += mColor * dirDiffuseWeight;":"",i?"dirSpecular += mSpecular * dirSpecularWeight;":"",i?"}":"","vec4 totalLight = mAmbient;",i?"totalLight += dirDiffuse + dirSpecular;":"",m?"totalLight += pointDiffuse + pointSpecular;":
 "","if ( mixEnvMap ) {\ngl_FragColor = vec4( mix( mapColor.rgb * totalLight.xyz * vLightWeighting, cubeColor.rgb, mReflectivity ), mapColor.a );\n} else {\ngl_FragColor = vec4( mapColor.rgb * cubeColor.rgb * totalLight.xyz * vLightWeighting, mapColor.a );\n}\n} else if ( material == 1 ) {\nif ( mixEnvMap ) {\ngl_FragColor = vec4( mix( mColor.rgb * mapColor.rgb * vLightWeighting, cubeColor.rgb, mReflectivity ), mColor.a * mapColor.a );\n} else {\ngl_FragColor = vec4( mColor.rgb * mapColor.rgb * cubeColor.rgb * vLightWeighting, mColor.a * mapColor.a );\n}\n} else {\nif ( mixEnvMap ) {\ngl_FragColor = mix( mColor * mapColor, cubeColor, mReflectivity );\n} else {\ngl_FragColor = mColor * mapColor * cubeColor;\n}\n}\n}"].join("\n");
-h=b(x,h);c.useProgram(h);f(h,["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition","enableLighting","ambientLightColor","material","mColor","mAmbient","mSpecular","mShininess","mOpacity","enableMap","tMap","enableCubeMap","tCube","mixEnvMap","mReflectivity","mRefractionRatio","useRefract","m2Near","mFarPlusNear","mFarMinusNear"]);i&&f(h,["directionalLightNumber","directionalLightColor","directionalLightDirection"]);n&&f(h,["pointLightNumber","pointLightColor",
-"pointLightPosition"]);c.uniform1i(h.uniforms.enableMap,0);c.uniform1i(h.uniforms.tMap,0);c.uniform1i(h.uniforms.enableCubeMap,0);c.uniform1i(h.uniforms.tCube,1);c.uniform1i(h.uniforms.mixEnvMap,0);c.uniform1i(h.uniforms.useRefract,0);j(h,["position","normal","uv"]);return h}(a.directional,a.point);this.setSize=function(i,n){p.width=i;p.height=n;c.viewport(0,0,p.width,p.height)};this.clear=function(){c.clear(c.COLOR_BUFFER_BIT|c.DEPTH_BUFFER_BIT)};this.setupLights=function(i,n){var h,x,m,l,B,C=[],
-Q=[],J=[];l=[];B=[];c.uniform1i(i.uniforms.enableLighting,n.length);h=0;for(x=n.length;h<x;h++){m=n[h];if(m instanceof THREE.AmbientLight)C.push(m);else if(m instanceof THREE.DirectionalLight)J.push(m);else m instanceof THREE.PointLight&&Q.push(m)}h=m=l=B=0;for(x=C.length;h<x;h++){m+=C[h].color.r;l+=C[h].color.g;B+=C[h].color.b}c.uniform3f(i.uniforms.ambientLightColor,m,l,B);l=[];B=[];h=0;for(x=J.length;h<x;h++){m=J[h];l.push(m.color.r*m.intensity);l.push(m.color.g*m.intensity);l.push(m.color.b*m.intensity);
-B.push(m.position.x);B.push(m.position.y);B.push(m.position.z)}if(J.length){c.uniform1i(i.uniforms.directionalLightNumber,J.length);c.uniform3fv(i.uniforms.directionalLightDirection,B);c.uniform3fv(i.uniforms.directionalLightColor,l)}l=[];B=[];h=0;for(x=Q.length;h<x;h++){m=Q[h];l.push(m.color.r*m.intensity);l.push(m.color.g*m.intensity);l.push(m.color.b*m.intensity);B.push(m.position.x);B.push(m.position.y);B.push(m.position.z)}if(Q.length){c.uniform1i(i.uniforms.pointLightNumber,Q.length);c.uniform3fv(i.uniforms.pointLightPosition,
-B);c.uniform3fv(i.uniforms.pointLightColor,l)}};this.createBuffers=function(i,n){var h,x,m,l,B,C,Q,J,P=[],S=[],E=[],T=[],D=[],I=0,H=i.geometry.geometryChunks[n],V;m=false;h=0;for(x=i.material.length;h<x;h++){meshMaterial=i.material[h];if(meshMaterial instanceof THREE.MeshFaceMaterial){B=0;for(V=H.material.length;B<V;B++)if(H.material[B]&&H.material[B].shading!=undefined&&H.material[B].shading==THREE.SmoothShading){m=true;break}}else if(meshMaterial&&meshMaterial.shading!=undefined&&meshMaterial.shading==
-THREE.SmoothShading){m=true;break}if(m)break}V=m;h=0;for(x=H.faces.length;h<x;h++){m=H.faces[h];l=i.geometry.faces[m];B=l.vertexNormals;faceNormal=l.normal;m=i.geometry.uvs[m];if(l instanceof THREE.Face3){C=i.geometry.vertices[l.a].position;Q=i.geometry.vertices[l.b].position;J=i.geometry.vertices[l.c].position;E.push(C.x,C.y,C.z);E.push(Q.x,Q.y,Q.z);E.push(J.x,J.y,J.z);if(B.length==3&&V)for(l=0;l<3;l++)T.push(B[l].x,B[l].y,B[l].z);else for(l=0;l<3;l++)T.push(faceNormal.x,faceNormal.y,faceNormal.z);
-if(m)for(l=0;l<3;l++)D.push(m[l].u,m[l].v);P.push(I,I+1,I+2);S.push(I,I+1);S.push(I,I+2);S.push(I+1,I+2);I+=3}else if(l instanceof THREE.Face4){C=i.geometry.vertices[l.a].position;Q=i.geometry.vertices[l.b].position;J=i.geometry.vertices[l.c].position;l=i.geometry.vertices[l.d].position;E.push(C.x,C.y,C.z);E.push(Q.x,Q.y,Q.z);E.push(J.x,J.y,J.z);E.push(l.x,l.y,l.z);if(B.length==4&&V)for(l=0;l<4;l++)T.push(B[l].x,B[l].y,B[l].z);else for(l=0;l<4;l++)T.push(faceNormal.x,faceNormal.y,faceNormal.z);if(m)for(l=
-0;l<4;l++)D.push(m[l].u,m[l].v);P.push(I,I+1,I+2);P.push(I,I+2,I+3);S.push(I,I+1);S.push(I,I+2);S.push(I,I+3);S.push(I+1,I+2);S.push(I+2,I+3);I+=4}}if(E.length){H.__webGLVertexBuffer=c.createBuffer();c.bindBuffer(c.ARRAY_BUFFER,H.__webGLVertexBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(E),c.STATIC_DRAW);H.__webGLNormalBuffer=c.createBuffer();c.bindBuffer(c.ARRAY_BUFFER,H.__webGLNormalBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(T),c.STATIC_DRAW);if(D.length>0){H.__webGLUVBuffer=c.createBuffer();
-c.bindBuffer(c.ARRAY_BUFFER,H.__webGLUVBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(D),c.STATIC_DRAW)}H.__webGLFaceBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,H.__webGLFaceBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(P),c.STATIC_DRAW);H.__webGLLineBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,H.__webGLLineBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(S),c.STATIC_DRAW);H.__webGLFaceCount=P.length;H.__webGLLineCount=S.length}};this.renderBuffer=
-function(i,n,h,x){var m,l,B,C,Q,J,P,S,E;if(h instanceof THREE.MeshShaderMaterial){if(!h.program){h.program=b(h.fragment_shader,h.vertex_shader);P=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition"];for(E in h.uniforms)P.push(E);f(h.program,P);j(h.program,["position","normal","uv"])}E=h.program}else E=F;if(E!=t){c.useProgram(E);t=E}E==F&&this.setupLights(E,n);this.loadCamera(E,i);this.loadMatrices(E);if(h instanceof THREE.MeshShaderMaterial){B=h.wireframe;
-C=h.wireframe_linewidth;i=E;n=h.uniforms;var T;for(m in n){S=n[m].type;P=n[m].value;T=i.uniforms[m];if(S=="i")c.uniform1i(T,P);else if(S=="f")c.uniform1f(T,P);else if(S=="t"){c.uniform1i(T,P);S=n[m].texture;if(S instanceof THREE.TextureCube)d(S,P);else S instanceof THREE.Texture&&e(S,P)}}}if(h instanceof THREE.MeshPhongMaterial||h instanceof THREE.MeshLambertMaterial||h instanceof THREE.MeshBasicMaterial){m=h.color;l=h.opacity;B=h.wireframe;C=h.wireframe_linewidth;Q=h.map;J=h.env_map;n=h.combine==
-THREE.Mix;i=h.reflectivity;S=h.env_map&&h.env_map.mapping==THREE.RefractionMapping;P=h.refraction_ratio;c.uniform4f(E.uniforms.mColor,m.r*l,m.g*l,m.b*l,l);c.uniform1i(E.uniforms.mixEnvMap,n);c.uniform1f(E.uniforms.mReflectivity,i);c.uniform1i(E.uniforms.useRefract,S);c.uniform1f(E.uniforms.mRefractionRatio,P)}if(h instanceof THREE.MeshNormalMaterial){l=h.opacity;c.uniform1f(E.uniforms.mOpacity,l);c.uniform1i(E.uniforms.material,4)}else if(h instanceof THREE.MeshDepthMaterial){l=h.opacity;B=h.wireframe;
-C=h.wireframe_linewidth;c.uniform1f(E.uniforms.mOpacity,l);c.uniform1f(E.uniforms.m2Near,h.__2near);c.uniform1f(E.uniforms.mFarPlusNear,h.__farPlusNear);c.uniform1f(E.uniforms.mFarMinusNear,h.__farMinusNear);c.uniform1i(E.uniforms.material,3)}else if(h instanceof THREE.MeshPhongMaterial){m=h.ambient;i=h.specular;h=h.shininess;c.uniform4f(E.uniforms.mAmbient,m.r,m.g,m.b,l);c.uniform4f(E.uniforms.mSpecular,i.r,i.g,i.b,l);c.uniform1f(E.uniforms.mShininess,h);c.uniform1i(E.uniforms.material,2)}else if(h instanceof
-THREE.MeshLambertMaterial)c.uniform1i(E.uniforms.material,1);else if(h instanceof THREE.MeshBasicMaterial)c.uniform1i(E.uniforms.material,0);else if(h instanceof THREE.MeshCubeMaterial){c.uniform1i(E.uniforms.material,5);J=h.env_map}if(Q){e(Q,0);c.uniform1i(E.uniforms.tMap,0);c.uniform1i(E.uniforms.enableMap,1)}else c.uniform1i(E.uniforms.enableMap,0);if(J){d(J,1);c.uniform1i(E.uniforms.tCube,1);c.uniform1i(E.uniforms.enableCubeMap,1)}else c.uniform1i(E.uniforms.enableCubeMap,0);l=E.attributes;c.bindBuffer(c.ARRAY_BUFFER,
-x.__webGLVertexBuffer);c.vertexAttribPointer(l.position,3,c.FLOAT,false,0,0);c.bindBuffer(c.ARRAY_BUFFER,x.__webGLNormalBuffer);c.vertexAttribPointer(l.normal,3,c.FLOAT,false,0,0);if(l.uv>=0)if(x.__webGLUVBuffer){c.bindBuffer(c.ARRAY_BUFFER,x.__webGLUVBuffer);c.enableVertexAttribArray(l.uv);c.vertexAttribPointer(l.uv,2,c.FLOAT,false,0,0)}else c.disableVertexAttribArray(l.uv);if(B){c.lineWidth(C);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,x.__webGLLineBuffer);c.drawElements(c.LINES,x.__webGLLineCount,c.UNSIGNED_SHORT,
-0)}else{c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,x.__webGLFaceBuffer);c.drawElements(c.TRIANGLES,x.__webGLFaceCount,c.UNSIGNED_SHORT,0)}};this.renderPass=function(i,n,h,x,m,l){var B,C,Q,J,P;Q=0;for(J=h.material.length;Q<J;Q++){B=h.material[Q];if(B instanceof THREE.MeshFaceMaterial){B=0;for(C=x.material.length;B<C;B++)if((P=x.material[B])&&P.blending==m&&P.opacity<1==l){this.setBlending(P.blending);this.renderBuffer(i,n,P,x)}}else if((P=B)&&P.blending==m&&P.opacity<1==l){this.setBlending(P.blending);this.renderBuffer(i,
-n,P,x)}}};this.render=function(i,n){var h,x,m,l,B=i.lights;this.initWebGLObjects(i);this.autoClear&&this.clear();n.autoUpdateMatrix&&n.updateMatrix();h=0;for(x=i.__webGLObjects.length;h<x;h++){m=i.__webGLObjects[h];l=m.object;m=m.buffer;if(l.visible){this.setupMatrices(l,n);this.renderPass(n,B,l,m,THREE.NormalBlending,false)}}h=0;for(x=i.__webGLObjects.length;h<x;h++){m=i.__webGLObjects[h];l=m.object;m=m.buffer;if(l.visible){this.setupMatrices(l,n);this.renderPass(n,B,l,m,THREE.AdditiveBlending,false);
-this.renderPass(n,B,l,m,THREE.SubtractiveBlending,false);this.renderPass(n,B,l,m,THREE.AdditiveBlending,true);this.renderPass(n,B,l,m,THREE.SubtractiveBlending,true);this.renderPass(n,B,l,m,THREE.NormalBlending,true)}}};this.initWebGLObjects=function(i){var n,h,x,m,l,B;if(!i.__webGLObjects){i.__webGLObjects=[];i.__webGLObjectsMap={}}n=0;for(h=i.objects.length;n<h;n++){x=i.objects[n];if(i.__webGLObjectsMap[x.id]==undefined)i.__webGLObjectsMap[x.id]={};B=i.__webGLObjectsMap[x.id];if(x instanceof THREE.Mesh)for(l in x.geometry.geometryChunks){m=
-x.geometry.geometryChunks[l];m.__webGLVertexBuffer||this.createBuffers(x,l);if(B[l]==undefined){m={buffer:m,object:x};i.__webGLObjects.push(m);B[l]=1}}}};this.removeObject=function(i,n){var h,x;for(h=i.__webGLObjects.length-1;h>=0;h--){x=i.__webGLObjects[h].object;n==x&&i.__webGLObjects.splice(h,1)}};this.setupMatrices=function(i,n){i.autoUpdateMatrix&&i.updateMatrix();r.multiply(n.matrix,i.matrix);v.set(n.matrix.flatten());y.set(r.flatten());L.set(n.projectionMatrix.flatten());w=THREE.Matrix4.makeInvert3x3(r).transpose();
-u.set(w.m);A.set(i.matrix.flatten())};this.loadMatrices=function(i){c.uniformMatrix4fv(i.uniforms.viewMatrix,false,v);c.uniformMatrix4fv(i.uniforms.modelViewMatrix,false,y);c.uniformMatrix4fv(i.uniforms.projectionMatrix,false,L);c.uniformMatrix3fv(i.uniforms.normalMatrix,false,u);c.uniformMatrix4fv(i.uniforms.objectMatrix,false,A)};this.loadCamera=function(i,n){c.uniform3f(i.uniforms.cameraPosition,n.position.x,n.position.y,n.position.z)};this.setBlending=function(i){switch(i){case THREE.AdditiveBlending:c.blendEquation(c.FUNC_ADD);
-c.blendFunc(c.ONE,c.ONE);break;case THREE.SubtractiveBlending:c.blendFunc(c.DST_COLOR,c.ZERO);break;default:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA)}};this.setFaceCulling=function(i,n){if(i){!n||n=="ccw"?c.frontFace(c.CCW):c.frontFace(c.CW);if(i=="back")c.cullFace(c.BACK);else i=="front"?c.cullFace(c.FRONT):c.cullFace(c.FRONT_AND_BACK);c.enable(c.CULL_FACE)}else c.disable(c.CULL_FACE)}};
+h=b(z,h);c.useProgram(h);g(h,["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition","enableLighting","ambientLightColor","material","mColor","mAmbient","mSpecular","mShininess","mOpacity","enableMap","tMap","enableCubeMap","tCube","mixEnvMap","mReflectivity","mRefractionRatio","useRefract","m2Near","mFarPlusNear","mFarMinusNear"]);i&&g(h,["directionalLightNumber","directionalLightColor","directionalLightDirection"]);m&&g(h,["pointLightNumber","pointLightColor",
+"pointLightPosition"]);c.uniform1i(h.uniforms.enableMap,0);c.uniform1i(h.uniforms.tMap,0);c.uniform1i(h.uniforms.enableCubeMap,0);c.uniform1i(h.uniforms.tCube,1);c.uniform1i(h.uniforms.mixEnvMap,0);c.uniform1i(h.uniforms.useRefract,0);j(h,["position","normal","uv"]);return h}(a.directional,a.point);this.setSize=function(i,m){p.width=i;p.height=m;c.viewport(0,0,p.width,p.height)};this.clear=function(){c.clear(c.COLOR_BUFFER_BIT|c.DEPTH_BUFFER_BIT)};this.setupLights=function(i,m){var h,z,l,o,B,A=[],
+Q=[],K=[];o=[];B=[];c.uniform1i(i.uniforms.enableLighting,m.length);h=0;for(z=m.length;h<z;h++){l=m[h];if(l instanceof THREE.AmbientLight)A.push(l);else if(l instanceof THREE.DirectionalLight)K.push(l);else l instanceof THREE.PointLight&&Q.push(l)}h=l=o=B=0;for(z=A.length;h<z;h++){l+=A[h].color.r;o+=A[h].color.g;B+=A[h].color.b}c.uniform3f(i.uniforms.ambientLightColor,l,o,B);o=[];B=[];h=0;for(z=K.length;h<z;h++){l=K[h];o.push(l.color.r*l.intensity);o.push(l.color.g*l.intensity);o.push(l.color.b*l.intensity);
+B.push(l.position.x);B.push(l.position.y);B.push(l.position.z)}if(K.length){c.uniform1i(i.uniforms.directionalLightNumber,K.length);c.uniform3fv(i.uniforms.directionalLightDirection,B);c.uniform3fv(i.uniforms.directionalLightColor,o)}o=[];B=[];h=0;for(z=Q.length;h<z;h++){l=Q[h];o.push(l.color.r*l.intensity);o.push(l.color.g*l.intensity);o.push(l.color.b*l.intensity);B.push(l.position.x);B.push(l.position.y);B.push(l.position.z)}if(Q.length){c.uniform1i(i.uniforms.pointLightNumber,Q.length);c.uniform3fv(i.uniforms.pointLightPosition,
+B);c.uniform3fv(i.uniforms.pointLightColor,o)}};this.createBuffers=function(i,m){var h,z,l,o,B,A,Q,K,R=[],T=[],E=[],V=[],J=[],L=0,N=i.geometry.geometryChunks[m],Y;l=false;h=0;for(z=i.material.length;h<z;h++){meshMaterial=i.material[h];if(meshMaterial instanceof THREE.MeshFaceMaterial){B=0;for(Y=N.material.length;B<Y;B++)if(N.material[B]&&N.material[B].shading!=undefined&&N.material[B].shading==THREE.SmoothShading){l=true;break}}else if(meshMaterial&&meshMaterial.shading!=undefined&&meshMaterial.shading==
+THREE.SmoothShading){l=true;break}if(l)break}Y=l;h=0;for(z=N.faces.length;h<z;h++){l=N.faces[h];o=i.geometry.faces[l];B=o.vertexNormals;faceNormal=o.normal;l=i.geometry.uvs[l];if(o instanceof THREE.Face3){A=i.geometry.vertices[o.a].position;Q=i.geometry.vertices[o.b].position;K=i.geometry.vertices[o.c].position;E.push(A.x,A.y,A.z);E.push(Q.x,Q.y,Q.z);E.push(K.x,K.y,K.z);if(B.length==3&&Y)for(o=0;o<3;o++)V.push(B[o].x,B[o].y,B[o].z);else for(o=0;o<3;o++)V.push(faceNormal.x,faceNormal.y,faceNormal.z);
+if(l)for(o=0;o<3;o++)J.push(l[o].u,l[o].v);R.push(L,L+1,L+2);T.push(L,L+1);T.push(L,L+2);T.push(L+1,L+2);L+=3}else if(o instanceof THREE.Face4){A=i.geometry.vertices[o.a].position;Q=i.geometry.vertices[o.b].position;K=i.geometry.vertices[o.c].position;o=i.geometry.vertices[o.d].position;E.push(A.x,A.y,A.z);E.push(Q.x,Q.y,Q.z);E.push(K.x,K.y,K.z);E.push(o.x,o.y,o.z);if(B.length==4&&Y)for(o=0;o<4;o++)V.push(B[o].x,B[o].y,B[o].z);else for(o=0;o<4;o++)V.push(faceNormal.x,faceNormal.y,faceNormal.z);if(l)for(o=
+0;o<4;o++)J.push(l[o].u,l[o].v);R.push(L,L+1,L+2);R.push(L,L+2,L+3);T.push(L,L+1);T.push(L,L+2);T.push(L,L+3);T.push(L+1,L+2);T.push(L+2,L+3);L+=4}}if(E.length){N.__webGLVertexBuffer=c.createBuffer();c.bindBuffer(c.ARRAY_BUFFER,N.__webGLVertexBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(E),c.STATIC_DRAW);N.__webGLNormalBuffer=c.createBuffer();c.bindBuffer(c.ARRAY_BUFFER,N.__webGLNormalBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(V),c.STATIC_DRAW);if(J.length>0){N.__webGLUVBuffer=c.createBuffer();
+c.bindBuffer(c.ARRAY_BUFFER,N.__webGLUVBuffer);c.bufferData(c.ARRAY_BUFFER,new Float32Array(J),c.STATIC_DRAW)}N.__webGLFaceBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,N.__webGLFaceBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(R),c.STATIC_DRAW);N.__webGLLineBuffer=c.createBuffer();c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,N.__webGLLineBuffer);c.bufferData(c.ELEMENT_ARRAY_BUFFER,new Uint16Array(T),c.STATIC_DRAW);N.__webGLFaceCount=R.length;N.__webGLLineCount=T.length}};this.renderBuffer=
+function(i,m,h,z){var l,o,B,A,Q,K,R,T,E;if(h instanceof THREE.MeshShaderMaterial){if(!h.program){h.program=b(h.fragment_shader,h.vertex_shader);R=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition"];for(E in h.uniforms)R.push(E);g(h.program,R);j(h.program,["position","normal","uv"])}E=h.program}else E=D;if(E!=v){c.useProgram(E);v=E}E==D&&this.setupLights(E,m);this.loadCamera(E,i);this.loadMatrices(E);if(h instanceof THREE.MeshShaderMaterial){B=h.wireframe;
+A=h.wireframe_linewidth;i=E;m=h.uniforms;var V;for(l in m){T=m[l].type;R=m[l].value;V=i.uniforms[l];if(T=="i")c.uniform1i(V,R);else if(T=="f")c.uniform1f(V,R);else if(T=="t"){c.uniform1i(V,R);if(T=m[l].texture)T.image instanceof Array&&T.image.length==6?d(T,R):e(T,R)}}}if(h instanceof THREE.MeshPhongMaterial||h instanceof THREE.MeshLambertMaterial||h instanceof THREE.MeshBasicMaterial){l=h.color;o=h.opacity;B=h.wireframe;A=h.wireframe_linewidth;Q=h.map;K=h.env_map;m=h.combine==THREE.MixOperation;
+i=h.reflectivity;T=h.env_map&&h.env_map.mapping instanceof THREE.CubeRefractionMapping;R=h.refraction_ratio;c.uniform4f(E.uniforms.mColor,l.r*o,l.g*o,l.b*o,o);c.uniform1i(E.uniforms.mixEnvMap,m);c.uniform1f(E.uniforms.mReflectivity,i);c.uniform1i(E.uniforms.useRefract,T);c.uniform1f(E.uniforms.mRefractionRatio,R)}if(h instanceof THREE.MeshNormalMaterial){o=h.opacity;c.uniform1f(E.uniforms.mOpacity,o);c.uniform1i(E.uniforms.material,4)}else if(h instanceof THREE.MeshDepthMaterial){o=h.opacity;B=h.wireframe;
+A=h.wireframe_linewidth;c.uniform1f(E.uniforms.mOpacity,o);c.uniform1f(E.uniforms.m2Near,h.__2near);c.uniform1f(E.uniforms.mFarPlusNear,h.__farPlusNear);c.uniform1f(E.uniforms.mFarMinusNear,h.__farMinusNear);c.uniform1i(E.uniforms.material,3)}else if(h instanceof THREE.MeshPhongMaterial){l=h.ambient;i=h.specular;h=h.shininess;c.uniform4f(E.uniforms.mAmbient,l.r,l.g,l.b,o);c.uniform4f(E.uniforms.mSpecular,i.r,i.g,i.b,o);c.uniform1f(E.uniforms.mShininess,h);c.uniform1i(E.uniforms.material,2)}else if(h instanceof
+THREE.MeshLambertMaterial)c.uniform1i(E.uniforms.material,1);else if(h instanceof THREE.MeshBasicMaterial)c.uniform1i(E.uniforms.material,0);else if(h instanceof THREE.MeshCubeMaterial){c.uniform1i(E.uniforms.material,5);K=h.env_map}if(Q){e(Q,0);c.uniform1i(E.uniforms.tMap,0);c.uniform1i(E.uniforms.enableMap,1)}else c.uniform1i(E.uniforms.enableMap,0);if(K){d(K,1);c.uniform1i(E.uniforms.tCube,1);c.uniform1i(E.uniforms.enableCubeMap,1)}else c.uniform1i(E.uniforms.enableCubeMap,0);o=E.attributes;c.bindBuffer(c.ARRAY_BUFFER,
+z.__webGLVertexBuffer);c.vertexAttribPointer(o.position,3,c.FLOAT,false,0,0);c.bindBuffer(c.ARRAY_BUFFER,z.__webGLNormalBuffer);c.vertexAttribPointer(o.normal,3,c.FLOAT,false,0,0);if(o.uv>=0)if(z.__webGLUVBuffer){c.bindBuffer(c.ARRAY_BUFFER,z.__webGLUVBuffer);c.enableVertexAttribArray(o.uv);c.vertexAttribPointer(o.uv,2,c.FLOAT,false,0,0)}else c.disableVertexAttribArray(o.uv);if(B){c.lineWidth(A);c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,z.__webGLLineBuffer);c.drawElements(c.LINES,z.__webGLLineCount,c.UNSIGNED_SHORT,
+0)}else{c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,z.__webGLFaceBuffer);c.drawElements(c.TRIANGLES,z.__webGLFaceCount,c.UNSIGNED_SHORT,0)}};this.renderPass=function(i,m,h,z,l,o){var B,A,Q,K,R;Q=0;for(K=h.material.length;Q<K;Q++){B=h.material[Q];if(B instanceof THREE.MeshFaceMaterial){B=0;for(A=z.material.length;B<A;B++)if((R=z.material[B])&&R.blending==l&&R.opacity<1==o){this.setBlending(R.blending);this.renderBuffer(i,m,R,z)}}else if((R=B)&&R.blending==l&&R.opacity<1==o){this.setBlending(R.blending);this.renderBuffer(i,
+m,R,z)}}};this.render=function(i,m){var h,z,l,o,B=i.lights;this.initWebGLObjects(i);this.autoClear&&this.clear();m.autoUpdateMatrix&&m.updateMatrix();h=0;for(z=i.__webGLObjects.length;h<z;h++){l=i.__webGLObjects[h];o=l.object;l=l.buffer;if(o.visible){this.setupMatrices(o,m);this.renderPass(m,B,o,l,THREE.NormalBlending,false)}}h=0;for(z=i.__webGLObjects.length;h<z;h++){l=i.__webGLObjects[h];o=l.object;l=l.buffer;if(o.visible){this.setupMatrices(o,m);this.renderPass(m,B,o,l,THREE.AdditiveBlending,false);
+this.renderPass(m,B,o,l,THREE.SubtractiveBlending,false);this.renderPass(m,B,o,l,THREE.AdditiveBlending,true);this.renderPass(m,B,o,l,THREE.SubtractiveBlending,true);this.renderPass(m,B,o,l,THREE.NormalBlending,true)}}};this.initWebGLObjects=function(i){var m,h,z,l,o,B;if(!i.__webGLObjects){i.__webGLObjects=[];i.__webGLObjectsMap={}}m=0;for(h=i.objects.length;m<h;m++){z=i.objects[m];if(i.__webGLObjectsMap[z.id]==undefined)i.__webGLObjectsMap[z.id]={};B=i.__webGLObjectsMap[z.id];if(z instanceof THREE.Mesh)for(o in z.geometry.geometryChunks){l=
+z.geometry.geometryChunks[o];l.__webGLVertexBuffer||this.createBuffers(z,o);if(B[o]==undefined){l={buffer:l,object:z};i.__webGLObjects.push(l);B[o]=1}}}};this.removeObject=function(i,m){var h,z;for(h=i.__webGLObjects.length-1;h>=0;h--){z=i.__webGLObjects[h].object;m==z&&i.__webGLObjects.splice(h,1)}};this.setupMatrices=function(i,m){i.autoUpdateMatrix&&i.updateMatrix();r.multiply(m.matrix,i.matrix);u.set(m.matrix.flatten());w.set(r.flatten());I.set(m.projectionMatrix.flatten());t=THREE.Matrix4.makeInvert3x3(r).transpose();
+F.set(t.m);y.set(i.matrix.flatten())};this.loadMatrices=function(i){c.uniformMatrix4fv(i.uniforms.viewMatrix,false,u);c.uniformMatrix4fv(i.uniforms.modelViewMatrix,false,w);c.uniformMatrix4fv(i.uniforms.projectionMatrix,false,I);c.uniformMatrix3fv(i.uniforms.normalMatrix,false,F);c.uniformMatrix4fv(i.uniforms.objectMatrix,false,y)};this.loadCamera=function(i,m){c.uniform3f(i.uniforms.cameraPosition,m.position.x,m.position.y,m.position.z)};this.setBlending=function(i){switch(i){case THREE.AdditiveBlending:c.blendEquation(c.FUNC_ADD);
+c.blendFunc(c.ONE,c.ONE);break;case THREE.SubtractiveBlending:c.blendFunc(c.DST_COLOR,c.ZERO);break;default:c.blendEquation(c.FUNC_ADD);c.blendFunc(c.ONE,c.ONE_MINUS_SRC_ALPHA)}};this.setFaceCulling=function(i,m){if(i){!m||m=="ccw"?c.frontFace(c.CCW):c.frontFace(c.CW);if(i=="back")c.cullFace(c.BACK);else i=="front"?c.cullFace(c.FRONT):c.cullFace(c.FRONT_AND_BACK);c.enable(c.CULL_FACE)}else c.disable(c.CULL_FACE)}};
 THREE.RenderableFace3=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.v3=new THREE.Vertex;this.centroidWorld=new THREE.Vector3;this.centroidScreen=new THREE.Vector3;this.normalWorld=new THREE.Vector3;this.vertexNormalsWorld=[];this.faceMaterial=this.meshMaterial=null;this.overdraw=false;this.uvs=[null,null,null]};THREE.RenderableParticle=function(){this.rotation=this.z=this.y=this.x=null;this.scale=new THREE.Vector2;this.material=null};
 THREE.RenderableLine=function(){this.z=null;this.v1=new THREE.Vertex;this.v2=new THREE.Vertex;this.material=null};
-var GeometryUtils={merge:function(a,b){var d=b instanceof THREE.Mesh,e=a.vertices.length,f=d?b.geometry:b,j=a.vertices,k=f.vertices,g=a.faces,p=f.faces,c=a.uvs;f=f.uvs;d&&b.updateMatrix();for(var t=0,F=k.length;t<F;t++){var r=new THREE.Vertex(k[t].position.clone());d&&b.matrix.multiplyVector3(r.position);j.push(r)}t=0;for(F=p.length;t<F;t++){k=p[t];var w,v=k.vertexNormals;if(k instanceof THREE.Face3)w=new THREE.Face3(k.a+e,k.b+e,k.c+e);else if(k instanceof THREE.Face4)w=new THREE.Face4(k.a+e,k.b+
-e,k.c+e,k.d+e);w.centroid.copy(k.centroid);w.normal.copy(k.normal);d=0;for(j=v.length;d<j;d++){r=v[d];w.vertexNormals.push(r.clone())}w.material=k.material.slice();g.push(w)}t=0;for(F=f.length;t<F;t++){e=f[t];g=[];d=0;for(j=e.length;d<j;d++)g.push(new THREE.UV(e[d].u,e[d].v));c.push(g)}}},ImageUtils={loadTexture:function(a,b){var d=new THREE.Texture(null,b),e=new Image;e.onload=function(){d.image=this;d.loaded=true};e.src=a;return d},loadArray:function(a){var b,d,e=[];b=e.loadCount=0;for(d=a.length;b<
-d;++b){e[b]=new Image;e[b].loaded=0;e[b].onload=function(){e.loadCount+=1;this.loaded=1};e[b].src=a[b]}return e}},SceneUtils={addMesh:function(a,b,d,e,f,j,k,g,p,c){b=new THREE.Mesh(b,c);b.scale.x=b.scale.y=b.scale.z=d;b.position.x=e;b.position.y=f;b.position.z=j;b.rotation.x=k;b.rotation.y=g;b.rotation.z=p;a.addObject(b);return b},addPanoramaCubeWebGL:function(a,b,d){d=new THREE.MeshCubeMaterial({env_map:d});b=new THREE.Mesh(new Cube(b,b,b,1,1,null,true),d);a.addObject(b);return b},addPanoramaCube:function(a,
+var GeometryUtils={merge:function(a,b){var d=b instanceof THREE.Mesh,e=a.vertices.length,g=d?b.geometry:b,j=a.vertices,k=g.vertices,f=a.faces,p=g.faces,c=a.uvs;g=g.uvs;d&&b.updateMatrix();for(var v=0,D=k.length;v<D;v++){var r=new THREE.Vertex(k[v].position.clone());d&&b.matrix.multiplyVector3(r.position);j.push(r)}v=0;for(D=p.length;v<D;v++){k=p[v];var t,u=k.vertexNormals;if(k instanceof THREE.Face3)t=new THREE.Face3(k.a+e,k.b+e,k.c+e);else if(k instanceof THREE.Face4)t=new THREE.Face4(k.a+e,k.b+
+e,k.c+e,k.d+e);t.centroid.copy(k.centroid);t.normal.copy(k.normal);d=0;for(j=u.length;d<j;d++){r=u[d];t.vertexNormals.push(r.clone())}t.material=k.material.slice();f.push(t)}v=0;for(D=g.length;v<D;v++){e=g[v];f=[];d=0;for(j=e.length;d<j;d++)f.push(new THREE.UV(e[d].u,e[d].v));c.push(f)}}},ImageUtils={loadTexture:function(a,b){var d=new Image;d.onload=function(){this.loaded=true};d.src=a;return new THREE.Texture(d,b)},loadArray:function(a){var b,d,e=[];b=e.loadCount=0;for(d=a.length;b<d;++b){e[b]=
+new Image;e[b].loaded=0;e[b].onload=function(){e.loadCount+=1;this.loaded=true};e[b].src=a[b]}return e}},SceneUtils={addMesh:function(a,b,d,e,g,j,k,f,p,c){b=new THREE.Mesh(b,c);b.scale.x=b.scale.y=b.scale.z=d;b.position.x=e;b.position.y=g;b.position.z=j;b.rotation.x=k;b.rotation.y=f;b.rotation.z=p;a.addObject(b);return b},addPanoramaCubeWebGL:function(a,b,d){d=new THREE.MeshCubeMaterial({env_map:d});b=new THREE.Mesh(new Cube(b,b,b,1,1,null,true),d);a.addObject(b);return b},addPanoramaCube:function(a,
 b,d){var e=[];e.push(new THREE.MeshBasicMaterial({map:new THREE.Texture(d[0])}));e.push(new THREE.MeshBasicMaterial({map:new THREE.Texture(d[1])}));e.push(new THREE.MeshBasicMaterial({map:new THREE.Texture(d[2])}));e.push(new THREE.MeshBasicMaterial({map:new THREE.Texture(d[3])}));e.push(new THREE.MeshBasicMaterial({map:new THREE.Texture(d[4])}));e.push(new THREE.MeshBasicMaterial({map:new THREE.Texture(d[5])}));mesh=new THREE.Mesh(new Cube(b,b,b,1,1,e,true),new THREE.MeshFaceMaterial);a.addObject(mesh);
-return mesh},addPanoramaCubePlanes:function(a,b,d){var e=b/2;b=new Plane(b,b);var f=Math.PI/2,j=Math.PI;SceneUtils.addMesh(a,b,1,0,0,-e,0,0,0,new THREE.MeshBasicMaterial({map:new THREE.Texture(d[5])}));SceneUtils.addMesh(a,b,1,-e,0,0,0,f,0,new THREE.MeshBasicMaterial({map:new THREE.Texture(d[0])}));SceneUtils.addMesh(a,b,1,e,0,0,0,-f,0,new THREE.MeshBasicMaterial({map:new THREE.Texture(d[1])}));SceneUtils.addMesh(a,b,1,0,e,0,f,0,j,new THREE.MeshBasicMaterial({map:new THREE.Texture(d[2])}));SceneUtils.addMesh(a,
-b,1,0,-e,0,-f,0,j,new THREE.MeshBasicMaterial({map:new THREE.Texture(d[3])}))}},ShaderUtils={lib:{fresnel:{uniforms:{mRefractionRatio:{type:"f",value:1.02},mFresnelBias:{type:"f",value:0.1},mFresnelPower:{type:"f",value:2},mFresnelScale:{type:"f",value:1},tCube:{type:"t",value:1,texture:null}},fragment_shader:"uniform samplerCube tCube;\nvarying vec3 vReflect;\nvarying vec3 vRefract[3];\nvarying float vReflectionFactor;\nvoid main() {\nvec4 reflectedColor = textureCube( tCube, vec3( -vReflect.x, vReflect.yz ) );\nvec4 refractedColor = vec4( 1.0, 1.0, 1.0, 1.0 );\nrefractedColor.r = textureCube( tCube, vec3( -vRefract[0].x, vRefract[0].yz ) ).r;\nrefractedColor.g = textureCube( tCube, vec3( -vRefract[1].x, vRefract[1].yz ) ).g;\nrefractedColor.b = textureCube( tCube, vec3( -vRefract[2].x, vRefract[2].yz ) ).b;\nrefractedColor.a = 1.0;\ngl_FragColor = mix( refractedColor, reflectedColor, clamp( vReflectionFactor, 0.0, 1.0 ) );\n}",
+return mesh},addPanoramaCubePlanes:function(a,b,d){var e=b/2;b=new Plane(b,b);var g=Math.PI/2,j=Math.PI;SceneUtils.addMesh(a,b,1,0,0,-e,0,0,0,new THREE.MeshBasicMaterial({map:new THREE.Texture(d[5])}));SceneUtils.addMesh(a,b,1,-e,0,0,0,g,0,new THREE.MeshBasicMaterial({map:new THREE.Texture(d[0])}));SceneUtils.addMesh(a,b,1,e,0,0,0,-g,0,new THREE.MeshBasicMaterial({map:new THREE.Texture(d[1])}));SceneUtils.addMesh(a,b,1,0,e,0,g,0,j,new THREE.MeshBasicMaterial({map:new THREE.Texture(d[2])}));SceneUtils.addMesh(a,
+b,1,0,-e,0,-g,0,j,new THREE.MeshBasicMaterial({map:new THREE.Texture(d[3])}))}},ShaderUtils={lib:{fresnel:{uniforms:{mRefractionRatio:{type:"f",value:1.02},mFresnelBias:{type:"f",value:0.1},mFresnelPower:{type:"f",value:2},mFresnelScale:{type:"f",value:1},tCube:{type:"t",value:1,texture:null}},fragment_shader:"uniform samplerCube tCube;\nvarying vec3 vReflect;\nvarying vec3 vRefract[3];\nvarying float vReflectionFactor;\nvoid main() {\nvec4 reflectedColor = textureCube( tCube, vec3( -vReflect.x, vReflect.yz ) );\nvec4 refractedColor = vec4( 1.0, 1.0, 1.0, 1.0 );\nrefractedColor.r = textureCube( tCube, vec3( -vRefract[0].x, vRefract[0].yz ) ).r;\nrefractedColor.g = textureCube( tCube, vec3( -vRefract[1].x, vRefract[1].yz ) ).g;\nrefractedColor.b = textureCube( tCube, vec3( -vRefract[2].x, vRefract[2].yz ) ).b;\nrefractedColor.a = 1.0;\ngl_FragColor = mix( refractedColor, reflectedColor, clamp( vReflectionFactor, 0.0, 1.0 ) );\n}",
 vertex_shader:"uniform float mRefractionRatio;\nuniform float mFresnelBias;\nuniform float mFresnelScale;\nuniform float mFresnelPower;\nvarying vec3 vReflect;\nvarying vec3 vRefract[3];\nvarying float vReflectionFactor;\nvoid main(void) {\nvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\nvec4 mPosition = objectMatrix * vec4( position, 1.0 );\nvec3 nWorld = normalize ( mat3( objectMatrix[0].xyz, objectMatrix[1].xyz, objectMatrix[2].xyz ) * normal );\nvec3 I = mPosition.xyz - cameraPosition;\nvReflect = reflect( I, nWorld );\nvRefract[0] = refract( normalize( I ), nWorld, mRefractionRatio );\nvRefract[1] = refract( normalize( I ), nWorld, mRefractionRatio * 0.99 );\nvRefract[2] = refract( normalize( I ), nWorld, mRefractionRatio * 0.98 );\nvReflectionFactor = mFresnelBias + mFresnelScale * pow( 1.0 + dot( normalize( I ), nWorld ), mFresnelPower );\ngl_Position = projectionMatrix * mvPosition;\n}"}}},
-Cube=function(a,b,d,e,f,j,k){function g(w,v,y,L,u,A,o,i){var n=e||1,h=f||1,x=n+1,m=h+1;u=u/n;A=A/h;var l=p.vertices.length,B;if(w=="x"&&v=="y"||w=="y"&&v=="x")B="z";else if(w=="x"&&v=="z"||w=="z"&&v=="x")B="y";else if(w=="z"&&v=="y"||w=="y"&&v=="z")B="x";for(iy=0;iy<m;iy++)for(ix=0;ix<x;ix++){var C=new THREE.Vector3;C[w]=(ix*u-c)*y;C[v]=(iy*A-t)*L;C[B]=o;p.vertices.push(new THREE.Vertex(C))}for(iy=0;iy<h;iy++)for(ix=0;ix<n;ix++){p.faces.push(new THREE.Face4(ix+x*iy+l,ix+x*(iy+1)+l,ix+1+x*(iy+1)+l,
-ix+1+x*iy+l,null,i));p.uvs.push([new THREE.UV(ix/n,iy/h),new THREE.UV(ix/n,(iy+1)/h),new THREE.UV((ix+1)/n,(iy+1)/h),new THREE.UV((ix+1)/n,iy/h)])}}THREE.Geometry.call(this);var p=this,c=a/2,t=b/2,F=d/2;k=k?-1:1;if(j!==undefined)if(j instanceof Array)this.materials=j;else{this.materials=[];for(var r=0;r<6;r++)this.materials.push([j])}else this.materials=[];g("z","y",1*k,-1,d,b,-c,this.materials[0]);g("z","y",-1*k,-1,d,b,c,this.materials[1]);g("x","z",1*k,1,a,d,t,this.materials[2]);g("x","z",1*k,-1,
-a,d,-t,this.materials[3]);g("x","y",1*k,-1,a,b,F,this.materials[4]);g("x","y",-1*k,-1,a,b,-F,this.materials[5]);(function(){for(var w=[],v=[],y=0,L=p.vertices.length;y<L;y++){for(var u=p.vertices[y],A=false,o=0,i=w.length;o<i;o++){var n=w[o];if(u.position.x==n.position.x&&u.position.y==n.position.y&&u.position.z==n.position.z){v[y]=o;A=true;break}}if(!A){v[y]=w.length;w.push(new THREE.Vertex(u.position.clone()))}}y=0;for(L=p.faces.length;y<L;y++){u=p.faces[y];u.a=v[u.a];u.b=v[u.b];u.c=v[u.c];u.d=
-v[u.d]}p.vertices=w})();this.computeCentroids();this.computeNormals();this.sortFacesByMaterial()};Cube.prototype=new THREE.Geometry;Cube.prototype.constructor=Cube;
-var Cylinder=function(a,b,d,e,f){function j(p,c,t){k.vertices.push(new THREE.Vertex(new THREE.Vector3(p,c,t)))}THREE.Geometry.call(this);var k=this,g;for(g=0;g<a;g++)j(Math.sin(6.283*g/a)*b,Math.cos(6.283*g/a)*b,0);for(g=0;g<a;g++)j(Math.sin(6.283*g/a)*d,Math.cos(6.283*g/a)*d,e);for(g=0;g<a;g++)k.faces.push(new THREE.Face4(g,g+a,a+(g+1)%a,(g+1)%a));if(d!=0){j(0,0,-f);for(g=a;g<a+a/2;g++)k.faces.push(new THREE.Face4(2*a,(2*g-2*a)%a,(2*g-2*a+1)%a,(2*g-2*a+2)%a))}if(b!=0){j(0,0,e+f);for(g=a+a/2;g<2*
-a;g++)k.faces.push(new THREE.Face4((2*g-2*a+2)%a+a,(2*g-2*a+1)%a+a,(2*g-2*a)%a+a,2*a+1))}this.computeCentroids();this.computeNormals();this.sortFacesByMaterial()};Cylinder.prototype=new THREE.Geometry;Cylinder.prototype.constructor=Cylinder;
-var Plane=function(a,b,d,e){THREE.Geometry.call(this);var f,j=a/2,k=b/2;d=d||1;e=e||1;var g=d+1,p=e+1;a=a/d;var c=b/e;for(f=0;f<p;f++)for(b=0;b<g;b++)this.vertices.push(new THREE.Vertex(new THREE.Vector3(b*a-j,-(f*c-k),0)));for(f=0;f<e;f++)for(b=0;b<d;b++){this.faces.push(new THREE.Face4(b+g*f,b+g*(f+1),b+1+g*(f+1),b+1+g*f));this.uvs.push([new THREE.UV(b/d,f/e),new THREE.UV(b/d,(f+1)/e),new THREE.UV((b+1)/d,(f+1)/e),new THREE.UV((b+1)/d,f/e)])}this.computeCentroids();this.computeNormals();this.sortFacesByMaterial()};
+Cube=function(a,b,d,e,g,j,k){function f(t,u,w,I,F,y,n,i){var m=e||1,h=g||1,z=m+1,l=h+1;F=F/m;y=y/h;var o=p.vertices.length,B;if(t=="x"&&u=="y"||t=="y"&&u=="x")B="z";else if(t=="x"&&u=="z"||t=="z"&&u=="x")B="y";else if(t=="z"&&u=="y"||t=="y"&&u=="z")B="x";for(iy=0;iy<l;iy++)for(ix=0;ix<z;ix++){var A=new THREE.Vector3;A[t]=(ix*F-c)*w;A[u]=(iy*y-v)*I;A[B]=n;p.vertices.push(new THREE.Vertex(A))}for(iy=0;iy<h;iy++)for(ix=0;ix<m;ix++){p.faces.push(new THREE.Face4(ix+z*iy+o,ix+z*(iy+1)+o,ix+1+z*(iy+1)+o,
+ix+1+z*iy+o,null,i));p.uvs.push([new THREE.UV(ix/m,iy/h),new THREE.UV(ix/m,(iy+1)/h),new THREE.UV((ix+1)/m,(iy+1)/h),new THREE.UV((ix+1)/m,iy/h)])}}THREE.Geometry.call(this);var p=this,c=a/2,v=b/2,D=d/2;k=k?-1:1;if(j!==undefined)if(j instanceof Array)this.materials=j;else{this.materials=[];for(var r=0;r<6;r++)this.materials.push([j])}else this.materials=[];f("z","y",1*k,-1,d,b,-c,this.materials[0]);f("z","y",-1*k,-1,d,b,c,this.materials[1]);f("x","z",1*k,1,a,d,v,this.materials[2]);f("x","z",1*k,-1,
+a,d,-v,this.materials[3]);f("x","y",1*k,-1,a,b,D,this.materials[4]);f("x","y",-1*k,-1,a,b,-D,this.materials[5]);(function(){for(var t=[],u=[],w=0,I=p.vertices.length;w<I;w++){for(var F=p.vertices[w],y=false,n=0,i=t.length;n<i;n++){var m=t[n];if(F.position.x==m.position.x&&F.position.y==m.position.y&&F.position.z==m.position.z){u[w]=n;y=true;break}}if(!y){u[w]=t.length;t.push(new THREE.Vertex(F.position.clone()))}}w=0;for(I=p.faces.length;w<I;w++){F=p.faces[w];F.a=u[F.a];F.b=u[F.b];F.c=u[F.c];F.d=
+u[F.d]}p.vertices=t})();this.computeCentroids();this.computeNormals();this.sortFacesByMaterial()};Cube.prototype=new THREE.Geometry;Cube.prototype.constructor=Cube;
+var Cylinder=function(a,b,d,e,g){function j(p,c,v){k.vertices.push(new THREE.Vertex(new THREE.Vector3(p,c,v)))}THREE.Geometry.call(this);var k=this,f;for(f=0;f<a;f++)j(Math.sin(6.283*f/a)*b,Math.cos(6.283*f/a)*b,0);for(f=0;f<a;f++)j(Math.sin(6.283*f/a)*d,Math.cos(6.283*f/a)*d,e);for(f=0;f<a;f++)k.faces.push(new THREE.Face4(f,f+a,a+(f+1)%a,(f+1)%a));if(d!=0){j(0,0,-g);for(f=a;f<a+a/2;f++)k.faces.push(new THREE.Face4(2*a,(2*f-2*a)%a,(2*f-2*a+1)%a,(2*f-2*a+2)%a))}if(b!=0){j(0,0,e+g);for(f=a+a/2;f<2*
+a;f++)k.faces.push(new THREE.Face4((2*f-2*a+2)%a+a,(2*f-2*a+1)%a+a,(2*f-2*a)%a+a,2*a+1))}this.computeCentroids();this.computeNormals();this.sortFacesByMaterial()};Cylinder.prototype=new THREE.Geometry;Cylinder.prototype.constructor=Cylinder;
+var Plane=function(a,b,d,e){THREE.Geometry.call(this);var g,j=a/2,k=b/2;d=d||1;e=e||1;var f=d+1,p=e+1;a=a/d;var c=b/e;for(g=0;g<p;g++)for(b=0;b<f;b++)this.vertices.push(new THREE.Vertex(new THREE.Vector3(b*a-j,-(g*c-k),0)));for(g=0;g<e;g++)for(b=0;b<d;b++){this.faces.push(new THREE.Face4(b+f*g,b+f*(g+1),b+1+f*(g+1),b+1+f*g));this.uvs.push([new THREE.UV(b/d,g/e),new THREE.UV(b/d,(g+1)/e),new THREE.UV((b+1)/d,(g+1)/e),new THREE.UV((b+1)/d,g/e)])}this.computeCentroids();this.computeNormals();this.sortFacesByMaterial()};
 Plane.prototype=new THREE.Geometry;Plane.prototype.constructor=Plane;
-var Sphere=function(a,b,d){THREE.Geometry.call(this);var e,f=Math.max(3,b||8),j=Math.max(2,d||6);b=[];for(d=0;d<j+1;d++){e=d/j;var k=a*Math.cos(e*Math.PI),g=a*Math.sin(e*Math.PI),p=[],c=0;for(e=0;e<f;e++){var t=2*e/f,F=g*Math.sin(t*Math.PI);t=g*Math.cos(t*Math.PI);(d==0||d==j)&&e>0||(c=this.vertices.push(new THREE.Vertex(new THREE.Vector3(t,k,F)))-1);p.push(c)}b.push(p)}var r,w,v;a=b.length;for(d=0;d<a;d++){f=b[d].length;if(d>0)for(e=0;e<f;e++){p=e==f-1;j=b[d][p?0:e+1];k=b[d][p?f-1:e];g=b[d-1][p?
-f-1:e];p=b[d-1][p?0:e+1];F=d/(a-1);r=(d-1)/(a-1);w=(e+1)/f;t=e/f;c=new THREE.UV(1-w,F);F=new THREE.UV(1-t,F);t=new THREE.UV(1-t,r);var y=new THREE.UV(1-w,r);if(d<b.length-1){r=this.vertices[j].position.clone();w=this.vertices[k].position.clone();v=this.vertices[g].position.clone();r.normalize();w.normalize();v.normalize();this.faces.push(new THREE.Face3(j,k,g,[new THREE.Vector3(r.x,r.y,r.z),new THREE.Vector3(w.x,w.y,w.z),new THREE.Vector3(v.x,v.y,v.z)]));this.uvs.push([c,F,t])}if(d>1){r=this.vertices[j].position.clone();
-w=this.vertices[g].position.clone();v=this.vertices[p].position.clone();r.normalize();w.normalize();v.normalize();this.faces.push(new THREE.Face3(j,g,p,[new THREE.Vector3(r.x,r.y,r.z),new THREE.Vector3(w.x,w.y,w.z),new THREE.Vector3(v.x,v.y,v.z)]));this.uvs.push([c,t,y])}}}this.computeCentroids();this.computeNormals();this.sortFacesByMaterial()};Sphere.prototype=new THREE.Geometry;Sphere.prototype.constructor=Sphere;
+var Sphere=function(a,b,d){THREE.Geometry.call(this);var e,g=Math.max(3,b||8),j=Math.max(2,d||6);b=[];for(d=0;d<j+1;d++){e=d/j;var k=a*Math.cos(e*Math.PI),f=a*Math.sin(e*Math.PI),p=[],c=0;for(e=0;e<g;e++){var v=2*e/g,D=f*Math.sin(v*Math.PI);v=f*Math.cos(v*Math.PI);(d==0||d==j)&&e>0||(c=this.vertices.push(new THREE.Vertex(new THREE.Vector3(v,k,D)))-1);p.push(c)}b.push(p)}var r,t,u;a=b.length;for(d=0;d<a;d++){g=b[d].length;if(d>0)for(e=0;e<g;e++){p=e==g-1;j=b[d][p?0:e+1];k=b[d][p?g-1:e];f=b[d-1][p?
+g-1:e];p=b[d-1][p?0:e+1];D=d/(a-1);r=(d-1)/(a-1);t=(e+1)/g;v=e/g;c=new THREE.UV(1-t,D);D=new THREE.UV(1-v,D);v=new THREE.UV(1-v,r);var w=new THREE.UV(1-t,r);if(d<b.length-1){r=this.vertices[j].position.clone();t=this.vertices[k].position.clone();u=this.vertices[f].position.clone();r.normalize();t.normalize();u.normalize();this.faces.push(new THREE.Face3(j,k,f,[new THREE.Vector3(r.x,r.y,r.z),new THREE.Vector3(t.x,t.y,t.z),new THREE.Vector3(u.x,u.y,u.z)]));this.uvs.push([c,D,v])}if(d>1){r=this.vertices[j].position.clone();
+t=this.vertices[f].position.clone();u=this.vertices[p].position.clone();r.normalize();t.normalize();u.normalize();this.faces.push(new THREE.Face3(j,f,p,[new THREE.Vector3(r.x,r.y,r.z),new THREE.Vector3(t.x,t.y,t.z),new THREE.Vector3(u.x,u.y,u.z)]));this.uvs.push([c,v,w])}}}this.computeCentroids();this.computeNormals();this.sortFacesByMaterial()};Sphere.prototype=new THREE.Geometry;Sphere.prototype.constructor=Sphere;
 THREE.Loader=function(a){this.statusDomElement=(this.showStatus=a)?this.addStatusElement():null};
 THREE.Loader.prototype={addStatusElement:function(){var a=document.createElement("div");a.style.fontSize="0.8em";a.style.textAlign="left";a.style.background="#b00";a.style.color="#fff";a.style.width="140px";a.style.padding="0.25em 0.25em 0.25em 0.5em";a.style.position="absolute";a.style.right="0px";a.style.top="0px";a.style.zIndex=1E3;a.innerHTML="Loading ...";return a},updateProgress:function(a){var b="Loaded ";b+=a.total?(100*a.loaded/a.total).toFixed(0)+"%":(a.loaded/1E3).toFixed(2)+" KB";this.statusDomElement.innerHTML=
-b},loadAsciiOld:function(a,b){var d=document.createElement("script");d.type="text/javascript";d.onload=b;d.src=a;document.getElementsByTagName("head")[0].appendChild(d)},loadAscii:function(a,b,d){var e=(new Date).getTime();a=new Worker(a);a.onmessage=function(f){THREE.Loader.prototype.createModel(f.data,b,d)};a.postMessage(e)},loadBinary:function(a,b,d){var e=(new Date).getTime();a=new Worker(a);var f=this.showProgress?THREE.Loader.prototype.updateProgress:null;a.onmessage=function(j){THREE.Loader.prototype.loadAjaxBuffers(j.data.buffers,
-j.data.materials,b,d,f)};a.onerror=function(j){alert("worker.onerror: "+j.message+"\n"+j.data);j.preventDefault()};a.postMessage(e)},loadAjaxBuffers:function(a,b,d,e,f){var j=new XMLHttpRequest,k=e+"/"+a,g=0;j.onreadystatechange=function(){if(j.readyState==4)j.status==200||j.status==0?THREE.Loader.prototype.createBinModel(j.responseText,d,e,b):alert("Couldn't load ["+k+"] ["+j.status+"]");else if(j.readyState==3){if(f){if(g==0)g=j.getResponseHeader("Content-Length");f({total:g,loaded:j.responseText.length})}}else if(j.readyState==
-2)g=j.getResponseHeader("Content-Length")};j.open("GET",k,true);j.overrideMimeType("text/plain; charset=x-user-defined");j.setRequestHeader("Content-Type","text/plain");j.send(null)},createBinModel:function(a,b,d,e){var f=function(j){function k(q,s){var z=t(q,s),K=t(q,s+1),W=t(q,s+2),ga=t(q,s+3),ma=(ga<<1&255|W>>7)-127;z=(W&127)<<16|K<<8|z;if(z==0&&ma==-127)return 0;return(1-2*(ga>>7))*(1+z*Math.pow(2,-23))*Math.pow(2,ma)}function g(q,s){var z=t(q,s),K=t(q,s+1),W=t(q,s+2);return(t(q,s+3)<<24)+(W<<
-16)+(K<<8)+z}function p(q,s){var z=t(q,s);return(t(q,s+1)<<8)+z}function c(q,s){var z=t(q,s);return z>127?z-256:z}function t(q,s){return q.charCodeAt(s)&255}function F(q){var s,z,K;s=g(a,q);z=g(a,q+h);K=g(a,q+x);q=p(a,q+m);THREE.Loader.prototype.f3(u,s,z,K,q)}function r(q){var s,z,K,W,ga,ma;s=g(a,q);z=g(a,q+h);K=g(a,q+x);W=p(a,q+m);ga=g(a,q+l);ma=g(a,q+B);q=g(a,q+C);THREE.Loader.prototype.f3n(u,i,s,z,K,W,ga,ma,q)}function w(q){var s,z,K,W;s=g(a,q);z=g(a,q+Q);K=g(a,q+J);W=g(a,q+P);q=p(a,q+S);THREE.Loader.prototype.f4(u,
-s,z,K,W,q)}function v(q){var s,z,K,W,ga,ma,ua,pa;s=g(a,q);z=g(a,q+Q);K=g(a,q+J);W=g(a,q+P);ga=p(a,q+S);ma=g(a,q+E);ua=g(a,q+T);pa=g(a,q+D);q=g(a,q+I);THREE.Loader.prototype.f4n(u,i,s,z,K,W,ga,ma,ua,pa,q)}function y(q){var s,z;s=g(a,q);z=g(a,q+H);q=g(a,q+V);THREE.Loader.prototype.uv3(u,n[s*2],n[s*2+1],n[z*2],n[z*2+1],n[q*2],n[q*2+1])}function L(q){var s,z,K;s=g(a,q);z=g(a,q+N);K=g(a,q+M);q=g(a,q+Y);THREE.Loader.prototype.uv4(u,n[s*2],n[s*2+1],n[z*2],n[z*2+1],n[K*2],n[K*2+1],n[q*2],n[q*2+1])}var u=
-this,A=0,o,i=[],n=[],h,x,m,l,B,C,Q,J,P,S,E,T,D,I,H,V,N,M,Y;THREE.Geometry.call(this);THREE.Loader.prototype.init_materials(u,e,j);o={signature:a.substr(A,8),header_bytes:t(a,A+8),vertex_coordinate_bytes:t(a,A+9),normal_coordinate_bytes:t(a,A+10),uv_coordinate_bytes:t(a,A+11),vertex_index_bytes:t(a,A+12),normal_index_bytes:t(a,A+13),uv_index_bytes:t(a,A+14),material_index_bytes:t(a,A+15),nvertices:g(a,A+16),nnormals:g(a,A+16+4),nuvs:g(a,A+16+8),ntri_flat:g(a,A+16+12),ntri_smooth:g(a,A+16+16),ntri_flat_uv:g(a,
-A+16+20),ntri_smooth_uv:g(a,A+16+24),nquad_flat:g(a,A+16+28),nquad_smooth:g(a,A+16+32),nquad_flat_uv:g(a,A+16+36),nquad_smooth_uv:g(a,A+16+40)};A+=o.header_bytes;h=o.vertex_index_bytes;x=o.vertex_index_bytes*2;m=o.vertex_index_bytes*3;l=o.vertex_index_bytes*3+o.material_index_bytes;B=o.vertex_index_bytes*3+o.material_index_bytes+o.normal_index_bytes;C=o.vertex_index_bytes*3+o.material_index_bytes+o.normal_index_bytes*2;Q=o.vertex_index_bytes;J=o.vertex_index_bytes*2;P=o.vertex_index_bytes*3;S=o.vertex_index_bytes*
-4;E=o.vertex_index_bytes*4+o.material_index_bytes;T=o.vertex_index_bytes*4+o.material_index_bytes+o.normal_index_bytes;D=o.vertex_index_bytes*4+o.material_index_bytes+o.normal_index_bytes*2;I=o.vertex_index_bytes*4+o.material_index_bytes+o.normal_index_bytes*3;H=o.uv_index_bytes;V=o.uv_index_bytes*2;N=o.uv_index_bytes;M=o.uv_index_bytes*2;Y=o.uv_index_bytes*3;A+=function(q){var s,z,K,W=o.vertex_coordinate_bytes*3,ga=q+o.nvertices*W;for(q=q;q<ga;q+=W){s=k(a,q);z=k(a,q+o.vertex_coordinate_bytes);K=
-k(a,q+o.vertex_coordinate_bytes*2);THREE.Loader.prototype.v(u,s,z,K)}return o.nvertices*W}(A);A+=function(q){var s,z,K,W=o.normal_coordinate_bytes*3,ga=q+o.nnormals*W;for(q=q;q<ga;q+=W){s=c(a,q);z=c(a,q+o.normal_coordinate_bytes);K=c(a,q+o.normal_coordinate_bytes*2);i.push(s/127,z/127,K/127)}return o.nnormals*W}(A);A+=function(q){var s,z,K=o.uv_coordinate_bytes*2,W=q+o.nuvs*K;for(q=q;q<W;q+=K){s=k(a,q);z=k(a,q+o.uv_coordinate_bytes);n.push(s,z)}return o.nuvs*K}(A);A+=function(q){var s,z=o.vertex_index_bytes*
-3+o.material_index_bytes,K=q+o.ntri_flat*z;for(s=q;s<K;s+=z)F(s);return K-q}(A);A+=function(q){var s,z=o.vertex_index_bytes*3+o.material_index_bytes+o.normal_index_bytes*3,K=q+o.ntri_smooth*z;for(s=q;s<K;s+=z)r(s);return K-q}(A);A+=function(q){var s,z=o.vertex_index_bytes*3+o.material_index_bytes,K=z+o.uv_index_bytes*3,W=q+o.ntri_flat_uv*K;for(s=q;s<W;s+=K){F(s);y(s+z)}return W-q}(A);A+=function(q){var s,z=o.vertex_index_bytes*3+o.material_index_bytes+o.normal_index_bytes*3,K=z+o.uv_index_bytes*3,
-W=q+o.ntri_smooth_uv*K;for(s=q;s<W;s+=K){r(s);y(s+z)}return W-q}(A);A+=function(q){var s,z=o.vertex_index_bytes*4+o.material_index_bytes,K=q+o.nquad_flat*z;for(s=q;s<K;s+=z)w(s);return K-q}(A);A+=function(q){var s,z=o.vertex_index_bytes*4+o.material_index_bytes+o.normal_index_bytes*4,K=q+o.nquad_smooth*z;for(s=q;s<K;s+=z)v(s);return K-q}(A);A+=function(q){var s,z=o.vertex_index_bytes*4+o.material_index_bytes,K=z+o.uv_index_bytes*4,W=q+o.nquad_flat_uv*K;for(s=q;s<W;s+=K){w(s);L(s+z)}return W-q}(A);
-A+=function(q){var s,z=o.vertex_index_bytes*4+o.material_index_bytes+o.normal_index_bytes*4,K=z+o.uv_index_bytes*4,W=q+o.nquad_smooth_uv*K;for(s=q;s<W;s+=K){v(s);L(s+z)}return W-q}(A);this.computeCentroids();this.computeNormals();this.sortFacesByMaterial()};f.prototype=new THREE.Geometry;f.prototype.constructor=f;b(new f(d))},createModel:function(a,b,d){var e=function(f){var j=this;THREE.Geometry.call(this);THREE.Loader.prototype.init_materials(j,a.materials,f);(function(){var k,g,p,c,t;k=0;for(g=
-a.vertices.length;k<g;k+=3){p=a.vertices[k];c=a.vertices[k+1];t=a.vertices[k+2];THREE.Loader.prototype.v(j,p,c,t)}})();(function(){function k(v,y){THREE.Loader.prototype.f3(j,v[y],v[y+1],v[y+2],v[y+3])}function g(v,y){THREE.Loader.prototype.f3n(j,a.normals,v[y],v[y+1],v[y+2],v[y+3],v[y+4],v[y+5],v[y+6])}function p(v,y){THREE.Loader.prototype.f4(j,v[y],v[y+1],v[y+2],v[y+3],v[y+4])}function c(v,y){THREE.Loader.prototype.f4n(j,a.normals,v[y],v[y+1],v[y+2],v[y+3],v[y+4],v[y+5],v[y+6],v[y+7],v[y+8])}function t(v,
-y){var L,u,A;L=v[y];u=v[y+1];A=v[y+2];THREE.Loader.prototype.uv3(j,a.uvs[L*2],a.uvs[L*2+1],a.uvs[u*2],a.uvs[u*2+1],a.uvs[A*2],a.uvs[A*2+1])}function F(v,y){var L,u,A,o;L=v[y];u=v[y+1];A=v[y+2];o=v[y+3];THREE.Loader.prototype.uv4(j,a.uvs[L*2],a.uvs[L*2+1],a.uvs[u*2],a.uvs[u*2+1],a.uvs[A*2],a.uvs[A*2+1],a.uvs[o*2],a.uvs[o*2+1])}var r,w;r=0;for(w=a.triangles.length;r<w;r+=4)k(a.triangles,r);r=0;for(w=a.triangles_uv.length;r<w;r+=7){k(a.triangles_uv,r);t(a.triangles_uv,r+4)}r=0;for(w=a.triangles_n.length;r<
-w;r+=7)g(a.triangles_n,r);r=0;for(w=a.triangles_n_uv.length;r<w;r+=10){g(a.triangles_n_uv,r);t(a.triangles_n_uv,r+7)}r=0;for(w=a.quads.length;r<w;r+=5)p(a.quads,r);r=0;for(w=a.quads_uv.length;r<w;r+=9){p(a.quads_uv,r);F(a.quads_uv,r+5)}r=0;for(w=a.quads_n.length;r<w;r+=9)c(a.quads_n,r);r=0;for(w=a.quads_n_uv.length;r<w;r+=13){c(a.quads_n_uv,r);F(a.quads_n_uv,r+9)}})();this.computeCentroids();this.computeNormals();this.sortFacesByMaterial()};e.prototype=new THREE.Geometry;e.prototype.constructor=e;
-b(new e(d))},v:function(a,b,d,e){a.vertices.push(new THREE.Vertex(new THREE.Vector3(b,d,e)))},f3:function(a,b,d,e,f){a.faces.push(new THREE.Face3(b,d,e,null,a.materials[f]))},f4:function(a,b,d,e,f,j){a.faces.push(new THREE.Face4(b,d,e,f,null,a.materials[j]))},f3n:function(a,b,d,e,f,j,k,g,p){j=a.materials[j];var c=b[g*3],t=b[g*3+1];g=b[g*3+2];var F=b[p*3],r=b[p*3+1];p=b[p*3+2];a.faces.push(new THREE.Face3(d,e,f,[new THREE.Vector3(b[k*3],b[k*3+1],b[k*3+2]),new THREE.Vector3(c,t,g),new THREE.Vector3(F,
-r,p)],j))},f4n:function(a,b,d,e,f,j,k,g,p,c,t){k=a.materials[k];var F=b[p*3],r=b[p*3+1];p=b[p*3+2];var w=b[c*3],v=b[c*3+1];c=b[c*3+2];var y=b[t*3],L=b[t*3+1];t=b[t*3+2];a.faces.push(new THREE.Face4(d,e,f,j,[new THREE.Vector3(b[g*3],b[g*3+1],b[g*3+2]),new THREE.Vector3(F,r,p),new THREE.Vector3(w,v,c),new THREE.Vector3(y,L,t)],k))},uv3:function(a,b,d,e,f,j,k){var g=[];g.push(new THREE.UV(b,d));g.push(new THREE.UV(e,f));g.push(new THREE.UV(j,k));a.uvs.push(g)},uv4:function(a,b,d,e,f,j,k,g,p){var c=[];
-c.push(new THREE.UV(b,d));c.push(new THREE.UV(e,f));c.push(new THREE.UV(j,k));c.push(new THREE.UV(g,p));a.uvs.push(c)},init_materials:function(a,b,d){a.materials=[];for(var e=0;e<b.length;++e)a.materials[e]=[THREE.Loader.prototype.createMaterial(b[e],d)]},createMaterial:function(a,b){function d(j){j=Math.log(j)/Math.LN2;return Math.floor(j)==j}var e,f;if(a.map_diffuse&&b){f=document.createElement("canvas");e=new THREE.MeshLambertMaterial({map:new THREE.Texture(f)});f=new Image;f.onload=function(){if(!d(this.width)||
-!d(this.height)){var j=Math.pow(2,Math.round(Math.log(this.width)/Math.LN2)),k=Math.pow(2,Math.round(Math.log(this.height)/Math.LN2));e.map.image.width=j;e.map.image.height=k;e.map.image.getContext("2d").drawImage(this,0,0,j,k)}else e.map.image=this;e.map.image.loaded=1};f.src=b+"/"+a.map_diffuse}else if(a.col_diffuse){f=(a.col_diffuse[0]*255<<16)+(a.col_diffuse[1]*255<<8)+a.col_diffuse[2]*255;e=new THREE.MeshLambertMaterial({color:f,opacity:a.transparency})}else e=a.a_dbg_color?new THREE.MeshLambertMaterial({color:a.a_dbg_color}):
+b},loadAsciiOld:function(a,b){var d=document.createElement("script");d.type="text/javascript";d.onload=b;d.src=a;document.getElementsByTagName("head")[0].appendChild(d)},loadAscii:function(a,b,d){var e=(new Date).getTime();a=new Worker(a);a.onmessage=function(g){THREE.Loader.prototype.createModel(g.data,b,d)};a.postMessage(e)},loadBinary:function(a,b,d){var e=(new Date).getTime();a=new Worker(a);var g=this.showProgress?THREE.Loader.prototype.updateProgress:null;a.onmessage=function(j){THREE.Loader.prototype.loadAjaxBuffers(j.data.buffers,
+j.data.materials,b,d,g)};a.onerror=function(j){alert("worker.onerror: "+j.message+"\n"+j.data);j.preventDefault()};a.postMessage(e)},loadAjaxBuffers:function(a,b,d,e,g){var j=new XMLHttpRequest,k=e+"/"+a,f=0;j.onreadystatechange=function(){if(j.readyState==4)j.status==200||j.status==0?THREE.Loader.prototype.createBinModel(j.responseText,d,e,b):alert("Couldn't load ["+k+"] ["+j.status+"]");else if(j.readyState==3){if(g){if(f==0)f=j.getResponseHeader("Content-Length");g({total:f,loaded:j.responseText.length})}}else if(j.readyState==
+2)f=j.getResponseHeader("Content-Length")};j.open("GET",k,true);j.overrideMimeType("text/plain; charset=x-user-defined");j.setRequestHeader("Content-Type","text/plain");j.send(null)},createBinModel:function(a,b,d,e){var g=function(j){function k(q,s){var x=v(q,s),H=v(q,s+1),U=v(q,s+2),ba=v(q,s+3),ga=(ba<<1&255|U>>7)-127;x=(U&127)<<16|H<<8|x;if(x==0&&ga==-127)return 0;return(1-2*(ba>>7))*(1+x*Math.pow(2,-23))*Math.pow(2,ga)}function f(q,s){var x=v(q,s),H=v(q,s+1),U=v(q,s+2);return(v(q,s+3)<<24)+(U<<
+16)+(H<<8)+x}function p(q,s){var x=v(q,s);return(v(q,s+1)<<8)+x}function c(q,s){var x=v(q,s);return x>127?x-256:x}function v(q,s){return q.charCodeAt(s)&255}function D(q){var s,x,H;s=f(a,q);x=f(a,q+h);H=f(a,q+z);q=p(a,q+l);THREE.Loader.prototype.f3(F,s,x,H,q)}function r(q){var s,x,H,U,ba,ga;s=f(a,q);x=f(a,q+h);H=f(a,q+z);U=p(a,q+l);ba=f(a,q+o);ga=f(a,q+B);q=f(a,q+A);THREE.Loader.prototype.f3n(F,i,s,x,H,U,ba,ga,q)}function t(q){var s,x,H,U;s=f(a,q);x=f(a,q+Q);H=f(a,q+K);U=f(a,q+R);q=p(a,q+T);THREE.Loader.prototype.f4(F,
+s,x,H,U,q)}function u(q){var s,x,H,U,ba,ga,$,ka;s=f(a,q);x=f(a,q+Q);H=f(a,q+K);U=f(a,q+R);ba=p(a,q+T);ga=f(a,q+E);$=f(a,q+V);ka=f(a,q+J);q=f(a,q+L);THREE.Loader.prototype.f4n(F,i,s,x,H,U,ba,ga,$,ka,q)}function w(q){var s,x;s=f(a,q);x=f(a,q+N);q=f(a,q+Y);THREE.Loader.prototype.uv3(F,m[s*2],m[s*2+1],m[x*2],m[x*2+1],m[q*2],m[q*2+1])}function I(q){var s,x,H;s=f(a,q);x=f(a,q+P);H=f(a,q+M);q=f(a,q+W);THREE.Loader.prototype.uv4(F,m[s*2],m[s*2+1],m[x*2],m[x*2+1],m[H*2],m[H*2+1],m[q*2],m[q*2+1])}var F=this,
+y=0,n,i=[],m=[],h,z,l,o,B,A,Q,K,R,T,E,V,J,L,N,Y,P,M,W;THREE.Geometry.call(this);THREE.Loader.prototype.init_materials(F,e,j);n={signature:a.substr(y,8),header_bytes:v(a,y+8),vertex_coordinate_bytes:v(a,y+9),normal_coordinate_bytes:v(a,y+10),uv_coordinate_bytes:v(a,y+11),vertex_index_bytes:v(a,y+12),normal_index_bytes:v(a,y+13),uv_index_bytes:v(a,y+14),material_index_bytes:v(a,y+15),nvertices:f(a,y+16),nnormals:f(a,y+16+4),nuvs:f(a,y+16+8),ntri_flat:f(a,y+16+12),ntri_smooth:f(a,y+16+16),ntri_flat_uv:f(a,
+y+16+20),ntri_smooth_uv:f(a,y+16+24),nquad_flat:f(a,y+16+28),nquad_smooth:f(a,y+16+32),nquad_flat_uv:f(a,y+16+36),nquad_smooth_uv:f(a,y+16+40)};y+=n.header_bytes;h=n.vertex_index_bytes;z=n.vertex_index_bytes*2;l=n.vertex_index_bytes*3;o=n.vertex_index_bytes*3+n.material_index_bytes;B=n.vertex_index_bytes*3+n.material_index_bytes+n.normal_index_bytes;A=n.vertex_index_bytes*3+n.material_index_bytes+n.normal_index_bytes*2;Q=n.vertex_index_bytes;K=n.vertex_index_bytes*2;R=n.vertex_index_bytes*3;T=n.vertex_index_bytes*
+4;E=n.vertex_index_bytes*4+n.material_index_bytes;V=n.vertex_index_bytes*4+n.material_index_bytes+n.normal_index_bytes;J=n.vertex_index_bytes*4+n.material_index_bytes+n.normal_index_bytes*2;L=n.vertex_index_bytes*4+n.material_index_bytes+n.normal_index_bytes*3;N=n.uv_index_bytes;Y=n.uv_index_bytes*2;P=n.uv_index_bytes;M=n.uv_index_bytes*2;W=n.uv_index_bytes*3;y+=function(q){var s,x,H,U=n.vertex_coordinate_bytes*3,ba=q+n.nvertices*U;for(q=q;q<ba;q+=U){s=k(a,q);x=k(a,q+n.vertex_coordinate_bytes);H=
+k(a,q+n.vertex_coordinate_bytes*2);THREE.Loader.prototype.v(F,s,x,H)}return n.nvertices*U}(y);y+=function(q){var s,x,H,U=n.normal_coordinate_bytes*3,ba=q+n.nnormals*U;for(q=q;q<ba;q+=U){s=c(a,q);x=c(a,q+n.normal_coordinate_bytes);H=c(a,q+n.normal_coordinate_bytes*2);i.push(s/127,x/127,H/127)}return n.nnormals*U}(y);y+=function(q){var s,x,H=n.uv_coordinate_bytes*2,U=q+n.nuvs*H;for(q=q;q<U;q+=H){s=k(a,q);x=k(a,q+n.uv_coordinate_bytes);m.push(s,x)}return n.nuvs*H}(y);y+=function(q){var s,x=n.vertex_index_bytes*
+3+n.material_index_bytes,H=q+n.ntri_flat*x;for(s=q;s<H;s+=x)D(s);return H-q}(y);y+=function(q){var s,x=n.vertex_index_bytes*3+n.material_index_bytes+n.normal_index_bytes*3,H=q+n.ntri_smooth*x;for(s=q;s<H;s+=x)r(s);return H-q}(y);y+=function(q){var s,x=n.vertex_index_bytes*3+n.material_index_bytes,H=x+n.uv_index_bytes*3,U=q+n.ntri_flat_uv*H;for(s=q;s<U;s+=H){D(s);w(s+x)}return U-q}(y);y+=function(q){var s,x=n.vertex_index_bytes*3+n.material_index_bytes+n.normal_index_bytes*3,H=x+n.uv_index_bytes*3,
+U=q+n.ntri_smooth_uv*H;for(s=q;s<U;s+=H){r(s);w(s+x)}return U-q}(y);y+=function(q){var s,x=n.vertex_index_bytes*4+n.material_index_bytes,H=q+n.nquad_flat*x;for(s=q;s<H;s+=x)t(s);return H-q}(y);y+=function(q){var s,x=n.vertex_index_bytes*4+n.material_index_bytes+n.normal_index_bytes*4,H=q+n.nquad_smooth*x;for(s=q;s<H;s+=x)u(s);return H-q}(y);y+=function(q){var s,x=n.vertex_index_bytes*4+n.material_index_bytes,H=x+n.uv_index_bytes*4,U=q+n.nquad_flat_uv*H;for(s=q;s<U;s+=H){t(s);I(s+x)}return U-q}(y);
+y+=function(q){var s,x=n.vertex_index_bytes*4+n.material_index_bytes+n.normal_index_bytes*4,H=x+n.uv_index_bytes*4,U=q+n.nquad_smooth_uv*H;for(s=q;s<U;s+=H){u(s);I(s+x)}return U-q}(y);this.computeCentroids();this.computeNormals();this.sortFacesByMaterial()};g.prototype=new THREE.Geometry;g.prototype.constructor=g;b(new g(d))},createModel:function(a,b,d){var e=function(g){var j=this;THREE.Geometry.call(this);THREE.Loader.prototype.init_materials(j,a.materials,g);(function(){var k,f,p,c,v;k=0;for(f=
+a.vertices.length;k<f;k+=3){p=a.vertices[k];c=a.vertices[k+1];v=a.vertices[k+2];THREE.Loader.prototype.v(j,p,c,v)}})();(function(){function k(u,w){THREE.Loader.prototype.f3(j,u[w],u[w+1],u[w+2],u[w+3])}function f(u,w){THREE.Loader.prototype.f3n(j,a.normals,u[w],u[w+1],u[w+2],u[w+3],u[w+4],u[w+5],u[w+6])}function p(u,w){THREE.Loader.prototype.f4(j,u[w],u[w+1],u[w+2],u[w+3],u[w+4])}function c(u,w){THREE.Loader.prototype.f4n(j,a.normals,u[w],u[w+1],u[w+2],u[w+3],u[w+4],u[w+5],u[w+6],u[w+7],u[w+8])}function v(u,
+w){var I,F,y;I=u[w];F=u[w+1];y=u[w+2];THREE.Loader.prototype.uv3(j,a.uvs[I*2],a.uvs[I*2+1],a.uvs[F*2],a.uvs[F*2+1],a.uvs[y*2],a.uvs[y*2+1])}function D(u,w){var I,F,y,n;I=u[w];F=u[w+1];y=u[w+2];n=u[w+3];THREE.Loader.prototype.uv4(j,a.uvs[I*2],a.uvs[I*2+1],a.uvs[F*2],a.uvs[F*2+1],a.uvs[y*2],a.uvs[y*2+1],a.uvs[n*2],a.uvs[n*2+1])}var r,t;r=0;for(t=a.triangles.length;r<t;r+=4)k(a.triangles,r);r=0;for(t=a.triangles_uv.length;r<t;r+=7){k(a.triangles_uv,r);v(a.triangles_uv,r+4)}r=0;for(t=a.triangles_n.length;r<
+t;r+=7)f(a.triangles_n,r);r=0;for(t=a.triangles_n_uv.length;r<t;r+=10){f(a.triangles_n_uv,r);v(a.triangles_n_uv,r+7)}r=0;for(t=a.quads.length;r<t;r+=5)p(a.quads,r);r=0;for(t=a.quads_uv.length;r<t;r+=9){p(a.quads_uv,r);D(a.quads_uv,r+5)}r=0;for(t=a.quads_n.length;r<t;r+=9)c(a.quads_n,r);r=0;for(t=a.quads_n_uv.length;r<t;r+=13){c(a.quads_n_uv,r);D(a.quads_n_uv,r+9)}})();this.computeCentroids();this.computeNormals();this.sortFacesByMaterial()};e.prototype=new THREE.Geometry;e.prototype.constructor=e;
+b(new e(d))},v:function(a,b,d,e){a.vertices.push(new THREE.Vertex(new THREE.Vector3(b,d,e)))},f3:function(a,b,d,e,g){a.faces.push(new THREE.Face3(b,d,e,null,a.materials[g]))},f4:function(a,b,d,e,g,j){a.faces.push(new THREE.Face4(b,d,e,g,null,a.materials[j]))},f3n:function(a,b,d,e,g,j,k,f,p){j=a.materials[j];var c=b[f*3],v=b[f*3+1];f=b[f*3+2];var D=b[p*3],r=b[p*3+1];p=b[p*3+2];a.faces.push(new THREE.Face3(d,e,g,[new THREE.Vector3(b[k*3],b[k*3+1],b[k*3+2]),new THREE.Vector3(c,v,f),new THREE.Vector3(D,
+r,p)],j))},f4n:function(a,b,d,e,g,j,k,f,p,c,v){k=a.materials[k];var D=b[p*3],r=b[p*3+1];p=b[p*3+2];var t=b[c*3],u=b[c*3+1];c=b[c*3+2];var w=b[v*3],I=b[v*3+1];v=b[v*3+2];a.faces.push(new THREE.Face4(d,e,g,j,[new THREE.Vector3(b[f*3],b[f*3+1],b[f*3+2]),new THREE.Vector3(D,r,p),new THREE.Vector3(t,u,c),new THREE.Vector3(w,I,v)],k))},uv3:function(a,b,d,e,g,j,k){var f=[];f.push(new THREE.UV(b,d));f.push(new THREE.UV(e,g));f.push(new THREE.UV(j,k));a.uvs.push(f)},uv4:function(a,b,d,e,g,j,k,f,p){var c=[];
+c.push(new THREE.UV(b,d));c.push(new THREE.UV(e,g));c.push(new THREE.UV(j,k));c.push(new THREE.UV(f,p));a.uvs.push(c)},init_materials:function(a,b,d){a.materials=[];for(var e=0;e<b.length;++e)a.materials[e]=[THREE.Loader.prototype.createMaterial(b[e],d)]},createMaterial:function(a,b){function d(j){j=Math.log(j)/Math.LN2;return Math.floor(j)==j}var e,g;if(a.map_diffuse&&b){g=document.createElement("canvas");e=new THREE.MeshLambertMaterial({map:new THREE.Texture(g)});g=new Image;g.onload=function(){if(!d(this.width)||
+!d(this.height)){var j=Math.pow(2,Math.round(Math.log(this.width)/Math.LN2)),k=Math.pow(2,Math.round(Math.log(this.height)/Math.LN2));e.map.image.width=j;e.map.image.height=k;e.map.image.getContext("2d").drawImage(this,0,0,j,k)}else e.map.image=this;e.map.image.loaded=1};g.src=b+"/"+a.map_diffuse}else if(a.col_diffuse){g=(a.col_diffuse[0]*255<<16)+(a.col_diffuse[1]*255<<8)+a.col_diffuse[2]*255;e=new THREE.MeshLambertMaterial({color:g,opacity:a.transparency})}else e=a.a_dbg_color?new THREE.MeshLambertMaterial({color:a.a_dbg_color}):
 new THREE.MeshLambertMaterial({color:15658734});return e}};

+ 10 - 3
examples/canvasrenderer_sandbox.html

@@ -49,7 +49,14 @@
 		<script type="text/javascript" src="../src/materials/MeshFaceMaterial.js"></script>
 		<script type="text/javascript" src="../src/materials/ParticleBasicMaterial.js"></script>
 		<script type="text/javascript" src="../src/materials/ParticleCircleMaterial.js"></script>
-		<script type="text/javascript" src="../src/materials/textures/Texture.js"></script>
+		<script type="text/javascript" src="../src/materials/Texture.js"></script>
+		<script type="text/javascript" src="../src/materials/mappings/CubeReflectionMapping.js"></script>
+		<script type="text/javascript" src="../src/materials/mappings/CubeRefractionMapping.js"></script>
+		<script type="text/javascript" src="../src/materials/mappings/LatitudeReflectionMapping.js"></script>
+		<script type="text/javascript" src="../src/materials/mappings/LatitudeRefractionMapping.js"></script>
+		<script type="text/javascript" src="../src/materials/mappings/SphericalReflectionMapping.js"></script>
+		<script type="text/javascript" src="../src/materials/mappings/SphericalRefractionMapping.js"></script>
+		<script type="text/javascript" src="../src/materials/mappings/UVMapping.js"></script>
 		<script type="text/javascript" src="../src/scenes/Scene.js"></script>
 		<script type="text/javascript" src="../src/renderers/Projector.js"></script>
 		<script type="text/javascript" src="../src/renderers/CanvasRenderer.js"></script>
@@ -133,12 +140,12 @@
 				objects = [];
 
 				geometry = new Sphere( 100, 16, 8 );
-				material = new THREE.MeshBasicMaterial( { env_map: ImageUtils.loadTexture( 'textures/envmap.png', THREE.ReflectionMapping ) } );
+				material = new THREE.MeshBasicMaterial( { env_map: ImageUtils.loadTexture( 'textures/envmap.png', new THREE.SphericalReflectionMapping() ) } );
 
 				for ( var i = 0; i < 10; i ++ ) {
 
 					sphere = new THREE.Mesh( geometry, material );
-					// sphere.overdraw = true;
+					sphere.overdraw = true;
 
 					sphere.position.x = Math.random() * 1000 - 500;
 					sphere.position.y = Math.random() * 1000 - 500;

+ 2 - 2
examples/geometry_earth.html

@@ -68,12 +68,12 @@
 
 				scene = new THREE.Scene();
 
-				mesh = new THREE.Mesh( new Plane( 300, 300, 3, 3 ), new THREE.MeshBasicMaterial( { map: ImageUtils.loadTexture( 'textures/shadow.png', THREE.UVMapping ) } ) );
+				mesh = new THREE.Mesh( new Plane( 300, 300, 3, 3 ), new THREE.MeshBasicMaterial( { map: ImageUtils.loadTexture( 'textures/shadow.png' ) } ) );
 				mesh.position.y = - 250;
 				mesh.rotation.x = - 90 * Math.PI / 180;
 				scene.addObject(mesh);
 
-				mesh = new THREE.Mesh( new Sphere( 200, 20, 20 ), new THREE.MeshBasicMaterial( { map: ImageUtils.loadTexture( 'textures/land_ocean_ice_cloud_2048.jpg', THREE.UVMapping ) } ) );
+				mesh = new THREE.Mesh( new Sphere( 200, 20, 20 ), new THREE.MeshBasicMaterial( { map: ImageUtils.loadTexture( 'textures/land_ocean_ice_cloud_2048.jpg' ) } ) );
 				mesh.overdraw = true;
 				scene.addObject(mesh);
 

+ 13 - 15
examples/geometry_panorama.html

@@ -40,7 +40,7 @@
 			var camera, scene, renderer;
 
 			var fov = 75,
-			texture_placeholder, wireframe,
+			texture_placeholder,
 			isUserInteracting = false,
 			onMouseDownMouseX = 0, onMouseDownMouseY = 0,
 			lon = 90, onMouseDownLon = 0,
@@ -63,19 +63,20 @@
 				texture_placeholder.width = 128;
 				texture_placeholder.height = 128;
 
-				wireframe = new THREE.MeshBasicMaterial( { color: 0xffffff, opacity: 0, wireframe: true } );
-
 				var context = texture_placeholder.getContext( '2d' );
 				context.fillStyle = 'rgb( 200, 200, 200 )';
 				context.fillRect( 0, 0, texture_placeholder.width, texture_placeholder.height );
 
-				var materials = [];
-				materials.push( [ loadTexture( 'textures/cube/skybox/px.jpg' ), wireframe ] ); // right
-				materials.push( [ loadTexture( 'textures/cube/skybox/nx.jpg' ), wireframe ] ); // left
-				materials.push( [ loadTexture( 'textures/cube/skybox/py.jpg' ), wireframe ] ); // top
-				materials.push( [ loadTexture( 'textures/cube/skybox/ny.jpg' ), wireframe ] ); // bottom
-				materials.push( [ loadTexture( 'textures/cube/skybox/pz.jpg' ), wireframe ] ); // back
-				materials.push( [ loadTexture( 'textures/cube/skybox/nz.jpg' ), wireframe ] ); // front
+				var materials = [
+
+					loadTexture( 'textures/cube/skybox/px.jpg' ), // right
+					loadTexture( 'textures/cube/skybox/nx.jpg' ), // left
+					loadTexture( 'textures/cube/skybox/py.jpg' ), // top
+					loadTexture( 'textures/cube/skybox/ny.jpg' ), // bottom
+					loadTexture( 'textures/cube/skybox/pz.jpg' ), // back
+					loadTexture( 'textures/cube/skybox/nz.jpg' ) // front
+
+				];
 
 				mesh = new THREE.Mesh( new Cube( 300, 300, 300, 7, 7, materials, true ), new THREE.MeshFaceMaterial() );
 				mesh.overdraw = true;
@@ -98,14 +99,14 @@
 
 			function loadTexture( path ) {
 
-				var material = new THREE.MeshBasicMaterial( { map: new THREE.Texture( texture_placeholder, THREE.UVMapping ) } );
+				var material = new THREE.MeshBasicMaterial( { map: new THREE.Texture( texture_placeholder ) } );
 
 				var image = new Image();
 
 				image.onload = function () {
 
+					this.loaded = true;
 					material.map.image = this;
-					material.map.loaded = true;
 					render();
 
 				};
@@ -121,8 +122,6 @@
 
 				isUserInteracting = true;
 
-				wireframe.opacity = 0.2;
-
 				onPointerDownPointerX = event.clientX;
 				onPointerDownPointerY = event.clientY;
 
@@ -145,7 +144,6 @@
 			function onDocumentMouseUp( event ) {
 
 				isUserInteracting = false;
-				wireframe.opacity = 0;
 				render();
 
 			}

+ 13 - 15
examples/geometry_panorama_fisheye.html

@@ -39,7 +39,7 @@
 			var camera, scene, renderer;
 
 			var fov = 75,
-			texture_placeholder, wireframe,
+			texture_placeholder,
 			isUserInteracting = false,
 			onMouseDownMouseX = 0, onMouseDownMouseY = 0,
 			lon = 90, onMouseDownLon = 0,
@@ -62,19 +62,20 @@
 				texture_placeholder.width = 128;
 				texture_placeholder.height = 128;
 
-				wireframe = new THREE.MeshBasicMaterial( { color: 0xffffff, opacity: 0, wireframe: true } );
-
 				var context = texture_placeholder.getContext( '2d' );
 				context.fillStyle = 'rgb( 200, 200, 200 )';
 				context.fillRect( 0, 0, texture_placeholder.width, texture_placeholder.height );
 
-				var materials = [];
-				materials.push( [ loadTexture( 'textures/cube/skybox/px.jpg' ), wireframe ] ); // right
-				materials.push( [ loadTexture( 'textures/cube/skybox/nx.jpg' ), wireframe ] ); // left
-				materials.push( [ loadTexture( 'textures/cube/skybox/py.jpg' ), wireframe ] ); // top
-				materials.push( [ loadTexture( 'textures/cube/skybox/ny.jpg' ), wireframe ] ); // bottom
-				materials.push( [ loadTexture( 'textures/cube/skybox/pz.jpg' ), wireframe ] ); // back
-				materials.push( [ loadTexture( 'textures/cube/skybox/nz.jpg' ), wireframe ] ); // front
+				var materials = [
+
+					loadTexture( 'textures/cube/skybox/px.jpg' ), // right
+					loadTexture( 'textures/cube/skybox/nx.jpg' ), // left
+					loadTexture( 'textures/cube/skybox/py.jpg' ), // top
+					loadTexture( 'textures/cube/skybox/ny.jpg' ), // bottom
+					loadTexture( 'textures/cube/skybox/pz.jpg' ), // back
+					loadTexture( 'textures/cube/skybox/nz.jpg' ) // front
+
+				];
 
 				mesh = new THREE.Mesh( new Cube( 300, 300, 300, 7, 7, materials, true ), new THREE.MeshFaceMaterial() );
 				mesh.overdraw = true;
@@ -107,14 +108,14 @@
 
 			function loadTexture( path ) {
 
-				var material = new THREE.MeshBasicMaterial( { map: new THREE.Texture( texture_placeholder, THREE.UVMapping ) } );
+				var material = new THREE.MeshBasicMaterial( { map: new THREE.Texture( texture_placeholder ) } );
 
 				var image = new Image();
 
 				image.onload = function () {
 
+					this.loaded = true;
 					material.map.image = this;
-					material.map.loaded = true;
 					render();
 
 				};
@@ -130,8 +131,6 @@
 
 				isUserInteracting = true;
 
-				wireframe.opacity = 0.2;
-
 				onPointerDownPointerX = event.clientX;
 				onPointerDownPointerY = event.clientY;
 
@@ -154,7 +153,6 @@
 			function onDocumentMouseUp( event ) {
 
 				isUserInteracting = false;
-				wireframe.opacity = 0;
 				render();
 
 			}

+ 2 - 2
examples/geometry_terrain.html

@@ -69,8 +69,8 @@
 
 				var heightMap = height( 1024, 1024 );
 
-				var texture = new THREE.Texture( shadow( heightMap ), THREE.UVMapping );
-				texture.loaded = true;
+				var texture = new THREE.Texture( shadow( heightMap ) );
+				texture.image.loaded = true;
 
 				var material = new THREE.MeshBasicMaterial( { map: texture } );
 

+ 3 - 3
examples/materials.html

@@ -78,9 +78,9 @@
 				// materials.push( { material: new THREE.MeshPhongMaterial( { ambient: 0x030383, color: 0xf55555, specular: 0x66f6f6, shininess: 10, shading: THREE.FlatShading } ), overdraw: true, doubleSided: false } );
 				materials.push( { material: new THREE.MeshDepthMaterial( { near: 1, far: 2000 } ), overdraw: true, doubleSided: false } );
 				materials.push( { material: new THREE.MeshNormalMaterial(), overdraw: true, doubleSided: false } );
-				materials.push( { material: new THREE.MeshBasicMaterial( { map: ImageUtils.loadTexture( 'textures/land_ocean_ice_cloud_2048.jpg', THREE.UVMapping ) } ), overdraw: false, doubleSided: false } );
-				materials.push( { material: new THREE.MeshLambertMaterial( { map: ImageUtils.loadTexture( 'textures/land_ocean_ice_cloud_2048.jpg', THREE.UVMapping ) } ), overdraw: false, doubleSided: false } );
-				materials.push( { material: new THREE.MeshBasicMaterial( { env_map: ImageUtils.loadTexture( 'textures/envmap.png', THREE.ReflectionMapping ) } ), overdraw: false, doubleSided: false } );
+				materials.push( { material: new THREE.MeshBasicMaterial( { map: ImageUtils.loadTexture( 'textures/land_ocean_ice_cloud_2048.jpg' ) } ), overdraw: false, doubleSided: false } );
+				materials.push( { material: new THREE.MeshLambertMaterial( { map: ImageUtils.loadTexture( 'textures/land_ocean_ice_cloud_2048.jpg' ) } ), overdraw: false, doubleSided: false } );
+				materials.push( { material: new THREE.MeshBasicMaterial( { env_map: ImageUtils.loadTexture( 'textures/envmap.png', new THREE.SphericalReflectionMapping() ) } ), overdraw: false, doubleSided: false } );
 
 				for ( var i = 0, l = geometry.faces.length; i < l; i ++ ) {
 

+ 15 - 15
examples/materials_cars.html

@@ -226,28 +226,28 @@
 							 r + "posz.jpg", r + "negz.jpg" ];
 
 				var images = ImageUtils.loadArray( urls );
-				var textureCube = new THREE.TextureCube( images );
+				var textureCube = new THREE.Texture( images );
 
 				// common materials
 
 				var mlib = {
 
-				"Orange": 	new THREE.MeshLambertMaterial( { color: 0xff6600, env_map: textureCube, combine: THREE.Mix, reflectivity: 0.3 } ),
-				"Blue": 	new THREE.MeshLambertMaterial( { color: 0x001133, env_map: textureCube, combine: THREE.Mix, reflectivity: 0.3 } ),
-				"Red": 		new THREE.MeshLambertMaterial( { color: 0x660000, env_map: textureCube, combine: THREE.Mix, reflectivity: 0.25 } ),
-				"Black": 	new THREE.MeshLambertMaterial( { color: 0x000000, env_map: textureCube, combine: THREE.Mix, reflectivity: 0.15 } ),
-				"White":	new THREE.MeshLambertMaterial( { color: 0xffffff, env_map: textureCube, combine: THREE.Mix, reflectivity: 0.25 } ),
+				"Orange": 	new THREE.MeshLambertMaterial( { color: 0xff6600, env_map: textureCube, combine: THREE.MixOperation, reflectivity: 0.3 } ),
+				"Blue": 	new THREE.MeshLambertMaterial( { color: 0x001133, env_map: textureCube, combine: THREE.MixOperation, reflectivity: 0.3 } ),
+				"Red": 		new THREE.MeshLambertMaterial( { color: 0x660000, env_map: textureCube, combine: THREE.MixOperation, reflectivity: 0.25 } ),
+				"Black": 	new THREE.MeshLambertMaterial( { color: 0x000000, env_map: textureCube, combine: THREE.MixOperation, reflectivity: 0.15 } ),
+				"White":	new THREE.MeshLambertMaterial( { color: 0xffffff, env_map: textureCube, combine: THREE.MixOperation, reflectivity: 0.25 } ),
 
-				"Carmine": 	new THREE.MeshPhongMaterial( { color: 0x770000, specular:0xffaaaa, env_map: textureCube, combine: THREE.Multiply } ),
-				"Gold": 	new THREE.MeshPhongMaterial( { color: 0xaa9944, specular:0xbbaa99, shininess:50, env_map: textureCube, combine: THREE.Multiply } ),
-				"Bronze":	new THREE.MeshPhongMaterial( { color: 0x150505, specular:0xee6600, shininess:10, env_map: textureCube, combine: THREE.Mix, reflectivity: 0.25 } ),
+				"Carmine": 	new THREE.MeshPhongMaterial( { color: 0x770000, specular:0xffaaaa, env_map: textureCube, combine: THREE.MultiplyOperation } ),
+				"Gold": 	new THREE.MeshPhongMaterial( { color: 0xaa9944, specular:0xbbaa99, shininess:50, env_map: textureCube, combine: THREE.MultiplyOperation } ),
+				"Bronze":	new THREE.MeshPhongMaterial( { color: 0x150505, specular:0xee6600, shininess:10, env_map: textureCube, combine: THREE.MixOperation, reflectivity: 0.25 } ),
 				"Chrome": 	new THREE.MeshPhongMaterial( { color: 0xffffff, specular:0xffffff, env_map: textureCube, combine: THREE.Multiply } ),
 
-				"Orange metal": new THREE.MeshLambertMaterial( { color: 0xff6600, env_map: textureCube, combine: THREE.Multiply } ),
-				"Blue metal": 	new THREE.MeshLambertMaterial( { color: 0x001133, env_map: textureCube, combine: THREE.Multiply  } ),
-				"Red metal": 	new THREE.MeshLambertMaterial( { color: 0x770000, env_map: textureCube, combine: THREE.Multiply } ),
-				"Green metal": 	new THREE.MeshLambertMaterial( { color: 0x007711, env_map: textureCube, combine: THREE.Multiply } ),
-				"Black metal":	new THREE.MeshLambertMaterial( { color: 0x222222, env_map: textureCube, combine: THREE.Multiply } ),
+				"Orange metal": new THREE.MeshLambertMaterial( { color: 0xff6600, env_map: textureCube, combine: THREE.MultiplyOperation } ),
+				"Blue metal": 	new THREE.MeshLambertMaterial( { color: 0x001133, env_map: textureCube, combine: THREE.MultiplyOperation  } ),
+				"Red metal": 	new THREE.MeshLambertMaterial( { color: 0x770000, env_map: textureCube, combine: THREE.MultiplyOperation } ),
+				"Green metal": 	new THREE.MeshLambertMaterial( { color: 0x007711, env_map: textureCube, combine: THREE.MultiplyOperation } ),
+				"Black metal":	new THREE.MeshLambertMaterial( { color: 0x222222, env_map: textureCube, combine: THREE.MultiplyOperation } ),
 
 				"Pure chrome": 	new THREE.MeshLambertMaterial( { color: 0xffffff, env_map: textureCube } ),
 				"Dark chrome":	new THREE.MeshLambertMaterial( { color: 0x444444, env_map: textureCube } ),
@@ -256,7 +256,7 @@
 				"Black glass": 	new THREE.MeshLambertMaterial( { color: 0x101016, env_map: textureCube, opacity: 0.975 } ),
 				"Dark glass":	new THREE.MeshLambertMaterial( { color: 0x101046, env_map: textureCube, opacity: 0.25 } ),
 				"Blue glass":	new THREE.MeshLambertMaterial( { color: 0x668899, env_map: textureCube, opacity: 0.75 } ),
-				"Light glass":	new THREE.MeshBasicMaterial( { color: 0x223344, env_map: textureCube, opacity: 0.25, combine: THREE.Mix, reflectivity: 0.25 } ),
+				"Light glass":	new THREE.MeshBasicMaterial( { color: 0x223344, env_map: textureCube, opacity: 0.25, combine: THREE.MixOperation, reflectivity: 0.25 } ),
 
 				"Red glass":	new THREE.MeshLambertMaterial( { color: 0xff0000, opacity: 0.75 } ),
 				"Yellow glass":	new THREE.MeshLambertMaterial( { color: 0xffffaa, opacity: 0.75 } ),

+ 4 - 4
examples/materials_cubemap.html

@@ -107,11 +107,11 @@
 
 				var images = ImageUtils.loadArray( urls );
 
-				var reflectionCube = new THREE.TextureCube( images );
-				var refractionCube = new THREE.TextureCube( images, THREE.RefractionMapping );
+				var reflectionCube = new THREE.Texture( images );
+				var refractionCube = new THREE.Texture( images, new THREE.CubeRefractionMapping() );
 				
-				//var cubeMaterial3 = new THREE.MeshPhongMaterial( { color: 0x000000, specular:0xaa0000, env_map: new THREE.TextureCube( images ), combine: THREE.Mix, reflectivity: 0.25 } );
-				var cubeMaterial3 = new THREE.MeshLambertMaterial( { color: 0xff6600, env_map: reflectionCube, combine: THREE.Mix, reflectivity: 0.3 } );
+				//var cubeMaterial3 = new THREE.MeshPhongMaterial( { color: 0x000000, specular:0xaa0000, env_map: new THREE.TextureCube( images ), combine: THREE.MixOperation, reflectivity: 0.25 } );
+				var cubeMaterial3 = new THREE.MeshLambertMaterial( { color: 0xff6600, env_map: reflectionCube, combine: THREE.MixOperation, reflectivity: 0.3 } );
 				var cubeMaterial2 = new THREE.MeshLambertMaterial( { color: 0xffee00, env_map: refractionCube, refraction_ratio: 0.95 } );
 				var cubeMaterial1 = new THREE.MeshLambertMaterial( { color: 0xffffff, env_map: reflectionCube } )
 

+ 2 - 2
examples/materials_cubemap_balls_reflection.html

@@ -92,8 +92,8 @@
 					];
 
 				var images = ImageUtils.loadArray( urls );
-				var textureCube = new THREE.TextureCube( images );
-				// var textureCube = new THREE.TextureCube( images, THREE.RefractionMap );
+				var textureCube = new THREE.Texture( images );
+				// var textureCube = new THREE.Texture( images, new THREE.CubeRefractionMapping );
 
 				var material = new THREE.MeshBasicMaterial( { color: 0xffffff, env_map: textureCube } );
 

+ 1 - 1
examples/materials_cubemap_balls_refraction.html

@@ -92,7 +92,7 @@
 					];
 
 				var images = ImageUtils.loadArray( urls );
-				var textureCube = new THREE.TextureCube( images, THREE.RefractionMapping );
+				var textureCube = new THREE.Texture( images, new THREE.CubeRefractionMapping() );
 				var material = new THREE.MeshBasicMaterial( { color: 0xffffff, env_map: textureCube, refraction_ratio: 0.95 } );
 
 				for ( var i = 0; i < 200; i ++ ) {

+ 1 - 1
examples/materials_cubemap_escher.html

@@ -82,7 +82,7 @@
 
 				var images = ImageUtils.loadArray( urls );
 
-				var textureCube = new THREE.TextureCube( images );
+				var textureCube = new THREE.Texture( images );
 				var material = new THREE.MeshBasicMaterial( { color: 0xffffff, env_map: textureCube } )
 				var geometry = new Sphere( 100, 96, 64, true );
 

+ 1 - 1
examples/materials_cubemap_refraction.html

@@ -107,7 +107,7 @@
 							 r + "pz.jpg", r + "nz.jpg" ];
 
 				var images = ImageUtils.loadArray( urls );
-				var textureCube = new THREE.TextureCube( images, THREE.RefractionMapping );
+				var textureCube = new THREE.Texture( images, new THREE.CubeRefractionMapping() );
 
 				var cubeMaterial3 = new THREE.MeshBasicMaterial( { color: 0xccddff, env_map: textureCube, refraction_ratio: 0.98, reflectivity:0.9 } );
 				var cubeMaterial2 = new THREE.MeshBasicMaterial( { color: 0xccfffd, env_map: textureCube, refraction_ratio: 0.985 } );

+ 1 - 1
examples/materials_reflection.html

@@ -64,7 +64,7 @@
 				geometry = new WaltHead();
 				geometry.computeVertexNormals();
 
-				mesh = new THREE.Mesh( geometry, new THREE.MeshBasicMaterial( { env_map: ImageUtils.loadTexture( 'textures/metal.jpg', THREE.ReflectionMapping ) } ) );
+				mesh = new THREE.Mesh( geometry, new THREE.MeshBasicMaterial( { env_map: ImageUtils.loadTexture( 'textures/metal.jpg', new THREE.SphericalReflectionMapping() ) } ) );
 				mesh.overdraw = true;
 				scene.addObject( mesh );
 

+ 1 - 1
examples/materials_shaders_fresnel.html

@@ -90,7 +90,7 @@
 
 
 				var images = ImageUtils.loadArray( urls );
-				var textureCube = new THREE.TextureCube( images );
+				var textureCube = new THREE.Texture( images );
 
 				var fragment_shader = ShaderUtils.lib["fresnel"].fragment_shader;
 				var vertex_shader = ShaderUtils.lib["fresnel"].vertex_shader;

+ 4 - 3
examples/materials_video.html

@@ -74,6 +74,7 @@
 				// 
 
 				texture = document.createElement( 'canvas' );
+				texture.loaded = true;
 				texture.width = 480;
 				texture.height = 204;
 
@@ -81,12 +82,12 @@
 				textureContext.fillStyle = '#000000';
 				textureContext.fillRect( 0, 0, 480, 204 );
 
-				var map = new THREE.Texture( texture, THREE.UVMapping );
-				map.loaded = true;
+				var map = new THREE.Texture( texture );
 
 				var material = new THREE.MeshBasicMaterial( { map: map } );
 
 				textureReflection = document.createElement( 'canvas' );
+				textureReflection.loaded = true;
 				textureReflection.width = 480;
 				textureReflection.height = 204;
 
@@ -98,7 +99,7 @@
 				textureReflectionGradient.addColorStop( 0.2, 'rgba(240, 240, 240, 1)' );
 				textureReflectionGradient.addColorStop( 1, 'rgba(240, 240, 240, 0.8)' );
 
-				var materialReflection = new THREE.MeshBasicMaterial( { map: new THREE.Texture( textureReflection, THREE.UVMapping ) } );
+				var materialReflection = new THREE.MeshBasicMaterial( { map: new THREE.Texture( textureReflection ) } );
 
 				//
 

+ 0 - 4394
examples/obj/Q5/Q5.js

@@ -1,4394 +0,0 @@
-// Converted from: Q5.obj
-//  vertices: 1734
-//  faces: 1259 
-//  materials: 2
-//
-//  Generated with OBJ -> Three.js converter
-//  http://github.com/alteredq/three.js/blob/master/utils/exporters/convert_obj_threejs.py
-
-var Q5 = function ( urlbase ) {
-    var scope = this;
-
-    THREE.Geometry.call(this);
-
-    var materials = [	{
-	"a_dbg_color" : 0xffeeeeee,
-	"a_dbg_index" : 0,
-	"a_dbg_name" : "brown_dark"
-	},
-
-	{
-	"a_dbg_color" : 0xffee0000,
-	"a_dbg_index" : 1,
-	"a_dbg_name" : "brown_light"
-	}];
-
-    init_materials();
-    
-    var normals = [];
-
-	v(30.999997,127.000004,-24.639863);
-	v(30.999997,106.000004,-44.639861);
-	v(9.999997,88.000004,-44.639861);
-	v(31.000000,89.000004,22.360137);
-	v(9.999997,106.000004,-44.639861);
-	v(30.999999,127.000004,8.360137);
-	v(29.000000,89.000004,22.360137);
-	v(30.999999,101.000004,-0.639863);
-	v(30.999999,101.000004,8.360137);
-	v(-28.999998,73.000004,39.360137);
-	v(31.000000,101.000004,22.360137);
-	v(30.999999,92.000004,8.360137);
-	v(44.999999,19.000004,39.360137);
-	v(30.999997,77.000004,-44.639861);
-	v(31.000000,92.000004,19.360137);
-	v(-35.999998,16.000004,-42.639861);
-	v(-14.000006,37.000004,-43.639861);
-	v(29.999997,21.000004,-29.639863);
-	v(38.999999,67.000004,-29.639863);
-	v(38.999999,21.000004,-43.639861);
-	v(38.999999,55.000004,-26.639863);
-	v(38.999999,67.000004,-38.639861);
-	v(38.999999,74.000004,-29.639863);
-	v(38.999999,74.000004,-16.639863);
-	v(38.999999,59.000004,-43.639861);
-	v(38.999999,55.000004,-16.639863);
-	v(38.999999,59.000004,-29.639863);
-	v(38.999999,68.000004,-0.639863);
-	v(38.999999,49.000004,-16.639863);
-	v(38.999999,87.000004,-0.639863);
-	v(38.999999,87.000004,-38.639861);
-	v(38.999999,68.000004,-26.639863);
-	v(38.999999,49.000004,-29.639863);
-	v(38.999999,68.000004,-16.639863);
-	v(38.999999,68.000004,5.360137);
-	v(38.999999,32.000004,-29.639863);
-	v(-44.999998,63.000004,24.360141);
-	v(30.999999,77.000004,8.360137);
-	v(38.999999,32.000004,-7.639863);
-	v(38.999999,26.000004,-7.639863);
-	v(29.000000,77.000004,22.360137);
-	v(-42.999998,-69.000004,10.360141);
-	v(-42.999998,-69.000004,22.360141);
-	v(-42.999998,-99.000004,-9.639859);
-	v(-42.999998,-79.000004,10.360141);
-	v(-44.999998,40.000004,39.360145);
-	v(-35.999998,6.999996,7.360141);
-	v(-14.000006,16.000004,-42.639861);
-	v(-24.000005,-3.000004,-42.639861);
-	v(-28.999998,61.000004,32.360137);
-	v(-16.000006,-46.000004,-26.639861);
-	v(-29.999998,16.000004,-38.639861);
-	v(30.999999,87.000004,-0.639863);
-	v(-20.000006,-61.000004,-26.639859);
-	v(30.999997,87.000004,-38.639861);
-	v(-29.999998,47.000004,8.360141);
-	v(30.999999,77.000004,-0.639863);
-	v(-16.000006,-46.000004,-28.639861);
-	v(30.999997,77.000004,-38.639861);
-	v(-42.999998,-31.000004,5.360141);
-	v(-49.999998,63.000004,8.360141);
-	v(-20.999998,-123.000004,22.360141);
-	v(-44.999998,18.000004,1.360141);
-	v(-44.999998,26.000004,1.360141);
-	v(-49.999998,92.000004,19.360141);
-	v(-35.999998,-46.000004,-26.639859);
-	v(-16.000006,-31.000004,-42.639861);
-	v(-15.000006,68.000004,-26.639861);
-	v(-35.999998,-22.000004,-2.639859);
-	v(-21.000001,-61.000004,-11.639859);
-	v(-42.999998,-123.000004,-38.639857);
-	v(-44.999998,40.000004,32.360145);
-	v(-24.000005,47.000004,-43.639861);
-	v(-49.999998,63.000004,24.360141);
-	v(38.999999,26.000004,5.360137);
-	v(-35.999998,13.999996,7.360141);
-	v(-42.999998,-79.000004,22.360141);
-	v(-0.000001,26.000004,5.360137);
-	v(-44.999998,84.000004,27.360141);
-	v(-44.999998,92.000004,19.360141);
-	v(-44.999998,6.999996,-29.639859);
-	v(-44.999998,6.999996,7.360141);
-	v(44.999999,6.999996,1.360137);
-	v(30.999999,92.000004,8.360137);
-	v(-30.999998,101.000004,-24.639859);
-	v(-0.000001,26.000004,5.360137);
-	v(-35.999998,-22.000004,5.360141);
-	v(-36.999998,55.000004,-26.639859);
-	v(-42.999998,-127.000004,22.360141);
-	v(-49.999998,87.000004,24.360141);
-	v(-30.999998,109.000004,-24.639859);
-	v(-44.999998,87.000004,24.360141);
-	v(-10.000001,117.000004,-34.639861);
-	v(38.999999,26.000004,5.360137);
-	v(-29.999998,21.000004,-38.639861);
-	v(-30.999998,109.000004,-8.639859);
-	v(-0.000001,26.000004,8.360137);
-	v(38.999999,21.000004,-29.639863);
-	v(-35.999998,6.999996,16.360141);
-	v(-20.000006,-117.000004,-38.639861);
-	v(-28.999998,40.000004,39.360137);
-	v(-30.999998,101.000004,-8.639859);
-	v(35.999999,-63.000004,16.360137);
-	v(15.999999,-11.000004,-26.639861);
-	v(42.999999,-81.000004,-14.639863);
-	v(21.000000,-63.000004,22.360137);
-	v(-42.999998,-63.000004,5.360141);
-	v(19.999999,-81.000004,-14.639863);
-	v(19.999997,-80.000004,-26.639861);
-	v(19.999997,-72.000004,-26.639861);
-	v(19.999997,-123.000004,-38.639861);
-	v(21.000000,-127.000004,22.360137);
-	v(42.999999,-80.000004,-26.639863);
-	v(21.000000,-71.000004,22.360137);
-	v(42.999999,-63.000004,22.360137);
-	v(19.999997,-127.000004,-38.639861);
-	v(42.999999,-101.000004,10.360137);
-	v(20.999999,-52.000004,-11.639863);
-	v(35.999999,-63.000004,5.360137);
-	v(44.999999,32.000004,-7.639863);
-	v(44.999999,32.000004,-29.639863);
-	v(44.999999,13.999996,7.360137);
-	v(44.999999,26.000004,-7.639863);
-	v(44.999999,63.000004,8.360137);
-	v(44.999999,61.000004,32.360137);
-	v(44.999999,26.000004,8.360137);
-	v(49.999999,92.000004,8.360137);
-	v(35.999999,-11.000004,-26.639863);
-	v(15.999999,-46.000004,-26.639861);
-	v(35.999999,16.000004,-29.639863);
-	v(29.999997,16.000004,-29.639863);
-	v(29.999997,21.000004,-29.639863);
-	v(49.999999,63.000004,8.360137);
-	v(49.999999,63.000004,24.360137);
-	v(49.999999,92.000004,19.360137);
-	v(35.999999,-11.000004,-42.639861);
-	v(15.999997,-11.000004,-42.639861);
-	v(35.999999,16.000004,-42.639861);
-	v(29.999997,21.000004,-38.639861);
-	v(44.999999,63.000004,24.360137);
-	v(35.999999,-22.000004,5.360137);
-	v(42.999999,-63.000004,5.360137);
-	v(42.999999,-22.000004,5.360137);
-	v(35.999999,-22.000004,-2.639863);
-	v(35.999999,-46.000004,-26.639863);
-	v(15.999999,-46.000004,-28.639861);
-	v(15.999997,-31.000004,-42.639861);
-	v(15.999999,-31.000004,-26.639861);
-	v(20.999999,-61.000004,-11.639863);
-	v(42.999999,-46.000004,-26.639863);
-	v(29.999997,16.000004,-38.639861);
-	v(42.999999,-22.000004,-2.639863);
-	v(19.999997,-61.000004,-26.639861);
-	v(19.999997,-52.000004,-26.639861);
-	v(42.999999,-123.000004,-38.639861);
-	v(44.999999,73.000004,39.360137);
-	v(42.999999,-127.000004,22.360137);
-	v(19.999997,-117.000004,-38.639861);
-	v(42.999999,-127.000004,-38.639861);
-	v(42.999999,-101.000004,22.360137);
-	v(42.999999,-94.000004,-14.639863);
-	v(42.999999,-117.000004,-38.639861);
-	v(19.999999,-94.000004,-14.639863);
-	v(35.999999,13.999996,7.360137);
-	v(35.999999,6.999996,16.360137);
-	v(35.999999,6.999996,39.360137);
-	v(35.999999,13.999996,39.360137);
-	v(44.999999,40.000004,39.360137);
-	v(29.000000,34.000004,39.360137);
-	v(44.999999,13.999996,39.360137);
-	v(35.999999,6.999996,7.360137);
-	v(35.999999,6.999996,-29.639863);
-	v(44.999999,6.999996,7.360137);
-	v(-30.999998,109.000004,-0.639859);
-	v(29.000000,40.000004,39.360137);
-	v(44.999999,40.000004,32.360137);
-	v(29.000000,61.000004,39.360137);
-	v(29.000000,61.000004,32.360137);
-	v(29.000000,40.000004,32.360137);
-	v(28.999999,34.000004,8.360137);
-	v(44.999999,6.999996,-29.639863);
-	v(44.999999,61.000004,39.360137);
-	v(29.000000,73.000004,39.360137);
-	v(49.999999,87.000004,24.360137);
-	v(44.999999,87.000004,24.360137);
-	v(-25.000005,68.000004,-26.639859);
-	v(-2.000001,68.000004,-26.639861);
-	v(-24.000005,21.000004,-43.639861);
-	v(-44.999998,73.000004,39.360145);
-	v(-44.999998,92.000004,8.360141);
-	v(-35.999998,6.999996,1.360141);
-	v(-30.999998,101.000004,-16.639859);
-	v(-42.999998,-22.000004,5.360141);
-	v(-24.000005,16.000004,-42.639861);
-	v(-14.000006,6.999996,-42.639861);
-	v(-44.999998,19.000004,27.360141);
-	v(-42.999998,-127.000004,-38.639857);
-	v(-28.999998,34.000004,8.360141);
-	v(-42.999998,-101.000004,22.360141);
-	v(-44.999998,61.000004,39.360145);
-	v(-42.999998,-94.000004,-14.639859);
-	v(-16.000006,-11.000004,-42.639861);
-	v(-35.999998,6.999996,39.360137);
-	v(-35.999998,13.999996,39.360137);
-	v(-30.999998,109.000004,-16.639859);
-	v(-42.999998,-90.000004,22.360141);
-	v(-42.999998,-109.000004,22.360141);
-	v(-42.999998,-90.000004,10.360141);
-	v(-28.999998,34.000004,39.360137);
-	v(-42.999998,-109.000004,-9.639859);
-	v(-42.999998,-45.000004,-9.639859);
-	v(-44.999998,13.999996,39.360145);
-	v(-35.999998,6.999996,-29.639859);
-	v(-42.999998,-123.000004,22.360141);
-	v(-35.999998,16.000004,-29.639859);
-	v(-42.999998,-22.000004,-2.639859);
-	v(-20.000006,-52.000004,-26.639859);
-	v(-35.999998,-11.000004,-42.639861);
-	v(-16.000006,-31.000004,-26.639861);
-	v(-42.999998,-46.000004,-26.639859);
-	v(-28.999998,61.000004,39.360137);
-	v(9.999997,117.000004,-34.639861);
-	v(-20.999998,-123.000004,22.360141);
-	v(-42.999998,-63.000004,10.360141);
-	v(30.999999,101.000004,-8.639863);
-	v(30.999999,109.000004,-0.639863);
-	v(30.999997,109.000004,-24.639863);
-	v(30.999999,109.000004,-16.639863);
-	v(30.999999,109.000004,-8.639863);
-	v(30.999997,101.000004,-24.639863);
-	v(30.999999,101.000004,-16.639863);
-	v(-14.000006,21.000004,-43.639861);
-	v(13.999997,6.999996,-42.639861);
-	v(13.999997,37.000004,-43.639861);
-	v(-42.999998,-117.000004,-38.639857);
-	v(23.999997,21.000004,-43.639861);
-	v(-20.000001,-94.000004,-14.639859);
-	v(44.999999,84.000004,27.360137);
-	v(44.999999,92.000004,8.360137);
-	v(44.999999,19.000004,27.360137);
-	v(44.999999,92.000004,19.360137);
-	v(44.999999,18.000004,1.360137);
-	v(44.999999,26.000004,1.360137);
-	v(35.999999,6.999996,1.360137);
-	v(35.999999,6.999996,1.360137);
-	v(24.999997,68.000004,-26.639863);
-	v(24.999997,55.000004,-26.639863);
-	v(1.999999,68.000004,-26.639861);
-	v(36.999999,68.000004,-26.639863);
-	v(1.999999,55.000004,-26.639861);
-	v(14.999999,55.000004,-26.639861);
-	v(14.999999,68.000004,-26.639861);
-	v(36.999999,55.000004,-26.639863);
-	v(-25.000005,55.000004,-26.639859);
-	v(23.999997,21.000004,-43.639861);
-	v(23.999997,16.000004,-42.639861);
-	v(-36.999998,68.000004,-26.639859);
-	v(-2.000001,55.000004,-26.639861);
-	v(23.999997,-3.000004,-42.639861);
-	v(-15.000006,55.000004,-26.639861);
-	v(23.999997,47.000004,-43.639861);
-	v(28.999999,37.000004,8.360137);
-	v(-28.999998,37.000004,8.360141);
-	v(13.999997,21.000004,-43.639861);
-	v(13.999997,16.000004,-42.639861);
-	v(29.999999,47.000004,8.360137);
-	v(-28.999998,40.000004,32.360137);
-	v(42.999999,-31.000004,5.360137);
-	v(-29.999998,16.000004,-29.639859);
-	v(-29.999998,21.000004,-29.639859);
-	v(21.000000,-123.000004,22.360137);
-	v(42.999999,-79.000004,22.360137);
-	v(42.999999,-69.000004,22.360137);
-	v(42.999999,-69.000004,10.360137);
-	v(21.000000,-123.000004,22.360137);
-	v(42.999999,-79.000004,10.360137);
-	v(42.999999,-90.000004,22.360137);
-	v(42.999999,-99.000004,-9.639863);
-	v(42.999999,-45.000004,-9.639863);
-	v(42.999999,-109.000004,22.360137);
-	v(42.999999,-90.000004,10.360137);
-	v(42.999999,-109.000004,-9.639863);
-	v(42.999999,-123.000004,22.360137);
-	v(42.999999,-63.000004,10.360137);
-	v(-30.999998,127.000004,-24.639859);
-	v(-30.999998,106.000004,-44.639861);
-	v(-10.000006,88.000004,-44.639861);
-	v(-30.999998,89.000004,22.360141);
-	v(-10.000006,106.000004,-44.639861);
-	v(-30.999998,127.000004,8.360141);
-	v(-28.999998,89.000004,22.360141);
-	v(-30.999998,101.000004,-0.639859);
-	v(-30.999998,101.000004,8.360141);
-	v(-30.999998,101.000004,22.360141);
-	v(-30.999998,92.000004,8.360141);
-	v(-44.999998,19.000004,39.360145);
-	v(-30.999998,77.000004,-44.639861);
-	v(-30.999998,92.000004,19.360141);
-	v(-29.999998,21.000004,-29.639859);
-	v(-38.999998,67.000004,-29.639859);
-	v(-38.999998,21.000004,-43.639861);
-	v(-38.999998,55.000004,-26.639859);
-	v(-38.999998,67.000004,-38.639861);
-	v(-38.999998,74.000004,-29.639859);
-	v(-38.999998,74.000004,-16.639859);
-	v(-38.999998,59.000004,-43.639861);
-	v(-38.999998,55.000004,-16.639859);
-	v(-38.999998,59.000004,-29.639859);
-	v(-38.999998,68.000004,-0.639859);
-	v(-38.999998,49.000004,-16.639859);
-	v(-38.999998,87.000004,-0.639859);
-	v(-38.999998,87.000004,-38.639861);
-	v(-38.999998,68.000004,-26.639859);
-	v(-38.999998,49.000004,-29.639859);
-	v(-38.999998,68.000004,-16.639859);
-	v(-38.999998,68.000004,5.360141);
-	v(-38.999998,32.000004,-29.639859);
-	v(-30.999998,77.000004,8.360141);
-	v(-38.999998,32.000004,-7.639859);
-	v(-38.999998,26.000004,-7.639859);
-	v(-28.999998,77.000004,22.360141);
-	v(-30.999998,87.000004,-0.639859);
-	v(-30.999998,87.000004,-38.639861);
-	v(-30.999998,77.000004,-0.639859);
-	v(-30.999998,77.000004,-38.639861);
-	v(-38.999998,26.000004,5.360141);
-	v(-44.999998,6.999996,1.360141);
-	v(-30.999998,92.000004,8.360141);
-	v(-38.999998,26.000004,5.360141);
-	v(-38.999998,21.000004,-29.639859);
-	v(-35.999998,-63.000004,16.360141);
-	v(-16.000006,-11.000004,-26.639861);
-	v(-42.999998,-81.000004,-14.639859);
-	v(-20.999998,-63.000004,22.360141);
-	v(-20.000001,-81.000004,-14.639859);
-	v(-20.000006,-80.000004,-26.639859);
-	v(-20.000006,-72.000004,-26.639859);
-	v(-20.000006,-123.000004,-38.639861);
-	v(-20.999998,-127.000004,22.360141);
-	v(-42.999998,-80.000004,-26.639859);
-	v(-20.999998,-71.000004,22.360141);
-	v(-42.999998,-63.000004,22.360141);
-	v(-20.000006,-127.000004,-38.639861);
-	v(-42.999998,-101.000004,10.360141);
-	v(-21.000001,-52.000004,-11.639859);
-	v(-35.999998,-63.000004,5.360141);
-	v(-44.999998,32.000004,-7.639859);
-	v(-44.999998,32.000004,-29.639859);
-	v(-44.999998,13.999996,7.360141);
-	v(-44.999998,26.000004,-7.639859);
-	v(-44.999998,63.000004,8.360141);
-	v(-44.999998,61.000004,32.360145);
-	v(-44.999998,26.000004,8.360141);
-	v(-49.999998,92.000004,8.360141);
-	v(-35.999998,-11.000004,-26.639859);
-	v(30.362561,70.252689,-39.869548);
-	v(30.362565,70.252689,19.566505);
-	v(30.362561,96.358936,-39.869548);
-	v(30.362563,91.588718,8.326995);
-	v(30.362563,115.020237,8.326995);
-	v(30.362563,115.020237,-22.153033);
-	v(30.362565,91.588718,19.566505);
-	v(30.362561,96.358936,-39.869548);
-	v(11.639485,80.017704,-39.869546);
-	v(30.362561,70.252689,-39.869548);
-	v(-23.548987,70.252689,-39.869544);
-	v(11.795737,96.358936,-39.869546);
-	v(-5.788939,80.017704,-39.869546);
-	v(-5.788939,96.358936,-39.869546);
-	v(-23.548987,96.358936,-39.869544);
-	v(11.639485,96.358936,-39.869546);
-	v(30.362561,96.358936,-39.869548);
-	v(30.362563,115.020237,-22.153033);
-	v(11.795737,96.358936,-39.869546);
-	v(11.795737,115.020237,-22.153032);
-	v(30.362563,115.020237,8.326995);
-	v(-23.548978,115.020237,8.326995);
-	v(30.362563,115.020237,-22.153033);
-	v(-23.548978,115.020237,-22.153031);
-	v(11.795737,115.020237,-22.153032);
-	v(-5.788939,115.020237,-22.153032);
-	v(30.362563,115.020237,8.326995);
-	v(30.362563,91.588718,8.326995);
-	v(-23.548978,115.020237,8.326995);
-	v(-23.548978,91.588718,8.326995);
-	v(30.362565,91.588718,19.566505);
-	v(-23.548978,91.588718,19.566505);
-	v(30.362563,91.588718,8.326995);
-	v(-23.548978,91.588718,8.326995);
-	v(30.362565,91.588718,19.566505);
-	v(30.362565,70.252689,19.566505);
-	v(-23.548978,91.588718,19.566505);
-	v(-23.548978,70.252689,19.566505);
-	v(-23.548978,70.252689,19.566505);
-	v(30.362565,70.252689,19.566505);
-	v(-23.548987,70.252689,-39.869544);
-	v(30.362561,70.252689,-39.869548);
-	v(-5.788939,96.358936,-39.869546);
-	v(-5.788939,115.020237,-22.153032);
-	v(-23.548987,96.358936,-39.869544);
-	v(-23.548978,115.020237,-22.153031);
-	v(11.639485,80.017704,-39.869546);
-	v(11.639485,96.358936,-39.869546);
-	v(-5.788939,80.017704,-39.869546);
-	v(-5.788939,96.358936,-39.869546);
-	v(11.795737,96.358936,-39.869546);
-	v(11.795737,115.020237,-22.153032);
-	v(11.639485,96.358936,-39.869546);
-	v(-5.788939,115.020237,-22.153032);
-	v(-5.788939,96.358936,-39.869546);
-	v(-23.548978,70.252689,19.566505);
-	v(-23.548987,70.252689,-39.869544);
-	v(-23.548978,91.588718,19.566505);
-	v(-23.548978,91.588718,8.326995);
-	v(-23.548987,96.358936,-39.869544);
-	v(-23.548978,115.020237,8.326995);
-	v(-23.548978,115.020237,-22.153031);
-	v(37.257348,50.753116,-24.462756);
-	v(37.257348,61.611622,-24.462756);
-	v(37.257348,67.659382,-26.939256);
-	v(37.257348,61.241764,-26.939256);
-	v(37.257348,20.233402,-39.116385);
-	v(37.257348,20.233402,4.694823);
-	v(37.257348,53.570926,-39.116385);
-	v(37.257348,44.989857,-26.939256);
-	v(37.257348,53.570926,-26.939256);
-	v(37.257348,50.753116,-24.462756);
-	v(37.257348,50.753116,-15.509248);
-	v(37.257348,61.611622,-24.462756);
-	v(37.257348,61.241764,-35.115882);
-	v(37.257348,61.241764,-26.939256);
-	v(37.257348,79.097935,-35.115882);
-	v(37.257348,67.659382,-26.939256);
-	v(37.257348,67.659382,-15.509248);
-	v(37.257348,61.611622,-15.509248);
-	v(37.257348,61.952930,-1.020181);
-	v(37.257348,79.097935,-1.020181);
-	v(37.257348,61.952930,4.694823);
-	v(37.257348,44.989857,-15.509248);
-	v(37.257348,53.570926,-39.116385);
-	v(37.257348,50.753116,-15.509248);
-	v(37.257348,79.097935,-1.020181);
-	v(37.257348,50.753116,-24.462756);
-	v(37.257348,50.753116,-15.509248);
-	v(37.257348,44.989857,-15.509248);
-	v(37.257348,53.570926,-26.939256);
-	v(37.257348,61.952930,-1.020181);
-	v(37.257348,44.989857,-15.509248);
-	v(37.257348,20.233402,-39.116385);
-	v(37.257348,53.570926,-39.116385);
-	v(37.257348,61.241764,-26.939256);
-	v(37.257348,20.233402,4.694823);
-	v(37.257348,61.241764,-35.115882);
-	v(37.257348,61.241764,-35.115882);
-	v(37.257348,79.097935,-35.115882);
-	v(37.257348,44.989857,-26.939256);
-	v(37.257348,67.659382,-26.939256);
-	v(37.257348,61.952930,4.694823);
-	v(37.257348,79.097935,-1.020181);
-	v(37.257348,20.233402,-39.116385);
-	v(37.257348,79.097935,-35.115882);
-	v(37.257348,61.611622,-15.509248);
-	v(37.257348,61.952930,-1.020181);
-	v(37.257348,61.611622,-24.462756);
-	v(37.257348,44.989857,-26.939256);
-	v(37.257348,61.611622,-15.509248);
-	v(37.257348,67.659382,-15.509248);
-	v(37.257348,53.570926,-26.939256);
-	v(37.257348,61.952930,4.694823);
-	v(37.257348,20.233402,4.694823);
-	v(37.257348,67.659382,-15.509248);
-	v(-27.542685,44.989857,-15.509244);
-	v(-27.542692,53.570926,-39.116381);
-	v(-27.542685,61.241764,-26.939254);
-	v(-27.542685,61.241764,-35.115878);
-	v(-27.542685,67.659382,-26.939254);
-	v(-27.542685,79.097935,-1.020177);
-	v(-27.542692,20.233402,-39.116381);
-	v(-27.542685,79.097935,-35.115878);
-	v(-27.542685,61.952930,-1.020177);
-	v(-27.542685,44.989857,-26.939254);
-	v(-27.542685,53.570926,-26.939254);
-	v(-27.542685,61.952930,4.694831);
-	v(-27.542685,20.233402,4.694831);
-	v(-27.542685,67.659382,-15.509244);
-	v(-27.542685,50.753116,-24.462754);
-	v(-27.542685,50.753116,-15.509244);
-	v(-27.542685,61.611622,-24.462754);
-	v(-27.542685,61.611622,-15.509244);
-	v(34.468677,-55.066498,14.312476);
-	v(16.484316,-9.182568,-24.110869);
-	v(41.470354,-70.959412,-13.341611);
-	v(3.000002,-46.092579,-24.118193);
-	v(21.472268,-55.066498,19.479774);
-	v(3.000002,7.112095,34.589812);
-	v(-36.457075,79.297809,21.396037);
-	v(21.401139,-71.230908,-13.309886);
-	v(21.472266,-70.959412,-24.110869);
-	v(21.472266,-63.185120,-24.110869);
-	v(21.501307,-77.784622,19.502601);
-	v(3.000002,-26.782498,-38.690873);
-	v(21.472268,-77.986283,14.312476);
-	v(41.470354,-70.959412,-24.110871);
-	v(3.000002,-54.034214,-24.110862);
-	v(21.362648,-62.854984,19.868709);
-	v(41.470354,-55.066498,19.479774);
-	v(3.000002,-39.924183,-24.110862);
-	v(3.000002,31.895603,7.662685);
-	v(20.827307,-113.020176,-34.652993);
-	v(21.453468,-83.012158,14.312476);
-	v(20.827309,-113.020176,14.312476);
-	v(21.469483,-45.942105,-10.707478);
-	v(34.468677,-55.066498,4.563728);
-	v(42.457082,30.057422,-6.813527);
-	v(42.457082,30.057422,-26.915063);
-	v(42.457082,13.200306,6.045879);
-	v(42.457082,24.791035,-6.813527);
-	v(42.457082,57.524540,7.662685);
-	v(42.457082,55.732090,29.017844);
-	v(42.457082,24.791035,7.662685);
-	v(3.000002,30.057407,-6.813523);
-	v(3.000002,-63.185112,-24.110862);
-	v(47.543985,83.939030,7.662685);
-	v(28.584088,83.939030,7.662685);
-	v(34.468676,-9.182568,-24.110871);
-	v(16.484316,-40.123699,-23.735415);
-	v(34.468676,15.364780,-26.915063);
-	v(29.274447,15.364780,-26.915063);
-	v(29.274416,20.145328,-26.915055);
-	v(47.543985,57.524540,7.662685);
-	v(47.543985,57.524540,21.396033);
-	v(47.543985,83.939030,16.754829);
-	v(34.468676,-9.182568,-38.690888);
-	v(16.484314,-9.182568,-38.690888);
-	v(34.468676,15.364780,-38.690888);
-	v(29.274416,20.145328,-34.854970);
-	v(42.457082,57.524540,21.396033);
-	v(3.000002,-54.812180,19.719619);
-	v(3.000002,7.112095,12.759463);
-	v(34.468677,-18.514630,4.563728);
-	v(3.000002,-46.086453,-10.714803);
-	v(3.000002,24.791019,-6.813523);
-	v(41.470354,-55.066498,4.563724);
-	v(34.468677,-55.066498,10.323100);
-	v(41.470354,-18.514630,4.563724);
-	v(34.468677,-18.514630,-2.865578);
-	v(34.468676,-40.070996,-24.110871);
-	v(3.000002,20.145313,-26.915046);
-	v(16.484316,-39.924191,-26.072566);
-	v(16.484314,-26.782505,-38.690888);
-	v(16.484316,-26.782505,-24.110869);
-	v(21.469483,-54.028092,-10.707478);
-	v(3.000002,24.791019,7.662685);
-	v(3.000002,15.364765,-38.690873);
-	v(41.470354,-40.070996,-24.110871);
-	v(29.274447,15.364780,-34.854970);
-	v(41.470354,-18.514630,-2.865578);
-	v(3.000002,-9.182575,-38.690873);
-	v(21.472266,-54.034222,-24.110869);
-	v(21.472266,-45.948231,-24.110869);
-	v(3.000002,31.895603,34.589812);
-	v(41.499392,-77.784622,19.502601);
-	v(42.457082,66.104038,34.589820);
-	v(41.470354,-77.986283,14.312476);
-	v(3.000002,-39.924183,-26.072558);
-	v(3.000002,-54.034218,-11.057626);
-	v(20.827307,-104.236492,-34.652993);
-	v(41.470354,-113.020176,-34.652993);
-	v(41.470354,-113.020176,14.312476);
-	v(41.470354,-83.012158,-13.341611);
-	v(41.470354,-104.236492,-34.652993);
-	v(20.827309,-83.012158,-13.341609);
-	v(34.468677,13.200306,6.045879);
-	v(34.468677,7.112102,12.862453);
-	v(34.468680,7.112102,34.589820);
-	v(34.468680,13.200306,34.589820);
-	v(42.457082,36.488666,34.589820);
-	v(28.584090,31.895603,34.589820);
-	v(42.457082,13.200306,34.589820);
-	v(34.468677,7.112102,6.045879);
-	v(34.468676,7.112102,-26.915063);
-	v(42.457082,7.112102,6.045879);
-	v(3.000002,-55.066483,14.312476);
-	v(3.000002,30.057407,-26.915053);
-	v(-41.543973,79.297809,21.396037);
-	v(3.000002,-54.028084,-10.707475);
-	v(28.584090,36.488666,34.589820);
-	v(42.457082,36.488666,29.017844);
-	v(28.584090,55.732090,34.589820);
-	v(28.584090,55.732090,29.017844);
-	v(28.584090,36.488666,29.017844);
-	v(28.584088,83.939030,16.754829);
-	v(28.584088,31.895603,7.662685);
-	v(42.457082,7.112102,-26.915063);
-	v(3.000002,-62.600662,20.108558);
-	v(42.457082,55.732090,34.589820);
-	v(28.584090,66.104038,34.589820);
-	v(47.543985,79.297825,21.396033);
-	v(42.457082,79.297825,21.396033);
-	v(-28.468671,-55.066490,14.312476);
-	v(-10.484313,-9.182575,-24.110865);
-	v(-35.470351,-70.959404,-13.341605);
-	v(-15.472262,-55.066490,19.479774);
-	v(-15.401132,-71.230904,-13.309884);
-	v(-15.472265,-70.959404,-24.110865);
-	v(-15.472265,-63.185116,-24.110865);
-	v(-15.501303,-77.784615,19.502601);
-	v(-15.472262,-77.986275,14.312476);
-	v(-35.470351,-70.959404,-24.110864);
-	v(-15.362642,-62.854981,19.868705);
-	v(-35.470351,-55.066490,19.479774);
-	v(-14.827306,-113.020161,-34.652989);
-	v(-14.827303,-113.020161,14.312476);
-	v(-15.469476,-45.942097,-10.707475);
-	v(-28.468671,-55.066490,4.563728);
-	v(-36.457075,30.057407,-6.813523);
-	v(-36.457075,30.057407,-26.915055);
-	v(-36.457075,13.200306,6.045882);
-	v(-36.457075,24.791035,-6.813523);
-	v(-36.457075,57.524540,7.662688);
-	v(-36.457075,55.732090,29.017844);
-	v(-36.457075,24.791035,7.662688);
-	v(-41.543973,83.938999,7.662688);
-	v(-22.584081,83.938999,7.662688);
-	v(-28.468671,-9.182575,-24.110864);
-	v(-10.484313,-40.123692,-23.735411);
-	v(-28.468671,15.364765,-26.915055);
-	v(-23.274442,15.364765,-26.915055);
-	v(-23.274412,20.145328,-26.915047);
-	v(-41.543973,57.524540,7.662688);
-	v(-41.543973,57.524540,21.396037);
-	v(-41.543973,83.938999,16.754829);
-	v(-28.468671,-9.182575,-38.690881);
-	v(-10.484313,-9.182575,-38.690881);
-	v(-28.468671,15.364765,-38.690881);
-	v(-23.274412,20.145328,-34.854962);
-	v(-36.457075,57.524540,21.396037);
-	v(-28.468671,-18.514630,4.563728);
-	v(-35.470351,-55.066490,4.563728);
-	v(-35.470351,-18.514630,4.563728);
-	v(-28.468671,-18.514630,-2.865575);
-	v(-28.468671,-40.070996,-24.110864);
-	v(-10.484313,-39.924191,-26.072562);
-	v(-10.484313,-26.782498,-38.690881);
-	v(-10.484313,-26.782498,-24.110865);
-	v(-15.469476,-54.028088,-10.707475);
-	v(-35.470351,-40.070996,-24.110864);
-	v(-23.274442,15.364765,-34.854962);
-	v(-35.470351,-18.514630,-2.865575);
-	v(-15.472265,-54.034218,-24.110865);
-	v(-15.472265,-45.948231,-24.110865);
-	v(-35.499388,-77.784615,19.502601);
-	v(-36.457075,66.104023,34.589820);
-	v(-35.470351,-77.986275,14.312476);
-	v(-14.827306,-104.236477,-34.652989);
-	v(-35.470351,-113.020161,-34.652989);
-	v(-35.470351,-113.020161,14.312476);
-	v(-35.470351,-83.012150,-13.341605);
-	v(-35.470351,-104.236477,-34.652989);
-	v(-14.827303,-83.012150,-13.341607);
-	v(-28.468671,13.200306,6.045882);
-	v(-28.468671,7.112102,12.862453);
-	v(-28.468671,7.112102,34.589820);
-	v(-28.468671,13.200306,34.589820);
-	v(-36.457075,36.488651,34.589820);
-	v(-22.584077,31.895603,34.589820);
-	v(-36.457075,13.200306,34.589820);
-	v(-28.468671,7.112102,6.045882);
-	v(-28.468671,7.112102,-26.915055);
-	v(-36.457075,7.112102,6.045882);
-	v(-22.584077,36.488651,34.589820);
-	v(-36.457075,36.488651,29.017844);
-	v(-22.584077,55.732090,34.589820);
-	v(-22.584077,55.732090,29.017844);
-	v(-22.584077,36.488651,29.017844);
-	v(-22.584081,83.938999,16.754829);
-	v(-22.584081,31.895603,7.662688);
-	v(-36.457075,7.112102,-26.915055);
-	v(-36.457075,55.732090,34.589820);
-	v(-22.584077,66.104023,34.589820);
-	v(34.468677,-55.066498,14.312476);
-	v(16.484316,-9.182568,-24.110869);
-	v(41.470354,-70.959412,-13.341611);
-	v(3.000002,-46.092579,-24.118193);
-	v(21.472268,-55.066498,19.479774);
-	v(3.000002,7.112095,34.589812);
-	v(3.000002,20.145313,-34.854955);
-	v(21.401139,-71.230908,-13.309886);
-	v(21.472266,-70.959412,-24.110869);
-	v(21.472266,-63.185120,-24.110869);
-	v(21.501307,-77.784622,19.502601);
-	v(3.000002,-26.782498,-38.690873);
-	v(21.472268,-77.986283,14.312476);
-	v(41.470354,-70.959412,-24.110871);
-	v(3.000002,-54.034214,-24.110862);
-	v(21.362648,-62.854984,19.868709);
-	v(41.470354,-55.066498,19.479774);
-	v(3.000002,-39.924183,-24.110862);
-	v(3.000002,31.895603,7.662685);
-	v(20.827307,-113.020176,-34.652993);
-	v(21.453468,-83.012158,14.312476);
-	v(20.827309,-113.020176,14.312476);
-	v(21.469483,-45.942105,-10.707478);
-	v(34.468677,-55.066498,4.563728);
-	v(42.457082,30.057422,-6.813527);
-	v(42.457082,30.057422,-26.915063);
-	v(42.457082,13.200306,6.045879);
-	v(42.457082,24.791035,-6.813527);
-	v(42.457082,57.524540,7.662685);
-	v(42.457082,55.732090,29.017844);
-	v(42.457082,24.791035,7.662685);
-	v(3.000002,30.057407,-6.813523);
-	v(3.000002,-63.185112,-24.110862);
-	v(47.543985,83.939030,7.662685);
-	v(28.584088,83.939030,7.662685);
-	v(34.468676,-9.182568,-24.110871);
-	v(16.484316,-39.924191,-24.110869);
-	v(34.468676,15.364780,-26.915063);
-	v(29.274447,15.364780,-26.915063);
-	v(29.274416,20.145328,-26.915055);
-	v(47.543985,57.524540,7.662685);
-	v(47.543985,57.524540,21.396033);
-	v(47.543985,83.939030,16.754829);
-	v(34.468676,-9.182568,-38.690888);
-	v(16.484314,-9.182568,-38.690888);
-	v(34.468676,15.364780,-38.690888);
-	v(29.274416,20.145328,-34.854970);
-	v(42.457082,57.524540,21.396033);
-	v(3.000002,-54.812180,19.719619);
-	v(3.000002,7.112095,12.759463);
-	v(34.468677,-18.514630,4.563728);
-	v(3.000002,-46.086453,-10.714803);
-	v(3.000002,24.791019,-6.813523);
-	v(41.470354,-55.066498,4.563724);
-	v(34.468677,-55.066498,10.323100);
-	v(41.470354,-18.514630,4.563724);
-	v(34.468677,-18.514630,-2.865578);
-	v(34.468676,-40.070996,-24.110871);
-	v(3.000002,20.145313,-26.915046);
-	v(16.484316,-39.924191,-26.072566);
-	v(16.484314,-26.782505,-38.690888);
-	v(16.484316,-26.782505,-24.110869);
-	v(21.469483,-54.028092,-10.707478);
-	v(3.000002,24.791019,7.662685);
-	v(3.000002,15.364765,-38.690873);
-	v(41.470354,-40.070996,-24.110871);
-	v(29.274447,15.364780,-34.854970);
-	v(41.470354,-18.514630,-2.865578);
-	v(3.000002,-9.182575,-38.690873);
-	v(21.472266,-54.034222,-24.110869);
-	v(21.472266,-45.948231,-24.110869);
-	v(3.000002,31.895603,34.589812);
-	v(41.499392,-77.784622,19.502601);
-	v(42.457082,66.104038,34.589820);
-	v(41.470354,-77.986283,14.312476);
-	v(3.000002,-39.924183,-26.072558);
-	v(3.000002,-54.034218,-11.057626);
-	v(20.827307,-104.236492,-34.652993);
-	v(41.470354,-113.020176,-34.652993);
-	v(41.470354,-113.020176,14.312476);
-	v(41.470354,-83.012158,-13.341611);
-	v(41.470354,-104.236492,-34.652993);
-	v(20.827309,-83.012158,-13.341609);
-	v(34.468677,13.200306,6.045879);
-	v(34.468677,7.112102,12.862453);
-	v(34.468680,7.112102,34.589820);
-	v(34.468680,13.200306,34.589820);
-	v(42.457082,36.488666,34.589820);
-	v(28.584090,31.895603,34.589820);
-	v(42.457082,13.200306,34.589820);
-	v(34.468677,7.112102,6.045879);
-	v(34.468676,7.112102,-26.915063);
-	v(42.457082,7.112102,6.045879);
-	v(3.000002,-55.066483,14.312476);
-	v(3.000002,30.057407,-26.915053);
-	v(3.000002,15.364765,-34.854955);
-	v(3.000002,-54.028084,-10.707475);
-	v(28.584090,36.488666,34.589820);
-	v(42.457082,36.488666,29.017844);
-	v(28.584090,55.732090,34.589820);
-	v(28.584090,55.732090,29.017844);
-	v(28.584090,36.488666,29.017844);
-	v(28.584088,83.939030,16.754829);
-	v(28.584088,31.895603,7.662685);
-	v(42.457082,7.112102,-26.915063);
-	v(3.000002,-62.600662,20.108558);
-	v(42.457082,55.732090,34.589820);
-	v(28.584090,66.104038,34.589820);
-	v(47.543985,79.297825,21.396033);
-	v(42.457082,79.297825,21.396033);
-	v(-28.468671,-55.066490,14.312476);
-	v(-10.484313,-9.182575,-24.110865);
-	v(-35.470351,-70.959404,-13.341605);
-	v(-15.472262,-55.066490,19.479774);
-	v(-15.401132,-71.230904,-13.309884);
-	v(-15.472265,-70.959404,-24.110865);
-	v(-15.472265,-63.185116,-24.110865);
-	v(-15.501303,-77.784615,19.502601);
-	v(-15.472262,-77.986275,14.312476);
-	v(-35.470351,-70.959404,-24.110864);
-	v(-15.362642,-62.854981,19.868705);
-	v(-35.470351,-55.066490,19.479774);
-	v(-14.827306,-113.020161,-34.652989);
-	v(-14.827303,-113.020161,14.312476);
-	v(-15.469476,-45.942097,-10.707475);
-	v(-28.468671,-55.066490,4.563728);
-	v(-36.457075,30.057407,-6.813523);
-	v(-36.457075,30.057407,-26.915055);
-	v(-36.457075,13.200306,6.045882);
-	v(-36.457075,24.791035,-6.813523);
-	v(-36.457075,57.524540,7.662688);
-	v(-36.457075,55.732090,29.017844);
-	v(-36.457075,24.791035,7.662688);
-	v(-41.543973,83.938999,7.662688);
-	v(-22.584081,83.938999,7.662688);
-	v(-28.468671,-9.182575,-24.110864);
-	v(-10.484313,-39.924191,-24.110865);
-	v(-28.468671,15.364765,-26.915055);
-	v(-23.274442,15.364765,-26.915055);
-	v(-23.274412,20.145328,-26.915047);
-	v(-41.543973,57.524540,7.662688);
-	v(-41.543973,57.524540,21.396037);
-	v(-41.543973,83.938999,16.754829);
-	v(-28.468671,-9.182575,-38.690881);
-	v(-10.484313,-9.182575,-38.690881);
-	v(-28.468671,15.364765,-38.690881);
-	v(-23.274412,20.145328,-34.854962);
-	v(-36.457075,57.524540,21.396037);
-	v(-28.468671,-18.514630,4.563728);
-	v(-35.470351,-55.066490,4.563728);
-	v(-35.470351,-18.514630,4.563728);
-	v(-28.468671,-18.514630,-2.865575);
-	v(-28.468671,-40.070996,-24.110864);
-	v(-10.484313,-39.924191,-26.072562);
-	v(-10.484313,-26.782498,-38.690881);
-	v(-10.484313,-26.782498,-24.110865);
-	v(-15.469476,-54.028088,-10.707475);
-	v(-35.470351,-40.070996,-24.110864);
-	v(-23.274442,15.364765,-34.854962);
-	v(-35.470351,-18.514630,-2.865575);
-	v(-15.472265,-54.034218,-24.110865);
-	v(-15.472265,-45.948231,-24.110865);
-	v(-35.499388,-77.784615,19.502601);
-	v(-36.457075,66.104023,34.589820);
-	v(-35.470351,-77.986275,14.312476);
-	v(-14.827306,-104.236477,-34.652989);
-	v(-35.470351,-113.020161,-34.652989);
-	v(-35.470351,-113.020161,14.312476);
-	v(-35.470351,-83.012150,-13.341605);
-	v(-35.470351,-104.236477,-34.652989);
-	v(-14.827303,-83.012150,-13.341607);
-	v(-28.468671,13.200306,6.045882);
-	v(-28.468671,7.112102,12.862453);
-	v(-28.468671,7.112102,34.589820);
-	v(-28.468671,13.200306,34.589820);
-	v(-36.457075,36.488651,34.589820);
-	v(-22.584077,31.895603,34.589820);
-	v(-36.457075,13.200306,34.589820);
-	v(-28.468671,7.112102,6.045882);
-	v(-28.468671,7.112102,-26.915055);
-	v(-36.457075,7.112102,6.045882);
-	v(-22.584077,36.488651,34.589820);
-	v(-36.457075,36.488651,29.017844);
-	v(-22.584077,55.732090,34.589820);
-	v(-22.584077,55.732090,29.017844);
-	v(-22.584077,36.488651,29.017844);
-	v(-22.584081,83.938999,16.754829);
-	v(-22.584081,31.895603,7.662688);
-	v(-36.457075,7.112102,-26.915055);
-	v(-36.457075,55.732090,34.589820);
-	v(-22.584077,66.104023,34.589820);
-	v(-41.543973,79.297809,21.396037);
-	v(-36.457075,79.297809,21.396037);
-	v(34.217585,7.112102,12.862453);
-	v(34.468677,7.112102,12.862453);
-	v(34.468677,7.112102,12.654716);
-	v(41.470354,-70.959412,14.312476);
-	v(41.470354,-55.066498,14.312476);
-	v(34.468677,-70.959412,14.312476);
-	v(34.468677,-55.066498,14.312476);
-	v(34.468677,-70.959412,14.312476);
-	v(34.468677,-55.066498,14.312476);
-	v(21.472268,-70.959412,14.312476);
-	v(21.472268,-55.066498,14.312476);
-	v(21.472268,-63.185120,14.312476);
-	v(41.470354,-77.986283,14.312476);
-	v(41.470354,-70.959412,14.312476);
-	v(21.472268,-77.986283,14.312476);
-	v(34.468677,-70.959412,14.312476);
-	v(21.472268,-70.959412,14.312476);
-	v(34.468677,-70.959412,14.312476);
-	v(41.470354,-70.959412,14.312476);
-	v(34.468677,-70.959412,-13.341611);
-	v(41.470354,-70.959412,-13.341611);
-	v(28.248036,-55.066498,19.479774);
-	v(21.472268,-55.066498,19.479774);
-	v(34.468677,-55.066498,14.312476);
-	v(21.472268,-55.066498,14.312476);
-	v(21.472268,-70.959412,14.312476);
-	v(21.472268,-70.959412,-13.341609);
-	v(21.472268,-70.959412,14.312476);
-	v(21.472268,-63.185120,14.312476);
-	v(20.827309,-70.959412,14.312476);
-	v(20.827309,-63.185120,14.312476);
-	v(21.472268,-70.959412,14.312476);
-	v(21.472268,-70.959412,-13.341609);
-	v(21.472268,-63.185120,14.312476);
-	v(21.472266,-70.959412,-24.110869);
-	v(21.472266,-63.185120,-24.110869);
-	v(21.472268,-77.986283,19.479774);
-	v(21.472268,-77.986283,14.312476);
-	v(21.472268,-55.066498,19.479774);
-	v(21.472268,-70.959412,14.312476);
-	v(21.472268,-63.185120,14.312476);
-	v(21.472268,-55.066498,14.312476);
-	v(21.472268,-77.986283,19.479774);
-	v(41.470354,-77.986283,19.479774);
-	v(21.472268,-77.986283,14.312476);
-	v(41.470354,-77.986283,14.312476);
-	v(41.470354,-113.020176,14.312476);
-	v(41.470354,-77.986283,14.312476);
-	v(20.827309,-113.020176,14.312476);
-	v(21.472268,-77.986283,14.312476);
-	v(21.472268,-70.959412,14.312476);
-	v(20.827309,-70.959412,14.312476);
-	v(20.827309,-83.012158,14.312476);
-	v(34.468676,-70.959412,-24.110871);
-	v(41.470354,-70.959412,-24.110871);
-	v(41.470354,-70.959412,-13.341611);
-	v(27.365836,-77.132866,-13.341611);
-	v(34.468677,-70.959412,-13.341611);
-	v(21.472268,-70.959412,-13.341609);
-	v(20.827309,-77.132866,-13.341609);
-	v(20.827309,-70.959412,-13.341609);
-	v(41.470354,-55.066498,19.479774);
-	v(41.470354,-77.986283,19.479774);
-	v(28.248036,-55.066498,19.479774);
-	v(21.472268,-77.986283,19.479774);
-	v(21.472268,-55.066498,19.479774);
-	v(21.472266,-70.959412,-24.110869);
-	v(-0.987218,-63.185120,14.312476);
-	v(20.827309,-63.185120,14.312476);
-	v(-0.987218,-63.185120,-24.110869);
-	v(21.472268,-63.185120,14.312476);
-	v(21.472266,-63.185120,-24.110869);
-	v(20.827307,-113.020176,-34.652993);
-	v(20.827309,-113.020176,14.312476);
-	v(20.827307,-104.236492,-34.652993);
-	v(20.827309,-83.012158,14.312476);
-	v(20.827309,-83.012158,-13.341609);
-	v(41.470354,-113.020176,14.312476);
-	v(20.827309,-113.020176,14.312476);
-	v(41.470354,-113.020176,-34.652993);
-	v(20.827307,-113.020176,-34.652993);
-	v(-0.987218,-70.959412,-10.034249);
-	v(-0.987218,-70.959412,14.312476);
-	v(-0.987218,-63.185120,-24.110869);
-	v(-0.987218,-63.185120,14.312476);
-	v(41.470354,-18.514630,4.563724);
-	v(41.470354,-55.066498,4.563724);
-	v(34.468677,-18.514630,4.563728);
-	v(34.468677,-55.066498,4.563728);
-	v(34.468677,-55.066498,4.563728);
-	v(34.468677,-55.066498,10.323100);
-	v(34.468677,-18.514630,4.563728);
-	v(34.468677,-20.823170,10.323100);
-	v(41.470354,-55.066498,4.563724);
-	v(34.468677,-55.066498,10.323100);
-	v(34.468677,-55.066498,4.563728);
-	v(42.457082,30.057422,-6.813527);
-	v(-35.780379,30.057422,-6.813523);
-	v(42.457082,30.057422,-26.915063);
-	v(-35.780379,30.057422,-26.915059);
-	v(42.457082,7.112102,-26.915063);
-	v(42.457082,7.112102,6.045879);
-	v(42.457082,30.057422,-26.915063);
-	v(42.457082,13.200306,6.045879);
-	v(42.457082,13.200306,34.589820);
-	v(42.457082,24.791035,-6.813527);
-	v(42.457082,30.057422,-6.813527);
-	v(42.457082,24.791035,7.662685);
-	v(42.457082,36.488666,29.017844);
-	v(42.457082,57.524540,7.662685);
-	v(42.457082,56.632572,11.932887);
-	v(42.457082,55.732090,29.017844);
-	v(42.457082,55.732090,34.589820);
-	v(42.457082,66.104038,34.589820);
-	v(42.457082,56.632572,25.811897);
-	v(42.457082,74.881962,25.811897);
-	v(42.457082,36.488666,34.589820);
-	v(-32.272260,14.072880,-26.915059);
-	v(-32.272260,17.466770,-26.915059);
-	v(-35.780379,13.273014,-26.915059);
-	v(42.457082,7.112102,-26.915063);
-	v(42.457082,30.057422,-26.915063);
-	v(34.468676,7.112102,-26.915063);
-	v(34.468676,15.364780,-26.915063);
-	v(29.274447,20.145328,-26.915063);
-	v(-35.780379,30.057422,-26.915059);
-	v(29.274447,15.364780,-26.915063);
-	v(-20.203195,20.145328,-26.915059);
-	v(42.457082,24.791035,7.662685);
-	v(24.379296,24.791035,7.662685);
-	v(42.457082,24.791035,-6.813527);
-	v(42.457082,57.524540,7.662685);
-	v(28.584088,31.895603,7.662685);
-	v(42.457082,24.791035,7.662685);
-	v(24.379296,24.791035,7.662685);
-	v(24.379296,25.896381,7.662685);
-	v(-21.027670,31.895603,7.662688);
-	v(-35.780379,25.896381,7.662688);
-	v(-21.027670,83.919864,7.662688);
-	v(-35.780379,83.919864,7.662688);
-	v(-35.780379,57.566257,7.662688);
-	v(47.543985,57.524540,7.662685);
-	v(47.543985,83.939030,7.662685);
-	v(28.584088,83.939030,7.662685);
-	v(42.457082,36.488666,34.589820);
-	v(36.086913,36.488666,34.589820);
-	v(42.457082,36.488666,29.017844);
-	v(34.468676,7.112102,-38.690888);
-	v(34.468676,7.112102,-26.915063);
-	v(34.468676,15.364780,-38.690888);
-	v(34.468676,15.364780,-26.915063);
-	v(34.468676,15.364780,-26.915063);
-	v(29.274447,15.364780,-26.915063);
-	v(34.468676,15.364780,-38.690888);
-	v(29.274447,15.364780,-34.854970);
-	v(-20.203195,15.364780,-34.854970);
-	v(-26.606069,15.364780,-30.642693);
-	v(-26.606069,15.364780,-38.690888);
-	v(29.274447,15.364780,-34.854970);
-	v(29.274447,15.364780,-26.915063);
-	v(29.274447,20.145328,-34.854970);
-	v(29.274447,20.145328,-26.915063);
-	v(29.274447,20.145328,-26.915063);
-	v(-20.203195,20.145328,-26.915059);
-	v(29.274447,20.145328,-34.854970);
-	v(-20.203195,20.145328,-34.854970);
-	v(47.543985,57.524540,7.662685);
-	v(47.543985,57.524540,21.396033);
-	v(47.543985,83.939030,7.662685);
-	v(47.543985,79.297825,21.396033);
-	v(47.543985,83.939030,16.754829);
-	v(-35.780379,57.566257,7.662688);
-	v(-35.780379,83.919864,7.662688);
-	v(-41.543981,57.566257,7.662688);
-	v(-41.543981,83.919864,7.662688);
-	v(-21.027670,83.919864,12.439471);
-	v(-35.780379,83.919864,12.439475);
-	v(-21.027670,83.919864,7.662688);
-	v(-35.780379,83.919864,7.662688);
-	v(-21.027670,31.895603,34.589820);
-	v(-21.027670,36.268787,27.969630);
-	v(-21.027670,31.895603,7.662688);
-	v(-21.027670,83.919864,7.662688);
-	v(-21.027670,68.389744,27.969630);
-	v(-21.027670,83.919864,12.439471);
-	v(-21.027670,36.268787,34.589820);
-	v(-4.761095,31.895603,34.589820);
-	v(-21.027670,31.895603,34.589820);
-	v(28.584088,31.895603,7.662685);
-	v(-21.027670,31.895603,7.662688);
-	v(47.543985,83.939030,16.754829);
-	v(28.584088,83.939030,16.754829);
-	v(47.543985,83.939030,7.662685);
-	v(28.584088,83.939030,7.662685);
-	v(34.468676,-9.182568,-38.690888);
-	v(34.468676,-9.182568,-26.915063);
-	v(34.468676,-9.182568,-38.690888);
-	v(34.468676,7.112102,-38.690888);
-	v(16.484314,-9.182568,-38.690888);
-	v(34.468676,15.364780,-38.690888);
-	v(-26.606069,15.364780,-38.690888);
-	v(-7.371618,-9.182568,-38.690888);
-	v(-26.606069,-9.182568,-38.690888);
-	v(-26.606069,7.112102,-38.690888);
-	v(29.274447,15.364780,-34.854970);
-	v(29.274447,20.145328,-34.854970);
-	v(-20.203195,15.364780,-34.854970);
-	v(-20.203195,20.145328,-34.854970);
-	v(-41.543981,83.919864,12.439475);
-	v(-41.543981,83.919864,7.662688);
-	v(-21.027670,36.268787,34.589820);
-	v(-29.608732,36.268787,34.589820);
-	v(-21.027670,36.268787,27.969630);
-	v(34.468676,-9.182568,-26.915063);
-	v(34.468676,-9.182568,-24.110871);
-	v(34.468676,7.112102,-26.915063);
-	v(34.468677,-9.182568,0.653793);
-	v(34.468677,-9.182568,12.862453);
-	v(34.468676,4.895229,-20.849463);
-	v(34.468677,7.112102,12.862453);
-	v(34.468677,4.895229,12.654716);
-	v(34.468677,7.112102,12.654716);
-	v(16.484314,-26.782505,-38.690888);
-	v(-7.371618,-26.782505,-38.690888);
-	v(34.468676,-40.070996,-24.110871);
-	v(34.468677,-18.514630,-2.865578);
-	v(34.468676,-9.182568,-24.110871);
-	v(34.468677,-18.514630,4.563728);
-	v(34.468677,-12.348324,0.653793);
-	v(34.468677,-9.182568,0.653793);
-	v(34.468677,-55.066498,10.323100);
-	v(34.468677,-55.066498,14.312476);
-	v(34.468677,-20.823170,10.323100);
-	v(34.468677,-12.348324,14.312476);
-	v(16.484316,-39.924191,-26.072566);
-	v(16.484314,-26.782505,-38.690888);
-	v(-7.371618,-39.924191,-26.072566);
-	v(-7.371618,-33.353352,-32.381726);
-	v(-7.371618,-26.782505,-38.690888);
-	v(16.484314,-26.782505,-38.690888);
-	v(16.484316,-26.782505,-24.110869);
-	v(16.484314,-9.182568,-38.690888);
-	v(16.484316,-14.687344,-25.686597);
-	v(16.484316,-14.687344,-24.110869);
-	v(41.470354,-55.066498,14.312476);
-	v(34.468677,-55.066498,14.312476);
-	v(41.470354,-55.066498,4.563724);
-	v(34.468677,-55.066498,10.323100);
-	v(41.470354,-18.514630,4.563724);
-	v(34.468677,-18.514630,4.563728);
-	v(41.470354,-18.514630,-2.865578);
-	v(34.468677,-18.514630,-2.865578);
-	v(41.470354,-18.514630,-2.865578);
-	v(34.468677,-18.514630,-2.865578);
-	v(41.470354,-40.070996,-24.110871);
-	v(34.468676,-40.070996,-24.110871);
-	v(34.468676,-40.070996,-24.110871);
-	v(34.468676,-9.182568,-24.110871);
-	v(21.472266,-40.070996,-24.110869);
-	v(21.472266,-13.160610,-24.110869);
-	v(16.484316,-39.924191,-26.072566);
-	v(16.484316,-39.924191,-24.110869);
-	v(16.484314,-26.782505,-38.690888);
-	v(16.484316,-26.782505,-24.110869);
-	v(21.472266,-13.160610,-24.110869);
-	v(16.484316,-39.924191,-24.110869);
-	v(21.472266,-40.070996,-24.110869);
-	v(16.071385,-40.070996,-24.110869);
-	v(16.484316,-26.782505,-24.110869);
-	v(16.484316,-14.687344,-24.110869);
-	v(41.470354,-55.066498,19.479774);
-	v(28.248036,-55.066498,19.479774);
-	v(41.470354,-70.959412,-24.110871);
-	v(41.470354,-70.959412,-13.341611);
-	v(41.470354,-40.070996,-24.110871);
-	v(41.470354,-70.959412,14.312476);
-	v(41.470354,-55.066498,4.563724);
-	v(41.470354,-18.514630,4.563724);
-	v(41.470354,-18.514630,-2.865578);
-	v(41.470354,-55.066498,14.312476);
-	v(41.470354,-70.959412,-24.110871);
-	v(41.470354,-40.070996,-24.110871);
-	v(34.468676,-70.959412,-24.110871);
-	v(21.472266,-70.959412,-24.110869);
-	v(21.472266,-63.185120,-24.110869);
-	v(21.472266,-54.034222,-24.110869);
-	v(21.472266,-45.948231,-24.110869);
-	v(21.472266,-45.948231,-24.110869);
-	v(21.472266,-40.070996,-24.110869);
-	v(-0.987218,-45.948231,-24.110869);
-	v(13.768538,-40.889675,-24.110869);
-	v(16.071385,-40.070996,-24.110869);
-	v(-0.987218,-40.889675,-24.110869);
-	v(41.470354,-77.986283,14.312476);
-	v(41.470354,-77.986283,19.479774);
-	v(41.470354,-70.959412,14.312476);
-	v(41.470354,-55.066498,19.479774);
-	v(41.470354,-55.066498,14.312476);
-	v(41.470354,-113.020176,14.312476);
-	v(41.470354,-113.020176,-34.652993);
-	v(41.470354,-77.986283,14.312476);
-	v(41.470354,-104.236492,-34.652993);
-	v(41.470354,-83.012158,-13.341611);
-	v(41.470354,-70.959412,-13.341611);
-	v(41.470354,-70.959412,14.312476);
-	v(41.470354,-70.959412,-13.341611);
-	v(41.470354,-83.012158,-13.341611);
-	v(27.365836,-77.132866,-13.341611);
-	v(20.827309,-83.012158,-13.341609);
-	v(20.827309,-77.132866,-13.341609);
-	v(20.827309,-83.012158,-13.341609);
-	v(41.470354,-83.012158,-13.341611);
-	v(20.827307,-104.236492,-34.652993);
-	v(41.470354,-104.236492,-34.652993);
-	v(41.470354,-104.236492,-34.652993);
-	v(41.470354,-113.020176,-34.652993);
-	v(20.827307,-104.236492,-34.652993);
-	v(20.827307,-113.020176,-34.652993);
-	v(41.470354,-70.959412,-13.341611);
-	v(41.470354,-77.986283,14.312476);
-	v(41.470354,-70.959412,14.312476);
-	v(41.470354,-83.012158,-13.341611);
-	v(41.470354,-104.236492,-34.652993);
-	v(41.470354,-113.020176,-34.652993);
-	v(41.470354,-113.020176,14.312476);
-	v(-0.987218,-63.185120,-24.110869);
-	v(-0.987218,-54.034222,-24.110869);
-	v(-0.987218,-70.959412,-24.110869);
-	v(-0.987218,-63.185120,-24.110869);
-	v(-23.446706,-70.959412,-24.110867);
-	v(-0.987218,-54.034222,-24.110869);
-	v(-0.987218,-45.948231,-24.110869);
-	v(-0.987218,-40.889675,-24.110869);
-	v(-10.214254,-40.889675,-24.110869);
-	v(-12.373908,-40.070996,-24.110869);
-	v(-23.446706,-40.070996,-24.110867);
-	v(20.827309,-83.012158,-13.341609);
-	v(27.365836,-77.132866,-13.341611);
-	v(20.827309,-77.132866,-13.341609);
-	v(41.470354,-83.012158,-13.341611);
-	v(41.470354,-70.959412,-13.341611);
-	v(41.470354,-83.012158,-13.341611);
-	v(20.827307,-104.236492,-34.652993);
-	v(41.470354,-104.236492,-34.652993);
-	v(20.827309,-83.012158,-13.341609);
-	v(41.470354,-113.020176,-34.652993);
-	v(20.827307,-104.236492,-34.652993);
-	v(20.827307,-113.020176,-34.652993);
-	v(41.470354,-104.236492,-34.652993);
-	v(-0.987218,-54.034222,-8.124444);
-	v(-0.987218,-54.034222,-24.110869);
-	v(-0.327269,-54.034222,-8.124444);
-	v(21.472266,-54.034222,-24.110869);
-	v(-23.446706,-40.070996,-24.110867);
-	v(-12.373908,-40.070996,-24.110869);
-	v(-23.446706,-35.873516,-24.110867);
-	v(-0.987218,-54.034222,-24.110869);
-	v(-0.987218,-54.034222,-8.124444);
-	v(-0.987218,-45.948231,-24.110869);
-	v(-0.987218,-70.959412,-24.110869);
-	v(-0.987218,-70.959412,-10.034249);
-	v(-0.987218,-63.185120,-24.110869);
-	v(-35.780379,7.112102,44.639861);
-	v(-35.780379,7.112102,34.589820);
-	v(-35.780379,13.200306,44.639861);
-	v(-35.780379,13.200306,34.589820);
-	v(-35.780379,7.112102,34.589820);
-	v(-35.780379,7.112102,6.045882);
-	v(-35.780379,13.200306,34.589820);
-	v(-35.780379,13.200306,6.045882);
-	v(34.468680,13.200306,34.589820);
-	v(34.468680,7.112102,34.589820);
-	v(-35.780379,13.200306,34.589820);
-	v(-35.780379,7.112102,34.589820);
-	v(-35.780379,7.112102,6.045882);
-	v(-35.780379,7.112102,-26.915059);
-	v(-35.780379,13.200306,6.045882);
-	v(-35.780379,13.273014,-26.915059);
-	v(-35.780379,36.268787,27.969630);
-	v(-35.780379,57.566257,12.439475);
-	v(-35.780379,68.389744,27.969630);
-	v(-35.780379,83.919864,12.439475);
-	v(-35.780379,13.200306,34.589820);
-	v(-35.780379,36.268787,34.589820);
-	v(-35.780379,24.791035,7.662688);
-	v(-35.780379,25.896381,7.662688);
-	v(-35.780379,57.566257,7.662688);
-	v(-35.780379,30.057422,-26.915059);
-	v(-35.780379,24.791035,-6.813523);
-	v(-35.780379,30.057422,-6.813523);
-	v(34.468680,13.200306,34.589820);
-	v(-35.780379,13.200306,34.589820);
-	v(34.468677,13.200306,6.045879);
-	v(-35.780379,13.200306,6.045882);
-	v(34.468677,13.200306,6.045879);
-	v(34.468677,7.112102,6.045879);
-	v(-35.780379,13.200306,6.045882);
-	v(-26.606069,7.112102,6.045882);
-	v(-35.780379,7.112102,6.045882);
-	v(34.468680,7.112102,34.589820);
-	v(-26.606069,7.112102,12.862453);
-	v(-35.780379,7.112102,34.589820);
-	v(-35.780379,7.112102,6.045882);
-	v(-26.606069,7.112102,12.654720);
-	v(-26.606069,7.112102,6.045882);
-	v(34.468677,7.112102,12.862453);
-	v(34.217585,7.112102,12.862453);
-	v(34.468677,7.112102,6.045879);
-	v(34.468677,7.112102,12.654716);
-	v(34.468677,13.200306,6.045879);
-	v(34.468677,7.112102,12.862453);
-	v(34.468680,7.112102,34.589820);
-	v(34.468680,13.200306,34.589820);
-	v(-21.027670,36.268787,34.589820);
-	v(-21.027670,31.895603,34.589820);
-	v(-29.608732,36.268787,34.589820);
-	v(42.457082,36.488666,34.589820);
-	v(42.457082,13.200306,34.589820);
-	v(36.086913,36.488666,34.589820);
-	v(28.584090,36.488666,34.589820);
-	v(28.584090,31.895603,34.589820);
-	v(-4.761095,31.895603,34.589820);
-	v(-35.780379,36.268787,34.589820);
-	v(-35.780379,7.112102,-26.915059);
-	v(-26.606069,7.112102,-26.915059);
-	v(-29.608732,36.268787,34.589820);
-	v(-35.780379,36.268787,34.589820);
-	v(-21.027670,36.268787,27.969630);
-	v(-35.780379,36.268787,27.969630);
-	v(-21.027670,68.389744,27.969630);
-	v(-21.027670,36.268787,27.969630);
-	v(-35.780379,68.389744,27.969630);
-	v(-35.780379,36.268787,27.969630);
-	v(-21.027670,83.919864,12.439471);
-	v(-21.027670,68.389744,27.969630);
-	v(-35.780379,83.919864,12.439475);
-	v(-35.780379,68.389744,27.969630);
-	v(-35.780379,83.919864,12.439475);
-	v(-35.780379,57.566257,12.439475);
-	v(-41.543981,83.919864,12.439475);
-	v(-41.543981,57.566257,12.439475);
-	v(-35.780379,57.566257,12.439475);
-	v(-35.780379,57.566257,7.662688);
-	v(-35.780379,83.919864,12.439475);
-	v(-35.780379,83.919864,7.662688);
-	v(-41.543981,57.566257,12.439475);
-	v(-35.780379,57.566257,12.439475);
-	v(-41.543981,57.566257,7.662688);
-	v(-35.780379,57.566257,7.662688);
-	v(24.379296,24.791035,7.662685);
-	v(24.379296,25.896381,7.662685);
-	v(-35.780379,24.791035,7.662688);
-	v(-35.780379,25.896381,7.662688);
-	v(24.379296,24.791035,7.662685);
-	v(-35.780379,24.791035,7.662688);
-	v(42.457082,24.791035,-6.813527);
-	v(-35.780379,24.791035,-6.813523);
-	v(42.457082,30.057422,-6.813527);
-	v(42.457082,24.791035,-6.813527);
-	v(-35.780379,30.057422,-6.813523);
-	v(-35.780379,24.791035,-6.813523);
-	v(-26.606069,7.112102,-26.915059);
-	v(-26.606069,15.364780,-26.915059);
-	v(-35.780379,7.112102,-26.915059);
-	v(-32.272260,14.072880,-26.915059);
-	v(-35.780379,13.273014,-26.915059);
-	v(-20.203195,15.364780,-26.915059);
-	v(-20.203195,20.145328,-26.915059);
-	v(-32.272260,17.466770,-26.915059);
-	v(42.457082,13.200306,34.589820);
-	v(42.457082,13.200306,6.045879);
-	v(34.468677,7.112102,12.654716);
-	v(-26.606069,7.112102,12.654720);
-	v(34.468677,7.112102,6.045879);
-	v(-26.606069,7.112102,6.045882);
-	v(34.468676,7.112102,-26.915063);
-	v(-26.606069,7.112102,-26.915059);
-	v(42.457082,13.200306,6.045879);
-	v(42.457082,7.112102,6.045879);
-	v(-26.606069,-9.182568,12.862453);
-	v(-26.606069,-9.182568,-24.110867);
-	v(-26.606069,7.112102,12.862453);
-	v(-26.606069,-9.182568,-26.915059);
-	v(-26.606069,7.112102,-26.915059);
-	v(-26.606069,7.112102,12.654720);
-	v(-26.606069,7.112102,6.045882);
-	v(34.217585,7.112102,12.862453);
-	v(-26.606069,7.112102,12.862453);
-	v(34.468677,7.112102,12.862453);
-	v(34.468677,-9.182568,12.862453);
-	v(34.217585,7.112102,12.862453);
-	v(-26.606069,-9.182568,12.862453);
-	v(-26.606069,7.112102,12.862453);
-	v(34.468676,4.895229,-20.849463);
-	v(34.468677,4.895229,12.654716);
-	v(34.468676,7.112102,-26.915063);
-	v(34.468677,7.112102,12.654716);
-	v(34.468677,7.112102,6.045879);
-	v(36.086913,36.488666,34.589820);
-	v(28.584090,36.488666,34.589820);
-	v(42.457082,36.488666,29.017844);
-	v(28.584090,36.488666,29.017844);
-	v(28.584090,55.732090,34.589820);
-	v(28.584090,55.732090,29.017844);
-	v(28.584090,66.104038,34.589820);
-	v(28.584090,31.895603,34.589820);
-	v(28.584088,31.895603,7.662685);
-	v(28.584090,36.488666,34.589820);
-	v(28.584090,36.488666,29.017844);
-	v(28.584088,83.939030,7.662685);
-	v(28.584088,83.939030,16.754829);
-	v(28.584090,31.895603,34.589820);
-	v(-4.761095,31.895603,34.589820);
-	v(28.584088,31.895603,7.662685);
-	v(-41.543981,57.566257,12.439475);
-	v(-41.543981,57.566257,7.662688);
-	v(-41.543981,83.919864,12.439475);
-	v(-41.543981,83.919864,7.662688);
-	v(-20.203195,15.364780,-26.915059);
-	v(-20.203195,15.364780,-34.854970);
-	v(-20.203195,20.145328,-26.915059);
-	v(-20.203195,20.145328,-34.854970);
-	v(29.274447,15.364780,-26.915063);
-	v(29.274447,20.145328,-26.915063);
-	v(-20.203195,15.364780,-26.915059);
-	v(-20.203195,20.145328,-26.915059);
-	v(-20.203195,15.364780,-26.915059);
-	v(-26.606069,15.364780,-26.915059);
-	v(-20.203195,15.364780,-34.854970);
-	v(-26.606069,15.364780,-30.642693);
-	v(-26.606069,7.112102,-38.690888);
-	v(-26.606069,15.364780,-26.915059);
-	v(-26.606069,15.364780,-38.690888);
-	v(-26.606069,15.364780,-30.642693);
-	v(42.457082,7.112102,6.045879);
-	v(42.457082,7.112102,-26.915063);
-	v(34.468676,-9.182568,-26.915063);
-	v(34.468676,7.112102,-26.915063);
-	v(16.484316,-9.182568,-26.915061);
-	v(-26.606069,7.112102,-26.915059);
-	v(-7.371618,-9.182568,-26.915061);
-	v(-26.606069,-9.182568,-26.915059);
-	v(-26.606069,-9.182568,-38.690888);
-	v(-26.606069,-9.182568,-24.110867);
-	v(-23.446706,-9.182568,-24.110867);
-	v(-26.606069,-9.182568,-26.915059);
-	v(-7.371618,-9.182568,-24.110869);
-	v(-7.371618,-9.182568,-26.915061);
-	v(-26.606069,-9.182568,12.862453);
-	v(34.468677,-9.182568,12.862453);
-	v(-26.606069,-9.182568,-24.110867);
-	v(34.468677,-9.182568,0.653793);
-	v(-7.371618,-9.182568,-20.098485);
-	v(-7.371618,-9.182568,-24.110869);
-	v(-23.446706,-9.182568,-24.110867);
-	v(34.468676,-9.182568,-24.110871);
-	v(16.484316,-9.182568,-20.098485);
-	v(16.484316,-9.182568,-24.110869);
-	v(21.472266,-9.182568,-24.110869);
-	v(42.457082,55.732090,29.017844);
-	v(42.457082,36.488666,29.017844);
-	v(28.584090,55.732090,29.017844);
-	v(28.584090,36.488666,29.017844);
-	v(28.584090,55.732090,34.589820);
-	v(42.457082,55.732090,34.589820);
-	v(28.584090,55.732090,29.017844);
-	v(42.457082,55.732090,29.017844);
-	v(42.457082,66.104038,34.589820);
-	v(42.457082,55.732090,34.589820);
-	v(28.584090,66.104038,34.589820);
-	v(28.584090,55.732090,34.589820);
-	v(47.543985,79.297825,21.396033);
-	v(42.457082,79.297825,21.396033);
-	v(47.543985,83.939030,16.754829);
-	v(42.457082,66.104038,34.589820);
-	v(28.584090,66.104038,34.589820);
-	v(42.457082,74.881962,25.811897);
-	v(28.584088,83.939030,16.754829);
-	v(29.274447,15.364780,-26.915063);
-	v(29.274447,15.364780,-34.854970);
-	v(16.484316,-9.182568,-26.915061);
-	v(34.468676,-9.182568,-26.915063);
-	v(16.484314,-9.182568,-38.690888);
-	v(34.468676,-9.182568,-38.690888);
-	v(16.484316,-9.182568,-24.110869);
-	v(21.472266,-9.182568,-24.110869);
-	v(16.484316,-9.182568,-26.915061);
-	v(34.468676,-9.182568,-24.110871);
-	v(34.468676,-9.182568,-26.915063);
-	v(-7.371618,-9.182568,-24.110869);
-	v(-0.987218,-9.182568,-24.110869);
-	v(-7.371618,-9.182568,-26.915061);
-	v(16.484316,-9.182568,-24.110869);
-	v(16.484316,-9.182568,-26.915061);
-	v(-7.371618,-9.182568,-26.915061);
-	v(-7.371618,-9.182568,-32.381726);
-	v(-7.371618,-9.182568,-38.690888);
-	v(-26.606069,-9.182568,-26.915059);
-	v(-26.606069,-9.182568,-38.690888);
-	v(-7.371618,-26.782505,-20.098485);
-	v(-7.371618,-26.782505,-32.381726);
-	v(-7.371618,-9.182568,-20.098485);
-	v(-7.371618,-9.182568,-32.381726);
-	v(-7.371618,-9.182568,-24.110869);
-	v(-7.371618,-9.182568,-26.915061);
-	v(-0.987218,-40.070996,-24.110869);
-	v(-0.987218,-9.182568,-24.110869);
-	v(-12.373908,-40.070996,-24.110869);
-	v(-7.371618,-9.182568,-24.110869);
-	v(-23.446706,-9.182568,-24.110867);
-	v(-23.446706,-35.873516,-24.110867);
-	v(-7.371618,-9.182568,-20.098485);
-	v(16.484316,-9.182568,-20.098485);
-	v(-7.371618,-9.182568,-24.110869);
-	v(16.484316,-9.182568,-24.110869);
-	v(-0.987218,-9.182568,-24.110869);
-	v(16.484316,-9.182568,-20.098485);
-	v(16.484316,-26.782505,-20.098485);
-	v(-7.371618,-9.182568,-20.098485);
-	v(-7.371618,-26.782505,-20.098485);
-	v(16.484316,-14.687344,-25.686597);
-	v(16.484316,-14.687344,-24.110869);
-	v(16.484314,-9.182568,-38.690888);
-	v(16.484316,-26.782505,-24.110869);
-	v(16.484316,-26.782505,-20.098485);
-	v(16.484316,-9.182568,-20.098485);
-	v(16.484316,-9.182568,-26.915061);
-	v(16.484316,-9.182568,-24.110869);
-	v(16.484316,-26.782505,-24.110869);
-	v(16.484316,-14.687344,-24.110869);
-	v(16.484316,-39.924191,-24.110869);
-	v(21.472266,-13.160610,-24.110869);
-	v(21.472266,-9.182568,-24.110869);
-	v(16.484316,-9.182568,-24.110869);
-	v(16.071385,-40.070996,-24.110869);
-	v(-0.987218,-9.182568,-24.110869);
-	v(-0.987218,-40.070996,-24.110869);
-	v(21.472266,-13.160610,-24.110869);
-	v(34.468676,-9.182568,-24.110871);
-	v(21.472266,-9.182568,-24.110869);
-	v(42.457082,56.632572,11.932887);
-	v(42.457082,56.632572,25.811897);
-	v(42.457082,57.524540,7.662685);
-	v(42.457082,57.524540,21.396033);
-	v(42.457082,74.881962,25.811897);
-	v(42.457082,79.297825,21.396033);
-	v(47.543985,79.297825,21.396033);
-	v(47.543985,57.524540,21.396033);
-	v(42.457082,79.297825,21.396033);
-	v(42.457082,57.524540,21.396033);
-	v(-7.371618,-26.782505,-32.381726);
-	v(-7.371618,-26.782505,-38.690888);
-	v(-7.371618,-9.182568,-32.381726);
-	v(-7.371618,-9.182568,-38.690888);
-	v(16.484316,-26.782505,-20.098485);
-	v(-7.371618,-26.782505,-20.098485);
-	v(16.484316,-26.782505,-24.110869);
-	v(-7.371618,-26.782505,-32.381726);
-	v(16.484314,-26.782505,-38.690888);
-	v(-7.371618,-26.782505,-38.690888);
-	v(-7.371618,-39.924191,-20.098485);
-	v(-7.371618,-39.924191,-26.072566);
-	v(-7.371618,-26.782505,-20.098485);
-	v(-7.371618,-33.353352,-32.381726);
-	v(-7.371618,-26.782505,-32.381726);
-	v(-0.987218,-40.889675,-24.110869);
-	v(-0.987218,-40.070996,-24.110869);
-	v(-10.214254,-40.889675,-24.110869);
-	v(-12.373908,-40.070996,-24.110869);
-	v(16.484316,-39.924191,-20.098485);
-	v(-7.371618,-39.924191,-20.098485);
-	v(16.484316,-39.924191,-24.110869);
-	v(16.484316,-39.924191,-20.098485);
-	v(16.484316,-26.782505,-24.110869);
-	v(16.484316,-26.782505,-20.098485);
-	v(16.071385,-40.070996,-24.110869);
-	v(-0.987218,-40.070996,-24.110869);
-	v(13.768538,-40.889675,-24.110869);
-	v(-0.987218,-40.889675,-24.110869);
-	v(42.457082,57.524540,21.396033);
-	v(47.543985,57.524540,21.396033);
-	v(42.457082,57.524540,7.662685);
-	v(47.543985,57.524540,7.662685);
-	v(-7.371618,-26.782505,-32.381726);
-	v(-7.371618,-33.353352,-32.381726);
-	v(-7.371618,-26.782505,-38.690888);
-	v(-7.371618,-39.924191,-20.098485);
-	v(16.484316,-39.924191,-20.098485);
-	v(-7.371618,-39.924191,-26.072566);
-	v(16.484316,-39.924191,-24.110869);
-	v(16.484316,-39.924191,-26.072566);
-	v(37.257348,50.753116,-24.462756);
-	v(37.257348,61.611622,-24.462756);
-	v(-28.655707,50.753116,-24.462754);
-	v(-28.655707,61.611622,-24.462754);
-	v(37.257348,20.233402,-39.116385);
-	v(37.257348,20.233402,4.694823);
-	v(37.257348,53.570926,-39.116385);
-	v(37.257348,44.989857,-26.939256);
-	v(37.257348,53.570926,-26.939256);
-	v(37.257348,50.753116,-24.462756);
-	v(37.257348,50.753116,-15.509248);
-	v(37.257348,61.611622,-24.462756);
-	v(37.257348,61.241764,-35.115882);
-	v(37.257348,61.241764,-26.939256);
-	v(37.257348,79.097935,-35.115882);
-	v(37.257348,67.659382,-26.939256);
-	v(37.257348,67.659382,-15.509248);
-	v(37.257348,61.611622,-15.509248);
-	v(37.257348,61.952930,-1.020181);
-	v(37.257348,79.097935,-1.020181);
-	v(37.257348,61.952930,4.694823);
-	v(37.257348,44.989857,-15.509248);
-	v(-28.655707,50.753116,-15.509244);
-	v(37.257348,50.753116,-15.509248);
-	v(-28.655707,50.753116,-24.462754);
-	v(37.257348,50.753116,-24.462756);
-	v(-28.655707,20.233402,4.694831);
-	v(-28.655707,20.233402,-39.116381);
-	v(-28.655707,61.952930,4.694831);
-	v(-28.655707,44.989857,-15.509244);
-	v(-28.655707,50.753116,-15.509244);
-	v(-28.655707,50.753116,-24.462754);
-	v(-28.655707,61.611622,-15.509244);
-	v(-28.655707,61.952930,-1.020177);
-	v(-28.655707,67.659382,-15.509244);
-	v(-28.655707,79.097935,-1.020177);
-	v(-28.655707,67.659382,-26.939253);
-	v(-28.655707,61.241764,-26.939253);
-	v(-28.655707,61.241764,-35.115878);
-	v(-28.655707,79.097935,-35.115878);
-	v(-28.655707,61.611622,-24.462754);
-	v(-28.655707,53.570926,-39.116381);
-	v(-28.655707,44.989857,-26.939253);
-	v(-28.655707,53.570926,-26.939253);
-	v(37.257348,61.611622,-15.509248);
-	v(-28.655707,61.611622,-15.509244);
-	v(37.257348,61.611622,-24.462756);
-	v(-28.655707,61.611622,-24.462754);
-	v(37.257348,61.611622,-15.509248);
-	v(37.257348,67.659382,-15.509248);
-	v(-28.655707,61.611622,-15.509244);
-	v(-28.655707,67.659382,-15.509244);
-	v(-28.655707,67.659382,-15.509244);
-	v(37.257348,67.659382,-15.509248);
-	v(-28.655707,67.659382,-26.939253);
-	v(37.257348,67.659382,-26.939256);
-	v(37.257348,67.659382,-26.939256);
-	v(37.257348,61.241764,-26.939256);
-	v(-28.655707,67.659382,-26.939253);
-	v(-28.655707,61.241764,-26.939253);
-	v(-28.655707,61.241764,-26.939253);
-	v(37.257348,61.241764,-26.939256);
-	v(-28.655707,61.241764,-35.115878);
-	v(37.257348,61.241764,-35.115882);
-	v(37.257348,61.241764,-35.115882);
-	v(37.257348,79.097935,-35.115882);
-	v(-28.655707,61.241764,-35.115878);
-	v(-28.655707,79.097935,-35.115878);
-	v(37.257348,79.097935,-1.020181);
-	v(-28.655707,79.097935,-1.020177);
-	v(37.257348,79.097935,-35.115882);
-	v(-28.655707,79.097935,-35.115878);
-	v(37.257348,79.097935,-1.020181);
-	v(37.257348,61.952930,-1.020181);
-	v(-28.655707,79.097935,-1.020177);
-	v(-28.655707,61.952930,-1.020177);
-	v(37.257348,61.952930,4.694823);
-	v(-28.655707,61.952930,4.694831);
-	v(37.257348,61.952930,-1.020181);
-	v(-28.655707,61.952930,-1.020177);
-	v(37.257348,61.952930,4.694823);
-	v(37.257348,20.233402,4.694823);
-	v(-28.655707,61.952930,4.694831);
-	v(-28.655707,20.233402,4.694831);
-	v(-28.655707,20.233402,4.694831);
-	v(37.257348,20.233402,4.694823);
-	v(-28.655707,20.233402,-39.116381);
-	v(37.257348,20.233402,-39.116385);
-	v(37.257348,20.233402,-39.116385);
-	v(37.257348,53.570926,-39.116385);
-	v(-28.655707,20.233402,-39.116381);
-	v(-28.655707,53.570926,-39.116381);
-	v(37.257348,53.570926,-26.939256);
-	v(-28.655707,53.570926,-26.939253);
-	v(37.257348,53.570926,-39.116385);
-	v(-28.655707,53.570926,-39.116381);
-	v(37.257348,53.570926,-26.939256);
-	v(37.257348,44.989857,-26.939256);
-	v(-28.655707,53.570926,-26.939253);
-	v(-28.655707,44.989857,-26.939253);
-	v(37.257348,44.989857,-15.509248);
-	v(-28.655707,44.989857,-15.509244);
-	v(37.257348,44.989857,-26.939256);
-	v(-28.655707,44.989857,-26.939253);
-	v(37.257348,44.989857,-15.509248);
-	v(37.257348,50.753116,-15.509248);
-	v(-28.655707,44.989857,-15.509244);
-	v(-28.655707,50.753116,-15.509244);
-	v(30.362561,70.252689,-39.869548);
-	v(30.362565,70.252689,19.566505);
-	v(30.362561,96.358936,-39.869548);
-	v(30.362563,91.588718,8.326995);
-	v(30.362563,115.020237,8.326995);
-	v(30.362563,115.020237,-22.153033);
-	v(30.362565,91.588718,19.566505);
-	v(30.362561,96.358936,-39.869548);
-	v(11.639485,80.017704,-39.869546);
-	v(30.362561,70.252689,-39.869548);
-	v(-23.548987,70.252689,-39.869544);
-	v(11.795737,96.358936,-39.869546);
-	v(-5.788939,80.017704,-39.869546);
-	v(-5.788939,96.358936,-39.869546);
-	v(-23.548987,96.358936,-39.869544);
-	v(11.639485,96.358936,-39.869546);
-	v(30.362561,96.358936,-39.869548);
-	v(30.362563,115.020237,-22.153033);
-	v(11.795737,96.358936,-39.869546);
-	v(11.795737,115.020237,-22.153032);
-	v(30.362563,115.020237,8.326995);
-	v(-23.548978,115.020237,8.326995);
-	v(30.362563,115.020237,-22.153033);
-	v(-23.548978,115.020237,-22.153031);
-	v(11.795737,115.020237,-22.153032);
-	v(-5.788939,115.020237,-22.153032);
-	v(30.362563,115.020237,8.326995);
-	v(30.362563,91.588718,8.326995);
-	v(-23.548978,115.020237,8.326995);
-	v(-23.548978,91.588718,8.326995);
-	v(30.362565,91.588718,19.566505);
-	v(-23.548978,91.588718,19.566505);
-	v(30.362563,91.588718,8.326995);
-	v(-23.548978,91.588718,8.326995);
-	v(30.362565,91.588718,19.566505);
-	v(30.362565,70.252689,19.566505);
-	v(-23.548978,91.588718,19.566505);
-	v(-23.548978,70.252689,19.566505);
-	v(-23.548978,70.252689,19.566505);
-	v(30.362565,70.252689,19.566505);
-	v(-23.548987,70.252689,-39.869544);
-	v(30.362561,70.252689,-39.869548);
-	v(-5.788939,96.358936,-39.869546);
-	v(-5.788939,115.020237,-22.153032);
-	v(-23.548987,96.358936,-39.869544);
-	v(-23.548978,115.020237,-22.153031);
-	v(11.639485,80.017704,-39.869546);
-	v(11.639485,96.358936,-39.869546);
-	v(-5.788939,80.017704,-39.869546);
-	v(-5.788939,96.358936,-39.869546);
-	v(11.795737,96.358936,-39.869546);
-	v(11.795737,115.020237,-22.153032);
-	v(11.639485,96.358936,-39.869546);
-	v(-5.788939,115.020237,-22.153032);
-	v(-5.788939,96.358936,-39.869546);
-	v(-23.548978,70.252689,19.566505);
-	v(-23.548987,70.252689,-39.869544);
-	v(-23.548978,91.588718,19.566505);
-	v(-23.548978,91.588718,8.326995);
-	v(-23.548987,96.358936,-39.869544);
-	v(-23.548978,115.020237,8.326995);
-	v(-23.548978,115.020237,-22.153031);
-
-    /*
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.629667,0.590312,0.000000,1.000000,0.000000,1.000000,0.622180);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.934109,0.000000,1.000000,0.000000,1.000000,1.000000,0.934109,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.150135,1.000000,0.000000,0.000000,0.000000,0.000000,0.150135);
-	uv(0.629667,0.000000,1.000000,0.000000,1.000000,1.000000,0.849865,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.622180,0.175944,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,0.999999,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.066424,0.000000,0.066424,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.500000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.431554,1.000000,0.431554,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.496329,0.000000,1.000000,0.000000,0.934109,0.205016,0.521365,0.205016);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,0.000000,0.000000,0.000000,0.503671);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.059106,0.006144,0.059059,0.326950,0.222310,0.323984,0.222349,0.005078);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.688240,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,0.000000,0.996270,0.000264,0.766589,1.000000,0.766589);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,0.006530,0.000000,0.328023,0.059059,0.326950,0.059106,0.006144);
-	uv(0.000217,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.431554,1.000000,1.000000,1.000000,1.000000,0.000000,0.431554,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000315,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,0.688240,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,0.000000,1.000000,0.000000,1.000000,1.000000,1.000000);
-	uv(0.000000,0.999939,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,0.622180,1.000000,1.000000,0.000000,1.000000,0.000000,0.629667);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.431554,0.000000,0.000000,0.000000,0.000000,1.000000,0.431554,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000315,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000264,0.766589,0.000000,0.996270,1.000000,1.000000,1.000000,0.766589);
-	uv(1.000000,0.000000,0.000000,0.175707,0.337951,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,0.999939,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.222349,0.005078,0.222310,0.323984,0.389406,0.320947,0.389458,0.003987);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,0.000000,1.000000,0.000000,0.150135,1.000000,0.150135);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,0.175707,1.000000,0.000000,0.337951,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000217,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,0.000000,1.000000,1.000000,1.000000,1.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.150135,0.000000,1.000000,1.000000,1.000000,1.000000,0.150135);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.999999,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.556543,0.317910,0.389406,0.320947,0.389458,0.003987,0.556574,0.002896);
-	uv(0.222310,0.323984,0.059059,0.326950,0.059106,0.006144,0.222349,0.005078);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.389406,0.320947,0.222310,0.323984,0.222349,0.005078,0.389458,0.003987);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.059059,0.326950,0.000000,0.328023,0.000000,0.006530,0.059106,0.006144);
-	uv(0.840637,0.666667,0.000000,1.000000,0.000000,0.859755,0.182127,0.559733);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,0.066424,1.000000,0.066424,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.859755,0.000000,1.000000,0.840637,0.666667,0.182127,0.559733);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.622180,0.000000,0.629667);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,0.590312,0.000000,0.000000,0.629667,1.000000,0.622180);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.934109,0.000000,0.934109,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,0.000000,0.000000,0.431554,0.000000,0.431554,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,0.000000,0.000000,1.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,0.150135,0.000000,0.150135);
-	uv(1.000000,1.000000,1.000000,0.000000,0.629667,0.000000,0.849865,1.000000);
-	uv(1.000000,0.000000,0.000000,0.000000,1.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.175944,1.000000,0.000000,0.622180,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,0.500000,1.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.389458,0.003987,0.389406,0.320947,0.556543,0.317910,0.556574,0.002896);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.934109,0.205016,1.000000,0.000000,0.496329,0.000000,0.521365,0.205016);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,0.000000,0.503671);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,0.000000,0.000000,1.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(1.063908,0.579473,0.980168,0.586930,0.980168,0.733265,1.102742,0.699579);
-	uv(0.102742,0.300421,0.063908,0.411678,0.063908,0.579473,0.102742,0.699579);
-	uv(1.063908,0.411678,1.102742,0.300421,0.980168,0.266734,0.980168,0.405176);
-	uv(0.397258,0.300421,0.397258,0.699579,0.494391,0.734400,0.494391,0.265600);
-	uv(0.494391,0.734400,0.397258,0.699579,0.490985,0.808478);
-	uv(0.490985,0.808478,0.640165,0.738236,0.640165,0.261764,0.490985,0.191522);
-	uv(0.980168,0.585388,0.828330,0.601546,0.980168,0.586930);
-	uv(0.494391,0.265600,0.494391,0.734400,0.490985,0.808478,0.490985,0.191522);
-	uv(0.980168,0.405176,0.980168,0.266734,0.828330,0.240533,0.828330,0.389426);
-	uv(0.397258,0.699579,0.397258,0.300421,0.102742,0.300421,0.102742,0.699579);
-	uv(0.980168,0.586930,0.828330,0.601546,0.828330,0.759467,0.980168,0.733265);
-	uv(0.980168,0.585388,0.980168,0.586930,1.063908,0.579473);
-	uv(0.490985,0.808478,0.980168,0.733265,0.828330,0.759467,0.640165,0.738236);
-	uv(0.397258,0.699579,0.102742,0.699579,0.980168,0.733265,0.490985,0.808478);
-	uv(1.397258,0.300421,1.490986,0.191522,0.980168,0.266734,1.102742,0.300421);
-	uv(0.397258,0.300421,0.494391,0.265600,0.490985,0.191522);
-	uv(0.828330,0.240533,0.828330,0.759467,0.828330,0.601546);
-	uv(0.828330,0.240533,0.828330,0.601546,0.828330,0.389426);
-	uv(0.980168,0.266734,0.490985,0.191522,0.640165,0.261764,0.828330,0.240533);
-	uv(0.640165,0.738236,0.828330,0.759467,0.828330,0.240533,0.640165,0.261764);
-	uv(0.980168,0.586930,0.980168,0.405176,0.828330,0.389426,0.828330,0.601546);
-	uv(1.063908,0.579473,1.063908,0.411678,0.980168,0.405176,0.980168,0.586930);
-	uv(1.148169,0.272470,0.971921,0.194135,1.148169,0.000000,1.148169,0.000000);
-	uv(0.351831,0.000000,0.351831,0.272470,0.148169,0.272470,0.351831,0.000000);
-	uv(0.603320,0.180830,0.581358,0.212580,0.351831,0.272470,0.603320,0.000000);
-	uv(0.836835,0.000000,0.836835,0.000000,0.836835,0.131638,0.727482,0.115296);
-	uv(0.734995,0.000000,0.734995,0.164326,0.669958,0.258501,0.603320,0.180830);
-	uv(0.828884,0.181752,0.836984,0.262512,0.669958,0.258501,0.734995,0.164326);
-	uv(0.861232,0.141117,0.908657,0.187805,0.836984,0.262512,0.828884,0.181752);
-	uv(0.971921,0.810968,0.971921,0.194135,1.148169,0.272470,1.148169,0.732955);
-	uv(0.971921,1.000000,0.971921,0.000000,0.971921,0.194135,0.971921,0.810968);
-	uv(0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.148169,0.732955,0.148169,0.272470,0.351831,0.272470,0.351831,0.732955);
-	uv(0.581358,0.792715,0.581358,0.212580,0.603320,0.180830,0.603320,0.824093);
-	uv(0.351831,0.732955,0.351831,0.272470,0.581358,0.212580,0.581358,0.792715);
-	uv(0.836835,0.872340,0.836835,0.131638,0.836835,0.000000,0.836835,1.000000);
-	uv(0.603320,0.824093,0.603320,0.180830,0.669958,0.258501,0.669958,0.746963);
-	uv(0.828884,0.823185,0.828884,0.181752,0.734995,0.164326,0.734995,0.840327);
-	uv(0.669958,0.746963,0.669958,0.258501,0.836984,0.262512,0.836984,0.742945);
-	uv(0.861232,0.863074,0.861232,0.141117,0.828884,0.181752,0.828884,0.823185);
-	uv(0.908657,0.817217,0.908657,0.187805,0.861232,0.141117,0.861232,0.863074);
-	uv(0.836984,0.742945,0.836984,0.262512,0.908657,0.187805,0.908657,0.817217);
-	uv(0.727482,0.888281,0.727482,0.115296,0.836835,0.131638,0.836835,0.872340);
-	uv(0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.734995,0.164326,0.734995,0.840327,0.727482,0.888281,0.727482,0.115296);
-	uv(0.000000,0.000000,0.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.828884,0.823185,0.836984,0.742945,0.669958,0.746963,0.734995,0.840327);
-	uv(0.836984,0.742945,0.908657,0.817217,0.861232,0.863074,0.828884,0.823185);
-	uv(1.148169,1.000000,1.148169,0.732955,0.971921,0.810968,1.148169,1.000000);
-	uv(0.351831,0.732955,0.148169,0.732955,0.351831,1.000000,0.351831,1.000000);
-	uv(0.603320,0.824093,0.581358,0.792715,0.351831,0.732955,0.603320,1.000000);
-	uv(0.734995,1.000000,0.734995,0.840327,0.669958,0.746963,0.603320,0.824093);
-	uv(0.836835,1.000000,0.836835,0.872340,0.727482,0.888281,0.836835,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.175707,1.000000,0.000000,0.337951,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000);
-	uv(0.000000,1.000000,0.000000,1.000000,1.000000,1.000000,1.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,0.000000,0.175707,0.337951,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,0.000000,0.000000,1.000000,1.000000);
-	uv(1.000000,1.000000,0.000000,1.000000,0.000000,1.000000,1.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.175707,1.000000,0.000000,0.337951,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000);
-	uv(0.000000,1.000000,0.000000,1.000000,1.000000,1.000000,1.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,1.000000,1.000000,0.000000,1.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,0.000000,0.175707,0.337951,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,0.000000,0.000000,1.000000,1.000000);
-	uv(1.000000,1.000000,0.000000,1.000000,0.000000,1.000000,1.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,1.000000,1.000000,1.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,1.000000,1.000000,0.000000);
-	uv(1.000000,0.661423,0.464092,1.000000,1.000000,1.000000);
-	uv(0.464092,1.000000,1.000000,0.661423,0.464092,0.910164);
-	uv(0.464092,0.910164,1.000000,0.661423,0.000000,0.910164);
-	uv(0.000000,0.910164,1.000000,0.661423,0.673172,0.739133);
-	uv(0.673172,0.739133,1.000000,0.661423,0.673172,0.661423);
-	uv(0.437805,0.256123,0.090594,0.566525,0.437805,0.739133);
-	uv(0.090594,0.566525,0.437805,0.256123,0.368376,0.269285);
-	uv(0.090594,0.566525,0.368376,0.269285,0.090594,0.282572);
-	uv(0.090594,0.282572,0.368376,0.269285,0.000000,0.282572);
-	uv(0.000000,0.282572,0.142719,0.269285,0.000000,0.129525);
-	uv(0.142719,0.269285,0.000000,0.282572,0.368376,0.269285);
-	uv(0.000000,0.129525,0.142719,0.269285,0.142719,0.000000);
-	uv(0.000000,0.910164,0.437805,0.739133,0.000000,0.566525);
-	uv(0.437805,0.739133,0.000000,0.910164,0.673172,0.739133);
-	uv(0.000000,0.566525,0.437805,0.739133,0.090594,0.566525);
-	uv(1.000000,0.731496,0.955160,0.548724,0.955160,0.696637);
-	uv(0.102105,1.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,0.102105,1.000000,0.102105,0.640334);
-	uv(0.000000,0.000000,0.102105,0.640334,0.168495,0.431989);
-	uv(0.000000,0.000000,0.168495,0.431989,1.000000,0.000000);
-	uv(0.168495,0.431989,0.102105,0.640334,0.168495,0.640334);
-	uv(1.000000,0.000000,0.168495,0.431989,0.800898,0.431989);
-	uv(1.000000,0.000000,0.800898,0.431989,0.955160,0.548724);
-	uv(1.000000,0.000000,0.955160,0.548724,1.000000,0.731496);
-	uv(1.000000,1.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.061049,1.000000,0.227543,0.879885,0.061049,0.446583);
-	uv(0.227543,0.879885,0.061049,1.000000,0.278006,1.000000);
-	uv(0.227543,0.879885,0.278006,1.000000,0.278006,0.981312);
-	uv(0.227543,0.879885,0.278006,0.981312,0.822948,0.879885);
-	uv(0.822948,0.879885,0.278006,0.981312,1.000000,0.981312);
-	uv(0.822948,0.879885,1.000000,0.981312,0.822948,0.000324);
-	uv(0.822948,0.000324,1.000000,0.981312,1.000000,0.000324);
-	uv(1.000000,0.000324,1.000000,0.981312,1.000000,0.445877);
-	uv(0.061049,0.446583,0.000000,0.000000,0.000000,0.446583);
-	uv(0.000000,0.000000,0.061049,0.446583,0.227543,0.000000);
-	uv(0.227543,0.000000,0.061049,0.446583,0.227543,0.879885);
-	uv(1.000000,1.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,0.000000,1.000000,1.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,0.000000,0.914953,0.000000,1.000000);
-	uv(0.000000,0.914953,1.000000,1.000000,0.674255,0.914953);
-	uv(0.674255,0.914953,1.000000,1.000000,0.674255,0.104837);
-	uv(0.674255,0.104837,1.000000,0.000000,0.316549,0.000000);
-	uv(1.000000,0.000000,0.674255,0.104837,1.000000,1.000000);
-	uv(1.000000,0.000000,0.000000,1.000000,1.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,1.000000,1.000000,0.000000);
-	uv(1.000000,0.000000,0.000000,1.000000,1.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,0.000000,0.000000,0.175707);
-	uv(0.000000,0.175707,1.000000,0.000000,0.337951,0.000000);
-	uv(1.000000,1.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,1.000000,1.000000,0.000000);
-	uv(1.000000,1.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,1.000000,1.000000,0.000000);
-	uv(1.000000,1.000000,0.245856,0.915939,0.000000,1.000000);
-	uv(0.245856,0.915939,1.000000,1.000000,1.000000,0.000000);
-	uv(0.245856,0.915939,1.000000,0.000000,0.245856,0.298517);
-	uv(0.245856,0.298517,1.000000,0.000000,0.822603,0.000000);
-	uv(0.000000,0.915939,0.000000,1.000000,0.245856,0.915939);
-	uv(1.000000,1.000000,0.000000,0.000000,0.000000,0.327877);
-	uv(0.000000,0.000000,1.000000,1.000000,1.000000,0.000000);
-	uv(1.000000,1.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,1.000000,1.000000,0.000000);
-	uv(1.000000,0.000000,0.000000,1.000000,1.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.294465,1.000000,0.000000,0.336193,0.000000,1.000000);
-	uv(0.000000,0.336193,0.294465,1.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.294465,1.000000,1.000000,0.000000);
-	uv(1.000000,0.000000,0.294465,1.000000,0.685067,1.000000);
-	uv(1.000000,0.000000,0.685067,1.000000,1.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,1.000000,0.336193);
-	uv(1.000000,1.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,1.000000,1.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,0.000000,1.000000,1.000000,1.000000);
-	uv(1.000000,1.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,0.929503,1.000000,1.000000,1.000000);
-	uv(0.929503,1.000000,1.000000,0.000000,0.306924,1.000000);
-	uv(0.306924,1.000000,1.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,0.000000,0.847512,0.136050);
-	uv(0.000000,1.000000,0.005222,0.136050,0.000000,0.000000);
-	uv(0.005222,0.136050,0.000000,1.000000,0.847512,0.136050);
-	uv(0.000000,0.000000,0.005222,0.136050,0.005222,0.000000);
-	uv(1.000000,1.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,1.000000,1.000000,0.000000);
-	uv(1.000000,0.000000,0.447073,0.203384,1.000000,0.673186);
-	uv(0.447073,0.203384,1.000000,0.000000,0.253720,0.203384);
-	uv(0.253720,0.203384,1.000000,0.000000,0.355479,0.068995);
-	uv(0.355479,0.068995,1.000000,0.000000,0.355479,0.000000);
-	uv(0.103827,0.253697,0.000000,1.000000,0.103827,1.000000);
-	uv(0.000000,1.000000,0.103827,0.253697,0.000000,0.068995);
-	uv(0.000000,0.068995,0.103827,0.253697,0.253720,0.203384);
-	uv(0.000000,0.068995,0.253720,0.203384,0.355479,0.068995);
-	uv(1.000000,1.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,1.000000,1.000000,0.500000);
-	uv(0.000000,0.000000,1.000000,0.500000,1.000000,0.000000);
-	uv(1.000000,0.000000,0.000000,1.000000,1.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,0.000000,0.108075,0.312773);
-	uv(0.000000,0.312773,0.000000,1.000000,0.108075,0.312773);
-	uv(1.000000,1.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,1.000000,0.409219,0.000000);
-	uv(1.000000,1.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,1.000000,1.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,0.000000,1.000000,1.000000,1.000000);
-	uv(1.000000,1.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,1.000000,1.000000,0.128787);
-	uv(1.000000,0.000000,0.000000,1.000000,0.134547,1.000000);
-	uv(0.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,0.923544,0.994545,0.000000,0.000000);
-	uv(0.923544,0.994545,0.000000,1.000000,1.000000,1.000000);
-	uv(0.000000,0.000000,0.923544,0.994545,0.923544,0.506194);
-	uv(0.923544,0.056734,0.000000,0.000000,0.923544,0.506194);
-	uv(1.000000,1.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,1.000000,1.000000,0.470466);
-	uv(1.000000,0.411030,0.719721,1.000000,1.000000,1.000000);
-	uv(0.719721,1.000000,1.000000,0.411030,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,0.411030,0.253720,0.696959);
-	uv(0.253720,0.696959,1.000000,0.411030,0.253720,0.000000);
-	uv(0.253720,0.000000,1.000000,0.411030,0.447073,0.000000);
-	uv(0.000000,0.696959,0.000000,1.000000,0.253720,0.696959);
-	uv(1.000000,1.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,1.000000,1.000000,0.000000);
-	uv(1.000000,1.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,1.000000,1.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,1.000000,0.748310);
-	uv(1.000000,0.000000,1.000000,0.748310,1.000000,0.452054);
-	uv(1.000000,0.000000,1.000000,0.452054,1.000000,0.190273);
-	uv(1.000000,1.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,1.000000,0.343006,0.139296);
-	uv(0.000000,0.000000,0.343006,0.139296,0.240472,0.000000);
-	uv(0.343006,0.139296,1.000000,1.000000,1.000000,0.139296);
-	uv(1.000000,0.693414,0.000000,1.000000,1.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,0.693414,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.693414,1.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,0.167065,0.435233,0.000000);
-	uv(0.435233,0.000000,1.000000,0.167065,0.435233,0.286556);
-	uv(0.435233,0.286556,1.000000,0.167065,0.000000,0.791167);
-	uv(0.000000,0.791167,1.000000,0.167065,0.000000,1.000000);
-	uv(1.000000,1.000000,0.000000,1.000000,1.000000,0.167065);
-	uv(1.000000,1.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,1.000000,1.000000,0.000000);
-	uv(1.000000,1.000000,0.000000,0.748310,0.000000,1.000000);
-	uv(0.000000,0.748310,1.000000,1.000000,0.000000,0.452054);
-	uv(0.000000,0.452054,1.000000,1.000000,0.000000,0.190273);
-	uv(0.000000,0.190273,1.000000,1.000000,0.000000,0.026504);
-	uv(0.000000,0.026504,1.000000,1.000000,0.410830,0.026504);
-	uv(0.410830,0.026504,1.000000,1.000000,0.506988,0.000000);
-	uv(0.506988,0.000000,1.000000,1.000000,1.000000,0.000000);
-	uv(0.000000,0.512203,0.316743,0.512203,0.000000,1.000000);
-	uv(0.000000,1.000000,0.316743,0.512203,1.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.316743,0.512203);
-	uv(1.000000,1.000000,0.000000,1.000000,1.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,0.000000,0.000000,1.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,0.029384,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,0.000000,0.029384,1.000000,1.000000);
-	uv(1.000000,0.000000,0.000000,1.000000,1.000000,1.000000);
-	uv(1.000000,0.000000,0.000000,1.000000,1.000000,1.000000);
-	uv(1.000000,0.000000,0.000000,1.000000,1.000000,1.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.836835,0.000000,0.836835,0.872340,0.836835,1.000000);
-	uv(0.836835,0.872340,0.836835,0.000000,0.836835,0.127660);
-	uv(0.971921,0.810968,1.351831,0.732955,1.148169,0.732955);
-	uv(1.351831,0.732955,0.971921,0.810968,1.351831,1.000000);
-	uv(0.971921,1.000000,0.971921,0.810968,0.971921,1.000000);
-	uv(0.836835,0.872340,0.836835,1.000000,0.836835,1.000000);
-	uv(0.836984,0.742945,0.861232,0.863074,0.908657,0.817217);
-	uv(0.861232,0.863074,0.836984,0.742945,0.828884,0.823185);
-	uv(0.828884,0.823185,0.836984,0.742945,0.734995,0.840327);
-	uv(0.734995,0.840327,0.603320,0.824093,0.727482,0.888281);
-	uv(0.603320,0.824093,0.734995,0.840327,0.669958,0.746963);
-	uv(0.669958,0.746963,0.734995,0.840327,0.836984,0.742945);
-	uv(0.351831,0.732955,0.351831,1.000000,0.581358,0.792715);
-	uv(0.351831,1.000000,0.351831,0.732955,0.351831,1.000000);
-	uv(0.581358,0.792715,0.581358,1.000000,0.581358,1.000000);
-	uv(0.581358,0.792715,0.581358,1.000000,0.727482,0.888281);
-	uv(0.727482,0.888281,0.727482,1.000000,0.836835,0.872340);
-	uv(0.581358,0.792715,0.727482,0.888281,0.603320,0.824093);
-	uv(0.000000,0.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.581358,0.207285,0.148169,0.267045,0.351831,0.267045);
-	uv(0.148169,0.267045,0.581358,0.207285,0.148169,0.000000);
-	uv(0.581358,0.000000,0.581358,0.207285,0.581358,0.000000);
-	uv(0.581358,0.000000,0.581358,0.207285,0.581358,0.000000);
-	uv(0.581358,0.000000,0.581358,0.207285,0.727482,0.111719);
-	uv(0.727482,0.111719,0.581358,0.207285,0.603320,0.175907);
-	uv(0.727482,0.111719,0.603320,0.175907,0.734995,0.159673);
-	uv(0.734995,0.159673,0.603320,0.175907,0.669958,0.253037);
-	uv(0.734995,0.159673,0.669958,0.253037,0.828884,0.176815);
-	uv(0.828884,0.176815,0.908657,0.182783,0.861232,0.136926);
-	uv(0.908657,0.182783,0.828884,0.176815,0.836984,0.257055);
-	uv(0.836984,0.257055,0.828884,0.176815,0.669958,0.253037);
-	uv(0.836835,0.127660,0.836835,0.000000,0.727482,0.111719);
-	uv(1.148169,0.267045,1.148169,0.000000,0.971921,0.189032);
-	uv(0.148169,0.000000,0.148169,0.267045,0.148169,0.000000);
-	uv(0.971921,0.189032,0.971921,0.000000,0.971921,0.000000);
-	uv(0.836835,0.872340,0.727482,0.111719,0.727482,0.888281);
-	uv(0.727482,0.111719,0.836835,0.872340,0.836835,0.127660);
-	uv(0.727482,0.111719,0.734995,0.840327,0.727482,0.888281);
-	uv(0.734995,0.840327,0.727482,0.111719,0.734995,0.159673);
-	uv(0.828884,0.176815,0.734995,0.840327,0.734995,0.159673);
-	uv(0.734995,0.840327,0.828884,0.176815,0.828884,0.823185);
-	uv(0.828884,0.176815,0.861232,0.863074,0.828884,0.823185);
-	uv(0.861232,0.863074,0.828884,0.176815,0.861232,0.136926);
-	uv(0.908657,0.182783,0.861232,0.863074,0.861232,0.136926);
-	uv(0.861232,0.863074,0.908657,0.182783,0.908657,0.817217);
-	uv(0.908657,0.182783,0.836984,0.742945,0.908657,0.817217);
-	uv(0.836984,0.742945,0.908657,0.182783,0.836984,0.257055);
-	uv(0.836984,0.742945,0.669958,0.253037,0.669958,0.746963);
-	uv(0.669958,0.253037,0.836984,0.742945,0.836984,0.257055);
-	uv(0.669958,0.253037,0.603320,0.824093,0.669958,0.746963);
-	uv(0.603320,0.824093,0.669958,0.253037,0.603320,0.175907);
-	uv(0.603320,0.824093,0.581358,0.207285,0.581358,0.792715);
-	uv(0.581358,0.207285,0.603320,0.824093,0.603320,0.175907);
-	uv(0.581358,0.207285,0.351831,0.732955,0.581358,0.792715);
-	uv(0.351831,0.732955,0.581358,0.207285,0.351831,0.267045);
-	uv(0.148169,0.267045,0.351831,0.732955,0.351831,0.267045);
-	uv(0.351831,0.732955,0.148169,0.267045,0.148169,0.732955);
-	uv(1.148169,0.267045,0.971921,0.810968,1.148169,0.732955);
-	uv(0.971921,0.810968,1.148169,0.267045,0.971921,0.189032);
-	uv(0.971921,0.810968,0.971921,0.000000,0.971921,1.000000);
-	uv(0.971921,0.000000,0.971921,0.810968,0.971921,0.189032);
-	uv(0.000000,0.000000,0.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.980168,0.733265,1.397258,0.699579,1.102742,0.699579);
-	uv(0.397258,0.699579,0.980168,0.733265,0.490985,0.808478);
-	uv(0.490985,0.808478,0.980168,0.733265,0.640165,0.738236);
-	uv(0.640165,0.738236,0.980168,0.733265,0.828330,0.759467);
-	uv(0.494391,0.734400,0.397258,0.699579,0.490985,0.808478);
-	uv(1.102742,0.699579,1.063908,0.579473,0.980168,0.733265);
-	uv(0.063908,0.579473,0.102742,0.699579,0.102742,0.300421);
-	uv(0.980168,0.733265,1.063908,0.579473,0.980168,0.586930);
-	uv(0.063908,0.579473,0.102742,0.300421,0.063908,0.411678);
-	uv(1.063908,0.411678,1.102742,0.300421,0.980168,0.405176);
-	uv(0.980168,0.405176,1.102742,0.300421,0.980168,0.266734);
-	uv(0.980168,0.585388,0.980168,0.586930,1.063908,0.579473);
-	uv(0.980168,0.586930,0.828330,0.759467,0.980168,0.733265);
-	uv(0.828330,0.759467,0.980168,0.586930,0.828330,0.601546);
-	uv(0.828330,0.759467,0.640165,0.261764,0.640165,0.738236);
-	uv(0.640165,0.261764,0.828330,0.759467,0.828330,0.240533);
-	uv(0.828330,0.240533,0.828330,0.759467,0.828330,0.601546);
-	uv(0.828330,0.240533,0.828330,0.601546,0.828330,0.389426);
-	uv(0.640165,0.261764,0.490985,0.808478,0.640165,0.738236);
-	uv(0.490985,0.808478,0.640165,0.261764,0.490985,0.191522);
-	uv(0.490985,0.808478,0.494391,0.265600,0.494391,0.734400);
-	uv(0.494391,0.265600,0.490985,0.808478,0.490985,0.191522);
-	uv(0.494391,0.265600,0.397258,0.699579,0.494391,0.734400);
-	uv(0.397258,0.699579,0.494391,0.265600,0.397258,0.300421);
-	uv(0.102742,0.300421,0.397258,0.699579,0.397258,0.300421);
-	uv(0.397258,0.699579,0.102742,0.300421,0.102742,0.699579);
-	uv(0.980168,0.266734,0.828330,0.389426,0.980168,0.405176);
-	uv(0.828330,0.389426,0.980168,0.266734,0.828330,0.240533);
-	uv(1.063908,0.411678,0.980168,0.585388,1.063908,0.579473);
-	uv(0.980168,0.585388,1.063908,0.411678,0.980168,0.405176);
-	uv(0.980168,0.585388,0.828330,0.601546,0.980168,0.586930);
-	uv(0.828330,0.601546,0.980168,0.585388,0.828330,0.389426);
-	uv(0.828330,0.389426,0.980168,0.585388,0.980168,0.405176);
-	uv(0.494391,0.265600,0.102742,0.300421,0.397258,0.300421);
-	uv(0.102742,0.300421,0.494391,0.265600,0.490985,0.191522);
-	uv(1.102742,0.300421,1.490986,0.191522,0.980168,0.266734);
-	uv(0.980168,0.266734,0.490985,0.191522,0.640165,0.261764);
-	uv(0.980168,0.266734,0.640165,0.261764,0.828330,0.240533);
-    */
-    
-	f4(106,59,210,209,0);
-	f4(28,27,34,38,0);
-	f4(237,155,181,124,0);
-	f4(175,167,12,239,0);
-	f4(317,350,60,353,0);
-	f4(75,46,202,203,0);
-	f4(35,32,28,38,0);
-	f4(241,242,125,239,0);
-	f4(237,124,175,239,0);
-	f4(39,122,119,38,0);
-	f4(134,126,238,240,0);
-	f3(10,3,14,0);
-	f4(179,168,174,178,0);
-	f4(180,122,242,82,0);
-	f4(203,211,348,75,0);
-	f3(180,97,120,0);
-	f4(225,226,0,5,0);
-	f3(37,56,52,0);
-	f4(82,172,170,244,0);
-	f4(241,121,172,82,0);
-	f4(305,72,187,300,0);
-	f4(224,228,225,7,0);
-	f4(176,181,155,182,0);
-	f4(302,324,58,21,0);
-	f3(239,12,169,0);
-	f4(170,172,121,163,0);
-	f4(5,0,284,289,0);
-	f4(236,200,332,334,0);
-	f4(119,120,35,38,0);
-	f4(216,335,339,219,0);
-	f3(285,296,322,0);
-	f3(54,58,13,0);
-	f4(214,212,80,329,0);
-	f4(293,292,327,297,0);
-	f4(218,331,201,66,0);
-	f4(50,218,66,57,0);
-	f4(343,223,106,209,0);
-	f4(52,224,7,83,0);
-	f4(6,182,155,237,0);
-	f4(354,65,68,190,0);
-	f4(61,213,88,338,0);
-	f4(237,184,3,6,0);
-	f4(11,238,126,37,0);
-	f4(300,94,269,329,0);
-	f4(305,300,329,307,0);
-	f4(249,257,186,247,0);
-	f4(256,185,253,87,0);
-	f4(100,45,211,208,0);
-	f4(234,99,337,70,0);
-	f4(327,189,79,297,0);
-	f4(94,300,19,138,0);
-	f4(285,322,84,90,0);
-	f4(185,67,259,253,0);
-	f4(67,186,257,259,0);
-	f4(258,232,264,255,0);
-	f4(84,322,321,101,0);
-	f4(73,60,350,36,0);
-	f4(130,17,97,129,0);
-	f4(201,331,354,217,0);
-	f4(204,90,84,191,0);
-	f4(29,52,56,27,0);
-	f4(310,304,309,308,0);
-	f4(96,125,93,85,0);
-	f4(52,29,30,54,0);
-	f3(179,125,96,0);
-	f4(269,94,51,268,0);
-	f4(58,54,30,21,0);
-	f3(37,52,11,0);
-	f4(57,66,146,145,0);
-	f4(177,176,40,37,0);
-	f4(42,41,44,76,0);
-	f4(254,263,233,260,0);
-	f4(22,30,29,23,0);
-	f4(22,18,21,30,0);
-	f4(314,304,23,33,0);
-	f4(338,88,196,342,0);
-	f4(288,92,221,4,0);
-	f4(196,88,213,70,0);
-	f4(301,312,256,87,0);
-	f4(89,73,36,91,0);
-	f4(64,89,91,79,0);
-	f4(36,350,352,195,0);
-	f3(97,35,120,0);
-	f4(28,23,29,27,0);
-	f4(20,31,33,25,0);
-	f4(285,288,286,296,0);
-	f4(337,61,338,342,0);
-	f4(341,223,41,42,0);
-	f4(144,128,103,127,0);
-	f4(110,157,161,154,0);
-	f4(150,138,131,130,0);
-	f4(137,129,171,135,0);
-	f4(314,312,301,306,0);
-	f4(143,144,127,244,0);
-	f4(108,112,104,107,0);
-	f4(164,102,118,140,0);
-	f4(230,227,228,224,0);
-	f4(158,156,111,115,0);
-	f4(104,112,149,278,0);
-	f4(344,69,53,216,0);
-	f4(113,109,108,107,0);
-	f4(132,123,37,126,0);
-	f4(239,169,121,241,0);
-	f4(248,31,20,252,0);
-	f4(180,120,119,122,0);
-	f4(304,303,22,23,0);
-	f4(178,174,167,175,0);
-	f4(318,319,328,315,0);
-	f4(215,68,65,219,0);
-	f4(198,343,209,206,0);
-	f4(278,277,160,104,0);
-	f4(127,103,136,135,0);
-	f4(176,182,6,40,0);
-	f4(121,169,166,163,0);
-	f4(154,158,115,110,0);
-	f4(123,132,133,139,0);
-	f4(332,339,335,334,0);
-	f4(83,8,10,14,0);
-	f4(229,226,227,230,0);
-	f4(254,260,24,19,0);
-	f3(0,226,1,0);
-	f4(3,184,240,14,0);
-	f4(114,102,330,341,0);
-	f4(208,168,179,197,0);
-	f4(315,328,93,34,0);
-	f4(282,156,158,154,0);
-	f3(353,89,64,0);
-	f4(92,288,285,284,0);
-	f4(335,336,340,334,0);
-	f4(124,181,176,177,0);
-	f4(76,44,207,205,0);
-	f4(150,130,129,137,0);
-	f4(327,289,173,291,0);
-	f4(151,143,140,142,0);
-	f4(346,347,80,349,0);
-	f4(190,68,86,98,0);
-	f4(229,54,1,226,0);
-	f4(161,157,162,160,0);
-	f4(225,5,83,7,0);
-	f4(36,195,78,91,0);
-	f4(79,91,287,297,0);
-	f4(80,212,190,326,0);
-	f4(93,39,38,34,0);
-	f4(178,175,124,177,0);
-	f4(136,103,147,146,0);
-	f4(146,147,128,145,0);
-	f4(345,330,98,86,0);
-	f3(183,126,134,0);
-	f4(331,50,65,354,0);
-	f4(146,66,201,136,0);
-	f4(152,148,117,153,0);
-	f4(165,170,163,166,0);
-	f4(244,171,180,82,0);
-	f4(133,132,126,183,0);
-	f4(240,238,83,14,0);
-	f4(104,160,162,107,0);
-	f4(95,204,191,101,0);
-	f4(237,239,139,184,0);
-	f4(125,123,139,239,0);
-	f4(184,183,134,240,0);
-	f4(139,133,183,184,0);
-	f4(131,138,19,97,0);
-	f4(180,171,129,97,0);
-	f4(340,61,236,334,0);
-	f4(52,54,229,224,0);
-	f3(215,219,210,0);
-	f4(1,4,221,0,0);
-	f4(2,4,1,13,0);
-	f3(13,1,54,0);
-	f4(122,39,93,125,0);
-	f4(169,167,174,168,0);
-	f4(165,166,203,202,0);
-	f4(244,127,135,171,0);
-	f4(140,143,244,164,0);
-	f4(97,19,24,26,0);
-	f4(15,193,48,217,0);
-	f4(217,354,190,212,0);
-	f4(328,319,349,352,0);
-	f4(246,245,248,252,0);
-	f4(250,251,245,246,0);
-	f4(249,247,251,250,0);
-	f4(150,51,94,138,0);
-	f4(305,307,26,24,0);
-	f4(258,48,194,232,0);
-	f4(258,255,137,135,0);
-	f4(236,99,234,200,0);
-	f4(116,280,276,159,0);
-	f4(275,273,272,271,0);
-	f4(144,143,151,149,0);
-	f4(280,275,271,276,0);
-	f4(111,270,110,115,0);
-	f4(273,283,114,272,0);
-	f4(161,160,277,281,0);
-	f4(151,142,267,278,0);
-	f4(281,116,159,279,0);
-	f4(141,283,116,281,0);
-	f4(278,267,141,281,0);
-	f3(149,151,278,0);
-	f4(156,282,270,111,0);
-	f4(162,270,113,107,0);
-	f4(274,162,157,110,0);
-	f4(99,236,222,337,0);
-	f4(286,288,4,2,0);
-	f4(43,200,234,209,0);
-	f4(315,308,309,318,0);
-	f4(199,188,78,351,0);
-	f4(295,45,71,195,0);
-	f4(348,211,195,62,0);
-	f4(353,60,73,89,0);
-	f4(330,102,164,98,0);
-	f4(309,313,316,318,0);
-	f4(352,63,62,195,0);
-	f4(71,351,78,195,0);
-	f4(346,349,319,318,0);
-	f4(189,353,64,79,0);
-	f3(287,293,297,0);
-	f4(100,208,197,266,0);
-	f4(63,349,80,326,0);
-	f4(342,196,70,337,0);
-	f4(324,296,13,58,0);
-	f3(329,80,347,0);
-	f4(284,90,173,289,0);
-	f3(323,317,321,0);
-	f4(46,81,326,190,0);
-	f4(81,348,62,326,0);
-	f3(90,284,285,0);
-	f4(173,95,101,291,0);
-	f4(188,199,220,9,0);
-	f4(308,27,56,323,0);
-	f3(295,195,211,0);
-	f4(348,81,46,75,0);
-	f4(117,344,216,153,0);
-	f4(15,51,150,137,0);
-	f4(316,347,346,318,0);
-	f4(72,305,24,260,0);
-	f4(217,48,258,135,0);
-	f3(324,322,296,0);
-	f4(148,69,344,117,0);
-	f4(86,68,215,192,0);
-	f4(10,8,292,293,0);
-	f4(3,10,293,287,0);
-	f4(296,286,2,13,0);
-	f4(291,101,321,327,0);
-	f4(188,9,290,78,0);
-	f4(40,6,290,320,0);
-	f4(92,284,0,221,0);
-	f4(287,91,78,290,0);
-	f4(353,189,294,317,0);
-	f4(53,69,148,152,0);
-	f4(16,72,260,233,0);
-	f4(32,26,307,313,0);
-	f4(28,32,313,309,0);
-	f4(264,232,194,47,0);
-	f4(212,214,15,217,0);
-	f4(169,168,208,211,0);
-	f4(205,207,343,198,0);
-	f4(309,306,25,28,0);
-	f4(306,301,20,25,0);
-	f4(47,194,48,193,0);
-	f4(153,216,219,149,0);
-	f4(98,164,165,202,0);
-	f4(329,298,268,214,0);
-	f4(290,9,220,320,0);
-	f4(200,43,210,332,0);
-	f4(18,22,303,299,0);
-	f4(323,321,310,308,0);
-	f4(308,315,34,27,0);
-	f4(328,352,96,85,0);
-	f4(311,310,321,322,0);
-	f3(352,197,96,0);
-	f4(59,192,215,210,0);
-	f4(351,71,266,49,0);
-	f4(311,322,324,302,0);
-	f3(321,317,294,0);
-	f4(292,8,5,289,0);
-	f4(220,199,351,49,0);
-	f4(320,220,49,317,0);
-	f4(18,299,302,21,0);
-	f4(16,231,187,72,0);
-	f4(310,311,303,304,0);
-	f4(302,299,303,311,0);
-	f4(231,16,233,263,0);
-	f4(219,339,332,210,0);
-	f4(50,57,145,128,0);
-	f4(56,40,320,323,0);
-	f4(45,100,266,71,0);
-	f4(336,53,152,109,0);
-	f4(340,336,109,113,0);
-	f4(214,268,51,15,0);
-	f4(340,113,105,333,0);
-	f3(316,329,347,0);
-	f4(112,108,153,149,0);
-	f4(312,314,33,31,0);
-	f4(401,405,371,396,1);
-	f4(411,403,401,396,1);
-	f4(403,411,414,409,1);
-	f4(410,394,389,412,1);
-	f3(361,356,358,1);
-	f4(387,381,415,413,1);
-	f3(407,406,405,1);
-	f4(412,389,387,413,1);
-	f4(409,414,416,408,1);
-	f4(394,410,411,396,1);
-	f4(405,406,377,371,1);
-	f3(370,366,363,1);
-	f4(387,371,377,381,1);
-	f4(394,396,371,387,1);
-	f4(410,413,414,411,1);
-	f3(410,412,413,1);
-	f3(378,377,379,1);
-	f3(378,379,380,1);
-	f4(414,413,415,416,1);
-	f4(381,377,416,415,1);
-	f4(405,409,408,406,1);
-	f4(401,403,409,405,1);
-	f4(477,472,481,480,1);
-	f4(471,483,477,480,1);
-	f4(479,482,483,471,1);
-	f4(486,485,487,488,1);
-	f4(471,484,476,479,1);
-	f4(475,478,476,484,1);
-	f4(473,474,478,475,1);
-	f4(449,472,477,459,1);
-	f4(467,481,472,449,1);
-	f4(464,480,481,467,1);
-	f4(444,471,480,464,1);
-	f4(459,477,483,469,1);
-	f4(468,482,479,462,1);
-	f4(469,483,482,468,1);
-	f4(463,487,485,442,1);
-	f4(462,479,476,458,1);
-	f4(456,475,484,470,1);
-	f4(458,476,478,460,1);
-	f4(450,473,475,456,1);
-	f4(453,474,473,450,1);
-	f4(460,478,474,453,1);
-	f4(465,488,487,463,1);
-	f4(442,485,486,443,1);
-	f4(484,470,465,488,1);
-	f4(486,443,447,471,1);
-	f4(456,460,458,470,1);
-	f4(460,453,450,456,1);
-	f4(464,459,449,467,1);
-	f4(469,459,464,447,1);
-	f4(462,468,469,447,1);
-	f4(447,470,458,462,1);
-	f4(442,463,465,443,1);
-	f4(593,580,526,514,1);
-	f4(546,525,490,524,1);
-	f4(508,566,570,567,1);
-	f4(555,535,528,527,1);
-	f4(532,534,526,580,1);
-	f4(502,497,559,554,1);
-	f3(539,545,573,1);
-	f4(497,502,491,496,1);
-	f4(573,489,512,539,1);
-	f4(610,638,653,651,1);
-	f4(567,568,510,508,1);
-	f4(546,545,556,554,1);
-	f3(674,676,673,1);
-	f4(504,498,497,496,1);
-	f4(621,519,516,618,1);
-	f4(590,586,576,587,1);
-	f4(640,661,624,641,1);
-	f4(622,631,675,623,1);
-	f4(554,556,544,542,1);
-	f4(524,490,533,532,1);
-	f4(587,519,517,518,1);
-	f4(515,578,575,572,1);
-	f4(491,502,554,542,1);
-	f4(517,529,530,536,1);
-	f4(652,678,672,679,1);
-	f4(628,616,514,528,1);
-	f4(665,670,664,666,1);
-	f4(501,563,561,499,1);
-	f4(619,623,676,621,1);
-	f4(669,617,618,677,1);
-	f4(496,501,499,504,1);
-	f4(597,531,591,598,1);
-	f4(561,505,493,504,1);
-	f4(666,578,577,665,1);
-	f4(518,595,588,589,1);
-	f4(601,653,656,657,1);
-	f4(534,526,527,555,1);
-	f4(652,678,636,495,1);
-	f4(556,545,539,544,1);
-	f4(542,544,539,512,1);
-	f4(676,665,577,592,1);
-	f4(526,527,528,514,1);
-	f4(570,566,571,569,1);
-	f4(510,568,563,501,1);
-	f4(622,623,619,629,1);
-	f4(666,621,618,617,1);
-	f3(499,561,504,1);
-	f4(675,679,672,673,1);
-	f4(566,508,510,571,1);
-	f4(510,501,496,571,1);
-	f4(590,587,518,589,1);
-	f4(489,505,542,512,1);
-	f4(533,490,550,549,1);
-	f4(549,550,525,548,1);
-	f4(650,646,554,559,1);
-	f3(597,522,531,1);
-	f4(664,671,621,666,1);
-	f3(563,491,542,1);
-	f4(558,551,511,559,1);
-	f4(574,579,572,575,1);
-	f4(580,593,581,579,1);
-	f4(530,529,522,597,1);
-	f4(518,517,536,595,1);
-	f4(491,569,571,496,1);
-	f4(536,595,562,598,1);
-	f4(563,542,505,561,1);
-	f4(591,531,522,523,1);
-	f4(584,630,636,495,1);
-	f4(536,530,597,598,1);
-	f4(593,514,513,516,1);
-	f4(588,595,562,596,1);
-	f4(635,628,528,535,1);
-	f4(596,562,598,591,1);
-	f4(658,655,656,657,1);
-	f4(665,676,674,670,1);
-	f4(623,675,673,676,1);
-	f4(517,523,522,529,1);
-	f4(576,586,577,578,1);
-	f4(615,513,516,618,1);
-	f4(516,519,578,515,1);
-	f4(588,596,591,589,1);
-	f4(590,592,577,586,1);
-	f4(589,591,523,592,1);
-	f3(592,590,589,1);
-	f4(516,515,581,593,1);
-	f4(592,523,517,519,1);
-	f4(519,587,576,578,1);
-	f4(579,581,515,572,1);
-	f4(645,613,511,551,1);
-	f4(568,567,570,569,1);
-	f4(568,563,491,569,1);
-	f4(524,573,545,546,1);
-	f4(532,580,573,524,1);
-	f4(626,668,677,616,1);
-	f4(600,625,641,624,1);
-	f4(658,654,611,655,1);
-	f4(628,635,647,627,1);
-	f4(626,634,632,668,1);
-	f4(650,604,608,646,1);
-	f3(640,637,661,1);
-	f4(601,608,604,603,1);
-	f4(614,599,661,637,1);
-	f4(643,633,533,549,1);
-	f4(612,656,655,611,1);
-	f4(648,640,641,646,1);
-	f4(649,645,551,558,1);
-	f4(604,605,609,603,1);
-	f4(505,489,599,610,1);
-	f4(664,670,674,671,1);
-	f4(661,668,632,624,1);
-	f4(548,642,643,549,1);
-	f4(639,648,646,638,1);
-	f4(633,600,624,632,1);
-	f4(619,621,671,620,1);
-	f4(663,666,617,660,1);
-	f4(646,608,601,638,1);
-	f4(630,629,619,636,1);
-	f4(495,652,679,675,1);
-	f4(511,613,650,559,1);
-	f4(504,493,602,609,1);
-	f4(651,653,607,606,1);
-	f4(617,669,667,660,1);
-	f4(621,676,592,519,1);
-	f4(606,607,603,609,1);
-	f4(675,631,584,495,1);
-	f4(602,610,651,609,1);
-	f4(662,574,575,663,1);
-	f4(672,678,620,673,1);
-	f4(555,647,635,535,1);
-	f4(627,626,634,647,1);
-	f4(632,634,534,532,1);
-	f4(637,640,648,639,1);
-	f4(637,639,638,614,1);
-	f4(605,649,558,498,1);
-	f4(628,627,626,616,1);
-	f4(659,654,658,657,1);
-	f4(653,656,612,607,1);
-	f4(605,498,504,609,1);
-	f4(615,616,677,618,1);
-	f3(651,606,609,1);
-	f4(573,574,662,661,1);
-	f4(612,611,654,659,1);
-	f4(603,607,612,659,1);
-	f4(620,671,674,673,1);
-	f4(638,610,599,614,1);
-	f4(644,600,633,643,1);
-	f4(625,644,643,642,1);
-	f4(525,625,642,548,1);
-	f3(622,584,631,1);
-	f4(616,615,513,514,1);
-	f3(601,653,638,1);
-	f4(613,645,649,650,1);
-	f4(660,667,662,663,1);
-	f4(669,677,668,667,1);
-	f4(622,629,630,584,1);
-	f4(636,619,620,678,1);
-	f4(659,657,601,603,1);
-	f4(634,647,555,534,1);
-	f4(661,599,489,573,1);
-	f4(784,771,717,705,1);
-	f4(737,716,681,715,1);
-	f4(699,757,761,758,1);
-	f4(746,726,719,718,1);
-	f4(723,725,717,771,1);
-	f4(693,688,750,745,1);
-	f3(730,736,764,1);
-	f4(688,693,682,687,1);
-	f4(764,680,703,730,1);
-	f4(748,744,725,723,1);
-	f4(758,759,701,699,1);
-	f4(737,736,747,745,1);
-	f4(776,731,702,742,1);
-	f4(695,689,688,687,1);
-	f4(684,728,785,695,1);
-	f4(781,777,767,778,1);
-	f4(746,775,686,726,1);
-	f4(691,748,724,740,1);
-	f4(745,747,735,733,1);
-	f4(715,681,724,723,1);
-	f4(778,710,708,709,1);
-	f4(706,769,766,763,1);
-	f4(682,693,745,733,1);
-	f4(708,720,721,727,1);
-	f4(745,750,683,716,1);
-	f3(716,683,697,1);
-	f4(689,695,785,712,1);
-	f4(692,754,752,690,1);
-	f4(732,743,710,707,1);
-	f4(751,768,783,698,1);
-	f4(687,692,690,695,1);
-	f4(788,722,782,789,1);
-	f4(752,696,684,695,1);
-	f4(765,764,729,685,1);
-	f4(709,786,779,780,1);
-	f4(726,686,738,719,1);
-	f4(725,717,718,746,1);
-	f4(744,775,746,725,1);
-	f4(747,736,730,735,1);
-	f4(733,735,730,703,1);
-	f4(694,776,742,749,1);
-	f4(717,718,719,705,1);
-	f4(761,757,762,760,1);
-	f4(701,759,754,692,1);
-	f4(712,694,749,689,1);
-	f4(696,680,773,728,1);
-	f3(690,752,695,1);
-	f4(773,680,764,729,1);
-	f4(757,699,701,762,1);
-	f4(701,692,687,762,1);
-	f4(781,778,709,780,1);
-	f4(680,696,733,703,1);
-	f4(724,681,741,740,1);
-	f4(740,741,716,739,1);
-	f4(739,755,691,740,1);
-	f3(788,713,722,1);
-	f4(732,707,704,711,1);
-	f3(754,682,733,1);
-	f4(749,742,702,750,1);
-	f4(765,770,763,766,1);
-	f4(771,784,772,770,1);
-	f4(721,720,713,788,1);
-	f4(709,708,727,786,1);
-	f4(682,760,762,687,1);
-	f4(727,786,753,789,1);
-	f4(754,733,696,752,1);
-	f4(782,722,713,714,1);
-	f4(716,739,755,697,1);
-	f4(727,721,788,789,1);
-	f4(784,705,704,707,1);
-	f4(779,786,753,787,1);
-	f4(774,711,704,705,1);
-	f4(787,753,789,782,1);
-	f4(719,738,774,705,1);
-	f4(751,685,765,766,1);
-	f4(769,768,751,766,1);
-	f4(708,714,713,720,1);
-	f4(767,777,768,769,1);
-	f4(783,710,743,698,1);
-	f4(707,710,769,706,1);
-	f4(779,787,782,780,1);
-	f4(781,783,768,777,1);
-	f4(780,782,714,783,1);
-	f3(783,781,780,1);
-	f4(707,706,772,784,1);
-	f4(783,714,708,710,1);
-	f4(710,778,767,769,1);
-	f4(770,772,706,763,1);
-	f4(750,702,731,683,1);
-	f4(759,758,761,760,1);
-	f4(759,754,682,760,1);
-	f4(715,764,736,737,1);
-	f4(723,771,764,715,1);
-	f4(817,859,868,807,1);
-	f4(791,816,832,815,1);
-	f4(849,845,802,846,1);
-	f4(819,826,838,818,1);
-	f4(817,825,823,859,1);
-	f4(841,795,799,837,1);
-	f3(831,828,852,1);
-	f4(792,799,795,794,1);
-	f4(805,790,852,828,1);
-	f4(825,744,748,823,1);
-	f4(803,847,846,802,1);
-	f4(839,831,832,837,1);
-	f4(804,731,776,836,1);
-	f4(795,796,800,794,1);
-	f4(785,728,793,800,1);
-	f4(855,861,865,862,1);
-	f4(686,775,838,826,1);
-	f4(824,748,691,834,1);
-	f4(830,839,837,829,1);
-	f4(824,791,815,823,1);
-	f4(810,812,862,811,1);
-	f4(854,857,808,851,1);
-	f4(837,799,792,829,1);
-	f4(821,820,810,827,1);
-	f4(683,841,837,816,1);
-	f3(683,816,697,1);
-	f4(785,800,796,712,1);
-	f4(842,844,798,797,1);
-	f4(812,743,732,809,1);
-	f4(867,856,751,698,1);
-	f4(797,798,794,800,1);
-	f4(866,822,871,872,1);
-	f4(793,801,842,800,1);
-	f4(729,852,853,685,1);
-	f4(863,869,811,864,1);
-	f4(738,686,826,819,1);
-	f4(818,817,825,838,1);
-	f4(838,775,744,825,1);
-	f4(828,831,839,830,1);
-	f4(828,830,829,805,1);
-	f4(836,776,694,840,1);
-	f4(819,818,817,807,1);
-	f4(850,845,849,848,1);
-	f4(844,847,803,798,1);
-	f4(840,694,712,796,1);
-	f4(773,790,801,728,1);
-	f3(842,797,800,1);
-	f4(852,790,773,729,1);
-	f4(803,802,845,850,1);
-	f4(794,798,803,850,1);
-	f4(811,862,865,864,1);
-	f4(829,801,790,805,1);
-	f4(835,791,824,834,1);
-	f4(816,835,834,833,1);
-	f4(691,755,833,834,1);
-	f3(813,871,822,1);
-	f4(806,809,732,711,1);
-	f3(792,844,829,1);
-	f4(804,836,840,841,1);
-	f4(851,858,853,854,1);
-	f4(860,868,859,858,1);
-	f4(813,820,821,871,1);
-	f4(827,810,811,869,1);
-	f4(850,848,792,794,1);
-	f4(843,869,827,872,1);
-	f4(801,829,844,842,1);
-	f4(813,822,866,814,1);
-	f4(755,833,816,697,1);
-	f4(871,821,827,872,1);
-	f4(806,807,868,809,1);
-	f4(843,869,863,870,1);
-	f4(806,711,774,807,1);
-	f4(872,843,870,866,1);
-	f4(774,738,819,807,1);
-	f4(853,685,751,854,1);
-	f4(751,856,857,854,1);
-	f4(813,814,810,820,1);
-	f4(856,861,855,857,1);
-	f4(743,812,867,698,1);
-	f4(857,812,809,808,1);
-	f4(866,870,863,864,1);
-	f4(856,867,865,861,1);
-	f4(814,866,864,867,1);
-	f3(865,867,864,1);
-	f4(860,808,809,868,1);
-	f4(810,814,867,812,1);
-	f4(855,862,812,857,1);
-	f4(808,860,858,851,1);
-	f4(731,804,841,683,1);
-	f4(849,846,847,848,1);
-	f4(792,844,847,848,1);
-	f4(831,852,815,832,1);
-	f4(852,859,823,815,1);
-	f3(875,874,873,1);
-	f3(878,877,876,1);
-	f3(877,878,879,1);
-	f3(882,881,880,1);
-	f3(881,882,883,1);
-	f3(883,882,884,1);
-	f3(887,886,885,1);
-	f3(886,887,888,1);
-	f3(888,887,889,1);
-	f3(892,891,890,1);
-	f3(891,892,893,1);
-	f3(896,895,894,1);
-	f3(895,896,897,1);
-	f3(899,890,898,1);
-	f3(890,899,892,1);
-	f3(902,901,900,1);
-	f3(901,902,903,1);
-	f3(906,905,904,1);
-	f3(905,906,907,1);
-	f3(907,906,908,1);
-	f3(911,910,909,1);
-	f3(910,911,912,1);
-	f3(912,911,913,1);
-	f3(913,911,914,1);
-	f3(917,916,915,1);
-	f3(916,917,918,1);
-	f3(921,920,919,1);
-	f3(920,921,922,1);
-	f3(922,921,923,1);
-	f3(923,921,924,1);
-	f3(924,921,925,1);
-	f3(926,893,892,1);
-	f3(893,926,927,1);
-	f3(930,929,928,1);
-	f3(929,930,931,1);
-	f3(929,931,932,1);
-	f3(932,931,933,1);
-	f3(936,935,934,1);
-	f3(935,936,937,1);
-	f3(937,936,938,1);
-	f3(939,892,899,1);
-	f3(892,939,926,1);
-	f3(942,941,940,1);
-	f3(941,944,943,1);
-	f3(944,941,942,1);
-	f3(947,946,945,1);
-	f3(946,947,948,1);
-	f3(948,947,949,1);
-	f3(952,951,950,1);
-	f3(951,952,953,1);
-	f3(956,955,954,1);
-	f3(955,956,957,1);
-	f3(960,959,958,1);
-	f3(959,960,961,1);
-	f3(964,963,962,1);
-	f3(963,964,965,1);
-	f3(968,967,966,1);
-	f3(971,970,969,1);
-	f3(970,971,972,1);
-	f3(975,974,973,1);
-	f3(974,975,976,1);
-	f3(976,975,977,1);
-	f3(977,975,978,1);
-	f3(978,975,979,1);
-	f3(982,981,980,1);
-	f3(981,982,983,1);
-	f3(981,983,984,1);
-	f3(984,983,985,1);
-	f3(985,987,986,1);
-	f3(987,985,983,1);
-	f3(986,987,988,1);
-	f3(977,980,989,1);
-	f3(980,977,978,1);
-	f3(989,980,981,1);
-	f3(992,991,990,1);
-	f3(995,994,993,1);
-	f3(994,995,996,1);
-	f3(994,996,997,1);
-	f3(994,997,998,1);
-	f3(997,996,999,1);
-	f3(998,997,1000,1);
-	f3(998,1000,991,1);
-	f3(998,991,992,1);
-	f3(1003,1002,1001,1);
-	f3(1006,1005,1004,1);
-	f3(1005,1006,1007,1);
-	f3(1005,1007,1008,1);
-	f3(1005,1008,1009,1);
-	f3(1009,1008,1010,1);
-	f3(1009,1010,1011,1);
-	f3(1011,1010,1012,1);
-	f3(1012,1010,1013,1);
-	f3(1004,1015,1014,1);
-	f3(1015,1004,1016,1);
-	f3(1016,1004,1005,1);
-	f3(1019,1018,1017,1);
-	f3(1022,1021,1020,1);
-	f3(1021,1022,1023,1);
-	f3(1026,1025,1024,1);
-	f3(1025,1026,1027,1);
-	f3(1027,1026,1028,1);
-	f3(1028,1030,1029,1);
-	f3(1030,1028,1026,1);
-	f3(1033,1032,1031,1);
-	f3(1032,1033,1034,1);
-	f3(1037,1036,1035,1);
-	f3(1036,1037,1038,1);
-	f3(1041,1040,1039,1);
-	f3(1040,1041,1042,1);
-	f3(1042,1041,1043,1);
-	f3(1046,1045,1044,1);
-	f3(1045,1046,1047,1);
-	f3(1050,1049,1048,1);
-	f3(1049,1050,1051,1);
-	f3(1054,1053,1052,1);
-	f3(1053,1054,1055,1);
-	f3(1053,1055,1056,1);
-	f3(1056,1055,1057,1);
-	f3(1058,1052,1053,1);
-	f3(1061,1060,1059,1);
-	f3(1060,1061,1062,1);
-	f3(1065,1064,1063,1);
-	f3(1064,1065,1066,1);
-	f3(1020,1068,1067,1);
-	f3(1068,1020,1021,1);
-	f3(1071,1070,1069,1);
-	f3(1070,1071,1072,1);
-	f3(1072,1071,1073,1);
-	f3(1073,1071,1074,1);
-	f3(1073,1074,1075,1);
-	f3(1073,1075,1076,1);
-	f3(1079,1078,1077,1);
-	f3(1078,1079,1080,1);
-	f3(1049,1082,1081,1);
-	f3(1082,1049,1051,1);
-	f3(1085,1084,1083,1);
-	f3(1088,1087,1086,1);
-	f3(1087,1088,1089,1);
-	f3(1089,1088,1090,1);
-	f3(1090,1088,1091,1);
-	f3(1090,1093,1092,1);
-	f3(1093,1090,1091,1);
-	f3(1092,1093,1094,1);
-	f3(1096,1071,1095,1);
-	f3(1071,1096,1074,1);
-	f3(1099,1098,1097,1);
-	f3(1098,1099,1100,1);
-	f3(1100,1099,1101,1);
-	f3(1101,1099,1102,1);
-	f3(1105,1104,1103,1);
-	f3(1104,1105,1106,1);
-	f3(1106,1105,1100,1);
-	f3(1106,1100,1101,1);
-	f3(1109,1108,1107,1);
-	f3(1108,1109,1110,1);
-	f3(1108,1110,1111,1);
-	f3(1114,1113,1112,1);
-	f3(1113,1114,1115,1);
-	f3(1116,1113,1115,1);
-	f3(1119,1118,1117,1);
-	f3(1118,1119,1120,1);
-	f3(1123,1122,1121,1);
-	f3(1122,1123,1124,1);
-	f3(1127,1126,1125,1);
-	f3(1126,1127,1128,1);
-	f3(1131,1130,1129,1);
-	f3(1130,1131,1132,1);
-	f3(1135,1134,1133,1);
-	f3(1134,1135,1136,1);
-	f3(1139,1138,1137,1);
-	f3(1138,1139,1140,1);
-	f3(1137,1138,1141,1);
-	f3(1142,1137,1141,1);
-	f3(1117,1144,1143,1);
-	f3(1144,1117,1118,1);
-	f3(1147,1146,1145,1);
-	f3(1146,1147,1148,1);
-	f3(1148,1147,1149,1);
-	f3(1149,1147,1150,1);
-	f3(1150,1147,1151,1);
-	f3(1152,1148,1149,1);
-	f3(1155,1154,1153,1);
-	f3(1154,1155,1129,1);
-	f3(1156,1129,1155,1);
-	f3(1129,1156,1131,1);
-	f3(1131,1156,1157,1);
-	f3(1131,1157,1158,1);
-	f3(1131,1158,1159,1);
-	f3(1162,1161,1160,1);
-	f3(1131,1162,1163,1);
-	f3(1131,1163,1164,1);
-	f3(1163,1162,1165,1);
-	f3(1168,1167,1166,1);
-	f3(1167,1168,1169,1);
-	f3(1169,1168,1170,1);
-	f3(1173,1172,1171,1);
-	f3(1172,1173,1174,1);
-	f3(1174,1173,1175,1);
-	f3(1175,1173,1176,1);
-	f3(1176,1173,1177,1);
-	f3(1180,1179,1178,1);
-	f3(1179,1180,1181,1);
-	f3(1181,1180,1182,1);
-	f3(1185,1184,1183,1);
-	f3(1184,1185,1186,1);
-	f3(1189,1188,1187,1);
-	f3(1188,1189,1190,1);
-	f3(1193,1192,1191,1);
-	f3(1191,1192,1194,1);
-	f3(1194,1192,1195,1);
-	f3(1195,1192,1196,1);
-	f3(1197,1196,1192,1);
-	f3(1198,1158,1157,1);
-	f3(1158,1198,1199,1);
-	f3(1202,1201,1200,1);
-	f3(1201,1202,1203,1);
-	f3(1203,1202,1204,1);
-	f3(1204,1202,1205,1);
-	f3(1205,1202,1206,1);
-	f3(1206,1202,1207,1);
-	f3(1207,1202,1208,1);
-	f3(1211,1210,1209,1);
-	f3(1209,1210,1212,1);
-	f3(1213,1212,1210,1);
-	f3(1216,1215,1214,1);
-	f3(1217,1214,1215,1);
-	f3(1220,1219,1218,1);
-	f3(1221,1218,1219,1);
-	f3(1224,1223,1222,1);
-	f3(1223,1224,1225,1);
-	f3(1228,1227,1226,1);
-	f3(1231,1230,1229,1);
-	f3(1234,1233,1232,1);
-	f3(1237,1236,1235,1);
-	f3(1236,1237,1238,1);
-	f3(1241,1240,1239,1);
-	f3(1240,1241,1242,1);
-	f3(1245,1244,1243,1);
-	f3(1244,1245,1246,1);
-	f3(1249,1248,1247,1);
-	f3(1248,1249,1250,1);
-	f3(1253,1252,1251,1);
-	f3(1252,1253,1254,1);
-	f3(1256,1249,1255,1);
-	f3(1249,1256,1257,1);
-	f3(1249,1257,1250,1);
-	f3(1257,1256,1258,1);
-	f3(1258,1256,1251,1);
-	f3(1258,1251,1259,1);
-	f3(1259,1251,1252,1);
-	f3(1250,1261,1260,1);
-	f3(1261,1250,1257,1);
-	f3(1260,1261,1262,1);
-	f3(1265,1264,1263,1);
-	f3(1264,1265,1266,1);
-	f3(1269,1268,1267,1);
-	f3(1268,1269,1270,1);
-	f3(1270,1269,1271,1);
-	f3(1274,1273,1272,1);
-	f3(1273,1274,1275,1);
-	f3(1273,1275,1276,1);
-	f3(1276,1275,1277,1);
-	f3(1273,1278,1272,1);
-	f3(1278,1273,1279,1);
-	f3(1282,1281,1280,1);
-	f3(1281,1282,1283,1);
-	f3(1283,1282,1284,1);
-	f3(1284,1282,1285,1);
-	f3(1288,1287,1286,1);
-	f3(1291,1290,1289,1);
-	f3(1290,1291,1243,1);
-	f3(1243,1291,1292,1);
-	f3(1243,1292,1293,1);
-	f3(1243,1293,1245,1);
-	f3(1245,1293,1294,1);
-	f3(1245,1294,1287,1);
-	f3(1245,1287,1288,1);
-	f3(1245,1288,1295,1);
-	f3(1296,1277,1275,1);
-	f3(1277,1296,1297,1);
-	f3(1300,1299,1298,1);
-	f3(1299,1300,1301,1);
-	f3(1304,1303,1302,1);
-	f3(1303,1304,1305,1);
-	f3(1308,1307,1306,1);
-	f3(1307,1308,1309,1);
-	f3(1312,1311,1310,1);
-	f3(1311,1312,1313,1);
-	f3(1316,1315,1314,1);
-	f3(1315,1316,1317,1);
-	f3(1320,1319,1318,1);
-	f3(1319,1320,1321,1);
-	f3(1324,1323,1322,1);
-	f3(1323,1324,1325,1);
-	f3(1328,1327,1326,1);
-	f3(1327,1328,1329,1);
-	f3(1332,1331,1330,1);
-	f3(1331,1332,1333,1);
-	f3(1336,1335,1334,1);
-	f3(1335,1336,1337,1);
-	f3(1337,1336,1338,1);
-	f3(1335,1340,1339,1);
-	f3(1340,1335,1341,1);
-	f3(1341,1335,1337,1);
-	f3(1343,1263,1342,1);
-	f3(1263,1343,1265,1);
-	f3(1346,1345,1344,1);
-	f3(1345,1346,1347,1);
-	f3(1348,1347,1346,1);
-	f3(1347,1348,1349,1);
-	f3(1267,1351,1350,1);
-	f3(1351,1267,1268,1);
-	f3(1354,1353,1352,1);
-	f3(1353,1354,1355,1);
-	f3(1355,1354,1356,1);
-	f3(1356,1354,1357,1);
-	f3(1356,1357,1358,1);
-	f3(1344,1360,1359,1);
-	f3(1360,1344,1345,1);
-	f3(1363,1362,1361,1);
-	f3(1362,1363,1364,1);
-	f3(1364,1363,1365,1);
-	f3(1368,1367,1366,1);
-	f3(1367,1368,1369,1);
-	f3(1369,1368,1370,1);
-	f3(1373,1372,1371,1);
-	f3(1372,1373,1374,1);
-	f3(1377,1376,1375,1);
-	f3(1380,1379,1378,1);
-	f3(1379,1380,1381,1);
-	f3(1379,1381,1382,1);
-	f3(1382,1381,1376,1);
-	f3(1382,1376,1377,1);
-	f3(1382,1377,1383,1);
-	f3(1386,1385,1384,1);
-	f3(1389,1388,1387,1);
-	f3(1388,1389,1390,1);
-	f3(1393,1392,1391,1);
-	f3(1392,1393,1394,1);
-	f3(1397,1396,1395,1);
-	f3(1396,1397,1398,1);
-	f3(1401,1400,1399,1);
-	f3(1400,1401,1402,1);
-	f3(1404,1403,1356,1);
-	f3(1403,1404,1405,1);
-	f3(1405,1404,1406,1);
-	f3(1408,1346,1407,1);
-	f3(1346,1408,1348,1);
-	f3(1411,1410,1409,1);
-	f3(1410,1411,1412,1);
-	f3(1412,1411,1413,1);
-	f3(1412,1413,1414,1);
-	f3(1356,1415,1355,1);
-	f3(1415,1356,1403,1);
-	f3(1418,1417,1416,1);
-	f3(1417,1418,1419,1);
-	f3(1419,1418,1420,1);
-	f3(1423,1422,1421,1);
-	f3(1422,1423,1424,1);
-	f3(1424,1423,1425,1);
-	f3(1425,1423,1426,1);
-	f3(1426,1423,1427,1);
-	f3(1424,1429,1428,1);
-	f3(1429,1424,1425,1);
-	f3(1428,1429,1430,1);
-	f3(1428,1430,1431,1);
-	f3(1434,1433,1432,1);
-	f3(1433,1434,1435,1);
-	f3(1438,1437,1436,1);
-	f3(1437,1438,1439,1);
-	f3(1442,1441,1440,1);
-	f3(1441,1442,1443,1);
-	f3(1446,1445,1444,1);
-	f3(1449,1448,1447,1);
-	f3(1448,1449,1450,1);
-	f3(1450,1449,1445,1);
-	f3(1450,1445,1446,1);
-	f3(1452,1399,1451,1);
-	f3(1399,1452,1401,1);
-	f3(1455,1454,1453,1);
-	f3(1454,1455,1456,1);
-	f3(1459,1458,1457,1);
-	f3(1458,1459,1460,1);
-	f3(1460,1459,1461,1);
-	f3(1464,1463,1462,1);
-	f3(1463,1464,1465,1);
-	f3(1465,1464,1466,1);
-	f3(1468,1453,1467,1);
-	f3(1453,1468,1455,1);
-	f3(1455,1468,1469,1);
-	f3(1471,1467,1470,1);
-	f3(1467,1471,1468,1);
-	f3(1468,1471,1469,1);
-	f3(1474,1473,1472,1);
-	f3(1473,1474,1475,1);
-	f3(1475,1474,1476,1);
-	f3(1475,1476,1477,1);
-	f3(1480,1479,1478,1);
-	f3(1479,1480,1481,1);
-	f3(1481,1480,1482,1);
-	f3(1482,1480,1483,1);
-	f3(1486,1485,1484,1);
-	f3(1485,1486,1487,1);
-	f3(1487,1486,1488,1);
-	f3(1491,1490,1489,1);
-	f3(1490,1491,1492,1);
-	f3(1495,1494,1493,1);
-	f3(1494,1497,1496,1);
-	f3(1497,1494,1498,1);
-	f3(1498,1494,1495,1);
-	f3(1498,1495,1499,1);
-	f3(1498,1499,1500,1);
-	f3(1503,1502,1501,1);
-	f3(1502,1505,1504,1);
-	f3(1505,1502,1506,1);
-	f3(1506,1502,1503,1);
-	f3(1506,1503,1507,1);
-	f3(1506,1507,1508,1);
-	f3(1508,1507,1509,1);
-	f3(1512,1511,1510,1);
-	f3(1515,1514,1513,1);
-	f3(1514,1515,1516,1);
-	f3(1514,1516,1517,1);
-	f3(1517,1516,1518,1);
-	f3(1521,1520,1519,1);
-	f3(1520,1521,1522,1);
-	f3(1525,1524,1523,1);
-	f3(1524,1525,1526,1);
-	f3(1529,1528,1527,1);
-	f3(1528,1529,1530,1);
-	f3(1530,1529,1531,1);
-	f3(1530,1531,1532,1);
-	f3(1535,1534,1533,1);
-	f3(1534,1535,1536,1);
-	f3(1536,1535,1537,1);
-	f3(1540,1539,1538,1);
-	f3(1539,1540,1541,1);
-	f3(1492,1542,1490,1);
-	f3(1542,1492,1543,1);
-	f3(1546,1545,1544,1);
-	f3(1545,1546,1547,1);
-	f3(1550,1549,1548,1);
-	f3(1549,1550,1551,1);
-	f3(1554,1553,1552,1);
-	f3(1553,1554,1555,1);
-	f3(1558,1557,1556,1);
-	f3(1561,1560,1559,1);
-	f3(1560,1561,1562,1);
-	f3(1562,1561,1563,1);
-	f3(1566,1565,1564,1);
-	f3(1565,1566,1567,1);
-	f3(1570,1569,1568,1);
-	f3(1569,1570,1571,1);
-	f3(1571,1570,1572,1);
-	f3(1575,1574,1573,1);
-	f3(1578,1577,1576,1);
-	f3(1577,1578,1579,1);
-	f3(1579,1578,1580,1);
-	f3(1580,1582,1581,1);
-	f3(1582,1580,1583,1);
-	f3(1583,1580,1578,1);
-	f3(1569,1585,1584,1);
-	f3(1585,1569,1571,1);
-	f3(1584,1585,1574,1);
-	f3(1584,1574,1581,1);
-	f3(1581,1574,1575,1);
-	f3(1584,1581,1582,1);
-	f3(1588,1587,1586,1);
-	f3(1587,1588,1589,1);
-	f3(1592,1591,1590,1);
-	f3(1591,1592,1593,1);
-	f3(1593,1592,1594,1);
-	f3(1594,1592,1595,1);
-	f3(1595,1592,1596,1);
-	f3(1596,1592,1597,1);
-	f3(1596,1597,1598,1);
-	f3(1598,1597,1599,1);
-	f3(1598,1599,1600,1);
-	f3(1600,1602,1601,1);
-	f3(1602,1600,1603,1);
-	f3(1603,1600,1599,1);
-	f3(1604,1595,1596,1);
-	f3(1591,1606,1605,1);
-	f3(1606,1591,1593,1);
-	f3(1605,1606,1607,1);
-	f3(1610,1609,1608,1);
-	f3(1609,1610,1611,1);
-	f3(1614,1613,1612,1);
-	f3(1613,1614,1615,1);
-	f3(1618,1617,1616,1);
-	f3(1617,1618,1619,1);
-	f3(1622,1621,1620,1);
-	f3(1621,1622,1623,1);
-	f3(1626,1625,1624,1);
-	f3(1625,1626,1627,1);
-	f3(1630,1629,1628,1);
-	f3(1629,1630,1631,1);
-	f3(1634,1633,1632,1);
-	f3(1633,1634,1635,1);
-	f3(1638,1637,1636,1);
-	f3(1637,1638,1639,1);
-	f3(1642,1641,1640,1);
-	f3(1641,1642,1643,1);
-	f3(1646,1645,1644,1);
-	f3(1645,1646,1647,1);
-	f3(1650,1649,1648,1);
-	f3(1649,1650,1651,1);
-	f3(1654,1653,1652,1);
-	f3(1653,1654,1655,1);
-	f3(1658,1657,1656,1);
-	f3(1657,1658,1659,1);
-	f3(1662,1661,1660,1);
-	f3(1661,1662,1663,1);
-	f3(1666,1665,1664,1);
-	f3(1665,1666,1667,1);
-	f3(1670,1669,1668,1);
-	f3(1669,1670,1671,1);
-	f3(1674,1673,1672,1);
-	f3(1673,1674,1675,1);
-	f3(1675,1674,1676,1);
-	f3(1676,1674,1677,1);
-	f3(1678,1673,1675,1);
-	f3(1681,1680,1679,1);
-	f3(1680,1681,1682,1);
-	f3(1679,1680,1683,1);
-	f3(1680,1682,1684,1);
-	f3(1684,1682,1685,1);
-	f3(1685,1682,1686,1);
-	f3(1687,1683,1680,1);
-	f3(1690,1689,1688,1);
-	f3(1689,1690,1691,1);
-	f3(1694,1693,1692,1);
-	f3(1693,1694,1695,1);
-	f3(1695,1694,1696,1);
-	f3(1695,1696,1697,1);
-	f3(1700,1699,1698,1);
-	f3(1699,1700,1701,1);
-	f3(1704,1703,1702,1);
-	f3(1703,1704,1705,1);
-	f3(1708,1707,1706,1);
-	f3(1707,1708,1709,1);
-	f3(1712,1711,1710,1);
-	f3(1711,1712,1713,1);
-	f3(1716,1715,1714,1);
-	f3(1715,1716,1717,1);
-	f3(1720,1719,1718,1);
-	f3(1719,1720,1721,1);
-	f3(1724,1723,1722,1);
-	f3(1723,1724,1725,1);
-	f3(1725,1724,1726,1);
-	f3(1729,1728,1727,1);
-	f3(1728,1729,1730,1);
-	f3(1728,1730,1731,1);
-	f3(1731,1730,1732,1);
-	f3(1731,1732,1733,1);
-
-    this.computeCentroids();
-    this.computeNormals();
-    
-    function material_color( mi ) {
-        var m = materials[mi];
-        if( m.col_diffuse )
-            return (m.col_diffuse[0]*255 << 16) + (m.col_diffuse[1]*255 << 8) + m.col_diffuse[2]*255;
-        else if ( m.a_dbg_color )
-            return  m.a_dbg_color;
-        else 
-            return 0xffeeeeee;
-    }
-    
-    function v( x, y, z ) {
-        scope.vertices.push( new THREE.Vertex( new THREE.Vector3( x, y, z ) ) );
-    }
-
-    function f3( a, b, c, mi ) {
-        var material = scope.materials[ mi ];
-        scope.faces.push( new THREE.Face3( a, b, c, null, material ) );
-    }
-
-    function f4( a, b, c, d, mi ) {
-        var material = scope.materials[ mi ];
-        scope.faces.push( new THREE.Face4( a, b, c, d, null, material ) );
-    }
-
-    function f3n( a, b, c, mi, n1, n2, n3 ) {
-        var material = scope.materials[ mi ];
-        var n1x = normals[n1][0];
-        var n1y = normals[n1][1];
-        var n1z = normals[n1][2];
-        var n2x = normals[n2][0];
-        var n2y = normals[n2][1];
-        var n2z = normals[n2][2];
-        var n3x = normals[n3][0];
-        var n3y = normals[n3][1];
-        var n3z = normals[n3][2];
-        scope.faces.push( new THREE.Face3( a, b, c, 
-                          [new THREE.Vector3( n1x, n1y, n1z ), new THREE.Vector3( n2x, n2y, n2z ), new THREE.Vector3( n3x, n3y, n3z )], 
-                          material ) );
-    }
-
-    function f4n( a, b, c, d, mi, n1, n2, n3, n4 ) {
-        var material = scope.materials[ mi ];
-        var n1x = normals[n1][0];
-        var n1y = normals[n1][1];
-        var n1z = normals[n1][2];
-        var n2x = normals[n2][0];
-        var n2y = normals[n2][1];
-        var n2z = normals[n2][2];
-        var n3x = normals[n3][0];
-        var n3y = normals[n3][1];
-        var n3z = normals[n3][2];
-        var n4x = normals[n4][0];
-        var n4y = normals[n4][1];
-        var n4z = normals[n4][2];
-        scope.faces.push( new THREE.Face4( a, b, c, d,
-                          [new THREE.Vector3( n1x, n1y, n1z ), new THREE.Vector3( n2x, n2y, n2z ), new THREE.Vector3( n3x, n3y, n3z ), new THREE.Vector3( n4x, n4y, n4z )], 
-                          material ) );
-    }
-
-    function uv( u1, v1, u2, v2, u3, v3, u4, v4 ) {
-        var uv = [];
-        uv.push( new THREE.UV( u1, v1 ) );
-        uv.push( new THREE.UV( u2, v2 ) );
-        uv.push( new THREE.UV( u3, v3 ) );
-        if ( u4 && v4 ) uv.push( new THREE.UV( u4, v4 ) );
-        scope.uvs.push( uv );
-    }
-
-    function init_materials() {
-        scope.materials = [];
-        for(var i=0; i<materials.length; ++i) {
-            scope.materials[i] = [ create_material( materials[i], urlbase ) ];
-        }
-    }
-    
-    function is_pow2( n ) {
-        var l = Math.log(n) / Math.LN2;
-        return Math.floor(l) == l;
-    }
-    
-    function nearest_pow2(n) {
-        var l = Math.log(n) / Math.LN2;
-        return Math.pow( 2, Math.round(l) );
-    }
-    
-    function create_material( m ) {
-        var material;
-        
-        if( m.map_diffuse && urlbase ) {
-            var texture = document.createElement( 'canvas' );
-            
-            material = new THREE.MeshBitmapMaterial( texture );
-            var image = new Image();
-            
-            image.onload = function () {
-                
-                if ( !is_pow2(this.width) || !is_pow2(this.height) ) {
-                
-                    var w = nearest_pow2( this.width );
-                    var h = nearest_pow2( this.height );
-                    material.bitmap.width = w;
-                    material.bitmap.height = h;
-                    material.bitmap.getContext("2d").drawImage( this, 0, 0, w, h );
-                }
-                else {
-                    material.bitmap = this;
-                }
-                material.loaded = 1;
-                
-            };
-            image.src = urlbase + "/" + m.map_diffuse;
-        }
-        else if( m.col_diffuse ) {
-            var color = (m.col_diffuse[0]*255 << 16) + (m.col_diffuse[1]*255 << 8) + m.col_diffuse[2]*255;
-            material = new THREE.MeshColorFillMaterial( color, m.transparency );
-        }
-        else if( m.a_dbg_color ) {
-            material = new THREE.MeshColorFillMaterial( m.a_dbg_color );
-        }
-        else {
-            material = new THREE.MeshColorFillMaterial( 0xffeeeeee );
-        }
-
-        return material;
-    }
-}
-
-Q5.prototype = new THREE.Geometry();
-Q5.prototype.constructor = Q5;

+ 0 - 5790
examples/obj/Q5/Q5.obj

@@ -1,5790 +0,0 @@
-# WaveFront *.obj file (generated by CINEMA 4D)
-
-g Q5
-usemtl brown_dark
-v -9.709829 240.020203 9.661537
-v -9.709829 219.020203 -10.338461
-v -30.709829 201.020203 -10.338461
-v -9.709826 202.020203 56.661537
-v -30.709829 219.020203 -10.338461
-v -9.709827 240.020203 42.661537
-v -11.709826 202.020203 56.661537
-v -9.709827 214.020203 33.661537
-v -9.709827 214.020203 42.661537
-v -69.709824 186.020203 73.661537
-v -9.709826 214.020203 56.661537
-v -9.709827 205.020203 42.661537
-v 4.290173 132.020203 73.661537
-v -9.709829 190.020203 -10.338461
-v -9.709826 205.020203 53.661537
-v -76.709824 129.020203 -8.338461
-v -54.709831 150.020203 -9.338461
-v -10.709829 134.020203 4.661537
-v -1.709827 180.020203 4.661537
-v -1.709827 134.020203 -9.338461
-v -1.709827 168.020203 7.661537
-v -1.709827 180.020203 -4.338461
-v -1.709827 187.020203 4.661537
-v -1.709827 187.020203 17.661537
-v -1.709827 172.020203 -9.338461
-v -1.709827 168.020203 17.661537
-v -1.709827 172.020203 4.661537
-v -1.709827 181.020203 33.661537
-v -1.709827 162.020203 17.661537
-v -1.709827 200.020203 33.661537
-v -1.709827 200.020203 -4.338461
-v -1.709827 181.020203 7.661537
-v -1.709827 162.020203 4.661537
-v -1.709827 181.020203 17.661537
-v -1.709827 181.020203 39.661537
-v -1.709827 145.020203 4.661537
-v -85.709824 176.020203 58.661541
-v -9.709827 190.020203 42.661537
-v -1.709827 145.020203 26.661537
-v -1.709827 139.020203 26.661537
-v -11.709826 190.020203 56.661537
-v -83.709824 44.020195 44.661541
-v -83.709824 44.020195 56.661541
-v -83.709824 14.020195 24.661541
-v -83.709824 34.020195 44.661541
-v -85.709824 153.020203 73.661545
-v -76.709824 120.020195 41.661541
-v -54.709831 129.020203 -8.338461
-v -64.709831 110.020195 -8.338461
-v -69.709824 174.020203 66.661537
-v -56.709831 67.020195 7.661539
-v -70.709824 129.020203 -4.338461
-v -9.709827 200.020203 33.661537
-v -60.709831 52.020195 7.661541
-v -9.709829 200.020203 -4.338461
-v -70.709824 160.020203 42.661541
-v -9.709827 190.020203 33.661537
-v -56.709831 67.020195 5.661539
-v -9.709829 190.020203 -4.338461
-v -83.709824 82.020195 39.661541
-v -90.709824 176.020203 42.661541
-v -61.709824 -9.979805 56.661541
-v -85.709824 131.020203 35.661541
-v -85.709824 139.020203 35.661541
-v -90.709824 205.020203 53.661541
-v -76.709824 67.020195 7.661541
-v -56.709831 82.020195 -8.338461
-v -55.709831 181.020203 7.661539
-v -76.709824 91.020195 31.661541
-v -61.709827 52.020195 22.661541
-v -83.709824 -9.979805 -4.338457
-v -85.709824 153.020203 66.661545
-v -64.709831 160.020203 -9.338461
-v -90.709824 176.020203 58.661541
-v -1.709827 139.020203 39.661537
-v -76.709824 127.020195 41.661541
-v -83.709824 34.020195 56.661541
-v -40.709827 139.020203 39.661537
-v -85.709824 197.020203 61.661541
-v -85.709824 205.020203 53.661541
-v -85.709824 120.020195 4.661541
-v -85.709824 120.020195 41.661541
-v 4.290173 120.020195 35.661537
-v -9.709827 205.020203 42.661537
-v -71.709824 214.020203 9.661541
-v -40.709827 139.020203 39.661537
-v -76.709824 91.020195 39.661541
-v -77.709824 168.020203 7.661541
-v -83.709824 -13.979805 56.661541
-v -90.709824 200.020203 58.661541
-v -71.709824 222.020203 9.661541
-v -85.709824 200.020203 58.661541
-v -50.709827 230.020203 -0.338461
-v -1.709827 139.020203 39.661537
-v -70.709824 134.020203 -4.338461
-v -71.709824 222.020203 25.661541
-v -40.709827 139.020203 42.661537
-v -1.709827 134.020203 4.661537
-v -76.709824 120.020195 50.661541
-v -60.709831 -3.979805 -4.338461
-v -69.709824 153.020203 73.661537
-v -71.709824 214.020203 25.661541
-v -4.709827 50.020195 50.661537
-v -24.709827 102.020195 7.661539
-v 2.290173 32.020195 19.661537
-v -19.709826 50.020195 56.661537
-v -83.709824 50.020195 39.661541
-v -20.709827 32.020195 19.661537
-v -20.709829 33.020195 7.661539
-v -20.709829 41.020195 7.661539
-v -20.709829 -9.979805 -4.338461
-v -19.709826 -13.979805 56.661537
-v 2.290173 33.020195 7.661537
-v -19.709826 42.020195 56.661537
-v 2.290173 50.020195 56.661537
-v -20.709829 -13.979805 -4.338461
-v 2.290173 12.020195 44.661537
-v -19.709827 61.020195 22.661537
-v -4.709827 50.020195 39.661537
-v 4.290173 145.020203 26.661537
-v 4.290173 145.020203 4.661537
-v 4.290173 127.020195 41.661537
-v 4.290173 139.020203 26.661537
-v 4.290173 176.020203 42.661537
-v 4.290173 174.020203 66.661537
-v 4.290173 139.020203 42.661537
-v 9.290173 205.020203 42.661537
-v -4.709827 102.020195 7.661537
-v -24.709827 67.020195 7.661539
-v -4.709827 129.020203 4.661537
-v -10.709829 129.020203 4.661537
-v -10.709829 134.020203 4.661537
-v 9.290173 176.020203 42.661537
-v 9.290173 176.020203 58.661537
-v 9.290173 205.020203 53.661537
-v -4.709827 102.020195 -8.338461
-v -24.709829 102.020195 -8.338461
-v -4.709827 129.020203 -8.338461
-v -10.709829 134.020203 -4.338461
-v 4.290173 176.020203 58.661537
-v -4.709827 91.020195 39.661537
-v 2.290173 50.020195 39.661537
-v 2.290173 91.020195 39.661537
-v -4.709827 91.020195 31.661537
-v -4.709827 67.020195 7.661537
-v -24.709827 67.020195 5.661539
-v -24.709829 82.020195 -8.338461
-v -24.709827 82.020195 7.661539
-v -19.709827 52.020195 22.661537
-v 2.290173 67.020195 7.661537
-v -10.709829 129.020203 -4.338461
-v 2.290173 91.020195 31.661537
-v -20.709829 52.020195 7.661539
-v -20.709829 61.020195 7.661539
-v 2.290173 -9.979805 -4.338461
-v 4.290173 186.020203 73.661537
-v 2.290173 -13.979805 56.661537
-v -20.709829 -3.979805 -4.338461
-v 2.290173 -13.979805 -4.338461
-v 2.290173 12.020195 56.661537
-v 2.290173 19.020195 19.661537
-v 2.290173 -3.979805 -4.338461
-v -20.709827 19.020195 19.661537
-v -4.709827 127.020195 41.661537
-v -4.709827 120.020195 50.661537
-v -4.709827 120.020195 73.661537
-v -4.709827 127.020195 73.661537
-v 4.290173 153.020203 73.661537
-v -11.709826 147.020203 73.661537
-v 4.290173 127.020195 73.661537
-v -4.709827 120.020195 41.661537
-v -4.709827 120.020195 4.661537
-v 4.290173 120.020195 41.661537
-v -71.709824 222.020203 33.661541
-v -11.709826 153.020203 73.661537
-v 4.290173 153.020203 66.661537
-v -11.709826 174.020203 73.661537
-v -11.709826 174.020203 66.661537
-v -11.709826 153.020203 66.661537
-v -11.709827 147.020203 42.661537
-v 4.290173 120.020195 4.661537
-v 4.290173 174.020203 73.661537
-v -11.709826 186.020203 73.661537
-v 9.290173 200.020203 58.661537
-v 4.290173 200.020203 58.661537
-v -65.709831 181.020203 7.661541
-v -42.709827 181.020203 7.661539
-v -64.709831 134.020203 -9.338461
-v -85.709824 186.020203 73.661545
-v -85.709824 205.020203 42.661541
-v -76.709824 120.020195 35.661541
-v -71.709824 214.020203 17.661541
-v -83.709824 91.020195 39.661541
-v -64.709831 129.020203 -8.338461
-v -54.709831 120.020195 -8.338461
-v -85.709824 132.020203 61.661541
-v -83.709824 -13.979805 -4.338457
-v -69.709824 147.020203 42.661541
-v -83.709824 12.020195 56.661541
-v -85.709824 174.020203 73.661545
-v -83.709824 19.020195 19.661541
-v -56.709831 102.020195 -8.338461
-v -76.709824 120.020195 73.661537
-v -76.709824 127.020195 73.661537
-v -71.709824 222.020203 17.661541
-v -83.709824 23.020195 56.661541
-v -83.709824 4.020195 56.661541
-v -83.709824 23.020195 44.661541
-v -69.709824 147.020203 73.661537
-v -83.709824 4.020195 24.661541
-v -83.709824 68.020195 24.661541
-v -85.709824 127.020195 73.661545
-v -76.709824 120.020195 4.661541
-v -83.709824 -9.979805 56.661541
-v -76.709824 129.020203 4.661541
-v -83.709824 91.020195 31.661541
-v -60.709831 61.020195 7.661541
-v -76.709824 102.020195 -8.338461
-v -56.709831 82.020195 7.661539
-v -83.709824 67.020195 7.661541
-v -69.709824 174.020203 73.661537
-v -30.709829 230.020203 -0.338461
-v -61.709824 -9.979805 56.661541
-v -83.709824 50.020195 44.661541
-v -9.709827 214.020203 25.661537
-v -9.709827 222.020203 33.661537
-v -9.709829 222.020203 9.661537
-v -9.709827 222.020203 17.661537
-v -9.709827 222.020203 25.661537
-v -9.709829 214.020203 9.661537
-v -9.709827 214.020203 17.661537
-v -54.709831 134.020203 -9.338461
-v -26.709829 120.020195 -8.338461
-v -26.709829 150.020203 -9.338461
-v -83.709824 -3.979805 -4.338457
-v -16.709829 134.020203 -9.338461
-v -60.709827 19.020195 19.661541
-v 4.290173 197.020203 61.661537
-v 4.290173 205.020203 42.661537
-v 4.290173 132.020203 61.661537
-v 4.290173 205.020203 53.661537
-v 4.290173 131.020203 35.661537
-v 4.290173 139.020203 35.661537
-v -4.709827 120.020195 35.661537
-v -4.709827 120.020195 35.661537
-v -15.709829 181.020203 7.661537
-v -15.709829 168.020203 7.661537
-v -38.709827 181.020203 7.661539
-v -3.709827 181.020203 7.661537
-v -38.709827 168.020203 7.661539
-v -25.709827 168.020203 7.661539
-v -25.709827 181.020203 7.661539
-v -3.709827 168.020203 7.661537
-v -65.709831 168.020203 7.661541
-v -16.709829 134.020203 -9.338461
-v -16.709829 129.020203 -8.338461
-v -77.709824 181.020203 7.661541
-v -42.709827 168.020203 7.661539
-v -16.709829 110.020195 -8.338461
-v -55.709831 168.020203 7.661539
-v -16.709829 160.020203 -9.338461
-v -11.709827 150.020203 42.661537
-v -69.709824 150.020203 42.661541
-v -26.709829 134.020203 -9.338461
-v -26.709829 129.020203 -8.338461
-v -10.709827 160.020203 42.661537
-v -69.709824 153.020203 66.661537
-v 2.290173 82.020195 39.661537
-v -70.709824 129.020203 4.661541
-v -70.709824 134.020203 4.661541
-v -19.709826 -9.979805 56.661537
-v 2.290173 34.020195 56.661537
-v 2.290173 44.020195 56.661537
-v 2.290173 44.020195 44.661537
-v -19.709826 -9.979805 56.661537
-v 2.290173 34.020195 44.661537
-v 2.290173 23.020195 56.661537
-v 2.290173 14.020195 24.661537
-v 2.290173 68.020195 24.661537
-v 2.290173 4.020195 56.661537
-v 2.290173 23.020195 44.661537
-v 2.290173 4.020195 24.661537
-v 2.290173 -9.979805 56.661537
-v 2.290173 50.020195 44.661537
-v -71.709824 240.020203 9.661541
-v -71.709824 219.020203 -10.338461
-v -50.709831 201.020203 -10.338461
-v -71.709824 202.020203 56.661541
-v -50.709831 219.020203 -10.338461
-v -71.709824 240.020203 42.661541
-v -69.709824 202.020203 56.661541
-v -71.709824 214.020203 33.661541
-v -71.709824 214.020203 42.661541
-v -71.709824 214.020203 56.661541
-v -71.709824 205.020203 42.661541
-v -85.709824 132.020203 73.661545
-v -71.709824 190.020203 -10.338461
-v -71.709824 205.020203 53.661541
-v -70.709824 134.020203 4.661541
-v -79.709824 180.020203 4.661541
-v -79.709824 134.020203 -9.338461
-v -79.709824 168.020203 7.661541
-v -79.709824 180.020203 -4.338461
-v -79.709824 187.020203 4.661541
-v -79.709824 187.020203 17.661541
-v -79.709824 172.020203 -9.338461
-v -79.709824 168.020203 17.661541
-v -79.709824 172.020203 4.661541
-v -79.709824 181.020203 33.661541
-v -79.709824 162.020203 17.661541
-v -79.709824 200.020203 33.661541
-v -79.709824 200.020203 -4.338461
-v -79.709824 181.020203 7.661541
-v -79.709824 162.020203 4.661541
-v -79.709824 181.020203 17.661541
-v -79.709824 181.020203 39.661541
-v -79.709824 145.020203 4.661541
-v -71.709824 190.020203 42.661541
-v -79.709824 145.020203 26.661541
-v -79.709824 139.020203 26.661541
-v -69.709824 190.020203 56.661541
-v -71.709824 200.020203 33.661541
-v -71.709824 200.020203 -4.338461
-v -71.709824 190.020203 33.661541
-v -71.709824 190.020203 -4.338461
-v -79.709824 139.020203 39.661541
-v -85.709824 120.020195 35.661541
-v -71.709824 205.020203 42.661541
-v -79.709824 139.020203 39.661541
-v -79.709824 134.020203 4.661541
-v -76.709824 50.020195 50.661541
-v -56.709831 102.020195 7.661539
-v -83.709824 32.020195 19.661541
-v -61.709824 50.020195 56.661541
-v -60.709827 32.020195 19.661541
-v -60.709831 33.020195 7.661541
-v -60.709831 41.020195 7.661541
-v -60.709831 -9.979805 -4.338461
-v -61.709824 -13.979805 56.661541
-v -83.709824 33.020195 7.661541
-v -61.709824 42.020195 56.661541
-v -83.709824 50.020195 56.661541
-v -60.709831 -13.979805 -4.338461
-v -83.709824 12.020195 44.661541
-v -61.709827 61.020195 22.661541
-v -76.709824 50.020195 39.661541
-v -85.709824 145.020203 26.661541
-v -85.709824 145.020203 4.661541
-v -85.709824 127.020195 41.661541
-v -85.709824 139.020203 26.661541
-v -85.709824 176.020203 42.661541
-v -85.709824 174.020203 66.661545
-v -85.709824 139.020203 42.661541
-v -90.709824 205.020203 42.661541
-v -76.709824 102.020195 7.661541
-
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0.175944 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 1 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0.792202 0.128197 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0.934109 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0.934109 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0.059059 0.67305 0
-vt 0.940894 0 0
-vt 0.059106 0.993856 0
-vt 1 1 0
-vt 0 0.140245 0
-vt 0.22231 0.676016 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0.295879 0
-vt 0.234396 0.037931 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 0.5 0 0
-vt 1 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0.066424 1 0
-vt 1 0 0
-vt 0.629667 1 0
-vt 0 0.370333 0
-vt 1 1 0
-vt 0.590312 1 0
-vt 0 0 0
-vt 0.337951 1 0
-vt 1 1 0
-vt 0.000217 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0.233411 0
-vt 0.431554 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0.222349 0.994922 0
-vt 0.777651 0 0
-vt 0 0 0
-vt 0 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0.849865 0
-vt 0.849865 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0.521365 0.794984 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0.00373 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0.824293 0
-vt 1 0 0
-vt 1 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0.934109 0.794984 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0.496329 0
-vt 0.496329 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0.000001 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0.999685 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0.431554 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0.68824 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0.000061 0
-vt 0 0.99347 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0.556543 0.68209 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 1 0
-vt 0.337951 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0.000217 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0.233411 0
-vt 0.431554 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 0.00373 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0.443426 0 0
-vt 0.556574 0.997104 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0.840637 0.333333 0
-vt 1 0.540862 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0.824293 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0.5 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0.849865 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0.37782 0
-vt 0 1 0
-vt 1 0.37782 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0.556574 0.997104 0
-vt 0.443426 0 0
-vt 1 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0.389458 0.996013 0
-vt 0.610542 0 0
-vt 0.288123 0 0
-vt 0.001144 1 0
-vt 0 1 0
-vt 0.389406 0.679053 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0.522512 1 0
-vt 0.182127 0.440267 0
-vt 0 0 0
-vt 0 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0.000264 0.233411 0
-vt 0.066424 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 0.671977 0
-vt 1 0.704321 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 0.540862 0
-vt 0.840637 0.333333 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 0.5 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0.37782 0
-vt 0 0.37782 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0.370333 0
-vt 0.629667 1 0
-vt 1 1 0
-vt 0.590312 1 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0.849865 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0.061993 0.010032 0
-vt 0 0.078254 0
-vt 0 0.078254 0
-vt 0.061993 0.010032 0
-vt 0 1 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0.234396 0.037931 0
-vt 0 0.295879 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0.5 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0.066424 1 0
-vt 0.777651 0 0
-vt 0.222349 0.994922 0
-vt 0.940894 0 0
-vt 0.059106 0.993856 0
-vt 0.059059 0.67305 0
-vt 0 0 0
-vt 0.22231 0.676016 0
-vt 0.610542 0 0
-vt 0.389458 0.996013 0
-vt 0 0.140245 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0.288123 0 0
-vt 0.001144 1 0
-vt 0.389406 0.679053 0
-vt 0 1 0
-vt 0 0 0
-vt 0.182127 0.440267 0
-vt 0.522512 1 0
-vt 0.066424 0 0
-vt 0.000264 0.233411 0
-vt 1 0 0
-vt 0 0.671977 0
-vt 1 0.704321 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0.175944 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0.792202 0.128197 0
-vt 1 0 0
-vt 0 1 0
-vt 0.934109 0 0
-vt 1 0 0
-vt 0.934109 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0.849865 0 0
-vt 1 0.849865 0
-vt 0 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0.934109 0.794984 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 0.000001 0
-vt 0 1 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0.999685 0
-vt 1 0 0
-vt 1 0 0
-vt 0 0 0
-vt 0.431554 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0.68824 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0.000061 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0.99347 0
-vt 0 0 0
-vt 0 1 0
-vt 0.556543 0.68209 0
-vt 1 0 0
-vt 1 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 1 0
-vt 1 0 0
-
-f 107/246 224/554 342/834 331/806 346/845 
-f 207/513 210/519 235/581 71/161 214/530 
-f 262/640 266/648 38/86 124/293 126/298 180/446 
-f 50/114 267/652 198/493 263/642 56/128 318/770 
-f 266/649 262/641 180/446 179/444 178/441 38/88 
-f 155/377 162/396 282/683 280/678 283/685 
-f 142/344 268/655 143/345 141/341 119/279 
-f 103/239 115/269 284/688 142/343 119/279 
-f 283/684 280/677 160/390 277/670 272/663 273/665 115/269 106/245 271/662 
-f 334/815 342/834 43/99 77/175 206/511 199/496 207/512 214/531 62/141 
-f 87/195 193/479 60/137 107/247 346/845 
-f 353/863 351/857 318/771 56/129 263/643 198/493 
-f 107/246 60/138 211/524 210/522 
-f 29/68 28/66 35/78 39/90 
-f 238/588 156/380 182/451 125/296 
-f 176/434 168/415 13/34 240/593 
-f 318/772 351/857 61/140 354/868 
-f 76/173 47/107 203/505 204/507 
-f 36/81 33/74 29/69 39/90 
-f 242/600 243/603 126/300 240/595 
-f 238/589 125/297 176/435 240/593 
-f 40/94 123/291 120/283 39/91 
-f 135/324 127/303 239/592 241/597 
-f 11/30 4/12 15/38 
-f 180/447 169/418 175/432 179/442 
-f 181/450 123/290 243/602 83/188 
-f 204/506 212/527 349/852 76/172 
-f 181/448 98/228 121/284 
-f 226/561 227/564 1/1 6/18 
-f 38/88 57/130 53/120 
-f 83/186 173/427 171/423 245/606 
-f 242/601 122/287 173/426 83/187 
-f 306/743 73/167 188/467 301/730 
-f 225/556 229/568 226/560 8/24 
-f 177/437 182/451 156/380 183/454 
-f 303/735 325/792 59/135 22/52 
-f 240/596 13/33 170/419 
-f 171/422 173/426 122/287 164/404 
-f 6/17 1/4 285/691 290/704 
-f 237/586 201/499 333/813 335/816 
-f 120/282 121/284 36/80 39/90 
-f 217/538 336/820 340/830 220/545 
-f 286/695 297/721 323/785 
-f 55/125 59/134 14/35 
-f 215/532 213/528 81/181 330/804 
-f 294/715 293/712 328/796 298/723 
-f 219/542 332/810 202/504 67/154 
-f 51/116 219/542 67/154 58/133 
-f 344/841 224/555 107/247 210/522 
-f 53/122 225/558 8/23 84/191 
-f 7/21 183/453 156/379 238/589 
-f 355/872 66/152 69/158 191/476 
-f 62/141 214/531 89/201 339/828 
-f 238/589 185/461 4/12 7/21 
-f 12/32 239/591 127/301 38/88 
-f 301/729 95/219 270/660 330/805 
-f 306/743 301/728 330/804 308/748 
-f 250/616 258/631 187/465 248/613 
-f 257/629 186/463 254/623 88/198 
-f 101/233 46/104 212/526 209/518 
-f 235/584 100/232 338/823 71/162 
-f 328/798 190/472 80/180 298/722 
-f 95/220 301/728 20/47 139/334 
-f 286/695 323/787 85/192 91/208 
-f 186/462 68/156 260/635 254/622 
-f 68/155 187/464 258/630 260/634 
-f 259/633 233/577 265/647 256/627 
-f 85/193 323/786 322/783 102/236 
-f 74/170 61/139 351/859 37/85 
-f 131/314 18/44 98/228 130/311 
-f 202/503 332/809 355/871 218/540 
-f 205/509 91/207 85/192 192/478 
-f 30/70 53/120 57/130 28/65 
-f 311/755 305/738 310/753 309/750 
-f 97/224 126/300 94/217 86/194 
-f 53/120 30/70 31/71 55/125 
-f 180/445 126/298 97/223 
-f 270/659 95/219 52/119 269/658 
-f 59/134 55/125 31/71 22/52 
-f 38/88 53/121 12/32 
-f 58/133 67/153 147/357 146/354 
-f 178/440 177/438 41/95 38/88 
-f 43/100 42/98 45/103 77/174 
-f 255/625 264/645 234/580 261/639 
-f 23/54 31/71 30/70 24/55 
-f 23/54 19/45 22/52 31/71 
-f 315/763 305/740 24/56 34/77 
-f 339/827 89/200 197/491 343/838 
-f 289/703 93/213 222/551 5/15 
-f 197/490 89/199 214/530 71/161 
-f 302/732 313/757 257/628 88/198 
-f 90/205 74/169 37/84 92/211 
-f 65/149 90/204 92/210 80/178 
-f 37/83 351/858 353/865 196/486 
-f 98/227 36/80 121/285 
-f 29/67 24/55 30/70 28/65 
-f 21/50 32/73 34/77 26/61 
-f 286/695 289/701 287/697 297/720 
-f 338/825 62/142 339/826 343/838 
-f 342/836 224/553 42/98 43/100 
-f 145/351 129/309 104/241 128/307 
-f 111/257 158/385 162/398 155/378 
-f 151/367 139/335 132/316 131/313 
-f 138/333 130/310 172/425 136/325 
-f 315/762 313/757 302/732 307/744 
-f 144/348 145/350 128/306 245/607 
-f 109/251 113/263 105/244 108/249 
-f 165/408 103/238 119/280 141/342 
-f 231/572 228/566 229/567 225/557 
-f 159/388 157/383 112/260 116/271 
-f 105/243 113/262 150/365 279/674 
-f 345/843 70/160 54/124 217/536 
-f 114/267 110/254 109/250 108/248 
-f 133/318 124/293 38/87 127/302 
-f 240/595 170/420 122/286 242/600 
-f 249/615 32/73 21/50 253/621 
-f 181/450 121/284 120/281 123/289 
-f 305/739 304/737 23/53 24/55 
-f 179/443 175/431 168/415 176/434 
-f 319/775 320/778 329/801 316/767 
-f 216/535 69/157 66/151 220/545 
-f 199/497 344/840 210/521 207/514 
-f 279/674 278/673 161/393 105/243 
-f 128/305 104/241 137/330 136/327 
-f 177/437 183/452 7/20 41/97 
-f 122/286 170/420 167/414 164/403 
-f 155/378 159/387 116/272 111/257 
-f 124/294 133/317 134/321 140/339 
-f 333/812 340/830 336/819 335/817 
-f 84/191 9/26 11/30 15/39 
-f 230/570 227/564 228/565 231/571 
-f 255/624 261/638 25/57 20/48 
-f 1/3 227/563 2/7 
-f 4/11 185/461 241/599 15/38 
-f 115/270 103/238 331/808 342/835 
-f 209/517 169/416 180/445 198/494 
-f 316/766 329/800 94/216 35/79 
-f 283/685 157/382 159/386 155/377 
-f 354/866 90/203 65/148 
-f 93/213 289/702 286/694 285/692 
-f 336/818 337/821 341/833 335/816 
-f 125/296 182/451 177/436 178/439 
-f 77/174 45/103 208/515 206/510 
-f 151/368 131/312 130/310 138/333 
-f 328/797 290/705 174/430 292/710 
-f 152/370 144/347 141/341 143/346 
-f 347/848 348/850 81/182 350/856 
-f 191/475 69/157 87/197 99/230 
-f 230/570 55/127 2/5 227/562 
-f 162/397 158/385 163/401 161/394 
-f 226/559 6/16 84/190 8/22 
-f 37/82 196/488 79/177 92/210 
-f 80/179 92/209 288/700 298/722 
-f 81/183 213/529 191/473 327/794 
-f 94/215 40/93 39/89 35/79 
-f 179/442 176/433 125/295 178/439 
-f 137/329 104/240 148/358 147/356 
-f 147/356 148/358 129/309 146/353 
-f 346/844 331/807 99/229 87/196 
-f 184/458 127/301 135/323 
-f 332/809 51/116 66/150 355/870 
-f 147/355 67/153 202/502 137/328 
-f 153/373 149/361 118/278 154/374 
-f 166/411 171/421 164/402 167/413 
-f 245/606 172/424 181/449 83/186 
-f 134/320 133/317 127/301 184/457 
-f 241/598 239/590 84/189 15/38 
-f 105/242 161/393 163/401 108/248 
-f 96/222 205/508 192/477 102/237 
-f 238/588 240/594 140/338 185/460 
-f 126/299 124/292 140/337 240/593 
-f 185/460 184/456 135/322 241/597 
-f 140/336 134/319 184/455 185/459 
-f 132/315 139/335 20/47 98/226 
-f 181/448 172/425 130/310 98/225 
-f 341/832 62/142 237/587 335/816 
-f 53/120 55/126 230/569 225/556 
-f 216/535 220/544 211/523 
-f 2/6 5/13 222/550 1/2 
-f 3/10 5/14 2/5 14/35 
-f 14/37 2/5 55/125 
-f 123/288 40/92 94/214 126/298 
-f 170/419 168/415 175/431 169/417 
-f 166/410 167/412 204/506 203/505 
-f 245/605 128/304 136/326 172/424 
-f 141/340 144/347 245/604 165/407 
-f 98/225 20/46 25/57 27/64 
-f 16/41 194/482 49/110 218/539 
-f 218/541 355/869 191/474 213/529 
-f 329/800 320/777 350/855 353/863 
-f 247/611 246/609 249/614 253/621 
-f 251/618 252/620 246/608 247/610 
-f 250/616 248/612 252/619 251/617 
-f 151/367 52/118 95/218 139/334 
-f 306/742 308/747 27/63 25/58 
-f 259/633 49/111 195/484 233/576 
-f 259/633 256/626 138/332 136/325 
-f 237/586 100/232 235/583 201/501 
-f 117/275 281/679 277/671 160/391 
-f 276/669 274/667 273/666 272/664 
-f 145/349 144/347 152/369 150/363 
-f 281/679 276/669 272/664 277/671 
-f 112/259 271/661 111/256 116/271 
-f 274/667 284/687 115/268 273/666 
-f 162/395 161/392 278/672 282/682 
-f 152/370 143/345 268/654 279/674 
-f 282/681 117/274 160/389 280/676 
-f 142/344 284/686 117/273 282/680 
-f 279/675 268/653 142/343 282/680 
-f 150/364 152/369 279/674 
-f 157/381 283/684 271/662 112/258 
-f 163/400 271/661 114/266 108/248 
-f 275/668 163/399 158/384 111/255 
-f 100/231 237/585 223/552 338/824 
-f 287/697 289/701 5/13 3/9 
-f 44/102 201/500 235/582 210/520 
-f 316/765 309/751 310/752 319/773 
-f 200/498 189/469 79/177 352/860 
-f 296/718 46/104 72/163 196/486 
-f 349/852 212/527 196/487 63/144 
-f 354/866 61/139 74/168 90/202 
-f 331/806 103/238 165/406 99/230 
-f 310/754 314/760 317/769 319/773 
-f 353/864 64/146 63/144 196/487 
-f 72/165 352/862 79/176 196/486 
-f 347/847 350/854 320/776 319/774 
-f 190/471 354/867 65/147 80/178 
-f 288/698 294/715 298/722 
-f 101/234 209/516 198/494 267/651 
-f 64/145 350/853 81/182 327/795 
-f 343/837 197/489 71/162 338/823 
-f 325/791 297/721 14/36 59/134 
-f 330/803 81/181 348/850 
-f 285/691 91/207 174/429 290/704 
-f 324/789 318/770 322/783 
-f 47/106 82/185 327/794 191/473 
-f 82/184 349/851 63/143 327/793 
-f 91/206 285/690 286/693 
-f 174/428 96/221 102/236 292/709 
-f 189/469 200/498 221/548 10/29 
-f 309/749 28/66 57/131 324/789 
-f 296/717 196/485 212/526 
-f 349/851 82/184 47/105 76/171 
-f 118/277 345/843 217/537 154/376 
-f 16/40 52/118 151/366 138/331 
-f 317/768 348/850 347/846 319/773 
-f 73/166 306/741 25/57 261/637 
-f 218/540 49/111 259/632 136/325 
-f 325/790 323/785 297/720 
-f 149/360 70/159 345/842 118/276 
-f 87/195 69/157 216/534 193/480 
-f 11/31 9/25 293/712 294/714 
-f 4/11 11/30 294/713 288/699 
-f 297/719 287/696 3/8 14/35 
-f 292/708 102/235 322/784 328/796 
-f 189/468 10/28 291/707 79/176 
-f 41/96 7/19 291/706 321/781 
-f 93/212 285/689 1/1 222/549 
-f 288/698 92/209 79/176 291/707 
-f 354/866 190/470 295/716 318/770 
-f 54/124 70/159 149/359 153/372 
-f 17/43 73/167 261/636 234/579 
-f 33/75 27/62 308/746 314/759 
-f 29/68 33/74 314/758 310/753 
-f 265/646 233/575 195/483 48/109 
-f 213/528 215/532 16/40 218/539 
-f 170/419 169/416 209/516 212/525 
-f 206/510 208/515 344/839 199/495 
-f 310/752 307/745 26/60 29/67 
-f 307/744 302/731 21/49 26/59 
-f 48/108 195/483 49/110 194/481 
-f 154/375 217/536 220/543 150/363 
-f 99/229 165/405 166/409 203/505 
-f 330/803 299/724 269/657 215/533 
-f 291/706 10/27 221/548 321/781 
-f 201/499 44/101 211/523 333/811 
-f 19/45 23/53 304/737 300/727 
-f 324/789 322/783 311/755 309/750 
-f 309/749 316/764 35/78 28/65 
-f 329/799 353/864 97/224 86/194 
-f 312/756 311/755 322/783 323/785 
-f 353/863 198/492 97/223 
-f 60/136 193/479 216/534 211/523 
-f 352/861 72/164 267/651 50/113 
-f 312/756 323/785 325/790 303/733 
-f 322/782 318/770 295/716 
-f 293/711 9/25 6/16 290/704 
-f 221/547 200/498 352/860 50/113 
-f 321/780 221/546 50/112 318/770 
-f 19/45 300/726 303/734 22/51 
-f 17/42 232/574 188/466 73/166 
-f 311/755 312/756 304/736 305/738 
-f 303/733 300/725 304/736 312/756 
-f 232/573 17/42 234/578 264/644 
-f 220/543 340/829 333/811 211/523 
-f 51/115 58/132 146/352 129/308 
-f 57/130 41/95 321/779 324/788 
-f 46/104 101/233 267/650 72/163 
-f 337/822 54/123 153/371 110/253 
-f 341/831 337/821 110/252 114/265 
-f 215/532 269/656 52/117 16/40 
-f 341/831 114/264 106/245 334/814 
-f 317/768 330/802 348/849 
-f 113/261 109/250 154/374 150/362 
-f 313/757 315/761 34/76 32/72 
-
-g head_clean
-usemtl brown_light
-v -10.347265 183.272888 -5.568148
-v -10.347261 183.272888 53.867905
-v -10.347265 209.379135 -5.568148
-v -10.347263 204.608917 42.628395
-v -10.347263 228.040436 42.628395
-v -10.347263 228.040436 12.148367
-v -10.347261 204.608917 53.867905
-v -10.347265 209.379135 -5.568148
-v -29.070341 193.037903 -5.568146
-v -10.347265 183.272888 -5.568148
-v -64.258812 183.272888 -5.568144
-v -28.914089 209.379135 -5.568146
-v -46.498764 193.037903 -5.568146
-v -46.498764 209.379135 -5.568146
-v -64.258812 209.379135 -5.568144
-v -29.070341 209.379135 -5.568146
-v -10.347265 209.379135 -5.568148
-v -10.347263 228.040436 12.148367
-v -28.914089 209.379135 -5.568146
-v -28.914089 228.040436 12.148368
-v -10.347263 228.040436 42.628395
-v -64.258804 228.040436 42.628395
-v -10.347263 228.040436 12.148367
-v -64.258804 228.040436 12.148369
-v -28.914089 228.040436 12.148368
-v -46.498764 228.040436 12.148368
-v -10.347263 228.040436 42.628395
-v -10.347263 204.608917 42.628395
-v -64.258804 228.040436 42.628395
-v -64.258804 204.608917 42.628395
-v -10.347261 204.608917 53.867905
-v -64.258804 204.608917 53.867905
-v -10.347263 204.608917 42.628395
-v -64.258804 204.608917 42.628395
-v -10.347261 204.608917 53.867905
-v -10.347261 183.272888 53.867905
-v -64.258804 204.608917 53.867905
-v -64.258804 183.272888 53.867905
-v -64.258804 183.272888 53.867905
-v -10.347261 183.272888 53.867905
-v -64.258812 183.272888 -5.568144
-v -10.347265 183.272888 -5.568148
-v -46.498764 209.379135 -5.568146
-v -46.498764 228.040436 12.148368
-v -64.258812 209.379135 -5.568144
-v -64.258804 228.040436 12.148369
-v -29.070341 193.037903 -5.568146
-v -29.070341 209.379135 -5.568146
-v -46.498764 193.037903 -5.568146
-v -46.498764 209.379135 -5.568146
-v -28.914089 209.379135 -5.568146
-v -28.914089 228.040436 12.148368
-v -29.070341 209.379135 -5.568146
-v -46.498764 228.040436 12.148368
-v -46.498764 209.379135 -5.568146
-v -64.258804 183.272888 53.867905
-v -64.258812 183.272888 -5.568144
-v -64.258804 204.608917 53.867905
-v -64.258804 204.608917 42.628395
-v -64.258812 209.379135 -5.568144
-v -64.258804 228.040436 42.628395
-v -64.258804 228.040436 12.148369
-
-vt 0.397258 0.300421 0
-vt 0.490985 0.191522 0
-vt 0.494391 0.2656 0
-vt 1.063908 0.420527 0
-vt 0.980168 0.41307 0
-vt 0.980168 0.414612 0
-vt 0.980168 0.266735 0
-vt 0.82833 0.240533 0
-vt 0.82833 0.759467 0
-vt 0.82833 0.398454 0
-vt 0.82833 0.610574 0
-vt 0.640165 0.261764 0
-vt 0.490985 0.191522 0
-vt 0.494391 0.2656 0
-vt 0.397258 0.300421 0
-vt 0.102742 0.300421 0
-vt 1.102742 0.300421 0
-vt 1.063908 0.420527 0
-vt 0.063908 0.420527 0
-vt 1.063908 0.588322 0
-vt 0.063908 0.588322 0
-vt 0.980168 0.41307 0
-vt 0.82833 0.398454 0
-vt 0.980168 0.414612 0
-vt 0.82833 0.610574 0
-vt 0.980168 0.594824 0
-vt 0.397258 0.699579 0
-vt 1.397258 0.699579 0
-vt 1.102742 0.699579 0
-vt 0.102742 0.699579 0
-vt 0.494391 0.7344 0
-vt 0.490985 0.808478 0
-vt 1.490986 0.808478 0
-vt 0.980168 0.733266 0
-vt 0.640165 0.738236 0
-vt 0.82833 0.759467 0
-
-f 402/890 406/894 372/879 397/889 
-f 412/902 404/893 402/891 397/888 
-f 404/892 412/901 415/906 410/898 
-f 411/899 395/887 390/886 413/903 
-f 362/875 357/873 359/874 
-f 388/885 382/884 416/907 414/904 
-f 408/896 407/895 406/894 
-f 413/903 390/886 388/885 414/904 
-f 410/898 415/906 417/908 409/897 
-f 395/887 411/899 412/902 397/888 
-f 406/894 407/895 378/880 372/879 
-f 371/878 367/877 364/876 
-f 388/885 372/879 378/880 382/884 
-f 395/887 397/888 372/879 388/885 
-f 411/900 414/905 415/906 412/901 
-f 411/899 413/903 414/904 
-f 379/881 378/880 380/882 
-f 379/881 380/882 381/883 
-f 415/906 414/904 416/907 417/908 
-f 382/884 378/880 417/908 416/907 
-f 406/894 410/898 409/897 407/895 
-f 402/890 404/892 410/898 406/894 
-
-g chest_clean
-usemtl brown_light
-v -3.452477 163.773315 9.838644
-v -3.452477 174.631821 9.838644
-v -3.452477 180.679581 7.362144
-v -3.452477 174.261963 7.362144
-v -3.452477 133.253601 -4.814985
-v -3.452477 133.253601 38.996223
-v -3.452477 166.591125 -4.814985
-v -3.452477 158.010056 7.362144
-v -3.452477 166.591125 7.362144
-v -3.452477 163.773315 9.838644
-v -3.452477 163.773315 18.792152
-v -3.452477 174.631821 9.838644
-v -3.452477 174.261963 -0.814482
-v -3.452477 174.261963 7.362144
-v -3.452477 192.118134 -0.814482
-v -3.452477 180.679581 7.362144
-v -3.452477 180.679581 18.792152
-v -3.452477 174.631821 18.792152
-v -3.452477 174.973129 33.281219
-v -3.452477 192.118134 33.281219
-v -3.452477 174.973129 38.996223
-v -3.452477 158.010056 18.792152
-v -3.452477 166.591125 -4.814985
-v -3.452477 163.773315 18.792152
-v -3.452477 192.118134 33.281219
-v -3.452477 163.773315 9.838644
-v -3.452477 163.773315 18.792152
-v -3.452477 158.010056 18.792152
-v -3.452477 166.591125 7.362144
-v -3.452477 174.973129 33.281219
-v -3.452477 158.010056 18.792152
-v -3.452477 133.253601 -4.814985
-v -3.452477 166.591125 -4.814985
-v -3.452477 174.261963 7.362144
-v -3.452477 133.253601 38.996223
-v -3.452477 174.261963 -0.814482
-v -3.452477 174.261963 -0.814482
-v -3.452477 192.118134 -0.814482
-v -3.452477 158.010056 7.362144
-v -3.452477 180.679581 7.362144
-v -3.452477 174.973129 38.996223
-v -3.452477 192.118134 33.281219
-v -3.452477 133.253601 -4.814985
-v -3.452477 192.118134 -0.814482
-v -3.452477 174.631821 18.792152
-v -3.452477 174.973129 33.281219
-v -3.452477 174.631821 9.838644
-v -3.452477 158.010056 7.362144
-v -3.452477 174.631821 18.792152
-v -3.452477 180.679581 18.792152
-v -3.452477 166.591125 7.362144
-v -3.452477 174.973129 38.996223
-v -3.452477 133.253601 38.996223
-v -3.452477 180.679581 18.792152
-v -68.25251 158.010056 18.792156
-v -68.252518 166.591125 -4.814981
-v -68.25251 174.261963 7.362146
-v -68.25251 174.261963 -0.814478
-v -68.25251 180.679581 7.362146
-v -68.25251 192.118134 33.281223
-v -68.252518 133.253601 -4.814981
-v -68.25251 192.118134 -0.814478
-v -68.25251 174.973129 33.281223
-v -68.25251 158.010056 7.362146
-v -68.25251 166.591125 7.362146
-v -68.25251 174.973129 38.996231
-v -68.25251 133.253601 38.996231
-v -68.25251 180.679581 18.792156
-v -68.25251 163.773315 9.838646
-v -68.25251 163.773315 18.792156
-v -68.25251 174.631821 9.838646
-v -68.25251 174.631821 18.792156
-
-vt 0.836835 0 0
-vt 0 0 0
-vt 0.836835 0 0
-vt 0 0 0
-vt 0 0 0
-vt 0.734995 0 0
-vt 0.60332 0 0
-vt 0.351831 0 0
-vt 0 0 0
-vt 0.971921 0.189032 0
-vt 0.861232 0.136926 0
-vt 0.908657 0.182783 0
-vt 0.828884 0.176815 0
-vt 0.669958 0.253037 0
-vt 0.148169 0.267045 0
-vt 1.148169 0.267045 0
-vt 0.836984 0.257055 0
-vt 0.60332 0.175907 0
-vt 0.836835 0.12766 0
-vt 0.351831 0 0
-vt 1.148169 0 0
-vt 0 0 0
-vt 0.727482 0.111719 0
-vt 1.148169 0 0
-vt 0 0 0
-vt 0.971921 0 0
-vt 0.581358 0.207285 0
-vt 0.351831 0.267045 0
-vt 0.734995 0.159673 0
-vt 0 1 0
-vt 0.734995 1 0
-vt 0.60332 1 0
-vt 0.351831 1 0
-vt 0.971921 0.805865 0
-vt 0.861232 0.858883 0
-vt 0.908657 0.812195 0
-vt 0.828884 0.818248 0
-vt 0.669958 0.741499 0
-vt 0.148169 0.72753 0
-vt 1.148169 0.72753 0
-vt 0.836984 0.737488 0
-vt 0.60332 0.81917 0
-vt 0 1 0
-vt 0.351831 1 0
-vt 1.148169 1 0
-vt 0 1 0
-vt 0.971921 1 0
-vt 1.148169 1 0
-vt 0.581358 0.78742 0
-vt 0.351831 0.72753 0
-vt 0.734995 0.835674 0
-vt 0 1 0
-vt 0.836835 1 0
-vt 0 1 0
-vt 0.836835 1 0
-vt 0.836835 0.868362 0
-vt 0.727482 0.884704 0
-
-f 478/948 473/942 482/956 481/953 
-f 472/941 484/958 478/947 481/952 
-f 480/950 483/957 484/958 472/940 
-f 487/963 486/961 488/964 489/965 
-f 472/939 485/959 477/946 480/950 
-f 476/945 479/949 477/946 485/959 
-f 474/943 475/944 479/949 476/945 
-f 450/918 473/942 478/948 460/924 
-f 468/934 482/955 473/942 450/918 
-f 465/930 481/951 482/954 468/933 
-f 445/913 472/938 481/951 465/930 
-f 460/923 478/947 484/958 470/936 
-f 469/935 483/957 480/950 463/926 
-f 470/936 484/958 483/957 469/935 
-f 464/927 488/964 486/961 443/909 
-f 463/926 480/950 477/946 459/922 
-f 457/921 476/945 485/959 471/937 
-f 459/922 477/946 479/949 461/925 
-f 451/919 474/943 476/945 457/921 
-f 454/920 475/944 474/943 451/919 
-f 461/925 479/949 475/944 454/920 
-f 466/931 489/965 488/964 464/927 
-f 443/910 486/960 487/962 444/912 
-f 485/959 471/937 466/931 489/965 
-f 487/962 444/912 448/917 472/938 
-f 457/921 461/925 459/922 471/937 
-f 461/925 454/920 451/919 457/921 
-f 465/929 460/924 450/918 468/932 
-f 470/936 460/923 465/928 448/916 
-f 463/926 469/935 470/936 448/915 
-f 448/914 471/937 459/922 463/926 
-f 443/909 464/927 466/931 444/911 
-
-g body_clean1
-usemtl brown_light
-v -6.241148 57.953701 48.613876
-v -24.22551 103.837631 10.190531
-v 0.760529 42.060787 20.959789
-v -37.709824 66.92762 10.183207
-v -19.237558 57.953701 53.781174
-v -37.709824 120.132294 68.891212
-v -77.166901 192.318008 55.697437
-v -19.308687 41.789291 20.991514
-v -19.23756 42.060787 10.190531
-v -19.23756 49.835079 10.190531
-v -19.208519 35.235577 53.804001
-v -37.709824 86.237701 -4.389473
-v -19.237558 35.033916 48.613876
-v 0.760529 42.060787 10.190529
-v -37.709824 58.985985 10.190538
-v -19.347178 50.165215 54.170109
-v 0.760529 57.953701 53.781174
-v -37.709824 73.096016 10.190538
-v -37.709824 144.915802 41.964085
-v -19.882519 0.000023 -0.351593
-v -19.256357 30.008041 48.613876
-v -19.882517 0.000023 48.613876
-v -19.240343 67.078094 23.593922
-v -6.241148 57.953701 38.865128
-v 1.747257 143.077621 27.487873
-v 1.747257 143.077621 7.386337
-v 1.747257 126.220505 40.347279
-v 1.747257 137.811234 27.487873
-v 1.747257 170.544739 41.964085
-v 1.747257 168.752289 63.319244
-v 1.747257 137.811234 41.964085
-v -37.709824 143.077606 27.487877
-v -37.709824 49.835087 10.190538
-v 6.83416 196.959229 41.964085
-v -12.125738 196.959229 41.964085
-v -6.24115 103.837631 10.190529
-v -24.22551 72.8965 10.565985
-v -6.24115 128.384979 7.386337
-v -11.435379 128.384979 7.386337
-v -11.43541 133.165527 7.386345
-v 6.83416 170.544739 41.964085
-v 6.83416 170.544739 55.697433
-v 6.83416 196.959229 51.056229
-v -6.24115 103.837631 -4.389488
-v -24.225512 103.837631 -4.389488
-v -6.24115 128.384979 -4.389488
-v -11.43541 133.165527 -0.55357
-v 1.747257 170.544739 55.697433
-v -37.709824 58.208019 54.021019
-v -37.709824 120.132294 47.060863
-v -6.241148 94.505569 38.865128
-v -37.709824 66.933746 23.586597
-v -37.709824 137.811218 27.487877
-v 0.760529 57.953701 38.865124
-v -6.241148 57.953701 44.6245
-v 0.760529 94.505569 38.865124
-v -6.241148 94.505569 31.435822
-v -6.24115 72.949203 10.190529
-v -37.709824 133.165512 7.386354
-v -24.22551 73.096008 8.228834
-v -24.225512 86.237694 -4.389488
-v -24.22551 86.237694 10.190531
-v -19.240343 58.992107 23.593922
-v -37.709824 137.811218 41.964085
-v -37.709824 128.384964 -4.389473
-v 0.760529 72.949203 10.190529
-v -11.435379 128.384979 -0.55357
-v 0.760529 94.505569 31.435822
-v -37.709824 103.837624 -4.389473
-v -19.23756 58.985977 10.190531
-v -19.23756 67.071968 10.190531
-v -37.709824 144.915802 68.891212
-v 0.789566 35.235577 53.804001
-v 1.747257 179.124237 68.89122
-v 0.760529 35.033916 48.613876
-v -37.709824 73.096016 8.228842
-v -37.709824 58.985981 23.243774
-v -19.882519 8.783707 -0.351593
-v 0.760529 0.000023 -0.351593
-v 0.760529 0.000023 48.613876
-v 0.760529 30.008041 20.959789
-v 0.760529 8.783707 -0.351593
-v -19.882517 30.008041 20.959791
-v -6.241148 126.220505 40.347279
-v -6.241148 120.132301 47.163853
-v -6.241146 120.132301 68.89122
-v -6.241146 126.220505 68.89122
-v 1.747257 149.508865 68.89122
-v -12.125736 144.915802 68.89122
-v 1.747257 126.220505 68.89122
-v -6.241148 120.132301 40.347279
-v -6.24115 120.132301 7.386337
-v 1.747257 120.132301 40.347279
-v -37.709824 57.953716 48.613876
-v -37.709824 143.077606 7.386347
-v -82.253799 192.318008 55.697437
-v -37.709824 58.992115 23.593925
-v -12.125736 149.508865 68.89122
-v 1.747257 149.508865 63.319244
-v -12.125736 168.752289 68.89122
-v -12.125736 168.752289 63.319244
-v -12.125736 149.508865 63.319244
-v -12.125738 196.959229 51.056229
-v -12.125738 144.915802 41.964085
-v 1.747257 120.132301 7.386337
-v -37.709824 50.419537 54.409958
-v 1.747257 168.752289 68.89122
-v -12.125736 179.124237 68.89122
-v 6.83416 192.318024 55.697433
-v 1.747257 192.318024 55.697433
-v -69.178497 57.953709 48.613876
-v -51.194138 103.837624 10.190535
-v -76.180176 42.060795 20.959795
-v -56.182087 57.953709 53.781174
-v -56.110958 41.789295 20.991516
-v -56.182091 42.060795 10.190535
-v -56.182091 49.835083 10.190535
-v -56.211128 35.235584 53.804001
-v -56.182087 35.033924 48.613876
-v -76.180176 42.060795 10.190536
-v -56.072468 50.165218 54.170105
-v -76.180176 57.953709 53.781174
-v -55.537132 0.000038 -0.351589
-v -55.537128 0.000038 48.613876
-v -56.179302 67.078102 23.593925
-v -69.178497 57.953709 38.865128
-v -77.166901 143.077606 27.487877
-v -77.166901 143.077606 7.386345
-v -77.166901 126.220505 40.347282
-v -77.166901 137.811234 27.487877
-v -77.166901 170.544739 41.964088
-v -77.166901 168.752289 63.319244
-v -77.166901 137.811234 41.964088
-v -82.253799 196.959198 41.964088
-v -63.293907 196.959198 41.964088
-v -69.178497 103.837624 10.190536
-v -51.194138 72.896507 10.565989
-v -69.178497 128.384964 7.386345
-v -63.984268 128.384964 7.386345
-v -63.984238 133.165527 7.386353
-v -82.253799 170.544739 41.964088
-v -82.253799 170.544739 55.697437
-v -82.253799 196.959198 51.056229
-v -69.178497 103.837624 -4.389481
-v -51.194138 103.837624 -4.389481
-v -69.178497 128.384964 -4.389481
-v -63.984238 133.165527 -0.553562
-v -77.166901 170.544739 55.697437
-v -69.178497 94.505569 38.865128
-v -76.180176 57.953709 38.865128
-v -76.180176 94.505569 38.865128
-v -69.178497 94.505569 31.435825
-v -69.178497 72.949203 10.190536
-v -51.194138 73.096008 8.228838
-v -51.194138 86.237701 -4.389481
-v -51.194138 86.237701 10.190535
-v -56.179302 58.992111 23.593925
-v -76.180176 72.949203 10.190536
-v -63.984268 128.384964 -0.553562
-v -76.180176 94.505569 31.435825
-v -56.182091 58.985981 10.190535
-v -56.182091 67.071968 10.190535
-v -76.209213 35.235584 53.804001
-v -77.166901 179.124222 68.89122
-v -76.180176 35.033924 48.613876
-v -55.537132 8.783722 -0.351589
-v -76.180176 0.000038 -0.351589
-v -76.180176 0.000038 48.613876
-v -76.180176 30.008049 20.959795
-v -76.180176 8.783722 -0.351589
-v -55.537128 30.008049 20.959793
-v -69.178497 126.220505 40.347282
-v -69.178497 120.132301 47.163853
-v -69.178497 120.132301 68.89122
-v -69.178497 126.220505 68.89122
-v -77.166901 149.50885 68.89122
-v -63.293903 144.915802 68.89122
-v -77.166901 126.220505 68.89122
-v -69.178497 120.132301 40.347282
-v -69.178497 120.132301 7.386345
-v -77.166901 120.132301 40.347282
-v -63.293903 149.50885 68.89122
-v -77.166901 149.50885 63.319244
-v -63.293903 168.752289 68.89122
-v -63.293903 168.752289 63.319244
-v -63.293903 149.50885 63.319244
-v -63.293907 196.959198 51.056229
-v -63.293907 144.915802 41.964088
-v -77.166901 120.132301 7.386345
-v -77.166901 168.752289 68.89122
-v -63.293903 179.124222 68.89122
-
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0.337951 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0.824293 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0.824293 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0.337951 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-
-f 594/1179 581/1149 527/1037 515/1013 
-f 547/1078 526/1035 491/969 525/1032 
-f 509/1000 567/1113 571/1121 568/1116 
-f 556/1092 536/1061 529/1042 528/1041 
-f 533/1052 535/1059 527/1038 581/1148 
-f 503/992 498/983 560/1103 555/1090 
-f 540/1067 546/1075 574/1130 
-f 498/982 503/991 492/973 497/980 
-f 574/1127 490/966 513/1007 540/1066 
-f 611/1218 639/1288 654/1326 652/1322 
-f 568/1115 569/1118 511/1002 509/999 
-f 547/1078 546/1076 557/1096 555/1090 
-f 675/1383 677/1388 674/1379 
-f 505/994 499/984 498/981 497/978 
-f 622/1247 520/1026 517/1018 619/1238 
-f 591/1167 587/1158 577/1135 588/1161 
-f 641/1295 662/1347 625/1254 642/1297 
-f 623/1249 632/1272 676/1387 624/1252 
-f 555/1089 557/1095 545/1074 543/1071 
-f 525/1032 491/969 534/1055 533/1052 
-f 588/1161 520/1027 518/1019 519/1024 
-f 516/1015 579/1140 576/1133 573/1125 
-f 492/972 503/991 555/1088 543/1070 
-f 518/1020 530/1045 531/1048 537/1064 
-f 653/1325 679/1396 673/1378 680/1399 
-f 629/1265 617/1233 515/1012 529/1043 
-f 666/1357 671/1373 665/1355 667/1361 
-f 502/990 564/1111 562/1106 500/988 
-f 620/1241 624/1251 677/1391 622/1247 
-f 670/1370 618/1235 619/1237 678/1393 
-f 497/980 502/989 500/987 505/995 
-f 598/1188 532/1049 592/1170 599/1190 
-f 562/1104 506/997 494/975 505/995 
-f 667/1361 579/1142 578/1137 666/1358 
-f 519/1022 596/1180 589/1163 590/1164 
-f 602/1197 654/1328 657/1335 658/1337 
-f 535/1058 527/1037 528/1040 556/1093 
-f 653/1325 679/1396 637/1283 496/976 
-f 557/1094 546/1076 540/1065 545/1073 
-f 543/1070 545/1072 540/1065 513/1006 
-f 677/1389 666/1357 578/1137 593/1174 
-f 527/1036 528/1039 529/1042 515/1010 
-f 571/1122 567/1113 572/1123 570/1119 
-f 511/1001 569/1118 564/1111 502/990 
-f 623/1249 624/1251 620/1240 630/1267 
-f 667/1359 622/1248 619/1237 618/1236 
-f 500/986 562/1105 505/995 
-f 676/1384 680/1398 673/1378 674/1379 
-f 567/1112 509/998 511/1002 572/1124 
-f 511/1001 502/989 497/979 572/1124 
-f 591/1168 588/1160 519/1023 590/1164 
-f 490/967 506/997 543/1068 513/1006 
-f 534/1054 491/968 551/1083 550/1082 
-f 550/1082 551/1083 526/1035 549/1079 
-f 651/1320 647/1307 555/1087 560/1102 
-f 598/1187 523/1028 532/1050 
-f 665/1354 672/1376 622/1247 667/1360 
-f 564/1110 492/970 543/1069 
-f 559/1099 552/1086 512/1005 560/1101 
-f 575/1132 580/1145 573/1126 576/1134 
-f 581/1147 594/1178 582/1151 580/1144 
-f 531/1047 530/1045 523/1028 598/1186 
-f 519/1022 518/1021 537/1063 596/1181 
-f 492/971 570/1120 572/1123 497/978 
-f 537/1062 596/1180 563/1108 599/1190 
-f 564/1110 543/1068 506/997 562/1104 
-f 592/1172 532/1049 523/1028 524/1031 
-f 585/1155 631/1270 637/1283 496/976 
-f 537/1062 531/1046 598/1185 599/1190 
-f 594/1177 515/1011 514/1008 517/1016 
-f 589/1162 596/1180 563/1108 597/1184 
-f 636/1280 629/1264 529/1042 536/1060 
-f 597/1183 563/1107 599/1189 592/1171 
-f 659/1339 656/1333 657/1335 658/1337 
-f 666/1356 677/1390 675/1382 671/1372 
-f 624/1250 676/1386 674/1380 677/1389 
-f 518/1020 524/1029 523/1028 530/1044 
-f 577/1136 587/1157 578/1138 579/1141 
-f 616/1231 514/1009 517/1017 619/1237 
-f 517/1016 520/1026 579/1140 516/1015 
-f 589/1162 597/1182 592/1170 590/1164 
-f 591/1167 593/1173 578/1137 587/1156 
-f 590/1165 592/1169 524/1030 593/1176 
-f 593/1175 591/1166 590/1164 
-f 517/1016 516/1014 582/1150 594/1177 
-f 593/1174 524/1029 518/1019 520/1025 
-f 520/1025 588/1159 577/1135 579/1139 
-f 580/1143 582/1150 516/1014 573/1125 
-f 646/1305 614/1225 512/1004 552/1085 
-f 569/1117 568/1114 571/1121 570/1119 
-f 569/1117 564/1109 492/970 570/1119 
-f 525/1033 574/1129 546/1075 547/1077 
-f 533/1052 581/1146 574/1128 525/1032 
-f 627/1258 669/1368 678/1394 617/1232 
-f 601/1195 626/1256 642/1296 625/1253 
-f 659/1339 655/1330 612/1222 656/1332 
-f 629/1263 636/1279 648/1312 628/1262 
-f 627/1259 635/1277 633/1273 669/1367 
-f 651/1319 605/1206 609/1215 647/1309 
-f 641/1295 638/1286 662/1344 
-f 602/1199 609/1214 605/1205 604/1203 
-f 615/1228 600/1193 662/1346 638/1285 
-f 644/1303 634/1275 534/1053 550/1082 
-f 613/1224 657/1334 656/1331 612/1221 
-f 649/1315 641/1294 642/1296 647/1309 
-f 650/1316 646/1306 552/1084 559/1098 
-f 605/1204 606/1208 610/1217 604/1201 
-f 506/996 490/966 600/1191 611/1219 
-f 665/1354 671/1371 675/1382 672/1375 
-f 662/1345 669/1366 633/1273 625/1253 
-f 549/1080 643/1300 644/1302 550/1081 
-f 640/1293 649/1314 647/1308 639/1290 
-f 634/1275 601/1195 625/1253 633/1273 
-f 620/1241 622/1246 672/1375 621/1244 
-f 664/1353 667/1359 618/1236 661/1343 
-f 647/1307 609/1214 602/1198 639/1289 
-f 631/1269 630/1266 620/1240 637/1282 
-f 496/977 653/1324 680/1397 676/1385 
-f 512/1003 614/1226 651/1318 560/1100 
-f 505/994 494/974 603/1200 610/1216 
-f 652/1323 654/1327 608/1213 607/1211 
-f 618/1235 670/1370 668/1364 661/1343 
-f 622/1245 677/1388 593/1173 520/1025 
-f 607/1210 608/1212 604/1203 610/1216 
-f 676/1384 632/1272 585/1154 496/976 
-f 603/1200 611/1218 652/1322 610/1216 
-f 663/1350 575/1131 576/1133 664/1352 
-f 673/1377 679/1396 621/1242 674/1379 
-f 556/1092 648/1310 636/1278 536/1060 
-f 628/1261 627/1258 635/1276 648/1311 
-f 633/1273 635/1277 535/1057 533/1051 
-f 638/1284 641/1294 649/1313 640/1292 
-f 638/1284 640/1291 639/1289 615/1227 
-f 606/1207 650/1317 559/1097 499/985 
-f 629/1263 628/1260 627/1257 617/1234 
-f 660/1340 655/1330 659/1338 658/1337 
-f 654/1327 657/1334 613/1223 608/1213 
-f 606/1207 499/984 505/993 610/1216 
-f 616/1230 617/1233 678/1393 619/1237 
-f 652/1321 607/1209 610/1216 
-f 574/1127 575/1131 663/1349 662/1344 
-f 613/1224 612/1220 655/1329 660/1341 
-f 604/1202 608/1212 613/1223 660/1341 
-f 621/1243 672/1374 675/1381 674/1379 
-f 639/1288 611/1218 600/1192 615/1227 
-f 645/1304 601/1194 634/1274 644/1301 
-f 626/1256 645/1304 644/1301 643/1299 
-f 526/1034 626/1255 643/1298 549/1079 
-f 623/1249 585/1153 632/1271 
-f 617/1232 616/1229 514/1008 515/1010 
-f 602/1197 654/1326 639/1287 
-f 614/1225 646/1305 650/1316 651/1318 
-f 661/1342 668/1363 663/1348 664/1351 
-f 670/1369 678/1392 669/1365 668/1362 
-f 623/1249 630/1266 631/1268 585/1152 
-f 637/1281 620/1239 621/1242 679/1395 
-f 660/1340 658/1336 602/1196 604/1201 
-f 635/1276 648/1310 556/1091 535/1056 
-f 662/1344 600/1191 490/966 574/1127 
-
-g Symmetry_1 body_clean
-usemtl brown_light
-v -6.241148 57.953701 48.613876
-v -24.22551 103.837631 10.190531
-v 0.760529 42.060787 20.959789
-v -37.709824 66.92762 10.183207
-v -19.237558 57.953701 53.781174
-v -37.709824 120.132294 68.891212
-v -37.709824 133.165512 -0.553555
-v -19.308687 41.789291 20.991514
-v -19.23756 42.060787 10.190531
-v -19.23756 49.835079 10.190531
-v -19.208519 35.235577 53.804001
-v -37.709824 86.237701 -4.389473
-v -19.237558 35.033916 48.613876
-v 0.760529 42.060787 10.190529
-v -37.709824 58.985985 10.190538
-v -19.347178 50.165215 54.170109
-v 0.760529 57.953701 53.781174
-v -37.709824 73.096016 10.190538
-v -37.709824 144.915802 41.964085
-v -19.882519 0.000023 -0.351593
-v -19.256357 30.008041 48.613876
-v -19.882517 0.000023 48.613876
-v -19.240343 67.078094 23.593922
-v -6.241148 57.953701 38.865128
-v 1.747257 143.077621 27.487873
-v 1.747257 143.077621 7.386337
-v 1.747257 126.220505 40.347279
-v 1.747257 137.811234 27.487873
-v 1.747257 170.544739 41.964085
-v 1.747257 168.752289 63.319244
-v 1.747257 137.811234 41.964085
-v -37.709824 143.077606 27.487877
-v -37.709824 49.835087 10.190538
-v 6.83416 196.959229 41.964085
-v -12.125738 196.959229 41.964085
-v -6.24115 103.837631 10.190529
-v -24.22551 73.096008 10.190531
-v -6.24115 128.384979 7.386337
-v -11.435379 128.384979 7.386337
-v -11.43541 133.165527 7.386345
-v 6.83416 170.544739 41.964085
-v 6.83416 170.544739 55.697433
-v 6.83416 196.959229 51.056229
-v -6.24115 103.837631 -4.389488
-v -24.225512 103.837631 -4.389488
-v -6.24115 128.384979 -4.389488
-v -11.43541 133.165527 -0.55357
-v 1.747257 170.544739 55.697433
-v -37.709824 58.208019 54.021019
-v -37.709824 120.132294 47.060863
-v -6.241148 94.505569 38.865128
-v -37.709824 66.933746 23.586597
-v -37.709824 137.811218 27.487877
-v 0.760529 57.953701 38.865124
-v -6.241148 57.953701 44.6245
-v 0.760529 94.505569 38.865124
-v -6.241148 94.505569 31.435822
-v -6.24115 72.949203 10.190529
-v -37.709824 133.165512 7.386354
-v -24.22551 73.096008 8.228834
-v -24.225512 86.237694 -4.389488
-v -24.22551 86.237694 10.190531
-v -19.240343 58.992107 23.593922
-v -37.709824 137.811218 41.964085
-v -37.709824 128.384964 -4.389473
-v 0.760529 72.949203 10.190529
-v -11.435379 128.384979 -0.55357
-v 0.760529 94.505569 31.435822
-v -37.709824 103.837624 -4.389473
-v -19.23756 58.985977 10.190531
-v -19.23756 67.071968 10.190531
-v -37.709824 144.915802 68.891212
-v 0.789566 35.235577 53.804001
-v 1.747257 179.124237 68.89122
-v 0.760529 35.033916 48.613876
-v -37.709824 73.096016 8.228842
-v -37.709824 58.985981 23.243774
-v -19.882519 8.783707 -0.351593
-v 0.760529 0.000023 -0.351593
-v 0.760529 0.000023 48.613876
-v 0.760529 30.008041 20.959789
-v 0.760529 8.783707 -0.351593
-v -19.882517 30.008041 20.959791
-v -6.241148 126.220505 40.347279
-v -6.241148 120.132301 47.163853
-v -6.241146 120.132301 68.89122
-v -6.241146 126.220505 68.89122
-v 1.747257 149.508865 68.89122
-v -12.125736 144.915802 68.89122
-v 1.747257 126.220505 68.89122
-v -6.241148 120.132301 40.347279
-v -6.24115 120.132301 7.386337
-v 1.747257 120.132301 40.347279
-v -37.709824 57.953716 48.613876
-v -37.709824 143.077606 7.386347
-v -37.709824 128.384964 -0.553555
-v -37.709824 58.992115 23.593925
-v -12.125736 149.508865 68.89122
-v 1.747257 149.508865 63.319244
-v -12.125736 168.752289 68.89122
-v -12.125736 168.752289 63.319244
-v -12.125736 149.508865 63.319244
-v -12.125738 196.959229 51.056229
-v -12.125738 144.915802 41.964085
-v 1.747257 120.132301 7.386337
-v -37.709824 50.419537 54.409958
-v 1.747257 168.752289 68.89122
-v -12.125736 179.124237 68.89122
-v 6.83416 192.318024 55.697433
-v 1.747257 192.318024 55.697433
-v -69.178497 57.953709 48.613876
-v -51.194138 103.837624 10.190535
-v -76.180176 42.060795 20.959795
-v -56.182087 57.953709 53.781174
-v -56.110958 41.789295 20.991516
-v -56.182091 42.060795 10.190535
-v -56.182091 49.835083 10.190535
-v -56.211128 35.235584 53.804001
-v -56.182087 35.033924 48.613876
-v -76.180176 42.060795 10.190536
-v -56.072468 50.165218 54.170105
-v -76.180176 57.953709 53.781174
-v -55.537132 0.000038 -0.351589
-v -55.537128 0.000038 48.613876
-v -56.179302 67.078102 23.593925
-v -69.178497 57.953709 38.865128
-v -77.166901 143.077606 27.487877
-v -77.166901 143.077606 7.386345
-v -77.166901 126.220505 40.347282
-v -77.166901 137.811234 27.487877
-v -77.166901 170.544739 41.964088
-v -77.166901 168.752289 63.319244
-v -77.166901 137.811234 41.964088
-v -82.253799 196.959198 41.964088
-v -63.293907 196.959198 41.964088
-v -69.178497 103.837624 10.190536
-v -51.194138 73.096008 10.190535
-v -69.178497 128.384964 7.386345
-v -63.984268 128.384964 7.386345
-v -63.984238 133.165527 7.386353
-v -82.253799 170.544739 41.964088
-v -82.253799 170.544739 55.697437
-v -82.253799 196.959198 51.056229
-v -69.178497 103.837624 -4.389481
-v -51.194138 103.837624 -4.389481
-v -69.178497 128.384964 -4.389481
-v -63.984238 133.165527 -0.553562
-v -77.166901 170.544739 55.697437
-v -69.178497 94.505569 38.865128
-v -76.180176 57.953709 38.865128
-v -76.180176 94.505569 38.865128
-v -69.178497 94.505569 31.435825
-v -69.178497 72.949203 10.190536
-v -51.194138 73.096008 8.228838
-v -51.194138 86.237701 -4.389481
-v -51.194138 86.237701 10.190535
-v -56.179302 58.992111 23.593925
-v -76.180176 72.949203 10.190536
-v -63.984268 128.384964 -0.553562
-v -76.180176 94.505569 31.435825
-v -56.182091 58.985981 10.190535
-v -56.182091 67.071968 10.190535
-v -76.209213 35.235584 53.804001
-v -77.166901 179.124222 68.89122
-v -76.180176 35.033924 48.613876
-v -55.537132 8.783722 -0.351589
-v -76.180176 0.000038 -0.351589
-v -76.180176 0.000038 48.613876
-v -76.180176 30.008049 20.959795
-v -76.180176 8.783722 -0.351589
-v -55.537128 30.008049 20.959793
-v -69.178497 126.220505 40.347282
-v -69.178497 120.132301 47.163853
-v -69.178497 120.132301 68.89122
-v -69.178497 126.220505 68.89122
-v -77.166901 149.50885 68.89122
-v -63.293903 144.915802 68.89122
-v -77.166901 126.220505 68.89122
-v -69.178497 120.132301 40.347282
-v -69.178497 120.132301 7.386345
-v -77.166901 120.132301 40.347282
-v -63.293903 149.50885 68.89122
-v -77.166901 149.50885 63.319244
-v -63.293903 168.752289 68.89122
-v -63.293903 168.752289 63.319244
-v -63.293903 149.50885 63.319244
-v -63.293907 196.959198 51.056229
-v -63.293907 144.915802 41.964088
-v -77.166901 120.132301 7.386345
-v -77.166901 168.752289 68.89122
-v -63.293903 179.124222 68.89122
-v -82.253799 192.318008 55.697437
-v -77.166901 192.318008 55.697437
-
-vt 0 0 0
-vt 1 0 0
-vt 1 0 0
-vt 1 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0.337951 1 0
-vt 0 0 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0.824293 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 0 0
-vt 1 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0.337951 1 0
-vt 0 0 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0.824293 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-
-f 785/1637 772/1605 718/1480 706/1453 
-f 738/1527 717/1477 682/1403 716/1474 
-f 700/1444 758/1568 762/1576 759/1571 
-f 747/1545 727/1504 720/1486 719/1484 
-f 724/1495 726/1501 718/1481 772/1604 
-f 694/1431 689/1420 751/1554 746/1542 
-f 731/1514 737/1524 765/1585 
-f 689/1419 694/1430 683/1407 688/1417 
-f 765/1584 681/1401 704/1449 731/1513 
-f 749/1550 745/1539 726/1501 724/1495 
-f 759/1570 760/1573 702/1446 700/1443 
-f 738/1527 737/1525 748/1548 746/1542 
-f 777/1613 732/1515 703/1447 743/1536 
-f 696/1436 690/1422 689/1418 688/1415 
-f 685/1410 729/1509 786/1639 696/1434 
-f 782/1625 778/1616 768/1592 779/1619 
-f 747/1545 776/1612 687/1414 727/1503 
-f 692/1427 749/1549 725/1498 741/1534 
-f 746/1540 748/1547 736/1523 734/1520 
-f 716/1474 682/1403 725/1497 724/1495 
-f 779/1619 711/1466 709/1458 710/1463 
-f 707/1455 770/1597 767/1591 764/1580 
-f 683/1406 694/1430 746/1541 734/1519 
-f 709/1459 721/1489 722/1492 728/1507 
-f 746/1540 751/1553 684/1408 717/1478 
-f 717/1477 684/1408 698/1439 
-f 690/1421 696/1435 786/1638 713/1469 
-f 693/1429 755/1565 753/1560 691/1425 
-f 733/1516 744/1537 711/1465 708/1456 
-f 752/1557 769/1594 784/1634 699/1441 
-f 688/1417 693/1428 691/1424 696/1434 
-f 789/1648 723/1493 783/1628 790/1650 
-f 753/1558 697/1437 685/1409 696/1434 
-f 766/1588 765/1583 730/1511 686/1412 
-f 710/1461 787/1640 780/1621 781/1622 
-f 727/1502 687/1413 739/1529 720/1487 
-f 726/1500 718/1480 719/1483 747/1544 
-f 745/1538 776/1612 747/1543 726/1499 
-f 748/1546 737/1525 731/1512 736/1522 
-f 734/1519 736/1521 731/1512 704/1448 
-f 695/1433 777/1613 743/1536 750/1551 
-f 718/1479 719/1482 720/1486 706/1451 
-f 762/1577 758/1568 763/1578 761/1574 
-f 702/1445 760/1573 755/1565 693/1429 
-f 713/1469 695/1432 750/1552 690/1421 
-f 697/1438 681/1401 774/1609 729/1508 
-f 691/1423 753/1559 696/1434 
-f 774/1608 681/1401 765/1582 730/1510 
-f 758/1567 700/1442 702/1446 763/1579 
-f 702/1445 693/1428 688/1416 763/1579 
-f 782/1626 779/1618 710/1462 781/1622 
-f 681/1400 697/1437 734/1517 704/1448 
-f 725/1496 682/1402 742/1535 741/1534 
-f 741/1534 742/1535 717/1477 740/1532 
-f 740/1531 756/1566 692/1426 741/1533 
-f 789/1647 714/1470 723/1494 
-f 733/1516 708/1457 705/1450 712/1468 
-f 755/1564 683/1404 734/1518 
-f 750/1551 743/1536 703/1447 751/1553 
-f 766/1587 771/1601 764/1581 767/1590 
-f 772/1603 785/1636 773/1607 771/1600 
-f 722/1491 721/1489 714/1470 789/1646 
-f 710/1461 709/1460 728/1506 787/1641 
-f 683/1405 761/1575 763/1578 688/1415 
-f 728/1505 787/1640 754/1562 790/1650 
-f 755/1564 734/1517 697/1437 753/1558 
-f 783/1630 723/1493 714/1470 715/1473 
-f 717/1476 740/1530 756/1566 698/1439 
-f 728/1505 722/1490 789/1645 790/1650 
-f 785/1635 706/1452 705/1450 708/1456 
-f 780/1620 787/1640 754/1562 788/1644 
-f 775/1611 712/1467 705/1450 706/1451 
-f 788/1643 754/1561 790/1649 783/1629 
-f 720/1485 739/1528 775/1610 706/1451 
-f 752/1556 686/1411 766/1586 767/1590 
-f 770/1596 769/1594 752/1555 767/1589 
-f 709/1459 715/1471 714/1470 721/1488 
-f 768/1593 778/1615 769/1595 770/1598 
-f 784/1633 711/1465 744/1537 699/1440 
-f 708/1456 711/1465 770/1597 707/1455 
-f 780/1620 788/1642 783/1628 781/1622 
-f 782/1625 784/1634 769/1594 778/1614 
-f 781/1623 783/1627 715/1472 784/1633 
-f 784/1632 782/1624 781/1622 
-f 708/1456 707/1454 773/1606 785/1635 
-f 784/1631 715/1471 709/1458 711/1464 
-f 711/1464 779/1617 768/1592 770/1596 
-f 771/1599 773/1606 707/1454 764/1580 
-f 751/1553 703/1447 732/1515 684/1408 
-f 760/1572 759/1569 762/1576 761/1574 
-f 760/1572 755/1563 683/1404 761/1574 
-f 716/1475 765/1583 737/1524 738/1526 
-f 724/1495 772/1602 765/1582 716/1474 
-f 818/1716 860/1824 869/1850 808/1692 
-f 792/1654 817/1713 833/1757 816/1710 
-f 850/1795 846/1787 803/1683 847/1790 
-f 820/1722 827/1740 839/1770 819/1720 
-f 818/1717 826/1737 824/1731 860/1823 
-f 842/1777 796/1666 800/1675 838/1767 
-f 832/1754 829/1746 853/1804 
-f 793/1658 800/1674 796/1665 795/1663 
-f 806/1688 791/1652 853/1803 829/1745 
-f 826/1737 745/1539 749/1550 824/1731 
-f 804/1685 848/1792 847/1789 803/1682 
-f 840/1773 832/1755 833/1757 838/1767 
-f 805/1686 732/1515 777/1613 837/1764 
-f 796/1664 797/1668 801/1678 795/1661 
-f 786/1639 729/1509 794/1660 801/1676 
-f 856/1811 862/1829 866/1838 863/1832 
-f 687/1414 776/1612 839/1770 827/1739 
-f 825/1734 749/1549 692/1427 835/1762 
-f 831/1753 840/1772 838/1765 830/1750 
-f 825/1733 792/1654 816/1710 824/1731 
-f 811/1697 813/1705 863/1832 812/1702 
-f 855/1810 858/1816 809/1694 852/1799 
-f 838/1766 800/1674 793/1657 830/1749 
-f 822/1728 821/1725 811/1698 828/1743 
-f 684/1408 842/1776 838/1765 817/1714 
-f 684/1408 817/1713 698/1439 
-f 786/1638 801/1677 797/1667 713/1469 
-f 843/1780 845/1785 799/1673 798/1671 
-f 813/1704 744/1537 733/1516 810/1695 
-f 868/1847 857/1813 752/1557 699/1441 
-f 798/1670 799/1672 795/1663 801/1676 
-f 867/1841 823/1729 872/1859 873/1861 
-f 794/1659 802/1679 843/1778 801/1676 
-f 730/1511 853/1802 854/1807 686/1412 
-f 864/1834 870/1851 812/1700 865/1835 
-f 739/1529 687/1413 827/1738 820/1723 
-f 819/1719 818/1716 826/1736 839/1769 
-f 839/1768 776/1612 745/1538 826/1735 
-f 829/1744 832/1755 840/1771 831/1752 
-f 829/1744 831/1751 830/1749 806/1687 
-f 837/1764 777/1613 695/1433 841/1774 
-f 820/1722 819/1718 818/1715 808/1690 
-f 851/1797 846/1787 850/1796 849/1793 
-f 845/1785 848/1792 804/1684 799/1673 
-f 841/1775 695/1432 713/1469 797/1667 
-f 774/1609 791/1652 802/1680 729/1508 
-f 843/1779 798/1669 801/1676 
-f 853/1801 791/1652 774/1608 730/1510 
-f 804/1685 803/1681 846/1786 851/1798 
-f 795/1662 799/1672 804/1684 851/1798 
-f 812/1701 863/1831 866/1839 865/1835 
-f 830/1747 802/1679 791/1651 806/1687 
-f 836/1763 792/1653 825/1732 835/1762 
-f 817/1713 836/1763 835/1762 834/1760 
-f 692/1426 756/1566 834/1759 835/1761 
-f 814/1706 872/1858 823/1730 
-f 807/1689 810/1696 733/1516 712/1468 
-f 793/1655 845/1784 830/1748 
-f 805/1686 837/1764 841/1774 842/1776 
-f 852/1800 859/1820 854/1806 855/1809 
-f 861/1826 869/1849 860/1822 859/1819 
-f 814/1706 821/1725 822/1727 872/1857 
-f 828/1742 811/1699 812/1700 870/1852 
-f 851/1797 849/1794 793/1656 795/1661 
-f 844/1782 870/1851 828/1741 873/1861 
-f 802/1679 830/1747 845/1784 843/1778 
-f 814/1706 823/1729 867/1843 815/1709 
-f 756/1566 834/1758 817/1712 698/1439 
-f 872/1856 822/1726 828/1741 873/1861 
-f 807/1689 808/1691 869/1848 810/1695 
-f 844/1782 870/1851 864/1833 871/1855 
-f 807/1689 712/1467 775/1611 808/1690 
-f 873/1860 844/1781 871/1854 867/1842 
-f 775/1610 739/1528 820/1721 808/1690 
-f 854/1805 686/1411 752/1556 855/1809 
-f 752/1555 857/1813 858/1815 855/1808 
-f 814/1706 815/1707 811/1698 821/1724 
-f 857/1814 862/1828 856/1812 858/1817 
-f 744/1537 813/1704 868/1846 699/1440 
-f 858/1816 813/1704 810/1695 809/1694 
-f 867/1841 871/1853 864/1833 865/1835 
-f 857/1813 868/1847 866/1838 862/1827 
-f 815/1708 867/1840 865/1836 868/1846 
-f 866/1837 868/1845 865/1835 
-f 861/1825 809/1693 810/1695 869/1848 
-f 811/1697 815/1707 868/1844 813/1703 
-f 856/1811 863/1830 813/1703 858/1815 
-f 809/1693 861/1825 859/1818 852/1799 
-f 732/1515 805/1686 842/1776 684/1408 
-f 850/1795 847/1788 848/1791 849/1793 
-f 793/1655 845/1783 848/1791 849/1793 
-f 832/1754 853/1802 816/1711 833/1756 
-f 853/1801 860/1821 824/1731 816/1710 
-
-g body
-usemtl brown_light
-v -6.492241 120.132301 47.163853
-v -6.241148 120.132301 47.163853
-v -6.241148 120.132301 46.956116
-v 0.760529 42.060787 48.613876
-v 0.760529 57.953701 48.613876
-v -6.241148 42.060787 48.613876
-v -6.241148 57.953701 48.613876
-v -6.241148 42.060787 48.613876
-v -6.241148 57.953701 48.613876
-v -19.237558 42.060787 48.613876
-v -19.237558 57.953701 48.613876
-v -19.237558 49.835079 48.613876
-v 0.760529 35.033916 48.613876
-v 0.760529 42.060787 48.613876
-v -19.237558 35.033916 48.613876
-v -6.241148 42.060787 48.613876
-v -19.237558 42.060787 48.613876
-v -6.241148 42.060787 48.613876
-v 0.760529 42.060787 48.613876
-v -6.241148 42.060787 20.959789
-v 0.760529 42.060787 20.959789
-v -12.46179 57.953701 53.781174
-v -19.237558 57.953701 53.781174
-v -6.241148 57.953701 48.613876
-v -19.237558 57.953701 48.613876
-v -19.237558 42.060787 48.613876
-v -19.237558 42.060787 20.959791
-v -19.237558 42.060787 48.613876
-v -19.237558 49.835079 48.613876
-v -19.882517 42.060787 48.613876
-v -19.882517 49.835079 48.613876
-v -19.237558 42.060787 48.613876
-v -19.237558 42.060787 20.959791
-v -19.237558 49.835079 48.613876
-v -19.23756 42.060787 10.190531
-v -19.23756 49.835079 10.190531
-v -19.237558 35.033916 53.781174
-v -19.237558 35.033916 48.613876
-v -19.237558 57.953701 53.781174
-v -19.237558 42.060787 48.613876
-v -19.237558 49.835079 48.613876
-v -19.237558 57.953701 48.613876
-v -19.237558 35.033916 53.781174
-v 0.760529 35.033916 53.781174
-v -19.237558 35.033916 48.613876
-v 0.760529 35.033916 48.613876
-v 0.760529 0.000023 48.613876
-v 0.760529 35.033916 48.613876
-v -19.882517 0.000023 48.613876
-v -19.237558 35.033916 48.613876
-v -19.237558 42.060787 48.613876
-v -19.882517 42.060787 48.613876
-v -19.882517 30.008041 48.613876
-v -6.24115 42.060787 10.190529
-v 0.760529 42.060787 10.190529
-v 0.760529 42.060787 20.959789
-v -13.34399 35.887333 20.959789
-v -6.241148 42.060787 20.959789
-v -19.237558 42.060787 20.959791
-v -19.882517 35.887333 20.959791
-v -19.882517 42.060787 20.959791
-v 0.760529 57.953701 53.781174
-v 0.760529 35.033916 53.781174
-v -12.46179 57.953701 53.781174
-v -19.237558 35.033916 53.781174
-v -19.237558 57.953701 53.781174
-v -19.23756 42.060787 10.190531
-v -41.697044 49.835079 48.613876
-v -19.882517 49.835079 48.613876
-v -41.697044 49.835079 10.190531
-v -19.237558 49.835079 48.613876
-v -19.23756 49.835079 10.190531
-v -19.882519 0.000023 -0.351593
-v -19.882517 0.000023 48.613876
-v -19.882519 8.783707 -0.351593
-v -19.882517 30.008041 48.613876
-v -19.882517 30.008041 20.959791
-v 0.760529 0.000023 48.613876
-v -19.882517 0.000023 48.613876
-v 0.760529 0.000023 -0.351593
-v -19.882519 0.000023 -0.351593
-v -41.697044 42.060787 24.267151
-v -41.697044 42.060787 48.613876
-v -41.697044 49.835079 10.190531
-v -41.697044 49.835079 48.613876
-v 0.760529 94.505569 38.865124
-v 0.760529 57.953701 38.865124
-v -6.241148 94.505569 38.865128
-v -6.241148 57.953701 38.865128
-v -6.241148 57.953701 38.865128
-v -6.241148 57.953701 44.6245
-v -6.241148 94.505569 38.865128
-v -6.241148 92.197029 44.6245
-v 0.760529 57.953701 38.865124
-v -6.241148 57.953701 44.6245
-v -6.241148 57.953701 38.865128
-v 1.747257 143.077621 27.487873
-v -76.490204 143.077621 27.487877
-v 1.747257 143.077621 7.386337
-v -76.490204 143.077621 7.386341
-v 1.747257 120.132301 7.386337
-v 1.747257 120.132301 40.347279
-v 1.747257 143.077621 7.386337
-v 1.747257 126.220505 40.347279
-v 1.747257 126.220505 68.89122
-v 1.747257 137.811234 27.487873
-v 1.747257 143.077621 27.487873
-v 1.747257 137.811234 41.964085
-v 1.747257 149.508865 63.319244
-v 1.747257 170.544739 41.964085
-v 1.747257 169.652771 46.234287
-v 1.747257 168.752289 63.319244
-v 1.747257 168.752289 68.89122
-v 1.747257 179.124237 68.89122
-v 1.747257 169.652771 60.113297
-v 1.747257 187.902161 60.113297
-v 1.747257 149.508865 68.89122
-v -72.982086 127.093079 7.386341
-v -72.982086 130.486969 7.386341
-v -76.490204 126.293213 7.386341
-v 1.747257 120.132301 7.386337
-v 1.747257 143.077621 7.386337
-v -6.24115 120.132301 7.386337
-v -6.24115 128.384979 7.386337
-v -11.435379 133.165527 7.386337
-v -76.490204 143.077621 7.386341
-v -11.435379 128.384979 7.386337
-v -60.913021 133.165527 7.386341
-v 1.747257 137.811234 41.964085
-v -16.33053 137.811234 41.964085
-v 1.747257 137.811234 27.487873
-v 1.747257 170.544739 41.964085
-v -12.125738 144.915802 41.964085
-v 1.747257 137.811234 41.964085
-v -16.33053 137.811234 41.964085
-v -16.33053 138.91658 41.964085
-v -61.737495 144.915802 41.964088
-v -76.490204 138.91658 41.964088
-v -61.737495 196.940063 41.964088
-v -76.490204 196.940063 41.964088
-v -76.490204 170.586456 41.964088
-v 6.83416 170.544739 41.964085
-v 6.83416 196.959229 41.964085
-v -12.125738 196.959229 41.964085
-v 1.747257 149.508865 68.89122
-v -4.622913 149.508865 68.89122
-v 1.747257 149.508865 63.319244
-v -6.24115 120.132301 -4.389488
-v -6.24115 120.132301 7.386337
-v -6.24115 128.384979 -4.389488
-v -6.24115 128.384979 7.386337
-v -6.24115 128.384979 7.386337
-v -11.435379 128.384979 7.386337
-v -6.24115 128.384979 -4.389488
-v -11.435379 128.384979 -0.55357
-v -60.913021 128.384979 -0.55357
-v -67.315895 128.384979 3.658707
-v -67.315895 128.384979 -4.389488
-v -11.435379 128.384979 -0.55357
-v -11.435379 128.384979 7.386337
-v -11.435379 133.165527 -0.55357
-v -11.435379 133.165527 7.386337
-v -11.435379 133.165527 7.386337
-v -60.913021 133.165527 7.386341
-v -11.435379 133.165527 -0.55357
-v -60.913021 133.165527 -0.55357
-v 6.83416 170.544739 41.964085
-v 6.83416 170.544739 55.697433
-v 6.83416 196.959229 41.964085
-v 6.83416 192.318024 55.697433
-v 6.83416 196.959229 51.056229
-v -76.490204 170.586456 41.964088
-v -76.490204 196.940063 41.964088
-v -82.253807 170.586456 41.964088
-v -82.253807 196.940063 41.964088
-v -61.737495 196.940063 46.740871
-v -76.490204 196.940063 46.740875
-v -61.737495 196.940063 41.964088
-v -76.490204 196.940063 41.964088
-v -61.737495 144.915802 68.89122
-v -61.737495 149.288986 62.27103
-v -61.737495 144.915802 41.964088
-v -61.737495 196.940063 41.964088
-v -61.737495 181.409943 62.27103
-v -61.737495 196.940063 46.740871
-v -61.737495 149.288986 68.89122
-v -45.470921 144.915802 68.89122
-v -61.737495 144.915802 68.89122
-v -12.125738 144.915802 41.964085
-v -61.737495 144.915802 41.964088
-v 6.83416 196.959229 51.056229
-v -12.125738 196.959229 51.056229
-v 6.83416 196.959229 41.964085
-v -12.125738 196.959229 41.964085
-v -6.24115 103.837631 -4.389488
-v -6.24115 103.837631 7.386337
-v -6.24115 103.837631 -4.389488
-v -6.24115 120.132301 -4.389488
-v -24.225512 103.837631 -4.389488
-v -6.24115 128.384979 -4.389488
-v -67.315895 128.384979 -4.389488
-v -48.081444 103.837631 -4.389488
-v -67.315895 103.837631 -4.389488
-v -67.315895 120.132301 -4.389488
-v -11.435379 128.384979 -0.55357
-v -11.435379 133.165527 -0.55357
-v -60.913021 128.384979 -0.55357
-v -60.913021 133.165527 -0.55357
-v -82.253807 196.940063 46.740875
-v -82.253807 196.940063 41.964088
-v -61.737495 149.288986 68.89122
-v -70.318558 149.288986 68.89122
-v -61.737495 149.288986 62.27103
-v -6.24115 103.837631 7.386337
-v -6.24115 103.837631 10.190529
-v -6.24115 120.132301 7.386337
-v -6.241148 103.837631 34.955193
-v -6.241148 103.837631 47.163853
-v -6.24115 117.915428 13.451937
-v -6.241148 120.132301 47.163853
-v -6.241148 117.915428 46.956116
-v -6.241148 120.132301 46.956116
-v -24.225512 86.237694 -4.389488
-v -48.081444 86.237694 -4.389488
-v -6.24115 72.949203 10.190529
-v -6.241148 94.505569 31.435822
-v -6.24115 103.837631 10.190529
-v -6.241148 94.505569 38.865128
-v -6.241148 100.671875 34.955193
-v -6.241148 103.837631 34.955193
-v -6.241148 57.953701 44.6245
-v -6.241148 57.953701 48.613876
-v -6.241148 92.197029 44.6245
-v -6.241148 100.671875 48.613876
-v -24.22551 73.096008 8.228834
-v -24.225512 86.237694 -4.389488
-v -48.081444 73.096008 8.228834
-v -48.081444 79.666847 1.919674
-v -48.081444 86.237694 -4.389488
-v -24.225512 86.237694 -4.389488
-v -24.22551 86.237694 10.190531
-v -24.225512 103.837631 -4.389488
-v -24.22551 98.332855 8.614803
-v -24.22551 98.332855 10.190531
-v 0.760529 57.953701 48.613876
-v -6.241148 57.953701 48.613876
-v 0.760529 57.953701 38.865124
-v -6.241148 57.953701 44.6245
-v 0.760529 94.505569 38.865124
-v -6.241148 94.505569 38.865128
-v 0.760529 94.505569 31.435822
-v -6.241148 94.505569 31.435822
-v 0.760529 94.505569 31.435822
-v -6.241148 94.505569 31.435822
-v 0.760529 72.949203 10.190529
-v -6.24115 72.949203 10.190529
-v -6.24115 72.949203 10.190529
-v -6.24115 103.837631 10.190529
-v -19.23756 72.949203 10.190531
-v -19.23756 99.859589 10.190531
-v -24.22551 73.096008 8.228834
-v -24.22551 73.096008 10.190531
-v -24.225512 86.237694 -4.389488
-v -24.22551 86.237694 10.190531
-v -19.23756 99.859589 10.190531
-v -24.22551 73.096008 10.190531
-v -19.23756 72.949203 10.190531
-v -24.638441 72.949203 10.190531
-v -24.22551 86.237694 10.190531
-v -24.22551 98.332855 10.190531
-v 0.760529 57.953701 53.781174
-v -12.46179 57.953701 53.781174
-v 0.760529 42.060787 10.190529
-v 0.760529 42.060787 20.959789
-v 0.760529 72.949203 10.190529
-v 0.760529 42.060787 48.613876
-v 0.760529 57.953701 38.865124
-v 0.760529 94.505569 38.865124
-v 0.760529 94.505569 31.435822
-v 0.760529 57.953701 48.613876
-v 0.760529 42.060787 10.190529
-v 0.760529 72.949203 10.190529
-v -6.24115 42.060787 10.190529
-v -19.23756 42.060787 10.190531
-v -19.23756 49.835079 10.190531
-v -19.23756 58.985977 10.190531
-v -19.23756 67.071968 10.190531
-v -19.23756 67.071968 10.190531
-v -19.23756 72.949203 10.190531
-v -41.697044 67.071968 10.190531
-v -26.941288 72.130524 10.190531
-v -24.638441 72.949203 10.190531
-v -41.697044 72.130524 10.190531
-v 0.760529 35.033916 48.613876
-v 0.760529 35.033916 53.781174
-v 0.760529 42.060787 48.613876
-v 0.760529 57.953701 53.781174
-v 0.760529 57.953701 48.613876
-v 0.760529 0.000023 48.613876
-v 0.760529 0.000023 -0.351593
-v 0.760529 35.033916 48.613876
-v 0.760529 8.783707 -0.351593
-v 0.760529 30.008041 20.959789
-v 0.760529 42.060787 20.959789
-v 0.760529 42.060787 48.613876
-v 0.760529 42.060787 20.959789
-v 0.760529 30.008041 20.959789
-v -13.34399 35.887333 20.959789
-v -19.882517 30.008041 20.959791
-v -19.882517 35.887333 20.959791
-v -19.882517 30.008041 20.959791
-v 0.760529 30.008041 20.959789
-v -19.882519 8.783707 -0.351593
-v 0.760529 8.783707 -0.351593
-v 0.760529 8.783707 -0.351593
-v 0.760529 0.000023 -0.351593
-v -19.882519 8.783707 -0.351593
-v -19.882519 0.000023 -0.351593
-v 0.760529 42.060787 20.959789
-v 0.760529 35.033916 48.613876
-v 0.760529 42.060787 48.613876
-v 0.760529 30.008041 20.959789
-v 0.760529 8.783707 -0.351593
-v 0.760529 0.000023 -0.351593
-v 0.760529 0.000023 48.613876
-v -41.697044 49.835079 10.190531
-v -41.697044 58.985977 10.190531
-v -41.697044 42.060787 10.190531
-v -41.697044 49.835079 10.190531
-v -64.156532 42.060787 10.190533
-v -41.697044 58.985977 10.190531
-v -41.697044 67.071968 10.190531
-v -41.697044 72.130524 10.190531
-v -50.92408 72.130524 10.190531
-v -53.083733 72.949203 10.190531
-v -64.156532 72.949203 10.190533
-v -19.882517 30.008041 20.959791
-v -13.34399 35.887333 20.959789
-v -19.882517 35.887333 20.959791
-v 0.760529 30.008041 20.959789
-v 0.760529 42.060787 20.959789
-v 0.760529 30.008041 20.959789
-v -19.882519 8.783707 -0.351593
-v 0.760529 8.783707 -0.351593
-v -19.882517 30.008041 20.959791
-v 0.760529 0.000023 -0.351593
-v -19.882519 8.783707 -0.351593
-v -19.882519 0.000023 -0.351593
-v 0.760529 8.783707 -0.351593
-v -41.697044 58.985977 26.176956
-v -41.697044 58.985977 10.190531
-v -41.037094 58.985977 26.176956
-v -19.23756 58.985977 10.190531
-v -64.156532 72.949203 10.190533
-v -53.083733 72.949203 10.190531
-v -64.156532 77.146683 10.190533
-v -41.697044 58.985977 10.190531
-v -41.697044 58.985977 26.176956
-v -41.697044 67.071968 10.190531
-v -41.697044 42.060787 10.190531
-v -41.697044 42.060787 24.267151
-v -41.697044 49.835079 10.190531
-v -76.490204 120.132301 78.941261
-v -76.490204 120.132301 68.89122
-v -76.490204 126.220505 78.941261
-v -76.490204 126.220505 68.89122
-v -76.490204 120.132301 68.89122
-v -76.490204 120.132301 40.347282
-v -76.490204 126.220505 68.89122
-v -76.490204 126.220505 40.347282
-v -6.241146 126.220505 68.89122
-v -6.241146 120.132301 68.89122
-v -76.490204 126.220505 68.89122
-v -76.490204 120.132301 68.89122
-v -76.490204 120.132301 40.347282
-v -76.490204 120.132301 7.386341
-v -76.490204 126.220505 40.347282
-v -76.490204 126.293213 7.386341
-v -76.490204 149.288986 62.27103
-v -76.490204 170.586456 46.740875
-v -76.490204 181.409943 62.27103
-v -76.490204 196.940063 46.740875
-v -76.490204 126.220505 68.89122
-v -76.490204 149.288986 68.89122
-v -76.490204 137.811234 41.964088
-v -76.490204 138.91658 41.964088
-v -76.490204 170.586456 41.964088
-v -76.490204 143.077621 7.386341
-v -76.490204 137.811234 27.487877
-v -76.490204 143.077621 27.487877
-v -6.241146 126.220505 68.89122
-v -76.490204 126.220505 68.89122
-v -6.241148 126.220505 40.347279
-v -76.490204 126.220505 40.347282
-v -6.241148 126.220505 40.347279
-v -6.241148 120.132301 40.347279
-v -76.490204 126.220505 40.347282
-v -67.315895 120.132301 40.347282
-v -76.490204 120.132301 40.347282
-v -6.241146 120.132301 68.89122
-v -67.315895 120.132301 47.163853
-v -76.490204 120.132301 68.89122
-v -76.490204 120.132301 40.347282
-v -67.315895 120.132301 46.95612
-v -67.315895 120.132301 40.347282
-v -6.241148 120.132301 47.163853
-v -6.492241 120.132301 47.163853
-v -6.241148 120.132301 40.347279
-v -6.241148 120.132301 46.956116
-v -6.241148 126.220505 40.347279
-v -6.241148 120.132301 47.163853
-v -6.241146 120.132301 68.89122
-v -6.241146 126.220505 68.89122
-v -61.737495 149.288986 68.89122
-v -61.737495 144.915802 68.89122
-v -70.318558 149.288986 68.89122
-v 1.747257 149.508865 68.89122
-v 1.747257 126.220505 68.89122
-v -4.622913 149.508865 68.89122
-v -12.125736 149.508865 68.89122
-v -12.125736 144.915802 68.89122
-v -45.470921 144.915802 68.89122
-v -76.490204 149.288986 68.89122
-v -76.490204 120.132301 7.386341
-v -67.315895 120.132301 7.386341
-v -70.318558 149.288986 68.89122
-v -76.490204 149.288986 68.89122
-v -61.737495 149.288986 62.27103
-v -76.490204 149.288986 62.27103
-v -61.737495 181.409943 62.27103
-v -61.737495 149.288986 62.27103
-v -76.490204 181.409943 62.27103
-v -76.490204 149.288986 62.27103
-v -61.737495 196.940063 46.740871
-v -61.737495 181.409943 62.27103
-v -76.490204 196.940063 46.740875
-v -76.490204 181.409943 62.27103
-v -76.490204 196.940063 46.740875
-v -76.490204 170.586456 46.740875
-v -82.253807 196.940063 46.740875
-v -82.253807 170.586456 46.740875
-v -76.490204 170.586456 46.740875
-v -76.490204 170.586456 41.964088
-v -76.490204 196.940063 46.740875
-v -76.490204 196.940063 41.964088
-v -82.253807 170.586456 46.740875
-v -76.490204 170.586456 46.740875
-v -82.253807 170.586456 41.964088
-v -76.490204 170.586456 41.964088
-v -16.33053 137.811234 41.964085
-v -16.33053 138.91658 41.964085
-v -76.490204 137.811234 41.964088
-v -76.490204 138.91658 41.964088
-v -16.33053 137.811234 41.964085
-v -76.490204 137.811234 41.964088
-v 1.747257 137.811234 27.487873
-v -76.490204 137.811234 27.487877
-v 1.747257 143.077621 27.487873
-v 1.747257 137.811234 27.487873
-v -76.490204 143.077621 27.487877
-v -76.490204 137.811234 27.487877
-v -67.315895 120.132301 7.386341
-v -67.315895 128.384979 7.386341
-v -76.490204 120.132301 7.386341
-v -72.982086 127.093079 7.386341
-v -76.490204 126.293213 7.386341
-v -60.913021 128.384979 7.386341
-v -60.913021 133.165527 7.386341
-v -72.982086 130.486969 7.386341
-v 1.747257 126.220505 68.89122
-v 1.747257 126.220505 40.347279
-v -6.241148 120.132301 46.956116
-v -67.315895 120.132301 46.95612
-v -6.241148 120.132301 40.347279
-v -67.315895 120.132301 40.347282
-v -6.24115 120.132301 7.386337
-v -67.315895 120.132301 7.386341
-v 1.747257 126.220505 40.347279
-v 1.747257 120.132301 40.347279
-v -67.315895 103.837631 47.163853
-v -67.315895 103.837631 10.190533
-v -67.315895 120.132301 47.163853
-v -67.315895 103.837631 7.386341
-v -67.315895 120.132301 7.386341
-v -67.315895 120.132301 46.95612
-v -67.315895 120.132301 40.347282
-v -6.492241 120.132301 47.163853
-v -67.315895 120.132301 47.163853
-v -6.241148 120.132301 47.163853
-v -6.241148 103.837631 47.163853
-v -6.492241 120.132301 47.163853
-v -67.315895 103.837631 47.163853
-v -67.315895 120.132301 47.163853
-v -6.24115 117.915428 13.451937
-v -6.241148 117.915428 46.956116
-v -6.24115 120.132301 7.386337
-v -6.241148 120.132301 46.956116
-v -6.241148 120.132301 40.347279
-v -4.622913 149.508865 68.89122
-v -12.125736 149.508865 68.89122
-v 1.747257 149.508865 63.319244
-v -12.125736 149.508865 63.319244
-v -12.125736 168.752289 68.89122
-v -12.125736 168.752289 63.319244
-v -12.125736 179.124237 68.89122
-v -12.125736 144.915802 68.89122
-v -12.125738 144.915802 41.964085
-v -12.125736 149.508865 68.89122
-v -12.125736 149.508865 63.319244
-v -12.125738 196.959229 41.964085
-v -12.125738 196.959229 51.056229
-v -12.125736 144.915802 68.89122
-v -45.470921 144.915802 68.89122
-v -12.125738 144.915802 41.964085
-v -82.253807 170.586456 46.740875
-v -82.253807 170.586456 41.964088
-v -82.253807 196.940063 46.740875
-v -82.253807 196.940063 41.964088
-v -60.913021 128.384979 7.386341
-v -60.913021 128.384979 -0.55357
-v -60.913021 133.165527 7.386341
-v -60.913021 133.165527 -0.55357
-v -11.435379 128.384979 7.386337
-v -11.435379 133.165527 7.386337
-v -60.913021 128.384979 7.386341
-v -60.913021 133.165527 7.386341
-v -60.913021 128.384979 7.386341
-v -67.315895 128.384979 7.386341
-v -60.913021 128.384979 -0.55357
-v -67.315895 128.384979 3.658707
-v -67.315895 120.132301 -4.389488
-v -67.315895 128.384979 7.386341
-v -67.315895 128.384979 -4.389488
-v -67.315895 128.384979 3.658707
-v 1.747257 120.132301 40.347279
-v 1.747257 120.132301 7.386337
-v -6.24115 103.837631 7.386337
-v -6.24115 120.132301 7.386337
-v -24.22551 103.837631 7.386339
-v -67.315895 120.132301 7.386341
-v -48.081444 103.837631 7.386339
-v -67.315895 103.837631 7.386341
-v -67.315895 103.837631 -4.389488
-v -67.315895 103.837631 10.190533
-v -64.156532 103.837631 10.190533
-v -67.315895 103.837631 7.386341
-v -48.081444 103.837631 10.190531
-v -48.081444 103.837631 7.386339
-v -67.315895 103.837631 47.163853
-v -6.241148 103.837631 47.163853
-v -67.315895 103.837631 10.190533
-v -6.241148 103.837631 34.955193
-v -48.081444 103.837631 14.202915
-v -48.081444 103.837631 10.190531
-v -64.156532 103.837631 10.190533
-v -6.24115 103.837631 10.190529
-v -24.22551 103.837631 14.202915
-v -24.22551 103.837631 10.190531
-v -19.23756 103.837631 10.190531
-v 1.747257 168.752289 63.319244
-v 1.747257 149.508865 63.319244
-v -12.125736 168.752289 63.319244
-v -12.125736 149.508865 63.319244
-v -12.125736 168.752289 68.89122
-v 1.747257 168.752289 68.89122
-v -12.125736 168.752289 63.319244
-v 1.747257 168.752289 63.319244
-v 1.747257 179.124237 68.89122
-v 1.747257 168.752289 68.89122
-v -12.125736 179.124237 68.89122
-v -12.125736 168.752289 68.89122
-v 6.83416 192.318024 55.697433
-v 1.747257 192.318024 55.697433
-v 6.83416 196.959229 51.056229
-v 1.747257 179.124237 68.89122
-v -12.125736 179.124237 68.89122
-v 1.747257 187.902161 60.113297
-v -12.125738 196.959229 51.056229
-v -11.435379 128.384979 7.386337
-v -11.435379 128.384979 -0.55357
-v -24.22551 103.837631 7.386339
-v -6.24115 103.837631 7.386337
-v -24.225512 103.837631 -4.389488
-v -6.24115 103.837631 -4.389488
-v -24.22551 103.837631 10.190531
-v -19.23756 103.837631 10.190531
-v -24.22551 103.837631 7.386339
-v -6.24115 103.837631 10.190529
-v -6.24115 103.837631 7.386337
-v -48.081444 103.837631 10.190531
-v -41.697044 103.837631 10.190531
-v -48.081444 103.837631 7.386339
-v -24.22551 103.837631 10.190531
-v -24.22551 103.837631 7.386339
-v -48.081444 103.837631 7.386339
-v -48.081444 103.837631 1.919674
-v -48.081444 103.837631 -4.389488
-v -67.315895 103.837631 7.386341
-v -67.315895 103.837631 -4.389488
-v -48.081444 86.237694 14.202915
-v -48.081444 86.237694 1.919674
-v -48.081444 103.837631 14.202915
-v -48.081444 103.837631 1.919674
-v -48.081444 103.837631 10.190531
-v -48.081444 103.837631 7.386339
-v -41.697044 72.949203 10.190531
-v -41.697044 103.837631 10.190531
-v -53.083733 72.949203 10.190531
-v -48.081444 103.837631 10.190531
-v -64.156532 103.837631 10.190533
-v -64.156532 77.146683 10.190533
-v -48.081444 103.837631 14.202915
-v -24.22551 103.837631 14.202915
-v -48.081444 103.837631 10.190531
-v -24.22551 103.837631 10.190531
-v -41.697044 103.837631 10.190531
-v -24.22551 103.837631 14.202915
-v -24.22551 86.237694 14.202915
-v -48.081444 103.837631 14.202915
-v -48.081444 86.237694 14.202915
-v -24.22551 98.332855 8.614803
-v -24.22551 98.332855 10.190531
-v -24.225512 103.837631 -4.389488
-v -24.22551 86.237694 10.190531
-v -24.22551 86.237694 14.202915
-v -24.22551 103.837631 14.202915
-v -24.22551 103.837631 7.386339
-v -24.22551 103.837631 10.190531
-v -24.22551 86.237694 10.190531
-v -24.22551 98.332855 10.190531
-v -24.22551 73.096008 10.190531
-v -19.23756 99.859589 10.190531
-v -19.23756 103.837631 10.190531
-v -24.22551 103.837631 10.190531
-v -24.638441 72.949203 10.190531
-v -41.697044 103.837631 10.190531
-v -41.697044 72.949203 10.190531
-v -19.23756 99.859589 10.190531
-v -6.24115 103.837631 10.190529
-v -19.23756 103.837631 10.190531
-v 1.747257 169.652771 46.234287
-v 1.747257 169.652771 60.113297
-v 1.747257 170.544739 41.964085
-v 1.747257 170.544739 55.697433
-v 1.747257 187.902161 60.113297
-v 1.747257 192.318024 55.697433
-v 6.83416 192.318024 55.697433
-v 6.83416 170.544739 55.697433
-v 1.747257 192.318024 55.697433
-v 1.747257 170.544739 55.697433
-v -48.081444 86.237694 1.919674
-v -48.081444 86.237694 -4.389488
-v -48.081444 103.837631 1.919674
-v -48.081444 103.837631 -4.389488
-v -24.22551 86.237694 14.202915
-v -48.081444 86.237694 14.202915
-v -24.22551 86.237694 10.190531
-v -48.081444 86.237694 1.919674
-v -24.225512 86.237694 -4.389488
-v -48.081444 86.237694 -4.389488
-v -48.081444 73.096008 14.202915
-v -48.081444 73.096008 8.228834
-v -48.081444 86.237694 14.202915
-v -48.081444 79.666847 1.919674
-v -48.081444 86.237694 1.919674
-v -41.697044 72.130524 10.190531
-v -41.697044 72.949203 10.190531
-v -50.92408 72.130524 10.190531
-v -53.083733 72.949203 10.190531
-v -24.22551 73.096008 14.202915
-v -48.081444 73.096008 14.202915
-v -24.22551 73.096008 10.190531
-v -24.22551 73.096008 14.202915
-v -24.22551 86.237694 10.190531
-v -24.22551 86.237694 14.202915
-v -24.638441 72.949203 10.190531
-v -41.697044 72.949203 10.190531
-v -26.941288 72.130524 10.190531
-v -41.697044 72.130524 10.190531
-v 1.747257 170.544739 55.697433
-v 6.83416 170.544739 55.697433
-v 1.747257 170.544739 41.964085
-v 6.83416 170.544739 41.964085
-v -48.081444 86.237694 1.919674
-v -48.081444 79.666847 1.919674
-v -48.081444 86.237694 -4.389488
-v -48.081444 73.096008 14.202915
-v -24.22551 73.096008 14.202915
-v -48.081444 73.096008 8.228834
-v -24.22551 73.096008 10.190531
-v -24.22551 73.096008 8.228834
-
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0.464092 0 0
-vt 1 0.338577 0
-vt 0.464092 0.089836 0
-vt 0 0.089836 0
-vt 0.673172 0.260867 0
-vt 0.673172 0.338577 0
-vt 0.437805 0.260867 0
-vt 0.090594 0.433475 0
-vt 0.437805 0.743877 0
-vt 0.368376 0.730715 0
-vt 0.090594 0.717428 0
-vt 0 0.717428 0
-vt 0 0.870475 0
-vt 0.142719 0.730715 0
-vt 0.142719 1 0
-vt 0 0.433475 0
-vt 0.95516 0.303363 0
-vt 0.95516 0.451276 0
-vt 1 0.268504 0
-vt 0 0 0
-vt 0 1 0
-vt 0.102105 0 0
-vt 0.102105 0.359666 0
-vt 0.168495 0.568011 0
-vt 1 1 0
-vt 0.168495 0.359666 0
-vt 0.800898 0.568011 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0.061049 0.553417 0
-vt 0.227543 0.120115 0
-vt 0.061049 0 0
-vt 0.278006 0 0
-vt 0.278006 0.018688 0
-vt 0.822948 0.120115 0
-vt 1 0.018688 0
-vt 0.822948 0.999676 0
-vt 1 0.999676 0
-vt 1 0.554123 0
-vt 0 0.553417 0
-vt 0 1 0
-vt 0.227543 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0 0.085047 0
-vt 1 0 0
-vt 0.674255 0.085047 0
-vt 0.674255 0.895163 0
-vt 0.316549 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0.824293 0
-vt 0.337951 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0.245856 0.084061 0
-vt 1 0 0
-vt 1 1 0
-vt 0.245856 0.701483 0
-vt 0.822603 1 0
-vt 0 0.084061 0
-vt 0 0.672123 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 0 0
-vt 0 0.663807 0
-vt 0 1 0
-vt 0.294465 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 0.685067 0 0
-vt 1 0 0
-vt 1 0.663807 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0.929503 0 0
-vt 1 1 0
-vt 0.306924 0 0
-vt 0 0 0
-vt 0.847512 0.86395 0
-vt 0 1 0
-vt 0.005222 0.86395 0
-vt 0.005222 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 0.326814 0
-vt 0.447073 0.796616 0
-vt 1 1 0
-vt 0.25372 0.796616 0
-vt 0.355479 0.931005 0
-vt 0.355479 1 0
-vt 0.103827 0 0
-vt 0 0 0
-vt 0.103827 0.746303 0
-vt 0 0.931005 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 0.5 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0.108075 0.687227 0
-vt 0 0.687227 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0.529534 0
-vt 0 1 0
-vt 1 0 0
-vt 0.409219 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 0.871213 0
-vt 0.134547 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0.923544 0.005455 0
-vt 0 0 0
-vt 1 0 0
-vt 0.923544 0.493806 0
-vt 0.923544 0.943266 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0.719721 0 0
-vt 1 0.58897 0
-vt 0 0 0
-vt 0.25372 0.303041 0
-vt 0.25372 1 0
-vt 0.447073 1 0
-vt 0 0.303041 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0.25169 0
-vt 0 1 0
-vt 1 0.547946 0
-vt 1 0.809727 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0.343006 0.860704 0
-vt 0.240472 1 0
-vt 1 0.860704 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0.306586 0
-vt 0 1 0
-vt 1 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0.435233 1 0
-vt 1 0.832935 0
-vt 1 1 0
-vt 0.435233 0.713444 0
-vt 0 0.208833 0
-vt 0 0 0
-vt 1 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 0.25169 0
-vt 1 0 0
-vt 0 0.547946 0
-vt 0 0.809727 0
-vt 0 0.973496 0
-vt 0.41083 0.973496 0
-vt 0.506988 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0.316743 0.487797 0
-vt 0 0.487797 0
-vt 1 0 0
-vt 1 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0.970616 0
-vt 1 0 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0 1 0
-
-f 876/1864 875/1863 874/1862 
-f 879/1867 878/1866 877/1865 
-f 878/1866 879/1867 880/1868 
-f 883/1871 882/1870 881/1869 
-f 882/1870 883/1871 884/1872 
-f 884/1872 883/1871 885/1873 
-f 888/1876 887/1875 886/1874 
-f 887/1875 888/1876 889/1877 
-f 889/1877 888/1876 890/1878 
-f 893/1881 892/1880 891/1879 
-f 892/1880 893/1881 894/1882 
-f 897/1885 896/1884 895/1883 
-f 896/1884 897/1885 898/1886 
-f 900/1888 891/1879 899/1887 
-f 891/1879 900/1888 893/1881 
-f 903/1891 902/1890 901/1889 
-f 902/1890 903/1891 904/1892 
-f 907/1895 906/1894 905/1893 
-f 906/1894 907/1895 908/1896 
-f 908/1896 907/1895 909/1897 
-f 912/1900 911/1899 910/1898 
-f 911/1899 912/1900 913/1901 
-f 913/1901 912/1900 914/1902 
-f 914/1902 912/1900 915/1903 
-f 918/1906 917/1905 916/1904 
-f 917/1905 918/1906 919/1907 
-f 922/1910 921/1909 920/1908 
-f 921/1909 922/1910 923/1911 
-f 923/1911 922/1910 924/1912 
-f 924/1912 922/1910 925/1913 
-f 925/1913 922/1910 926/1914 
-f 927/1915 894/1882 893/1881 
-f 894/1882 927/1915 928/1916 
-f 931/1919 930/1918 929/1917 
-f 930/1918 931/1919 932/1920 
-f 930/1918 932/1920 933/1921 
-f 933/1921 932/1920 934/1922 
-f 937/1925 936/1924 935/1923 
-f 936/1924 937/1925 938/1926 
-f 938/1926 937/1925 939/1927 
-f 940/1928 893/1881 900/1888 
-f 893/1881 940/1928 927/1915 
-f 943/1931 942/1930 941/1929 
-f 942/1930 945/1933 944/1932 
-f 945/1933 942/1930 943/1931 
-f 948/1936 947/1935 946/1934 
-f 947/1935 948/1936 949/1937 
-f 949/1937 948/1936 950/1938 
-f 953/1941 952/1940 951/1939 
-f 952/1940 953/1941 954/1942 
-f 957/1945 956/1944 955/1943 
-f 956/1944 957/1945 958/1946 
-f 961/1949 960/1948 959/1947 
-f 960/1948 961/1949 962/1950 
-f 965/1953 964/1952 963/1951 
-f 964/1952 965/1953 966/1954 
-f 969/1957 968/1956 967/1955 
-f 972/1960 971/1959 970/1958 
-f 971/1959 972/1960 973/1961 
-f 976/1964 975/1963 974/1962 
-f 975/1963 976/1964 977/1965 
-f 977/1965 976/1964 978/1966 
-f 978/1966 976/1964 979/1967 
-f 979/1967 976/1964 980/1968 
-f 983/1971 982/1970 981/1969 
-f 982/1970 983/1971 984/1972 
-f 982/1970 984/1972 985/1973 
-f 985/1973 984/1972 986/1974 
-f 986/1974 988/1976 987/1975 
-f 988/1976 986/1974 984/1972 
-f 987/1975 988/1976 989/1977 
-f 978/1966 981/1969 990/1978 
-f 981/1969 978/1966 979/1967 
-f 990/1978 981/1969 982/1970 
-f 993/1981 992/1980 991/1979 
-f 996/1984 995/1983 994/1982 
-f 995/1983 996/1984 997/1985 
-f 995/1983 997/1985 998/1986 
-f 995/1983 998/1986 999/1987 
-f 998/1986 997/1985 1000/1988 
-f 999/1987 998/1986 1001/1989 
-f 999/1987 1001/1989 992/1980 
-f 999/1987 992/1980 993/1981 
-f 1004/1992 1003/1991 1002/1990 
-f 1007/1995 1006/1994 1005/1993 
-f 1006/1994 1007/1995 1008/1996 
-f 1006/1994 1008/1996 1009/1997 
-f 1006/1994 1009/1997 1010/1998 
-f 1010/1998 1009/1997 1011/1999 
-f 1010/1998 1011/1999 1012/2000 
-f 1012/2000 1011/1999 1013/2001 
-f 1013/2001 1011/1999 1014/2002 
-f 1005/1993 1016/2004 1015/2003 
-f 1016/2004 1005/1993 1017/2005 
-f 1017/2005 1005/1993 1006/1994 
-f 1020/2008 1019/2007 1018/2006 
-f 1023/2013 1022/2012 1021/2010 
-f 1022/2012 1023/2013 1024/2014 
-f 1027/2017 1026/2016 1025/2015 
-f 1026/2016 1027/2017 1028/2018 
-f 1028/2018 1027/2017 1029/2019 
-f 1029/2019 1031/2021 1030/2020 
-f 1031/2021 1029/2019 1027/2017 
-f 1034/2024 1033/2023 1032/2022 
-f 1033/2023 1034/2024 1035/2025 
-f 1038/2028 1037/2027 1036/2026 
-f 1037/2027 1038/2028 1039/2029 
-f 1042/2032 1041/2031 1040/2030 
-f 1041/2031 1042/2032 1043/2033 
-f 1043/2033 1042/2032 1044/2034 
-f 1047/2037 1046/2036 1045/2035 
-f 1046/2036 1047/2037 1048/2038 
-f 1051/2042 1050/2041 1049/2039 
-f 1050/2041 1051/2042 1052/2044 
-f 1055/2047 1054/2046 1053/2045 
-f 1054/2046 1055/2047 1056/2048 
-f 1054/2046 1056/2048 1057/2049 
-f 1057/2049 1056/2048 1058/2050 
-f 1059/2051 1053/2045 1054/2046 
-f 1062/2054 1061/2053 1060/2052 
-f 1061/2053 1062/2054 1063/2055 
-f 1066/2058 1065/2057 1064/2056 
-f 1065/2057 1066/2058 1067/2059 
-f 1021/2009 1069/2061 1068/2060 
-f 1069/2061 1021/2009 1022/2011 
-f 1072/2065 1071/2063 1070/2062 
-f 1071/2063 1072/2065 1073/2066 
-f 1073/2066 1072/2065 1074/2067 
-f 1074/2067 1072/2065 1075/2069 
-f 1074/2067 1075/2069 1076/2070 
-f 1074/2067 1076/2070 1077/2071 
-f 1080/2074 1079/2073 1078/2072 
-f 1079/2073 1080/2074 1081/2075 
-f 1050/2040 1083/2077 1082/2076 
-f 1083/2077 1050/2040 1052/2043 
-f 1086/2080 1085/2079 1084/2078 
-f 1089/2083 1088/2082 1087/2081 
-f 1088/2082 1089/2083 1090/2084 
-f 1090/2084 1089/2083 1091/2085 
-f 1091/2085 1089/2083 1092/2086 
-f 1091/2085 1094/2088 1093/2087 
-f 1094/2088 1091/2085 1092/2086 
-f 1093/2087 1094/2088 1095/2089 
-f 1097/2091 1072/2064 1096/2090 
-f 1072/2064 1097/2091 1075/2068 
-f 1100/2094 1099/2093 1098/2092 
-f 1099/2093 1100/2094 1101/2095 
-f 1101/2095 1100/2094 1102/2096 
-f 1102/2096 1100/2094 1103/2097 
-f 1106/2100 1105/2099 1104/2098 
-f 1105/2099 1106/2100 1107/2101 
-f 1107/2101 1106/2100 1101/2095 
-f 1107/2101 1101/2095 1102/2096 
-f 1110/2104 1109/2103 1108/2102 
-f 1109/2103 1110/2104 1111/2105 
-f 1109/2103 1111/2105 1112/2106 
-f 1115/2109 1114/2108 1113/2107 
-f 1114/2108 1115/2109 1116/2110 
-f 1117/2111 1114/2108 1116/2110 
-f 1120/2116 1119/2115 1118/2113 
-f 1119/2115 1120/2116 1121/2117 
-f 1124/2120 1123/2119 1122/2118 
-f 1123/2119 1124/2120 1125/2121 
-f 1128/2124 1127/2123 1126/2122 
-f 1127/2123 1128/2124 1129/2125 
-f 1132/2132 1131/2129 1130/2128 
-f 1131/2129 1132/2132 1133/2133 
-f 1136/2136 1135/2135 1134/2134 
-f 1135/2135 1136/2136 1137/2137 
-f 1140/2140 1139/2139 1138/2138 
-f 1139/2139 1140/2140 1141/2141 
-f 1138/2138 1139/2139 1142/2142 
-f 1143/2143 1138/2138 1142/2142 
-f 1118/2112 1145/2145 1144/2144 
-f 1145/2145 1118/2112 1119/2114 
-f 1148/2148 1147/2147 1146/2146 
-f 1147/2147 1148/2148 1149/2149 
-f 1149/2149 1148/2148 1150/2150 
-f 1150/2150 1148/2148 1151/2151 
-f 1151/2151 1148/2148 1152/2152 
-f 1153/2153 1149/2149 1150/2150 
-f 1156/2157 1155/2155 1154/2154 
-f 1155/2155 1156/2157 1130/2127 
-f 1157/2158 1130/2126 1156/2156 
-f 1130/2126 1157/2158 1132/2131 
-f 1132/2131 1157/2158 1158/2160 
-f 1132/2131 1158/2160 1159/2162 
-f 1132/2131 1159/2162 1160/2163 
-f 1163/2166 1162/2165 1161/2164 
-f 1132/2130 1163/2166 1164/2167 
-f 1132/2130 1164/2167 1165/2168 
-f 1164/2167 1163/2166 1166/2169 
-f 1169/2172 1168/2171 1167/2170 
-f 1168/2171 1169/2172 1170/2173 
-f 1170/2173 1169/2172 1171/2174 
-f 1174/2177 1173/2176 1172/2175 
-f 1173/2176 1174/2177 1175/2178 
-f 1175/2178 1174/2177 1176/2179 
-f 1176/2179 1174/2177 1177/2180 
-f 1177/2180 1174/2177 1178/2181 
-f 1181/2184 1180/2183 1179/2182 
-f 1180/2183 1181/2184 1182/2185 
-f 1182/2185 1181/2184 1183/2186 
-f 1186/2189 1185/2188 1184/2187 
-f 1185/2188 1186/2189 1187/2190 
-f 1190/2193 1189/2192 1188/2191 
-f 1189/2192 1190/2193 1191/2194 
-f 1194/2197 1193/2196 1192/2195 
-f 1192/2195 1193/2196 1195/2198 
-f 1195/2198 1193/2196 1196/2199 
-f 1196/2199 1193/2196 1197/2200 
-f 1198/2201 1197/2200 1193/2196 
-f 1199/2202 1159/2161 1158/2159 
-f 1159/2161 1199/2202 1200/2203 
-f 1203/2206 1202/2205 1201/2204 
-f 1202/2205 1203/2206 1204/2207 
-f 1204/2207 1203/2206 1205/2208 
-f 1205/2208 1203/2206 1206/2209 
-f 1206/2209 1203/2206 1207/2210 
-f 1207/2210 1203/2206 1208/2211 
-f 1208/2211 1203/2206 1209/2212 
-f 1212/2215 1211/2214 1210/2213 
-f 1210/2213 1211/2214 1213/2216 
-f 1214/2217 1213/2216 1211/2214 
-f 1217/2220 1216/2219 1215/2218 
-f 1218/2221 1215/2218 1216/2219 
-f 1221/2224 1220/2223 1219/2222 
-f 1222/2225 1219/2222 1220/2223 
-f 1225/2228 1224/2227 1223/2226 
-f 1224/2227 1225/2228 1226/2229 
-f 1229/2232 1228/2231 1227/2230 
-f 1232/2235 1231/2234 1230/2233 
-f 1235/2238 1234/2237 1233/2236 
-f 1238/2241 1237/2240 1236/2239 
-f 1237/2240 1238/2241 1239/2242 
-f 1242/2245 1241/2244 1240/2243 
-f 1241/2244 1242/2245 1243/2246 
-f 1246/2249 1245/2248 1244/2247 
-f 1245/2248 1246/2249 1247/2250 
-f 1250/2253 1249/2252 1248/2251 
-f 1249/2252 1250/2253 1251/2254 
-f 1254/2257 1253/2256 1252/2255 
-f 1253/2256 1254/2257 1255/2258 
-f 1257/2260 1250/2253 1256/2259 
-f 1250/2253 1257/2260 1258/2261 
-f 1250/2253 1258/2261 1251/2254 
-f 1258/2261 1257/2260 1259/2262 
-f 1259/2262 1257/2260 1252/2255 
-f 1259/2262 1252/2255 1260/2263 
-f 1260/2263 1252/2255 1253/2256 
-f 1251/2254 1262/2265 1261/2264 
-f 1262/2265 1251/2254 1258/2261 
-f 1261/2264 1262/2265 1263/2266 
-f 1266/2269 1265/2268 1264/2267 
-f 1265/2268 1266/2269 1267/2270 
-f 1270/2273 1269/2272 1268/2271 
-f 1269/2272 1270/2273 1271/2274 
-f 1271/2274 1270/2273 1272/2275 
-f 1275/2278 1274/2277 1273/2276 
-f 1274/2277 1275/2278 1276/2279 
-f 1274/2277 1276/2279 1277/2280 
-f 1277/2280 1276/2279 1278/2281 
-f 1274/2277 1279/2282 1273/2276 
-f 1279/2282 1274/2277 1280/2283 
-f 1283/2286 1282/2285 1281/2284 
-f 1282/2285 1283/2286 1284/2287 
-f 1284/2287 1283/2286 1285/2288 
-f 1285/2288 1283/2286 1286/2289 
-f 1289/2292 1288/2291 1287/2290 
-f 1292/2295 1291/2294 1290/2293 
-f 1291/2294 1292/2295 1244/2247 
-f 1244/2247 1292/2295 1293/2296 
-f 1244/2247 1293/2296 1294/2297 
-f 1244/2247 1294/2297 1246/2249 
-f 1246/2249 1294/2297 1295/2298 
-f 1246/2249 1295/2298 1288/2291 
-f 1246/2249 1288/2291 1289/2292 
-f 1246/2249 1289/2292 1296/2299 
-f 1297/2300 1278/2281 1276/2279 
-f 1278/2281 1297/2300 1298/2301 
-f 1301/2304 1300/2303 1299/2302 
-f 1300/2303 1301/2304 1302/2305 
-f 1305/2308 1304/2307 1303/2306 
-f 1304/2307 1305/2308 1306/2309 
-f 1309/2312 1308/2311 1307/2310 
-f 1308/2311 1309/2312 1310/2313 
-f 1313/2316 1312/2315 1311/2314 
-f 1312/2315 1313/2316 1314/2317 
-f 1317/2320 1316/2319 1315/2318 
-f 1316/2319 1317/2320 1318/2321 
-f 1321/2324 1320/2323 1319/2322 
-f 1320/2323 1321/2324 1322/2325 
-f 1325/2328 1324/2327 1323/2326 
-f 1324/2327 1325/2328 1326/2329 
-f 1329/2332 1328/2331 1327/2330 
-f 1328/2331 1329/2332 1330/2333 
-f 1333/2336 1332/2335 1331/2334 
-f 1332/2335 1333/2336 1334/2337 
-f 1337/2340 1336/2339 1335/2338 
-f 1336/2339 1337/2340 1338/2341 
-f 1338/2341 1337/2340 1339/2342 
-f 1336/2339 1341/2344 1340/2343 
-f 1341/2344 1336/2339 1342/2345 
-f 1342/2345 1336/2339 1338/2341 
-f 1344/2347 1264/2267 1343/2346 
-f 1264/2267 1344/2347 1266/2269 
-f 1347/2350 1346/2349 1345/2348 
-f 1346/2349 1347/2350 1348/2351 
-f 1349/2352 1348/2351 1347/2350 
-f 1348/2351 1349/2352 1350/2353 
-f 1268/2271 1352/2355 1351/2354 
-f 1352/2355 1268/2271 1269/2272 
-f 1355/2358 1354/2357 1353/2356 
-f 1354/2357 1355/2358 1356/2359 
-f 1356/2359 1355/2358 1357/2360 
-f 1357/2360 1355/2358 1358/2361 
-f 1357/2360 1358/2361 1359/2362 
-f 1345/2348 1361/2364 1360/2363 
-f 1361/2364 1345/2348 1346/2349 
-f 1364/2367 1363/2366 1362/2365 
-f 1363/2366 1364/2367 1365/2368 
-f 1365/2368 1364/2367 1366/2369 
-f 1369/2372 1368/2371 1367/2370 
-f 1368/2371 1369/2372 1370/2373 
-f 1370/2373 1369/2372 1371/2374 
-f 1374/2377 1373/2376 1372/2375 
-f 1373/2376 1374/2377 1375/2378 
-f 1378/2381 1377/2380 1376/2379 
-f 1381/2384 1380/2383 1379/2382 
-f 1380/2383 1381/2384 1382/2385 
-f 1380/2383 1382/2385 1383/2386 
-f 1383/2386 1382/2385 1377/2380 
-f 1383/2386 1377/2380 1378/2381 
-f 1383/2386 1378/2381 1384/2387 
-f 1387/2390 1386/2389 1385/2388 
-f 1390/2393 1389/2392 1388/2391 
-f 1389/2392 1390/2393 1391/2394 
-f 1394/2397 1393/2396 1392/2395 
-f 1393/2396 1394/2397 1395/2398 
-f 1398/2401 1397/2400 1396/2399 
-f 1397/2400 1398/2401 1399/2402 
-f 1402/2405 1401/2404 1400/2403 
-f 1401/2404 1402/2405 1403/2406 
-f 1405/2408 1404/2407 1357/2360 
-f 1404/2407 1405/2408 1406/2409 
-f 1406/2409 1405/2408 1407/2410 
-f 1409/2412 1347/2350 1408/2411 
-f 1347/2350 1409/2412 1349/2352 
-f 1412/2415 1411/2414 1410/2413 
-f 1411/2414 1412/2415 1413/2416 
-f 1413/2416 1412/2415 1414/2417 
-f 1413/2416 1414/2417 1415/2418 
-f 1357/2360 1416/2419 1356/2359 
-f 1416/2419 1357/2360 1404/2407 
-f 1419/2422 1418/2421 1417/2420 
-f 1418/2421 1419/2422 1420/2423 
-f 1420/2423 1419/2422 1421/2424 
-f 1424/2427 1423/2426 1422/2425 
-f 1423/2426 1424/2427 1425/2428 
-f 1425/2428 1424/2427 1426/2429 
-f 1426/2429 1424/2427 1427/2430 
-f 1427/2430 1424/2427 1428/2431 
-f 1425/2428 1430/2433 1429/2432 
-f 1430/2433 1425/2428 1426/2429 
-f 1429/2432 1430/2433 1431/2434 
-f 1429/2432 1431/2434 1432/2435 
-f 1435/2438 1434/2437 1433/2436 
-f 1434/2437 1435/2438 1436/2439 
-f 1439/2442 1438/2441 1437/2440 
-f 1438/2441 1439/2442 1440/2443 
-f 1443/2446 1442/2445 1441/2444 
-f 1442/2445 1443/2446 1444/2447 
-f 1447/2450 1446/2449 1445/2448 
-f 1450/2453 1449/2452 1448/2451 
-f 1449/2452 1450/2453 1451/2454 
-f 1451/2454 1450/2453 1446/2449 
-f 1451/2454 1446/2449 1447/2450 
-f 1453/2456 1400/2403 1452/2455 
-f 1400/2403 1453/2456 1402/2405 
-f 1456/2459 1455/2458 1454/2457 
-f 1455/2458 1456/2459 1457/2460 
-f 1460/2463 1459/2462 1458/2461 
-f 1459/2462 1460/2463 1461/2464 
-f 1461/2464 1460/2463 1462/2465 
-f 1465/2468 1464/2467 1463/2466 
-f 1464/2467 1465/2468 1466/2469 
-f 1466/2469 1465/2468 1467/2470 
-f 1469/2472 1454/2457 1468/2471 
-f 1454/2457 1469/2472 1456/2459 
-f 1456/2459 1469/2472 1470/2473 
-f 1472/2475 1468/2471 1471/2474 
-f 1468/2471 1472/2475 1469/2472 
-f 1469/2472 1472/2475 1470/2473 
-f 1475/2478 1474/2477 1473/2476 
-f 1474/2477 1475/2478 1476/2479 
-f 1476/2479 1475/2478 1477/2480 
-f 1476/2479 1477/2480 1478/2481 
-f 1481/2484 1480/2483 1479/2482 
-f 1480/2483 1481/2484 1482/2485 
-f 1482/2485 1481/2484 1483/2486 
-f 1483/2486 1481/2484 1484/2487 
-f 1487/2490 1486/2489 1485/2488 
-f 1486/2489 1487/2490 1488/2491 
-f 1488/2491 1487/2490 1489/2492 
-f 1492/2495 1491/2494 1490/2493 
-f 1491/2494 1492/2495 1493/2496 
-f 1496/2499 1495/2498 1494/2497 
-f 1495/2498 1498/2501 1497/2500 
-f 1498/2501 1495/2498 1499/2502 
-f 1499/2502 1495/2498 1496/2499 
-f 1499/2502 1496/2499 1500/2503 
-f 1499/2502 1500/2503 1501/2504 
-f 1504/2507 1503/2506 1502/2505 
-f 1503/2506 1506/2509 1505/2508 
-f 1506/2509 1503/2506 1507/2510 
-f 1507/2510 1503/2506 1504/2507 
-f 1507/2510 1504/2507 1508/2511 
-f 1507/2510 1508/2511 1509/2512 
-f 1509/2512 1508/2511 1510/2513 
-f 1513/2516 1512/2515 1511/2514 
-f 1516/2519 1515/2518 1514/2517 
-f 1515/2518 1516/2519 1517/2520 
-f 1515/2518 1517/2520 1518/2521 
-f 1518/2521 1517/2520 1519/2522 
-f 1522/2525 1521/2524 1520/2523 
-f 1521/2524 1522/2525 1523/2526 
-f 1526/2529 1525/2528 1524/2527 
-f 1525/2528 1526/2529 1527/2530 
-f 1530/2533 1529/2532 1528/2531 
-f 1529/2532 1530/2533 1531/2534 
-f 1531/2534 1530/2533 1532/2535 
-f 1531/2534 1532/2535 1533/2536 
-f 1536/2539 1535/2538 1534/2537 
-f 1535/2538 1536/2539 1537/2540 
-f 1537/2540 1536/2539 1538/2541 
-f 1541/2544 1540/2543 1539/2542 
-f 1540/2543 1541/2544 1542/2545 
-f 1493/2496 1543/2546 1491/2494 
-f 1543/2546 1493/2496 1544/2547 
-f 1547/2550 1546/2549 1545/2548 
-f 1546/2549 1547/2550 1548/2551 
-f 1551/2554 1550/2553 1549/2552 
-f 1550/2553 1551/2554 1552/2555 
-f 1555/2558 1554/2557 1553/2556 
-f 1554/2557 1555/2558 1556/2559 
-f 1559/2562 1558/2561 1557/2560 
-f 1562/2565 1561/2564 1560/2563 
-f 1561/2564 1562/2565 1563/2566 
-f 1563/2566 1562/2565 1564/2567 
-
-g chest
-usemtl brown_light
-v -3.452477 163.773315 9.838644
-v -3.452477 174.631821 9.838644
-v -69.365532 163.773315 9.838646
-v -69.365532 174.631821 9.838646
-v -3.452477 133.253601 -4.814985
-v -3.452477 133.253601 38.996223
-v -3.452477 166.591125 -4.814985
-v -3.452477 158.010056 7.362144
-v -3.452477 166.591125 7.362144
-v -3.452477 163.773315 9.838644
-v -3.452477 163.773315 18.792152
-v -3.452477 174.631821 9.838644
-v -3.452477 174.261963 -0.814482
-v -3.452477 174.261963 7.362144
-v -3.452477 192.118134 -0.814482
-v -3.452477 180.679581 7.362144
-v -3.452477 180.679581 18.792152
-v -3.452477 174.631821 18.792152
-v -3.452477 174.973129 33.281219
-v -3.452477 192.118134 33.281219
-v -3.452477 174.973129 38.996223
-v -3.452477 158.010056 18.792152
-v -69.365532 163.773315 18.792156
-v -3.452477 163.773315 18.792152
-v -69.365532 163.773315 9.838646
-v -3.452477 163.773315 9.838644
-v -69.365532 133.253601 38.996231
-v -69.365532 133.253601 -4.814981
-v -69.365532 174.973129 38.996231
-v -69.365532 158.010056 18.792156
-v -69.365532 163.773315 18.792156
-v -69.365532 163.773315 9.838646
-v -69.365532 174.631821 18.792156
-v -69.365532 174.973129 33.281223
-v -69.365532 180.679581 18.792156
-v -69.365532 192.118134 33.281223
-v -69.365532 180.679581 7.362147
-v -69.365532 174.261963 7.362147
-v -69.365532 174.261963 -0.814478
-v -69.365532 192.118134 -0.814478
-v -69.365532 174.631821 9.838646
-v -69.365532 166.591125 -4.814981
-v -69.365532 158.010056 7.362147
-v -69.365532 166.591125 7.362147
-v -3.452477 174.631821 18.792152
-v -69.365532 174.631821 18.792156
-v -3.452477 174.631821 9.838644
-v -69.365532 174.631821 9.838646
-v -3.452477 174.631821 18.792152
-v -3.452477 180.679581 18.792152
-v -69.365532 174.631821 18.792156
-v -69.365532 180.679581 18.792156
-v -69.365532 180.679581 18.792156
-v -3.452477 180.679581 18.792152
-v -69.365532 180.679581 7.362147
-v -3.452477 180.679581 7.362144
-v -3.452477 180.679581 7.362144
-v -3.452477 174.261963 7.362144
-v -69.365532 180.679581 7.362147
-v -69.365532 174.261963 7.362147
-v -69.365532 174.261963 7.362147
-v -3.452477 174.261963 7.362144
-v -69.365532 174.261963 -0.814478
-v -3.452477 174.261963 -0.814482
-v -3.452477 174.261963 -0.814482
-v -3.452477 192.118134 -0.814482
-v -69.365532 174.261963 -0.814478
-v -69.365532 192.118134 -0.814478
-v -3.452477 192.118134 33.281219
-v -69.365532 192.118134 33.281223
-v -3.452477 192.118134 -0.814482
-v -69.365532 192.118134 -0.814478
-v -3.452477 192.118134 33.281219
-v -3.452477 174.973129 33.281219
-v -69.365532 192.118134 33.281223
-v -69.365532 174.973129 33.281223
-v -3.452477 174.973129 38.996223
-v -69.365532 174.973129 38.996231
-v -3.452477 174.973129 33.281219
-v -69.365532 174.973129 33.281223
-v -3.452477 174.973129 38.996223
-v -3.452477 133.253601 38.996223
-v -69.365532 174.973129 38.996231
-v -69.365532 133.253601 38.996231
-v -69.365532 133.253601 38.996231
-v -3.452477 133.253601 38.996223
-v -69.365532 133.253601 -4.814981
-v -3.452477 133.253601 -4.814985
-v -3.452477 133.253601 -4.814985
-v -3.452477 166.591125 -4.814985
-v -69.365532 133.253601 -4.814981
-v -69.365532 166.591125 -4.814981
-v -3.452477 166.591125 7.362144
-v -69.365532 166.591125 7.362147
-v -3.452477 166.591125 -4.814985
-v -69.365532 166.591125 -4.814981
-v -3.452477 166.591125 7.362144
-v -3.452477 158.010056 7.362144
-v -69.365532 166.591125 7.362147
-v -69.365532 158.010056 7.362147
-v -3.452477 158.010056 18.792152
-v -69.365532 158.010056 18.792156
-v -3.452477 158.010056 7.362144
-v -69.365532 158.010056 7.362147
-v -3.452477 158.010056 18.792152
-v -3.452477 163.773315 18.792152
-v -69.365532 158.010056 18.792156
-v -69.365532 163.773315 18.792156
-
-vt 0.836835 0 0
-vt 0.836835 0.12766 0
-vt 0.836835 1 0
-vt 0.836835 0.87234 0
-vt 1.148169 0.267045 0
-vt 0.351831 0.267045 0
-vt 1.351831 0.267045 0
-vt 0.971921 0.189032 0
-vt 0.351831 0 0
-vt 0.971921 0 0
-vt 1.351831 0 0
-vt 0.971921 0 0
-vt 0.836835 0 0
-vt 0.727482 0 0
-vt 0.581358 0 0
-vt 0.836835 0 0
-vt 0.836835 0.12766 0
-vt 0.908657 0.182783 0
-vt 0.861232 0.136926 0
-vt 0.836984 0.257055 0
-vt 0.828884 0.176815 0
-vt 0.734995 0.159673 0
-vt 0.727482 0.111719 0
-vt 0.60332 0.175907 0
-vt 0.669958 0.253037 0
-vt 0.581358 0.207285 0
-vt 0.581358 0 0
-vt 0.351831 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0.351831 0.732955 0
-vt 0.148169 0.732955 0
-vt 1.148169 0.732955 0
-vt 0.581358 0.792715 0
-vt 0.148169 1 0
-vt 0.581358 1 0
-vt 0.581358 1 0
-vt 0.836835 1 0
-vt 0.581358 1 0
-vt 0.727482 0.888281 0
-vt 0.60332 0.824093 0
-vt 0.734995 0.840327 0
-vt 0.669958 0.746963 0
-vt 0.828884 0.823185 0
-vt 0.861232 0.863074 0
-vt 0.908657 0.817217 0
-vt 0.836984 0.742945 0
-vt 0.836835 0.87234 0
-vt 0.971921 0.810968 0
-vt 0.971921 1 0
-vt 0.148169 1 0
-vt 1.148169 1 0
-vt 0.971921 1 0
-vt 0.727482 0.111719 0
-vt 0.727482 0.888281 0
-vt 0.836835 0.12766 0
-vt 0.836835 0.87234 0
-vt 0.727482 0.111719 0
-vt 0.734995 0.159673 0
-vt 0.727482 0.888281 0
-vt 0.734995 0.840327 0
-vt 0.734995 0.840327 0
-vt 0.734995 0.159673 0
-vt 0.828884 0.823185 0
-vt 0.828884 0.176815 0
-vt 0.828884 0.176815 0
-vt 0.861232 0.136926 0
-vt 0.828884 0.823185 0
-vt 0.861232 0.863074 0
-vt 0.861232 0.863074 0
-vt 0.861232 0.136926 0
-vt 0.908657 0.817217 0
-vt 0.908657 0.182783 0
-vt 0.908657 0.182783 0
-vt 0.836984 0.257055 0
-vt 0.908657 0.817217 0
-vt 0.836984 0.742945 0
-vt 0.669958 0.253037 0
-vt 0.669958 0.746963 0
-vt 0.836984 0.257055 0
-vt 0.836984 0.742945 0
-vt 0.669958 0.253037 0
-vt 0.60332 0.175907 0
-vt 0.669958 0.746963 0
-vt 0.60332 0.824093 0
-vt 0.581358 0.207285 0
-vt 0.581358 0.792715 0
-vt 0.60332 0.175907 0
-vt 0.60332 0.824093 0
-vt 0.581358 0.207285 0
-vt 0.351831 0.267045 0
-vt 0.581358 0.792715 0
-vt 0.351831 0.732955 0
-vt 0.351831 0.732955 0
-vt 0.351831 0.267045 0
-vt 0.148169 0.732955 0
-vt 0.148169 0.267045 0
-vt 1.148169 0.267045 0
-vt 0.971921 0.189032 0
-vt 1.148169 0.732955 0
-vt 0.971921 0.810968 0
-vt 0.971921 0 0
-vt 0.971921 1 0
-vt 0.971921 0.189032 0
-vt 0.971921 0.810968 0
-vt 0 0 0
-vt 0 0 0
-vt 0 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0 0 0
-vt 0 1 0
-vt 0 1 0
-
-f 1567/2570 1566/2569 1565/2568 
-f 1566/2569 1567/2570 1568/2571 
-f 1571/2575 1570/2574 1569/2572 
-f 1570/2574 1571/2575 1572/2578 
-f 1572/2577 1571/2575 1573/2579 
-f 1576/2584 1575/2583 1574/2580 
-f 1579/2587 1578/2586 1577/2585 
-f 1578/2586 1579/2587 1580/2588 
-f 1580/2588 1579/2587 1581/2589 
-f 1581/2589 1583/2591 1582/2590 
-f 1583/2591 1581/2589 1584/2592 
-f 1584/2592 1581/2589 1579/2587 
-f 1570/2573 1586/2595 1585/2593 
-f 1586/2595 1570/2573 1572/2576 
-f 1585/2593 1586/2594 1575/2582 
-f 1585/2593 1575/2582 1582/2590 
-f 1582/2590 1575/2581 1576/2584 
-f 1585/2593 1582/2590 1583/2591 
-f 1589/2598 1588/2597 1587/2596 
-f 1588/2597 1589/2598 1590/2599 
-f 1593/2603 1592/2601 1591/2600 
-f 1592/2601 1593/2603 1594/2604 
-f 1594/2605 1593/2603 1595/2606 
-f 1595/2606 1593/2603 1596/2608 
-f 1596/2608 1593/2603 1597/2609 
-f 1597/2609 1593/2603 1598/2610 
-f 1597/2609 1598/2610 1599/2611 
-f 1599/2611 1598/2610 1600/2612 
-f 1599/2611 1600/2612 1601/2613 
-f 1601/2613 1603/2615 1602/2614 
-f 1603/2615 1601/2613 1604/2616 
-f 1604/2616 1601/2613 1600/2612 
-f 1605/2617 1596/2607 1597/2609 
-f 1592/2602 1607/2621 1606/2618 
-f 1607/2620 1592/2601 1594/2604 
-f 1606/2618 1607/2619 1608/2622 
-f 1611/2625 1610/2624 1609/2623 
-f 1610/2624 1611/2625 1612/2626 
-f 1615/2629 1614/2628 1613/2627 
-f 1614/2628 1615/2629 1616/2630 
-f 1619/2633 1618/2632 1617/2631 
-f 1618/2632 1619/2633 1620/2634 
-f 1623/2637 1622/2636 1621/2635 
-f 1622/2636 1623/2637 1624/2638 
-f 1627/2641 1626/2640 1625/2639 
-f 1626/2640 1627/2641 1628/2642 
-f 1631/2645 1630/2644 1629/2643 
-f 1630/2644 1631/2645 1632/2646 
-f 1635/2649 1634/2648 1633/2647 
-f 1634/2648 1635/2649 1636/2650 
-f 1639/2653 1638/2652 1637/2651 
-f 1638/2652 1639/2653 1640/2654 
-f 1643/2657 1642/2656 1641/2655 
-f 1642/2656 1643/2657 1644/2658 
-f 1647/2661 1646/2660 1645/2659 
-f 1646/2660 1647/2661 1648/2662 
-f 1651/2665 1650/2664 1649/2663 
-f 1650/2664 1651/2665 1652/2666 
-f 1655/2669 1654/2668 1653/2667 
-f 1654/2668 1655/2669 1656/2670 
-f 1659/2673 1658/2672 1657/2671 
-f 1658/2672 1659/2673 1660/2674 
-f 1663/2677 1662/2676 1661/2675 
-f 1662/2676 1663/2677 1664/2678 
-f 1667/2681 1666/2680 1665/2679 
-f 1666/2680 1667/2681 1668/2682 
-f 1671/2685 1670/2684 1669/2683 
-f 1670/2684 1671/2685 1672/2686 
-
-g head
-usemtl brown_light
-v -10.347265 183.272888 -5.568148
-v -10.347261 183.272888 53.867905
-v -10.347265 209.379135 -5.568148
-v -10.347263 204.608917 42.628395
-v -10.347263 228.040436 42.628395
-v -10.347263 228.040436 12.148367
-v -10.347261 204.608917 53.867905
-v -10.347265 209.379135 -5.568148
-v -29.070341 193.037903 -5.568146
-v -10.347265 183.272888 -5.568148
-v -64.258812 183.272888 -5.568144
-v -28.914089 209.379135 -5.568146
-v -46.498764 193.037903 -5.568146
-v -46.498764 209.379135 -5.568146
-v -64.258812 209.379135 -5.568144
-v -29.070341 209.379135 -5.568146
-v -10.347265 209.379135 -5.568148
-v -10.347263 228.040436 12.148367
-v -28.914089 209.379135 -5.568146
-v -28.914089 228.040436 12.148368
-v -10.347263 228.040436 42.628395
-v -64.258804 228.040436 42.628395
-v -10.347263 228.040436 12.148367
-v -64.258804 228.040436 12.148369
-v -28.914089 228.040436 12.148368
-v -46.498764 228.040436 12.148368
-v -10.347263 228.040436 42.628395
-v -10.347263 204.608917 42.628395
-v -64.258804 228.040436 42.628395
-v -64.258804 204.608917 42.628395
-v -10.347261 204.608917 53.867905
-v -64.258804 204.608917 53.867905
-v -10.347263 204.608917 42.628395
-v -64.258804 204.608917 42.628395
-v -10.347261 204.608917 53.867905
-v -10.347261 183.272888 53.867905
-v -64.258804 204.608917 53.867905
-v -64.258804 183.272888 53.867905
-v -64.258804 183.272888 53.867905
-v -10.347261 183.272888 53.867905
-v -64.258812 183.272888 -5.568144
-v -10.347265 183.272888 -5.568148
-v -46.498764 209.379135 -5.568146
-v -46.498764 228.040436 12.148368
-v -64.258812 209.379135 -5.568144
-v -64.258804 228.040436 12.148369
-v -29.070341 193.037903 -5.568146
-v -29.070341 209.379135 -5.568146
-v -46.498764 193.037903 -5.568146
-v -46.498764 209.379135 -5.568146
-v -28.914089 209.379135 -5.568146
-v -28.914089 228.040436 12.148368
-v -29.070341 209.379135 -5.568146
-v -46.498764 228.040436 12.148368
-v -46.498764 209.379135 -5.568146
-v -64.258804 183.272888 53.867905
-v -64.258812 183.272888 -5.568144
-v -64.258804 204.608917 53.867905
-v -64.258804 204.608917 42.628395
-v -64.258812 209.379135 -5.568144
-v -64.258804 228.040436 42.628395
-v -64.258804 228.040436 12.148369
-
-vt 1.102742 0.300421 0
-vt 0.397258 0.300421 0
-vt 1.397258 0.300421 0
-vt 0.980168 0.266735 0
-vt 0.490985 0.191522 0
-vt 0.640165 0.261764 0
-vt 0.82833 0.240533 0
-vt 0.494391 0.2656 0
-vt 0.980168 0.266735 0
-vt 1.063908 0.420527 0
-vt 0.063908 0.420527 0
-vt 0.102742 0.300421 0
-vt 1.102742 0.300421 0
-vt 1.102742 0.699579 0
-vt 0.102742 0.699579 0
-vt 0.980168 0.41307 0
-vt 1.063908 0.588322 0
-vt 0.063908 0.588322 0
-vt 0.980168 0.594824 0
-vt 0.980168 0.733266 0
-vt 0.980168 0.414612 0
-vt 0.980168 0.266735 0
-vt 0.82833 0.240533 0
-vt 0.980168 0.41307 0
-vt 0.82833 0.398454 0
-vt 0.640165 0.261764 0
-vt 0.640165 0.738236 0
-vt 0.82833 0.240533 0
-vt 0.82833 0.759467 0
-vt 0.82833 0.398454 0
-vt 0.82833 0.610574 0
-vt 0.640165 0.261764 0
-vt 0.490985 0.191522 0
-vt 0.640165 0.738236 0
-vt 0.490985 0.808478 0
-vt 0.494391 0.2656 0
-vt 0.494391 0.7344 0
-vt 0.490985 0.191522 0
-vt 0.490985 0.808478 0
-vt 0.494391 0.2656 0
-vt 0.397258 0.300421 0
-vt 0.494391 0.7344 0
-vt 0.397258 0.699579 0
-vt 0.397258 0.699579 0
-vt 0.397258 0.300421 0
-vt 0.102742 0.699579 0
-vt 0.102742 0.300421 0
-vt 0.980168 0.594824 0
-vt 0.82833 0.610574 0
-vt 0.980168 0.733266 0
-vt 0.82833 0.759467 0
-vt 1.063908 0.420527 0
-vt 0.980168 0.414612 0
-vt 1.063908 0.588322 0
-vt 0.980168 0.594824 0
-vt 0.980168 0.41307 0
-vt 0.82833 0.398454 0
-vt 0.980168 0.414612 0
-vt 0.82833 0.610574 0
-vt 0.980168 0.594824 0
-vt 0.397258 0.699579 0
-vt 1.102742 0.699579 0
-vt 0.102742 0.699579 0
-vt 0.494391 0.7344 0
-vt 0.490985 0.808478 0
-vt 1.490986 0.808478 0
-vt 0.980168 0.733266 0
-vt 0.640165 0.738236 0
-vt 0.82833 0.759467 0
-
-f 1675/2690 1674/2689 1673/2687 
-f 1674/2688 1675/2690 1676/2691 
-f 1676/2691 1675/2690 1677/2692 
-f 1677/2692 1675/2690 1678/2693 
-f 1679/2694 1674/2688 1676/2691 
-f 1682/2699 1681/2696 1680/2695 
-f 1681/2697 1682/2698 1683/2701 
-f 1680/2695 1681/2696 1684/2702 
-f 1681/2697 1683/2701 1685/2704 
-f 1685/2703 1683/2700 1686/2705 
-f 1686/2705 1683/2700 1687/2706 
-f 1688/2707 1684/2702 1681/2696 
-f 1691/2710 1690/2709 1689/2708 
-f 1690/2709 1691/2710 1692/2711 
-f 1695/2714 1694/2713 1693/2712 
-f 1694/2713 1695/2714 1696/2715 
-f 1696/2715 1695/2714 1697/2716 
-f 1696/2715 1697/2716 1698/2717 
-f 1701/2720 1700/2719 1699/2718 
-f 1700/2719 1701/2720 1702/2721 
-f 1705/2724 1704/2723 1703/2722 
-f 1704/2723 1705/2724 1706/2725 
-f 1709/2728 1708/2727 1707/2726 
-f 1708/2727 1709/2728 1710/2729 
-f 1713/2732 1712/2731 1711/2730 
-f 1712/2731 1713/2732 1714/2733 
-f 1717/2736 1716/2735 1715/2734 
-f 1716/2735 1717/2736 1718/2737 
-f 1721/2740 1720/2739 1719/2738 
-f 1720/2739 1721/2740 1722/2741 
-f 1725/2744 1724/2743 1723/2742 
-f 1724/2743 1725/2744 1726/2745 
-f 1726/2745 1725/2744 1727/2746 
-f 1730/2750 1729/2749 1728/2747 
-f 1729/2749 1730/2750 1731/2751 
-f 1729/2748 1731/2752 1732/2753 
-f 1732/2753 1731/2751 1733/2754 
-f 1732/2753 1733/2754 1734/2755 
-

BIN
examples/obj/nano/.DS_Store


+ 0 - 953
examples/obj/nano/Nano.js

@@ -1,953 +0,0 @@
-// Converted from: Nano.obj
-//  vertices: 418
-//  faces: 190 
-//  materials: 1
-//
-//  Generated with OBJ -> Three.js converter
-//  http://github.com/alteredq/three.js/blob/master/utils/exporters/convert_obj_threejs.py
-
-var Nano = function ( urlbase ) {
-    var scope = this;
-
-    THREE.Geometry.call(this);
-
-    var materials = [	{
-	"a_dbg_color" : 0xffeeeeee,
-	"a_dbg_index" : 0,
-	"a_dbg_name" : "Mat"
-	}];
-
-    init_materials();
-    
-    var normals = [];
-
-	v(60.188229,126.000000,66.000000);
-	v(60.188229,156.000000,29.999998);
-	v(60.188229,156.000000,29.999998);
-	v(60.188229,72.000000,48.000000);
-	v(60.188229,72.000000,66.000000);
-	v(60.188229,126.000000,66.000000);
-	v(60.188229,156.000000,29.999998);
-	v(60.188229,-84.000000,66.000000);
-	v(60.188229,-132.000000,23.999998);
-	v(60.188229,-156.000000,66.000000);
-	v(60.188229,-156.000000,-66.000000);
-	v(60.188229,-84.000000,48.000000);
-	v(60.188229,72.000000,48.000000);
-	v(60.188229,-132.000000,-18.000002);
-	v(60.188229,-108.000000,-18.000002);
-	v(60.188229,156.000000,-66.000000);
-	v(60.188229,-108.000000,23.999998);
-	v(60.188229,72.000000,66.000000);
-	v(60.188229,-84.000000,48.000000);
-	v(60.188229,72.000000,48.000000);
-	v(60.188229,-84.000000,66.000000);
-	v(60.188229,-84.000000,48.000000);
-	v(60.188229,-156.000000,66.000000);
-	v(60.188229,72.000000,66.000000);
-	v(60.188229,-84.000000,66.000000);
-	v(60.188229,126.000000,66.000000);
-	v(60.188229,126.000000,66.000000);
-	v(60.188229,156.000000,29.999998);
-	v(60.188229,156.000000,29.999998);
-	v(30.188229,72.000000,66.000000);
-	v(18.188229,72.000000,66.000000);
-	v(24.188229,-132.000000,23.999998);
-	v(24.188229,-156.000000,-66.000000);
-	v(24.188229,-132.000000,-18.000002);
-	v(24.188229,-108.000000,-18.000002);
-	v(24.188229,-84.000000,48.000000);
-	v(24.188229,-108.000000,23.999998);
-	v(18.188229,102.000000,66.000000);
-	v(24.188229,-84.000000,48.000000);
-	v(24.188229,-156.000000,66.000000);
-	v(24.188229,-84.000000,66.000000);
-	v(30.188229,102.000000,66.000000);
-	v(24.188229,-84.000000,-66.000000);
-	v(-29.811771,102.000000,66.000000);
-	v(-23.811771,-84.000000,-66.000000);
-	v(-29.811771,72.000000,48.000000);
-	v(-17.811771,72.000000,48.000000);
-	v(-17.811771,102.000000,48.000000);
-	v(-29.811771,102.000000,48.000000);
-	v(30.188229,72.000000,48.000000);
-	v(18.188229,72.000000,48.000000);
-	v(18.188229,102.000000,48.000000);
-	v(30.188229,102.000000,48.000000);
-	v(-23.811771,-41.999996,48.000000);
-	v(24.188229,-41.999996,48.000000);
-	v(-23.811771,-41.999996,-66.000000);
-	v(24.188229,-41.999996,-66.000000);
-	v(-23.811771,30.000004,35.999998);
-	v(-23.811771,48.000004,35.999998);
-	v(-23.811771,6.000004,35.999998);
-	v(-23.811771,-5.999996,35.999998);
-	v(-23.811771,-5.999996,48.000000);
-	v(24.188229,30.000004,35.999998);
-	v(24.188229,48.000004,35.999998);
-	v(-23.811771,6.000004,48.000000);
-	v(-23.811771,30.000004,48.000000);
-	v(-23.811771,48.000004,48.000000);
-	v(24.188229,6.000004,35.999998);
-	v(24.188229,-5.999996,35.999998);
-	v(24.188229,-5.999996,48.000000);
-	v(24.188229,6.000004,48.000000);
-	v(24.188229,30.000004,48.000000);
-	v(24.188229,48.000004,48.000000);
-	v(-59.811771,126.000000,66.000000);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,72.000000,66.000000);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,-132.000000,23.999998);
-	v(-59.811771,-156.000000,-66.000000);
-	v(-59.811771,-132.000000,-18.000002);
-	v(-59.811771,-108.000000,-18.000002);
-	v(-59.811771,156.000000,-66.000000);
-	v(-59.811771,-108.000000,23.999998);
-	v(-59.811771,72.000000,48.000000);
-	v(-59.811771,-84.000000,48.000000);
-	v(-59.811771,-156.000000,66.000000);
-	v(-59.811771,72.000000,66.000000);
-	v(-59.811771,-84.000000,66.000000);
-	v(-59.811771,126.000000,66.000000);
-	v(-59.811771,126.000000,66.000000);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,156.000000,29.999998);
-	v(-29.811771,72.000000,66.000000);
-	v(-17.811771,72.000000,66.000000);
-	v(-23.811771,-132.000000,23.999998);
-	v(-23.811771,-156.000000,-66.000000);
-	v(-23.811771,-132.000000,-18.000002);
-	v(-23.811771,-108.000000,-18.000002);
-	v(-23.811771,-84.000000,48.000000);
-	v(-23.811771,-108.000000,23.999998);
-	v(-17.811771,102.000000,66.000000);
-	v(-23.811771,-84.000000,48.000000);
-	v(-23.811771,-156.000000,66.000000);
-	v(-23.811771,-84.000000,66.000000);
-	v(-29.811771,102.000000,66.000000);
-	v(-23.811771,-84.000000,-66.000000);
-	v(-29.811771,72.000000,48.000000);
-	v(-17.811771,72.000000,48.000000);
-	v(-17.811771,102.000000,48.000000);
-	v(-29.811771,102.000000,48.000000);
-	v(-23.811771,-41.999996,48.000000);
-	v(-23.811771,-41.999996,-66.000000);
-	v(-23.811771,30.000004,35.999998);
-	v(-23.811771,48.000004,35.999998);
-	v(-23.811771,6.000004,35.999998);
-	v(-23.811771,-5.999996,35.999998);
-	v(-23.811771,-5.999996,48.000000);
-	v(-23.811771,6.000004,48.000000);
-	v(-23.811771,30.000004,48.000000);
-	v(-23.811771,48.000004,48.000000);
-	v(-59.811771,126.000000,66.000000);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,72.000000,66.000000);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,-132.000000,23.999998);
-	v(-59.811771,-156.000000,-66.000000);
-	v(-59.811771,-132.000000,-18.000002);
-	v(-59.811771,-108.000000,-18.000002);
-	v(-59.811771,156.000000,-66.000000);
-	v(-59.811771,-108.000000,23.999998);
-	v(-59.811771,72.000000,48.000000);
-	v(-59.811771,-84.000000,48.000000);
-	v(-59.811771,-156.000000,66.000000);
-	v(-59.811771,72.000000,66.000000);
-	v(-59.811771,-84.000000,66.000000);
-	v(-59.811771,126.000000,66.000000);
-	v(-59.811771,126.000000,66.000000);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,156.000000,29.999998);
-	v(-29.811771,72.000000,66.000000);
-	v(-17.811771,72.000000,66.000000);
-	v(-23.811771,-132.000000,23.999998);
-	v(-23.811771,-156.000000,-66.000000);
-	v(-23.811771,-132.000000,-18.000002);
-	v(-23.811771,-108.000000,-18.000002);
-	v(-23.811771,-84.000000,48.000000);
-	v(-23.811771,-108.000000,23.999998);
-	v(-17.811771,102.000000,66.000000);
-	v(-23.811771,-84.000000,48.000000);
-	v(-23.811771,-156.000000,66.000000);
-	v(-23.811771,-84.000000,66.000000);
-	v(-29.811771,102.000000,66.000000);
-	v(-23.811771,-84.000000,-66.000000);
-	v(-29.811771,72.000000,48.000000);
-	v(-17.811771,72.000000,48.000000);
-	v(-17.811771,102.000000,48.000000);
-	v(-29.811771,102.000000,48.000000);
-	v(-23.811771,-41.999996,48.000000);
-	v(-23.811771,-41.999996,-66.000000);
-	v(-23.811771,30.000004,35.999998);
-	v(-23.811771,48.000004,35.999998);
-	v(-23.811771,6.000004,35.999998);
-	v(-23.811771,-5.999996,35.999998);
-	v(-23.811771,-5.999996,48.000000);
-	v(-23.811771,6.000004,48.000000);
-	v(-23.811771,30.000004,48.000000);
-	v(-23.811771,48.000004,48.000000);
-	v(-59.811771,126.000000,66.000000);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,72.000000,66.000000);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,-132.000000,23.999998);
-	v(-59.811771,-156.000000,-66.000000);
-	v(-59.811771,-132.000000,-18.000002);
-	v(-59.811771,-108.000000,-18.000002);
-	v(-59.811771,156.000000,-66.000000);
-	v(-59.811771,-108.000000,23.999998);
-	v(-59.811771,72.000000,48.000000);
-	v(-59.811771,-84.000000,48.000000);
-	v(-59.811771,-156.000000,66.000000);
-	v(-59.811771,72.000000,66.000000);
-	v(-59.811771,-84.000000,66.000000);
-	v(-59.811771,126.000000,66.000000);
-	v(-59.811771,126.000000,66.000000);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,156.000000,29.999998);
-	v(-29.811771,72.000000,66.000000);
-	v(-17.811771,72.000000,66.000000);
-	v(-23.811771,-132.000000,23.999998);
-	v(-23.811771,-156.000000,-66.000000);
-	v(-23.811771,-132.000000,-18.000002);
-	v(-23.811771,-108.000000,-18.000002);
-	v(-23.811771,-84.000000,48.000000);
-	v(-23.811771,-108.000000,23.999998);
-	v(-17.811771,102.000000,66.000000);
-	v(-23.811771,-84.000000,48.000000);
-	v(-23.811771,-156.000000,66.000000);
-	v(-23.811771,-84.000000,66.000000);
-	v(-83.753887,-54.327301,-0.821590);
-	v(-83.753887,103.172699,-0.821590);
-	v(-61.253887,-54.327301,-0.821590);
-	v(-61.253887,103.172699,-0.821590);
-	v(-61.253887,-54.327301,-53.321590);
-	v(-61.253887,103.172699,-53.321590);
-	v(-83.753887,-54.327301,-53.321590);
-	v(-83.753887,103.172699,-53.321590);
-	v(61.253887,-54.327301,-0.821590);
-	v(61.253887,103.172699,-0.821590);
-	v(83.753887,-54.327301,-0.821590);
-	v(83.753887,103.172699,-0.821590);
-	v(83.753887,-54.327301,-53.321590);
-	v(83.753887,103.172699,-53.321590);
-	v(61.253887,-54.327301,-53.321590);
-	v(61.253887,103.172699,-53.321590);
-	v(60.188229,126.000000,66.000000);
-	v(60.188229,156.000000,29.999998);
-	v(60.188229,156.000000,29.999998);
-	v(60.188229,72.000000,48.000000);
-	v(60.188229,72.000000,66.000000);
-	v(60.188229,126.000000,66.000000);
-	v(60.188229,156.000000,29.999998);
-	v(60.188229,-84.000000,66.000000);
-	v(60.188229,-132.000000,23.999998);
-	v(60.188229,-156.000000,66.000000);
-	v(60.188229,-156.000000,-66.000000);
-	v(60.188229,-84.000000,48.000000);
-	v(60.188229,72.000000,48.000000);
-	v(60.188229,-132.000000,-18.000002);
-	v(60.188229,-108.000000,-18.000002);
-	v(60.188229,156.000000,-66.000000);
-	v(60.188229,-108.000000,23.999998);
-	v(60.188229,72.000000,66.000000);
-	v(60.188229,-84.000000,48.000000);
-	v(60.188229,72.000000,48.000000);
-	v(60.188229,-84.000000,66.000000);
-	v(60.188229,-84.000000,48.000000);
-	v(60.188229,-156.000000,66.000000);
-	v(60.188229,72.000000,66.000000);
-	v(60.188229,-84.000000,66.000000);
-	v(60.188229,126.000000,66.000000);
-	v(60.188229,126.000000,66.000000);
-	v(60.188229,156.000000,29.999998);
-	v(60.188229,156.000000,29.999998);
-	v(30.188229,72.000000,66.000000);
-	v(18.188229,72.000000,66.000000);
-	v(24.188229,-132.000000,23.999998);
-	v(24.188229,-156.000000,-66.000000);
-	v(24.188229,-132.000000,-18.000002);
-	v(24.188229,-108.000000,-18.000002);
-	v(24.188229,-84.000000,48.000000);
-	v(24.188229,-108.000000,23.999998);
-	v(18.188229,102.000000,66.000000);
-	v(24.188229,-84.000000,48.000000);
-	v(24.188229,-156.000000,66.000000);
-	v(24.188229,-84.000000,66.000000);
-	v(30.188229,102.000000,66.000000);
-	v(24.188229,-84.000000,-66.000000);
-	v(-29.811771,102.000000,66.000000);
-	v(-23.811771,-84.000000,-66.000000);
-	v(-29.811771,72.000000,48.000000);
-	v(-17.811771,72.000000,48.000000);
-	v(-17.811771,102.000000,48.000000);
-	v(-29.811771,102.000000,48.000000);
-	v(30.188229,72.000000,48.000000);
-	v(18.188229,72.000000,48.000000);
-	v(18.188229,102.000000,48.000000);
-	v(30.188229,102.000000,48.000000);
-	v(-23.811771,-41.999996,48.000000);
-	v(24.188229,-41.999996,48.000000);
-	v(-23.811771,-41.999996,-66.000000);
-	v(24.188229,-41.999996,-66.000000);
-	v(-23.811771,30.000004,35.999998);
-	v(-23.811771,48.000004,35.999998);
-	v(-23.811771,6.000004,35.999998);
-	v(-23.811771,-5.999996,35.999998);
-	v(-23.811771,-5.999996,48.000000);
-	v(24.188229,30.000004,35.999998);
-	v(24.188229,48.000004,35.999998);
-	v(-23.811771,6.000004,48.000000);
-	v(-23.811771,30.000004,48.000000);
-	v(-23.811771,48.000004,48.000000);
-	v(24.188229,6.000004,35.999998);
-	v(24.188229,-5.999996,35.999998);
-	v(24.188229,-5.999996,48.000000);
-	v(24.188229,6.000004,48.000000);
-	v(24.188229,30.000004,48.000000);
-	v(24.188229,48.000004,48.000000);
-	v(-59.811771,126.000000,66.000000);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,72.000000,66.000000);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,-132.000000,23.999998);
-	v(-59.811771,-156.000000,-66.000000);
-	v(-59.811771,-132.000000,-18.000002);
-	v(-59.811771,-108.000000,-18.000002);
-	v(-59.811771,156.000000,-66.000000);
-	v(-59.811771,-108.000000,23.999998);
-	v(-59.811771,72.000000,48.000000);
-	v(-59.811771,-84.000000,48.000000);
-	v(-59.811771,-156.000000,66.000000);
-	v(-59.811771,72.000000,66.000000);
-	v(-59.811771,-84.000000,66.000000);
-	v(-59.811771,126.000000,66.000000);
-	v(-59.811771,126.000000,66.000000);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,156.000000,29.999998);
-	v(-29.811771,72.000000,66.000000);
-	v(-17.811771,72.000000,66.000000);
-	v(-23.811771,-132.000000,23.999998);
-	v(-23.811771,-156.000000,-66.000000);
-	v(-23.811771,-132.000000,-18.000002);
-	v(-23.811771,-108.000000,-18.000002);
-	v(-23.811771,-84.000000,48.000000);
-	v(-23.811771,-108.000000,23.999998);
-	v(-17.811771,102.000000,66.000000);
-	v(-23.811771,-84.000000,48.000000);
-	v(-23.811771,-156.000000,66.000000);
-	v(-23.811771,-84.000000,66.000000);
-	v(-29.811771,102.000000,66.000000);
-	v(-23.811771,-84.000000,-66.000000);
-	v(-29.811771,72.000000,48.000000);
-	v(-17.811771,72.000000,48.000000);
-	v(-17.811771,102.000000,48.000000);
-	v(-29.811771,102.000000,48.000000);
-	v(-23.811771,-41.999996,48.000000);
-	v(-23.811771,-41.999996,-66.000000);
-	v(-23.811771,30.000004,35.999998);
-	v(-23.811771,48.000004,35.999998);
-	v(-23.811771,6.000004,35.999998);
-	v(-23.811771,-5.999996,35.999998);
-	v(-23.811771,-5.999996,48.000000);
-	v(-23.811771,6.000004,48.000000);
-	v(-23.811771,30.000004,48.000000);
-	v(-23.811771,48.000004,48.000000);
-	v(-59.811771,126.000000,66.000000);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,72.000000,66.000000);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,-132.000000,23.999998);
-	v(-59.811771,-156.000000,-66.000000);
-	v(-59.811771,-132.000000,-18.000002);
-	v(-59.811771,-108.000000,-18.000002);
-	v(-59.811771,156.000000,-66.000000);
-	v(-59.811771,-108.000000,23.999998);
-	v(-59.811771,72.000000,48.000000);
-	v(-59.811771,-84.000000,48.000000);
-	v(-59.811771,-156.000000,66.000000);
-	v(-59.811771,72.000000,66.000000);
-	v(-59.811771,-84.000000,66.000000);
-	v(-59.811771,126.000000,66.000000);
-	v(-59.811771,126.000000,66.000000);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,156.000000,29.999998);
-	v(-29.811771,72.000000,66.000000);
-	v(-17.811771,72.000000,66.000000);
-	v(-23.811771,-132.000000,23.999998);
-	v(-23.811771,-156.000000,-66.000000);
-	v(-23.811771,-132.000000,-18.000002);
-	v(-23.811771,-108.000000,-18.000002);
-	v(-23.811771,-84.000000,48.000000);
-	v(-23.811771,-108.000000,23.999998);
-	v(-17.811771,102.000000,66.000000);
-	v(-23.811771,-84.000000,48.000000);
-	v(-23.811771,-156.000000,66.000000);
-	v(-23.811771,-84.000000,66.000000);
-	v(-29.811771,102.000000,66.000000);
-	v(-23.811771,-84.000000,-66.000000);
-	v(-29.811771,72.000000,48.000000);
-	v(-17.811771,72.000000,48.000000);
-	v(-17.811771,102.000000,48.000000);
-	v(-29.811771,102.000000,48.000000);
-	v(-23.811771,-41.999996,48.000000);
-	v(-23.811771,-41.999996,-66.000000);
-	v(-23.811771,30.000004,35.999998);
-	v(-23.811771,48.000004,35.999998);
-	v(-23.811771,6.000004,35.999998);
-	v(-23.811771,-5.999996,35.999998);
-	v(-23.811771,-5.999996,48.000000);
-	v(-23.811771,6.000004,48.000000);
-	v(-23.811771,30.000004,48.000000);
-	v(-23.811771,48.000004,48.000000);
-	v(-59.811771,126.000000,66.000000);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,72.000000,66.000000);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,-132.000000,23.999998);
-	v(-59.811771,-156.000000,-66.000000);
-	v(-59.811771,-132.000000,-18.000002);
-	v(-59.811771,-108.000000,-18.000002);
-	v(-59.811771,156.000000,-66.000000);
-	v(-59.811771,-108.000000,23.999998);
-	v(-59.811771,72.000000,48.000000);
-	v(-59.811771,-84.000000,48.000000);
-	v(-59.811771,-156.000000,66.000000);
-	v(-59.811771,72.000000,66.000000);
-	v(-59.811771,-84.000000,66.000000);
-	v(-59.811771,126.000000,66.000000);
-	v(-59.811771,126.000000,66.000000);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,156.000000,29.999998);
-	v(-29.811771,72.000000,66.000000);
-	v(-17.811771,72.000000,66.000000);
-	v(-23.811771,-132.000000,23.999998);
-	v(-23.811771,-156.000000,-66.000000);
-	v(-23.811771,-132.000000,-18.000002);
-	v(-23.811771,-108.000000,-18.000002);
-	v(-23.811771,-84.000000,48.000000);
-	v(-23.811771,-108.000000,23.999998);
-	v(-17.811771,102.000000,66.000000);
-	v(-23.811771,-84.000000,48.000000);
-	v(-23.811771,-156.000000,66.000000);
-	v(-23.811771,-84.000000,66.000000);
-    /*
-	uv(0.000000,1.000000,0.996643,0.000000,1.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,1.000000,1.000000,0.000000,1.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,1.000000,1.000000,1.000000,1.000000);
-	uv(1.000000,0.000000,0.000000,0.000000,1.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000);
-	uv(0.996643,0.000000,0.996643,0.000000,0.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,0.000000,0.996643,0.000000,0.996643,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000);
-	uv(0.000000,1.000000,0.000000,1.000000,1.000000,1.000000,1.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,1.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,1.000000,0.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.167026,0.832973,0.832974,0.832973,0.832974,0.167026,0.167026,0.167026);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.996643,0.000000,0.000000,1.000000,1.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,1.000000,1.000000,1.000000,0.000000);
-	uv(1.000000,0.000000,0.000000,0.000000,1.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000);
-	uv(0.000000,1.000000,0.996643,0.000000,0.996643,0.000000,0.000000,1.000000);
-	uv(0.996643,0.000000,1.000000,0.000000,1.000000,0.000000,0.996643,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,0.000000,0.000000,1.000000,1.000000);
-	uv(1.000000,1.000000,0.000000,1.000000,0.000000,1.000000,1.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.832974,0.167026,0.832974,0.832973,0.167026,0.832973,0.167026,0.167026);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,0.996643,0.000000,1.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,1.000000,1.000000,0.000000,1.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,1.000000,1.000000,1.000000,1.000000);
-	uv(1.000000,0.000000,0.000000,0.000000,1.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000);
-	uv(0.996643,0.000000,0.996643,0.000000,0.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,0.000000,0.996643,0.000000,0.996643,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000);
-	uv(0.000000,1.000000,0.000000,1.000000,1.000000,1.000000,1.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,1.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,1.000000,0.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.167026,0.832973,0.832974,0.832973,0.832974,0.167026,0.167026,0.167026);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.996643,0.000000,0.000000,1.000000,1.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,1.000000,1.000000,1.000000,0.000000);
-	uv(1.000000,0.000000,0.000000,0.000000,1.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000);
-	uv(0.000000,1.000000,0.996643,0.000000,0.996643,0.000000,0.000000,1.000000);
-	uv(0.996643,0.000000,1.000000,0.000000,1.000000,0.000000,0.996643,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,0.000000,0.000000,1.000000,1.000000);
-	uv(1.000000,1.000000,0.000000,1.000000,0.000000,1.000000,1.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.832974,0.167026,0.832974,0.832973,0.167026,0.832973,0.167026,0.167026);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-    */
-	f3(26,27,28,0);
-	f4(180,173,178,177,0);
-	f4(68,67,59,60,0);
-	f4(14,34,33,13,0);
-	f3(21,14,19,0);
-	f4(59,67,70,64,0);
-	f4(24,40,39,22,0);
-	f3(55,175,178,0);
-	f3(2,1,0,0);
-	f4(0,26,28,2,0);
-	f4(1,27,26,0,0);
-	f4(2,28,27,1,0);
-	f4(8,16,21,24,0);
-	f4(22,10,13,8,0);
-	f4(189,183,180,45,0);
-	f4(6,25,4,19,0);
-	f4(15,14,13,10,0);
-	f4(70,67,68,69,0);
-	f3(22,8,24,0);
-	f4(8,31,36,16,0);
-	f4(21,38,40,24,0);
-	f4(22,39,32,10,0);
-	f4(13,33,31,8,0);
-	f4(44,192,175,55,0);
-	f4(16,36,34,14,0);
-	f4(58,63,72,66,0);
-	f4(49,52,51,50,0);
-	f4(45,48,43,189,0);
-	f4(31,39,40,36,0);
-	f4(32,39,31,33,0);
-	f4(32,33,34,42,0);
-	f4(48,47,197,43,0);
-	f4(62,63,58,57,0);
-	f4(30,37,197,190,0);
-	f4(41,52,49,29,0);
-	f4(37,51,52,41,0);
-	f4(26,41,29,23,0);
-	f4(57,58,66,65,0);
-	f4(30,50,51,37,0);
-	f4(19,23,29,49,0);
-	f4(189,43,186,183,0);
-	f4(72,63,62,71,0);
-	f4(19,72,35,21,0);
-	f3(21,16,14,0);
-	f4(71,62,57,65,0);
-	f4(69,68,60,61,0);
-	f4(195,66,180,181,0);
-	f4(26,28,188,186,0);
-	f4(15,6,19,14,0);
-	f4(10,32,42,56,0);
-	f3(10,56,15,0);
-	f4(56,54,53,55,0);
-	f3(187,186,188,0);
-	f4(15,178,188,28,0);
-	f4(47,46,190,197,0);
-	f4(193,194,177,176,0);
-	f3(177,181,180,0);
-	f4(54,69,61,53,0);
-	f4(199,200,184,182,0);
-	f4(34,38,54,56,0);
-	f3(170,171,169,0);
-	f4(188,186,169,171,0);
-	f4(186,187,170,169,0);
-	f4(187,188,171,170,0);
-	f4(181,179,174,184,0);
-	f4(176,175,182,174,0);
-	f3(179,181,177,0);
-	f4(172,185,173,180,0);
-	f4(176,177,178,175,0);
-	f4(60,59,64,61,0);
-	f3(174,182,184,0);
-	f4(196,191,174,179,0);
-	f4(200,198,181,184,0);
-	f4(192,199,182,175,0);
-	f4(191,193,176,174,0);
-	f4(56,55,178,15,0);
-	f4(194,196,179,177,0);
-	f4(70,71,65,64,0);
-	f4(47,48,45,46,0);
-	f3(34,56,42,0);
-	f4(200,199,191,196,0);
-	f4(191,199,192,193,0);
-	f4(194,193,192,44,0);
-	f4(72,19,180,66,0);
-	f4(50,30,190,46,0);
-	f4(43,41,26,186,0);
-	f4(36,40,38,34,0);
-	f4(198,200,196,194,0);
-	f4(55,159,198,194,0);
-	f3(154,55,194,0);
-	f4(203,204,202,201,0);
-	f4(205,206,204,203,0);
-	f4(207,208,206,205,0);
-	f4(201,202,208,207,0);
-	f4(204,206,208,202,0);
-	f4(205,203,201,207,0);
-	f4(211,212,210,209,0);
-	f4(213,214,212,211,0);
-	f4(215,216,214,213,0);
-	f4(209,210,216,215,0);
-	f4(212,214,216,210,0);
-	f4(213,211,209,215,0);
-	f3(243,244,245,0);
-	f4(397,390,395,394,0);
-	f4(285,284,276,277,0);
-	f4(231,251,250,230,0);
-	f3(238,231,236,0);
-	f4(276,284,287,281,0);
-	f4(241,257,256,239,0);
-	f3(272,392,395,0);
-	f3(219,218,217,0);
-	f4(217,243,245,219,0);
-	f4(218,244,243,217,0);
-	f4(219,245,244,218,0);
-	f4(225,233,238,241,0);
-	f4(239,227,230,225,0);
-	f4(406,400,397,262,0);
-	f4(223,242,221,236,0);
-	f4(232,231,230,227,0);
-	f4(287,284,285,286,0);
-	f3(239,225,241,0);
-	f4(225,248,253,233,0);
-	f4(238,255,257,241,0);
-	f4(239,256,249,227,0);
-	f4(230,250,248,225,0);
-	f4(261,409,392,272,0);
-	f4(233,253,251,231,0);
-	f4(275,280,289,283,0);
-	f4(266,269,268,267,0);
-	f4(253,257,259,251,0);
-	f4(248,256,257,253,0);
-	f4(249,256,248,250,0);
-	f4(249,250,251,259,0);
-	f4(265,264,414,260,0);
-	f4(279,280,275,274,0);
-	f4(247,254,414,407,0);
-	f4(258,269,266,246,0);
-	f4(254,268,269,258,0);
-	f4(243,258,246,240,0);
-	f4(274,275,283,282,0);
-	f4(247,267,268,254,0);
-	f4(236,240,246,266,0);
-	f4(406,260,403,400,0);
-	f4(289,280,279,288,0);
-	f4(236,289,252,238,0);
-	f3(238,233,231,0);
-	f4(288,279,274,282,0);
-	f4(286,285,277,278,0);
-	f4(412,283,397,398,0);
-	f4(243,245,405,403,0);
-	f4(232,223,236,231,0);
-	f4(227,249,259,273,0);
-	f3(227,273,232,0);
-	f4(252,271,273,259,0);
-	f3(404,403,405,0);
-	f4(232,395,405,245,0);
-	f4(264,263,407,414,0);
-	f4(410,411,394,393,0);
-	f3(394,398,397,0);
-	f4(271,286,278,270,0);
-	f4(416,417,401,399,0);
-	f4(272,270,412,261,0);
-	f3(387,388,386,0);
-	f4(405,403,386,388,0);
-	f4(403,404,387,386,0);
-	f4(404,405,388,387,0);
-	f4(398,396,391,401,0);
-	f4(393,392,399,391,0);
-	f3(396,398,394,0);
-	f4(389,402,390,397,0);
-	f4(393,394,395,392,0);
-	f4(277,276,281,278,0);
-	f3(391,399,401,0);
-	f4(413,408,391,396,0);
-	f4(417,415,398,401,0);
-	f4(409,416,399,392,0);
-	f4(408,410,393,391,0);
-	f4(273,272,395,232,0);
-	f4(411,413,396,394,0);
-	f4(287,288,282,281,0);
-	f4(264,265,262,263,0);
-	f4(261,417,413,411,0);
-	f4(417,416,408,413,0);
-	f4(408,416,409,410,0);
-	f4(411,410,409,261,0);
-	f4(289,236,397,283,0);
-	f4(267,247,407,263,0);
-	f4(260,258,243,403,0);
-	f4(262,265,260,406,0);
-	f4(273,271,270,272,0);
-
-    this.computeCentroids();
-    this.computeNormals();
-    
-    function material_color( mi ) {
-        var m = materials[mi];
-        if( m.col_diffuse )
-            return (m.col_diffuse[0]*255 << 16) + (m.col_diffuse[1]*255 << 8) + m.col_diffuse[2]*255;
-        else if ( m.a_dbg_color )
-            return  m.a_dbg_color;
-        else 
-            return 0xffeeeeee;
-    }
-    
-    function v( x, y, z ) {
-        scope.vertices.push( new THREE.Vertex( new THREE.Vector3( x, y, z ) ) );
-    }
-
-    function f3( a, b, c, mi ) {
-        var material = scope.materials[ mi ];
-        scope.faces.push( new THREE.Face3( a, b, c, null, material ) );
-    }
-
-    function f4( a, b, c, d, mi ) {
-        var material = scope.materials[ mi ];
-        scope.faces.push( new THREE.Face4( a, b, c, d, null, material ) );
-    }
-
-    function f3n( a, b, c, mi, n1, n2, n3 ) {
-        var material = scope.materials[ mi ];
-        var n1x = normals[n1][0];
-        var n1y = normals[n1][1];
-        var n1z = normals[n1][2];
-        var n2x = normals[n2][0];
-        var n2y = normals[n2][1];
-        var n2z = normals[n2][2];
-        var n3x = normals[n3][0];
-        var n3y = normals[n3][1];
-        var n3z = normals[n3][2];
-        scope.faces.push( new THREE.Face3( a, b, c, 
-                          [new THREE.Vector3( n1x, n1y, n1z ), new THREE.Vector3( n2x, n2y, n2z ), new THREE.Vector3( n3x, n3y, n3z )], 
-                          material ) );
-    }
-
-    function f4n( a, b, c, d, mi, n1, n2, n3, n4 ) {
-        var material = scope.materials[ mi ];
-        var n1x = normals[n1][0];
-        var n1y = normals[n1][1];
-        var n1z = normals[n1][2];
-        var n2x = normals[n2][0];
-        var n2y = normals[n2][1];
-        var n2z = normals[n2][2];
-        var n3x = normals[n3][0];
-        var n3y = normals[n3][1];
-        var n3z = normals[n3][2];
-        var n4x = normals[n4][0];
-        var n4y = normals[n4][1];
-        var n4z = normals[n4][2];
-        scope.faces.push( new THREE.Face4( a, b, c, d,
-                          [new THREE.Vector3( n1x, n1y, n1z ), new THREE.Vector3( n2x, n2y, n2z ), new THREE.Vector3( n3x, n3y, n3z ), new THREE.Vector3( n4x, n4y, n4z )], 
-                          material ) );
-    }
-
-    function uv( u1, v1, u2, v2, u3, v3, u4, v4 ) {
-        var uv = [];
-        uv.push( new THREE.UV( u1, v1 ) );
-        uv.push( new THREE.UV( u2, v2 ) );
-        uv.push( new THREE.UV( u3, v3 ) );
-        if ( u4 && v4 ) uv.push( new THREE.UV( u4, v4 ) );
-        scope.uvs.push( uv );
-    }
-
-    function init_materials() {
-        scope.materials = [];
-        for(var i=0; i<materials.length; ++i) {
-            scope.materials[i] = [ create_material( materials[i], urlbase ) ];
-        }
-    }
-    
-    function is_pow2( n ) {
-        var l = Math.log(n) / Math.LN2;
-        return Math.floor(l) == l;
-    }
-    
-    function nearest_pow2(n) {
-        var l = Math.log(n) / Math.LN2;
-        return Math.pow( 2, Math.round(l) );
-    }
-    
-    function create_material( m ) {
-        var material;
-        /*
-        if( m.map_diffuse && urlbase ) {
-            var texture = document.createElement( 'canvas' );
-            
-            // material = new THREE.MeshBitmapMaterial( texture );
-            material = new THREE.MeshBasicMaterial( { map: loadImage( urlbase ) }
-            
-            function loadImage( path ) {
-
-        		var image = document.createElement( 'img' );
-        		var texture = new THREE.Texture( image, THREE.UVMapping )
-
-        		image.onload = function () { texture.loaded = true; };
-        		image.src = path;
-
-        		return texture;
-
-        	}
-            
-        }
-        else */
-        if( m.col_diffuse ) {
-            var color = (m.col_diffuse[0]*255 << 16) + (m.col_diffuse[1]*255 << 8) + m.col_diffuse[2]*255;
-            material = new THREE.MeshBasicMaterial( {color:color, opacity:m.transparency} );
-        }
-        else if( m.a_dbg_color ) {
-            material = new THREE.MeshBasicMaterial( {color:m.a_dbg_color} );
-        }
-        else {
-            material = new THREE.MeshBasicMaterial( {color:0xffeeeeee} );
-        }
-
-        return material;
-    }
-    
-}
-
-Nano.prototype = new THREE.Geometry();
-Nano.prototype.constructor = Nano;

+ 0 - 1137
examples/obj/nano/Nano.obj

@@ -1,1137 +0,0 @@
-# WaveFront *.obj file (generated by CINEMA 4D)
-
-g NanoBody1
-usemtl Mat
-v 60.031319 139.365082 59.670143
-v 60.031319 169.365082 23.670141
-v 60.031319 169.365082 23.670141
-v 60.031319 85.365082 41.670143
-v 60.031319 85.365082 59.670143
-v 60.031319 139.365082 59.670143
-v 60.031319 169.365082 23.670141
-v 60.031319 -70.634918 59.670143
-v 60.031319 -118.634918 17.670141
-v 60.031319 -142.634918 59.670143
-v 60.031319 -142.634918 -72.329857
-v 60.031319 -70.634918 41.670143
-v 60.031319 85.365082 41.670143
-v 60.031319 -118.634918 -24.329859
-v 60.031319 -94.634918 -24.329859
-v 60.031319 169.365082 -72.329857
-v 60.031319 -94.634918 17.670141
-v 60.031319 85.365082 59.670143
-v 60.031319 -70.634918 41.670143
-v 60.031319 85.365082 41.670143
-v 60.031319 -70.634918 59.670143
-v 60.031319 -70.634918 41.670143
-v 60.031319 -142.634918 59.670143
-v 60.031319 85.365082 59.670143
-v 60.031319 -70.634918 59.670143
-v 60.031319 139.365082 59.670143
-v 60.031319 139.365082 59.670143
-v 60.031319 169.365082 23.670141
-v 60.031319 169.365082 23.670141
-v 30.031319 85.365082 59.670143
-v 18.031319 85.365082 59.670143
-v 24.031319 -118.634918 17.670141
-v 24.031319 -142.634918 -72.329857
-v 24.031319 -118.634918 -24.329859
-v 24.031319 -94.634918 -24.329859
-v 24.031319 -70.634918 41.670143
-v 24.031319 -94.634918 17.670141
-v 18.031319 115.365082 59.670143
-v 24.031319 -70.634918 41.670143
-v 24.031319 -142.634918 59.670143
-v 24.031319 -70.634918 59.670143
-v 30.031319 115.365082 59.670143
-v 24.031319 -70.634918 -72.329857
-v -29.968681 115.365082 59.670143
-v -23.968681 -70.634918 -72.329857
-v -29.968681 85.365082 41.670143
-v -17.968681 85.365082 41.670143
-v -17.968681 115.365082 41.670143
-v -29.968681 115.365082 41.670143
-v 30.031319 85.365082 41.670143
-v 18.031319 85.365082 41.670143
-v 18.031319 115.365082 41.670143
-v 30.031319 115.365082 41.670143
-v -23.968681 -28.634914 41.670143
-v 24.031319 -28.634914 41.670143
-v -23.968681 -28.634914 -72.329857
-v 24.031319 -28.634914 -72.329857
-v -23.968681 43.365086 29.670141
-v -23.968681 61.365086 29.670141
-v -23.968681 19.365086 29.670141
-v -23.968681 7.365086 29.670141
-v -23.968681 7.365086 41.670143
-v 24.031319 43.365086 29.670141
-v 24.031319 61.365086 29.670141
-v -23.968681 19.365086 41.670143
-v -23.968681 43.365086 41.670143
-v -23.968681 61.365086 41.670143
-v 24.031319 19.365086 29.670141
-v 24.031319 7.365086 29.670141
-v 24.031319 7.365086 41.670143
-v 24.031319 19.365086 41.670143
-v 24.031319 43.365086 41.670143
-v 24.031319 61.365086 41.670143
-v -59.968681 139.365082 59.670143
-v -59.968681 169.365082 23.670141
-v -59.968681 169.365082 23.670141
-v -59.968681 85.365082 59.670143
-v -59.968681 169.365082 23.670141
-v -59.968681 -118.634918 17.670141
-v -59.968681 -142.634918 -72.329857
-v -59.968681 -118.634918 -24.329859
-v -59.968681 -94.634918 -24.329859
-v -59.968681 169.365082 -72.329857
-v -59.968681 -94.634918 17.670141
-v -59.968681 85.365082 41.670143
-v -59.968681 -70.634918 41.670143
-v -59.968681 -142.634918 59.670143
-v -59.968681 85.365082 59.670143
-v -59.968681 -70.634918 59.670143
-v -59.968681 139.365082 59.670143
-v -59.968681 139.365082 59.670143
-v -59.968681 169.365082 23.670141
-v -59.968681 169.365082 23.670141
-v -29.968681 85.365082 59.670143
-v -17.968681 85.365082 59.670143
-v -23.968681 -118.634918 17.670141
-v -23.968681 -142.634918 -72.329857
-v -23.968681 -118.634918 -24.329859
-v -23.968681 -94.634918 -24.329859
-v -23.968681 -70.634918 41.670143
-v -23.968681 -94.634918 17.670141
-v -17.968681 115.365082 59.670143
-v -23.968681 -70.634918 41.670143
-v -23.968681 -142.634918 59.670143
-v -23.968681 -70.634918 59.670143
-v -29.968681 115.365082 59.670143
-v -23.968681 -70.634918 -72.329857
-v -29.968681 85.365082 41.670143
-v -17.968681 85.365082 41.670143
-v -17.968681 115.365082 41.670143
-v -29.968681 115.365082 41.670143
-v -23.968681 -28.634914 41.670143
-v -23.968681 -28.634914 -72.329857
-v -23.968681 43.365086 29.670141
-v -23.968681 61.365086 29.670141
-v -23.968681 19.365086 29.670141
-v -23.968681 7.365086 29.670141
-v -23.968681 7.365086 41.670143
-v -23.968681 19.365086 41.670143
-v -23.968681 43.365086 41.670143
-v -23.968681 61.365086 41.670143
-v -59.968681 139.365082 59.670143
-v -59.968681 169.365082 23.670141
-v -59.968681 169.365082 23.670141
-v -59.968681 85.365082 59.670143
-v -59.968681 169.365082 23.670141
-v -59.968681 -118.634918 17.670141
-v -59.968681 -142.634918 -72.329857
-v -59.968681 -118.634918 -24.329859
-v -59.968681 -94.634918 -24.329859
-v -59.968681 169.365082 -72.329857
-v -59.968681 -94.634918 17.670141
-v -59.968681 85.365082 41.670143
-v -59.968681 -70.634918 41.670143
-v -59.968681 -142.634918 59.670143
-v -59.968681 85.365082 59.670143
-v -59.968681 -70.634918 59.670143
-v -59.968681 139.365082 59.670143
-v -59.968681 139.365082 59.670143
-v -59.968681 169.365082 23.670141
-v -59.968681 169.365082 23.670141
-v -29.968681 85.365082 59.670143
-v -17.968681 85.365082 59.670143
-v -23.968681 -118.634918 17.670141
-v -23.968681 -142.634918 -72.329857
-v -23.968681 -118.634918 -24.329859
-v -23.968681 -94.634918 -24.329859
-v -23.968681 -70.634918 41.670143
-v -23.968681 -94.634918 17.670141
-v -17.968681 115.365082 59.670143
-v -23.968681 -70.634918 41.670143
-v -23.968681 -142.634918 59.670143
-v -23.968681 -70.634918 59.670143
-v -29.968681 115.365082 59.670143
-v -23.968681 -70.634918 -72.329857
-v -29.968681 85.365082 41.670143
-v -17.968681 85.365082 41.670143
-v -17.968681 115.365082 41.670143
-v -29.968681 115.365082 41.670143
-v -23.968681 -28.634914 41.670143
-v -23.968681 -28.634914 -72.329857
-v -23.968681 43.365086 29.670141
-v -23.968681 61.365086 29.670141
-v -23.968681 19.365086 29.670141
-v -23.968681 7.365086 29.670141
-v -23.968681 7.365086 41.670143
-v -23.968681 19.365086 41.670143
-v -23.968681 43.365086 41.670143
-v -23.968681 61.365086 41.670143
-v -59.968681 139.365082 59.670143
-v -59.968681 169.365082 23.670141
-v -59.968681 169.365082 23.670141
-v -59.968681 85.365082 59.670143
-v -59.968681 169.365082 23.670141
-v -59.968681 -118.634918 17.670141
-v -59.968681 -142.634918 -72.329857
-v -59.968681 -118.634918 -24.329859
-v -59.968681 -94.634918 -24.329859
-v -59.968681 169.365082 -72.329857
-v -59.968681 -94.634918 17.670141
-v -59.968681 85.365082 41.670143
-v -59.968681 -70.634918 41.670143
-v -59.968681 -142.634918 59.670143
-v -59.968681 85.365082 59.670143
-v -59.968681 -70.634918 59.670143
-v -59.968681 139.365082 59.670143
-v -59.968681 139.365082 59.670143
-v -59.968681 169.365082 23.670141
-v -59.968681 169.365082 23.670141
-v -29.968681 85.365082 59.670143
-v -17.968681 85.365082 59.670143
-v -23.968681 -118.634918 17.670141
-v -23.968681 -142.634918 -72.329857
-v -23.968681 -118.634918 -24.329859
-v -23.968681 -94.634918 -24.329859
-v -23.968681 -70.634918 41.670143
-v -23.968681 -94.634918 17.670141
-v -17.968681 115.365082 59.670143
-v -23.968681 -70.634918 41.670143
-v -23.968681 -142.634918 59.670143
-v -23.968681 -70.634918 59.670143
-
-vt 0 0 0
-vt 0 1 0
-vt 0.996643 1 0
-vt 1 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0.996643 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0.167026 0.167027 0
-vt 1 1 0
-vt 0 1 0
-vt 0 1 0
-vt 0.167026 0.832974 0
-vt 1 0 0
-vt 0.832974 0.832974 0
-vt 1 1 0
-vt 1 0 0
-vt 0.832974 0.167027 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0.167026 0.167027 0
-vt 0 0 0
-vt 1 0 0
-vt 0.167026 0.832974 0
-vt 1 1 0
-vt 1 0 0
-vt 0.832974 0.832974 0
-vt 1 1 0
-vt 1 0 0
-vt 0.832974 0.167027 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 0.996643 1 0
-vt 1 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0.996643 1 0
-vt 1 1 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 1 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 1 0
-
-f 27/43 28/44 29/47 
-f 181/186 174/167 179/181 178/178 
-f 69/146 68/144 60/125 61/129 
-f 15/21 35/62 34/58 14/17 
-f 22/33 15/20 20/27 
-f 60/126 68/144 71/151 65/137 
-f 25/38 41/75 40/72 23/35 
-f 56/114 176/173 179/180 
-f 3/6 2/4 1/2 
-f 1/1 27/43 29/47 3/5 
-f 2/3 28/44 27/43 1/1 
-f 3/5 29/47 28/44 2/3 
-f 9/12 17/26 22/32 25/40 
-f 23/34 11/14 14/16 9/10 
-f 190/204 184/195 181/185 46/88 
-f 7/9 26/41 5/7 20/29 
-f 16/24 15/20 14/16 11/15 
-f 71/150 68/143 69/145 70/148 
-f 23/34 9/11 25/39 
-f 9/10 32/53 37/66 17/25 
-f 22/30 39/71 41/75 25/38 
-f 23/34 40/73 33/54 11/14 
-f 14/16 34/56 32/53 9/10 
-f 45/85 193/212 176/173 56/115 
-f 17/26 37/65 35/60 15/19 
-f 59/124 64/136 73/155 67/141 
-f 50/100 53/109 52/106 51/103 
-f 46/87 49/97 44/81 190/205 
-f 32/53 40/72 41/74 37/64 
-f 33/55 40/72 32/52 34/57 
-f 33/55 34/56 35/61 43/80 
-f 49/96 48/94 198/226 44/83 
-f 63/134 64/136 59/123 58/122 
-f 31/51 38/69 198/225 191/208 
-f 42/78 53/108 50/99 30/49 
-f 38/68 52/105 53/107 42/77 
-f 27/43 42/76 30/48 24/37 
-f 58/121 59/123 67/141 66/140 
-f 31/51 51/102 52/104 38/67 
-f 20/29 24/36 30/48 50/98 
-f 190/204 44/82 187/201 184/194 
-f 73/156 64/135 63/133 72/153 
-f 20/28 73/155 36/63 22/31 
-f 22/30 17/25 15/18 
-f 72/153 63/133 58/120 66/139 
-f 70/148 69/145 61/128 62/132 
-f 196/220 67/142 181/187 182/191 
-f 27/43 29/46 189/203 187/200 
-f 16/24 7/8 20/27 15/18 
-f 11/13 33/54 43/79 57/119 
-f 11/13 57/117 16/23 
-f 57/119 55/112 54/111 56/116 
-f 188/202 187/201 189/203 
-f 16/22 179/180 189/203 29/45 
-f 48/93 47/91 191/207 198/224 
-f 194/215 195/219 178/179 177/175 
-f 178/177 182/190 181/186 
-f 55/113 70/147 62/131 54/110 
-f 200/229 201/232 185/196 183/193 
-f 35/60 39/71 55/112 57/119 
-f 171/162 172/164 170/160 
-f 189/203 187/201 170/159 172/163 
-f 187/201 188/202 171/161 170/159 
-f 188/202 189/203 172/163 171/161 
-f 182/189 180/182 175/170 185/198 
-f 177/174 176/171 183/192 175/168 
-f 180/183 182/188 178/178 
-f 173/165 186/199 174/166 181/185 
-f 177/174 178/177 179/181 176/172 
-f 61/127 60/125 65/137 62/130 
-f 175/169 183/192 185/197 
-f 197/221 192/210 175/168 180/183 
-f 201/232 199/227 182/188 185/196 
-f 193/212 200/230 183/192 176/171 
-f 192/210 194/213 177/174 175/168 
-f 57/118 56/114 179/180 16/22 
-f 195/216 197/223 180/182 178/176 
-f 71/149 72/152 66/138 65/137 
-f 48/92 49/95 46/86 47/90 
-f 35/60 57/117 43/79 
-f 201/231 200/229 192/210 197/222 
-f 192/209 200/229 193/211 194/214 
-f 195/218 194/213 193/211 45/84 
-f 73/154 20/27 181/184 67/141 
-f 51/101 31/50 191/206 47/89 
-f 44/81 42/76 27/42 187/200 
-f 37/64 41/74 39/70 35/59 
-f 199/228 201/231 197/221 195/217 
-f 56/115 160/158 199/227 195/216 
-f 155/157 56/114 195/216 
-
-g NanoArmL
-usemtl Mat
-v -83.910797 -40.962219 -7.151447
-v -83.910797 116.537781 -7.151447
-v -61.410797 -40.962219 -7.151447
-v -61.410797 116.537781 -7.151447
-v -61.410797 -40.962219 -59.651447
-v -61.410797 116.537781 -59.651447
-v -83.910797 -40.962219 -59.651447
-v -83.910797 116.537781 -59.651447
-
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-
-f 204/241 205/244 203/238 202/235 
-f 206/245 207/247 205/243 204/240 
-f 208/250 209/252 207/248 206/246 
-f 202/234 203/237 209/251 208/249 
-f 205/242 207/247 209/251 203/236 
-f 206/245 204/239 202/233 208/249 
-
-g NanoArmR
-usemtl Mat
-v 61.096977 -40.962219 -7.151447
-v 61.096977 116.537781 -7.151447
-v 83.596977 -40.962219 -7.151447
-v 83.596977 116.537781 -7.151447
-v 83.596977 -40.962219 -59.651447
-v 83.596977 116.537781 -59.651447
-v 61.096977 -40.962219 -59.651447
-v 61.096977 116.537781 -59.651447
-
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-
-f 212/261 213/264 211/258 210/255 
-f 214/265 215/267 213/263 212/260 
-f 216/270 217/272 215/268 214/266 
-f 210/254 211/257 217/271 216/269 
-f 213/262 215/267 217/271 211/256 
-f 214/265 212/259 210/253 216/269 
-
-g NanoBody
-usemtl Mat
-v 60.031319 139.365082 59.670143
-v 60.031319 169.365082 23.670141
-v 60.031319 169.365082 23.670141
-v 60.031319 85.365082 41.670143
-v 60.031319 85.365082 59.670143
-v 60.031319 139.365082 59.670143
-v 60.031319 169.365082 23.670141
-v 60.031319 -70.634918 59.670143
-v 60.031319 -118.634918 17.670141
-v 60.031319 -142.634918 59.670143
-v 60.031319 -142.634918 -72.329857
-v 60.031319 -70.634918 41.670143
-v 60.031319 85.365082 41.670143
-v 60.031319 -118.634918 -24.329859
-v 60.031319 -94.634918 -24.329859
-v 60.031319 169.365082 -72.329857
-v 60.031319 -94.634918 17.670141
-v 60.031319 85.365082 59.670143
-v 60.031319 -70.634918 41.670143
-v 60.031319 85.365082 41.670143
-v 60.031319 -70.634918 59.670143
-v 60.031319 -70.634918 41.670143
-v 60.031319 -142.634918 59.670143
-v 60.031319 85.365082 59.670143
-v 60.031319 -70.634918 59.670143
-v 60.031319 139.365082 59.670143
-v 60.031319 139.365082 59.670143
-v 60.031319 169.365082 23.670141
-v 60.031319 169.365082 23.670141
-v 30.031319 85.365082 59.670143
-v 18.031319 85.365082 59.670143
-v 24.031319 -118.634918 17.670141
-v 24.031319 -142.634918 -72.329857
-v 24.031319 -118.634918 -24.329859
-v 24.031319 -94.634918 -24.329859
-v 24.031319 -70.634918 41.670143
-v 24.031319 -94.634918 17.670141
-v 18.031319 115.365082 59.670143
-v 24.031319 -70.634918 41.670143
-v 24.031319 -142.634918 59.670143
-v 24.031319 -70.634918 59.670143
-v 30.031319 115.365082 59.670143
-v 24.031319 -70.634918 -72.329857
-v -29.968681 115.365082 59.670143
-v -23.968681 -70.634918 -72.329857
-v -29.968681 85.365082 41.670143
-v -17.968681 85.365082 41.670143
-v -17.968681 115.365082 41.670143
-v -29.968681 115.365082 41.670143
-v 30.031319 85.365082 41.670143
-v 18.031319 85.365082 41.670143
-v 18.031319 115.365082 41.670143
-v 30.031319 115.365082 41.670143
-v -23.968681 -28.634914 41.670143
-v 24.031319 -28.634914 41.670143
-v -23.968681 -28.634914 -72.329857
-v 24.031319 -28.634914 -72.329857
-v -23.968681 43.365086 29.670141
-v -23.968681 61.365086 29.670141
-v -23.968681 19.365086 29.670141
-v -23.968681 7.365086 29.670141
-v -23.968681 7.365086 41.670143
-v 24.031319 43.365086 29.670141
-v 24.031319 61.365086 29.670141
-v -23.968681 19.365086 41.670143
-v -23.968681 43.365086 41.670143
-v -23.968681 61.365086 41.670143
-v 24.031319 19.365086 29.670141
-v 24.031319 7.365086 29.670141
-v 24.031319 7.365086 41.670143
-v 24.031319 19.365086 41.670143
-v 24.031319 43.365086 41.670143
-v 24.031319 61.365086 41.670143
-v -59.968681 139.365082 59.670143
-v -59.968681 169.365082 23.670141
-v -59.968681 169.365082 23.670141
-v -59.968681 85.365082 59.670143
-v -59.968681 169.365082 23.670141
-v -59.968681 -118.634918 17.670141
-v -59.968681 -142.634918 -72.329857
-v -59.968681 -118.634918 -24.329859
-v -59.968681 -94.634918 -24.329859
-v -59.968681 169.365082 -72.329857
-v -59.968681 -94.634918 17.670141
-v -59.968681 85.365082 41.670143
-v -59.968681 -70.634918 41.670143
-v -59.968681 -142.634918 59.670143
-v -59.968681 85.365082 59.670143
-v -59.968681 -70.634918 59.670143
-v -59.968681 139.365082 59.670143
-v -59.968681 139.365082 59.670143
-v -59.968681 169.365082 23.670141
-v -59.968681 169.365082 23.670141
-v -29.968681 85.365082 59.670143
-v -17.968681 85.365082 59.670143
-v -23.968681 -118.634918 17.670141
-v -23.968681 -142.634918 -72.329857
-v -23.968681 -118.634918 -24.329859
-v -23.968681 -94.634918 -24.329859
-v -23.968681 -70.634918 41.670143
-v -23.968681 -94.634918 17.670141
-v -17.968681 115.365082 59.670143
-v -23.968681 -70.634918 41.670143
-v -23.968681 -142.634918 59.670143
-v -23.968681 -70.634918 59.670143
-v -29.968681 115.365082 59.670143
-v -23.968681 -70.634918 -72.329857
-v -29.968681 85.365082 41.670143
-v -17.968681 85.365082 41.670143
-v -17.968681 115.365082 41.670143
-v -29.968681 115.365082 41.670143
-v -23.968681 -28.634914 41.670143
-v -23.968681 -28.634914 -72.329857
-v -23.968681 43.365086 29.670141
-v -23.968681 61.365086 29.670141
-v -23.968681 19.365086 29.670141
-v -23.968681 7.365086 29.670141
-v -23.968681 7.365086 41.670143
-v -23.968681 19.365086 41.670143
-v -23.968681 43.365086 41.670143
-v -23.968681 61.365086 41.670143
-v -59.968681 139.365082 59.670143
-v -59.968681 169.365082 23.670141
-v -59.968681 169.365082 23.670141
-v -59.968681 85.365082 59.670143
-v -59.968681 169.365082 23.670141
-v -59.968681 -118.634918 17.670141
-v -59.968681 -142.634918 -72.329857
-v -59.968681 -118.634918 -24.329859
-v -59.968681 -94.634918 -24.329859
-v -59.968681 169.365082 -72.329857
-v -59.968681 -94.634918 17.670141
-v -59.968681 85.365082 41.670143
-v -59.968681 -70.634918 41.670143
-v -59.968681 -142.634918 59.670143
-v -59.968681 85.365082 59.670143
-v -59.968681 -70.634918 59.670143
-v -59.968681 139.365082 59.670143
-v -59.968681 139.365082 59.670143
-v -59.968681 169.365082 23.670141
-v -59.968681 169.365082 23.670141
-v -29.968681 85.365082 59.670143
-v -17.968681 85.365082 59.670143
-v -23.968681 -118.634918 17.670141
-v -23.968681 -142.634918 -72.329857
-v -23.968681 -118.634918 -24.329859
-v -23.968681 -94.634918 -24.329859
-v -23.968681 -70.634918 41.670143
-v -23.968681 -94.634918 17.670141
-v -17.968681 115.365082 59.670143
-v -23.968681 -70.634918 41.670143
-v -23.968681 -142.634918 59.670143
-v -23.968681 -70.634918 59.670143
-v -29.968681 115.365082 59.670143
-v -23.968681 -70.634918 -72.329857
-v -29.968681 85.365082 41.670143
-v -17.968681 85.365082 41.670143
-v -17.968681 115.365082 41.670143
-v -29.968681 115.365082 41.670143
-v -23.968681 -28.634914 41.670143
-v -23.968681 -28.634914 -72.329857
-v -23.968681 43.365086 29.670141
-v -23.968681 61.365086 29.670141
-v -23.968681 19.365086 29.670141
-v -23.968681 7.365086 29.670141
-v -23.968681 7.365086 41.670143
-v -23.968681 19.365086 41.670143
-v -23.968681 43.365086 41.670143
-v -23.968681 61.365086 41.670143
-v -59.968681 139.365082 59.670143
-v -59.968681 169.365082 23.670141
-v -59.968681 169.365082 23.670141
-v -59.968681 85.365082 59.670143
-v -59.968681 169.365082 23.670141
-v -59.968681 -118.634918 17.670141
-v -59.968681 -142.634918 -72.329857
-v -59.968681 -118.634918 -24.329859
-v -59.968681 -94.634918 -24.329859
-v -59.968681 169.365082 -72.329857
-v -59.968681 -94.634918 17.670141
-v -59.968681 85.365082 41.670143
-v -59.968681 -70.634918 41.670143
-v -59.968681 -142.634918 59.670143
-v -59.968681 85.365082 59.670143
-v -59.968681 -70.634918 59.670143
-v -59.968681 139.365082 59.670143
-v -59.968681 139.365082 59.670143
-v -59.968681 169.365082 23.670141
-v -59.968681 169.365082 23.670141
-v -29.968681 85.365082 59.670143
-v -17.968681 85.365082 59.670143
-v -23.968681 -118.634918 17.670141
-v -23.968681 -142.634918 -72.329857
-v -23.968681 -118.634918 -24.329859
-v -23.968681 -94.634918 -24.329859
-v -23.968681 -70.634918 41.670143
-v -23.968681 -94.634918 17.670141
-v -17.968681 115.365082 59.670143
-v -23.968681 -70.634918 41.670143
-v -23.968681 -142.634918 59.670143
-v -23.968681 -70.634918 59.670143
-
-vt 0 0 0
-vt 0 1 0
-vt 0.996643 1 0
-vt 1 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0.996643 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0.167026 0.167027 0
-vt 0 1 0
-vt 0 1 0
-vt 0.167026 0.832974 0
-vt 1 0 0
-vt 0.832974 0.832974 0
-vt 1 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0.832974 0.167027 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0.167026 0.167027 0
-vt 0 0 0
-vt 1 0 0
-vt 0.167026 0.832974 0
-vt 1 1 0
-vt 1 0 0
-vt 0.832974 0.832974 0
-vt 1 1 0
-vt 1 0 0
-vt 0.832974 0.167027 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0.996643 1 0
-vt 1 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0.996643 1 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-
-f 244/315 245/316 246/319 
-f 398/460 391/441 396/455 395/452 
-f 286/422 285/420 277/401 278/405 
-f 232/293 252/333 251/330 231/289 
-f 239/305 232/292 237/299 
-f 277/402 285/420 288/427 282/413 
-f 242/310 258/348 257/344 240/307 
-f 273/391 393/447 396/454 
-f 220/278 219/276 218/274 
-f 218/273 244/315 246/319 220/277 
-f 219/275 245/316 244/315 218/273 
-f 220/277 246/319 245/316 219/275 
-f 226/284 234/298 239/304 242/312 
-f 240/306 228/286 231/288 226/282 
-f 407/479 401/469 398/459 263/363 
-f 224/281 243/313 222/279 237/301 
-f 233/296 232/292 231/288 228/287 
-f 288/426 285/419 286/421 287/424 
-f 240/306 226/283 242/311 
-f 226/282 249/325 254/339 234/297 
-f 239/302 256/343 258/348 242/310 
-f 240/306 257/345 250/326 228/286 
-f 231/288 251/328 249/325 226/282 
-f 262/360 410/486 393/447 273/392 
-f 234/298 254/338 252/332 232/291 
-f 276/400 281/412 290/431 284/417 
-f 267/375 270/384 269/381 268/378 
-f 254/337 258/347 260/354 252/332 
-f 249/325 257/344 258/346 254/336 
-f 250/327 257/344 249/324 251/329 
-f 250/327 251/328 252/331 260/352 
-f 266/372 265/369 415/501 261/357 
-f 280/410 281/412 276/399 275/398 
-f 248/323 255/342 415/500 408/482 
-f 259/351 270/383 267/374 247/321 
-f 255/341 269/380 270/382 259/350 
-f 244/315 259/349 247/320 241/309 
-f 275/397 276/399 284/417 283/416 
-f 248/323 268/377 269/379 255/340 
-f 237/301 241/308 247/320 267/373 
-f 407/479 261/356 404/475 401/468 
-f 290/432 281/411 280/409 289/429 
-f 237/300 290/431 253/335 239/303 
-f 239/302 234/297 232/290 
-f 289/429 280/409 275/396 283/415 
-f 287/424 286/421 278/404 279/408 
-f 413/494 284/418 398/461 399/465 
-f 244/315 246/318 406/477 404/474 
-f 233/296 224/280 237/299 232/290 
-f 228/285 250/326 260/353 274/393 
-f 228/285 274/395 233/295 
-f 253/334 272/388 274/395 260/352 
-f 405/476 404/475 406/477 
-f 233/294 396/454 406/477 246/317 
-f 265/368 264/366 408/481 415/499 
-f 411/489 412/492 395/453 394/449 
-f 395/451 399/464 398/460 
-f 272/389 287/423 279/407 271/387 
-f 417/503 418/507 402/470 400/467 
-f 273/391 271/386 413/493 262/358 
-f 388/436 389/438 387/434 
-f 406/477 404/475 387/433 389/437 
-f 404/475 405/476 388/435 387/433 
-f 405/476 406/477 389/437 388/435 
-f 399/463 397/456 392/444 402/472 
-f 394/448 393/445 400/466 392/442 
-f 397/457 399/462 395/452 
-f 390/439 403/473 391/440 398/459 
-f 394/448 395/451 396/455 393/446 
-f 278/403 277/401 282/413 279/406 
-f 392/443 400/466 402/471 
-f 414/498 409/484 392/442 397/457 
-f 418/507 416/502 399/462 402/470 
-f 410/486 417/504 400/466 393/445 
-f 409/484 411/487 394/448 392/442 
-f 274/394 273/391 396/454 233/294 
-f 412/491 414/497 397/456 395/450 
-f 288/425 289/428 283/414 282/413 
-f 265/367 266/371 263/362 264/365 
-f 262/359 418/506 414/496 412/491 
-f 418/505 417/503 409/484 414/495 
-f 409/483 417/503 410/485 411/488 
-f 412/490 411/487 410/485 262/358 
-f 290/430 237/299 398/458 284/417 
-f 268/376 248/322 408/480 264/364 
-f 261/355 259/349 244/314 404/474 
-f 263/361 266/370 261/355 407/478 
-f 274/393 272/388 271/385 273/390 
-

+ 0 - 575
examples/obj/nano/nanoBody.js

@@ -1,575 +0,0 @@
-// Converted from: nanoBody.obj
-//  vertices: 217
-//  faces: 100 
-//  materials: 1
-//
-//  Generated with OBJ -> Three.js converter
-//  http://github.com/alteredq/three.js/blob/master/utils/exporters/convert_obj_threejs.py
-
-var nanoBody = function ( urlbase ) {
-    var scope = this;
-
-    THREE.Geometry.call(this);
-
-    var materials = [	{
-	"a_dbg_color" : 0xffeeeeee,
-	"a_dbg_index" : 0,
-	"a_dbg_name" : "Mat"
-	}];
-
-    init_materials();
-    
-    var normals = [];
-
-	v(-83.753887,-54.327301,-0.821590);
-	v(-83.753887,103.172699,-0.821590);
-	v(-61.253887,-54.327301,-0.821590);
-	v(-61.253887,103.172699,-0.821590);
-	v(-61.253887,-54.327301,-53.321590);
-	v(-61.253887,103.172699,-53.321590);
-	v(-83.753887,-54.327301,-53.321590);
-	v(-83.753887,103.172699,-53.321590);
-	v(61.253887,-54.327301,-0.821590);
-	v(61.253887,103.172699,-0.821590);
-	v(83.753887,-54.327301,-0.821590);
-	v(83.753887,103.172699,-0.821590);
-	v(83.753887,-54.327301,-53.321590);
-	v(83.753887,103.172699,-53.321590);
-	v(61.253887,-54.327301,-53.321590);
-	v(61.253887,103.172699,-53.321590);
-	v(60.188229,126.000000,66.000000);
-	v(60.188229,156.000000,29.999998);
-	v(60.188229,156.000000,29.999998);
-	v(60.188229,72.000000,48.000000);
-	v(60.188229,72.000000,66.000000);
-	v(60.188229,126.000000,66.000000);
-	v(60.188229,156.000000,29.999998);
-	v(60.188229,-84.000000,66.000000);
-	v(60.188229,-132.000000,23.999998);
-	v(60.188229,-156.000000,66.000000);
-	v(60.188229,-156.000000,-66.000000);
-	v(60.188229,-84.000000,48.000000);
-	v(60.188229,72.000000,48.000000);
-	v(60.188229,-132.000000,-18.000002);
-	v(60.188229,-108.000000,-18.000002);
-	v(60.188229,156.000000,-66.000000);
-	v(60.188229,-108.000000,23.999998);
-	v(60.188229,72.000000,66.000000);
-	v(60.188229,-84.000000,48.000000);
-	v(60.188229,72.000000,48.000000);
-	v(60.188229,-84.000000,66.000000);
-	v(60.188229,-84.000000,48.000000);
-	v(60.188229,-156.000000,66.000000);
-	v(60.188229,72.000000,66.000000);
-	v(60.188229,-84.000000,66.000000);
-	v(60.188229,126.000000,66.000000);
-	v(60.188229,126.000000,66.000000);
-	v(60.188229,156.000000,29.999998);
-	v(60.188229,156.000000,29.999998);
-	v(30.188229,72.000000,66.000000);
-	v(18.188229,72.000000,66.000000);
-	v(24.188229,-132.000000,23.999998);
-	v(24.188229,-156.000000,-66.000000);
-	v(24.188229,-132.000000,-18.000002);
-	v(24.188229,-108.000000,-18.000002);
-	v(24.188229,-84.000000,48.000000);
-	v(24.188229,-108.000000,23.999998);
-	v(18.188229,102.000000,66.000000);
-	v(24.188229,-84.000000,48.000000);
-	v(24.188229,-156.000000,66.000000);
-	v(24.188229,-84.000000,66.000000);
-	v(30.188229,102.000000,66.000000);
-	v(24.188229,-84.000000,-66.000000);
-	v(-29.811771,102.000000,66.000000);
-	v(-23.811771,-84.000000,-66.000000);
-	v(-29.811771,72.000000,48.000000);
-	v(-17.811771,72.000000,48.000000);
-	v(-17.811771,102.000000,48.000000);
-	v(-29.811771,102.000000,48.000000);
-	v(30.188229,72.000000,48.000000);
-	v(18.188229,72.000000,48.000000);
-	v(18.188229,102.000000,48.000000);
-	v(30.188229,102.000000,48.000000);
-	v(-23.811771,-41.999996,48.000000);
-	v(24.188229,-41.999996,48.000000);
-	v(-23.811771,-41.999996,-66.000000);
-	v(24.188229,-41.999996,-66.000000);
-	v(-23.811771,30.000004,35.999998);
-	v(-23.811771,48.000004,35.999998);
-	v(-23.811771,6.000004,35.999998);
-	v(-23.811771,-5.999996,35.999998);
-	v(-23.811771,-5.999996,48.000000);
-	v(24.188229,30.000004,35.999998);
-	v(24.188229,48.000004,35.999998);
-	v(-23.811771,6.000004,48.000000);
-	v(-23.811771,30.000004,48.000000);
-	v(-23.811771,48.000004,48.000000);
-	v(24.188229,6.000004,35.999998);
-	v(24.188229,-5.999996,35.999998);
-	v(24.188229,-5.999996,48.000000);
-	v(24.188229,6.000004,48.000000);
-	v(24.188229,30.000004,48.000000);
-	v(24.188229,48.000004,48.000000);
-	v(-59.811771,126.000000,66.000000);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,72.000000,66.000000);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,-132.000000,23.999998);
-	v(-59.811771,-156.000000,-66.000000);
-	v(-59.811771,-132.000000,-18.000002);
-	v(-59.811771,-108.000000,-18.000002);
-	v(-59.811771,156.000000,-66.000000);
-	v(-59.811771,-108.000000,23.999998);
-	v(-59.811771,72.000000,48.000000);
-	v(-59.811771,-84.000000,48.000000);
-	v(-59.811771,-156.000000,66.000000);
-	v(-59.811771,72.000000,66.000000);
-	v(-59.811771,-84.000000,66.000000);
-	v(-59.811771,126.000000,66.000000);
-	v(-59.811771,126.000000,66.000000);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,156.000000,29.999998);
-	v(-29.811771,72.000000,66.000000);
-	v(-17.811771,72.000000,66.000000);
-	v(-23.811771,-132.000000,23.999998);
-	v(-23.811771,-156.000000,-66.000000);
-	v(-23.811771,-132.000000,-18.000002);
-	v(-23.811771,-108.000000,-18.000002);
-	v(-23.811771,-84.000000,48.000000);
-	v(-23.811771,-108.000000,23.999998);
-	v(-17.811771,102.000000,66.000000);
-	v(-23.811771,-84.000000,48.000000);
-	v(-23.811771,-156.000000,66.000000);
-	v(-23.811771,-84.000000,66.000000);
-	v(-29.811771,102.000000,66.000000);
-	v(-23.811771,-84.000000,-66.000000);
-	v(-29.811771,72.000000,48.000000);
-	v(-17.811771,72.000000,48.000000);
-	v(-17.811771,102.000000,48.000000);
-	v(-29.811771,102.000000,48.000000);
-	v(-23.811771,-41.999996,48.000000);
-	v(-23.811771,-41.999996,-66.000000);
-	v(-23.811771,30.000004,35.999998);
-	v(-23.811771,48.000004,35.999998);
-	v(-23.811771,6.000004,35.999998);
-	v(-23.811771,-5.999996,35.999998);
-	v(-23.811771,-5.999996,48.000000);
-	v(-23.811771,6.000004,48.000000);
-	v(-23.811771,30.000004,48.000000);
-	v(-23.811771,48.000004,48.000000);
-	v(-59.811771,126.000000,66.000000);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,72.000000,66.000000);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,-132.000000,23.999998);
-	v(-59.811771,-156.000000,-66.000000);
-	v(-59.811771,-132.000000,-18.000002);
-	v(-59.811771,-108.000000,-18.000002);
-	v(-59.811771,156.000000,-66.000000);
-	v(-59.811771,-108.000000,23.999998);
-	v(-59.811771,72.000000,48.000000);
-	v(-59.811771,-84.000000,48.000000);
-	v(-59.811771,-156.000000,66.000000);
-	v(-59.811771,72.000000,66.000000);
-	v(-59.811771,-84.000000,66.000000);
-	v(-59.811771,126.000000,66.000000);
-	v(-59.811771,126.000000,66.000000);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,156.000000,29.999998);
-	v(-29.811771,72.000000,66.000000);
-	v(-17.811771,72.000000,66.000000);
-	v(-23.811771,-132.000000,23.999998);
-	v(-23.811771,-156.000000,-66.000000);
-	v(-23.811771,-132.000000,-18.000002);
-	v(-23.811771,-108.000000,-18.000002);
-	v(-23.811771,-84.000000,48.000000);
-	v(-23.811771,-108.000000,23.999998);
-	v(-17.811771,102.000000,66.000000);
-	v(-23.811771,-84.000000,48.000000);
-	v(-23.811771,-156.000000,66.000000);
-	v(-23.811771,-84.000000,66.000000);
-	v(-29.811771,102.000000,66.000000);
-	v(-23.811771,-84.000000,-66.000000);
-	v(-29.811771,72.000000,48.000000);
-	v(-17.811771,72.000000,48.000000);
-	v(-17.811771,102.000000,48.000000);
-	v(-29.811771,102.000000,48.000000);
-	v(-23.811771,-41.999996,48.000000);
-	v(-23.811771,-41.999996,-66.000000);
-	v(-23.811771,30.000004,35.999998);
-	v(-23.811771,48.000004,35.999998);
-	v(-23.811771,6.000004,35.999998);
-	v(-23.811771,-5.999996,35.999998);
-	v(-23.811771,-5.999996,48.000000);
-	v(-23.811771,6.000004,48.000000);
-	v(-23.811771,30.000004,48.000000);
-	v(-23.811771,48.000004,48.000000);
-	v(-59.811771,126.000000,66.000000);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,72.000000,66.000000);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,-132.000000,23.999998);
-	v(-59.811771,-156.000000,-66.000000);
-	v(-59.811771,-132.000000,-18.000002);
-	v(-59.811771,-108.000000,-18.000002);
-	v(-59.811771,156.000000,-66.000000);
-	v(-59.811771,-108.000000,23.999998);
-	v(-59.811771,72.000000,48.000000);
-	v(-59.811771,-84.000000,48.000000);
-	v(-59.811771,-156.000000,66.000000);
-	v(-59.811771,72.000000,66.000000);
-	v(-59.811771,-84.000000,66.000000);
-	v(-59.811771,126.000000,66.000000);
-	v(-59.811771,126.000000,66.000000);
-	v(-59.811771,156.000000,29.999998);
-	v(-59.811771,156.000000,29.999998);
-	v(-29.811771,72.000000,66.000000);
-	v(-17.811771,72.000000,66.000000);
-	v(-23.811771,-132.000000,23.999998);
-	v(-23.811771,-156.000000,-66.000000);
-	v(-23.811771,-132.000000,-18.000002);
-	v(-23.811771,-108.000000,-18.000002);
-	v(-23.811771,-84.000000,48.000000);
-	v(-23.811771,-108.000000,23.999998);
-	v(-17.811771,102.000000,66.000000);
-	v(-23.811771,-84.000000,48.000000);
-	v(-23.811771,-156.000000,66.000000);
-	v(-23.811771,-84.000000,66.000000);
-    /*
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,0.996643,0.000000,1.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,1.000000,1.000000,0.000000,1.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,1.000000,1.000000,1.000000,1.000000);
-	uv(1.000000,0.000000,0.000000,0.000000,1.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000);
-	uv(0.996643,0.000000,0.996643,0.000000,0.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,0.000000,0.996643,0.000000,0.996643,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000);
-	uv(0.000000,1.000000,0.000000,1.000000,1.000000,1.000000,1.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,0.000000,0.000000,1.000000,0.000000,1.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,1.000000,0.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,0.000000,0.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.167026,0.832973,0.832974,0.832973,0.832974,0.167026,0.167026,0.167026);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.996643,0.000000,0.000000,1.000000,1.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,1.000000,1.000000,1.000000,0.000000);
-	uv(1.000000,0.000000,0.000000,0.000000,1.000000,1.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000,1.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000);
-	uv(0.000000,1.000000,0.996643,0.000000,0.996643,0.000000,0.000000,1.000000);
-	uv(0.996643,0.000000,1.000000,0.000000,1.000000,0.000000,0.996643,0.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,1.000000,1.000000,0.000000,0.000000,0.000000,0.000000,1.000000);
-	uv(1.000000,0.000000,0.000000,0.000000,1.000000,1.000000);
-	uv(1.000000,1.000000,0.000000,1.000000,0.000000,1.000000,1.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,0.000000,0.000000,0.000000,0.000000,1.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,1.000000,0.000000,1.000000);
-	uv(0.000000,0.000000,1.000000,0.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.832974,0.167026,0.832974,0.832973,0.167026,0.832973,0.167026,0.167026);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-	uv(1.000000,0.000000,1.000000,1.000000,0.000000,1.000000,0.000000,0.000000);
-	uv(0.000000,1.000000,1.000000,1.000000,1.000000,0.000000,0.000000,0.000000);
-    */
-	f4(2,3,1,0,0);
-	f4(4,5,3,2,0);
-	f4(6,7,5,4,0);
-	f4(0,1,7,6,0);
-	f4(3,5,7,1,0);
-	f4(4,2,0,6,0);
-	f4(10,11,9,8,0);
-	f4(12,13,11,10,0);
-	f4(14,15,13,12,0);
-	f4(8,9,15,14,0);
-	f4(11,13,15,9,0);
-	f4(12,10,8,14,0);
-	f3(42,43,44,0);
-	f4(196,189,194,193,0);
-	f4(84,83,75,76,0);
-	f4(30,50,49,29,0);
-	f3(37,30,35,0);
-	f4(75,83,86,80,0);
-	f4(40,56,55,38,0);
-	f3(71,191,194,0);
-	f3(18,17,16,0);
-	f4(16,42,44,18,0);
-	f4(17,43,42,16,0);
-	f4(18,44,43,17,0);
-	f4(24,32,37,40,0);
-	f4(38,26,29,24,0);
-	f4(205,199,196,61,0);
-	f4(22,41,20,35,0);
-	f4(31,30,29,26,0);
-	f4(86,83,84,85,0);
-	f3(38,24,40,0);
-	f4(24,47,52,32,0);
-	f4(37,54,56,40,0);
-	f4(38,55,48,26,0);
-	f4(29,49,47,24,0);
-	f4(60,208,191,71,0);
-	f4(32,52,50,30,0);
-	f4(74,79,88,82,0);
-	f4(65,68,67,66,0);
-	f4(52,56,58,50,0);
-	f4(47,55,56,52,0);
-	f4(48,55,47,49,0);
-	f4(48,49,50,58,0);
-	f4(64,63,213,59,0);
-	f4(78,79,74,73,0);
-	f4(46,53,213,206,0);
-	f4(57,68,65,45,0);
-	f4(53,67,68,57,0);
-	f4(42,57,45,39,0);
-	f4(73,74,82,81,0);
-	f4(46,66,67,53,0);
-	f4(35,39,45,65,0);
-	f4(205,59,202,199,0);
-	f4(88,79,78,87,0);
-	f4(35,88,51,37,0);
-	f3(37,32,30,0);
-	f4(87,78,73,81,0);
-	f4(85,84,76,77,0);
-	f4(211,82,196,197,0);
-	f4(42,44,204,202,0);
-	f4(31,22,35,30,0);
-	f4(26,48,58,72,0);
-	f3(26,72,31,0);
-	f4(51,70,72,58,0);
-	f3(203,202,204,0);
-	f4(31,194,204,44,0);
-	f4(63,62,206,213,0);
-	f4(209,210,193,192,0);
-	f3(193,197,196,0);
-	f4(70,85,77,69,0);
-	f4(215,216,200,198,0);
-	f4(71,69,211,60,0);
-	f3(186,187,185,0);
-	f4(204,202,185,187,0);
-	f4(202,203,186,185,0);
-	f4(203,204,187,186,0);
-	f4(197,195,190,200,0);
-	f4(192,191,198,190,0);
-	f3(195,197,193,0);
-	f4(188,201,189,196,0);
-	f4(192,193,194,191,0);
-	f4(76,75,80,77,0);
-	f3(190,198,200,0);
-	f4(212,207,190,195,0);
-	f4(216,214,197,200,0);
-	f4(208,215,198,191,0);
-	f4(207,209,192,190,0);
-	f4(72,71,194,31,0);
-	f4(210,212,195,193,0);
-	f4(86,87,81,80,0);
-	f4(63,64,61,62,0);
-	f4(60,216,212,210,0);
-	f4(216,215,207,212,0);
-	f4(207,215,208,209,0);
-	f4(210,209,208,60,0);
-	f4(88,35,196,82,0);
-	f4(66,46,206,62,0);
-	f4(59,57,42,202,0);
-	f4(61,64,59,205,0);
-	f4(72,70,69,71,0);
-
-    this.computeCentroids();
-    this.computeNormals();
-    
-    function material_color( mi ) {
-        var m = materials[mi];
-        if( m.col_diffuse )
-            return (m.col_diffuse[0]*255 << 16) + (m.col_diffuse[1]*255 << 8) + m.col_diffuse[2]*255;
-        else if ( m.a_dbg_color )
-            return  m.a_dbg_color;
-        else 
-            return 0xffeeeeee;
-    }
-    
-    function v( x, y, z ) {
-        scope.vertices.push( new THREE.Vertex( new THREE.Vector3( x, y, z ) ) );
-    }
-
-    function f3( a, b, c, mi ) {
-        var material = scope.materials[ mi ];
-        scope.faces.push( new THREE.Face3( a, b, c, null, material ) );
-    }
-
-    function f4( a, b, c, d, mi ) {
-        var material = scope.materials[ mi ];
-        scope.faces.push( new THREE.Face4( a, b, c, d, null, material ) );
-    }
-
-    function f3n( a, b, c, mi, n1, n2, n3 ) {
-        var material = scope.materials[ mi ];
-        var n1x = normals[n1][0];
-        var n1y = normals[n1][1];
-        var n1z = normals[n1][2];
-        var n2x = normals[n2][0];
-        var n2y = normals[n2][1];
-        var n2z = normals[n2][2];
-        var n3x = normals[n3][0];
-        var n3y = normals[n3][1];
-        var n3z = normals[n3][2];
-        scope.faces.push( new THREE.Face3( a, b, c, 
-                          [new THREE.Vector3( n1x, n1y, n1z ), new THREE.Vector3( n2x, n2y, n2z ), new THREE.Vector3( n3x, n3y, n3z )], 
-                          material ) );
-    }
-
-    function f4n( a, b, c, d, mi, n1, n2, n3, n4 ) {
-        var material = scope.materials[ mi ];
-        var n1x = normals[n1][0];
-        var n1y = normals[n1][1];
-        var n1z = normals[n1][2];
-        var n2x = normals[n2][0];
-        var n2y = normals[n2][1];
-        var n2z = normals[n2][2];
-        var n3x = normals[n3][0];
-        var n3y = normals[n3][1];
-        var n3z = normals[n3][2];
-        var n4x = normals[n4][0];
-        var n4y = normals[n4][1];
-        var n4z = normals[n4][2];
-        scope.faces.push( new THREE.Face4( a, b, c, d,
-                          [new THREE.Vector3( n1x, n1y, n1z ), new THREE.Vector3( n2x, n2y, n2z ), new THREE.Vector3( n3x, n3y, n3z ), new THREE.Vector3( n4x, n4y, n4z )], 
-                          material ) );
-    }
-
-    function uv( u1, v1, u2, v2, u3, v3, u4, v4 ) {
-        var uv = [];
-        uv.push( new THREE.UV( u1, v1 ) );
-        uv.push( new THREE.UV( u2, v2 ) );
-        uv.push( new THREE.UV( u3, v3 ) );
-        if ( u4 && v4 ) uv.push( new THREE.UV( u4, v4 ) );
-        scope.uvs.push( uv );
-    }
-
-    function init_materials() {
-        scope.materials = [];
-        for(var i=0; i<materials.length; ++i) {
-            scope.materials[i] = [ create_material( materials[i], urlbase ) ];
-        }
-    }
-    
-    function is_pow2( n ) {
-        var l = Math.log(n) / Math.LN2;
-        return Math.floor(l) == l;
-    }
-    
-    function nearest_pow2(n) {
-        var l = Math.log(n) / Math.LN2;
-        return Math.pow( 2, Math.round(l) );
-    }
-    
-    function create_material( m ) {
-        var material;
-        
-        if( m.map_diffuse && urlbase ) {
-            var texture = document.createElement( 'canvas' );
-            
-            material = new THREE.MeshBitmapMaterial( texture );
-            var image = new Image();
-            
-            image.onload = function () {
-                
-                if ( !is_pow2(this.width) || !is_pow2(this.height) ) {
-                
-                    var w = nearest_pow2( this.width );
-                    var h = nearest_pow2( this.height );
-                    material.bitmap.width = w;
-                    material.bitmap.height = h;
-                    material.bitmap.getContext("2d").drawImage( this, 0, 0, w, h );
-                }
-                else {
-                    material.bitmap = this;
-                }
-                material.loaded = 1;
-                
-            };
-            image.src = urlbase + "/" + m.map_diffuse;
-        }
-        else if( m.col_diffuse ) {
-            var color = (m.col_diffuse[0]*255 << 16) + (m.col_diffuse[1]*255 << 8) + m.col_diffuse[2]*255;
-            material = new THREE.MeshColorFillMaterial( color, m.transparency );
-        }
-        else if( m.a_dbg_color ) {
-            material = new THREE.MeshColorFillMaterial( m.a_dbg_color );
-        }
-        else {
-            material = new THREE.MeshColorFillMaterial( 0xffeeeeee );
-        }
-
-        return material;
-    }
-}
-
-nanoBody.prototype = new THREE.Geometry();
-nanoBody.prototype.constructor = nanoBody;

+ 0 - 609
examples/obj/nano/nanoBody.obj

@@ -1,609 +0,0 @@
-# WaveFront *.obj file (generated by CINEMA 4D)
-
-g NanoArmL
-usemtl Mat
-v -83.910797 -40.962219 -7.151447
-v -83.910797 116.537781 -7.151447
-v -61.410797 -40.962219 -7.151447
-v -61.410797 116.537781 -7.151447
-v -61.410797 -40.962219 -59.651447
-v -61.410797 116.537781 -59.651447
-v -83.910797 -40.962219 -59.651447
-v -83.910797 116.537781 -59.651447
-
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-
-f 3/9 4/12 2/6 1/3 
-f 5/13 6/15 4/11 3/8 
-f 7/18 8/20 6/16 5/14 
-f 1/2 2/5 8/19 7/17 
-f 4/10 6/15 8/19 2/4 
-f 5/13 3/7 1/1 7/17 
-
-g NanoArmR
-usemtl Mat
-v 61.096977 -40.962219 -7.151447
-v 61.096977 116.537781 -7.151447
-v 83.596977 -40.962219 -7.151447
-v 83.596977 116.537781 -7.151447
-v 83.596977 -40.962219 -59.651447
-v 83.596977 116.537781 -59.651447
-v 61.096977 -40.962219 -59.651447
-v 61.096977 116.537781 -59.651447
-
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-
-f 11/29 12/32 10/26 9/23 
-f 13/33 14/35 12/31 11/28 
-f 15/38 16/40 14/36 13/34 
-f 9/22 10/25 16/39 15/37 
-f 12/30 14/35 16/39 10/24 
-f 13/33 11/27 9/21 15/37 
-
-g NanoBody
-usemtl Mat
-v 60.031319 139.365082 59.670143
-v 60.031319 169.365082 23.670141
-v 60.031319 169.365082 23.670141
-v 60.031319 85.365082 41.670143
-v 60.031319 85.365082 59.670143
-v 60.031319 139.365082 59.670143
-v 60.031319 169.365082 23.670141
-v 60.031319 -70.634918 59.670143
-v 60.031319 -118.634918 17.670141
-v 60.031319 -142.634918 59.670143
-v 60.031319 -142.634918 -72.329857
-v 60.031319 -70.634918 41.670143
-v 60.031319 85.365082 41.670143
-v 60.031319 -118.634918 -24.329859
-v 60.031319 -94.634918 -24.329859
-v 60.031319 169.365082 -72.329857
-v 60.031319 -94.634918 17.670141
-v 60.031319 85.365082 59.670143
-v 60.031319 -70.634918 41.670143
-v 60.031319 85.365082 41.670143
-v 60.031319 -70.634918 59.670143
-v 60.031319 -70.634918 41.670143
-v 60.031319 -142.634918 59.670143
-v 60.031319 85.365082 59.670143
-v 60.031319 -70.634918 59.670143
-v 60.031319 139.365082 59.670143
-v 60.031319 139.365082 59.670143
-v 60.031319 169.365082 23.670141
-v 60.031319 169.365082 23.670141
-v 30.031319 85.365082 59.670143
-v 18.031319 85.365082 59.670143
-v 24.031319 -118.634918 17.670141
-v 24.031319 -142.634918 -72.329857
-v 24.031319 -118.634918 -24.329859
-v 24.031319 -94.634918 -24.329859
-v 24.031319 -70.634918 41.670143
-v 24.031319 -94.634918 17.670141
-v 18.031319 115.365082 59.670143
-v 24.031319 -70.634918 41.670143
-v 24.031319 -142.634918 59.670143
-v 24.031319 -70.634918 59.670143
-v 30.031319 115.365082 59.670143
-v 24.031319 -70.634918 -72.329857
-v -29.968681 115.365082 59.670143
-v -23.968681 -70.634918 -72.329857
-v -29.968681 85.365082 41.670143
-v -17.968681 85.365082 41.670143
-v -17.968681 115.365082 41.670143
-v -29.968681 115.365082 41.670143
-v 30.031319 85.365082 41.670143
-v 18.031319 85.365082 41.670143
-v 18.031319 115.365082 41.670143
-v 30.031319 115.365082 41.670143
-v -23.968681 -28.634914 41.670143
-v 24.031319 -28.634914 41.670143
-v -23.968681 -28.634914 -72.329857
-v 24.031319 -28.634914 -72.329857
-v -23.968681 43.365086 29.670141
-v -23.968681 61.365086 29.670141
-v -23.968681 19.365086 29.670141
-v -23.968681 7.365086 29.670141
-v -23.968681 7.365086 41.670143
-v 24.031319 43.365086 29.670141
-v 24.031319 61.365086 29.670141
-v -23.968681 19.365086 41.670143
-v -23.968681 43.365086 41.670143
-v -23.968681 61.365086 41.670143
-v 24.031319 19.365086 29.670141
-v 24.031319 7.365086 29.670141
-v 24.031319 7.365086 41.670143
-v 24.031319 19.365086 41.670143
-v 24.031319 43.365086 41.670143
-v 24.031319 61.365086 41.670143
-v -59.968681 139.365082 59.670143
-v -59.968681 169.365082 23.670141
-v -59.968681 169.365082 23.670141
-v -59.968681 85.365082 59.670143
-v -59.968681 169.365082 23.670141
-v -59.968681 -118.634918 17.670141
-v -59.968681 -142.634918 -72.329857
-v -59.968681 -118.634918 -24.329859
-v -59.968681 -94.634918 -24.329859
-v -59.968681 169.365082 -72.329857
-v -59.968681 -94.634918 17.670141
-v -59.968681 85.365082 41.670143
-v -59.968681 -70.634918 41.670143
-v -59.968681 -142.634918 59.670143
-v -59.968681 85.365082 59.670143
-v -59.968681 -70.634918 59.670143
-v -59.968681 139.365082 59.670143
-v -59.968681 139.365082 59.670143
-v -59.968681 169.365082 23.670141
-v -59.968681 169.365082 23.670141
-v -29.968681 85.365082 59.670143
-v -17.968681 85.365082 59.670143
-v -23.968681 -118.634918 17.670141
-v -23.968681 -142.634918 -72.329857
-v -23.968681 -118.634918 -24.329859
-v -23.968681 -94.634918 -24.329859
-v -23.968681 -70.634918 41.670143
-v -23.968681 -94.634918 17.670141
-v -17.968681 115.365082 59.670143
-v -23.968681 -70.634918 41.670143
-v -23.968681 -142.634918 59.670143
-v -23.968681 -70.634918 59.670143
-v -29.968681 115.365082 59.670143
-v -23.968681 -70.634918 -72.329857
-v -29.968681 85.365082 41.670143
-v -17.968681 85.365082 41.670143
-v -17.968681 115.365082 41.670143
-v -29.968681 115.365082 41.670143
-v -23.968681 -28.634914 41.670143
-v -23.968681 -28.634914 -72.329857
-v -23.968681 43.365086 29.670141
-v -23.968681 61.365086 29.670141
-v -23.968681 19.365086 29.670141
-v -23.968681 7.365086 29.670141
-v -23.968681 7.365086 41.670143
-v -23.968681 19.365086 41.670143
-v -23.968681 43.365086 41.670143
-v -23.968681 61.365086 41.670143
-v -59.968681 139.365082 59.670143
-v -59.968681 169.365082 23.670141
-v -59.968681 169.365082 23.670141
-v -59.968681 85.365082 59.670143
-v -59.968681 169.365082 23.670141
-v -59.968681 -118.634918 17.670141
-v -59.968681 -142.634918 -72.329857
-v -59.968681 -118.634918 -24.329859
-v -59.968681 -94.634918 -24.329859
-v -59.968681 169.365082 -72.329857
-v -59.968681 -94.634918 17.670141
-v -59.968681 85.365082 41.670143
-v -59.968681 -70.634918 41.670143
-v -59.968681 -142.634918 59.670143
-v -59.968681 85.365082 59.670143
-v -59.968681 -70.634918 59.670143
-v -59.968681 139.365082 59.670143
-v -59.968681 139.365082 59.670143
-v -59.968681 169.365082 23.670141
-v -59.968681 169.365082 23.670141
-v -29.968681 85.365082 59.670143
-v -17.968681 85.365082 59.670143
-v -23.968681 -118.634918 17.670141
-v -23.968681 -142.634918 -72.329857
-v -23.968681 -118.634918 -24.329859
-v -23.968681 -94.634918 -24.329859
-v -23.968681 -70.634918 41.670143
-v -23.968681 -94.634918 17.670141
-v -17.968681 115.365082 59.670143
-v -23.968681 -70.634918 41.670143
-v -23.968681 -142.634918 59.670143
-v -23.968681 -70.634918 59.670143
-v -29.968681 115.365082 59.670143
-v -23.968681 -70.634918 -72.329857
-v -29.968681 85.365082 41.670143
-v -17.968681 85.365082 41.670143
-v -17.968681 115.365082 41.670143
-v -29.968681 115.365082 41.670143
-v -23.968681 -28.634914 41.670143
-v -23.968681 -28.634914 -72.329857
-v -23.968681 43.365086 29.670141
-v -23.968681 61.365086 29.670141
-v -23.968681 19.365086 29.670141
-v -23.968681 7.365086 29.670141
-v -23.968681 7.365086 41.670143
-v -23.968681 19.365086 41.670143
-v -23.968681 43.365086 41.670143
-v -23.968681 61.365086 41.670143
-v -59.968681 139.365082 59.670143
-v -59.968681 169.365082 23.670141
-v -59.968681 169.365082 23.670141
-v -59.968681 85.365082 59.670143
-v -59.968681 169.365082 23.670141
-v -59.968681 -118.634918 17.670141
-v -59.968681 -142.634918 -72.329857
-v -59.968681 -118.634918 -24.329859
-v -59.968681 -94.634918 -24.329859
-v -59.968681 169.365082 -72.329857
-v -59.968681 -94.634918 17.670141
-v -59.968681 85.365082 41.670143
-v -59.968681 -70.634918 41.670143
-v -59.968681 -142.634918 59.670143
-v -59.968681 85.365082 59.670143
-v -59.968681 -70.634918 59.670143
-v -59.968681 139.365082 59.670143
-v -59.968681 139.365082 59.670143
-v -59.968681 169.365082 23.670141
-v -59.968681 169.365082 23.670141
-v -29.968681 85.365082 59.670143
-v -17.968681 85.365082 59.670143
-v -23.968681 -118.634918 17.670141
-v -23.968681 -142.634918 -72.329857
-v -23.968681 -118.634918 -24.329859
-v -23.968681 -94.634918 -24.329859
-v -23.968681 -70.634918 41.670143
-v -23.968681 -94.634918 17.670141
-v -17.968681 115.365082 59.670143
-v -23.968681 -70.634918 41.670143
-v -23.968681 -142.634918 59.670143
-v -23.968681 -70.634918 59.670143
-
-vt 0 0 0
-vt 0 1 0
-vt 0.996643 1 0
-vt 1 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0.996643 1 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0.167026 0.167027 0
-vt 0 1 0
-vt 0 1 0
-vt 0.167026 0.832974 0
-vt 1 0 0
-vt 0.832974 0.832974 0
-vt 1 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0.832974 0.167027 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0.167026 0.167027 0
-vt 0 0 0
-vt 1 0 0
-vt 0.167026 0.832974 0
-vt 1 1 0
-vt 1 0 0
-vt 0.832974 0.832974 0
-vt 1 1 0
-vt 1 0 0
-vt 0.832974 0.167027 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 0 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 0.996643 1 0
-vt 1 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 1 1 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 1 0
-vt 0 1 0
-vt 0 0 0
-vt 0.996643 1 0
-vt 1 1 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 1 0
-vt 0 1 0
-vt 1 0 0
-vt 0 0 0
-vt 1 0 0
-vt 0 1 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 0 0 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-vt 1 1 0
-vt 1 0 0
-vt 0 1 0
-
-f 43/83 44/84 45/87 
-f 197/228 190/209 195/223 194/220 
-f 85/190 84/188 76/169 77/173 
-f 31/61 51/101 50/98 30/57 
-f 38/73 31/60 36/67 
-f 76/170 84/188 87/195 81/181 
-f 41/78 57/116 56/112 39/75 
-f 72/159 192/215 195/222 
-f 19/46 18/44 17/42 
-f 17/41 43/83 45/87 19/45 
-f 18/43 44/84 43/83 17/41 
-f 19/45 45/87 44/84 18/43 
-f 25/52 33/66 38/72 41/80 
-f 39/74 27/54 30/56 25/50 
-f 206/247 200/237 197/227 62/131 
-f 23/49 42/81 21/47 36/69 
-f 32/64 31/60 30/56 27/55 
-f 87/194 84/187 85/189 86/192 
-f 39/74 25/51 41/79 
-f 25/50 48/93 53/107 33/65 
-f 38/70 55/111 57/116 41/78 
-f 39/74 56/113 49/94 27/54 
-f 30/56 50/96 48/93 25/50 
-f 61/128 209/254 192/215 72/160 
-f 33/66 53/106 51/100 31/59 
-f 75/168 80/180 89/199 83/185 
-f 66/143 69/152 68/149 67/146 
-f 53/105 57/115 59/122 51/100 
-f 48/93 56/112 57/114 53/104 
-f 49/95 56/112 48/92 50/97 
-f 49/95 50/96 51/99 59/120 
-f 65/140 64/137 214/269 60/125 
-f 79/178 80/180 75/167 74/166 
-f 47/91 54/110 214/268 207/250 
-f 58/119 69/151 66/142 46/89 
-f 54/109 68/148 69/150 58/118 
-f 43/83 58/117 46/88 40/77 
-f 74/165 75/167 83/185 82/184 
-f 47/91 67/145 68/147 54/108 
-f 36/69 40/76 46/88 66/141 
-f 206/247 60/124 203/243 200/236 
-f 89/200 80/179 79/177 88/197 
-f 36/68 89/199 52/103 38/71 
-f 38/70 33/65 31/58 
-f 88/197 79/177 74/164 82/183 
-f 86/192 85/189 77/172 78/176 
-f 212/262 83/186 197/229 198/233 
-f 43/83 45/86 205/245 203/242 
-f 32/64 23/48 36/67 31/58 
-f 27/53 49/94 59/121 73/161 
-f 27/53 73/163 32/63 
-f 52/102 71/156 73/163 59/120 
-f 204/244 203/243 205/245 
-f 32/62 195/222 205/245 45/85 
-f 64/136 63/134 207/249 214/267 
-f 210/257 211/260 194/221 193/217 
-f 194/219 198/232 197/228 
-f 71/157 86/191 78/175 70/155 
-f 216/271 217/275 201/238 199/235 
-f 72/159 70/154 212/261 61/126 
-f 187/204 188/206 186/202 
-f 205/245 203/243 186/201 188/205 
-f 203/243 204/244 187/203 186/201 
-f 204/244 205/245 188/205 187/203 
-f 198/231 196/224 191/212 201/240 
-f 193/216 192/213 199/234 191/210 
-f 196/225 198/230 194/220 
-f 189/207 202/241 190/208 197/227 
-f 193/216 194/219 195/223 192/214 
-f 77/171 76/169 81/181 78/174 
-f 191/211 199/234 201/239 
-f 213/266 208/252 191/210 196/225 
-f 217/275 215/270 198/230 201/238 
-f 209/254 216/272 199/234 192/213 
-f 208/252 210/255 193/216 191/210 
-f 73/162 72/159 195/222 32/62 
-f 211/259 213/265 196/224 194/218 
-f 87/193 88/196 82/182 81/181 
-f 64/135 65/139 62/130 63/133 
-f 61/127 217/274 213/264 211/259 
-f 217/273 216/271 208/252 213/263 
-f 208/251 216/271 209/253 210/256 
-f 211/258 210/255 209/253 61/126 
-f 89/198 36/67 197/226 83/185 
-f 67/144 47/90 207/248 63/132 
-f 60/123 58/117 43/82 203/242 
-f 62/129 65/138 60/123 206/246 
-f 73/161 71/156 70/153 72/158 
-

+ 52 - 55
examples/obj_convert_test.html

@@ -21,7 +21,7 @@
 			.inactive { background:#999; color:#eee }
 		</style>
 	</head>
-	
+
 	<body>
 		<div id="d">
 			<h1>OBJ to Three.js converter test</h1>
@@ -30,19 +30,19 @@
 			<span id="rwebgl" class="button">WebGL renderer</span>
 			<br/>
 
-			<p>Models by <a href="http://sketchup.google.com/3dwarehouse/details?mid=2c6fd128fca34052adc5f5b98d513da1">Reallusion<a> 
+			<p>Models by <a href="http://sketchup.google.com/3dwarehouse/details?mid=2c6fd128fca34052adc5f5b98d513da1">Reallusion<a>
 			<a href="http://sketchup.google.com/3dwarehouse/details?mid=f526cc4abf7cb68d76cab47c765b7255">iClone</a>.
-			
+
 			<p>Using a modified version of <a href="http://github.com/alteredq/three.js">Three.js</a> by mrdoob.
-			
+
 			<br/>
 			<p>Best viewed in Chrome 8/9 or Firefox 4 using WebGL renderer.
 			<p>Canvas renderer is very slow on anything other than Chrome.
 		</div>
-		
+
 		<pre id="log"></pre>
 
-		<script type="text/javascript" src="../build/Three.js"></script> 
+		<script type="text/javascript" src="../build/Three.js"></script>
 
 		<script type="text/javascript" src="../src/extras/io/Loader.js"></script>
 		<script type="text/javascript" src="../src/extras/primitives/Sphere.js"></script>
@@ -56,37 +56,34 @@
 			var SCREEN_HEIGHT = window.innerHeight;
 			var FLOOR = -250;
 
-			var container;
-			var stats;
+			var container,stats;
 
-			var camera;
-			var scene;
+			var camera, scene;
 			var canvasRenderer, webglRenderer;
 
 			var mesh, zmesh, geometry;
-			
-			var mouseX = 0;
-			var mouseY = 0;
 
-			var windowHalfX = window.innerWidth >> 1;
-			var windowHalfY = window.innerHeight >> 1;
+			var mouseX = 0, mouseY = 0;
+
+			var windowHalfX = window.innerWidth / 2;
+			var windowHalfY = window.innerHeight / 2;
 
 			var render_canvas = 1, render_gl = 1;
 			var has_gl = 0;
-			
+
 			var bcanvas = document.getElementById("rcanvas");
 			var bwebgl = document.getElementById("rwebgl");
-			
+
 			document.addEventListener('mousemove', onDocumentMouseMove, false);
 
 			init();
-			
+
 			loop();
-			
+
 			render_canvas = !has_gl;
 			bwebgl.style.display = has_gl ? "inline" : "none";
 			bcanvas.className = render_canvas ? "button" : "button inactive";
-			
+
 			setInterval(loop, 1000/60);
 
 
@@ -100,9 +97,9 @@
 				camera.updateMatrix();
 
 				scene = new THREE.Scene();
-				
+
 				// GROUND
-				
+
 				var x = document.createElement( "canvas" );
 				var xc = x.getContext("2d");
 				x.width = x.height = 128;
@@ -116,10 +113,10 @@
 				xc.fillRect(64, 64, 64, 64);
 				xc.fillStyle = "#555";
 				xc.fillRect(96, 96, 32, 32);
-				
-				var xm = new THREE.MeshBasicMaterial( { map: new THREE.Texture( x, THREE.UVMapping, THREE.Repeat, THREE.Repeat ) } );
+
+				var xm = new THREE.MeshBasicMaterial( { map: new THREE.Texture( x, THREE.UVMapping, THREE.RepeatWrapping, THREE.RepeatWrapping ) } );
 				xm.map.image.loaded = 1;
-				
+
 				geometry = new Plane( 100, 100, 15, 10 );
 				for(var i=0; i<geometry.uvs.length; i++) {
 					var uvs = geometry.uvs[i];
@@ -127,7 +124,7 @@
 						uvs[j].u *= 10;
 						uvs[j].v *= 10;
 					}
-					
+
 				}
 				mesh = new THREE.Mesh( geometry, xm );
 				mesh.position.x = 0;
@@ -137,9 +134,9 @@
 				mesh.scale.x = mesh.scale.y = mesh.scale.z = 10;
 				mesh.updateMatrix();
 				scene.addObject(mesh);
-				
+
 				// SPHERES
-				
+
 				sphere = new Sphere( 100, 16, 8, 1 );
 				for (var i=0; i<10; i++) {
 					mesh = new THREE.Mesh( sphere, new THREE.MeshLambertMaterial( { color: 0xdddddd } ) );
@@ -151,7 +148,7 @@
 					mesh.updateMatrix();
 					scene.addObject(mesh);
 				}
-				
+
 
 				// LIGHTS
 
@@ -191,10 +188,10 @@
 				stats.domElement.style.top = '0px';
 				stats.domElement.style.zIndex = 100;
 				container.appendChild( stats.domElement );
-				
+
 				bcanvas.addEventListener("click", toggleCanvas, false);
 				bwebgl.addEventListener("click", toggleWebGL, false);
-				
+
 				var loader = new THREE.Loader();
 				//loader.loadAscii( "obj/male02/Male02_slim.js",     function( geometry ) { createScene( geometry,  90, 50, FLOOR, 105 ) }, "obj/male02" );
 				//loader.loadAscii( "obj/female02/Female02_slim.js", function( geometry ) { createScene( geometry, -80, 50, FLOOR, 0 ) },   "obj/female02" );
@@ -205,7 +202,7 @@
 			}
 
 			function createScene( geometry, x, y, z, b ) {
-				
+
 				zmesh = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial(), 1 );
 				zmesh.position.x = x;
 				zmesh.position.z = y;
@@ -214,15 +211,15 @@
 				zmesh.overdraw = true;
 				zmesh.updateMatrix();
 				scene.addObject(zmesh);
-				
+
 				createMaterialsPalette( geometry.materials, 100, b );
-                
+
 			}
 
 			function createMaterialsPalette( materials, size, bottom ) {
-				
+
 				for ( var i=0; i<materials.length; ++i ) {
-					
+
 					// material
 					mesh = new THREE.Mesh( new Plane( size, size ), materials[i] );
 					mesh.position.x = i * (size + 5) - ( ( materials.length - 1 )* ( size + 5 )/2);
@@ -232,7 +229,7 @@
 					mesh.doubleSided = true;
 					mesh.updateMatrix();
 					scene.addObject(mesh);
-					
+
 					// number
 					var x = document.createElement( "canvas" );
 					var xc = x.getContext("2d");
@@ -242,10 +239,10 @@
 					xc.fillStyle = "orange";
 					xc.font = "50pt arial bold";
 					xc.fillText(i, 10, 64);
-					
+
 					var xm = new THREE.MeshBasicMaterial( { map: new THREE.Texture( x ) } );
 					xm.map.image.loaded = 1;
-					
+
 					mesh = new THREE.Mesh( new Plane( size, size ), xm );
 					mesh.position.x = i * (size + 5) - ( ( materials.length - 1 )* ( size + 5 )/2);
 					mesh.position.y = FLOOR + size/2 + bottom;
@@ -255,9 +252,9 @@
 					mesh.updateMatrix();
 					scene.addObject(mesh);
 				}
-				
+
 			}
-			
+
 			function onDocumentMouseMove(event) {
 
 				mouseX = ( event.clientX - windowHalfX );
@@ -284,40 +281,40 @@
 			}
 
 			function log( text ) {
-			
+
 				var e = document.getElementById("log");
 				e.innerHTML = text + "<br/>" + e.innerHTML;
-				
+
 			}
-			
+
 			function toggleCanvas() {
-			
+
 				render_canvas = !render_canvas;
 				bcanvas.className = render_canvas ? "button" : "button inactive";
-				
+
 				render_gl = !render_canvas;
 				bwebgl.className = render_gl ? "button" : "button inactive";
-				
+
 				if( has_gl )
 					webglRenderer.domElement.style.display = render_gl ? "block" : "none";
-				
+
 				canvasRenderer.domElement.style.display = render_canvas ? "block" : "none";
-				
+
 			}
-			
+
 			function toggleWebGL() {
-			
+
 				render_gl = !render_gl;
 				bwebgl.className = render_gl ? "button" : "button inactive";
-				
+
 				render_canvas = !render_gl;
 				bcanvas.className = render_canvas ? "button" : "button inactive";
-				
+
 				if( has_gl )
 					webglRenderer.domElement.style.display = render_gl ? "block" : "none";
-					
+
 				canvasRenderer.domElement.style.display = render_canvas ? "block" : "none";
-				
+
 			}
 		</script>
 

+ 1 - 0
examples/textures/metal.txt

@@ -0,0 +1 @@
+http://www.scene.org/file.php?file=/parties/2003/stream03/demo/kwl_itch.zip

+ 15 - 3
examples/uqbiquity_test.html

@@ -13,7 +13,9 @@
 	</head>
 	<body>
 
-		<!-- <script type="text/javascript" src="../build/Three.js"></script> -->
+		<!-- 
+		<script type="text/javascript" src="../build/Three.js"></script>
+		-->
 
 		<script type="text/javascript" src="../src/Three.js"></script>
 		<script type="text/javascript" src="../src/core/Color.js"></script>
@@ -35,9 +37,9 @@
 		<script type="text/javascript" src="../src/lights/DirectionalLight.js"></script>
 		<script type="text/javascript" src="../src/lights/PointLight.js"></script>
 		<script type="text/javascript" src="../src/objects/Object3D.js"></script>
-		<script type="text/javascript" src="../src/objects/Mesh.js"></script>
 		<script type="text/javascript" src="../src/objects/Particle.js"></script>
 		<script type="text/javascript" src="../src/objects/Line.js"></script>
+		<script type="text/javascript" src="../src/objects/Mesh.js"></script>
 		<script type="text/javascript" src="../src/materials/Material.js"></script>
 		<script type="text/javascript" src="../src/materials/LineBasicMaterial.js"></script>
 		<script type="text/javascript" src="../src/materials/MeshBasicMaterial.js"></script>
@@ -46,12 +48,22 @@
 		<script type="text/javascript" src="../src/materials/MeshDepthMaterial.js"></script>
 		<script type="text/javascript" src="../src/materials/MeshNormalMaterial.js"></script>
 		<script type="text/javascript" src="../src/materials/MeshFaceMaterial.js"></script>
+		<script type="text/javascript" src="../src/materials/MeshCubeMaterial.js"></script>
 		<script type="text/javascript" src="../src/materials/MeshShaderMaterial.js"></script>
 		<script type="text/javascript" src="../src/materials/ParticleBasicMaterial.js"></script>
 		<script type="text/javascript" src="../src/materials/ParticleCircleMaterial.js"></script>
-		<script type="text/javascript" src="../src/materials/textures/Texture.js"></script>
+		<script type="text/javascript" src="../src/materials/ParticleDOMMaterial.js"></script>
+		<script type="text/javascript" src="../src/materials/Texture.js"></script>
+		<script type="text/javascript" src="../src/materials/mappings/CubeReflectionMapping.js"></script>
+		<script type="text/javascript" src="../src/materials/mappings/CubeRefractionMapping.js"></script>
+		<script type="text/javascript" src="../src/materials/mappings/LatitudeReflectionMapping.js"></script>
+		<script type="text/javascript" src="../src/materials/mappings/LatitudeRefractionMapping.js"></script>
+		<script type="text/javascript" src="../src/materials/mappings/SphericalReflectionMapping.js"></script>
+		<script type="text/javascript" src="../src/materials/mappings/SphericalRefractionMapping.js"></script>
+		<script type="text/javascript" src="../src/materials/mappings/UVMapping.js"></script>
 		<script type="text/javascript" src="../src/scenes/Scene.js"></script>
 		<script type="text/javascript" src="../src/renderers/Projector.js"></script>
+		<script type="text/javascript" src="../src/renderers/DOMRenderer.js"></script>
 		<script type="text/javascript" src="../src/renderers/CanvasRenderer.js"></script>
 		<script type="text/javascript" src="../src/renderers/SVGRenderer.js"></script>
 		<script type="text/javascript" src="../src/renderers/WebGLRenderer.js"></script>

+ 3 - 12
src/extras/ImageUtils.js

@@ -2,20 +2,11 @@ var ImageUtils = {
 
 	loadTexture: function ( path, mapping ) {
 
-		var texture = new THREE.Texture( null, mapping );
-
 		var image = new Image();
-
-		image.onload = function () {
-
-			texture.image = this;
-			texture.loaded = true;
-
-		};
-
+		image.onload = function () { this.loaded = true; };
 		image.src = path;
 
-		return texture;
+		return new THREE.Texture( image, mapping );
 
 	},
 
@@ -29,7 +20,7 @@ var ImageUtils = {
 
 			images[ i ] = new Image();
 			images[ i ].loaded = 0;
-			images[ i ].onload = function () { images.loadCount += 1; this.loaded = 1; }
+			images[ i ].onload = function () { images.loadCount += 1; this.loaded = true; }
 			images[ i ].src = array[ i ];
 
 		}

+ 1 - 1
src/materials/MeshBasicMaterial.js

@@ -27,7 +27,7 @@ THREE.MeshBasicMaterial = function ( parameters ) {
 	this.map = null;
 
 	this.env_map = null;
-	this.combine = THREE.Multiply;
+	this.combine = THREE.MultiplyOperation;
 	this.reflectivity = 1;
 	this.refraction_ratio = 0.98;
 

+ 1 - 1
src/materials/MeshLambertMaterial.js

@@ -27,7 +27,7 @@ THREE.MeshLambertMaterial = function ( parameters ) {
 	this.map = null;
 
 	this.env_map = null;
-	this.combine = THREE.Multiply;
+	this.combine = THREE.MultiplyOperation;
 	this.reflectivity = 1;
 	this.refraction_ratio = 0.98;
 

+ 1 - 1
src/materials/MeshPhongMaterial.js

@@ -37,7 +37,7 @@ THREE.MeshPhongMaterial = function ( parameters ) {
 	this.specular_map = null;
 
 	this.env_map = null;
-	this.combine = THREE.Multiply;
+	this.combine = THREE.MultiplyOperation;
 	this.reflectivity = 1;
 	this.refraction_ratio = 0.98;
 

+ 5 - 5
src/materials/MeshShaderMaterial.js

@@ -19,7 +19,7 @@ THREE.MeshShaderMaterial = function ( parameters ) {
 
 	this.fragment_shader = "void main() {}";
 	this.vertex_shader = "void main() {}";
-    this.uniforms = {};
+	this.uniforms = {};
 
 	this.shading = THREE.SmoothShading;
 	this.blending = THREE.NormalBlending;
@@ -31,10 +31,10 @@ THREE.MeshShaderMaterial = function ( parameters ) {
 
 	if ( parameters ) {
 
-        if ( parameters.fragment_shader !== undefined ) this.fragment_shader = parameters.fragment_shader;
-        if ( parameters.vertex_shader !== undefined ) this.vertex_shader = parameters.vertex_shader;
+		if ( parameters.fragment_shader !== undefined ) this.fragment_shader = parameters.fragment_shader;
+		if ( parameters.vertex_shader !== undefined ) this.vertex_shader = parameters.vertex_shader;
 
-        if ( parameters.uniforms !== undefined ) this.uniforms = parameters.uniforms;
+		if ( parameters.uniforms !== undefined ) this.uniforms = parameters.uniforms;
 
 		if ( parameters.shading !== undefined ) this.shading = parameters.shading;
 		if ( parameters.blending !== undefined ) this.blending = parameters.blending;
@@ -50,7 +50,7 @@ THREE.MeshShaderMaterial = function ( parameters ) {
 
 		return 'THREE.MeshShaderMaterial (<br/>' +
 			'id: ' + this.id + '<br/>' +
-        
+
 			'blending: ' + this.blending + '<br/>' +
 			'wireframe: ' + this.wireframe + '<br/>' +
 			'wireframe_linewidth: ' + this.wireframe_linewidth +'<br/>' +

+ 44 - 0
src/materials/Texture.js

@@ -0,0 +1,44 @@
+/**
+ * @author mr.doob / http://mrdoob.com/
+ * @author alteredq / http://alteredqualia.com/
+ */
+
+THREE.Texture = function ( image, mapping, wrap_s, wrap_t, mag_filter, min_filter ) {
+
+	this.image = image;
+
+	this.mapping = mapping !== undefined ? mapping : new THREE.UVMapping();
+
+	this.wrap_s = wrap_s !== undefined ? wrap_s : THREE.ClampToEdgeWrapping;
+	this.wrap_t = wrap_t !== undefined ? wrap_t : THREE.ClampToEdgeWrapping;
+
+	this.mag_filter = mag_filter !== undefined ? mag_filter : THREE.LinearFilter;
+	this.min_filter = min_filter !== undefined ? min_filter : THREE.LinearMipMapLinearFilter;
+
+	this.toString = function () {
+
+		return 'THREE.Texture (<br/>' +
+			'image: ' + this.image + '<br/>' +
+			'wrap_s: ' + this.wrap_s + '<br/>' +
+			'wrap_t: ' + this.wrap_t + '<br/>' +
+			'mag_filter: ' + this.mag_filter + '<br/>' +
+			'min_filter: ' + this.min_filter + '<br/>' +
+			')';
+
+	};
+
+};
+
+THREE.MultiplyOperation = 0;
+THREE.MixOperation = 1;
+
+THREE.RepeatWrapping = 0;
+THREE.ClampToEdgeWrapping = 1;
+THREE.MirroredRepeatWrapping = 2;
+
+THREE.NearestFilter = 3;
+THREE.NearestMipMapNearestFilter = 4;
+THREE.NearestMipMapLinearFilter = 5;
+THREE.LinearFilter = 6;
+THREE.LinearMipMapNearestFilter = 7;
+THREE.LinearMipMapLinearFilter = 8;

+ 9 - 0
src/materials/mappings/CubeReflectionMapping.js

@@ -0,0 +1,9 @@
+/**
+ * @author mr.doob / http://mrdoob.com/
+ */
+ 
+THREE.CubeReflectionMapping = function () {
+
+	
+
+}

+ 9 - 0
src/materials/mappings/CubeRefractionMapping.js

@@ -0,0 +1,9 @@
+/**
+ * @author mr.doob / http://mrdoob.com/
+ */
+ 
+THREE.CubeRefractionMapping = function () {
+
+	
+
+}

+ 9 - 0
src/materials/mappings/LatitudeReflectionMapping.js

@@ -0,0 +1,9 @@
+/**
+ * @author mr.doob / http://mrdoob.com/
+ */
+ 
+THREE.LatitudeReflectionMapping = function () {
+
+	
+
+}

+ 9 - 0
src/materials/mappings/LatitudeRefractionMapping.js

@@ -0,0 +1,9 @@
+/**
+ * @author mr.doob / http://mrdoob.com/
+ */
+ 
+THREE.LatitudeRefractionMapping = function () {
+
+	
+
+}

+ 9 - 0
src/materials/mappings/SphericalReflectionMapping.js

@@ -0,0 +1,9 @@
+/**
+ * @author mr.doob / http://mrdoob.com/
+ */
+ 
+THREE.SphericalReflectionMapping = function () {
+
+	
+
+}

+ 9 - 0
src/materials/mappings/SphericalRefractionMapping.js

@@ -0,0 +1,9 @@
+/**
+ * @author mr.doob / http://mrdoob.com/
+ */
+ 
+THREE.SphericalRefractionMapping = function () {
+
+	
+
+}

+ 9 - 0
src/materials/mappings/UVMapping.js

@@ -0,0 +1,9 @@
+/**
+ * @author mr.doob / http://mrdoob.com/
+ */
+ 
+THREE.UVMapping = function () {
+
+	
+
+}

+ 0 - 38
src/materials/textures/Texture.js

@@ -1,38 +0,0 @@
-/**
- * @author mr.doob / http://mrdoob.com/
- * @author alteredq / http://alteredqualia.com/
- * }
- */
-
-THREE.Texture = function ( image, mapping, wrap_s, wrap_t ) {
-
-	this.image = image;
-	this.loaded = false;
-
-	this.mapping = mapping !== undefined ? mapping : THREE.UVMapping;
-
-	this.wrap_s = wrap_s !== undefined ? wrap_s : THREE.ClampToEdge;
-	this.wrap_t = wrap_t !== undefined ? wrap_t : THREE.ClampToEdge;
-
-	this.toString = function () {
-
-		return 'THREE.Texture (<br/>' +
-			'image: ' + this.image + '<br/>' +
-			'wrap_s: ' + this.wrap_s + '<br/>' +
-			'wrap_t: ' + this.wrap_t + '<br/>' +
-			')';
-
-	};
-
-};
-
-THREE.UVMapping = 0;
-THREE.ReflectionMapping = 1;
-THREE.RefractionMapping = 2;
-
-THREE.Multiply = 0;
-THREE.Mix = 1;
-
-THREE.Repeat = 0; // TODO: Rename to *Wrapping
-THREE.ClampToEdge = 1;
-THREE.MirroredRepeat = 2;

+ 0 - 21
src/materials/textures/TextureCube.js

@@ -1,21 +0,0 @@
-/**
- * @author mr.doob / http://mrdoob.com/
- * @author alteredq / http://alteredqualia.com/
- * }
- */
-
-THREE.TextureCube = function ( image, mapping ) {
-
-	this.image = image;
-	this.mapping = mapping ? mapping : THREE.ReflectionMap;
-
-	this.toString = function () {
-
-		return 'THREE.TextureCube (<br/>' +
-			'image: ' + this.image + '<br/>' +
-			'mapping: ' + this.mapping + '<br/>' +
-			')';
-
-	};
-
-};

+ 345 - 330
src/renderers/CanvasRenderer.js

@@ -231,81 +231,83 @@ THREE.CanvasRenderer = function () {
 
 		_context.setTransform( 1, 0, 0, 1, 0, 0 );
 
-	};
+		//
+
+		function calculateLights( scene ) {
 
-	function calculateLights( scene ) {
+			var l, ll, light, lightColor,
+			lights = scene.lights;
 
-		var l, ll, light, lightColor,
-		lights = scene.lights;
+			_ambientLight.setRGB( 0, 0, 0 );
+			_directionalLights.setRGB( 0, 0, 0 );
+			_pointLights.setRGB( 0, 0, 0 );
 
-		_ambientLight.setRGB( 0, 0, 0 );
-		_directionalLights.setRGB( 0, 0, 0 );
-		_pointLights.setRGB( 0, 0, 0 );
+			for ( l = 0, ll = lights.length; l < ll; l ++ ) {
 
-		for ( l = 0, ll = lights.length; l < ll; l ++ ) {
+				light = lights[ l ];
+				lightColor = light.color;
 
-			light = lights[ l ];
-			lightColor = light.color;
+				if ( light instanceof THREE.AmbientLight ) {
 
-			if ( light instanceof THREE.AmbientLight ) {
+					_ambientLight.r += lightColor.r;
+					_ambientLight.g += lightColor.g;
+					_ambientLight.b += lightColor.b;
 
-				_ambientLight.r += lightColor.r;
-				_ambientLight.g += lightColor.g;
-				_ambientLight.b += lightColor.b;
+				} else if ( light instanceof THREE.DirectionalLight ) {
 
-			} else if ( light instanceof THREE.DirectionalLight ) {
+					_directionalLights.r += lightColor.r;
+					_directionalLights.g += lightColor.g;
+					_directionalLights.b += lightColor.b;
 
-				_directionalLights.r += lightColor.r;
-				_directionalLights.g += lightColor.g;
-				_directionalLights.b += lightColor.b;
+				} else if ( light instanceof THREE.PointLight ) {
 
-			} else if ( light instanceof THREE.PointLight ) {
+					_pointLights.r += lightColor.r;
+					_pointLights.g += lightColor.g;
+					_pointLights.b += lightColor.b;
 
-				_pointLights.r += lightColor.r;
-				_pointLights.g += lightColor.g;
-				_pointLights.b += lightColor.b;
+				}
 
 			}
 
 		}
 
-	}
+		function calculateLight( scene, position, normal, color ) {
 
-	function calculateLight( scene, position, normal, color ) {
+			var l, ll, light, lightColor, lightIntensity,
+			amount, lights = scene.lights;
 
-		var l, ll, light, lightColor, lightIntensity,
-		amount, lights = scene.lights;
+			for ( l = 0, ll = lights.length; l < ll; l ++ ) {
 
-		for ( l = 0, ll = lights.length; l < ll; l ++ ) {
+				light = lights[ l ];
+				lightColor = light.color;
+				lightIntensity = light.intensity;
 
-			light = lights[ l ];
-			lightColor = light.color;
-			lightIntensity = light.intensity;
+				if ( light instanceof THREE.DirectionalLight ) {
 
-			if ( light instanceof THREE.DirectionalLight ) {
+					amount = normal.dot( light.position ) * lightIntensity;
 
-				amount = normal.dot( light.position ) * lightIntensity;
+					if ( amount > 0 ) {
 
-				if ( amount > 0 ) {
+						color.r += lightColor.r * amount;
+						color.g += lightColor.g * amount;
+						color.b += lightColor.b * amount;
 
-					color.r += lightColor.r * amount;
-					color.g += lightColor.g * amount;
-					color.b += lightColor.b * amount;
+					}
 
-				}
+				} else if ( light instanceof THREE.PointLight ) {
 
-			} else if ( light instanceof THREE.PointLight ) {
+					_vector3.sub( light.position, position );
+					_vector3.normalize();
 
-				_vector3.sub( light.position, position );
-				_vector3.normalize();
+					amount = normal.dot( _vector3 ) * lightIntensity;
 
-				amount = normal.dot( _vector3 ) * lightIntensity;
+					if ( amount > 0 ) {
 
-				if ( amount > 0 ) {
+						color.r += lightColor.r * amount;
+						color.g += lightColor.g * amount;
+						color.b += lightColor.b * amount;
 
-					color.r += lightColor.r * amount;
-					color.g += lightColor.g * amount;
-					color.b += lightColor.b * amount;
+					}
 
 				}
 
@@ -313,483 +315,496 @@ THREE.CanvasRenderer = function () {
 
 		}
 
-	}
+		function renderParticle ( v1, element, material, scene ) {
 
-	function renderParticle ( v1, element, material, scene ) {
+			if ( material.opacity == 0 ) return;
 
-		if ( material.opacity == 0 ) return;
+			setOpacity( material.opacity );
+			setBlending( material.blending );
 
-		setOpacity( material.opacity );
-		setBlending( material.blending );
+			var width, height, scaleX, scaleY,
+			bitmap, bitmapWidth, bitmapHeight;
 
-		var width, height, scaleX, scaleY,
-		bitmap, bitmapWidth, bitmapHeight;
+			if ( material instanceof THREE.ParticleBasicMaterial ) {
 
-		if ( material instanceof THREE.ParticleBasicMaterial ) {
+				if ( material.map ) {
 
-			if ( material.map ) {
+					bitmap = material.map;
+					bitmapWidth = bitmap.width >> 1;
+					bitmapHeight = bitmap.height >> 1;
 
-				bitmap = material.map;
-				bitmapWidth = bitmap.width >> 1;
-				bitmapHeight = bitmap.height >> 1;
+					scaleX = element.scale.x * _canvasWidthHalf;
+					scaleY = element.scale.y * _canvasHeightHalf;
 
-				scaleX = element.scale.x * _canvasWidthHalf;
-				scaleY = element.scale.y * _canvasHeightHalf;
+					width = scaleX * bitmapWidth;
+					height = scaleY * bitmapHeight;
 
-				width = scaleX * bitmapWidth;
-				height = scaleY * bitmapHeight;
+					// TODO: Rotations break this...
 
-				// TODO: Rotations break this...
+					_bboxRect.set( v1.x - width, v1.y - height, v1.x  + width, v1.y + height );
 
-				_bboxRect.set( v1.x - width, v1.y - height, v1.x  + width, v1.y + height );
+					if ( !_clipRect.instersects( _bboxRect ) ) {
 
-				if ( !_clipRect.instersects( _bboxRect ) ) {
+						return;
 
-					return;
+					}
+
+					_context.save();
+					_context.translate( v1.x, v1.y );
+					_context.rotate( - element.rotation );
+					_context.scale( scaleX, - scaleY );
+					_context.translate( - bitmapWidth, - bitmapHeight );
+
+					_context.drawImage( bitmap, 0, 0 );
+
+					_context.restore();
 
 				}
 
-				_context.save();
-				_context.translate( v1.x, v1.y );
-				_context.rotate( - element.rotation );
-				_context.scale( scaleX, - scaleY );
-				_context.translate( - bitmapWidth, - bitmapHeight );
+				/* DEBUG
+				_context.beginPath();
+				_context.moveTo( v1.x - 10, v1.y );
+				_context.lineTo( v1.x + 10, v1.y );
+				_context.moveTo( v1.x, v1.y - 10 );
+				_context.lineTo( v1.x, v1.y + 10 );
+				_context.closePath();
+				_context.strokeStyle = 'rgb(255,255,0)';
+				_context.stroke();
+				*/
 
-				_context.drawImage( bitmap, 0, 0 );
+			} else if ( material instanceof THREE.ParticleCircleMaterial ) {
 
-				_context.restore();
+				if ( _enableLighting ) {
 
-			}
+					_light.r = _ambientLight.r + _directionalLights.r + _pointLights.r;
+					_light.g = _ambientLight.g + _directionalLights.g + _pointLights.g;
+					_light.b = _ambientLight.b + _directionalLights.b + _pointLights.b;
 
-			/* DEBUG
-			_context.beginPath();
-			_context.moveTo( v1.x - 10, v1.y );
-			_context.lineTo( v1.x + 10, v1.y );
-			_context.moveTo( v1.x, v1.y - 10 );
-			_context.lineTo( v1.x, v1.y + 10 );
-			_context.closePath();
-			_context.strokeStyle = 'rgb(255,255,0)';
-			_context.stroke();
-			*/
+					_color.r = material.color.r * _light.r;
+					_color.g = material.color.g * _light.g;
+					_color.b = material.color.b * _light.b;
+
+					_color.updateStyleString();
 
-		} else if ( material instanceof THREE.ParticleCircleMaterial ) {
+				} else {
 
-			if ( _enableLighting ) {
+					_color.__styleString = material.color.__styleString;
 
-				_light.r = _ambientLight.r + _directionalLights.r + _pointLights.r;
-				_light.g = _ambientLight.g + _directionalLights.g + _pointLights.g;
-				_light.b = _ambientLight.b + _directionalLights.b + _pointLights.b;
+				}
 
-				_color.r = material.color.r * _light.r;
-				_color.g = material.color.g * _light.g;
-				_color.b = material.color.b * _light.b;
+				width = element.scale.x * _canvasWidthHalf;
+				height = element.scale.y * _canvasHeightHalf;
 
-				_color.updateStyleString();
+				_bboxRect.set( v1.x - width, v1.y - height, v1.x + width, v1.y + height );
 
-			} else {
+				if ( !_clipRect.instersects( _bboxRect ) ) {
 
-				_color.__styleString = material.color.__styleString;
+					return;
 
-			}
+				}
 
-			width = element.scale.x * _canvasWidthHalf;
-			height = element.scale.y * _canvasHeightHalf;
+				setFillStyle( _color.__styleString );
 
-			_bboxRect.set( v1.x - width, v1.y - height, v1.x + width, v1.y + height );
+				_context.save();
+				_context.translate( v1.x, v1.y );
+				_context.rotate( - element.rotation );
+				_context.scale( width, height );
 
-			if ( !_clipRect.instersects( _bboxRect ) ) {
+				_context.beginPath();
+				_context.arc( 0, 0, 1, 0, _pi2, true );
+				_context.closePath();
 
-				return;
+				_context.fill();
+				_context.restore();
 
 			}
 
-			setFillStyle( _color.__styleString );
+		}
 
-			_context.save();
-			_context.translate( v1.x, v1.y );
-			_context.rotate( - element.rotation );
-			_context.scale( width, height );
+		function renderLine( v1, v2, element, material, scene ) {
+
+			if ( material.opacity == 0 ) return;
+
+			setOpacity( material.opacity );
+			setBlending( material.blending );
 
 			_context.beginPath();
-			_context.arc( 0, 0, 1, 0, _pi2, true );
+			_context.moveTo( v1.positionScreen.x, v1.positionScreen.y );
+			_context.lineTo( v2.positionScreen.x, v2.positionScreen.y );
 			_context.closePath();
 
-			_context.fill();
-			_context.restore();
+			if ( material instanceof THREE.LineBasicMaterial ) {
 
-		}
+				_color.__styleString = material.color.__styleString;
 
-	}
+				setLineWidth( material.linewidth );
+				setStrokeStyle( _color.__styleString );
 
-	function renderLine( v1, v2, element, material, scene ) {
+				_context.stroke();
+				_bboxRect.inflate( material.linewidth * 2 );
 
-		if ( material.opacity == 0 ) return;
+			}
 
-		setOpacity( material.opacity );
-		setBlending( material.blending );
+		}
 
-		_context.beginPath();
-		_context.moveTo( v1.positionScreen.x, v1.positionScreen.y );
-		_context.lineTo( v2.positionScreen.x, v2.positionScreen.y );
-		_context.closePath();
+		function renderFace3( v1, v2, v3, element, material, scene ) {
 
-		if ( material instanceof THREE.LineBasicMaterial ) {
+			if ( material.opacity == 0 ) return;
 
-			_color.__styleString = material.color.__styleString;
+			setOpacity( material.opacity );
+			setBlending( material.blending );
 
-			setLineWidth( material.linewidth );
-			setStrokeStyle( _color.__styleString );
+			_v1x = v1.positionScreen.x; _v1y = v1.positionScreen.y;
+			_v2x = v2.positionScreen.x; _v2y = v2.positionScreen.y;
+			_v3x = v3.positionScreen.x; _v3y = v3.positionScreen.y;
 
-			_context.stroke();
-			_bboxRect.inflate( material.linewidth * 2 );
+			drawTriangle( _v1x, _v1y, _v2x, _v2y, _v3x, _v3y );
 
-		}
+			if ( material instanceof THREE.MeshBasicMaterial ) {
 
-	}
+				if ( material.map/* && !material.wireframe*/ ) {
 
-	function renderFace3( v1, v2, v3, element, material, scene ) {
+					if ( material.map.image.loaded ) {
 
-		if ( material.opacity == 0 ) return;
+						if ( material.map.mapping instanceof THREE.UVMapping ) {
 
-		setOpacity( material.opacity );
-		setBlending( material.blending );
+							texturePath( _v1x, _v1y, _v2x, _v2y, _v3x, _v3y, material.map.image, element.uvs[ 0 ].u, element.uvs[ 0 ].v, element.uvs[ 1 ].u, element.uvs[ 1 ].v, element.uvs[ 2 ].u, element.uvs[ 2 ].v );
 
-		_v1x = v1.positionScreen.x; _v1y = v1.positionScreen.y;
-		_v2x = v2.positionScreen.x; _v2y = v2.positionScreen.y;
-		_v3x = v3.positionScreen.x; _v3y = v3.positionScreen.y;
+						}
 
-		drawTriangle( _v1x, _v1y, _v2x, _v2y, _v3x, _v3y );
+					}
 
-		if ( material instanceof THREE.MeshBasicMaterial ) {
+				} else if ( material.env_map ) {
 
-			if ( material.map && material.map.loaded ) {
+					if ( material.env_map.image.loaded ) {
 
-				texturePath( _v1x, _v1y, _v2x, _v2y, _v3x, _v3y, material.map.image, element.uvs[ 0 ].u, element.uvs[ 0 ].v, element.uvs[ 1 ].u, element.uvs[ 1 ].v, element.uvs[ 2 ].u, element.uvs[ 2 ].v );
+						if ( material.env_map.mapping instanceof THREE.SphericalReflectionMapping ) {
 
-				/*
-				setBlending( THREE.SubtractiveBlending );
-				fillPath( material.color.__styleString );
-				*/
+							var cameraMatrix = camera.matrix;
 
-			} else if ( material.env_map && material.env_map.loaded ) {
+							_vector3.copy( element.vertexNormalsWorld[ 0 ] );
+							_uv1x = ( _vector3.x * cameraMatrix.n11 + _vector3.y * cameraMatrix.n12 + _vector3.z * cameraMatrix.n13 ) * 0.5 + 0.5;
+							_uv1y = - ( _vector3.x * cameraMatrix.n21 + _vector3.y * cameraMatrix.n22 + _vector3.z * cameraMatrix.n23 ) * 0.5 + 0.5;
 
-				if ( material.env_map.mapping == THREE.ReflectionMapping ) {
+							_vector3.copy( element.vertexNormalsWorld[ 1 ] );
+							_uv2x = ( _vector3.x * cameraMatrix.n11 + _vector3.y * cameraMatrix.n12 + _vector3.z * cameraMatrix.n13 ) * 0.5 + 0.5;
+							_uv2y = - ( _vector3.x * cameraMatrix.n21 + _vector3.y * cameraMatrix.n22 + _vector3.z * cameraMatrix.n23 ) * 0.5 + 0.5;
 
-					_vector3.copy( element.vertexNormalsWorld[ 0 ] );
-					_uv1x = ( _vector3.x * camera.matrix.n11 + _vector3.y * camera.matrix.n12 + _vector3.z * camera.matrix.n13 ) * 0.5 + 0.5;
-					_uv1y = - ( _vector3.x * camera.matrix.n21 + _vector3.y * camera.matrix.n22 + _vector3.z * camera.matrix.n23 ) * 0.5 + 0.5;
+							_vector3.copy( element.vertexNormalsWorld[ 2 ] );
+							_uv3x = ( _vector3.x * cameraMatrix.n11 + _vector3.y * cameraMatrix.n12 + _vector3.z * cameraMatrix.n13 ) * 0.5 + 0.5;
+							_uv3y = - ( _vector3.x * cameraMatrix.n21 + _vector3.y * cameraMatrix.n22 + _vector3.z * cameraMatrix.n23 ) * 0.5 + 0.5;
 
-					_vector3.copy( element.vertexNormalsWorld[ 1 ] );
-					_uv2x = ( _vector3.x * camera.matrix.n11 + _vector3.y * camera.matrix.n12 + _vector3.z * camera.matrix.n13 ) * 0.5 + 0.5;
-					_uv2y = - ( _vector3.x * camera.matrix.n21 + _vector3.y * camera.matrix.n22 + _vector3.z * camera.matrix.n23 ) * 0.5 + 0.5;
+							texturePath( _v1x, _v1y, _v2x, _v2y, _v3x, _v3y, material.env_map.image, _uv1x, _uv1y, _uv2x, _uv2y, _uv3x, _uv3y );
 
-					_vector3.copy( element.vertexNormalsWorld[ 2 ] );
-					_uv3x = ( _vector3.x * camera.matrix.n11 + _vector3.y * camera.matrix.n12 + _vector3.z * camera.matrix.n13 ) * 0.5 + 0.5;
-					_uv3y = - ( _vector3.x * camera.matrix.n21 + _vector3.y * camera.matrix.n22 + _vector3.z * camera.matrix.n23 ) * 0.5 + 0.5;
+						}/* else if ( material.env_map.mapping == THREE.RefractionMapping ) {
 
-					texturePath( _v1x, _v1y, _v2x, _v2y, _v3x, _v3y, material.env_map.image, _uv1x, _uv1y, _uv2x, _uv2y, _uv3x, _uv3y );
+						
 
-				}/* else if ( material.env_map.mapping == THREE.RefractionMapping ) {
+						}*/
 
-					
+					}
 
-				}*/
+				} else {
 
-			} else {
+					material.wireframe ? strokePath( material.color.__styleString, material.wireframe_linewidth ) : fillPath( material.color.__styleString );
 
-				material.wireframe ? strokePath( material.color.__styleString, material.wireframe_linewidth ) : fillPath( material.color.__styleString );
+				}
 
-			}
+			} else if ( material instanceof THREE.MeshLambertMaterial ) {
 
-		} else if ( material instanceof THREE.MeshLambertMaterial ) {
+				if ( material.map && !material.wireframe ) {
 
-			if ( material.map && !material.wireframe ) {
+					if ( material.map.mapping instanceof THREE.UVMapping ) {
 
-				texturePath( _v1x, _v1y, _v2x, _v2y, _v3x, _v3y, material.map.image, element.uvs[ 0 ].u, element.uvs[ 0 ].v, element.uvs[ 1 ].u, element.uvs[ 1 ].v, element.uvs[ 2 ].u, element.uvs[ 2 ].v );
+						texturePath( _v1x, _v1y, _v2x, _v2y, _v3x, _v3y, material.map.image, element.uvs[ 0 ].u, element.uvs[ 0 ].v, element.uvs[ 1 ].u, element.uvs[ 1 ].v, element.uvs[ 2 ].u, element.uvs[ 2 ].v );
 
-				setBlending( THREE.SubtractiveBlending );
+					}
 
-			}
+					setBlending( THREE.SubtractiveBlending );
 
-			if ( _enableLighting ) {
+				}
 
-				if ( !material.wireframe && material.shading == THREE.SmoothShading && element.vertexNormalsWorld.length == 3 ) {
+				if ( _enableLighting ) {
 
-					_color1.r = _color2.r = _color3.r = _ambientLight.r;
-					_color1.g = _color2.g = _color3.g = _ambientLight.g;
-					_color1.b = _color2.b = _color3.b = _ambientLight.b;
+					if ( !material.wireframe && material.shading == THREE.SmoothShading && element.vertexNormalsWorld.length == 3 ) {
 
-					calculateLight( scene, element.v1.positionWorld, element.vertexNormalsWorld[ 0 ], _color1 );
-					calculateLight( scene, element.v2.positionWorld, element.vertexNormalsWorld[ 1 ], _color2 );
-					calculateLight( scene, element.v3.positionWorld, element.vertexNormalsWorld[ 2 ], _color3 );
+						_color1.r = _color2.r = _color3.r = _ambientLight.r;
+						_color1.g = _color2.g = _color3.g = _ambientLight.g;
+						_color1.b = _color2.b = _color3.b = _ambientLight.b;
 
-					_color4.r = ( _color2.r + _color3.r ) * 0.5;
-					_color4.g = ( _color2.g + _color3.g ) * 0.5;
-					_color4.b = ( _color2.b + _color3.b ) * 0.5;
+						calculateLight( scene, element.v1.positionWorld, element.vertexNormalsWorld[ 0 ], _color1 );
+						calculateLight( scene, element.v2.positionWorld, element.vertexNormalsWorld[ 1 ], _color2 );
+						calculateLight( scene, element.v3.positionWorld, element.vertexNormalsWorld[ 2 ], _color3 );
 
-					_bitmap = getGradientTexture( _color1, _color2, _color3, _color4 );
+						_color4.r = ( _color2.r + _color3.r ) * 0.5;
+						_color4.g = ( _color2.g + _color3.g ) * 0.5;
+						_color4.b = ( _color2.b + _color3.b ) * 0.5;
 
-					texturePath( _v1x, _v1y, _v2x, _v2y, _v3x, _v3y, _bitmap, 0, 0, 1, 0, 0, 1 );
+						_bitmap = getGradientTexture( _color1, _color2, _color3, _color4 );
 
-				} else {
+						texturePath( _v1x, _v1y, _v2x, _v2y, _v3x, _v3y, _bitmap, 0, 0, 1, 0, 0, 1 );
 
-					_light.r = _ambientLight.r;
-					_light.g = _ambientLight.g;
-					_light.b = _ambientLight.b;
+					} else {
 
-					calculateLight( scene, element.centroidWorld, element.normalWorld, _light );
+						_light.r = _ambientLight.r;
+						_light.g = _ambientLight.g;
+						_light.b = _ambientLight.b;
 
-					_color.r = material.color.r * _light.r;
-					_color.g = material.color.g * _light.g;
-					_color.b = material.color.b * _light.b;
+						calculateLight( scene, element.centroidWorld, element.normalWorld, _light );
 
-					_color.updateStyleString();
-					material.wireframe ? strokePath( _color.__styleString, material.wireframe_linewidth ) : fillPath( _color.__styleString );
+						_color.r = material.color.r * _light.r;
+						_color.g = material.color.g * _light.g;
+						_color.b = material.color.b * _light.b;
 
-				} 
+						_color.updateStyleString();
+						material.wireframe ? strokePath( _color.__styleString, material.wireframe_linewidth ) : fillPath( _color.__styleString );
 
-			} else {
+					} 
 
-				material.wireframe ? strokePath( material.color.__styleString, material.wireframe_linewidth ) : fillPath( material.color.__styleString );
+				} else {
 
-			}
+					material.wireframe ? strokePath( material.color.__styleString, material.wireframe_linewidth ) : fillPath( material.color.__styleString );
 
-		} else if ( material instanceof THREE.MeshDepthMaterial ) {
+				}
 
-			/*
-			_w = 1 - ( material.__2near / (material.__farPlusNear - element.z * material.__farMinusNear ) );
-			_color.setRGB( _w, _w, _w );
-			*/
+			} else if ( material instanceof THREE.MeshDepthMaterial ) {
 
-			_2near = material.__2near;
-			_farPlusNear = material.__farPlusNear;
-			_farMinusNear = material.__farMinusNear;
+				/*
+				_w = 1 - ( material.__2near / (material.__farPlusNear - element.z * material.__farMinusNear ) );
+				_color.setRGB( _w, _w, _w );
+				*/
+
+				_2near = material.__2near;
+				_farPlusNear = material.__farPlusNear;
+				_farMinusNear = material.__farMinusNear;
 
-			_color1.r = _color1.g = _color1.b = 1 - ( _2near / ( _farPlusNear - v1.positionScreen.z * _farMinusNear ) );
-			_color2.r = _color2.g = _color2.b = 1 - ( _2near / ( _farPlusNear - v2.positionScreen.z * _farMinusNear ) );
-			_color3.r = _color3.g = _color3.b = 1 - ( _2near / ( _farPlusNear - v3.positionScreen.z * _farMinusNear ) );
+				_color1.r = _color1.g = _color1.b = 1 - ( _2near / ( _farPlusNear - v1.positionScreen.z * _farMinusNear ) );
+				_color2.r = _color2.g = _color2.b = 1 - ( _2near / ( _farPlusNear - v2.positionScreen.z * _farMinusNear ) );
+				_color3.r = _color3.g = _color3.b = 1 - ( _2near / ( _farPlusNear - v3.positionScreen.z * _farMinusNear ) );
 
-			_color4.r = ( _color2.r + _color3.r ) * 0.5;
-			_color4.g = ( _color2.g + _color3.g ) * 0.5;
-			_color4.b = ( _color2.b + _color3.b ) * 0.5;
+				_color4.r = ( _color2.r + _color3.r ) * 0.5;
+				_color4.g = ( _color2.g + _color3.g ) * 0.5;
+				_color4.b = ( _color2.b + _color3.b ) * 0.5;
 
-			_bitmap = getGradientTexture( _color1, _color2, _color3, _color4 );
+				_bitmap = getGradientTexture( _color1, _color2, _color3, _color4 );
 
-			texturePath( _v1x, _v1y, _v2x, _v2y, _v3x, _v3y, _bitmap, 0, 0, 1, 0, 0, 1 );
+				texturePath( _v1x, _v1y, _v2x, _v2y, _v3x, _v3y, _bitmap, 0, 0, 1, 0, 0, 1 );
 
-		} else if ( material instanceof THREE.MeshNormalMaterial ) {
+			} else if ( material instanceof THREE.MeshNormalMaterial ) {
 
-			_color.r = normalToComponent( element.normalWorld.x );
-			_color.g = normalToComponent( element.normalWorld.y );
-			_color.b = normalToComponent( element.normalWorld.z );
-			_color.updateStyleString();
+				_color.r = normalToComponent( element.normalWorld.x );
+				_color.g = normalToComponent( element.normalWorld.y );
+				_color.b = normalToComponent( element.normalWorld.z );
+				_color.updateStyleString();
+
+				material.wireframe ? strokePath( _color.__styleString, material.wireframe_linewidth ) : fillPath( _color.__styleString );
 
-			material.wireframe ? strokePath( _color.__styleString, material.wireframe_linewidth ) : fillPath( _color.__styleString );
+			}
 
 		}
 
-	}
+		function drawTriangle( x0, y0, x1, y1, x2, y2 ) {
 
-	function drawTriangle( x0, y0, x1, y1, x2, y2 ) {
+			_context.beginPath();
+			_context.moveTo( x0, y0 );
+			_context.lineTo( x1, y1 );
+			_context.lineTo( x2, y2 );
+			_context.lineTo( x0, y0 );
+			_context.closePath();
 
-		_context.beginPath();
-		_context.moveTo( x0, y0 );
-		_context.lineTo( x1, y1 );
-		_context.lineTo( x2, y2 );
-		_context.lineTo( x0, y0 );
-		_context.closePath();
+		}
 
-	}
+		/*
+		function drawQuad( x0, y0, x1, y1, x2, y2, x3, y3 ) {
 
-	/*
-	function drawQuad( x0, y0, x1, y1, x2, y2, x3, y3 ) {
+			_context.beginPath();
+			_context.moveTo( x0, y0 );
+			_context.lineTo( x1, y1 );
+			_context.lineTo( x2, y2 );
+			_context.lineTo( x3, y3 );
+			_context.lineTo( x0, y0 );
+			_context.closePath();
 
-		_context.beginPath();
-		_context.moveTo( x0, y0 );
-		_context.lineTo( x1, y1 );
-		_context.lineTo( x2, y2 );
-		_context.lineTo( x3, y3 );
-		_context.lineTo( x0, y0 );
-		_context.closePath();
+		}
+		*/
 
-	}
-	*/
+		function strokePath( color, linewidth ) {
 
-	function strokePath( color, linewidth ) {
+			setStrokeStyle( color );
+			setLineWidth( linewidth );
 
-		setStrokeStyle( color );
-		setLineWidth( linewidth );
+			_context.stroke();
 
-		_context.stroke();
+			_bboxRect.inflate( linewidth * 2 );
 
-		_bboxRect.inflate( linewidth * 2 );
+		}
 
-	}
+		function fillPath( color ) {
 
-	function fillPath( color ) {
+			setFillStyle( color );
+			_context.fill();
 
-		setFillStyle( color );
-		_context.fill();
+		}
 
-	}
+		function texturePath( x0, y0, x1, y1, x2, y2, bitmap, u0, v0, u1, v1, u2, v2 ) {
 
-	function texturePath( x0, y0, x1, y1, x2, y2, bitmap, u0, v0, u1, v1, u2, v2 ) {
+			// http://extremelysatisfactorytotalitarianism.com/blog/?p=2120
 
-		// http://extremelysatisfactorytotalitarianism.com/blog/?p=2120
+			var a, b, c, d, e, f, det,
+			width = bitmap.width - 1,
+			height = bitmap.height - 1;
 
-		var a, b, c, d, e, f, det,
-		width = bitmap.width - 1,
-		height = bitmap.height - 1;
+			u0 *= width; v0 *= height;
+			u1 *= width; v1 *= height;
+			u2 *= width; v2 *= height;
 
-		u0 *= width; v0 *= height;
-		u1 *= width; v1 *= height;
-		u2 *= width; v2 *= height;
+			x1 -= x0; y1 -= y0;
+			x2 -= x0; y2 -= y0;
 
-		x1 -= x0; y1 -= y0;
-		x2 -= x0; y2 -= y0;
+			u1 -= u0; v1 -= v0;
+			u2 -= u0; v2 -= v0;
 
-		u1 -= u0; v1 -= v0;
-		u2 -= u0; v2 -= v0;
+			det = 1 / ( u1 * v2 - u2 * v1 ),
 
-		det = 1 / ( u1 * v2 - u2 * v1 ),
+			a = ( v2 * x1 - v1 * x2 ) * det,
+			b = ( v2 * y1 - v1 * y2 ) * det,
+			c = ( u1 * x2 - u2 * x1 ) * det,
+			d = ( u1 * y2 - u2 * y1 ) * det,
 
-		a = ( v2 * x1 - v1 * x2 ) * det,
-		b = ( v2 * y1 - v1 * y2 ) * det,
-		c = ( u1 * x2 - u2 * x1 ) * det,
-		d = ( u1 * y2 - u2 * y1 ) * det,
+			e = x0 - a * u0 - c * v0,
+			f = y0 - b * u0 - d * v0;
 
-		e = x0 - a * u0 - c * v0,
-		f = y0 - b * u0 - d * v0;
+			_context.save();
+			_context.transform( a, b, c, d, e, f );
+			_context.clip();
+			_context.drawImage( bitmap, 0, 0 );
+			_context.restore();
 
-		_context.save();
-		_context.transform( a, b, c, d, e, f );
-		_context.clip();
-		_context.drawImage( bitmap, 0, 0 );
-		_context.restore();
+		}
 
-	}
+		//
 
-	//
+		function setOpacity( value ) {
 
-	function setOpacity( value ) {
+			if ( _contextGlobalAlpha != value ) {
 
-		if ( _contextGlobalAlpha != value ) {
+				_context.globalAlpha = _contextGlobalAlpha = value;
 
-			_context.globalAlpha = _contextGlobalAlpha = value;
+			}
 
 		}
 
-	}
+		function setBlending( value ) {
+
+			if ( _contextGlobalCompositeOperation != value ) {
 
-	function setBlending( value ) {
+				switch ( value ) {
 
-		if ( _contextGlobalCompositeOperation != value ) {
+					case THREE.NormalBlending:
 
-			switch ( value ) {
+						_context.globalCompositeOperation = 'source-over';
 
-				case THREE.NormalBlending:
+						break;
 
-					_context.globalCompositeOperation = 'source-over';
+					case THREE.AdditiveBlending:
 
-					break;
+						_context.globalCompositeOperation = 'lighter';
 
-				case THREE.AdditiveBlending:
+						break;
 
-					_context.globalCompositeOperation = 'lighter';
+					case THREE.SubtractiveBlending:
 
-					break;
+						_context.globalCompositeOperation = 'darker';
 
-				case THREE.SubtractiveBlending:
+						break;
 
-					_context.globalCompositeOperation = 'darker';
+				}
 
-					break;
+				_contextGlobalCompositeOperation = value;
 
 			}
 
-			_contextGlobalCompositeOperation = value;
-
 		}
 
-	}
+		function setLineWidth( value ) {
 
-	function setLineWidth( value ) {
+			if ( _contextLineWidth != value ) {
 
-		if ( _contextLineWidth != value ) {
+				_context.lineWidth = _contextLineWidth = value;
 
-			_context.lineWidth = _contextLineWidth = value;
+			}
 
 		}
 
-	}
+		function setStrokeStyle( value ) {
 
-	function setStrokeStyle( value ) {
+			if ( _contextStrokeStyle != value ) {
 
-		if ( _contextStrokeStyle != value ) {
+				_context.strokeStyle = _contextStrokeStyle  = value;
 
-			_context.strokeStyle = _contextStrokeStyle  = value;
+			}
 
 		}
 
-	}
+		function setFillStyle( value ) {
 
-	function setFillStyle( value ) {
+			if ( _contextFillStyle != value ) {
 
-		if ( _contextFillStyle != value ) {
+				_context.fillStyle = _contextFillStyle = value;
 
-			_context.fillStyle = _contextFillStyle = value;
+			}
 
 		}
 
-	}
+		function getGradientTexture( color1, color2, color3, color4 ) {
 
-	function getGradientTexture( color1, color2, color3, color4 ) {
+			// http://mrdoob.com/blog/post/710
 
-		// http://mrdoob.com/blog/post/710
+			_pixelMapData[ 0 ] = _max( 0, _min( 255, ~~ ( color1.r * 255 ) ) );
+			_pixelMapData[ 1 ] = _max( 0, _min( 255, ~~ ( color1.g * 255 ) ) );
+			_pixelMapData[ 2 ] = _max( 0, _min( 255, ~~ ( color1.b * 255 ) ) );
 
-		_pixelMapData[ 0 ] = _max( 0, _min( 255, ~~ ( color1.r * 255 ) ) );
-		_pixelMapData[ 1 ] = _max( 0, _min( 255, ~~ ( color1.g * 255 ) ) );
-		_pixelMapData[ 2 ] = _max( 0, _min( 255, ~~ ( color1.b * 255 ) ) );
+			_pixelMapData[ 4 ] = _max( 0, _min( 255, ~~ ( color2.r * 255 ) ) );
+			_pixelMapData[ 5 ] = _max( 0, _min( 255, ~~ ( color2.g * 255 ) ) );
+			_pixelMapData[ 6 ] = _max( 0, _min( 255, ~~ ( color2.b * 255 ) ) );
 
-		_pixelMapData[ 4 ] = _max( 0, _min( 255, ~~ ( color2.r * 255 ) ) );
-		_pixelMapData[ 5 ] = _max( 0, _min( 255, ~~ ( color2.g * 255 ) ) );
-		_pixelMapData[ 6 ] = _max( 0, _min( 255, ~~ ( color2.b * 255 ) ) );
+			_pixelMapData[ 8 ] = _max( 0, _min( 255, ~~ ( color3.r * 255 ) ) );
+			_pixelMapData[ 9 ] = _max( 0, _min( 255, ~~ ( color3.g * 255 ) ) );
+			_pixelMapData[ 10 ] = _max( 0, _min( 255, ~~ ( color3.b * 255 ) ) );
 
-		_pixelMapData[ 8 ] = _max( 0, _min( 255, ~~ ( color3.r * 255 ) ) );
-		_pixelMapData[ 9 ] = _max( 0, _min( 255, ~~ ( color3.g * 255 ) ) );
-		_pixelMapData[ 10 ] = _max( 0, _min( 255, ~~ ( color3.b * 255 ) ) );
+			_pixelMapData[ 12 ] = _max( 0, _min( 255, ~~ ( color4.r * 255 ) ) );
+			_pixelMapData[ 13 ] = _max( 0, _min( 255, ~~ ( color4.g * 255 ) ) );
+			_pixelMapData[ 14 ] = _max( 0, _min( 255, ~~ ( color4.b * 255 ) ) );
 
-		_pixelMapData[ 12 ] = _max( 0, _min( 255, ~~ ( color4.r * 255 ) ) );
-		_pixelMapData[ 13 ] = _max( 0, _min( 255, ~~ ( color4.g * 255 ) ) );
-		_pixelMapData[ 14 ] = _max( 0, _min( 255, ~~ ( color4.b * 255 ) ) );
+			_pixelMapContext.putImageData( _pixelMapImage, 0, 0 );
+			_gradientMapContext.drawImage( _pixelMap, 0, 0 );
 
-		_pixelMapContext.putImageData( _pixelMapImage, 0, 0 );
-		_gradientMapContext.drawImage( _pixelMap, 0, 0 );
+			return _gradientMap;
 
-		return _gradientMap;
+		}
 
-	}
+		function normalToComponent( normal ) {
 
-	function normalToComponent( normal ) {
+			// https://gist.github.com/665829
 
-		// https://gist.github.com/665829
+			return normal < 0 ? _min( ( 1 + normal ) * 0.5, 0.5 ) : 0.5 + _min( normal * 0.5, 0.5 );
 
-		return normal < 0 ? _min( ( 1 + normal ) * 0.5, 0.5 ) : 0.5 + _min( normal * 0.5, 0.5 );
+		}
 
-	}
+		// Hide anti-alias gaps
 
-	// Hide anti-alias gaps
+		function expand( v1, v2 ) {
 
-	function expand( v1, v2 ) {
+			var x = v2.x - v1.x, y =  v2.y - v1.y,
+			unit = 1 / Math.sqrt( x * x + y * y );
 
-		var x = v2.x - v1.x, y =  v2.y - v1.y,
-		unit = 1 / Math.sqrt( x * x + y * y );
+			x *= unit; y *= unit;
 
-		x *= unit; y *= unit;
+			v2.x += x; v2.y += y;
+			v1.x -= x; v1.y -= y;
 
-		v2.x += x; v2.y += y;
-		v1.x -= x; v1.y -= y;
+		}
 
-	}
+	};
 
 };

+ 176 - 169
src/renderers/WebGLRenderer.js

@@ -13,25 +13,25 @@ THREE.WebGLRenderer = function ( scene ) {
 
 	// This is not GPU limitation as the same shader works ok in Firefox
 	// and Chrome with "--use-gl=desktop" flag.
-	
+
 	// Difference comes from Chrome on Windows using by default ANGLE,
 	// thus going DirectX9 route (while FF uses OpenGL).
-	
+
 	// See http://code.google.com/p/chromium/issues/detail?id=63491
 
-	var _canvas = document.createElement( 'canvas' ), _gl, 
+	var _canvas = document.createElement( 'canvas' ), _gl,
 	_oldProgram, _uberProgram,
 	_modelViewMatrix = new THREE.Matrix4(), _normalMatrix,
-	
-	_viewMatrixArray = new Float32Array(16), 
-	_modelViewMatrixArray = new Float32Array(16), 
-	_projectionMatrixArray = new Float32Array(16), 
+
+	_viewMatrixArray = new Float32Array(16),
+	_modelViewMatrixArray = new Float32Array(16),
+	_projectionMatrixArray = new Float32Array(16),
 	_normalMatrixArray = new Float32Array(9),
 	_objectMatrixArray = new Float32Array(16),
 
 	// ubershader material constants
-	
-	BASIC = 0, LAMBERT = 1, PHONG = 2, DEPTH = 3, NORMAL = 4, CUBE = 5, 
+
+	BASIC = 0, LAMBERT = 1, PHONG = 2, DEPTH = 3, NORMAL = 4, CUBE = 5,
 
 	// heuristics to create shader parameters according to lights in the scene
 	// (not to blow over maxLights budget)
@@ -42,7 +42,7 @@ THREE.WebGLRenderer = function ( scene ) {
 	this.autoClear = true;
 
 	initGL();
-	
+
 	_uberProgram = initUbershader( maxLightCount.directional, maxLightCount.point );
 	_oldProgram = _uberProgram;
 
@@ -156,7 +156,7 @@ THREE.WebGLRenderer = function ( scene ) {
 		}
 
 	};
-	
+
 	this.createBuffers = function ( object, g ) {
 
 		var f, fl, fi, face, vertexNormals, normal, uv, v1, v2, v3, v4, m, ml, i,
@@ -216,7 +216,7 @@ THREE.WebGLRenderer = function ( scene ) {
 					for ( i = 0; i < 3; i ++ ) {
 
 						uvArray.push( uv[ i ].u, uv[ i ].v );
-						
+
 					}
 
 				}
@@ -266,7 +266,7 @@ THREE.WebGLRenderer = function ( scene ) {
 					for ( i = 0; i < 4; i ++ ) {
 
 						uvArray.push( uv[ i ].u, uv[ i ].v );
-						
+
 					}
 
 				}
@@ -285,7 +285,7 @@ THREE.WebGLRenderer = function ( scene ) {
 				vertexIndex += 4;
 
 			}
-			
+
 		}
 
 		if ( !vertexArray.length ) {
@@ -303,13 +303,13 @@ THREE.WebGLRenderer = function ( scene ) {
 		_gl.bufferData( _gl.ARRAY_BUFFER, new Float32Array( normalArray ), _gl.STATIC_DRAW );
 
 		if ( uvArray.length > 0 ) {
-			
+
 			geometryChunk.__webGLUVBuffer = _gl.createBuffer();
 			_gl.bindBuffer( _gl.ARRAY_BUFFER, geometryChunk.__webGLUVBuffer );
 			_gl.bufferData( _gl.ARRAY_BUFFER, new Float32Array( uvArray ), _gl.STATIC_DRAW );
-			
+
 		}
-		
+
 		geometryChunk.__webGLFaceBuffer = _gl.createBuffer();
 		_gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, geometryChunk.__webGLFaceBuffer );
 		_gl.bufferData( _gl.ELEMENT_ARRAY_BUFFER, new Uint16Array( faceArray ), _gl.STATIC_DRAW );
@@ -331,59 +331,59 @@ THREE.WebGLRenderer = function ( scene ) {
 			mMap, envMap, mixEnvMap,
 			mRefractionRatio, useRefract,
 			program, u, identifiers, attributes;
-		
+
 
 		if ( material instanceof THREE.MeshShaderMaterial ) {
-			
+
 			if ( !material.program ) {
-				
+
 				material.program = buildProgram( material.fragment_shader, material.vertex_shader );
-				
+
 				identifiers = [ 'viewMatrix', 'modelViewMatrix', 'projectionMatrix', 'normalMatrix', 'objectMatrix', 'cameraPosition' ];
 				for( u in material.uniforms ) {
-					
+
 					identifiers.push(u);
-					
+
 				}
 				cacheUniformLocations( material.program, identifiers );
 				cacheAttributeLocations( material.program, [ "position", "normal", "uv" ] );
-				
+
 			}
-			
+
 			program = material.program;
-			
+
 		} else {
-			
+
 			program = _uberProgram;
-			
+
 		}
-		
+
 		if( program != _oldProgram ) {
-			
+
 			_gl.useProgram( program );
 			_oldProgram = program;
-			
+
 		}
-		
+
 		if ( program == _uberProgram ) {
 
 			this.setupLights( program, lights );
-			
+
 		}
-		
+
 		this.loadCamera( program, camera );
 		this.loadMatrices( program );
-		
-		
+
+
 		if ( material instanceof THREE.MeshShaderMaterial ) {
-			
+
 			mWireframe = material.wireframe;
 			mLineWidth = material.wireframe_linewidth;
-			
+
 			setUniforms( program, material.uniforms );
-			
-		} 
-		
+
+		}
+
 		if ( material instanceof THREE.MeshPhongMaterial ||
 			 material instanceof THREE.MeshLambertMaterial ||
 			 material instanceof THREE.MeshBasicMaterial ) {
@@ -399,10 +399,10 @@ THREE.WebGLRenderer = function ( scene ) {
 			mMap = material.map;
 			envMap = material.env_map;
 
-			mixEnvMap = material.combine == THREE.Mix;
+			mixEnvMap = material.combine == THREE.MixOperation;
 			mReflectivity = material.reflectivity;
 
-			useRefract = material.env_map && material.env_map.mapping == THREE.RefractionMapping;
+			useRefract = material.env_map && material.env_map.mapping instanceof THREE.CubeRefractionMapping;
 			mRefractionRatio = material.refraction_ratio;
 
 			_gl.uniform4f( program.uniforms.mColor,  mColor.r * mOpacity, mColor.g * mOpacity, mColor.b * mOpacity, mOpacity );
@@ -466,11 +466,11 @@ THREE.WebGLRenderer = function ( scene ) {
 			envMap = material.env_map;
 
 		}
-		
+
 		if ( mMap ) {
 
 			setTexture( mMap, 0 );
-			
+
 			_gl.uniform1i( program.uniforms.tMap,  0 );
 			_gl.uniform1i( program.uniforms.enableMap, 1 );
 
@@ -483,7 +483,7 @@ THREE.WebGLRenderer = function ( scene ) {
 		if ( envMap ) {
 
 			setCubeTexture( envMap, 1 );
-			
+
 			_gl.uniform1i( program.uniforms.tCube, 1 );
 			_gl.uniform1i( program.uniforms.enableCubeMap, 1 );
 
@@ -494,7 +494,7 @@ THREE.WebGLRenderer = function ( scene ) {
 		}
 
 		attributes = program.attributes;
-		
+
 		// vertices
 
 		_gl.bindBuffer( _gl.ARRAY_BUFFER, geometryChunk.__webGLVertexBuffer );
@@ -507,8 +507,8 @@ THREE.WebGLRenderer = function ( scene ) {
 
 		// uvs
 
-		if ( attributes.uv >= 0 ) { 
-			
+		if ( attributes.uv >= 0 ) {
+
 			if ( geometryChunk.__webGLUVBuffer ) {
 
 				_gl.bindBuffer( _gl.ARRAY_BUFFER, geometryChunk.__webGLUVBuffer );
@@ -519,7 +519,7 @@ THREE.WebGLRenderer = function ( scene ) {
 			} else {
 
 				_gl.disableVertexAttribArray( attributes.uv );
-				
+
 			}
 
 		}
@@ -572,7 +572,7 @@ THREE.WebGLRenderer = function ( scene ) {
 
 					this.setBlending( material.blending );
 					this.renderBuffer( camera, lights, material, geometryChunk );
-					
+
 				}
 
 			}
@@ -580,10 +580,10 @@ THREE.WebGLRenderer = function ( scene ) {
 		}
 
 	};
-	
+
 	this.render = function( scene, camera ) {
 
-		var o, ol, webGLObject, object, buffer, 
+		var o, ol, webGLObject, object, buffer,
 			lights = scene.lights;
 
 		this.initWebGLObjects( scene );
@@ -595,21 +595,21 @@ THREE.WebGLRenderer = function ( scene ) {
 		}
 
 		camera.autoUpdateMatrix && camera.updateMatrix();
-		
+
 		// opaque pass
 
 		for ( o = 0, ol = scene.__webGLObjects.length; o < ol; o++ ) {
 
 			webGLObject = scene.__webGLObjects[ o ];
-			
+
 			object = webGLObject.object;
 			buffer = webGLObject.buffer;
-			
+
 			if ( object.visible ) {
 
 				this.setupMatrices( object, camera );
 				this.renderPass( camera, lights, object, buffer, THREE.NormalBlending, false );
-				
+
 			}
 
 		}
@@ -622,25 +622,25 @@ THREE.WebGLRenderer = function ( scene ) {
 
 			object = webGLObject.object;
 			buffer = webGLObject.buffer;
-			
+
 			if ( object.visible ) {
-				
+
 				this.setupMatrices( object, camera );
 
 				// opaque blended materials
-				
+
 				this.renderPass( camera, lights, object, buffer, THREE.AdditiveBlending, false );
 				this.renderPass( camera, lights, object, buffer, THREE.SubtractiveBlending, false );
-				
+
 				// transparent blended materials
-				
+
 				this.renderPass( camera, lights, object, buffer, THREE.AdditiveBlending, true );
 				this.renderPass( camera, lights, object, buffer, THREE.SubtractiveBlending, true );
 
 				// transparent normal materials
-				
+
 				this.renderPass( camera, lights, object, buffer, THREE.NormalBlending, true );
-				
+
 			}
 
 		}
@@ -663,13 +663,13 @@ THREE.WebGLRenderer = function ( scene ) {
 			object = scene.objects[ o ];
 
 			if ( scene.__webGLObjectsMap[ object.id ] == undefined ) {
-				
+
 				scene.__webGLObjectsMap[ object.id ] = {};
-				
+
 			}
-			
+
 			objmap = scene.__webGLObjectsMap[ object.id ];
-			
+
 			if ( object instanceof THREE.Mesh ) {
 
 				// create separate VBOs per geometry chunk
@@ -685,16 +685,16 @@ THREE.WebGLRenderer = function ( scene ) {
 						this.createBuffers( object, g );
 
 					}
-					
+
 					// create separate wrapper per each use of VBO
-					
+
 					if ( objmap[ g ] == undefined ) {
-					
+
 						globject = { buffer: geometryChunk, object: object };
 						scene.__webGLObjects.push( globject );
-					
+
 						objmap[ g ] = 1;
-						
+
 					}
 
 				}
@@ -712,19 +712,19 @@ THREE.WebGLRenderer = function ( scene ) {
 	this.removeObject = function ( scene, object ) {
 
 		var o, ol, zobject;
-		
+
 		for ( o = scene.__webGLObjects.length - 1; o >= 0; o-- ) {
-			
+
 			zobject = scene.__webGLObjects[ o ].object;
-			
+
 			if ( object == zobject ) {
 
 				scene.__webGLObjects.splice( o, 1 );
 
 			}
-			
+
 		}
-		
+
 	};
 
 	this.setupMatrices = function ( object, camera ) {
@@ -741,23 +741,23 @@ THREE.WebGLRenderer = function ( scene ) {
 		_normalMatrixArray.set( _normalMatrix.m );
 
 		_objectMatrixArray.set( object.matrix.flatten() );
-	
+
 	};
-	
+
 	this.loadMatrices = function ( program ) {
-		
+
 		_gl.uniformMatrix4fv( program.uniforms.viewMatrix, false, _viewMatrixArray );
 		_gl.uniformMatrix4fv( program.uniforms.modelViewMatrix, false, _modelViewMatrixArray );
 		_gl.uniformMatrix4fv( program.uniforms.projectionMatrix, false, _projectionMatrixArray );
 		_gl.uniformMatrix3fv( program.uniforms.normalMatrix, false, _normalMatrixArray );
 		_gl.uniformMatrix4fv( program.uniforms.objectMatrix, false, _objectMatrixArray );
-		
+
 	};
 
 	this.loadCamera = function( program, camera ) {
-		
+
 		_gl.uniform3f( program.uniforms.cameraPosition, camera.position.x, camera.position.y, camera.position.z );
-		
+
 	};
 
 	this.setBlending = function( blending ) {
@@ -799,7 +799,7 @@ THREE.WebGLRenderer = function ( scene ) {
 			} else {
 
 				_gl.frontFace( _gl.CW );
-				
+
 			}
 
 			if( cullFace == "back" ) {
@@ -813,7 +813,7 @@ THREE.WebGLRenderer = function ( scene ) {
 			} else {
 
 				_gl.cullFace( _gl.FRONT_AND_BACK );
-				
+
 			}
 
 			_gl.enable( _gl.CULL_FACE );
@@ -821,7 +821,7 @@ THREE.WebGLRenderer = function ( scene ) {
 		} else {
 
 			_gl.disable( _gl.CULL_FACE );
-		
+
 		}
 
 	};
@@ -852,8 +852,6 @@ THREE.WebGLRenderer = function ( scene ) {
 		_gl.enable( _gl.CULL_FACE );
 
 		_gl.enable( _gl.BLEND );
-		//_gl.blendFunc( _gl.SRC_ALPHA, _gl.ONE_MINUS_SRC_ALPHA );
-		//_gl.blendFunc( _gl.SRC_ALPHA, _gl.ONE ); // cool!
 		_gl.blendFunc( _gl.ONE, _gl.ONE_MINUS_SRC_ALPHA );
 		_gl.clearColor( 0, 0, 0, 0 );
 
@@ -1176,9 +1174,9 @@ THREE.WebGLRenderer = function ( scene ) {
 	};
 
 	function buildProgram( fragment_shader, vertex_shader ) {
-		
+
 		var program = _gl.createProgram(),
-		
+
 		prefix_fragment = [
 			"#ifdef GL_ES",
 			"precision highp float;",
@@ -1196,70 +1194,71 @@ THREE.WebGLRenderer = function ( scene ) {
 			"attribute vec2 uv;",
 			""
 		].join("\n");
-		
+
 		_gl.attachShader( program, getShader( "fragment", prefix_fragment + fragment_shader ) );
 		_gl.attachShader( program, getShader( "vertex", prefix_vertex + vertex_shader ) );
-		
+
 		_gl.linkProgram( program );
 
 		if ( !_gl.getProgramParameter( program, _gl.LINK_STATUS ) ) {
 
 			alert( "Could not initialise shaders\n"+
 					"VALIDATE_STATUS: " + _gl.getProgramParameter( program, _gl.VALIDATE_STATUS ) + ", gl error [" + _gl.getError() + "]" );
-			
+
 		}
-		
+
 		program.uniforms = {};
 		program.attributes = {};
-		
+
 		return program;
-		
+
 	};
-	
+
 	function setUniforms( program, uniforms ) {
-		
+
 		var u, value, type, location, texture;
-		
+
 		for( u in uniforms ) {
-			
+
 			type = uniforms[u].type;
 			value = uniforms[u].value;
 			location = program.uniforms[u];
-			
+
 			if( type == "i" ) {
-				
+
 				_gl.uniform1i( location, value );
-				
+
 			} else if( type == "f" ) {
-				
+
 				_gl.uniform1f( location, value );
-				
+
 			} else if( type == "t" ) {
-			
+
 				_gl.uniform1i( location, value );
-				
+
 				texture = uniforms[u].texture;
-				
-				if ( texture instanceof THREE.TextureCube ) {
-					
+
+				if ( !texture ) continue;
+
+				if ( texture.image instanceof Array && texture.image.length == 6 ) {
+
 					setCubeTexture( texture, value );
-					
-				} else if ( texture instanceof THREE.Texture ) {
-					
+
+				} else {
+
 					setTexture( texture, value );
-					
+
 				}
-			
+
 			}
-			
+
 		}
-		
+
 	};
 
 	function setCubeTexture( texture, slot ) {
-		
-		if ( texture instanceof THREE.TextureCube &&
-			 texture.image.length == 6 ) {
+
+		if ( texture.image.length == 6 ) {
 
 			if ( !texture.image.__webGLTextureCube &&
 				 !texture.image.__cubeMapInitialized && texture.image.loadCount == 6 ) {
@@ -1290,24 +1289,24 @@ THREE.WebGLRenderer = function ( scene ) {
 
 			_gl.activeTexture( _gl.TEXTURE0 + slot );
 			_gl.bindTexture( _gl.TEXTURE_CUBE_MAP, texture.image.__webGLTextureCube );
-		
+
 		}
-		
+
 	};
-	
+
 	function setTexture( texture, slot ) {
-		
+
 		if ( !texture.__webGLTexture && texture.image.loaded ) {
 
 			texture.__webGLTexture = _gl.createTexture();
 			_gl.bindTexture( _gl.TEXTURE_2D, texture.__webGLTexture );
 			_gl.texImage2D( _gl.TEXTURE_2D, 0, _gl.RGBA, _gl.RGBA, _gl.UNSIGNED_BYTE, texture.image );
-			
+
 			_gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_WRAP_S, paramThreeToGL( texture.wrap_s ) );
 			_gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_WRAP_T, paramThreeToGL( texture.wrap_t ) );
-			
-			_gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_MAG_FILTER, _gl.LINEAR );
-			_gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_MIN_FILTER, _gl.LINEAR_MIPMAP_LINEAR );
+
+			_gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_MAG_FILTER, paramThreeToGL( texture.mag_filter ) );
+			_gl.texParameteri( _gl.TEXTURE_2D, _gl.TEXTURE_MIN_FILTER, paramThreeToGL( texture.min_filter ) );
 			_gl.generateMipmap( _gl.TEXTURE_2D );
 			_gl.bindTexture( _gl.TEXTURE_2D, null );
 
@@ -1315,41 +1314,41 @@ THREE.WebGLRenderer = function ( scene ) {
 
 		_gl.activeTexture( _gl.TEXTURE0 + slot );
 		_gl.bindTexture( _gl.TEXTURE_2D, texture.__webGLTexture );
-		
+
 	};
-	
+
 	function cacheUniformLocations( program, identifiers ) {
-		
+
 		var i, l, id;
-		
+
 		for( i = 0, l = identifiers.length; i < l; i++ ) {
-			
+
 			id = identifiers[ i ];
 			program.uniforms[ id ] = _gl.getUniformLocation( program, id );
-			
+
 		}
-		
+
 	};
 
 	function cacheAttributeLocations( program, identifiers ) {
 
 		var i, l, id;
-		
+
 		for( i = 0, l = identifiers.length; i < l; i++ ) {
-			
+
 			id = identifiers[ i ];
 			program.attributes[ id ] = _gl.getAttribLocation( program, id );
-			
+
 			if ( program.attributes[ id ] >= 0 ) {
-			
+
 				_gl.enableVertexAttribArray( program.attributes[ id ] );
-				
+
 			}
-		
+
 		}
-		
+
 	};
-	
+
 	function initUbershader( maxDirLights, maxPointLights ) {
 
 		var vertex_shader = generateVertexShader( maxDirLights, maxPointLights ),
@@ -1358,9 +1357,9 @@ THREE.WebGLRenderer = function ( scene ) {
 
 		//log ( vertex_shader );
 		//log ( fragment_shader );
-		
+
 		program = buildProgram( fragment_shader, vertex_shader );
-		
+
 		_gl.useProgram( program );
 
 		// matrices
@@ -1375,23 +1374,23 @@ THREE.WebGLRenderer = function ( scene ) {
 										   'enableCubeMap', 'tCube', 'mixEnvMap', 'mReflectivity',
 										   'mRefractionRatio', 'useRefract',
 										   'm2Near', 'mFarPlusNear', 'mFarMinusNear'
-		] );		
+		] );
 
 
 		if ( maxDirLights ) {
-			
-			cacheUniformLocations( program, [ 'directionalLightNumber', 'directionalLightColor', 'directionalLightDirection' ] );			
+
+			cacheUniformLocations( program, [ 'directionalLightNumber', 'directionalLightColor', 'directionalLightDirection' ] );
 
 		}
 
 		if ( maxPointLights ) {
 
-			cacheUniformLocations( program, [ 'pointLightNumber', 'pointLightColor', 'pointLightPosition' ] );			
+			cacheUniformLocations( program, [ 'pointLightNumber', 'pointLightColor', 'pointLightPosition' ] );
 
 		}
 
 		// texture (diffuse map)
-		
+
 		_gl.uniform1i( program.uniforms.enableMap, 0 );
 		_gl.uniform1i( program.uniforms.tMap, 0 );
 
@@ -1402,13 +1401,13 @@ THREE.WebGLRenderer = function ( scene ) {
 		_gl.uniform1i( program.uniforms.mixEnvMap, 0 );
 
 		// refraction
-		
+
 		_gl.uniform1i( program.uniforms.useRefract, 0 );
-		
+
 		// attribute arrays
 
 		cacheAttributeLocations( program, [ "position", "normal", "uv" ] );
-		
+
 		return program;
 
 	};
@@ -1442,17 +1441,25 @@ THREE.WebGLRenderer = function ( scene ) {
 	};
 
 	function paramThreeToGL( p ) {
-	
+
 		switch ( p ) {
-		
-		case THREE.Repeat: 	  	   return _gl.REPEAT; break;
-		case THREE.ClampToEdge:    return _gl.CLAMP_TO_EDGE; break;
-		case THREE.MirroredRepeat: return _gl.MIRRORED_REPEAT; break;
-		
+
+			case THREE.RepeatWrapping: return _gl.REPEAT; break;
+			case THREE.ClampToEdgeWrapping: return _gl.CLAMP_TO_EDGE; break;
+			case THREE.MirroredRepeatWrapping: return _gl.MIRRORED_REPEAT; break;
+
+			case THREE.NearestFilter: return _gl.NEAREST; break;
+			case THREE.NearestMipMapNearestFilter: return _gl.NEAREST_MIPMAP_NEAREST; break;
+			case THREE.NearestMipMapLinearFilter: return _gl.NEAREST_MIPMAP_LINEAR; break;
+
+			case THREE.LinearFilter: return _gl.LINEAR; break;
+			case THREE.LinearMipMapNearestFilter: return _gl.LINEAR_MIPMAP_NEAREST; break;
+			case THREE.LinearMipMapLinearFilter: return _gl.LINEAR_MIPMAP_LINEAR; break;
+
 		}
-		
+
 		return 0;
-		
+
 	};
 
 	function materialNeedsSmoothNormals( material ) {
@@ -1460,11 +1467,11 @@ THREE.WebGLRenderer = function ( scene ) {
 		return material && material.shading != undefined && material.shading == THREE.SmoothShading;
 
 	};
-	
+
 	function bufferNeedsSmoothNormals( geometryChunk, object ) {
-		
+
 		var m, ml, i, l, needsSmoothNormals = false;
-		
+
 		for ( m = 0, ml = object.material.length; m < ml; m++ ) {
 
 			meshMaterial = object.material[ m ];
@@ -1496,11 +1503,11 @@ THREE.WebGLRenderer = function ( scene ) {
 			if ( needsSmoothNormals ) break;
 
 		}
-		
+
 		return needsSmoothNormals;
-		
+
 	};
-	
+
 	function allocateLights( scene, maxLights ) {
 
 		if ( scene ) {
@@ -1535,7 +1542,7 @@ THREE.WebGLRenderer = function ( scene ) {
 		return { 'directional' : 1, 'point' : maxLights - 1 };
 
 	};
-	
+
 	/* DEBUG
 	function getGLParams() {
 

+ 1 - 1
utils/REVISION

@@ -1 +1 @@
-30
+31

+ 103 - 7
utils/build.py

@@ -85,6 +85,7 @@ def build(files, debug, outputFilename):
 
 
 def buildCommon(debug):
+
 	files = [
 		'Three.js',
 		'core/Color.js',
@@ -122,8 +123,14 @@ def buildCommon(debug):
 		'materials/ParticleBasicMaterial.js',
 		'materials/ParticleCircleMaterial.js',
 		'materials/ParticleDOMMaterial.js',
-		'materials/textures/Texture.js',
-		'materials/textures/TextureCube.js',
+		'materials/Texture.js',
+		'materials/mappings/CubeReflectionMapping.js',
+		'materials/mappings/CubeRefractionMapping.js',
+		'materials/mappings/LatitudeReflectionMapping.js',
+		'materials/mappings/LatitudeRefractionMapping.js',
+		'materials/mappings/SphericalReflectionMapping.js',
+		'materials/mappings/SphericalRefractionMapping.js',
+		'materials/mappings/UVMapping.js',
 		'scenes/Scene.js',
 		'renderers/Projector.js',
 		'renderers/DOMRenderer.js',
@@ -175,8 +182,14 @@ def buildExtras(debug):
 		'materials/ParticleBasicMaterial.js',
 		'materials/ParticleCircleMaterial.js',
 		'materials/ParticleDOMMaterial.js',
-		'materials/textures/Texture.js',
-		'materials/textures/TextureCube.js',
+		'materials/Texture.js',
+		'materials/mappings/CubeReflectionMapping.js',
+		'materials/mappings/CubeRefractionMapping.js',
+		'materials/mappings/LatitudeReflectionMapping.js',
+		'materials/mappings/LatitudeRefractionMapping.js',
+		'materials/mappings/SphericalReflectionMapping.js',
+		'materials/mappings/SphericalRefractionMapping.js',
+		'materials/mappings/UVMapping.js',
 		'scenes/Scene.js',
 		'renderers/Projector.js',
 		'renderers/DOMRenderer.js',
@@ -235,7 +248,14 @@ def buildCanvas(debug):
 		'materials/MeshFaceMaterial.js',
 		'materials/ParticleBasicMaterial.js',
 		'materials/ParticleCircleMaterial.js',
-		'materials/textures/Texture.js',
+		'materials/Texture.js',
+		'materials/mappings/CubeReflectionMapping.js',
+		'materials/mappings/CubeRefractionMapping.js',
+		'materials/mappings/LatitudeReflectionMapping.js',
+		'materials/mappings/LatitudeRefractionMapping.js',
+		'materials/mappings/SphericalReflectionMapping.js',
+		'materials/mappings/SphericalRefractionMapping.js',
+		'materials/mappings/UVMapping.js',
 		'scenes/Scene.js',
 		'renderers/Projector.js',
 		'renderers/CanvasRenderer.js',
@@ -285,8 +305,14 @@ def buildWebGL(debug):
 		'materials/MeshShaderMaterial.js',
 		'materials/ParticleBasicMaterial.js',
 		'materials/ParticleCircleMaterial.js',
-		'materials/textures/Texture.js',
-		'materials/textures/TextureCube.js',
+		'materials/Texture.js',
+		'materials/mappings/CubeReflectionMapping.js',
+		'materials/mappings/CubeRefractionMapping.js',
+		'materials/mappings/LatitudeReflectionMapping.js',
+		'materials/mappings/LatitudeRefractionMapping.js',
+		'materials/mappings/SphericalReflectionMapping.js',
+		'materials/mappings/SphericalRefractionMapping.js',
+		'materials/mappings/UVMapping.js',
 		'scenes/Scene.js',
 		'renderers/WebGLRenderer.js',
 	]
@@ -370,10 +396,76 @@ def buildDOM(debug):
 	build(files, debug, 'ThreeDOM')
 
 
+def buildIncludes():
+
+	text = ''
+	files = [
+		'Three.js',
+		'core/Color.js',
+		'core/Vector2.js',
+		'core/Vector3.js',
+		'core/Vector4.js',
+		'core/Ray.js',
+		'core/Rectangle.js',
+		'core/Matrix3.js',
+		'core/Matrix4.js',
+		'core/Vertex.js',
+		'core/Face3.js',
+		'core/Face4.js',
+		'core/UV.js',
+		'core/Geometry.js',
+		'cameras/Camera.js',
+		'lights/Light.js',
+		'lights/AmbientLight.js',
+		'lights/DirectionalLight.js',
+		'lights/PointLight.js',
+		'objects/Object3D.js',
+		'objects/Particle.js',
+		'objects/Line.js',
+		'objects/Mesh.js',
+		'materials/Material.js',
+		'materials/LineBasicMaterial.js',
+		'materials/MeshBasicMaterial.js',
+		'materials/MeshLambertMaterial.js',
+		'materials/MeshPhongMaterial.js',
+		'materials/MeshDepthMaterial.js',
+		'materials/MeshNormalMaterial.js',
+		'materials/MeshFaceMaterial.js',
+		'materials/MeshCubeMaterial.js',
+		'materials/MeshShaderMaterial.js',
+		'materials/ParticleBasicMaterial.js',
+		'materials/ParticleCircleMaterial.js',
+		'materials/ParticleDOMMaterial.js',
+		'materials/Texture.js',
+		'materials/mappings/CubeReflectionMapping.js',
+		'materials/mappings/CubeRefractionMapping.js',
+		'materials/mappings/LatitudeReflectionMapping.js',
+		'materials/mappings/LatitudeRefractionMapping.js',
+		'materials/mappings/SphericalReflectionMapping.js',
+		'materials/mappings/SphericalRefractionMapping.js',
+		'materials/mappings/UVMapping.js',
+		'scenes/Scene.js',
+		'renderers/Projector.js',
+		'renderers/DOMRenderer.js',
+		'renderers/CanvasRenderer.js',
+		'renderers/SVGRenderer.js',
+		'renderers/WebGLRenderer.js',
+		'renderers/renderables/RenderableFace3.js',
+		'renderers/renderables/RenderableParticle.js',
+		'renderers/renderables/RenderableLine.js'
+	]
+
+	for filename in files:
+		text = text + '\t\t<script type="text/javascript" src="../src/' + filename + '"></script>\n'
+
+	output(text, 'includes.js')
+
+
 def parse_args():
 
 	if ap:
 		parser = argparse.ArgumentParser(description='Build and compress Three.js')
+		parser.add_argument('--includes', help='Build includes.js', action='store_true')
 		parser.add_argument('--common', help='Build Three.js', action='store_const', const=True)
 		parser.add_argument('--extras', help='Build ThreeExtras.js', action='store_const', const=True)
 		parser.add_argument('--canvas', help='Build ThreeCanvas.js', action='store_true')
@@ -387,6 +479,7 @@ def parse_args():
 
 	else:
 		parser = optparse.OptionParser(description='Build and compress Three.js')
+		parser.add_option('--includes', dest='includes', help='Build includes.js', action='store_true')
 		parser.add_option('--common', dest='common', help='Build Three.js', action='store_const', const=True)
 		parser.add_option('--extras', dest='extras', help='Build ThreeExtras.js', action='store_const', const=True)
 		parser.add_option('--canvas', dest='canvas', help='Build ThreeCanvas.js', action='store_true')
@@ -412,6 +505,9 @@ def main(argv=None):
 
 	debug = args.debug
 
+	if args.includes or args.all:
+		buildIncludes()
+
 	if args.common or args.all:
 		buildCommon(debug)