2
0
Эх сурвалжийг харах

Merge remote-tracking branch 'upstream/dev' into dev

zhaoy 7 жил өмнө
parent
commit
4c5ef9e7f9
100 өөрчлөгдсөн 1952 нэмэгдсэн , 10670 устгасан
  1. 462 72
      build/three.js
  2. 351 348
      build/three.min.js
  3. 462 72
      build/three.module.js
  4. 15 15
      docs/api/audio/Audio.html
  5. 4 4
      docs/api/audio/AudioListener.html
  6. 8 7
      docs/api/audio/PositionalAudio.html
  7. 1 1
      docs/api/extras/ShapeUtils.html
  8. 1 1
      docs/api/loaders/CubeTextureLoader.html
  9. 1 1
      docs/api/loaders/ImageLoader.html
  10. 12 1
      docs/api/loaders/JSONLoader.html
  11. 1 0
      docs/api/loaders/Loader.html
  12. 1 2
      docs/api/loaders/ObjectLoader.html
  13. 1 1
      docs/api/loaders/TextureLoader.html
  14. 28 4
      docs/api/math/Color.html
  15. 1 1
      docs/api/objects/Line.html
  16. 8 7
      docs/examples/loaders/MTLLoader.html
  17. 0 1
      editor/index.html
  18. 0 20
      editor/js/Loader.js
  19. 1 1
      editor/js/libs/tern-threejs/threejs.js
  20. 1 4
      examples/files.js
  21. 25 36
      examples/js/BufferGeometryUtils.js
  22. 3 4
      examples/js/controls/EditorControls.js
  23. 1 1
      examples/js/exporters/GLTFExporter.js
  24. 4 1
      examples/js/loaders/AssimpJSONLoader.js
  25. 4 3
      examples/js/loaders/AssimpLoader.js
  26. 4 1
      examples/js/loaders/BinaryLoader.js
  27. 12 2
      examples/js/loaders/ColladaLoader.js
  28. 2 10
      examples/js/loaders/DRACOLoader.js
  29. 12 1
      examples/js/loaders/FBXLoader.js
  30. 1 1
      examples/js/loaders/GLTFLoader.js
  31. 1 1
      examples/js/loaders/LoaderSupport.js
  32. 4 4
      examples/js/loaders/MMDLoader.js
  33. 2 1
      examples/js/loaders/MTLLoader.js
  34. 0 752
      examples/js/loaders/UTF8Loader.js
  35. 2 1
      examples/js/loaders/VRMLLoader.js
  36. 1 1
      examples/js/loaders/VRMLoader.js
  37. 2 1
      examples/js/loaders/deprecated/LegacyGLTFLoader.js
  38. 2 2
      examples/js/vr/WebVR.js
  39. 0 0
      examples/js/vr/deprecated/DaydreamController.js
  40. 0 0
      examples/js/vr/deprecated/GearVRController.js
  41. 0 21
      examples/models/obj/gear_vr_controller/LICENSE.txt
  42. 0 22
      examples/models/obj/gear_vr_controller/gear_vr_controller.mtl
  43. 0 1064
      examples/models/obj/gear_vr_controller/gear_vr_controller.obj
  44. 0 21
      examples/models/obj/oculus_go_controller/LICENSE.txt
  45. 0 14
      examples/models/obj/oculus_go_controller/oculus_go_controller.mtl
  46. 0 7013
      examples/models/obj/oculus_go_controller/oculus_go_controller.obj
  47. BIN
      examples/models/utf8/James_Body_Lores.jpg
  48. BIN
      examples/models/utf8/James_EyeLashBotTran.png
  49. BIN
      examples/models/utf8/James_EyeLashTopTran.png
  50. BIN
      examples/models/utf8/James_Eye_Green.jpg
  51. BIN
      examples/models/utf8/James_Eye_Inner_Green.jpg
  52. BIN
      examples/models/utf8/James_Face_Color_Hair_Lores.jpg
  53. BIN
      examples/models/utf8/James_Mouth_Gum_Lores.jpg
  54. BIN
      examples/models/utf8/James_Tongue_Lores.jpg
  55. BIN
      examples/models/utf8/MCasShoe1TEX_Lores.jpg
  56. BIN
      examples/models/utf8/MJeans1TEX_Lores.jpg
  57. BIN
      examples/models/utf8/MTshirt3TEX_Lores.jpg
  58. BIN
      examples/models/utf8/Nail_Hand_01_Lores.jpg
  59. 0 21
      examples/models/utf8/WaltHi.js
  60. BIN
      examples/models/utf8/WaltHi.utf8
  61. 0 107
      examples/models/utf8/ben.js
  62. BIN
      examples/models/utf8/ben.utf8
  63. 0 107
      examples/models/utf8/ben_dds.js
  64. BIN
      examples/models/utf8/dds/James_Body_Lores.dds
  65. BIN
      examples/models/utf8/dds/James_EyeLashBotTran.dds
  66. BIN
      examples/models/utf8/dds/James_EyeLashTopTran.dds
  67. BIN
      examples/models/utf8/dds/James_Eye_Green.dds
  68. BIN
      examples/models/utf8/dds/James_Eye_Inner_Green.dds
  69. BIN
      examples/models/utf8/dds/James_Face_Color_Hair_Lores.dds
  70. BIN
      examples/models/utf8/dds/James_Mouth_Gum_Lores.dds
  71. BIN
      examples/models/utf8/dds/James_Tongue_Lores.dds
  72. BIN
      examples/models/utf8/dds/MCasShoe1TEX_Lores.dds
  73. BIN
      examples/models/utf8/dds/MJeans1TEX_Lores.dds
  74. BIN
      examples/models/utf8/dds/MTshirt3TEX_Lores.dds
  75. BIN
      examples/models/utf8/dds/Nail_Hand_01_Lores.dds
  76. BIN
      examples/models/utf8/hand.jpg
  77. 0 27
      examples/models/utf8/hand.js
  78. BIN
      examples/models/utf8/hand.utf8
  79. 2 4
      examples/webaudio_orientation.html
  80. 0 2
      examples/webgl_buffergeometry_instancing_lambert.html
  81. 0 232
      examples/webgl_loader_utf8.html
  82. 3 3
      examples/webgl_tiled_forward.html
  83. 25 21
      examples/webvr_ballshooter.html
  84. 0 262
      examples/webvr_gearvr.html
  85. 36 22
      examples/webvr_lorenzattractor.html
  86. 0 263
      examples/webvr_oculusgo.html
  87. 6 0
      src/audio/AudioListener.js
  88. 8 0
      src/audio/PositionalAudio.js
  89. 1 1
      src/loaders/CubeTextureLoader.js
  90. 1 1
      src/loaders/ImageLoader.js
  91. 10 0
      src/loaders/JSONLoader.js
  92. 1 1
      src/loaders/Loader.js
  93. 42 4
      src/loaders/ObjectLoader.js
  94. 1 1
      src/loaders/TextureLoader.js
  95. 56 0
      src/math/Color.js
  96. 9 7
      src/math/Quaternion.js
  97. 95 19
      src/objects/Mesh.js
  98. 4 2
      src/renderers/WebGLRenderer.js
  99. 112 1
      src/renderers/webvr/WebVRManager.js
  100. 99 21
      src/renderers/webvr/WebXRManager.js

+ 462 - 72
build/three.js

@@ -3827,9 +3827,31 @@
 
 				if ( ! isRootObject && meta.images[ image.uuid ] === undefined ) {
 
+					var url;
+
+					if ( Array.isArray( image ) ) {
+
+						// process array of images e.g. CubeTexture
+
+						url = [];
+
+						for ( var i = 0, l = image.length; i < l; i ++ ) {
+
+							url.push( getDataURL( image[ i ] ) );
+
+						}
+
+					} else {
+
+						// process single image
+
+						url = getDataURL( image );
+
+					}
+
 					meta.images[ image.uuid ] = {
 						uuid: image.uuid,
-						url: getDataURL( image )
+						url: url
 					};
 
 				}
@@ -6646,6 +6668,62 @@
 
 		},
 
+		copySRGBToLinear: function () {
+
+			function SRGBToLinear( c ) {
+
+				return ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );
+
+			}
+
+			return function copySRGBToLinear( color ) {
+
+				this.r = SRGBToLinear( color.r );
+				this.g = SRGBToLinear( color.g );
+				this.b = SRGBToLinear( color.b );
+
+				return this;
+
+			};
+
+		}(),
+
+		copyLinearToSRGB: function () {
+
+			function LinearToSRGB( c ) {
+
+				return ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;
+
+			}
+
+			return function copyLinearToSRGB( color ) {
+
+				this.r = LinearToSRGB( color.r );
+				this.g = LinearToSRGB( color.g );
+				this.b = LinearToSRGB( color.b );
+
+				return this;
+
+			};
+
+		}(),
+
+		convertSRGBToLinear: function () {
+
+			this.copySRGBToLinear( this );
+
+			return this;
+
+		},
+
+		convertLinearToSRGB: function () {
+
+			this.copyLinearToSRGB( this );
+
+			return this;
+
+		},
+
 		getHex: function () {
 
 			return ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;
@@ -14291,13 +14369,13 @@
 
 			}
 
-			function checkBufferGeometryIntersection( object, raycaster, ray, position, uv, a, b, c ) {
+			function checkBufferGeometryIntersection( object, material, raycaster, ray, position, uv, a, b, c ) {
 
 				vA.fromBufferAttribute( position, a );
 				vB.fromBufferAttribute( position, b );
 				vC.fromBufferAttribute( position, c );
 
-				var intersection = checkIntersection( object, object.material, raycaster, ray, vA, vB, vC, intersectionPoint );
+				var intersection = checkIntersection( object, material, raycaster, ray, vA, vB, vC, intersectionPoint );
 
 				if ( intersection ) {
 
@@ -14360,24 +14438,64 @@
 					var index = geometry.index;
 					var position = geometry.attributes.position;
 					var uv = geometry.attributes.uv;
-					var i, l;
+					var groups = geometry.groups;
+					var drawRange = geometry.drawRange;
+					var i, j, il, jl;
+					var group, groupMaterial;
+					var start, end;
 
 					if ( index !== null ) {
 
 						// indexed buffer geometry
 
-						for ( i = 0, l = index.count; i < l; i += 3 ) {
+						if ( Array.isArray( material ) ) {
+
+							for ( i = 0, il = groups.length; i < il; i ++ ) {
+
+								group = groups[ i ];
+								groupMaterial = material[ group.materialIndex ];
 
-							a = index.getX( i );
-							b = index.getX( i + 1 );
-							c = index.getX( i + 2 );
+								start = Math.max( group.start, drawRange.start );
+								end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );
 
-							intersection = checkBufferGeometryIntersection( this, raycaster, ray, position, uv, a, b, c );
+								for ( j = start, jl = end; j < jl; j += 3 ) {
 
-							if ( intersection ) {
+									a = index.getX( i );
+									b = index.getX( i + 1 );
+									c = index.getX( i + 2 );
 
-								intersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics
-								intersects.push( intersection );
+									intersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, uv, a, b, c );
+
+									if ( intersection ) {
+
+										intersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics
+										intersects.push( intersection );
+
+									}
+
+								}
+
+							}
+
+						} else {
+
+							start = Math.max( 0, drawRange.start );
+							end = Math.min( index.count, ( drawRange.start + drawRange.count ) );
+
+							for ( i = start, il = end; i < il; i += 3 ) {
+
+								a = index.getX( i );
+								b = index.getX( i + 1 );
+								c = index.getX( i + 2 );
+
+								intersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, uv, a, b, c );
+
+								if ( intersection ) {
+
+									intersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics
+									intersects.push( intersection );
+
+								}
 
 							}
 
@@ -14387,18 +14505,54 @@
 
 						// non-indexed buffer geometry
 
-						for ( i = 0, l = position.count; i < l; i += 3 ) {
+						if ( Array.isArray( material ) ) {
+
+							for ( i = 0, il = groups.length; i < il; i ++ ) {
+
+								group = groups[ i ];
+								groupMaterial = material[ group.materialIndex ];
+
+								start = Math.max( group.start, drawRange.start );
+								end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );
+
+								for ( j = start, jl = end; j < jl; j += 3 ) {
+
+									a = j;
+									b = j + 1;
+									c = j + 2;
+
+									intersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, uv, a, b, c );
+
+									if ( intersection ) {
+
+										intersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics
+										intersects.push( intersection );
+
+									}
+
+								}
+
+							}
+
+						} else {
+
+							start = Math.max( 0, drawRange.start );
+							end = Math.min( position.count, ( drawRange.start + drawRange.count ) );
 
-							a = i;
-							b = i + 1;
-							c = i + 2;
+							for ( i = start, il = end; i < il; i += 3 ) {
 
-							intersection = checkBufferGeometryIntersection( this, raycaster, ray, position, uv, a, b, c );
+								a = i;
+								b = i + 1;
+								c = i + 2;
 
-							if ( intersection ) {
+								intersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, uv, a, b, c );
 
-								intersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics
-								intersects.push( intersection );
+								if ( intersection ) {
+
+									intersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics
+									intersects.push( intersection );
+
+								}
 
 							}
 
@@ -20973,6 +21127,26 @@
 
 	}
 
+	/**
+	 * @author mrdoob / http://mrdoob.com/
+	 */
+
+	function Group() {
+
+		Object3D.call( this );
+
+		this.type = 'Group';
+
+	}
+
+	Group.prototype = Object.assign( Object.create( Object3D.prototype ), {
+
+		constructor: Group,
+
+		isGroup: true
+
+	} );
+
 	/**
 	 * @author mrdoob / http://mrdoob.com/
 	 * @author greggman / http://games.greggman.com/
@@ -21243,6 +21417,7 @@
 
 		var poseTarget = null;
 
+		var controllers = [];
 		var standingMatrix = new Matrix4();
 		var standingMatrixInverse = new Matrix4();
 
@@ -21306,9 +21481,111 @@
 
 		//
 
+		var isTriggerPressed = false;
+
+		function findGamepad( id ) {
+
+			var gamepads = navigator.getGamepads && navigator.getGamepads();
+
+			for ( var i = 0, j = 0, l = gamepads.length; i < l; i ++ ) {
+
+				var gamepad = gamepads[ i ];
+
+				if ( gamepad && ( gamepad.id === 'Daydream Controller' ||
+					gamepad.id === 'Gear VR Controller' || gamepad.id === 'Oculus Go Controller' ||
+					gamepad.id === 'OpenVR Gamepad' || gamepad.id.startsWith( 'Oculus Touch' ) ||
+					gamepad.id.startsWith( 'Spatial Controller' ) ) ) {
+
+					if ( j === id ) return gamepad;
+
+					j ++;
+
+				}
+
+			}
+
+		}
+
+		function updateControllers() {
+
+			for ( var i = 0; i < controllers.length; i ++ ) {
+
+				var controller = controllers[ i ];
+
+				var gamepad = findGamepad( i );
+
+				if ( gamepad !== undefined && gamepad.pose !== undefined ) {
+
+					if ( gamepad.pose === null ) return;
+
+					//  Pose
+
+					var pose = gamepad.pose;
+
+					if ( pose.hasPosition === false ) controller.position.set( 0.2, - 0.6, - 0.05 );
+
+					if ( pose.position !== null ) controller.position.fromArray( pose.position );
+					if ( pose.orientation !== null ) controller.quaternion.fromArray( pose.orientation );
+					controller.matrix.compose( controller.position, controller.quaternion, controller.scale );
+					controller.matrix.premultiply( standingMatrix );
+					controller.matrix.decompose( controller.position, controller.quaternion, controller.scale );
+					controller.matrixWorldNeedsUpdate = true;
+					controller.visible = true;
+
+					//  Trigger
+
+					var buttonId = gamepad.id === 'Daydream Controller' ? 0 : 1;
+
+					if ( isTriggerPressed !== gamepad.buttons[ buttonId ].pressed ) {
+
+						isTriggerPressed = gamepad.buttons[ buttonId ].pressed;
+
+						if ( isTriggerPressed ) {
+
+							controller.dispatchEvent( { type: 'selectstart' } );
+
+						} else {
+
+							controller.dispatchEvent( { type: 'selectend' } );
+							controller.dispatchEvent( { type: 'select' } );
+
+						}
+
+					}
+
+				} else {
+
+					controller.visible = false;
+
+				}
+
+			}
+
+		}
+
+		//
+
 		this.enabled = false;
 		this.userHeight = 1.6;
 
+		this.getController = function ( id ) {
+
+			var controller = controllers[ id ];
+
+			if ( controller === undefined ) {
+
+				controller = new Group();
+				controller.matrixAutoUpdate = false;
+				controller.visible = false;
+
+				controllers[ id ] = controller;
+
+			}
+
+			return controller;
+
+		};
+
 		this.getDevice = function () {
 
 			return device;
@@ -21331,7 +21608,12 @@
 
 		this.getCamera = function ( camera ) {
 
-			if ( device === null ) return camera;
+			if ( device === null ) {
+
+				camera.position.set( 0, scope.userHeight, 0 );
+				return camera;
+
+			}
 
 			device.depthNear = camera.near;
 			device.depthFar = camera.far;
@@ -21447,6 +21729,8 @@
 
 			}
 
+			updateControllers();
+
 			return cameraVR;
 
 		};
@@ -21502,10 +21786,14 @@
 
 		var pose = null;
 
+		var controllers = [];
+		var inputSources = [];
+
 		function isPresenting() {
 
 			return session !== null && frameOfRef !== null;
 
+
 		}
 
 		//
@@ -21526,6 +21814,24 @@
 
 		this.enabled = false;
 
+		this.getController = function ( id ) {
+
+			var controller = controllers[ id ];
+
+			if ( controller === undefined ) {
+
+				controller = new Group();
+				controller.matrixAutoUpdate = false;
+				controller.visible = false;
+
+				controllers[ id ] = controller;
+
+			}
+
+			return controller;
+
+		};
+
 		this.getDevice = function () {
 
 			return device;
@@ -21542,18 +21848,30 @@
 
 		//
 
+		function onSessionEvent( event ) {
+
+			var controller = controllers[ inputSources.indexOf( event.inputSource ) ];
+			if ( controller ) controller.dispatchEvent( { type: event.type } );
+
+		}
+
+		function onSessionEnd() {
+
+			renderer.setFramebuffer( null );
+			animation.stop();
+
+		}
+
 		this.setSession = function ( value, options ) {
 
 			session = value;
 
 			if ( session !== null ) {
 
-				session.addEventListener( 'end', function () {
-
-					renderer.setFramebuffer( null );
-					animation.stop();
-
-				} );
+				session.addEventListener( 'select', onSessionEvent );
+				session.addEventListener( 'selectstart', onSessionEvent );
+				session.addEventListener( 'selectend', onSessionEvent );
+				session.addEventListener( 'end', onSessionEnd );
 
 				session.baseLayer = new XRWebGLLayer( session, gl );
 				session.requestFrameOfReference( options.frameOfReferenceType ).then( function ( value ) {
@@ -21567,6 +21885,17 @@
 
 				} );
 
+				//
+
+				inputSources = session.getInputSources();
+
+				session.addEventListener( 'inputsourceschange', function () {
+
+					inputSources = session.getInputSources();
+					console.log( inputSources );
+
+				} );
+
 			}
 
 		};
@@ -21634,31 +21963,63 @@
 
 			pose = frame.getDevicePose( frameOfRef );
 
-			var layer = session.baseLayer;
-			var views = frame.views;
+			if ( pose !== null ) {
+
+				var layer = session.baseLayer;
+				var views = frame.views;
+
+				for ( var i = 0; i < views.length; i ++ ) {
+
+					var view = views[ i ];
+					var viewport = layer.getViewport( view );
+					var viewMatrix = pose.getViewMatrix( view );
+
+					var camera = cameraVR.cameras[ i ];
+					camera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix );
+					camera.projectionMatrix.fromArray( view.projectionMatrix );
+					camera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );
+
+					if ( i === 0 ) {
+
+						cameraVR.matrix.copy( camera.matrix );
+
+						// HACK (mrdoob)
+						// https://github.com/w3c/webvr/issues/203
+
+						cameraVR.projectionMatrix.copy( camera.projectionMatrix );
+
+					}
+
+				}
 
-			for ( var i = 0; i < views.length; i ++ ) {
+			}
+
+			//
 
-				var view = views[ i ];
-				var viewport = layer.getViewport( view );
-				var viewMatrix = pose.getViewMatrix( view );
+			for ( var i = 0; i < controllers.length; i ++ ) {
 
-				var camera = cameraVR.cameras[ i ];
-				camera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix );
-				camera.projectionMatrix.fromArray( view.projectionMatrix );
-				camera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );
+				var controller = controllers[ i ];
 
-				if ( i === 0 ) {
+				var inputSource = inputSources[ i ];
 
-					cameraVR.matrix.copy( camera.matrix );
+				if ( inputSource ) {
 
-					// HACK (mrdoob)
-					// https://github.com/w3c/webvr/issues/203
+					var inputPose = frame.getInputPose( inputSource, frameOfRef );
+
+					if ( inputPose !== null ) {
+
+						controller.matrix.elements = inputPose.pointerMatrix;
+						controller.matrix.decompose( controller.position, controller.rotation, controller.scale );
+						controller.visible = true;
+
+						continue;
 
-					cameraVR.projectionMatrix.copy( camera.projectionMatrix );
+					}
 
 				}
 
+				controller.visible = false;
+
 			}
 
 			if ( onAnimationFrameCallback ) onAnimationFrameCallback( time );
@@ -23858,11 +24219,13 @@
 
 		function refreshUniformsPhysical( uniforms, material ) {
 
+			refreshUniformsStandard( uniforms, material );
+
+			uniforms.reflectivity.value = material.reflectivity; // also part of uniforms common
+
 			uniforms.clearCoat.value = material.clearCoat;
 			uniforms.clearCoatRoughness.value = material.clearCoatRoughness;
 
-			refreshUniformsStandard( uniforms, material );
-
 		}
 
 		function refreshUniformsDepth( uniforms, material ) {
@@ -25625,26 +25988,6 @@
 
 	} );
 
-	/**
-	 * @author mrdoob / http://mrdoob.com/
-	 */
-
-	function Group() {
-
-		Object3D.call( this );
-
-		this.type = 'Group';
-
-	}
-
-	Group.prototype = Object.assign( Object.create( Object3D.prototype ), {
-
-		constructor: Group,
-
-		isGroup: true
-
-	} );
-
 	/**
 	 * @author mrdoob / http://mrdoob.com/
 	 */
@@ -31716,7 +32059,7 @@
 
 	Object.assign( ImageLoader.prototype, {
 
-		crossOrigin: 'Anonymous',
+		crossOrigin: 'anonymous',
 
 		load: function ( url, onLoad, onProgress, onError ) {
 
@@ -31819,7 +32162,7 @@
 
 	Object.assign( CubeTextureLoader.prototype, {
 
-		crossOrigin: 'Anonymous',
+		crossOrigin: 'anonymous',
 
 		load: function ( urls, onLoad, onProgress, onError ) {
 
@@ -31890,7 +32233,7 @@
 
 	Object.assign( TextureLoader.prototype, {
 
-		crossOrigin: 'Anonymous',
+		crossOrigin: 'anonymous',
 
 		load: function ( url, onLoad, onProgress, onError ) {
 
@@ -36410,7 +36753,7 @@
 
 	Object.assign( Loader.prototype, {
 
-		crossOrigin: undefined,
+		crossOrigin: 'anonymous',
 
 		onLoadStart: function () {},
 
@@ -36753,6 +37096,8 @@
 
 	Object.assign( JSONLoader.prototype, {
 
+		crossOrigin: 'anonymous',
+
 		load: function ( url, onLoad, onProgress, onError ) {
 
 			var scope = this;
@@ -36790,9 +37135,17 @@
 
 		},
 
+		setCrossOrigin: function ( value ) {
+
+			this.crossOrigin = value;
+			return this;
+
+		},
+
 		setTexturePath: function ( value ) {
 
 			this.texturePath = value;
+			return this;
 
 		},
 
@@ -37299,6 +37652,8 @@
 
 	Object.assign( ObjectLoader.prototype, {
 
+		crossOrigin: 'anonymous',
+
 		load: function ( url, onLoad, onProgress, onError ) {
 
 			if ( this.texturePath === '' ) {
@@ -37765,12 +38120,36 @@
 				var loader = new ImageLoader( manager );
 				loader.setCrossOrigin( this.crossOrigin );
 
-				for ( var i = 0, l = json.length; i < l; i ++ ) {
+				for ( var i = 0, il = json.length; i < il; i ++ ) {
 
 					var image = json[ i ];
-					var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( image.url ) ? image.url : scope.texturePath + image.url;
+					var url = image.url;
+
+					if ( Array.isArray( url ) ) {
+
+						// load array of images e.g CubeTexture
+
+						images[ image.uuid ] = [];
+
+						for ( var j = 0, jl = url.length; j < jl; j ++ ) {
+
+							var currentUrl = url[ j ];
+
+							var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( currentUrl ) ? currentUrl : scope.texturePath + currentUrl;
 
-					images[ image.uuid ] = loadImage( path );
+							images[ image.uuid ].push( loadImage( path ) );
+
+						}
+
+					} else {
+
+						// load single image
+
+						var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( image.url ) ? image.url : scope.texturePath + image.url;
+
+						images[ image.uuid ] = loadImage( path );
+
+					}
 
 				}
 
@@ -37812,7 +38191,18 @@
 
 					}
 
-					var texture = new Texture( images[ data.image ] );
+					var texture;
+
+					if ( Array.isArray( images[ data.image ] ) ) {
+
+						texture = new CubeTexture( images[ data.image ] );
+
+					} else {
+
+						texture = new Texture( images[ data.image ] );
+
+					}
+
 					texture.needsUpdate = true;
 
 					texture.uuid = data.uuid;

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 351 - 348
build/three.min.js


+ 462 - 72
build/three.module.js

@@ -3821,9 +3821,31 @@ Texture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {
 
 			if ( ! isRootObject && meta.images[ image.uuid ] === undefined ) {
 
+				var url;
+
+				if ( Array.isArray( image ) ) {
+
+					// process array of images e.g. CubeTexture
+
+					url = [];
+
+					for ( var i = 0, l = image.length; i < l; i ++ ) {
+
+						url.push( getDataURL( image[ i ] ) );
+
+					}
+
+				} else {
+
+					// process single image
+
+					url = getDataURL( image );
+
+				}
+
 				meta.images[ image.uuid ] = {
 					uuid: image.uuid,
-					url: getDataURL( image )
+					url: url
 				};
 
 			}
@@ -6640,6 +6662,62 @@ Object.assign( Color.prototype, {
 
 	},
 
+	copySRGBToLinear: function () {
+
+		function SRGBToLinear( c ) {
+
+			return ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );
+
+		}
+
+		return function copySRGBToLinear( color ) {
+
+			this.r = SRGBToLinear( color.r );
+			this.g = SRGBToLinear( color.g );
+			this.b = SRGBToLinear( color.b );
+
+			return this;
+
+		};
+
+	}(),
+
+	copyLinearToSRGB: function () {
+
+		function LinearToSRGB( c ) {
+
+			return ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;
+
+		}
+
+		return function copyLinearToSRGB( color ) {
+
+			this.r = LinearToSRGB( color.r );
+			this.g = LinearToSRGB( color.g );
+			this.b = LinearToSRGB( color.b );
+
+			return this;
+
+		};
+
+	}(),
+
+	convertSRGBToLinear: function () {
+
+		this.copySRGBToLinear( this );
+
+		return this;
+
+	},
+
+	convertLinearToSRGB: function () {
+
+		this.copyLinearToSRGB( this );
+
+		return this;
+
+	},
+
 	getHex: function () {
 
 		return ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;
@@ -14285,13 +14363,13 @@ Mesh.prototype = Object.assign( Object.create( Object3D.prototype ), {
 
 		}
 
-		function checkBufferGeometryIntersection( object, raycaster, ray, position, uv, a, b, c ) {
+		function checkBufferGeometryIntersection( object, material, raycaster, ray, position, uv, a, b, c ) {
 
 			vA.fromBufferAttribute( position, a );
 			vB.fromBufferAttribute( position, b );
 			vC.fromBufferAttribute( position, c );
 
-			var intersection = checkIntersection( object, object.material, raycaster, ray, vA, vB, vC, intersectionPoint );
+			var intersection = checkIntersection( object, material, raycaster, ray, vA, vB, vC, intersectionPoint );
 
 			if ( intersection ) {
 
@@ -14354,24 +14432,64 @@ Mesh.prototype = Object.assign( Object.create( Object3D.prototype ), {
 				var index = geometry.index;
 				var position = geometry.attributes.position;
 				var uv = geometry.attributes.uv;
-				var i, l;
+				var groups = geometry.groups;
+				var drawRange = geometry.drawRange;
+				var i, j, il, jl;
+				var group, groupMaterial;
+				var start, end;
 
 				if ( index !== null ) {
 
 					// indexed buffer geometry
 
-					for ( i = 0, l = index.count; i < l; i += 3 ) {
+					if ( Array.isArray( material ) ) {
+
+						for ( i = 0, il = groups.length; i < il; i ++ ) {
+
+							group = groups[ i ];
+							groupMaterial = material[ group.materialIndex ];
 
-						a = index.getX( i );
-						b = index.getX( i + 1 );
-						c = index.getX( i + 2 );
+							start = Math.max( group.start, drawRange.start );
+							end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );
 
-						intersection = checkBufferGeometryIntersection( this, raycaster, ray, position, uv, a, b, c );
+							for ( j = start, jl = end; j < jl; j += 3 ) {
 
-						if ( intersection ) {
+								a = index.getX( i );
+								b = index.getX( i + 1 );
+								c = index.getX( i + 2 );
 
-							intersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics
-							intersects.push( intersection );
+								intersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, uv, a, b, c );
+
+								if ( intersection ) {
+
+									intersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics
+									intersects.push( intersection );
+
+								}
+
+							}
+
+						}
+
+					} else {
+
+						start = Math.max( 0, drawRange.start );
+						end = Math.min( index.count, ( drawRange.start + drawRange.count ) );
+
+						for ( i = start, il = end; i < il; i += 3 ) {
+
+							a = index.getX( i );
+							b = index.getX( i + 1 );
+							c = index.getX( i + 2 );
+
+							intersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, uv, a, b, c );
+
+							if ( intersection ) {
+
+								intersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics
+								intersects.push( intersection );
+
+							}
 
 						}
 
@@ -14381,18 +14499,54 @@ Mesh.prototype = Object.assign( Object.create( Object3D.prototype ), {
 
 					// non-indexed buffer geometry
 
-					for ( i = 0, l = position.count; i < l; i += 3 ) {
+					if ( Array.isArray( material ) ) {
+
+						for ( i = 0, il = groups.length; i < il; i ++ ) {
+
+							group = groups[ i ];
+							groupMaterial = material[ group.materialIndex ];
+
+							start = Math.max( group.start, drawRange.start );
+							end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );
+
+							for ( j = start, jl = end; j < jl; j += 3 ) {
+
+								a = j;
+								b = j + 1;
+								c = j + 2;
+
+								intersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, uv, a, b, c );
+
+								if ( intersection ) {
+
+									intersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics
+									intersects.push( intersection );
+
+								}
+
+							}
+
+						}
+
+					} else {
+
+						start = Math.max( 0, drawRange.start );
+						end = Math.min( position.count, ( drawRange.start + drawRange.count ) );
 
-						a = i;
-						b = i + 1;
-						c = i + 2;
+						for ( i = start, il = end; i < il; i += 3 ) {
 
-						intersection = checkBufferGeometryIntersection( this, raycaster, ray, position, uv, a, b, c );
+							a = i;
+							b = i + 1;
+							c = i + 2;
 
-						if ( intersection ) {
+							intersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, uv, a, b, c );
 
-							intersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics
-							intersects.push( intersection );
+							if ( intersection ) {
+
+								intersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics
+								intersects.push( intersection );
+
+							}
 
 						}
 
@@ -20967,6 +21121,26 @@ function WebGLUtils( gl, extensions ) {
 
 }
 
+/**
+ * @author mrdoob / http://mrdoob.com/
+ */
+
+function Group() {
+
+	Object3D.call( this );
+
+	this.type = 'Group';
+
+}
+
+Group.prototype = Object.assign( Object.create( Object3D.prototype ), {
+
+	constructor: Group,
+
+	isGroup: true
+
+} );
+
 /**
  * @author mrdoob / http://mrdoob.com/
  * @author greggman / http://games.greggman.com/
@@ -21237,6 +21411,7 @@ function WebVRManager( renderer ) {
 
 	var poseTarget = null;
 
+	var controllers = [];
 	var standingMatrix = new Matrix4();
 	var standingMatrixInverse = new Matrix4();
 
@@ -21300,9 +21475,111 @@ function WebVRManager( renderer ) {
 
 	//
 
+	var isTriggerPressed = false;
+
+	function findGamepad( id ) {
+
+		var gamepads = navigator.getGamepads && navigator.getGamepads();
+
+		for ( var i = 0, j = 0, l = gamepads.length; i < l; i ++ ) {
+
+			var gamepad = gamepads[ i ];
+
+			if ( gamepad && ( gamepad.id === 'Daydream Controller' ||
+				gamepad.id === 'Gear VR Controller' || gamepad.id === 'Oculus Go Controller' ||
+				gamepad.id === 'OpenVR Gamepad' || gamepad.id.startsWith( 'Oculus Touch' ) ||
+				gamepad.id.startsWith( 'Spatial Controller' ) ) ) {
+
+				if ( j === id ) return gamepad;
+
+				j ++;
+
+			}
+
+		}
+
+	}
+
+	function updateControllers() {
+
+		for ( var i = 0; i < controllers.length; i ++ ) {
+
+			var controller = controllers[ i ];
+
+			var gamepad = findGamepad( i );
+
+			if ( gamepad !== undefined && gamepad.pose !== undefined ) {
+
+				if ( gamepad.pose === null ) return;
+
+				//  Pose
+
+				var pose = gamepad.pose;
+
+				if ( pose.hasPosition === false ) controller.position.set( 0.2, - 0.6, - 0.05 );
+
+				if ( pose.position !== null ) controller.position.fromArray( pose.position );
+				if ( pose.orientation !== null ) controller.quaternion.fromArray( pose.orientation );
+				controller.matrix.compose( controller.position, controller.quaternion, controller.scale );
+				controller.matrix.premultiply( standingMatrix );
+				controller.matrix.decompose( controller.position, controller.quaternion, controller.scale );
+				controller.matrixWorldNeedsUpdate = true;
+				controller.visible = true;
+
+				//  Trigger
+
+				var buttonId = gamepad.id === 'Daydream Controller' ? 0 : 1;
+
+				if ( isTriggerPressed !== gamepad.buttons[ buttonId ].pressed ) {
+
+					isTriggerPressed = gamepad.buttons[ buttonId ].pressed;
+
+					if ( isTriggerPressed ) {
+
+						controller.dispatchEvent( { type: 'selectstart' } );
+
+					} else {
+
+						controller.dispatchEvent( { type: 'selectend' } );
+						controller.dispatchEvent( { type: 'select' } );
+
+					}
+
+				}
+
+			} else {
+
+				controller.visible = false;
+
+			}
+
+		}
+
+	}
+
+	//
+
 	this.enabled = false;
 	this.userHeight = 1.6;
 
+	this.getController = function ( id ) {
+
+		var controller = controllers[ id ];
+
+		if ( controller === undefined ) {
+
+			controller = new Group();
+			controller.matrixAutoUpdate = false;
+			controller.visible = false;
+
+			controllers[ id ] = controller;
+
+		}
+
+		return controller;
+
+	};
+
 	this.getDevice = function () {
 
 		return device;
@@ -21325,7 +21602,12 @@ function WebVRManager( renderer ) {
 
 	this.getCamera = function ( camera ) {
 
-		if ( device === null ) return camera;
+		if ( device === null ) {
+
+			camera.position.set( 0, scope.userHeight, 0 );
+			return camera;
+
+		}
 
 		device.depthNear = camera.near;
 		device.depthFar = camera.far;
@@ -21441,6 +21723,8 @@ function WebVRManager( renderer ) {
 
 		}
 
+		updateControllers();
+
 		return cameraVR;
 
 	};
@@ -21496,10 +21780,14 @@ function WebXRManager( renderer ) {
 
 	var pose = null;
 
+	var controllers = [];
+	var inputSources = [];
+
 	function isPresenting() {
 
 		return session !== null && frameOfRef !== null;
 
+
 	}
 
 	//
@@ -21520,6 +21808,24 @@ function WebXRManager( renderer ) {
 
 	this.enabled = false;
 
+	this.getController = function ( id ) {
+
+		var controller = controllers[ id ];
+
+		if ( controller === undefined ) {
+
+			controller = new Group();
+			controller.matrixAutoUpdate = false;
+			controller.visible = false;
+
+			controllers[ id ] = controller;
+
+		}
+
+		return controller;
+
+	};
+
 	this.getDevice = function () {
 
 		return device;
@@ -21536,18 +21842,30 @@ function WebXRManager( renderer ) {
 
 	//
 
+	function onSessionEvent( event ) {
+
+		var controller = controllers[ inputSources.indexOf( event.inputSource ) ];
+		if ( controller ) controller.dispatchEvent( { type: event.type } );
+
+	}
+
+	function onSessionEnd() {
+
+		renderer.setFramebuffer( null );
+		animation.stop();
+
+	}
+
 	this.setSession = function ( value, options ) {
 
 		session = value;
 
 		if ( session !== null ) {
 
-			session.addEventListener( 'end', function () {
-
-				renderer.setFramebuffer( null );
-				animation.stop();
-
-			} );
+			session.addEventListener( 'select', onSessionEvent );
+			session.addEventListener( 'selectstart', onSessionEvent );
+			session.addEventListener( 'selectend', onSessionEvent );
+			session.addEventListener( 'end', onSessionEnd );
 
 			session.baseLayer = new XRWebGLLayer( session, gl );
 			session.requestFrameOfReference( options.frameOfReferenceType ).then( function ( value ) {
@@ -21561,6 +21879,17 @@ function WebXRManager( renderer ) {
 
 			} );
 
+			//
+
+			inputSources = session.getInputSources();
+
+			session.addEventListener( 'inputsourceschange', function () {
+
+				inputSources = session.getInputSources();
+				console.log( inputSources );
+
+			} );
+
 		}
 
 	};
@@ -21628,31 +21957,63 @@ function WebXRManager( renderer ) {
 
 		pose = frame.getDevicePose( frameOfRef );
 
-		var layer = session.baseLayer;
-		var views = frame.views;
+		if ( pose !== null ) {
+
+			var layer = session.baseLayer;
+			var views = frame.views;
+
+			for ( var i = 0; i < views.length; i ++ ) {
+
+				var view = views[ i ];
+				var viewport = layer.getViewport( view );
+				var viewMatrix = pose.getViewMatrix( view );
+
+				var camera = cameraVR.cameras[ i ];
+				camera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix );
+				camera.projectionMatrix.fromArray( view.projectionMatrix );
+				camera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );
+
+				if ( i === 0 ) {
+
+					cameraVR.matrix.copy( camera.matrix );
+
+					// HACK (mrdoob)
+					// https://github.com/w3c/webvr/issues/203
+
+					cameraVR.projectionMatrix.copy( camera.projectionMatrix );
+
+				}
+
+			}
 
-		for ( var i = 0; i < views.length; i ++ ) {
+		}
+
+		//
 
-			var view = views[ i ];
-			var viewport = layer.getViewport( view );
-			var viewMatrix = pose.getViewMatrix( view );
+		for ( var i = 0; i < controllers.length; i ++ ) {
 
-			var camera = cameraVR.cameras[ i ];
-			camera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix );
-			camera.projectionMatrix.fromArray( view.projectionMatrix );
-			camera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );
+			var controller = controllers[ i ];
 
-			if ( i === 0 ) {
+			var inputSource = inputSources[ i ];
 
-				cameraVR.matrix.copy( camera.matrix );
+			if ( inputSource ) {
 
-				// HACK (mrdoob)
-				// https://github.com/w3c/webvr/issues/203
+				var inputPose = frame.getInputPose( inputSource, frameOfRef );
+
+				if ( inputPose !== null ) {
+
+					controller.matrix.elements = inputPose.pointerMatrix;
+					controller.matrix.decompose( controller.position, controller.rotation, controller.scale );
+					controller.visible = true;
+
+					continue;
 
-				cameraVR.projectionMatrix.copy( camera.projectionMatrix );
+				}
 
 			}
 
+			controller.visible = false;
+
 		}
 
 		if ( onAnimationFrameCallback ) onAnimationFrameCallback( time );
@@ -23852,11 +24213,13 @@ function WebGLRenderer( parameters ) {
 
 	function refreshUniformsPhysical( uniforms, material ) {
 
+		refreshUniformsStandard( uniforms, material );
+
+		uniforms.reflectivity.value = material.reflectivity; // also part of uniforms common
+
 		uniforms.clearCoat.value = material.clearCoat;
 		uniforms.clearCoatRoughness.value = material.clearCoatRoughness;
 
-		refreshUniformsStandard( uniforms, material );
-
 	}
 
 	function refreshUniformsDepth( uniforms, material ) {
@@ -25619,26 +25982,6 @@ Points.prototype = Object.assign( Object.create( Object3D.prototype ), {
 
 } );
 
-/**
- * @author mrdoob / http://mrdoob.com/
- */
-
-function Group() {
-
-	Object3D.call( this );
-
-	this.type = 'Group';
-
-}
-
-Group.prototype = Object.assign( Object.create( Object3D.prototype ), {
-
-	constructor: Group,
-
-	isGroup: true
-
-} );
-
 /**
  * @author mrdoob / http://mrdoob.com/
  */
@@ -31710,7 +32053,7 @@ function ImageLoader( manager ) {
 
 Object.assign( ImageLoader.prototype, {
 
-	crossOrigin: 'Anonymous',
+	crossOrigin: 'anonymous',
 
 	load: function ( url, onLoad, onProgress, onError ) {
 
@@ -31813,7 +32156,7 @@ function CubeTextureLoader( manager ) {
 
 Object.assign( CubeTextureLoader.prototype, {
 
-	crossOrigin: 'Anonymous',
+	crossOrigin: 'anonymous',
 
 	load: function ( urls, onLoad, onProgress, onError ) {
 
@@ -31884,7 +32227,7 @@ function TextureLoader( manager ) {
 
 Object.assign( TextureLoader.prototype, {
 
-	crossOrigin: 'Anonymous',
+	crossOrigin: 'anonymous',
 
 	load: function ( url, onLoad, onProgress, onError ) {
 
@@ -36404,7 +36747,7 @@ Loader.Handlers = {
 
 Object.assign( Loader.prototype, {
 
-	crossOrigin: undefined,
+	crossOrigin: 'anonymous',
 
 	onLoadStart: function () {},
 
@@ -36747,6 +37090,8 @@ function JSONLoader( manager ) {
 
 Object.assign( JSONLoader.prototype, {
 
+	crossOrigin: 'anonymous',
+
 	load: function ( url, onLoad, onProgress, onError ) {
 
 		var scope = this;
@@ -36784,9 +37129,17 @@ Object.assign( JSONLoader.prototype, {
 
 	},
 
+	setCrossOrigin: function ( value ) {
+
+		this.crossOrigin = value;
+		return this;
+
+	},
+
 	setTexturePath: function ( value ) {
 
 		this.texturePath = value;
+		return this;
 
 	},
 
@@ -37293,6 +37646,8 @@ function ObjectLoader( manager ) {
 
 Object.assign( ObjectLoader.prototype, {
 
+	crossOrigin: 'anonymous',
+
 	load: function ( url, onLoad, onProgress, onError ) {
 
 		if ( this.texturePath === '' ) {
@@ -37759,12 +38114,36 @@ Object.assign( ObjectLoader.prototype, {
 			var loader = new ImageLoader( manager );
 			loader.setCrossOrigin( this.crossOrigin );
 
-			for ( var i = 0, l = json.length; i < l; i ++ ) {
+			for ( var i = 0, il = json.length; i < il; i ++ ) {
 
 				var image = json[ i ];
-				var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( image.url ) ? image.url : scope.texturePath + image.url;
+				var url = image.url;
+
+				if ( Array.isArray( url ) ) {
+
+					// load array of images e.g CubeTexture
+
+					images[ image.uuid ] = [];
+
+					for ( var j = 0, jl = url.length; j < jl; j ++ ) {
+
+						var currentUrl = url[ j ];
+
+						var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( currentUrl ) ? currentUrl : scope.texturePath + currentUrl;
 
-				images[ image.uuid ] = loadImage( path );
+						images[ image.uuid ].push( loadImage( path ) );
+
+					}
+
+				} else {
+
+					// load single image
+
+					var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( image.url ) ? image.url : scope.texturePath + image.url;
+
+					images[ image.uuid ] = loadImage( path );
+
+				}
 
 			}
 
@@ -37806,7 +38185,18 @@ Object.assign( ObjectLoader.prototype, {
 
 				}
 
-				var texture = new Texture( images[ data.image ] );
+				var texture;
+
+				if ( Array.isArray( images[ data.image ] ) ) {
+
+					texture = new CubeTexture( images[ data.image ] );
+
+				} else {
+
+					texture = new Texture( images[ data.image ] );
+
+				}
+
 				texture.needsUpdate = true;
 
 				texture.uuid = data.uuid;

+ 15 - 15
docs/api/audio/Audio.html

@@ -98,24 +98,24 @@
 
 		<h2>Methods</h2>
 
-		<h3>[method:null connect]()</h3>
+		<h3>[method:Audio connect]()</h3>
 		<p>
 		Connect to the [page:Audio.source]. This is used internally on initialisation and when
 		setting / removing filters.
 		</p>
 
-		<h3>[method:null disconnect]()</h3>
+		<h3>[method:Audio disconnect]()</h3>
 		<p>
 		Disconnect from the [page:Audio.source]. This is used internally when
 		setting / removing filters.
 		</p>
 
-		<h3>[method:Array getFilter]()</h3>
+		<h3>[method:BiquadFilterNode getFilter]()</h3>
 		<p>
 		Returns the first element of the [page:Audio.filters filters] array.
 		</p>
 
-		<h3>[method:null getFilters]()</h3>
+		<h3>[method:Array getFilters]()</h3>
 		<p>
 		Returns the [page:Audio.filters filters] array.
 		</p>
@@ -131,22 +131,22 @@
 		Return the [page:Audio.gain gainNode].
 		</p>
 
-		<h3>[method:Number getPlaybackRate]()</h3>
+		<h3>[method:Float getPlaybackRate]()</h3>
 		<p>
 		Return the value of [page:Audio.playbackRate playbackRate].
 		</p>
 
-		<h3>[method:Number getVolume]( value )</h3>
+		<h3>[method:Float getVolume]( value )</h3>
 		<p>
 		Return the current volume.
 		</p>
 
-		<h3>[method:null play]()</h3>
+		<h3>[method:Audio play]()</h3>
 		<p>
 		If [page:Audio.hasPlaybackControl hasPlaybackControl] is true, starts playback.
 		</p>
 
-		<h3>[method:null pause]()</h3>
+		<h3>[method:Audio pause]()</h3>
 		<p>
 		If [page:Audio.hasPlaybackControl hasPlaybackControl] is true, pauses playback.
 		</p>
@@ -162,7 +162,7 @@
 		If [page:Audio.autoplay autoplay], also starts playback.
 		</p>
 
-		<h3>[method:null setFilter]( filter )</h3>
+		<h3>[method:Audio setFilter]( filter )</h3>
 		<p>
 		Applies a single [link:https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode BiquadFilterNode] to the audio.
 		</p>
@@ -173,37 +173,37 @@
 		Applies an array of [link:https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode BiquadFilterNodes] to the audio.
 		</p>
 
-		<h3>[method:null setLoop]( [param:Boolean value] )</h3>
+		<h3>[method:Audio setLoop]( [param:Boolean value] )</h3>
 		<p>
 		Set [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/loop source.loop] to *value*
 		(whether playback should loop).
 		</p>
 
-		<h3>[method:null setMediaElementSource]( mediaElement )</h3>
+		<h3>[method:Audio setMediaElementSource]( mediaElement )</h3>
 		<p>
 		Applies the given object of type [link:https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement HTMLMediaElement] as the source of this audio.<br />
 		Also sets [page:Audio.hasPlaybackControl hasPlaybackControl] to false.
 
 		</p>
 
-		<h3>[method:null setNodeSource]( audioNode )</h3>
+		<h3>[method:Audio setNodeSource]( audioNode )</h3>
 		<p>
 		Setup the [page:Audio.source source] to the audioBuffer, and sets [page:Audio.sourceType sourceType] to 'audioNode'.<br />
 		Also sets [page:Audio.hasPlaybackControl hasPlaybackControl] to false.
 
 		</p>
 
-		<h3>[method:null setPlaybackRate]( [param:Number value] )</h3>
+		<h3>[method:Audio setPlaybackRate]( [param:Float value] )</h3>
 		<p>
 		If [page:Audio.hasPlaybackControl hasPlaybackControl] is enabled, set the [page:Audio.playbackRate playbackRate] to *value*.
 		</p>
 
-		<h3>[method:null setVolume]( [param:Number value] )</h3>
+		<h3>[method:Audio setVolume]( [param:Float value] )</h3>
 		<p>
 		Set the volume.
 		</p>
 
-		<h3>[method:null stop]()</h3>
+		<h3>[method:Audio stop]()</h3>
 		<p>
 		If [page:Audio.hasPlaybackControl hasPlaybackControl] is enabled, stops playback,
 		resets [page:Audio.startTime startTime] to *0* and sets [page:Audio.isPlaying isPlaying] to false.

+ 4 - 4
docs/api/audio/AudioListener.html

@@ -76,7 +76,7 @@
 		Return the [page:AudioListener.gain gainNode].
 		</p>
 
-		<h3>[method:null removeFilter]()</h3>
+		<h3>[method:AudioListener removeFilter]()</h3>
 		<p>
 		Set the [page:AudioListener.filter filter] property to *null*.
 		</p>
@@ -86,17 +86,17 @@
 		Returns the value of the [page:AudioListener.filter filter] property.
 		</p>
 
-		<h3>[method:null setFilter]( [param:AudioNode value] )</h3>
+		<h3>[method:AudioListener setFilter]( [param:AudioNode value] )</h3>
 		<p>
 		Set the [page:AudioListener.filter filter] property to *value*.
 		</p>
 
-		<h3>[method:Number getMasterVolume]()</h3>
+		<h3>[method:Float getMasterVolume]()</h3>
 		<p>
 		Return the volume.
 		</p>
 
-		<h3>[method:null setMasterVolume]( [param:Number value] )</h3>
+		<h3>[method:AudioListener setMasterVolume]( [param:Number value] )</h3>
 		<p>
 		Set the volume.
 		</p>

+ 8 - 7
docs/api/audio/PositionalAudio.html

@@ -22,6 +22,7 @@
 		<h2>Example</h2>
 
 		<p>
+			[example:webaudio_orientation webaudio / orientation ]</br>
 			[example:webaudio_sandbox webaudio / sandbox ]</br>
 			[example:webaudio_timing webaudio / timing ]
 		</p>
@@ -82,22 +83,22 @@
 		Returns the [page:PositionalAudio.panner panner].
 		</p>
 
-		<h3>[method:Number getRefDistance]()</h3>
+		<h3>[method:Float getRefDistance]()</h3>
 		<p>
 		Returns the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/refDistance panner.refDistance].
 		</p>
 
-		<h3>[method:PannerNode setRefDistance]( [param:Number value] )</h3>
+		<h3>[method:PositionalAudio setRefDistance]( [param:Number value] )</h3>
 		<p>
 		Sets the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/refDistance panner.refDistance].
 		</p>
 
-		<h3>[method:PannerNode getRolloffFactor]()</h3>
+		<h3>[method:Float getRolloffFactor]()</h3>
 		<p>
 		Returns the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/rolloffFactor panner.rolloffFactor].
 		</p>
 
-		<h3>[method:PannerNode setRolloffFactor]( [param:Number value] )</h3>
+		<h3>[method:PositionalAudio setRolloffFactor]( [param:Number value] )</h3>
 		<p>
 		Sets the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/rolloffFactor panner.rolloffFactor].
 		</p>
@@ -107,17 +108,17 @@
 		Returns the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/distanceModel panner.distanceModel].
 		</p>
 
-		<h3>[method:String setDistanceModel]( [param:String value] )</h3>
+		<h3>[method:PositionalAudio setDistanceModel]( [param:String value] )</h3>
 		<p>
 		Sets the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/distanceModel panner.distanceModel].
 		</p>
 
-		<h3>[method:PannerNode getMaxDistance]()</h3>
+		<h3>[method:Float getMaxDistance]()</h3>
 		<p>
 		Returns the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/maxDistance panner.maxDistance].
 		</p>
 
-		<h3>[method:PannerNode setMaxDistance]( [param:Number value] )</h3>
+		<h3>[method:PositionalAudio setMaxDistance]( [param:Number value] )</h3>
 		<p>
 		Sets the value of [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/maxDistance panner.maxDistance].
 		</p>

+ 1 - 1
docs/api/extras/ShapeUtils.html

@@ -39,7 +39,7 @@
 		[page:ExtrudeGeometry ExtrudeGeometry] and [page:ShapeGeometry ShapeGeometry].
 		</p>
 
-		<h3>[method:null triangulateShape]( contour, holes )</h3>
+		<h3>[method:Array triangulateShape]( contour, holes )</h3>
 		<p>
 		contour -- 2D polygon.<br />
 		holes -- array of holes<br /><br />

+ 1 - 1
docs/api/loaders/CubeTextureLoader.html

@@ -56,7 +56,7 @@ scene.background = new THREE.CubeTextureLoader()
 		<p>
 		If set, assigns the [link:https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes crossOrigin]
 	 attribute of the image to the value of *crossOrigin*,
-		prior to starting the load. Default is *"Anonymous"*.
+		prior to starting the load. Default is *"anonymous"*.
 		</p>
 
 		<h3>[property:LoadingManager manager]</h3>

+ 1 - 1
docs/api/loaders/ImageLoader.html

@@ -69,7 +69,7 @@
 		<h3>[property:String crossOrigin]</h3>
 		<p>
 		If set, assigns the [link:https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes crossOrigin]
-	 attribute of the image to the value of *crossOrigin*, prior to starting the load. Default is *"Anonymous"*.
+	 attribute of the image to the value of *crossOrigin*, prior to starting the load. Default is *"anonymous"*.
 		</p>
 
 		<h3>[property:LoadingManager manager]</h3>

+ 12 - 1
docs/api/loaders/JSONLoader.html

@@ -62,6 +62,12 @@
 
 		<h2>Properties</h2>
 
+		<h3>[property:String crossOrigin]</h3>
+		<p>
+		If set, assigns the [link:https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes crossOrigin]
+	 attribute of the image to the value of *crossOrigin*, prior to starting the load. Default is *"anonymous"*.
+		</p>
+
 		<h3>[property:LoadingManager manager]</h3>
 		<p>
 			The [page:LoadingManager loadingManager]  the loader is using. Default is [page:DefaultLoadingManager].
@@ -87,7 +93,12 @@
 		Begin loading from url and pass the <em>JSON</em> to onLoad.
 		</p>
 
-		<h3>[method:null setTexturePath]( [param:String texturePath] )</h3>
+		<h3>[method:JSONLoader setCrossOrigin]( [param:String value] )</h3>
+		<p>
+			Set the [page:.crossOrigin] attribute.
+		</p>
+
+		<h3>[method:JSONLoader setTexturePath]( [param:String texturePath] )</h3>
 		<p>
 			Set the base path or URL from which to load files. This can be useful if
 			you are loading many files from the same directory.

+ 1 - 0
docs/api/loaders/Loader.html

@@ -39,6 +39,7 @@
 		<h3>[property:string crossOrigin]</h3>
 		<p>
 		The crossOrigin string to implement CORS for loading the url from a different domain that allows CORS.
+		Default is *"anonymous"*.
 		</p>
 
 		<h2>Methods</h2>

+ 1 - 2
docs/api/loaders/ObjectLoader.html

@@ -77,8 +77,7 @@
 		<h3>[property:String crossOrigin]</h3>
 		<p>
 		If set, assigns the [link:https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes crossOrigin]
-	 attribute of the image to the value of *crossOrigin*,
-		prior to starting the load. Default is *undefined*.
+	 attribute of the image to the value of *crossOrigin*, prior to starting the load. Default is *"anonymous"*.
 		</p>
 
 		<h3>[property:LoadingManager manager]</h3>

+ 1 - 1
docs/api/loaders/TextureLoader.html

@@ -72,7 +72,7 @@
 		<h3>[property:String crossOrigin]</h3>
 		<p>
 		If set, assigns the [link:https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes crossOrigin]
-	 attribute of the image to the value of *crossOrigin*, prior to starting the load. Default is *"Anonymous"*.
+	 attribute of the image to the value of *crossOrigin*, prior to starting the load. Default is *"anonymous"*.
 		</p>
 
 

+ 28 - 4
docs/api/math/Color.html

@@ -124,13 +124,23 @@ var color = new THREE.Color( 1, 0, 0 );
 		<h3>[method:Color convertGammaToLinear]( [param:Float gammaFactor] ) </h3>
 		<p>
 		[page:Float gammaFactor] - (optional). Default is *2.0*.<br /><br />
-		Converts this color from gamma to linear space by taking [page:.r r], [page:.g g] and [page:.b b] to the power of [page:Float gammaFactor].
+		Converts this color from gamma space to linear space by taking [page:.r r], [page:.g g] and [page:.b b] to the power of [page:Float gammaFactor].
 		</p>
 		
 		<h3>[method:Color convertLinearToGamma]( [param:Float gammaFactor] ) </h3>
 		<p>
 		[page:Float gammaFactor] - (optional). Default is *2.0*.<br /><br />
-		Converts this color from linear to gamma space by taking [page:.r r], [page:.g g] and [page:.b b] to the power of 1 / [page:Float gammaFactor].
+		Converts this color from linear space to gamma space by taking [page:.r r], [page:.g g] and [page:.b b] to the power of 1 / [page:Float gammaFactor].
+		</p>
+
+		<h3>[method:Color convertLinearToSRGB]() </h3>
+		<p>
+		Converts this color from linear space to sRGB space.
+		</p>
+
+		<h3>[method:Color convertSRGBToLinear]() </h3>
+		<p>
+		Converts this color from sRGB space to linear space.
 		</p>
 
 		<h3>[method:Color copyGammaToLinear]( [param:Color color], [param:Float gammaFactor] ) </h3>
@@ -138,7 +148,7 @@ var color = new THREE.Color( 1, 0, 0 );
 		[page:Color color] — Color to copy.<br />
 		[page:Float gammaFactor] - (optional). Default is *2.0*.<br /><br />
 
-		Copies the given color into this color while converting it from gamma to linear space
+		Copies the given color into this color, and then converts this color from gamma space to linear space
 		by taking [page:.r r], [page:.g g] and [page:.b b] to the power of [page:Float gammaFactor].
 		</p>
 
@@ -147,10 +157,24 @@ var color = new THREE.Color( 1, 0, 0 );
 		[page:Color color] — Color to copy.<br />
 		[page:Float gammaFactor] - (optional). Default is *2.0*.<br /><br />
 
-		Copies the given color into this color while converting it from linear to gamma space
+		Copies the given color into this color, and then converts this color from linear space to gamma space
 		by taking [page:.r r], [page:.g g] and [page:.b b] to the power of 1 / [page:Float gammaFactor].
 		</p>
 
+		<h3>[method:Color copyLinearToSRGB]( [param:Color color]] ) </h3>
+		<p>
+		[page:Color color] — Color to copy.<br />
+
+		Copies the given color into this color, and then converts this color from linear space to sRGB space.
+		</p>
+
+		<h3>[method:Color copySRGBToLinear]( [param:Color color] ) </h3>
+		<p>
+		[page:Color color] — Color to copy.<br />
+
+		Copies the given color into this color, and then converts this color from sRGB space to linear space.
+		</p>
+
 		<h3>[method:Boolean equals]( [param:Color color] ) </h3>
 		<p>Compares the RGB values of [page:Color color] with those of this object. Returns true if they are the same, false otherwise.</p>
 

+ 1 - 1
docs/api/objects/Line.html

@@ -46,7 +46,7 @@
 		<h3>[name]( [param:Geometry geometry], [param:Material material] )</h3>
 
 		<p>
-		[page:Geometry geometry] — vertices representing the line segment(s). Default is a new [page:new BufferGeometry].<br />
+		[page:Geometry geometry] — vertices representing the line segment(s). Default is a new [page:BufferGeometry].<br />
 		[page:Material material] — material for the line. Default is a new [page:LineBasicMaterial] with random color.<br />
 		</p>
 

+ 8 - 7
docs/examples/loaders/MTLLoader.html

@@ -11,7 +11,7 @@
 
 		<h1>[name]</h1>
 
-		<p class="desc">A loader for loading an <em>.mtl</em> resource, used internaly by [page:OBJLoader] and [page:UTF8Loader].<br />
+		<p class="desc">A loader for loading an <em>.mtl</em> resource, used internaly by [page:OBJLoader].<br />
 		The Material Template Library format (MTL) or .MTL File Format is a companion file format to .OBJ that describes surface shading
 		(material) properties of objects within one or more .OBJ files.
 		</p>
@@ -44,7 +44,7 @@
 		</p>
 
 
-		<h3>[method:null setPath]( [param:String path] )</h3>
+		<h3>[method:MTLLoader setPath]( [param:String path] )</h3>
 		<p>
 			[page:String path] — required<br />
 		</p>
@@ -53,7 +53,7 @@
 		</p>
 
 
-		<h3>[method:null setTexturePath]( [param:String path] )</h3>
+		<h3>[method:MTLLoader setTexturePath]( [param:String path] )</h3>
 		<p>
 			[page:String path] — required<br />
 		</p>
@@ -62,16 +62,17 @@
 		</p>
 
 
-		<h3>[method:null setCrossOrigin]( [param:boolean useCrossOrigin] )</h3>
+		<h3>[method:MTLLoader setCrossOrigin]( [param:String value] )</h3>
 		<p>
-			[page:boolean useCrossOrigin] — required<br />
+			[page:String value] — required<br />
 		</p>
 		<p>
-			Set to true if you need to load textures from a different origin.
+			If set, assigns the [link:https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_settings_attributes crossOrigin]
+		 attribute of the image to the value of *crossOrigin*, prior to starting the load. Default is *"anonymous"*.
 		</p>
 
 
-		<h3>[method:null setMaterialOptions]( [param:Object options] )</h3>
+		<h3>[method:MTLLoader setMaterialOptions]( [param:Object options] )</h3>
 		<p>
 			[page:Object options] — required
 			<ul>

+ 0 - 1
editor/index.html

@@ -41,7 +41,6 @@
 		<script src="../examples/js/loaders/SVGLoader.js"></script>
 		<script src="../examples/js/loaders/TGALoader.js"></script>
 		<script src="../examples/js/loaders/TDSLoader.js"></script>
-		<script src="../examples/js/loaders/UTF8Loader.js"></script>
 		<script src="../examples/js/loaders/VRMLLoader.js"></script>
 		<script src="../examples/js/loaders/VTKLoader.js"></script>
 		<script src="../examples/js/loaders/ctm/lzma.js"></script>

+ 0 - 20
editor/js/Loader.js

@@ -427,26 +427,6 @@ var Loader = function ( editor ) {
 
 				break;
 
-			/*
-			case 'utf8':
-
-				reader.addEventListener( 'load', function ( event ) {
-
-					var contents = event.target.result;
-
-					var geometry = new THREE.UTF8Loader().parse( contents );
-					var material = new THREE.MeshLambertMaterial();
-
-					var mesh = new THREE.Mesh( geometry, material );
-
-					editor.execute( new AddObjectCommand( mesh ) );
-
-				}, false );
-				reader.readAsBinaryString( file );
-
-				break;
-			*/
-
 			case 'vtk':
 
 				reader.addEventListener( 'load', function ( event ) {

+ 1 - 1
editor/js/libs/tern-threejs/threejs.js

@@ -1836,7 +1836,7 @@
           "!doc": "Parse a <em>mtl</em> text structure and return a [page:MTLLoaderMaterialCreator] instance.<br>"
         }
       },
-      "!doc": "A loader for loading an <em>.mtl</em> resource, used internaly by [page:OBJMTLLoader] and [page:UTF8Loader].",
+      "!doc": "A loader for loading an <em>.mtl</em> resource, used internaly by [page:OBJLoader].",
       "!type": "fn(baseUrl: string, options: object, crossOrigin: string)"
     },
     "MaterialLoader": {

+ 1 - 4
examples/files.js

@@ -132,7 +132,6 @@ var files = {
 		"webgl_loader_texture_pvrtc",
 		"webgl_loader_texture_tga",
 		"webgl_loader_ttf",
-		"webgl_loader_utf8",
 		"webgl_loader_vrm",
 		"webgl_loader_vrml",
 		"webgl_loader_vtk",
@@ -319,11 +318,9 @@ var files = {
 		"webaudio_visualizer"
 	],
 	"webvr": [
+		"webvr_ballshooter",
 		"webvr_cubes",
-		"webvr_daydream",
-		"webvr_gearvr",
 		"webvr_lorenzattractor",
-		"webvr_oculusgo",
 		"webvr_panorama",
 		"webvr_rollercoaster",
 		"webvr_sandbox",

+ 25 - 36
examples/js/BufferGeometryUtils.js

@@ -39,10 +39,10 @@ THREE.BufferGeometryUtils = {
 
 		var tan1 = [], tan2 = [];
 
-		for ( var k = 0; k < nVertices; k ++ ) {
+		for ( var i = 0; i < nVertices; i ++ ) {
 
-			tan1[ k ] = new THREE.Vector3();
-			tan2[ k ] = new THREE.Vector3();
+			tan1[ i ] = new THREE.Vector3();
+			tan2[ i ] = new THREE.Vector3();
 
 		}
 
@@ -117,19 +117,19 @@ THREE.BufferGeometryUtils = {
 
 		}
 
-		for ( var j = 0, jl = groups.length; j < jl; ++ j ) {
+		for ( var i = 0, il = groups.length; i < il; ++ i ) {
 
-			var group = groups[ j ];
+			var group = groups[ i ];
 
 			var start = group.start;
 			var count = group.count;
 
-			for ( var i = start, il = start + count; i < il; i += 3 ) {
+			for ( var j = start, jl = start + count; j < jl; j += 3 ) {
 
 				handleTriangle(
-					indices[ i + 0 ],
-					indices[ i + 1 ],
-					indices[ i + 2 ]
+					indices[ j + 0 ],
+					indices[ j + 1 ],
+					indices[ j + 2 ]
 				);
 
 			}
@@ -165,18 +165,18 @@ THREE.BufferGeometryUtils = {
 
 		}
 
-		for ( var j = 0, jl = groups.length; j < jl; ++ j ) {
+		for ( var i = 0, il = groups.length; i < il; ++ i ) {
 
-			var group = groups[ j ];
+			var group = groups[ i ];
 
 			var start = group.start;
 			var count = group.count;
 
-			for ( var i = start, il = start + count; i < il; i += 3 ) {
+			for ( var j = start, jl = start + count; j < jl; j += 3 ) {
 
-				handleVertex( indices[ i + 0 ] );
-				handleVertex( indices[ i + 1 ] );
-				handleVertex( indices[ i + 2 ] );
+				handleVertex( indices[ j + 0 ] );
+				handleVertex( indices[ j + 1 ] );
+				handleVertex( indices[ j + 2 ] );
 
 			}
 
@@ -214,7 +214,7 @@ THREE.BufferGeometryUtils = {
 
 			for ( var name in geometry.attributes ) {
 
-				if ( !attributesUsed.has( name ) ) return null;
+				if ( ! attributesUsed.has( name ) ) return null;
 
 				if ( attributes[ name ] === undefined ) attributes[ name ] = [];
 
@@ -226,7 +226,7 @@ THREE.BufferGeometryUtils = {
 
 			for ( var name in geometry.morphAttributes ) {
 
-				if ( !morphAttributesUsed.has( name ) ) return null;
+				if ( ! morphAttributesUsed.has( name ) ) return null;
 
 				if ( morphAttributes[ name ] === undefined ) morphAttributes[ name ] = [];
 
@@ -270,34 +270,23 @@ THREE.BufferGeometryUtils = {
 		if ( isIndexed ) {
 
 			var indexOffset = 0;
-			var indexList = [];
+			var mergedIndex = [];
 
 			for ( var i = 0; i < geometries.length; ++ i ) {
 
 				var index = geometries[ i ].index;
 
-				if ( indexOffset > 0 ) {
+				for ( var j = 0; j < index.count; ++ j ) {
 
-					index = index.clone();
-
-					for ( var j = 0; j < index.count; ++ j ) {
-
-						index.setX( j, index.getX( j ) + indexOffset );
-
-					}
+					mergedIndex.push( index.getX( j ) + indexOffset );
 
 				}
 
-				indexList.push( index );
 				indexOffset += geometries[ i ].attributes.position.count;
 
 			}
 
-			var mergedIndex = this.mergeBufferAttributes( indexList );
-
-			if ( !mergedIndex ) return null;
-
-			mergedGeometry.index = mergedIndex;
+			mergedGeometry.setIndex( mergedIndex );
 
 		}
 
@@ -336,7 +325,7 @@ THREE.BufferGeometryUtils = {
 
 				var mergedMorphAttribute = this.mergeBufferAttributes( morphAttributesToMerge );
 
-				if ( !mergedMorphAttribute ) return null;
+				if ( ! mergedMorphAttribute ) return null;
 
 				mergedGeometry.morphAttributes[ name ].push( mergedMorphAttribute );
 
@@ -381,11 +370,11 @@ THREE.BufferGeometryUtils = {
 		var array = new TypedArray( arrayLength );
 		var offset = 0;
 
-		for ( var j = 0; j < attributes.length; ++ j ) {
+		for ( var i = 0; i < attributes.length; ++ i ) {
 
-			array.set( attributes[ j ].array, offset );
+			array.set( attributes[ i ].array, offset );
 
-			offset += attributes[ j ].array.length;
+			offset += attributes[ i ].array.length;
 
 		}
 

+ 3 - 4
examples/js/controls/EditorControls.js

@@ -14,7 +14,7 @@ THREE.EditorControls = function ( object, domElement ) {
 	this.enabled = true;
 	this.center = new THREE.Vector3();
 	this.panSpeed = 0.001;
-	this.zoomSpeed = 0.001;
+	this.zoomSpeed = 0.1;
 	this.rotationSpeed = 0.005;
 
 	// internals
@@ -187,9 +187,8 @@ THREE.EditorControls = function ( object, domElement ) {
 
 		event.preventDefault();
 
-		// if ( scope.enabled === false ) return;
-
-		scope.zoom( new THREE.Vector3( 0, 0, event.deltaY ) );
+		// Normalize deltaY due to https://bugzilla.mozilla.org/show_bug.cgi?id=1392460
+		scope.zoom( new THREE.Vector3( 0, 0, event.deltaY > 0 ? 1 : - 1 ) );
 
 	}
 

+ 1 - 1
examples/js/exporters/GLTFExporter.js

@@ -244,7 +244,7 @@ THREE.GLTFExporter.prototype = {
 
 			if ( cachedData.attributes.has( normal ) ) {
 
-				return cachedData.textures.get( normal );
+				return cachedData.attributes.get( normal );
 
 			}
 

+ 4 - 1
examples/js/loaders/AssimpJSONLoader.js

@@ -21,7 +21,7 @@ THREE.AssimpJSONLoader.prototype = {
 
 	constructor: THREE.AssimpJSONLoader,
 
-	crossOrigin: 'Anonymous',
+	crossOrigin: 'anonymous',
 
 	load: function ( url, onLoad, onProgress, onError ) {
 
@@ -67,6 +67,7 @@ THREE.AssimpJSONLoader.prototype = {
 	setCrossOrigin: function ( value ) {
 
 		this.crossOrigin = value;
+		return this;
 
 	},
 
@@ -221,8 +222,10 @@ THREE.AssimpJSONLoader.prototype = {
 
 					case '$mat.opacity':
 						if ( value < 1 ) {
+
 							material.opacity = value;
 							material.transparent = true;
+
 						}
 						break;
 

+ 4 - 3
examples/js/loaders/AssimpLoader.js

@@ -12,7 +12,7 @@ THREE.AssimpLoader.prototype = {
 
 	constructor: THREE.AssimpLoader,
 
-	crossOrigin: 'Anonymous',
+	crossOrigin: 'anonymous',
 
 	load: function ( url, onLoad, onProgress, onError ) {
 
@@ -34,6 +34,7 @@ THREE.AssimpLoader.prototype = {
 	setCrossOrigin: function ( value ) {
 
 		this.crossOrigin = value;
+		return this;
 
 	},
 
@@ -1129,7 +1130,7 @@ THREE.AssimpLoader.prototype = {
 			}
 
 			if ( ! key ) {
-				
+
 				return null;
 
 			} else if ( nextKey ) {
@@ -1150,7 +1151,7 @@ THREE.AssimpLoader.prototype = {
 				var l = T / dT;
 
 				return lerp( key.mValue.toTHREE(), nextKey.mValue.toTHREE(), l );
-				
+
 			}
 
 		}

+ 4 - 1
examples/js/loaders/BinaryLoader.js

@@ -19,7 +19,7 @@ THREE.BinaryLoader.prototype = {
 
 	constructor: THREE.BinaryLoader,
 
-	crossOrigin: 'Anonymous',
+	crossOrigin: 'anonymous',
 
 	// Load models generated by slim OBJ converter with BINARY option (converter_obj_three_slim.py -t binary)
 	//  - binary models consist of two files: JS and BIN
@@ -66,18 +66,21 @@ THREE.BinaryLoader.prototype = {
 	setBinaryPath: function ( value ) {
 
 		this.binaryPath = value;
+		return this;
 
 	},
 
 	setCrossOrigin: function ( value ) {
 
 		this.crossOrigin = value;
+		return this;
 
 	},
 
 	setTexturePath: function ( value ) {
 
 		this.texturePath = value;
+		return this;
 
 	},
 

+ 12 - 2
examples/js/loaders/ColladaLoader.js

@@ -13,7 +13,7 @@ THREE.ColladaLoader.prototype = {
 
 	constructor: THREE.ColladaLoader,
 
-	crossOrigin: 'Anonymous',
+	crossOrigin: 'anonymous',
 
 	load: function ( url, onLoad, onProgress, onError ) {
 
@@ -33,6 +33,7 @@ THREE.ColladaLoader.prototype = {
 	setPath: function ( value ) {
 
 		this.path = value;
+		return this;
 
 	},
 
@@ -49,6 +50,7 @@ THREE.ColladaLoader.prototype = {
 	setCrossOrigin: function ( value ) {
 
 		this.crossOrigin = value;
+		return this;
 
 	},
 
@@ -965,7 +967,15 @@ THREE.ColladaLoader.prototype = {
 
 			// setup bind matrix
 
-			build.bindMatrix = new THREE.Matrix4().fromArray( data.bindShapeMatrix ).transpose();
+			if ( data.bindShapeMatrix ) {
+
+				build.bindMatrix = new THREE.Matrix4().fromArray( data.bindShapeMatrix ).transpose(); 
+
+			} else {
+
+				build.bindMatrix = new THREE.Matrix4().transpose(); 
+
+			}
 
 			// process bones and inverse bind matrix data
 

+ 2 - 10
examples/js/loaders/DRACOLoader.js

@@ -42,9 +42,6 @@ THREE.DRACOLoader.prototype = {
         var loader = new THREE.FileLoader(scope.manager);
         loader.setPath(this.path);
         loader.setResponseType('arraybuffer');
-        if (this.crossOrigin !== undefined) {
-          loader.crossOrigin = this.crossOrigin;
-        }
         loader.load(url, function(blob) {
             scope.decodeDracoFile(blob, onLoad);
         }, onProgress, onError);
@@ -55,11 +52,6 @@ THREE.DRACOLoader.prototype = {
         return this;
     },
 
-    setCrossOrigin: function(value) {
-        this.crossOrigin = value;
-        return this;
-    },
-
     setVerbosity: function(level) {
         this.verbosity = level;
         return this;
@@ -146,7 +138,7 @@ THREE.DRACOLoader.prototype = {
     },
 
     addAttributeToGeometry: function(dracoDecoder, decoder, dracoGeometry,
-                                     attributeName, attributeType, attribute, 
+                                     attributeName, attributeType, attribute,
                                      geometry, geometryBuffer) {
       if (attribute.ptr === 0) {
         var errorMsg = 'THREE.DRACOLoader: No attribute ' + attributeName;
@@ -224,7 +216,7 @@ THREE.DRACOLoader.prototype = {
           throw new Error( errorMsg );
 
       }
-      
+
       // Copy data from decoder.
       for (var i = 0; i < numValues; i++) {
         geometryBuffer[attributeName][i] = attributeData.GetValue(i);

+ 12 - 1
examples/js/loaders/FBXLoader.js

@@ -32,6 +32,8 @@
 
 	Object.assign( THREE.FBXLoader.prototype, {
 
+		crossOrigin: 'anonymous',
+
 		load: function ( url, onLoad, onProgress, onError ) {
 
 			var self = this;
@@ -63,6 +65,13 @@
 
 		},
 
+		setCrossOrigin: function ( value ) {
+
+			this.crossOrigin = value;
+			return this;
+
+		},
+
 		parse: function ( FBXBuffer, resourceDirectory ) {
 
 			var FBXTree;
@@ -93,9 +102,11 @@
 
 			// console.log( FBXTree );
 
+			var textureLoader = new THREE.TextureLoader( this.manager ).setPath( resourceDirectory ).setCrossOrigin( this.crossOrigin );
+
 			var connections = parseConnections( FBXTree );
 			var images = parseImages( FBXTree );
-			var textures = parseTextures( FBXTree, new THREE.TextureLoader( this.manager ).setPath( resourceDirectory ), images, connections );
+			var textures = parseTextures( FBXTree, textureLoader, images, connections );
 			var materials = parseMaterials( FBXTree, textures, connections );
 			var deformers = parseDeformers( FBXTree, connections );
 			var geometryMap = parseGeometries( FBXTree, connections, deformers );

+ 1 - 1
examples/js/loaders/GLTFLoader.js

@@ -19,7 +19,7 @@ THREE.GLTFLoader = ( function () {
 
 		constructor: GLTFLoader,
 
-		crossOrigin: 'Anonymous',
+		crossOrigin: 'anonymous',
 
 		load: function ( url, onLoad, onProgress, onError ) {
 

+ 1 - 1
examples/js/loaders/LoaderSupport.js

@@ -1240,7 +1240,7 @@ THREE.LoaderSupport.WorkerDirector = (function () {
 
 		this.maxQueueSize = MAX_QUEUE_SIZE ;
 		this.maxWebWorkers = MAX_WEB_WORKER;
-		this.crossOrigin = null;
+		this.crossOrigin = 'anonymous';
 
 		if ( ! Validator.isValid( classDef ) ) throw 'Provided invalid classDef: ' + classDef;
 

+ 4 - 4
examples/js/loaders/MMDLoader.js

@@ -50,7 +50,7 @@ THREE.MMDLoader = ( function () {
 
 		constructor: MMDLoader,
 
-		crossOrigin: undefined,
+		crossOrigin: 'anonymous',
 
 		/**
 		 * @param {string} value
@@ -329,7 +329,7 @@ THREE.MMDLoader = ( function () {
 
 		constructor: MeshBuilder,
 
-		crossOrigin: undefined,
+		crossOrigin: 'anonymous',
 
 		/**
 		 * @param {string} crossOrigin
@@ -876,7 +876,7 @@ THREE.MMDLoader = ( function () {
 
 		constructor: MaterialBuilder,
 
-		crossOrigin: undefined,
+		crossOrigin: 'anonymous',
 
 		texturePath: undefined,
 
@@ -946,7 +946,7 @@ THREE.MMDLoader = ( function () {
 				params.shininess = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )
 				params.transparent = params.opacity !== 1.0;
 
-				// 
+				//
 
 				params.skinning = geometry.bones.length > 0 ? true : false;
 				params.morphTargets = geometry.morphTargets.length > 0 ? true : false;

+ 2 - 1
examples/js/loaders/MTLLoader.js

@@ -208,11 +208,12 @@ THREE.MTLLoader.MaterialCreator.prototype = {
 
 	constructor: THREE.MTLLoader.MaterialCreator,
 
-	crossOrigin: 'Anonymous',
+	crossOrigin: 'anonymous',
 
 	setCrossOrigin: function ( value ) {
 
 		this.crossOrigin = value;
+		return this;
 
 	},
 

+ 0 - 752
examples/js/loaders/UTF8Loader.js

@@ -1,752 +0,0 @@
-/**
- * Loader for UTF8 version2 (after r51) encoded models generated by:
- *	http://code.google.com/p/webgl-loader/
- *
- * Code to load/decompress mesh is taken from r100 of this webgl-loader
- */
-
-THREE.UTF8Loader = function () {};
-
-/**
- * Load UTF8 encoded model
- * @param jsonUrl - URL from which to load json containing information about model
- * @param callback - Callback(THREE.Object3D) on successful loading of model
- * @param options - options on how to load model (see THREE.MTLLoader.MaterialCreator for basic options)
- *                  Additional options include
- *                   geometryBase: Base url from which to load referenced geometries
- *                   materialBase: Base url from which to load referenced textures
- */
-
-THREE.UTF8Loader.prototype.load = function ( jsonUrl, callback, options ) {
-
-	this.downloadModelJson( jsonUrl, callback, options );
-
-};
-
-// BufferGeometryCreator
-
-THREE.UTF8Loader.BufferGeometryCreator = function () {
-};
-
-THREE.UTF8Loader.BufferGeometryCreator.prototype.create = function ( attribArray, indices ) {
-
-	var ntris = indices.length / 3;
-
-	var geometry = new THREE.BufferGeometry();
-
-	var positions = new Float32Array( ntris * 3 * 3 );
-	var normals = new Float32Array( ntris * 3 * 3 );
-	var uvs = new Float32Array( ntris * 3 * 2 );
-
-	var i, j, offset;
-
-	var end = attribArray.length;
-	var stride = 8;
-
-	// extract positions
-
-	j = 0;
-	offset = 0;
-
-	for ( i = offset; i < end; i += stride ) {
-
-		positions[ j ++ ] = attribArray[ i ];
-		positions[ j ++ ] = attribArray[ i + 1 ];
-		positions[ j ++ ] = attribArray[ i + 2 ];
-
-	}
-
-	// extract uvs
-
-	j = 0;
-	offset = 3;
-
-	for ( i = offset; i < end; i += stride ) {
-
-		uvs[ j ++ ] = attribArray[ i ];
-		uvs[ j ++ ] = attribArray[ i + 1 ];
-
-	}
-
-	// extract normals
-
-	j = 0;
-	offset = 5;
-
-	for ( i = offset; i < end; i += stride ) {
-
-		normals[ j ++ ] = attribArray[ i ];
-		normals[ j ++ ] = attribArray[ i + 1 ];
-		normals[ j ++ ] = attribArray[ i + 2 ];
-
-	}
-
-	geometry.setIndex( new THREE.BufferAttribute( indices, 1 ) );
-	geometry.addAttribute( 'position', new THREE.BufferAttribute( positions, 3 ) );
-	geometry.addAttribute( 'normal', new THREE.BufferAttribute( normals, 3 ) );
-	geometry.addAttribute( 'uv', new THREE.BufferAttribute( uvs, 2 ) );
-
-	geometry.computeBoundingSphere();
-
-	return geometry;
-
-};
-
-
-// UTF-8 decoder from webgl-loader (r100)
-// http://code.google.com/p/webgl-loader/
-
-// Model manifest description. Contains objects like:
-// name: {
-//   materials: { 'material_name': { ... } ... },
-//   decodeParams: {
-//     decodeOffsets: [ ... ],
-//     decodeScales: [ ... ],
-//   },
-//   urls: {
-//     'url': [
-//       { material: 'material_name',
-//         attribRange: [#, #],
-//         indexRange: [#, #],
-//         names: [ 'object names' ... ],
-//         lengths: [#, #, # ... ]
-//       }
-//     ],
-//     ...
-//   }
-// }
-
-var DEFAULT_DECODE_PARAMS = {
-
-	decodeOffsets: [ - 4095, - 4095, - 4095, 0, 0, - 511, - 511, - 511 ],
-	decodeScales: [ 1 / 8191, 1 / 8191, 1 / 8191, 1 / 1023, 1 / 1023, 1 / 1023, 1 / 1023, 1 / 1023 ]
-
-	// TODO: normal decoding? (see walt.js)
-	// needs to know: input, output (from vertex format!)
-	//
-	// Should split attrib/index.
-	// 1) Decode position and non-normal attributes.
-	// 2) Decode indices, computing normals
-	// 3) Maybe normalize normals? Only necessary for refinement, or fixed?
-	// 4) Maybe refine normals? Should this be part of regular refinement?
-	// 5) Morphing
-
-};
-
-// Triangle strips!
-
-// TODO: will it be an optimization to specialize this method at
-// runtime for different combinations of stride, decodeOffset and
-// decodeScale?
-
-THREE.UTF8Loader.prototype.decompressAttribsInner_ = function ( str, inputStart, inputEnd,
-	output, outputStart, stride, decodeOffset, decodeScale ) {
-
-	var prev = 0;
-
-	for ( var j = inputStart; j < inputEnd; j ++ ) {
-
-		var code = str.charCodeAt( j );
-		prev += ( code >> 1 ) ^ ( - ( code & 1 ) );
-
-		output[ outputStart ] = decodeScale * ( prev + decodeOffset );
-		outputStart += stride;
-
-	}
-
-};
-
-THREE.UTF8Loader.prototype.decompressIndices_ = function ( str, inputStart, numIndices, output, outputStart ) {
-
-	var highest = 0;
-
-	for ( var i = 0; i < numIndices; i ++ ) {
-
-		var code = str.charCodeAt( inputStart ++ );
-
-		output[ outputStart ++ ] = highest - code;
-
-		if ( code === 0 ) {
-
-			highest ++;
-
-		}
-
-	}
-
-};
-
-THREE.UTF8Loader.prototype.decompressAABBs_ = function ( str, inputStart, numBBoxen, decodeOffsets, decodeScales ) {
-
-	var numFloats = 6 * numBBoxen;
-
-	var inputEnd = inputStart + numFloats;
-	var outputStart = 0;
-
-	var bboxen = new Float32Array( numFloats );
-
-	for ( var i = inputStart; i < inputEnd; i += 6 ) {
-
-		var minX = str.charCodeAt( i + 0 ) + decodeOffsets[ 0 ];
-		var minY = str.charCodeAt( i + 1 ) + decodeOffsets[ 1 ];
-		var minZ = str.charCodeAt( i + 2 ) + decodeOffsets[ 2 ];
-
-		var radiusX = ( str.charCodeAt( i + 3 ) + 1 ) >> 1;
-		var radiusY = ( str.charCodeAt( i + 4 ) + 1 ) >> 1;
-		var radiusZ = ( str.charCodeAt( i + 5 ) + 1 ) >> 1;
-
-		bboxen[ outputStart ++ ] = decodeScales[ 0 ] * ( minX + radiusX );
-		bboxen[ outputStart ++ ] = decodeScales[ 1 ] * ( minY + radiusY );
-		bboxen[ outputStart ++ ] = decodeScales[ 2 ] * ( minZ + radiusZ );
-
-		bboxen[ outputStart ++ ] = decodeScales[ 0 ] * radiusX;
-		bboxen[ outputStart ++ ] = decodeScales[ 1 ] * radiusY;
-		bboxen[ outputStart ++ ] = decodeScales[ 2 ] * radiusZ;
-
-	}
-
-	return bboxen;
-
-};
-
-THREE.UTF8Loader.prototype.decompressMesh = function ( str, meshParams, decodeParams, name, idx, callback ) {
-
-	// Extract conversion parameters from attribArrays.
-
-	var stride = decodeParams.decodeScales.length;
-
-	var decodeOffsets = decodeParams.decodeOffsets;
-	var decodeScales = decodeParams.decodeScales;
-
-	var attribStart = meshParams.attribRange[ 0 ];
-	var numVerts = meshParams.attribRange[ 1 ];
-
-	// Decode attributes.
-
-	var inputOffset = attribStart;
-	var attribsOut = new Float32Array( stride * numVerts );
-
-	for ( var j = 0; j < stride; j ++ ) {
-
-		var end = inputOffset + numVerts;
-
-		var decodeScale = decodeScales[ j ];
-
-		if ( decodeScale ) {
-
-			// Assume if decodeScale is never set, simply ignore the
-			// attribute.
-
-			this.decompressAttribsInner_( str, inputOffset, end, attribsOut, j, stride, decodeOffsets[ j ], decodeScale );
-
-		}
-
-		inputOffset = end;
-
-	}
-
-	var numIndices = 3 * meshParams.indexRange[ 1 ];
-
-	var indicesOut = new Uint16Array( numIndices );
-
-	this.decompressIndices_( str, inputOffset, numIndices, indicesOut, 0 );
-
-	// Decode bboxen.
-
-	var bboxen = undefined;
-	var bboxOffset = meshParams.bboxes;
-
-	if ( bboxOffset ) {
-
-		bboxen = this.decompressAABBs_( str, bboxOffset, meshParams.names.length, decodeOffsets, decodeScales );
-
-	}
-
-	callback( name, idx, attribsOut, indicesOut, bboxen, meshParams );
-
-};
-
-THREE.UTF8Loader.prototype.copyAttrib = function ( stride, attribsOutFixed, lastAttrib, index ) {
-
-	for ( var j = 0; j < stride; j ++ ) {
-
-		lastAttrib[ j ] = attribsOutFixed[ stride * index + j ];
-
-	}
-
-};
-
-THREE.UTF8Loader.prototype.decodeAttrib2 = function ( str, stride, decodeOffsets, decodeScales, deltaStart,
-	numVerts, attribsOut, attribsOutFixed, lastAttrib, index ) {
-
-	for ( var j = 0; j < 5; j ++ ) {
-
-		var code = str.charCodeAt( deltaStart + numVerts * j + index );
-		var delta = ( code >> 1 ) ^ ( - ( code & 1 ) );
-
-		lastAttrib[ j ] += delta;
-		attribsOutFixed[ stride * index + j ] = lastAttrib[ j ];
-		attribsOut[ stride * index + j ] = decodeScales[ j ] * ( lastAttrib[ j ] + decodeOffsets[ j ] );
-
-	}
-
-};
-
-THREE.UTF8Loader.prototype.accumulateNormal = function ( i0, i1, i2, attribsOutFixed, crosses ) {
-
-	var p0x = attribsOutFixed[ 8 * i0 ];
-	var p0y = attribsOutFixed[ 8 * i0 + 1 ];
-	var p0z = attribsOutFixed[ 8 * i0 + 2 ];
-
-	var p1x = attribsOutFixed[ 8 * i1 ];
-	var p1y = attribsOutFixed[ 8 * i1 + 1 ];
-	var p1z = attribsOutFixed[ 8 * i1 + 2 ];
-
-	var p2x = attribsOutFixed[ 8 * i2 ];
-	var p2y = attribsOutFixed[ 8 * i2 + 1 ];
-	var p2z = attribsOutFixed[ 8 * i2 + 2 ];
-
-	p1x -= p0x;
-	p1y -= p0y;
-	p1z -= p0z;
-
-	p2x -= p0x;
-	p2y -= p0y;
-	p2z -= p0z;
-
-	p0x = p1y * p2z - p1z * p2y;
-	p0y = p1z * p2x - p1x * p2z;
-	p0z = p1x * p2y - p1y * p2x;
-
-	crosses[ 3 * i0 ] += p0x;
-	crosses[ 3 * i0 + 1 ] += p0y;
-	crosses[ 3 * i0 + 2 ] += p0z;
-
-	crosses[ 3 * i1 ] += p0x;
-	crosses[ 3 * i1 + 1 ] += p0y;
-	crosses[ 3 * i1 + 2 ] += p0z;
-
-	crosses[ 3 * i2 ] += p0x;
-	crosses[ 3 * i2 + 1 ] += p0y;
-	crosses[ 3 * i2 + 2 ] += p0z;
-
-};
-
-THREE.UTF8Loader.prototype.decompressMesh2 = function ( str, meshParams, decodeParams, name, idx, callback ) {
-
-	var MAX_BACKREF = 96;
-
-	// Extract conversion parameters from attribArrays.
-
-	var stride = decodeParams.decodeScales.length;
-
-	var decodeOffsets = decodeParams.decodeOffsets;
-	var decodeScales = decodeParams.decodeScales;
-
-	var deltaStart = meshParams.attribRange[ 0 ];
-	var numVerts = meshParams.attribRange[ 1 ];
-
-	var codeStart = meshParams.codeRange[ 0 ];
-
-	var numIndices = 3 * meshParams.codeRange[ 2 ];
-
-	var indicesOut = new Uint16Array( numIndices );
-
-	var crosses = new Int32Array( 3 * numVerts );
-
-	var lastAttrib = new Uint16Array( stride );
-
-	var attribsOutFixed = new Uint16Array( stride * numVerts );
-	var attribsOut = new Float32Array( stride * numVerts );
-
-	var highest = 0;
-	var outputStart = 0;
-
-	for ( var i = 0; i < numIndices; i += 3 ) {
-
-		var code = str.charCodeAt( codeStart ++ );
-
-		var max_backref = Math.min( i, MAX_BACKREF );
-
-		if ( code < max_backref ) {
-
-  		// Parallelogram
-
-			var winding = code % 3;
-			var backref = i - ( code - winding );
-			var i0, i1, i2;
-
-			switch ( winding ) {
-
-				case 0:
-
-					i0 = indicesOut[ backref + 2 ];
-					i1 = indicesOut[ backref + 1 ];
-					i2 = indicesOut[ backref + 0 ];
-					break;
-
-				case 1:
-
-					i0 = indicesOut[ backref + 0 ];
-					i1 = indicesOut[ backref + 2 ];
-					i2 = indicesOut[ backref + 1 ];
-					break;
-
-				case 2:
-
-					i0 = indicesOut[ backref + 1 ];
-					i1 = indicesOut[ backref + 0 ];
-					i2 = indicesOut[ backref + 2 ];
-					break;
-
-			}
-
-			indicesOut[ outputStart ++ ] = i0;
-			indicesOut[ outputStart ++ ] = i1;
-
-			code = str.charCodeAt( codeStart ++ );
-
-			var index = highest - code;
-			indicesOut[ outputStart ++ ] = index;
-
-			if ( code === 0 ) {
-
-				for ( var j = 0; j < 5; j ++ ) {
-
-					var deltaCode = str.charCodeAt( deltaStart + numVerts * j + highest );
-
-					var prediction = ( ( deltaCode >> 1 ) ^ ( - ( deltaCode & 1 ) ) ) +
-						attribsOutFixed[ stride * i0 + j ] +
-						attribsOutFixed[ stride * i1 + j ] -
-						attribsOutFixed[ stride * i2 + j ];
-
-					lastAttrib[ j ] = prediction;
-
-					attribsOutFixed[ stride * highest + j ] = prediction;
-					attribsOut[ stride * highest + j ] = decodeScales[ j ] * ( prediction + decodeOffsets[ j ] );
-
-				}
-
-				highest ++;
-
-			} else {
-
-				this.copyAttrib( stride, attribsOutFixed, lastAttrib, index );
-
-			}
-
-			this.accumulateNormal( i0, i1, index, attribsOutFixed, crosses );
-
-		} else {
-
-			// Simple
-
-			var index0 = highest - ( code - max_backref );
-
-			indicesOut[ outputStart ++ ] = index0;
-
-			if ( code === max_backref ) {
-
-				this.decodeAttrib2( str, stride, decodeOffsets, decodeScales, deltaStart,
-					numVerts, attribsOut, attribsOutFixed, lastAttrib, highest ++ );
-
-			} else {
-
-				this.copyAttrib( stride, attribsOutFixed, lastAttrib, index0 );
-
-			}
-
-			code = str.charCodeAt( codeStart ++ );
-
-			var index1 = highest - code;
-			indicesOut[ outputStart ++ ] = index1;
-
-			if ( code === 0 ) {
-
-				this.decodeAttrib2( str, stride, decodeOffsets, decodeScales, deltaStart,
-					numVerts, attribsOut, attribsOutFixed, lastAttrib, highest ++ );
-
-			} else {
-
-				this.copyAttrib( stride, attribsOutFixed, lastAttrib, index1 );
-
-			}
-
-			code = str.charCodeAt( codeStart ++ );
-
-			var index2 = highest - code;
-			indicesOut[ outputStart ++ ] = index2;
-
-			if ( code === 0 ) {
-
-				for ( var j = 0; j < 5; j ++ ) {
-
-					lastAttrib[ j ] = ( attribsOutFixed[ stride * index0 + j ] + attribsOutFixed[ stride * index1 + j ] ) / 2;
-
-				}
-
-				this.decodeAttrib2( str, stride, decodeOffsets, decodeScales, deltaStart,
-					numVerts, attribsOut, attribsOutFixed, lastAttrib, highest ++ );
-
-			} else {
-
-				this.copyAttrib( stride, attribsOutFixed, lastAttrib, index2 );
-
-			}
-
-			this.accumulateNormal( index0, index1, index2, attribsOutFixed, crosses );
-
-		}
-
-	}
-
-	for ( var i = 0; i < numVerts; i ++ ) {
-
-		var nx = crosses[ 3 * i ];
-		var ny = crosses[ 3 * i + 1 ];
-		var nz = crosses[ 3 * i + 2 ];
-
-		var norm = 511.0 / Math.sqrt( nx * nx + ny * ny + nz * nz );
-
-		var cx = str.charCodeAt( deltaStart + 5 * numVerts + i );
-		var cy = str.charCodeAt( deltaStart + 6 * numVerts + i );
-		var cz = str.charCodeAt( deltaStart + 7 * numVerts + i );
-
-		attribsOut[ stride * i + 5 ] = norm * nx + ( ( cx >> 1 ) ^ ( - ( cx & 1 ) ) );
-		attribsOut[ stride * i + 6 ] = norm * ny + ( ( cy >> 1 ) ^ ( - ( cy & 1 ) ) );
-		attribsOut[ stride * i + 7 ] = norm * nz + ( ( cz >> 1 ) ^ ( - ( cz & 1 ) ) );
-
-	}
-
-	callback( name, idx, attribsOut, indicesOut, undefined, meshParams );
-
-};
-
-THREE.UTF8Loader.prototype.downloadMesh = function ( path, name, meshEntry, decodeParams, callback ) {
-
-	var loader = this;
-	var idx = 0;
-
-	function onprogress( data ) {
-
-		while ( idx < meshEntry.length ) {
-
-			var meshParams = meshEntry[ idx ];
-			var indexRange = meshParams.indexRange;
-
-			if ( indexRange ) {
-
-				var meshEnd = indexRange[ 0 ] + 3 * indexRange[ 1 ];
-
-				if ( data.length < meshEnd ) break;
-
-				loader.decompressMesh( data, meshParams, decodeParams, name, idx, callback );
-
-			} else {
-
-				var codeRange = meshParams.codeRange;
-				var meshEnd = codeRange[ 0 ] + codeRange[ 1 ];
-
-				if ( data.length < meshEnd ) break;
-
-				loader.decompressMesh2( data, meshParams, decodeParams, name, idx, callback );
-
-			}
-
-			++ idx;
-
-		}
-
-	}
-
-	getHttpRequest( path, function ( data ) {
-
-		onprogress( data );
-
-		// TODO: handle errors.
-
-	} );
-
-};
-
-THREE.UTF8Loader.prototype.downloadMeshes = function ( path, meshUrlMap, decodeParams, callback ) {
-
-	for ( var url in meshUrlMap ) {
-
-		var meshEntry = meshUrlMap[ url ];
-		this.downloadMesh( path + url, url, meshEntry, decodeParams, callback );
-
-	}
-
-};
-
-THREE.UTF8Loader.prototype.createMeshCallback = function ( materialBaseUrl, loadModelInfo, allDoneCallback ) {
-
-	var nCompletedUrls = 0;
-	var nExpectedUrls = 0;
-
-	var expectedMeshesPerUrl = {};
-	var decodedMeshesPerUrl = {};
-
-	var modelParts = {};
-
-	var meshUrlMap = loadModelInfo.urls;
-
-	for ( var url in meshUrlMap ) {
-
-		expectedMeshesPerUrl[ url ] = meshUrlMap[ url ].length;
-		decodedMeshesPerUrl[ url ] = 0;
-
-		nExpectedUrls ++;
-
-		modelParts[ url ] = new THREE.Object3D();
-
-	}
-
-	var model = new THREE.Object3D();
-
-	// Prepare materials first...
-
-	var materialCreator = new THREE.MTLLoader.MaterialCreator( materialBaseUrl, loadModelInfo.options );
-	materialCreator.setMaterials( loadModelInfo.materials );
-
-	materialCreator.preload();
-
-	// Create callback for creating mesh parts
-
-	var bufferGeometryCreator = new THREE.UTF8Loader.BufferGeometryCreator();
-
-	var meshCallback = function ( name, idx, attribArray, indexArray, bboxen, meshParams ) {
-
-		// Got ourselves a new mesh
-
-		// name identifies this part of the model (url)
-		// idx is the mesh index of this mesh of the part
-		// attribArray defines the vertices
-		// indexArray defines the faces
-		// bboxen defines the bounding box
-		// meshParams contains the material info
-
-		var geometry = bufferGeometryCreator.create( attribArray, indexArray );
-		var material = materialCreator.create( meshParams.material );
-
-		var mesh = new THREE.Mesh( geometry, material );
-		modelParts[ name ].add( mesh );
-
-		//model.add(new THREE.Mesh(geometry, material));
-
-		decodedMeshesPerUrl[ name ] ++;
-
-		if ( decodedMeshesPerUrl[ name ] === expectedMeshesPerUrl[ name ] ) {
-
-			nCompletedUrls ++;
-
-			model.add( modelParts[ name ] );
-
-			if ( nCompletedUrls === nExpectedUrls ) {
-
-				// ALL DONE!!!
-
-				allDoneCallback( model );
-
-			}
-
-		}
-
-	};
-
-	return meshCallback;
-
-};
-
-THREE.UTF8Loader.prototype.downloadModel = function ( geometryBase, materialBase, model, callback ) {
-
-	var meshCallback = this.createMeshCallback( materialBase, model, callback );
-	this.downloadMeshes( geometryBase, model.urls, model.decodeParams, meshCallback );
-
-};
-
-THREE.UTF8Loader.prototype.downloadModelJson = function ( jsonUrl, callback, options ) {
-
-	getJsonRequest( jsonUrl, function ( loaded ) {
-
-		if ( ! loaded.decodeParams ) {
-
-			if ( options && options.decodeParams ) {
-
-				loaded.decodeParams = options.decodeParams;
-
-			} else {
-
-				loaded.decodeParams = DEFAULT_DECODE_PARAMS;
-
-			}
-
-		}
-
-		loaded.options = options;
-
-		var geometryBase = jsonUrl.substr( 0, jsonUrl.lastIndexOf( "/" ) + 1 );
-		var materialBase = geometryBase;
-
-		if ( options && options.geometryBase ) {
-
-			geometryBase = options.geometryBase;
-
-			if ( geometryBase.charAt( geometryBase.length - 1 ) !== "/" ) {
-
-				geometryBase = geometryBase + "/";
-
-			}
-
-		}
-
-		if ( options && options.materialBase ) {
-
-			materialBase = options.materialBase;
-
-			if ( materialBase.charAt( materialBase.length - 1 ) !== "/" ) {
-
-				materialBase = materialBase + "/";
-
-			}
-
-		}
-
-		this.downloadModel( geometryBase, materialBase, loaded, callback );
-
-	}.bind( this ) );
-
-};
-
-// XMLHttpRequest stuff
-
-function getHttpRequest( url, onload, opt_onprogress ) {
-
-	var req = new THREE.FileLoader();
-	req.load( url, onload, opt_onprogress );
-
-}
-
-function getJsonRequest( url, onjson ) {
-
-	getHttpRequest( url, function ( e ) {
-
-		onjson( JSON.parse( e ) );
-
-	},
-	function () {} );
-
-}
-
-function addListeners( dom, listeners ) {
-
-	// TODO: handle event capture, object binding.
-
-	for ( var key in listeners ) {
-
-		dom.addEventListener( key, listeners[ key ] );
-
-	}
-
-}

+ 2 - 1
examples/js/loaders/VRMLLoader.js

@@ -26,7 +26,7 @@ THREE.VRMLLoader.prototype = {
 
 	recordingFieldname: null,
 
-	crossOrigin: 'Anonymous',
+	crossOrigin: 'anonymous',
 
 	load: function ( url, onLoad, onProgress, onError ) {
 
@@ -44,6 +44,7 @@ THREE.VRMLLoader.prototype = {
 	setCrossOrigin: function ( value ) {
 
 		this.crossOrigin = value;
+		return this;
 
 	},
 

+ 1 - 1
examples/js/loaders/VRMLoader.js

@@ -26,7 +26,7 @@ THREE.VRMLoader = ( function () {
 
 		constructor: VRMLoader,
 
-		crossOrigin: 'Anonymous',
+		crossOrigin: 'anonymous',
 
 		load: function ( url, onLoad, onProgress, onError ) {
 

+ 2 - 1
examples/js/loaders/deprecated/LegacyGLTFLoader.js

@@ -17,7 +17,7 @@ THREE.LegacyGLTFLoader = ( function () {
 
 		constructor: LegacyGLTFLoader,
 
-		crossOrigin: 'Anonymous',
+		crossOrigin: 'anonymous',
 
 		load: function ( url, onLoad, onProgress, onError ) {
 
@@ -40,6 +40,7 @@ THREE.LegacyGLTFLoader = ( function () {
 		setCrossOrigin: function ( value ) {
 
 			this.crossOrigin = value;
+			return this;
 
 		},
 

+ 2 - 2
examples/js/vr/WebVR.js

@@ -78,7 +78,7 @@ var WEBVR = {
 
 				if ( currentSession === null ) {
 
-					device.requestSession( { immersive: true } ).then( onSessionStarted );
+					device.requestSession( { exclusive: true } ).then( onSessionStarted );
 
 				} else {
 
@@ -137,7 +137,7 @@ var WEBVR = {
 
 			navigator.xr.requestDevice().then( function ( device ) {
 
-				device.supportsSession( { immersive: true } ).then( function () {
+				device.supportsSession( { exclusive: true } ).then( function () {
 
 					showEnterXR( device );
 

+ 0 - 0
examples/js/vr/DaydreamController.js → examples/js/vr/deprecated/DaydreamController.js


+ 0 - 0
examples/js/vr/GearVRController.js → examples/js/vr/deprecated/GearVRController.js


+ 0 - 21
examples/models/obj/gear_vr_controller/LICENSE.txt

@@ -1,21 +0,0 @@
-The MIT License
-
-Copyright © 2015-2017 A-Frame authors.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.

+ 0 - 22
examples/models/obj/gear_vr_controller/gear_vr_controller.mtl

@@ -1,22 +0,0 @@
-# Gear VR Controller MTL
-newmtl Base
-Kd 0.0911392 0.0911392 0.0911392
-Ns 256
-d 1
-illum 2
-Ka 0 0 0
-Ks 0.04 0.04 0.04
-newmtl Touchpad
-Kd 0.172688 0.172688 0.172688
-Ns 256
-d 1
-illum 2
-Ka 0 0 0
-Ks 0.04 0.04 0.04
-newmtl Trigger
-Kd 0.172688 0.172688 0.172688
-Ns 256
-d 1
-illum 2
-Ka 0 0 0
-Ks 0.04 0.04 0.04

+ 0 - 1064
examples/models/obj/gear_vr_controller/gear_vr_controller.obj

@@ -1,1064 +0,0 @@
-# Gear VR Controller
-# Units	meters
-
-o Base
-v 0.0120377 -0.0217958 0.0802467
-v 0.0097514 -0.0243733 0.085021
-v 0.00472159 -0.026189 0.0883812
-v 0.00251746 -0.0380262 0.0722965
-v 0.00269244 -0.0383627 0.0773935
-v 0.0041137 -0.0363887 0.0818603
-v 0.00799378 -0.0358757 0.0773606
-v 0.011047 -0.0321853 0.0741615
-v 0.0110994 -0.0300889 0.0806922
-v 0.00323768 -0.0332681 0.0857424
-v 0.00779541 -0.0325099 0.0837432
-v 0.0125704 -0.0284915 0.0769487
-v 0.0070908 -0.0363513 0.0727187
-v 0.0122399 0.00754624 0.0258895
-v 0.0111836 -0.00345728 0.0207223
-v 0.00575354 -0.01088 -0.00438047
-v 0 -0.0115812 -0.00562427
-v 0.0181079 0.00995213 -0.00106643
-v 0.0116229 0.00995217 -0.0139021
-v 0 0.00995163 -0.0183425
-v 0.00689219 -0.0113732 0.00103067
-v 0 -0.0121148 0.0102695
-v 0.0160727 0.00995237 -0.0081
-v 0.0169152 -0.00216802 -0.00389487
-v 0.0168956 0.0100554 0.00845563
-v 0.0154117 -0.00332344 0.00842671
-v 0.0126428 0.00094904 -0.0149559
-v 0 -0.0125775 -0.00027984
-v 0.0195474 0.00395938 -0.000436593
-v 0.00574342 -0.0113584 0.0097881
-v 0.0175192 0.00788466 0.00998393
-v 0.0187872 0.00410691 0.00722581
-v 0.0139964 -0.00264663 -0.00927289
-v 0.0173328 -0.00263693 0.00246136
-v 0.0102034 -0.0092698 -0.00154566
-v 0.0172801 0.00341704 -0.0085318
-v 0.006218 0.00995197 -0.0171755
-v 0 0.00761475 -0.0205764
-v 0.00653162 0.00762267 -0.019446
-v 0.0153456 0.00762246 -0.0118764
-v 0.010847 0.00761475 -0.0166483
-v 0.0195131 0.00760949 0.00353866
-v 0.0185358 0.00769649 -0.00539745
-v 0.0102 -0.00992829 0.00356989
-v 0.00642435 0.0032985 -0.0201171
-v 0.00974452 0.00179156 -0.0177271
-v 0.0088227 -0.00660134 0.0195079
-v 0.0128939 0.00177954 0.0230278
-v 0 -0.0266 0.0891412
-v 0.0137859 0.00560591 0.0177206
-v 0.0122827 -0.00279898 0.0164583
-v 0.0124171 0.00945384 0.0185667
-v 0 0.00339475 -0.0214264
-v 0.00754595 -0.00744792 -0.0102493
-v 0 -0.0370955 0.0814149
-v 0 -0.0378036 0.0796494
-v 0 -0.0384903 0.0765344
-v 0 0.00759363 0.0258084
-v 0 0.00945384 0.0185667
-v 1.06707e-018 -0.0104048 -0.00704971
-v 0.00871332 -0.00449104 -0.0134489
-v 0.00754595 -0.00153417 -0.0166485
-v 0.00435666 0.000630421 -0.0189907
-v -2.13415e-018 0.00142271 -0.019848
-v 0 -0.0335356 0.0860422
-v 0.00435666 -0.00961251 -0.00790704
-v 0 -0.009703 0.0191341
-v 0 -0.0105182 0.0159021
-v 0.00905767 -0.00711343 0.0160021
-v 0 -0.0380536 0.0732949
-v 0.00482963 -0.00888521 0.0189157
-v 0.00515124 -0.00977728 0.0160612
-v -0.0120377 -0.0217958 0.0802467
-v -0.0097514 -0.0243733 0.085021
-v -0.00472159 -0.026189 0.0883812
-v -0.00251746 -0.0380262 0.0722965
-v -0.00269244 -0.0383627 0.0773935
-v -0.0041137 -0.0363887 0.0818603
-v -0.00799378 -0.0358757 0.0773606
-v -0.011047 -0.0321853 0.0741615
-v -0.0110994 -0.0300889 0.0806922
-v -0.00323768 -0.0332681 0.0857424
-v -0.00779541 -0.0325099 0.0837432
-v -0.0125704 -0.0284915 0.0769487
-v -0.0070908 -0.0363513 0.0727187
-v -0.0122399 0.00754624 0.0258895
-v -0.0111836 -0.00345728 0.0207223
-v -0.00575354 -0.01088 -0.00438047
-v -0.0181079 0.00995213 -0.00106643
-v -0.0116229 0.00995217 -0.0139021
-v -0.00689219 -0.0113732 0.00103067
-v -0.0160727 0.00995237 -0.0081
-v -0.0169152 -0.00216802 -0.00389487
-v -0.0168956 0.0100554 0.00845563
-v -0.0154117 -0.00332344 0.00842671
-v -0.0126428 0.00094904 -0.0149559
-v -0.0195474 0.00395938 -0.000436593
-v -0.00574342 -0.0113584 0.0097881
-v -0.0175192 0.00788466 0.00998393
-v -0.0187872 0.00410691 0.00722581
-v -0.0139964 -0.00264663 -0.00927289
-v -0.0173328 -0.00263693 0.00246136
-v -0.0102034 -0.0092698 -0.00154566
-v -0.0172801 0.00341704 -0.0085318
-v -0.006218 0.00995197 -0.0171755
-v -0.00653162 0.00762267 -0.019446
-v -0.0153456 0.00762246 -0.0118764
-v -0.010847 0.00761475 -0.0166483
-v -0.0195131 0.00760949 0.00353866
-v -0.0185358 0.00769649 -0.00539745
-v -0.0102 -0.00992829 0.00356989
-v -0.00642435 0.0032985 -0.0201171
-v -0.00974452 0.00179156 -0.0177271
-v -0.0088227 -0.00660134 0.0195079
-v -0.0128939 0.00177954 0.0230278
-v -0.0137859 0.00560591 0.0177206
-v -0.0122827 -0.00279898 0.0164583
-v -0.0124171 0.00945384 0.0185667
-v -0.00754595 -0.00744792 -0.0102493
-v -0.00871332 -0.00449104 -0.0134489
-v -0.00754595 -0.00153417 -0.0166485
-v -0.00435666 0.000630421 -0.0189907
-v -0.00435666 -0.00961251 -0.00790704
-v -0.00905767 -0.00711343 0.0160021
-v -0.00482963 -0.00888521 0.0189157
-v -0.00515124 -0.00977728 0.0160612
-vn 0.995614 -0.0475096 0.0805988
-vn 0.994868 0.0884399 0.0491474
-vn 0.987191 0.0115243 0.159123
-vn 0.9447 0.191452 0.266247
-vn 0.639669 -0.745114 0.188756
-vn 0.846744 -0.52524 -0.0845413
-vn 0.85642 -0.397126 0.329902
-vn 0.93036 0.250913 -0.267346
-vn 0.565338 0.823313 -0.050486
-vn 0.957818 0.272286 0.0918948
-vn 0.465751 0.883741 -0.0455838
-vn 0.616383 0.74684 0.249603
-vn 0.89423 -0.195181 -0.402812
-vn 0.982919 -0.163021 -0.0854121
-vn 0.535428 -0.814225 -0.2244
-vn 0.331804 -0.931921 0.146385
-vn 0 -0.998076 -0.0620001
-vn 0.329818 -0.941533 -0.0688207
-vn 0.512036 0.819619 -0.256989
-vn 0.789575 0.261601 -0.5551
-vn 0.375947 0.839243 -0.392855
-vn 0.296759 -0.914533 -0.274889
-vn 0.586353 -0.783701 -0.204947
-vn 0.924245 0.0449264 0.379148
-vn 0.883405 0.275604 0.378995
-vn 0.253575 -0.537792 0.804039
-vn 0.602949 -0.508122 0.615033
-vn 0.408399 -0.350645 0.842768
-vn 0.287541 -0.817212 0.499485
-vn 0.600116 0.330758 -0.728326
-vn 0.906215 -0.419022 -0.05652
-vn 0.874416 -0.443354 0.197063
-vn 0.599262 -0.796837 0.0770437
-vn 0.846816 -0.530479 0.038657
-vn 0.975728 -0.190185 0.108553
-vn 0.947088 -0.164004 0.275912
-vn 0.834639 -0.499096 -0.232985
-vn 0.714519 -0.692013 -0.102865
-vn 0.691382 -0.594329 -0.410809
-vn 0.825381 -0.178809 0.535513
-vn 0.251651 0.807729 -0.533147
-vn 0.356491 0.423197 -0.832957
-vn 0.216677 -0.963193 0.15909
-vn 0.697166 -0.316465 -0.64328
-vn 0 -0.981311 0.192428
-vn 0.818313 -0.489641 0.301026
-vn 0 0.360828 -0.932633
-vn 0 0.967638 -0.252341
-vn 0.492859 -0.782597 -0.380305
-vn 0.116882 -0.951608 -0.28422
-vn 0 -0.395356 0.918528
-vn 0 -0.90804 -0.418884
-vn 0 -0.999989 0.00462657
-vn 0 -0.955654 0.294491
-vn 1.02234e-006 0.879948 0.47507
-vn 0 0.879904 0.475151
-vn -0.000168025 0.879916 0.47513
-vn 0.332534 0.942583 -0.0309582
-vn 0 0.993683 0.112223
-vn 0 0.98768 0.156484
-vn 0.313401 -0.13053 -0.940607
-vn 0.202835 -0.539648 -0.817091
-vn 0 -0.334443 -0.942416
-vn 0.567877 -0.614068 -0.548121
-vn 0.429258 -0.522076 -0.737004
-vn 0.164861 -0.85489 -0.491919
-vn 0.518752 -0.248983 -0.817866
-vn 0 -0.771262 -0.636518
-vn 0 -0.672326 0.740255
-vn 0 -0.890251 0.455471
-vn 0 -0.624868 -0.78073
-vn 0.390092 -0.915476 -0.0986533
-vn 0.627936 -0.741402 0.236684
-vn 3.18038e-008 0.921959 0.387289
-vn -9.82873e-007 0.879948 0.47507
-vn 0 -0.994767 -0.102174
-vn 0 -0.953285 -0.302073
-vn 0.283772 -0.917438 0.278893
-vn 0 -0.965967 0.258665
-vn 0.0007921 0.944877 0.327423
-vn -8.06992e-005 0.879829 0.47529
-vn -0.995614 -0.0475096 0.0805988
-vn -0.987191 0.0115243 0.159123
-vn -0.994868 0.0884399 0.0491474
-vn -0.9447 0.191452 0.266247
-vn -0.639669 -0.745114 0.188756
-vn -0.85642 -0.397126 0.329902
-vn -0.846744 -0.52524 -0.0845413
-vn -0.93036 0.250913 -0.267346
-vn -0.957818 0.272286 0.0918948
-vn -0.565338 0.823313 -0.050486
-vn -0.465751 0.883741 -0.0455838
-vn -0.616383 0.74684 0.249603
-vn -0.89423 -0.195181 -0.402812
-vn -0.982919 -0.163021 -0.0854121
-vn -0.535428 -0.814225 -0.2244
-vn -0.331804 -0.931921 0.146385
-vn -0.329818 -0.941533 -0.0688207
-vn -0.512036 0.819619 -0.256989
-vn -0.375947 0.839243 -0.392855
-vn -0.789575 0.261601 -0.5551
-vn -0.296759 -0.914533 -0.274889
-vn -0.586353 -0.783701 -0.204947
-vn -0.924245 0.0449264 0.379148
-vn -0.883405 0.275604 0.378995
-vn -0.253575 -0.537792 0.804039
-vn -0.408399 -0.350645 0.842768
-vn -0.602949 -0.508122 0.615033
-vn -0.287541 -0.817212 0.499485
-vn -0.600116 0.330758 -0.728326
-vn -0.906215 -0.419022 -0.05652
-vn -0.874416 -0.443354 0.197063
-vn -0.599262 -0.796837 0.0770437
-vn -0.846816 -0.530479 0.038657
-vn -0.975728 -0.190185 0.108553
-vn -0.947088 -0.164004 0.275912
-vn -0.834639 -0.499096 -0.232985
-vn -0.714519 -0.692013 -0.102865
-vn -0.691382 -0.594329 -0.410809
-vn -0.825381 -0.178809 0.535513
-vn -0.251651 0.807729 -0.533147
-vn -0.356491 0.423197 -0.832957
-vn -0.216677 -0.963193 0.15909
-vn -0.697166 -0.316465 -0.64328
-vn -0.818313 -0.489641 0.301026
-vn -0.492859 -0.782597 -0.380305
-vn -0.116882 -0.951608 -0.28422
-vn 0.000168025 0.879916 0.47513
-vn -0.332534 0.942583 -0.0309582
-vn -0.313401 -0.13053 -0.940607
-vn -0.202835 -0.539648 -0.817091
-vn -0.567877 -0.614068 -0.548121
-vn -0.429258 -0.522076 -0.737004
-vn -0.164861 -0.85489 -0.491919
-vn -0.518752 -0.248983 -0.817866
-vn -0.390092 -0.915476 -0.0986533
-vn -0.627936 -0.741402 0.236684
-vn -0.000792047 0.944877 0.327423
-vn -0.283772 -0.917438 0.278893
-vn 8.06992e-005 0.879829 0.47529
-vt 0.872162 0.452749
-vt 0.913444 0.460038
-vt 0.867146 0.871112
-vt 0.928333 0.43788
-vt 0.764421 0.86984
-vt 0.791868 0.850656
-vt 0.803132 0.887395
-vt 0.958767 0.211058
-vt 0.994834 0.255602
-vt 0.964021 0.303967
-vt 0.975682 0.363076
-vt 0.903251 0.195538
-vt 0.939805 0.267778
-vt 0.758951 0.849918
-vt 0.761861 0.361034
-vt 0.719422 0.285526
-vt 0.769811 0.294273
-vt 0.970637 0.158108
-vt 0.914338 0.137693
-vt 0.902921 0.073504
-vt 0.762727 0.254765
-vt 0.797604 0.27411
-vt 0.906403 0.422907
-vt 0.950794 0.365316
-vt 0.742086 0.921408
-vt 0.773458 0.906106
-vt 0.777563 0.976057
-vt 0.743082 0.893261
-vt 0.855378 0.08764
-vt 0.829588 0.4465
-vt 0.842594 0.4112
-vt 0.795897 0.311195
-vt 0.873851 0.296814
-vt 0.81924 0.861306
-vt 0.927306 0.334494
-vt 0.870677 0.248301
-vt 0.797685 0.443929
-vt 0.844497 0.208889
-vt 0.837466 0.931917
-vt 0.815912 0.0253472
-vt 0.798923 0.0652843
-vt 0.733267 0.87182
-vt 0.839794 0.155647
-vt 0.719421 0.365672
-vt 0.859096 0.344206
-vt 0.719424 0.0550654
-vt 0.719423 0.0121951
-vt 0.784942 0.209243
-vt 0.73285 0.850439
-vt 0.719382 0.987805
-vt 0.719422 0.245258
-vt 0.719391 0.868824
-vt 0.71939 0.882628
-vt 0.254599 0.0969414
-vt 0.157625 0.0121951
-vt 0.236181 0.0514575
-vt 0.303546 0.842961
-vt 0.157632 0.678282
-vt 0.293835 0.763108
-vt 0.257686 0.678218
-vt 0.287142 0.901935
-vt 0.251285 0.950582
-vt 0.157632 0.987805
-vt 0.207733 0.978025
-vt 0.784736 0.108258
-vt 0.765649 0.135463
-vt 0.719424 0.101307
-vt 0.800208 0.184744
-vt 0.795216 0.157246
-vt 0.756037 0.225742
-vt 0.815217 0.132305
-vt 0.719422 0.230726
-vt 0.719387 0.923387
-vt 0.719389 0.891307
-vt 0.719424 0.126927
-vt 0.760028 0.443822
-vt 0.799139 0.411358
-vt 0.157631 0.615578
-vt 0.0606522 0.0969434
-vt 0.719419 0.446478
-vt 0.719391 0.85602
-vt 0.760889 0.414795
-vt 0.71942 0.414889
-vt 0.256234 0.614787
-vt 0.195662 0.0194381
-vt 0.566678 0.452732
-vt 0.571636 0.871091
-vt 0.525396 0.460016
-vt 0.510515 0.437862
-vt 0.67436 0.869834
-vt 0.635648 0.887383
-vt 0.646917 0.850646
-vt 0.480083 0.21106
-vt 0.474831 0.303964
-vt 0.444019 0.255602
-vt 0.463172 0.363068
-vt 0.535598 0.195539
-vt 0.499045 0.267778
-vt 0.679833 0.849912
-vt 0.676981 0.361032
-vt 0.669033 0.294272
-vt 0.468213 0.158112
-vt 0.535926 0.0735076
-vt 0.524511 0.137696
-vt 0.676118 0.254765
-vt 0.641241 0.27411
-vt 0.532444 0.422893
-vt 0.488058 0.365307
-vt 0.696688 0.921404
-vt 0.661203 0.976048
-vt 0.665318 0.906098
-vt 0.695695 0.893257
-vt 0.58347 0.0876427
-vt 0.609252 0.446489
-vt 0.596249 0.411191
-vt 0.642947 0.311193
-vt 0.564997 0.296812
-vt 0.619543 0.861291
-vt 0.511544 0.334489
-vt 0.568172 0.248301
-vt 0.641154 0.443921
-vt 0.594351 0.208889
-vt 0.601307 0.931899
-vt 0.622934 0.025349
-vt 0.639924 0.0652861
-vt 0.705513 0.871818
-vt 0.599054 0.155649
-vt 0.57975 0.344201
-vt 0.653904 0.209244
-vt 0.705934 0.850437
-vt 0.0790697 0.0514584
-vt 0.0117188 0.842961
-vt 0.0214292 0.763108
-vt 0.057578 0.678219
-vt 0.0281225 0.901935
-vt 0.0639796 0.950581
-vt 0.107531 0.978025
-vt 0.654112 0.10826
-vt 0.673199 0.135465
-vt 0.638639 0.184746
-vt 0.643632 0.157248
-vt 0.682808 0.225743
-vt 0.623631 0.132307
-vt 0.678809 0.443818
-vt 0.639701 0.411353
-vt 0.0590282 0.614789
-vt 0.67795 0.414792
-vt 0.119589 0.0194391
-mtllib gear_vr_controller.mtl
-usemtl Base
-g Default
-f 48/1/1 14/2/2 1/3/3
-f 52/4/4 14/2/2 48/1/1
-f 7/5/5 8/6/6 9/7/7
-f 43/8/8 18/9/9 42/10/10
-f 18/9/11 25/11/12 42/10/10
-f 36/12/13 43/8/8 29/13/14
-f 8/6/6 7/5/5 13/14/15
-f 30/15/16 28/16/17 21/17/18
-f 23/18/19 40/19/20 19/20/21
-f 16/21/22 35/22/23 21/17/18
-f 52/4/4 50/23/24 25/11/12
-f 31/24/25 25/11/12 50/23/24
-f 10/25/26 11/26/27 3/27/28
-f 7/5/5 11/26/27 6/28/29
-f 41/29/30 19/20/21 40/19/20
-f 15/30/31 51/31/32 48/1/1
-f 50/23/24 48/1/1 51/31/32
-f 44/32/33 35/22/23 34/33/34
-f 44/32/33 21/17/18 35/22/23
-f 12/34/35 8/6/6 15/30/31
-f 31/24/25 50/23/24 32/35/36
-f 34/33/34 24/36/37 29/13/14
-f 47/37/38 8/6/6 13/14/15
-f 33/38/39 36/12/13 24/36/37
-f 2/39/40 3/27/28 11/26/27
-f 19/20/21 41/29/30 37/40/41
-f 39/41/42 37/40/41 41/29/30
-f 40/19/20 23/18/19 43/8/8
-f 29/13/14 42/10/10 32/35/36
-f 50/23/24 52/4/4 48/1/1
-f 43/8/8 42/10/10 29/13/14
-f 13/14/15 7/5/5 5/42/43
-f 32/35/36 34/33/34 29/13/14
-f 43/8/8 36/12/13 40/19/20
-f 27/43/44 40/19/20 36/12/13
-f 21/17/18 44/32/33 30/15/16
-f 10/25/26 6/28/29 11/26/27
-f 9/7/7 11/26/27 7/5/5
-f 18/9/11 43/8/8 23/18/19
-f 5/42/43 7/5/5 6/28/29
-f 31/24/25 42/10/10 25/11/12
-f 21/17/18 28/16/17 16/21/22
-f 22/44/45 28/16/17 30/15/16
-f 29/13/14 24/36/37 36/12/13
-f 24/36/37 35/22/23 33/38/39
-f 34/33/34 32/35/36 26/45/46
-f 35/22/23 24/36/37 34/33/34
-f 15/30/31 48/1/1 12/34/35
-f 34/33/34 26/45/46 44/32/33
-f 38/46/47 20/47/48 39/41/42
-f 37/40/41 39/41/42 20/47/48
-f 11/26/27 9/7/7 2/39/40
-f 16/21/22 54/48/49 35/22/23
-f 1/3/3 2/39/40 12/34/35
-f 9/7/7 12/34/35 2/39/40
-f 36/12/13 33/38/39 27/43/44
-f 15/30/31 8/6/6 47/37/38
-f 51/31/32 26/45/46 50/23/24
-f 32/35/36 50/23/24 26/45/46
-f 13/14/15 5/42/43 4/49/50
-f 31/24/25 32/35/36 42/10/10
-f 12/34/35 9/7/7 8/6/6
-f 12/34/35 48/1/1 1/3/3
-f 10/25/26 3/27/28 49/50/51
-f 28/16/17 17/51/52 16/21/22
-f 57/52/53 5/42/43 56/53/54
-f 1/54/55 49/55/56 2/56/57
-f 18/57/58 59/58/59 25/59/12
-f 25/59/12 59/58/59 52/60/60
-f 23/61/19 19/62/21 20/63/48
-f 19/62/21 37/64/41 20/63/48
-f 45/65/61 63/66/62 53/67/63
-f 33/38/39 61/68/64 27/43/44
-f 62/69/65 27/43/44 61/68/64
-f 33/38/39 35/22/23 54/48/49
-f 66/70/66 16/21/22 17/51/52
-f 27/43/44 62/69/65 46/71/67
-f 46/71/67 62/69/65 63/66/62
-f 63/66/62 45/65/61 46/71/67
-f 61/68/64 33/38/39 54/48/49
-f 17/51/52 60/72/68 66/70/66
-f 65/73/69 10/25/26 49/50/51
-f 6/28/29 10/25/26 65/73/69
-f 65/73/69 55/74/70 6/28/29
-f 64/75/71 53/67/63 63/66/62
-f 71/76/72 13/14/15 4/49/50
-f 13/14/15 71/76/72 47/37/38
-f 69/77/73 51/31/32 47/37/38
-f 51/31/32 15/30/31 47/37/38
-f 59/58/59 18/57/11 20/63/48
-f 23/61/19 20/63/48 18/57/11
-f 16/21/22 66/70/66 54/48/49
-f 58/78/74 73/79/75 1/54/55
-f 71/76/72 4/49/50 67/80/76
-f 70/81/77 67/80/76 4/49/50
-f 30/15/16 72/82/78 22/44/45
-f 68/83/79 22/44/45 72/82/78
-f 1/54/55 14/84/80 58/78/74
-f 2/56/57 49/55/56 3/85/81
-f 39/41/42 45/65/61 38/46/47
-f 53/67/63 38/46/47 45/65/61
-f 72/82/78 69/77/73 71/76/72
-f 47/37/38 71/76/72 69/77/73
-f 68/83/79 72/82/78 67/80/76
-f 71/76/72 67/80/76 72/82/78
-f 40/19/20 27/43/44 41/29/30
-f 46/71/67 41/29/30 27/43/44
-f 72/82/78 30/15/16 69/77/73
-f 44/32/33 69/77/73 30/15/16
-f 41/29/30 46/71/67 39/41/42
-f 45/65/61 39/41/42 46/71/67
-f 6/28/29 55/74/70 5/42/43
-f 56/53/54 5/42/43 55/74/70
-f 52/60/60 59/58/59 14/84/80
-f 58/78/74 14/84/80 59/58/59
-f 44/32/33 26/45/46 69/77/73
-f 51/31/32 69/77/73 26/45/46
-f 5/42/43 57/52/53 4/49/50
-f 70/81/77 4/49/50 57/52/53
-f 115/86/82 73/87/83 86/88/84
-f 118/89/85 115/86/82 86/88/84
-f 79/90/86 81/91/87 80/92/88
-f 110/93/89 109/94/90 89/95/91
-f 89/95/92 109/94/90 94/96/93
-f 104/97/94 97/98/95 110/93/89
-f 80/92/88 85/99/96 79/90/86
-f 98/100/97 91/101/98 28/16/17
-f 92/102/99 90/103/100 107/104/101
-f 88/105/102 91/101/98 103/106/103
-f 118/89/85 94/96/93 116/107/104
-f 99/108/105 116/107/104 94/96/93
-f 82/109/106 75/110/107 83/111/108
-f 79/90/86 78/112/109 83/111/108
-f 108/113/110 107/104/101 90/103/100
-f 87/114/111 115/86/82 117/115/112
-f 116/107/104 117/115/112 115/86/82
-f 111/116/113 102/117/114 103/106/103
-f 111/116/113 103/106/103 91/101/98
-f 84/118/115 87/114/111 80/92/88
-f 99/108/105 100/119/116 116/107/104
-f 102/117/114 97/98/95 93/120/117
-f 114/121/118 85/99/96 80/92/88
-f 101/122/119 93/120/117 104/97/94
-f 74/123/120 83/111/108 75/110/107
-f 90/103/100 105/124/121 108/113/110
-f 106/125/122 108/113/110 105/124/121
-f 107/104/101 110/93/89 92/102/99
-f 97/98/95 100/119/116 109/94/90
-f 116/107/104 115/86/82 118/89/85
-f 110/93/89 97/98/95 109/94/90
-f 85/99/96 77/126/123 79/90/86
-f 100/119/116 97/98/95 102/117/114
-f 110/93/89 107/104/101 104/97/94
-f 96/127/124 104/97/94 107/104/101
-f 91/101/98 98/100/97 111/116/113
-f 82/109/106 83/111/108 78/112/109
-f 81/91/87 79/90/86 83/111/108
-f 89/95/92 92/102/99 110/93/89
-f 77/126/123 78/112/109 79/90/86
-f 99/108/105 94/96/93 109/94/90
-f 91/101/98 88/105/102 28/16/17
-f 22/44/45 98/100/97 28/16/17
-f 97/98/95 104/97/94 93/120/117
-f 93/120/117 101/122/119 103/106/103
-f 102/117/114 95/128/125 100/119/116
-f 103/106/103 102/117/114 93/120/117
-f 87/114/111 84/118/115 115/86/82
-f 102/117/114 111/116/113 95/128/125
-f 38/46/47 106/125/122 20/47/48
-f 105/124/121 20/47/48 106/125/122
-f 83/111/108 74/123/120 81/91/87
-f 88/105/102 103/106/103 119/129/126
-f 73/87/83 84/118/115 74/123/120
-f 81/91/87 74/123/120 84/118/115
-f 104/97/94 96/127/124 101/122/119
-f 87/114/111 114/121/118 80/92/88
-f 117/115/112 116/107/104 95/128/125
-f 100/119/116 95/128/125 116/107/104
-f 85/99/96 76/130/127 77/126/123
-f 99/108/105 109/94/90 100/119/116
-f 84/118/115 80/92/88 81/91/87
-f 84/118/115 73/87/83 115/86/82
-f 82/109/106 49/50/51 75/110/107
-f 28/16/17 88/105/102 17/51/52
-f 57/52/53 56/53/54 77/126/123
-f 73/79/75 74/131/128 49/55/56
-f 89/132/129 94/133/93 59/58/59
-f 94/133/93 118/134/60 59/58/59
-f 92/135/99 20/63/48 90/136/100
-f 90/136/100 20/63/48 105/137/121
-f 112/138/130 53/67/63 122/139/131
-f 101/122/119 96/127/124 120/140/132
-f 121/141/133 120/140/132 96/127/124
-f 101/122/119 119/129/126 103/106/103
-f 123/142/134 17/51/52 88/105/102
-f 96/127/124 113/143/135 121/141/133
-f 113/143/135 112/138/130 122/139/131
-f 122/139/131 121/141/133 113/143/135
-f 120/140/132 119/129/126 101/122/119
-f 17/51/52 123/142/134 60/72/68
-f 65/73/69 49/50/51 82/109/106
-f 78/112/109 65/73/69 82/109/106
-f 65/73/69 78/112/109 55/74/70
-f 64/75/71 122/139/131 53/67/63
-f 125/144/136 76/130/127 85/99/96
-f 85/99/96 114/121/118 125/144/136
-f 124/145/137 114/121/118 117/115/112
-f 117/115/112 114/121/118 87/114/111
-f 59/58/59 20/63/48 89/132/92
-f 92/135/99 89/132/92 20/63/48
-f 88/105/102 119/129/126 123/142/134
-f 58/78/74 86/146/138 73/79/75
-f 125/144/136 67/80/76 76/130/127
-f 70/81/77 76/130/127 67/80/76
-f 98/100/97 22/44/45 126/147/139
-f 68/83/79 126/147/139 22/44/45
-f 73/79/75 49/55/56 1/54/55
-f 74/131/128 75/148/140 49/55/56
-f 106/125/122 38/46/47 112/138/130
-f 53/67/63 112/138/130 38/46/47
-f 126/147/139 125/144/136 124/145/137
-f 114/121/118 124/145/137 125/144/136
-f 68/83/79 67/80/76 126/147/139
-f 125/144/136 126/147/139 67/80/76
-f 107/104/101 108/113/110 96/127/124
-f 113/143/135 96/127/124 108/113/110
-f 126/147/139 124/145/137 98/100/97
-f 111/116/113 98/100/97 124/145/137
-f 108/113/110 106/125/122 113/143/135
-f 112/138/130 113/143/135 106/125/122
-f 78/112/109 77/126/123 55/74/70
-f 56/53/54 55/74/70 77/126/123
-f 118/134/60 86/146/138 59/58/59
-f 58/78/74 59/58/59 86/146/138
-f 111/116/113 124/145/137 95/128/125
-f 117/115/112 95/128/125 124/145/137
-f 77/126/123 76/130/127 57/52/53
-f 70/81/77 57/52/53 76/130/127
-
-o Touchpad
-v 0 0.011 -0.0154875
-v -0.00302146 0.011 -0.0151899
-v -0.00592681 0.011 -0.0143086
-v -0.00860439 0.011 -0.0128774
-v -0.0109513 0.011 -0.0109513
-v -0.0128774 0.011 -0.00860439
-v -0.0143086 0.011 -0.00592681
-v -0.0151899 0.011 -0.00302146
-v -0.0154875 0.011 0
-v -0.0151899 0.011 0.00302146
-v -0.0143086 0.011 0.00592681
-v -0.0128774 0.011 0.00860439
-v -0.0109513 0.011 0.0109513
-v -0.00860439 0.011 0.0128774
-v -0.00592681 0.011 0.0143086
-v -0.00302146 0.011 0.0151899
-v 0 0.011 0.0154875
-v 0.00302146 0.011 0.0151899
-v 0.00592681 0.011 0.0143086
-v 0.00860439 0.011 0.0128774
-v 0.0109513 0.011 0.0109513
-v 0.0128774 0.011 0.00860439
-v 0.0143086 0.011 0.00592681
-v 0.0151899 0.011 0.00302146
-v 0.0154875 0.011 0
-v 0.0151899 0.011 -0.00302146
-v 0.0143086 0.011 -0.00592681
-v 0.0128774 0.011 -0.00860439
-v 0.0109513 0.011 -0.0109513
-v 0.00860439 0.011 -0.0128774
-v 0.00592681 0.011 -0.0143086
-v 0.00302146 0.011 -0.0151899
-v -0.00592681 0.00775 -0.0143086
-v -0.00860439 0.00775 -0.0128774
-v -0.0109513 0.00775 -0.0109513
-v -0.0128774 0.00775 -0.00860439
-v -0.0143086 0.00775 -0.00592681
-v -0.0151899 0.00775 -0.00302146
-v -0.0154875 0.00775 0
-v -0.0151899 0.00775 0.00302146
-v -0.0143086 0.00775 0.00592681
-v -0.0128774 0.00775 0.00860439
-v -0.0109513 0.00775 0.0109513
-v -0.00860439 0.00775 0.0128774
-v -0.00592681 0.00775 0.0143086
-v -0.00302146 0.00775 0.0151899
-v 0 0.00775 0.0154875
-v 0.00302146 0.00775 0.0151899
-v 0.00592681 0.00775 0.0143086
-v 0.00860439 0.00775 0.0128774
-v 0.0109513 0.00775 0.0109513
-v 0.0128774 0.00775 0.00860439
-v 0.0143086 0.00775 0.00592681
-v 0.0151899 0.00775 0.00302146
-v 0.0154875 0.00775 0
-v 0.0151899 0.00775 -0.00302146
-v 0.0143086 0.00775 -0.00592681
-v 0.0128774 0.00775 -0.00860439
-v 0.0109513 0.00775 -0.0109513
-v 0.00860439 0.00775 -0.0128774
-v 0.00592681 0.00775 -0.0143086
-v 0.00302146 0.00775 -0.0151899
-v 0 0.00775 -0.0154875
-v -0.00302146 0.00775 -0.0151899
-vn 0 1 0
-vn -0.527988 0 -0.849252
-vn -0.582554 0 -0.812792
-vn -0.683524 0 -0.729928
-vn -0.729928 0 -0.683524
-vn 0.527988 0 0.849252
-vn 0.582554 0 0.812792
-vn 0.683524 0 0.729928
-vn 0.729928 0 0.683524
-vn -0.352162 0 -0.935939
-vn -0.412793 0 -0.910825
-vn 0.352162 0 0.935939
-vn 0.412793 0 0.910825
-vn 0.162803 0 0.986659
-vn 0.227168 0 0.973856
-vn -0.162803 0 -0.986659
-vn -0.227168 0 -0.973856
-vn -0.0328128 0 0.999462
-vn 0.0328128 0 0.999462
-vn 0.0328128 0 -0.999462
-vn -0.0328128 0 -0.999462
-vn -0.227168 0 0.973856
-vn -0.162803 0 0.986659
-vn 0.227168 0 -0.973856
-vn 0.162803 0 -0.986659
-vn -0.412793 0 0.910825
-vn -0.352162 0 0.935939
-vn 0.412793 0 -0.910825
-vn 0.352162 0 -0.935939
-vn -0.582554 0 0.812792
-vn -0.527988 0 0.849252
-vn 0.582554 0 -0.812792
-vn 0.527988 0 -0.849252
-vn -0.849252 0 0.527988
-vn -0.812792 0 0.582554
-vn -0.729928 0 0.683524
-vn -0.683524 0 0.729928
-vn 0.849252 0 -0.527988
-vn 0.812792 0 -0.582554
-vn 0.729928 0 -0.683524
-vn 0.683524 0 -0.729928
-vn -0.935939 0 0.352162
-vn -0.910825 0 0.412793
-vn 0.935939 0 -0.352162
-vn 0.910825 0 -0.412793
-vn -0.986659 0 0.162803
-vn -0.973856 0 0.227168
-vn 0.986659 0 -0.162803
-vn 0.973856 0 -0.227168
-vn -0.910825 0 -0.412793
-vn -0.935939 0 -0.352162
-vn -0.973856 0 -0.227168
-vn -0.986659 0 -0.162803
-vn 0.910825 0 0.412793
-vn 0.935939 0 0.352162
-vn 0.973856 0 0.227168
-vn 0.986659 0 0.162803
-vn -0.812792 0 -0.582554
-vn -0.849252 0 -0.527988
-vn 0.812792 0 0.582554
-vn 0.849252 0 0.527988
-vn -0.999462 0 -0.0328128
-vn -0.999462 0 0.0328128
-vn 0.999462 0 0.0328128
-vn 0.999462 0 -0.0328128
-vt 0.38852 0.824935
-vt 0.372021 0.816172
-vt 0.406406 0.83033
-vt 0.424998 0.832151
-vt 0.357534 0.804373
-vt 0.443591 0.83033
-vt 0.345608 0.789984
-vt 0.461476 0.824935
-vt 0.336698 0.773542
-vt 0.477976 0.816172
-vt 0.331158 0.755657
-vt 0.492463 0.804374
-vt 0.329252 0.737001
-vt 0.504389 0.789985
-vt 0.331158 0.718345
-vt 0.5133 0.773543
-vt 0.336697 0.700459
-vt 0.51884 0.755657
-vt 0.345607 0.684017
-vt 0.520746 0.737001
-vt 0.357533 0.669627
-vt 0.51884 0.718345
-vt 0.37202 0.657829
-vt 0.5133 0.700459
-vt 0.38852 0.649066
-vt 0.50439 0.684016
-vt 0.406406 0.643671
-vt 0.492464 0.669627
-vt 0.424998 0.641849
-vt 0.477977 0.657829
-vt 0.443591 0.64367
-vt 0.461477 0.649065
-vt 0.359933 0.834407
-vt 0.342149 0.819935
-vt 0.490064 0.639593
-vt 0.507849 0.654065
-vt 0.380192 0.845168
-vt 0.469805 0.628832
-vt 0.447837 0.622204
-vt 0.402159 0.851796
-vt 0.424998 0.619966
-vt 0.424998 0.854034
-vt 0.402159 0.622204
-vt 0.447837 0.851796
-vt 0.380191 0.628833
-vt 0.469805 0.845168
-vt 0.359933 0.639593
-vt 0.490063 0.834408
-vt 0.32749 0.671684
-vt 0.342148 0.654066
-vt 0.522506 0.802318
-vt 0.507848 0.819936
-vt 0.316448 0.691787
-vt 0.533549 0.782216
-vt 0.30933 0.713718
-vt 0.540668 0.760286
-vt 0.316449 0.782215
-vt 0.309331 0.760285
-vt 0.53355 0.691786
-vt 0.540668 0.713717
-vt 0.327491 0.802316
-vt 0.522507 0.671684
-vt 0.306354 0.737002
-vt 0.543646 0.737002
-mtllib gear_vr_controller.mtl
-usemtl Touchpad
-g Default
-f 129/149/141 130/150/141 128/151/141
-f 127/152/141 128/151/141 130/150/141
-f 130/150/141 131/153/141 127/152/141
-f 158/154/141 127/152/141 131/153/141
-f 131/153/141 132/155/141 158/154/141
-f 157/156/141 158/154/141 132/155/141
-f 132/155/141 133/157/141 157/156/141
-f 156/158/141 157/156/141 133/157/141
-f 133/157/141 134/159/141 156/158/141
-f 155/160/141 156/158/141 134/159/141
-f 134/159/141 135/161/141 155/160/141
-f 154/162/141 155/160/141 135/161/141
-f 135/161/141 136/163/141 154/162/141
-f 153/164/141 154/162/141 136/163/141
-f 136/163/141 137/165/141 153/164/141
-f 152/166/141 153/164/141 137/165/141
-f 137/165/141 138/167/141 152/166/141
-f 151/168/141 152/166/141 138/167/141
-f 138/167/141 139/169/141 151/168/141
-f 150/170/141 151/168/141 139/169/141
-f 139/169/141 140/171/141 150/170/141
-f 149/172/141 150/170/141 140/171/141
-f 140/171/141 141/173/141 149/172/141
-f 148/174/141 149/172/141 141/173/141
-f 141/173/141 142/175/141 148/174/141
-f 147/176/141 148/174/141 142/175/141
-f 142/175/141 143/177/141 147/176/141
-f 146/178/141 147/176/141 143/177/141
-f 143/177/141 144/179/141 146/178/141
-f 145/180/141 146/178/141 144/179/141
-f 130/150/142 160/181/143 131/153/144
-f 161/182/145 131/153/144 160/181/143
-f 146/178/146 176/183/147 147/176/148
-f 177/184/149 147/176/148 176/183/147
-f 129/149/150 159/185/151 130/150/142
-f 160/181/143 130/150/142 159/185/151
-f 145/180/152 175/186/153 146/178/146
-f 176/183/147 146/178/146 175/186/153
-f 144/179/154 174/187/155 145/180/152
-f 175/186/153 145/180/152 174/187/155
-f 128/151/156 190/188/157 129/149/150
-f 159/185/151 129/149/150 190/188/157
-f 143/177/158 173/189/159 144/179/154
-f 174/187/155 144/179/154 173/189/159
-f 127/152/160 189/190/161 128/151/156
-f 190/188/157 128/151/156 189/190/161
-f 142/175/162 172/191/163 143/177/158
-f 173/189/159 143/177/158 172/191/163
-f 158/154/164 188/192/165 127/152/160
-f 189/190/161 127/152/160 188/192/165
-f 141/173/166 171/193/167 142/175/162
-f 172/191/163 142/175/162 171/193/167
-f 157/156/168 187/194/169 158/154/164
-f 188/192/165 158/154/164 187/194/169
-f 140/171/170 170/195/171 141/173/166
-f 171/193/167 141/173/166 170/195/171
-f 156/158/172 186/196/173 157/156/168
-f 187/194/169 157/156/168 186/196/173
-f 138/167/174 168/197/175 139/169/176
-f 169/198/177 139/169/176 168/197/175
-f 154/162/178 184/199/179 155/160/180
-f 185/200/181 155/160/180 184/199/179
-f 139/169/176 169/198/177 140/171/170
-f 170/195/171 140/171/170 169/198/177
-f 155/160/180 185/200/181 156/158/172
-f 186/196/173 156/158/172 185/200/181
-f 137/165/182 167/201/183 138/167/174
-f 168/197/175 138/167/174 167/201/183
-f 153/164/184 183/202/185 154/162/178
-f 184/199/179 154/162/178 183/202/185
-f 136/163/186 166/203/187 137/165/182
-f 167/201/183 137/165/182 166/203/187
-f 152/166/188 182/204/189 153/164/184
-f 183/202/185 153/164/184 182/204/189
-f 133/157/190 163/205/191 134/159/192
-f 164/206/193 134/159/192 163/205/191
-f 149/172/194 179/207/195 150/170/196
-f 180/208/197 150/170/196 179/207/195
-f 132/155/198 162/209/199 133/157/190
-f 163/205/191 133/157/190 162/209/199
-f 148/174/200 178/210/201 149/172/194
-f 179/207/195 149/172/194 178/210/201
-f 131/153/144 161/182/145 132/155/198
-f 162/209/199 132/155/198 161/182/145
-f 147/176/148 177/184/149 148/174/200
-f 178/210/201 148/174/200 177/184/149
-f 135/161/202 165/211/203 136/163/186
-f 166/203/187 136/163/186 165/211/203
-f 151/168/204 181/212/205 152/166/188
-f 182/204/189 152/166/188 181/212/205
-f 134/159/192 164/206/193 135/161/202
-f 165/211/203 135/161/202 164/206/193
-f 150/170/196 180/208/197 151/168/204
-f 181/212/205 151/168/204 180/208/197
-
-o Trigger
-v 0.00736809 -0.00639162 -0.0160172
-v 0.00754595 -0.00744792 -0.0102493
-v 0.00555627 -0.00301564 -0.0178696
-v 0.004868 -0.00974427 -0.0189879
-v 0 -0.00968463 -0.0199828
-v 0 -0.0111187 -0.0170885
-v 1.06707e-018 -0.0104048 -0.00704971
-v 0.00871332 -0.00449104 -0.0134489
-v 0.00754595 -0.00153417 -0.0166485
-v 0.00435666 0.000630421 -0.0189907
-v 0 -0.00298128 -0.0189934
-v -2.13415e-018 0.00142271 -0.019848
-v 0.00435666 -0.00961251 -0.00790704
-v 0.0045098 -0.0106875 -0.0171466
-v -0.00736809 -0.00639162 -0.0160172
-v -0.00754595 -0.00744792 -0.0102493
-v -0.00555627 -0.00301564 -0.0178696
-v -0.004868 -0.00974427 -0.0189879
-v -0.00871332 -0.00449104 -0.0134489
-v -0.00754595 -0.00153417 -0.0166485
-v -0.00435666 0.000630421 -0.0189907
-v -0.00435666 -0.00961251 -0.00790704
-v -0.0045098 -0.0106875 -0.0171466
-vn 0.516079 -0.79892 -0.308851
-vn 0.475699 -0.86347 -0.167718
-vn 0 -0.896134 -0.443783
-vn 0 -0.996009 -0.0892506
-vn 0.588731 -0.0629963 -0.80587
-vn 0.474605 -0.0521618 -0.878652
-vn 0.863581 -0.306813 -0.400117
-vn 0.308966 -0.166377 -0.936407
-vn 0.706055 -0.0971262 -0.701465
-vn 0.919435 -0.285884 -0.270017
-vn 0.792968 -0.607558 -0.0455422
-vn 0 -0.0347585 -0.999396
-vn 0 -0.190515 -0.981684
-vn 0.398966 0.111307 -0.910185
-vn 0 0.146015 -0.989282
-vn 0.307972 -0.946242 0.0988904
-vn 0 -0.997481 0.0709366
-vn 0.669595 -0.558842 -0.489223
-vn -0.516079 -0.79892 -0.308851
-vn -0.475699 -0.86347 -0.167718
-vn -0.588731 -0.0629963 -0.80587
-vn -0.863581 -0.306813 -0.400117
-vn -0.474605 -0.0521618 -0.878652
-vn -0.308966 -0.166377 -0.936407
-vn -0.706055 -0.0971262 -0.701465
-vn -0.919435 -0.285884 -0.270017
-vn -0.792968 -0.607558 -0.0455422
-vn -0.398966 0.111307 -0.910185
-vn -0.307972 -0.946242 0.0988904
-vn -0.669595 -0.558842 -0.489223
-vt 0.421572 0.496062
-vt 0.421082 0.506817
-vt 0.39 0.490766
-vt 0.39 0.510712
-vt 0.448703 0.44978
-vt 0.460455 0.493442
-vt 0.441509 0.403972
-vt 0.48257 0.443454
-vt 0.501341 0.50233
-vt 0.47332 0.553913
-vt 0.39 0.439053
-vt 0.39 0.389803
-vt 0.434968 0.583667
-vt 0.39 0.594197
-vt 0.358428 0.496062
-vt 0.358918 0.506817
-vt 0.319544 0.493442
-vt 0.331297 0.44978
-vt 0.33849 0.403972
-vt 0.297429 0.443455
-vt 0.278659 0.50233
-vt 0.30668 0.553913
-vt 0.345032 0.583667
-mtllib gear_vr_controller.mtl
-usemtl Trigger
-g Default
-f 194/213/206 204/214/207 195/215/208
-f 204/214/207 196/216/209 195/215/208
-f 194/213/210 193/217/211 191/218/212
-f 200/219/213 199/220/214 193/217/211
-f 198/221/215 191/218/212 199/220/214
-f 191/218/212 193/217/211 199/220/214
-f 198/221/215 192/222/216 191/218/212
-f 201/223/217 202/224/218 200/219/213
-f 201/223/217 194/213/219 195/215/220
-f 193/217/211 201/223/217 200/219/213
-f 193/217/211 194/213/219 201/223/217
-f 204/214/207 203/225/221 196/216/209
-f 197/226/222 196/216/209 203/225/221
-f 192/222/216 204/214/207 191/218/212
-f 204/214/207 192/222/216 203/225/221
-f 204/214/207 194/213/223 191/218/212
-f 208/227/224 195/215/208 213/228/225
-f 213/228/225 195/215/208 196/216/209
-f 208/227/226 205/229/227 207/230/228
-f 211/231/229 207/230/228 210/232/230
-f 205/229/227 210/232/230 207/230/228
-f 205/229/227 209/233/231 210/232/230
-f 209/233/231 205/229/227 206/234/232
-f 201/223/217 211/231/229 202/224/218
-f 201/223/217 195/215/220 208/227/233
-f 207/230/228 211/231/229 201/223/217
-f 207/230/228 201/223/217 208/227/233
-f 213/228/225 196/216/209 212/235/234
-f 197/226/222 212/235/234 196/216/209
-f 206/234/232 205/229/227 213/228/225
-f 213/228/225 212/235/234 206/234/232
-f 213/228/225 205/229/227 208/227/235

+ 0 - 21
examples/models/obj/oculus_go_controller/LICENSE.txt

@@ -1,21 +0,0 @@
-The MIT License
-
-Copyright © 2018 @Kosso.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.

+ 0 - 14
examples/models/obj/oculus_go_controller/oculus_go_controller.mtl

@@ -1,14 +0,0 @@
-# Color definition for Tinkercad Obj File 2015. Created by @kosso.
-
-newmtl color_10988977
-Ka 0 0 0 
-Kd 0.6549019607843137 0.6784313725490196 0.6941176470588235
-d 1.0
-illum 0.0
-
-newmtl color_14541540
-Ka 0 0 0 
-Kd 0.8666666666666667 0.8862745098039215 0.8941176470588236
-d 1.0
-illum 0.0
-

+ 0 - 7013
examples/models/obj/oculus_go_controller/oculus_go_controller.obj

@@ -1,7013 +0,0 @@
-# Object Export From Tinkercad Server 2015. Created by @kosso
-
-mtllib obj.mtl
-
-o obj_0
-v -0.0054 		0.0471 		0.0428
-v 0.0079 		0.0368 		-0.052
-v -0.0055 		0.0471 		0.0427
-v -0.0274 		0.0426 		-0.0277
-v 0.0139 		0.0293 		0.0511
-v 0.0141 		0.0291 		0.051
-v 0.014 		0.0297 		0.0506
-v 0.0141 		0.0294 		0.0506
-v 0.0057 		0.0345 		-0.0528
-v -0.0083 		-0.0466 		0.1037
-v 0.0062 		0.0344 		-0.0527
-v -0.0084 		-0.0478 		0.1025
-v 0.0128 		0.0311 		0.0519
-v -0.0089 		-0.0428 		0.106
-v 0.0024 		0.0471 		0.0428
-v 0.0023 		0.0471 		0.0429
-v 0.0005 		0.047 		0.0435
-v 0.0128 		0.0309 		0.0521
-v 0.0096 		0.0395 		-0.0509
-v 0.0141 		0.0306 		0.0495
-v -0.0015 		0.047 		0.0438
-v 0.0002 		0.047 		0.0436
-v 0.0128 		0.0321 		0.0509
-v 0.0101 		0.0371 		-0.0511
-v 0.0126 		0.031 		0.0522
-v -0.0095 		-0.0442 		0.1047
-v -0.0017 		0.047 		0.0437
-v 0.0112 		0.0326 		0.0532
-v 0.0113 		0.0325 		0.0531
-v 0.0103 		0.0346 		-0.0513
-v -0.0243 		0.0489 		-0.0338
-v -0.0099 		-0.0456 		0.1032
-v -0.0251 		0.0482 		-0.0317
-v -0.01 		-0.0471 		0.1018
-v 0.0127 		0.0312 		0.0519
-v 0.0127 		0.0313 		0.0519
-v -0.0248 		0.0488 		-0.0316
-v -0.0244 		0.0489 		-0.0335
-v 0.0122 		0.0374 		-0.0501
-v 0.0048 		0.0393 		-0.0524
-v -0.0035 		0.047 		0.0435
-v 0.0041 		0.0405 		-0.0523
-v 0.0014 		-0.0557 		0.0782
-v -0.0015 		-0.056 		0.078
-v -0.0044 		-0.0557 		0.0782
-v 0.0021 		0.0425 		-0.0522
-v 0.0033 		0.0448 		-0.0513
-v -0.0045 		-0.0471 		0.1053
-v 0.0047 		0.0437 		-0.0514
-v -0.0048 		-0.0476 		0.1047
-v -0.0041 		0.0015 		0.0122
-v -0.0015 		-0.0553 		0.0754
-v 0.0015 		-0.055 		0.0757
-v -0.0035 		0.0014 		0.0121
-v -0.0049 		-0.0482 		0.1041
-v 0.0026 		0.0481 		-0.0502
-v 0.0142 		0.0377 		-0.0489
-v -0.0248 		0.0488 		-0.0313
-v -0.0037 		0.047 		0.0434
-v -0.0217 		0.0489 		-0.0322
-v -0.0218 		0.0488 		-0.0311
-v 0.0116 		0.0403 		-0.0498
-v 0.0017 		-0.0541 		0.0731
-v -0.0015 		-0.0543 		0.0729
-v 0.0135 		0.0409 		-0.0486
-v -0.0254 		0.0481 		-0.0295
-v -0.005 		-0.0488 		0.1035
-v 0.0044 		0.047 		-0.0503
-v 0.0153 		0.0415 		-0.0472
-v -0.0064 		-0.0466 		0.1049
-v 0.0042 		-0.055 		0.079
-v 0.0161 		0.0378 		-0.0475
-v -0.0066 		-0.0475 		0.104
-v 0.0113 		0.0326 		0.053
-v -0.0067 		-0.0484 		0.1031
-v 0.017 		0.042 		-0.0457
-v 0.0045 		-0.0542 		0.0764
-v -0.0109 		0.0355 		0.0544
-v 0.0079 		0.0355 		0.0544
-v 0.0028 		0.0374 		0.0562
-v 0.0024 		0.0375 		0.0563
-v 0.0024 		0.0374 		0.0562
-v 0.0048 		-0.0532 		0.0739
-v -0.0054 		0.0375 		0.0563
-v 0.0093 		0.0332 		-0.0518
-v 0.0015 		0.0493 		-0.0498
-v -0.0054 		0.0374 		0.0562
-v 0.0102 		0.0328 		-0.0515
-v 0.0124 		0.0345 		-0.0503
-v -0.025 		0.0488 		-0.0294
-v -0.0015 		0.0379 		0.0566
-v -0.0015 		0.0374 		0.0562
-v -0.0133 		-0.051 		0.086
-v -0.0034 		0.0014 		0.0121
-v -0.025 		0.0488 		-0.0291
-v 0.0113 		0.0334 		0.0522
-v -0.0015 		0.0013 		0.012
-v -0.0022 		0.0013 		0.0121
-v 0.0112 		0.0326 		0.0532
-v 0.0098 		0.0338 		0.0539
-v -0.0015 		-0.0022 		0.017
-v 0.0112 		0.0327 		0.053
-v 0.0112 		0.0327 		0.053
-v -0.0002 		0.0014 		0.0121
-v 0.0005 		0.0014 		0.0121
-v 0.0005 		0.0014 		0.0121
-v 0.0005 		-0.0016 		0.0164
-v -0.0058 		0.0374 		0.0562
-v 0.0024 		0.0018 		0.0123
-v 0.0017 		0.0016 		0.0122
-v 0.0024 		0.0018 		0.0123
-v 0.0097 		0.0345 		0.0534
-v 0.0096 		0.034 		0.0541
-v -0.0015 		0.0506 		-0.0489
-v 0.0091 		0.0343 		0.0543
-v 0.0096 		0.034 		0.0541
-v 0.0097 		0.0339 		0.054
-v 0.0005 		0.0378 		0.0565
-v 0.0004 		0.0374 		0.0562
-v -0.0035 		0.0378 		0.0565
-v -0.0034 		0.0374 		0.0562
-v 0.0096 		0.034 		0.054
-v -0.0194 		0.0161 		0.0159
-v -0.0197 		0.0171 		0.0165
-v 0.002 		0.0492 		-0.0483
-v -0.0015 		0.0493 		-0.0489
-v -0.0188 		0.015 		0.0153
-v -0.0045 		0.0492 		-0.0484
-v -0.0198 		0.017 		0.0164
-v -0.019 		0.0149 		0.0152
-v -0.0177 		0.0131 		0.0142
-v -0.018 		0.0129 		0.014
-v -0.0222 		0.0488 		-0.0288
-v -0.0224 		0.0487 		-0.0272
-v 0.0029 		0.0493 		-0.0496
-v 0.0187 		0.0179 		0.0368
-v -0.0212 		0.0283 		0.0229
-v -0.0048 		-0.0444 		0.1071
-v -0.0055 		-0.0451 		0.1064
-v -0.0211 		0.0238 		0.0203
-v -0.0211 		0.0261 		0.0216
-v -0.006 		-0.0458 		0.1057
-v -0.0213 		0.0237 		0.0203
-v -0.0214 		0.0261 		0.0216
-v -0.021 		0.0221 		0.0194
-v -0.0224 		0.0487 		-0.0272
-v -0.0202 		0.0193 		0.0177
-v -0.0208 		0.0215 		0.019
-v -0.0205 		0.0192 		0.0177
-v -0.021 		0.0214 		0.019
-v -0.0068 		-0.0434 		0.1069
-v 0.0057 		-0.0454 		0.0629
-v 0.0051 		-0.0456 		0.0627
-v -0.0255 		0.0477 		-0.0273
-v -0.0255 		0.0477 		-0.0273
-v 0.0062 		-0.0452 		0.0631
-v 0.008 		-0.0444 		0.0639
-v -0.0255 		0.0478 		-0.0273
-v -0.0075 		-0.0444 		0.1059
-v -0.0249 		0.0487 		-0.0272
-v 0.0084 		-0.0442 		0.0641
-v 0.0097 		-0.0434 		0.0649
-v 0.0088 		-0.0439 		0.0644
-v 0.0113 		-0.0422 		0.0661
-v 0.0128 		-0.0409 		0.0674
-v 0.0116 		-0.042 		0.0663
-v 0.0114 		-0.0421 		0.0662
-v 0.0141 		-0.0395 		0.0688
-v 0.014 		-0.0396 		0.0687
-v 0.0138 		-0.0397 		0.0685
-v 0.0153 		-0.0379 		0.0704
-v 0.0163 		-0.0362 		0.0721
-v 0.0161 		-0.0366 		0.0717
-v 0.0158 		-0.037 		0.0713
-v -0.0214 		0.0248 		0.027
-v -0.0224 		0.0487 		-0.0272
-v -0.0213 		0.0252 		0.0272
-v 0.0171 		-0.0344 		0.0739
-v 0.0178 		-0.0326 		0.0757
-v 0.0175 		-0.0333 		0.075
-v 0.0173 		-0.0339 		0.0744
-v 0.0183 		-0.0307 		0.0776
-v -0.0213 		0.0225 		0.0255
-v -0.0213 		0.0225 		0.0255
-v -0.0257 		0.0478 		-0.0273
-v -0.0213 		0.0229 		0.0258
-v 0.0186 		-0.0287 		0.0795
-v -0.0251 		0.0487 		-0.0272
-v 0.0184 		-0.03 		0.0783
-v 0.0183 		-0.0304 		0.0779
-v -0.021 		0.0203 		0.0241
-v 0.0187 		-0.0268 		0.0815
-v 0.0186 		-0.0248 		0.0835
-v -0.0114 		-0.0529 		0.0842
-v -0.0214 		0.0225 		0.0255
-v -0.0065 		-0.0375 		0.1095
-v -0.0211 		0.0202 		0.0241
-v -0.008 		-0.0385 		0.1085
-v -0.0224 		0.0487 		-0.0272
-v -0.021 		0.0202 		0.0241
-v -0.0092 		-0.0397 		0.1073
-v -0.0098 		-0.0537 		0.0888
-v -0.0199 		0.0159 		0.0213
-v -0.0102 		-0.0412 		0.1059
-v -0.008 		-0.055 		0.0875
-v -0.02 		0.0158 		0.0213
-v -0.0192 		0.0143 		0.0202
-v -0.0059 		-0.056 		0.0866
-v -0.019 		0.0138 		0.02
-v -0.0089 		-0.0363 		0.1086
-v -0.0224 		0.0487 		-0.0272
-v -0.0226 		0.0502 		-0.0258
-v -0.0198 		0.0158 		0.0212
-v -0.0191 		0.0137 		0.0199
-v -0.0226 		0.0487 		-0.0258
-v -0.0226 		0.0487 		-0.0258
-v -0.019 		0.0137 		0.0199
-v -0.0183 		0.0123 		0.019
-v -0.018 		0.0118 		0.0187
-v -0.018 		0.0118 		0.0187
-v -0.0107 		-0.0534 		0.0865
-v -0.022 		0.0486 		-0.0218
-v -0.0217 		0.0486 		-0.0194
-v 0.0048 		0.0492 		-0.0478
-v -0.0086 		-0.0548 		0.0851
-v -0.0181 		0.0118 		0.0187
-v -0.0064 		-0.0559 		0.084
-v -0.0179 		0.0291 		-0.0488
-v -0.0186 		0.0284 		-0.0483
-v -0.0191 		0.0277 		-0.0478
-v 0.0145 		0.0343 		-0.0491
-v -0.0201 		0.0265 		-0.0469
-v -0.0215 		0.0248 		0.027
-v -0.0092 		-0.0544 		0.0826
-v 0.0142 		0.0309 		-0.0494
-v -0.0068 		-0.0555 		0.0815
-v -0.0213 		0.0246 		-0.0455
-v -0.0214 		0.0245 		-0.0455
-v -0.0214 		0.0247 		-0.0455
-v -0.0205 		0.018 		0.0226
-v -0.0205 		0.018 		0.0227
-v -0.0212 		0.0248 		-0.0457
-v -0.0203 		0.0262 		-0.0467
-v -0.0206 		0.018 		0.0226
-v -0.0219 		0.0228 		-0.0444
-v -0.0228 		0.0237 		-0.0438
-v -0.0214 		0.0159 		0.0348
-v -0.0211 		0.014 		0.0329
-v -0.0206 		0.0121 		0.031
-v -0.0104 		-0.0377 		0.1072
-v -0.02 		0.0103 		0.0291
-v -0.0191 		0.0085 		0.0273
-v -0.0181 		0.0068 		0.0257
-v 0.0164 		0.0341 		-0.0478
-v -0.0173 		0.0099 		0.0048
-v -0.0122 		0.0063 		0.0103
-v -0.0124 		0.0065 		0.0104
-v 0.0161 		0.0303 		-0.0481
-v -0.0049 		-0.0555 		0.0915
-v -0.0107 		0.0055 		0.0098
-v -0.0125 		0.0063 		0.0103
-v -0.0073 		-0.055 		0.0899
-v -0.0218 		0.0234 		-0.0447
-v -0.0054 		-0.0559 		0.0891
-v 0.0182 		0.0338 		-0.0463
-v 0.0179 		0.0296 		-0.0467
-v -0.0153 		0.0095 		0.0121
-v -0.0155 		0.0092 		0.012
-v -0.0151 		0.0315 		-0.0505
-v -0.0164 		0.0106 		0.0128
-v -0.0167 		0.0111 		0.0131
-v -0.0165 		0.0304 		-0.0497
-v -0.0169 		0.0301 		-0.0495
-v -0.0127 		-0.0503 		0.0922
-v -0.0168 		0.011 		0.013
-v -0.0139 		0.008 		0.0113
-v 0.0179 		0.038 		-0.046
-v -0.0151 		0.0315 		-0.0505
-v -0.0141 		0.0077 		0.0111
-v -0.0114 		-0.0522 		0.0904
-v -0.0151 		0.0315 		-0.0505
-v -0.0149 		-0.0474 		0.0925
-v -0.0138 		-0.0497 		0.0903
-v -0.0124 		-0.0517 		0.0882
-v 0.0149 		0.0491 		-0.0401
-v 0.0136 		0.0491 		-0.0415
-v -0.016 		-0.0464 		0.0906
-v -0.0149 		-0.0488 		0.0882
-v 0.017 		0.0465 		-0.0437
-v 0.0182 		0.0471 		-0.0419
-v -0.0049 		-0.0419 		0.1084
-v -0.0097 		0.0034 		0.0134
-v -0.0091 		0.0031 		0.0131
-v -0.0091 		0.0031 		0.0132
-v -0.0059 		-0.0426 		0.1077
-v 0.0179 		0.0491 		-0.0406
-v -0.0073 		0.0023 		0.0127
-v -0.0073 		0.0023 		0.0127
-v -0.0073 		0.0023 		0.0127
-v 0.0183 		-0.0229 		0.0854
-v 0.0183 		-0.0232 		0.0851
-v 0.0184 		-0.0236 		0.0847
-v -0.0092 		0.0031 		0.0132
-v 0.0062 		0.0363 		0.0552
-v 0.0178 		-0.021 		0.0873
-v 0.0043 		0.037 		0.0559
-v 0.0171 		-0.0191 		0.0891
-v 0.0173 		-0.0197 		0.0886
-v 0.0175 		-0.0202 		0.0881
-v 0.0163 		-0.0174 		0.0909
-v 0.0153 		-0.0157 		0.0926
-v 0.0158 		-0.0166 		0.0917
-v 0.0161 		-0.017 		0.0913
-v 0.0141 		-0.0141 		0.0942
-v 0.0128 		-0.0127 		0.0956
-v 0.0138 		-0.0138 		0.0945
-v 0.014 		-0.014 		0.0943
-v -0.0073 		0.0019 		0.0132
-v -0.0073 		0.0023 		0.0127
-v -0.0143 		-0.0461 		0.0964
-v -0.0137 		-0.0483 		0.0942
-v -0.0155 		-0.0451 		0.0949
-v -0.0073 		0.037 		0.0559
-v -0.0073 		0.037 		0.0559
-v -0.0216 		0.0503 		-0.0329
-v 0.0043 		0.0023 		0.0127
-v 0.0043 		0.0023 		0.0127
-v 0.0043 		0.0023 		0.0127
-v -0.0092 		0.0363 		0.0552
-v 0.0113 		-0.0113 		0.0969
-v 0.0114 		-0.0115 		0.0968
-v 0.0116 		-0.0116 		0.0967
-v 0.0097 		-0.0102 		0.0981
-v -0.0216 		0.0489 		-0.033
-v -0.0216 		0.0489 		-0.033
-v -0.011 		0.0355 		0.0544
-v -0.0215 		0.0489 		-0.0331
-v 0.0088 		-0.0097 		0.0986
-v 0.0043 		0.0023 		0.0127
-v 0.008 		0.0355 		0.0544
-v 0.0054 		-0.0456 		0.0627
-v -0.0015 		0.0379 		0.0568
-v -0.0035 		-0.002 		0.0169
-v 0.0005 		0.0378 		0.0567
-v 0.0024 		0.0375 		0.0564
-v -0.0054 		0.0375 		0.0564
-v -0.0035 		0.0378 		0.0567
-v 0.0024 		-0.0017 		0.0172
-v 0.0086 		-0.0441 		0.0642
-v 0.0115 		-0.0421 		0.0662
-v 0.014 		-0.0396 		0.0687
-v -0.0216 		0.0501 		-0.0186
-v -0.0169 		0.01 		0.0175
-v 0.016 		-0.0368 		0.0715
-v -0.0058 		-0.0397 		0.1091
-v -0.0216 		0.0485 		-0.0187
-v -0.0215 		0.0485 		-0.0186
-v -0.007 		-0.0406 		0.1082
-v 0.0175 		-0.0336 		0.0747
-v 0.0184 		-0.0303 		0.078
-v -0.017 		0.0099 		0.0175
-v -0.008 		-0.0416 		0.1072
-v -0.0168 		0.0099 		0.0175
-v -0.0215 		0.0351 		0.0172
-v -0.0159 		0.0087 		0.0167
-v -0.0155 		0.0082 		0.0164
-v -0.0156 		0.0083 		0.0164
-v -0.0141 		0.0066 		0.0154
-v -0.0145 		0.0071 		0.0157
-v -0.0142 		0.0067 		0.0154
-v 0.0062 		0.0364 		0.0552
-v 0.0184 		-0.0233 		0.085
-v -0.013 		0.0057 		0.0148
-v 0.0044 		0.037 		0.0559
-v -0.0126 		0.0053 		0.0146
-v -0.0214 		0.0489 		-0.0334
-v -0.0073 		0.037 		0.0559
-v 0.0175 		-0.02 		0.0883
-v -0.0142 		0.0067 		0.0154
-v -0.0092 		0.0364 		0.0552
-v -0.0126 		0.0053 		0.0145
-v -0.0125 		0.0053 		0.0145
-v 0.016 		-0.0168 		0.0915
-v -0.0114 		0.0045 		0.014
-v -0.0109 		0.0041 		0.0138
-v 0.014 		-0.014 		0.0943
-v -0.0109 		0.0041 		0.0138
-v -0.0109 		0.0041 		0.0138
-v 0.0115 		-0.0115 		0.0968
-v -0.0214 		0.0485 		-0.0183
-v 0.0086 		-0.0095 		0.0988
-v 0.0053 		-0.0492 		0.0669
-v -0.0156 		0.0082 		0.0164
-v 0.0054 		-0.0474 		0.0648
-v -0.0214 		0.0485 		-0.0182
-v -0.0167 		-0.0438 		0.0932
-v -0.0124 		-0.0335 		0.1064
-v -0.017 		0.0052 		0.0241
-v -0.0156 		0.0038 		0.0226
-v -0.0114 		-0.0294 		0.1076
-v -0.019 		0.0378 		-0.0475
-v -0.0133 		-0.0313 		0.1057
-v 0.008 		-0.0092 		0.0991
-v 0.0084 		-0.0094 		0.0989
-v -0.011 		-0.0092 		0.0991
-v -0.0114 		-0.0094 		0.0989
-v 0.0062 		-0.0083 		0.1
-v 0.0044 		-0.0077 		0.1006
-v 0.0051 		-0.0079 		0.1003
-v 0.0156 		0.049 		-0.0394
-v 0.0056 		-0.0081 		0.1002
-v 0.0024 		-0.0072 		0.1011
-v 0.0005 		-0.0069 		0.1014
-v 0.0017 		-0.0071 		0.1012
-v -0.0114 		-0.0479 		0.0991
-v 0.0022 		-0.0072 		0.1011
-v -0.021 		0.0489 		-0.0341
-v -0.0015 		-0.0068 		0.1015
-v -0.0035 		-0.0069 		0.1014
-v -0.0054 		-0.0072 		0.1011
-v 0.0053 		-0.0019 		-0.0314
-v -0.0129 		-0.0471 		0.0978
-v -0.0051 		-0.0072 		0.1011
-v -0.0047 		-0.0071 		0.1012
-v -0.0073 		-0.0077 		0.1006
-v -0.0124 		-0.049 		0.0959
-v 0.0057 		-0.0019 		-0.0316
-v -0.0092 		-0.0083 		0.1
-v -0.0086 		-0.0081 		0.1002
-v -0.0081 		-0.0079 		0.1003
-v -0.0115 		-0.0508 		0.0941
-v 0.008 		-0.001 		-0.0313
-v -0.005 		-0.0071 		0.1012
-v -0.0059 		-0.0319 		0.1107
-v 0.0068 		-0.0014 		-0.0316
-v -0.0102 		-0.0511 		0.0959
-v 0.008 		-0.0007 		-0.0313
-v -0.008 		-0.0328 		0.1097
-v -0.0092 		-0.0526 		0.0944
-v -0.0084 		-0.008 		0.1003
-v 0.0062 		-0.0017 		-0.0313
-v 0.0124 		0.0015 		-0.0311
-v 0.0124 		0.0015 		-0.0312
-v -0.0098 		-0.0341 		0.1085
-v 0.0125 		0.0015 		-0.0312
-v -0.008 		-0.0538 		0.0932
-v 0.0054 		-0.008 		0.1003
-v 0.002 		-0.0071 		0.1012
-v -0.0064 		-0.0293 		0.1106
-v -0.0065 		-0.0548 		0.0922
-v 0.0115 		0.001 		-0.0314
-v -0.0086 		-0.0304 		0.1095
-v 0.0124 		0.0015 		-0.0311
-v 0.0124 		0.0015 		-0.0311
-v -0.0107 		-0.0318 		0.1081
-v -0.0104 		-0.0525 		0.0925
-v -0.0089 		-0.0539 		0.091
-v 0.0125 		0.0015 		-0.0313
-v -0.0049 		-0.0113 		0.1048
-v -0.0068 		-0.0268 		0.1103
-v -0.0083 		-0.0122 		0.1039
-v -0.0092 		-0.0279 		0.1091
-v -0.005 		-0.0091 		0.103
-v -0.0084 		-0.01 		0.1021
-v 0.005 		-0.0521 		0.0715
-v 0.008 		-0.0507 		0.0729
-v 0.0053 		-0.0122 		0.1039
-v 0.002 		-0.0113 		0.1048
-v 0.0052 		-0.0507 		0.0692
-v -0.0182 		0.0415 		-0.0472
-v 0.0082 		-0.0493 		0.0706
-v -0.0049 		-0.0368 		0.1103
-v 0.0172 		0.0059 		-0.031
-v 0.0176 		0.0063 		-0.0307
-v 0.0164 		0.0049 		-0.0308
-v -0.0199 		0.042 		-0.0457
-v -0.0054 		-0.0343 		0.1106
-v 0.0126 		0.0017 		-0.0312
-v -0.0073 		-0.0352 		0.1097
-v 0.0134 		0.0024 		-0.0313
-v -0.0214 		0.0424 		-0.044
-v 0.0163 		0.0051 		-0.0308
-v -0.0142 		0.0025 		0.0213
-v 0.0068 		-0.0538 		0.0802
-v -0.0126 		0.0013 		0.0202
-v -0.0109 		0.0003 		0.0191
-v -0.003 		-0.0482 		0.1046
-v -0.012 		0.0009 		0.0198
-v -0.0031 		-0.0485 		0.1044
-v -0.0103 		0 		0.0188
-v -0.0032 		-0.0488 		0.1041
-v -0.0092 		-0.0005 		0.0183
-v -0.0033 		-0.0491 		0.1038
-v -0.019 		0.0303 		-0.0481
-v -0.018 		0.0379 		0.0353
-v -0.0015 		-0.011 		0.1051
-v 0.0072 		-0.0529 		0.0777
-v 0.0054 		-0.01 		0.1021
-v -0.0059 		-0.053 		0.0973
-v 0.002 		-0.0091 		0.103
-v 0.0076 		-0.0519 		0.0753
-v -0.0049 		-0.0537 		0.0966
-v -0.0015 		-0.0088 		0.1034
-v -0.008 		-0.0525 		0.0963
-v -0.007 		-0.0535 		0.0953
-v -0.0193 		0.0341 		-0.0478
-v -0.0058 		-0.0544 		0.0945
-v 0.0183 		0.0069 		-0.0309
-v -0.0208 		0.0296 		-0.0467
-v 0.005 		-0.055 		0.0875
-v -0.0211 		0.0338 		-0.0463
-v 0.0068 		-0.0537 		0.0888
-v 0.0056 		-0.0548 		0.0851
-v -0.0227 		0.0335 		-0.0447
-v 0.0077 		-0.0534 		0.0865
-v 0.008 		-0.0005 		-0.0335
-v -0.0242 		0.0332 		-0.043
-v 0.0062 		-0.0544 		0.0826
-v 0.008 		-0.0001 		-0.0347
-v -0.0208 		0.038 		-0.046
-v -0.0224 		0.038 		-0.0444
-v -0.0238 		0.0381 		-0.0426
-v 0.005 		-0.0538 		0.0932
-v 0.0062 		-0.0526 		0.0944
-v -0.0251 		0.038 		-0.0407
-v 0.0072 		-0.0511 		0.0959
-v -0.0262 		0.0379 		-0.0388
-v 0.0164 		0.0076 		-0.0371
-v 0.0159 		0.0067 		-0.0368
-v 0.0161 		0.006 		-0.0351
-v -0.011 		-0.0496 		0.0975
-v -0.0083 		-0.049 		0.1013
-v -0.008 		-0.0501 		0.1002
-v -0.0099 		-0.0485 		0.1003
-v -0.0224 		0.029 		-0.0451
-v -0.0095 		-0.0499 		0.0989
-v -0.0238 		0.0284 		-0.0434
-v -0.0089 		-0.0513 		0.0975
-v -0.0015 		-0.0491 		0.1039
-v 0.0122 		0.0026 		-0.0354
-v 0.0124 		0.0029 		-0.0355
-v -0.0251 		0.0278 		-0.0416
-v 0.0122 		0.0027 		-0.0354
-v 0.0121 		0.0026 		-0.0354
-v 0.0163 		0.0053 		-0.033
-v 0.0124 		0.0019 		-0.0332
-v -0.006 		-0.051 		0.1005
-v -0.0262 		0.0273 		-0.0397
-v -0.0055 		-0.0517 		0.0998
-v -0.008 		-0.0168 		0.1068
-v -0.0048 		-0.0523 		0.0991
-v -0.019 		0.0359 		0.034
-v -0.0082 		-0.0144 		0.1054
-v -0.0189 		0.036 		0.0341
-v -0.018 		0.0378 		0.0352
-v -0.019 		0.0358 		0.034
-v -0.0075 		-0.0512 		0.0991
-v -0.0068 		-0.0522 		0.0981
-v -0.0181 		0.0379 		0.0353
-v -0.0191 		0.0359 		0.034
-v -0.0047 		-0.0184 		0.1088
-v -0.0198 		0.034 		0.0328
-v -0.0198 		0.0338 		0.0327
-v -0.0205 		0.0316 		0.0313
-v -0.0199 		0.0338 		0.0327
-v 0.0059 		-0.0539 		0.091
-v -0.021 		0.0294 		0.0299
-v -0.0205 		0.0316 		0.0313
-v -0.021 		0.0294 		0.0299
-v -0.0206 		0.0316 		0.0313
-v -0.0211 		0.0294 		0.0299
-v 0.0074 		-0.0525 		0.0925
-v 0.005 		-0.0168 		0.1068
-v -0.02 		0.0338 		0.0327
-v -0.0213 		0.0271 		0.0284
-v -0.0213 		0.0271 		0.0284
-v -0.0214 		0.0271 		0.0284
-v 0.0052 		-0.0144 		0.1054
-v 0.005 		-0.0525 		0.0963
-v 0.0017 		-0.0184 		0.1088
-v 0.008 		-0.0496 		0.0975
-v -0.0015 		-0.0181 		0.1091
-v -0.0049 		-0.0494 		0.1029
-v -0.0048 		-0.05 		0.1023
-v -0.0045 		-0.0505 		0.1018
-v -0.0181 		0.029 		0.0478
-v -0.019 		0.0276 		0.0464
-v -0.0191 		0.0273 		0.0462
-v -0.02 		0.0255 		0.0444
-v -0.0198 		0.0259 		0.0447
-v -0.0066 		-0.0493 		0.1022
-v -0.0206 		0.0237 		0.0425
-v -0.021 		0.0223 		0.0411
-v -0.0211 		0.0218 		0.0406
-v -0.0214 		0.0199 		0.0387
-v -0.0064 		-0.0502 		0.1013
-v -0.0213 		0.0204 		0.0393
-v -0.0215 		0.0185 		0.0374
-v -0.0215 		0.0179 		0.0367
-v -0.0125 		0.0444 		0.0393
-v 0.0096 		0.0009 		-0.0348
-v 0.005 		-0.0501 		0.1002
-v 0.0057 		-0.0017 		-0.0316
-v 0.0124 		0.0015 		-0.0313
-v 0.0124 		0.0015 		-0.0313
-v -0.0255 		0.0329 		-0.0412
-v -0.0266 		0.0326 		-0.0392
-v 0.0129 		0.0019 		-0.0313
-v 0.0053 		-0.049 		0.1013
-v 0.0059 		-0.0513 		0.0975
-v 0.0065 		-0.0499 		0.0989
-v 0.0181 		0.007 		-0.0309
-v 0.0069 		-0.0485 		0.1003
-v 0.0156 		0.0504 		-0.0394
-v 0.0171 		0.049 		-0.0362
-v 0.0173 		0.0489 		-0.0356
-v 0.0084 		-0.0477 		0.0684
-v 0.0113 		-0.0457 		0.0703
-v -0.0275 		0.0323 		-0.0372
-v 0.0061 		0.0041 		0.009
-v -0.0015 		-0.0473 		0.1055
-v 0.0018 		-0.016 		0.1076
-v -0.0283 		0.0319 		-0.0351
-v 0.0137 		-0.0433 		0.0727
-v -0.0015 		-0.0157 		0.1079
-v -0.0015 		-0.0568 		0.0858
-v 0.0008 		-0.0566 		0.086
-v -0.0048 		-0.016 		0.1076
-v -0.0199 		0.0465 		-0.0437
-v 0.0019 		-0.0136 		0.1063
-v -0.0015 		-0.0133 		0.1066
-v -0.0018 		-0.0473 		0.1055
-v -0.0037 		-0.0566 		0.086
-v -0.0021 		-0.0474 		0.1054
-v -0.0024 		-0.0476 		0.1053
-v -0.0026 		-0.0477 		0.1051
-v -0.0028 		-0.0479 		0.1049
-v -0.0211 		0.0471 		-0.0419
-v 0.001 		-0.0565 		0.0834
-v -0.0015 		-0.0567 		0.0832
-v -0.004 		-0.0565 		0.0834
-v 0.018 		0.0489 		-0.0341
-v -0.0223 		0.0476 		-0.04
-v 0.0157 		-0.0405 		0.0756
-v -0.0206 		0.0491 		-0.0409
-v -0.0049 		-0.0136 		0.1063
-v 0.0086 		-0.046 		0.0662
-v 0.0079 		0.0051 		0.0096
-v 0.0114 		-0.044 		0.0682
-v 0.006 		0.0045 		0.0093
-v -0.0175 		0.0491 		-0.0406
-v -0.0176 		0.0491 		-0.0404
-v 0.0139 		-0.0415 		0.0707
-v -0.0214 		0.049 		-0.0398
-v -0.0232 		0.048 		-0.038
-v -0.0015 		-0.0453 		0.107
-v -0.0218 		0.049 		-0.0393
-v 0.0159 		-0.0387 		0.0735
-v -0.0021 		-0.0454 		0.1069
-v -0.0045 		0.0428 		0.0385
-v 0.0012 		-0.0562 		0.0808
-v -0.0027 		-0.0456 		0.1068
-v -0.0015 		-0.0565 		0.0806
-v -0.0045 		0.0428 		0.0385
-v -0.0032 		-0.0458 		0.1065
-v -0.0117 		0.0428 		0.0385
-v -0.0141 		0.043 		0.0385
-v -0.0117 		0.0428 		0.0385
-v -0.0037 		-0.0462 		0.1062
-v -0.0042 		-0.0562 		0.0808
-v -0.0042 		-0.0466 		0.1058
-v -0.0186 		0.049 		-0.0394
-v -0.0188 		0.049 		-0.0388
-v -0.0078 		0.0428 		0.0384
-v -0.0061 		0.0428 		0.0384
-v -0.0061 		0.0428 		0.0384
-v -0.0097 		0.0428 		0.0384
-v -0.0096 		0.0428 		0.0384
-v -0.0078 		0.0428 		0.0384
-v -0.0228 		0.0427 		-0.0422
-v -0.0126 		0.0444 		0.0394
-v -0.0109 		0.0455 		0.0402
-v -0.024 		0.043 		-0.0403
-v 0.0029 		-0.056 		0.0866
-v -0.0155 		0.0414 		0.0376
-v -0.0155 		0.0414 		0.0376
-v -0.0156 		0.0414 		0.0375
-v -0.0156 		0.0414 		0.0376
-v -0.0251 		0.0431 		-0.0384
-v -0.0168 		0.0398 		0.0365
-v -0.0168 		0.0397 		0.0365
-v 0.0034 		-0.0559 		0.084
-v -0.0169 		0.0397 		0.0364
-v 0.0255 		0.0397 		-0.028
-v -0.017 		0.0397 		0.0365
-v -0.026 		0.0432 		-0.0363
-v 0.0246 		0.0424 		-0.0277
-v 0.0237 		0.0449 		-0.0276
-v 0.0237 		0.045 		-0.0275
-v 0.0248 		0.0415 		-0.0278
-v 0.0248 		0.0416 		-0.0278
-v 0.0038 		-0.0555 		0.0815
-v 0.0245 		0.0424 		-0.0277
-v 0.0227 		0.0478 		-0.0273
-v -0.0015 		-0.0561 		0.0909
-v 0.0003 		-0.056 		0.091
-v -0.0266 		0.0431 		-0.0342
-v 0.002 		-0.0555 		0.0915
-v -0.0032 		-0.056 		0.091
-v 0.0005 		-0.0564 		0.0885
-v -0.0271 		0.0378 		-0.0368
-v -0.0015 		-0.0566 		0.0884
-v -0.0279 		0.0376 		-0.0347
-v 0.0025 		-0.0559 		0.0891
-v -0.014 		0.0428 		0.0384
-v -0.0142 		0.0428 		0.0384
-v -0.0141 		0.0428 		0.0384
-v -0.0142 		0.043 		0.0386
-v 0.0043 		-0.055 		0.0899
-v -0.0035 		-0.0564 		0.0885
-v -0.0284 		0.0373 		-0.0325
-v 0.0003 		-0.0491 		0.1038
-v 0.0002 		-0.0488 		0.1041
-v 0.0002 		-0.0485 		0.1044
-v 0 		-0.0482 		0.1046
-v 0.0186 		0.0503 		-0.0329
-v 0.0186 		0.0489 		-0.033
-v 0.0187 		0.0489 		-0.0322
-v 0.0185 		0.0489 		-0.0331
-v 0.0221 		0.0487 		-0.0272
-v -0.0287 		0.037 		-0.0304
-v 0.0199 		0.0237 		-0.0438
-v 0.0186 		0.0501 		-0.0186
-v 0.0189 		0.0234 		-0.0447
-v 0.0185 		0.0485 		-0.0186
-v 0.0186 		0.0485 		-0.0187
-v 0.0187 		0.0486 		-0.0194
-v 0.0172 		-0.0374 		0.0787
-v 0.0184 		0.0489 		-0.0334
-v 0.0181 		-0.0341 		0.082
-v 0.0174 		-0.0355 		0.0767
-v 0.0183 		-0.0322 		0.08
-v 0.0198 		0.0335 		-0.0447
-v -0.0117 		0.0335 		-0.0519
-v -0.0132 		0.0346 		-0.0513
-v 0.0213 		0.0332 		-0.043
-v -0.013 		0.0371 		-0.0511
-v -0.0125 		0.0395 		-0.0509
-v -0.0015 		-0.0536 		0.0979
-v -0.0033 		-0.0532 		0.0982
-v -0.0024 		-0.0535 		0.098
-v 0.0195 		0.038 		-0.0444
-v 0.0184 		0.0485 		-0.0183
-v -0.0151 		0.0374 		-0.0501
-v -0.0015 		0.0502 		-0.0258
-v 0.0184 		0.0485 		-0.0182
-v 0.0209 		0.0381 		-0.0426
-v -0.0015 		-0.0546 		0.0957
-v -0.0039 		-0.0542 		0.0961
-v -0.0027 		-0.0545 		0.0958
-v -0.0171 		0.0377 		-0.0489
-v 0.0195 		0.029 		-0.0451
-v -0.0015 		-0.0555 		0.0933
-v 0.0209 		0.0284 		-0.0434
-v -0.0044 		-0.055 		0.0938
-v -0.003 		-0.0554 		0.0935
-v -0.0145 		0.0403 		-0.0498
-v 0.0222 		0.038 		-0.0407
-v 0.0107 		-0.0488 		0.0748
-v -0.0164 		0.0409 		-0.0486
-v 0.0226 		0.0329 		-0.0412
-v 0.013 		-0.0465 		0.0771
-v 0.0149 		-0.0438 		0.0798
-v 0.0222 		0.0278 		-0.0416
-v 0.011 		-0.0474 		0.0725
-v 0.0134 		-0.045 		0.0749
-v 0.0016 		0.0428 		0.0385
-v 0.0233 		0.0379 		-0.0388
-v 0.0154 		-0.0422 		0.0776
-v 0.0237 		0.0326 		-0.0392
-v -0.0082 		0.0379 		-0.0525
-v 0.0048 		0.0428 		0.0384
-v 0.0031 		0.0428 		0.0384
-v 0.0233 		0.0273 		-0.0397
-v 0.0032 		0.0428 		0.0384
-v -0.0104 		0.0387 		-0.0518
-v 0.0015 		0.0428 		0.0385
-v -0.003 		0.0428 		0.0384
-v -0.003 		0.0428 		0.0384
-v 0.0091 		-0.0521 		0.0818
-v -0.006 		0.037 		-0.0531
-v 0.0112 		-0.0501 		0.0838
-v -0.0001 		-0.0479 		0.1049
-v -0.0004 		-0.0477 		0.1051
-v 0.0097 		-0.0512 		0.0794
-v -0.0006 		-0.0476 		0.1053
-v -0.0009 		-0.0474 		0.1054
-v -0.0012 		-0.0473 		0.1055
-v 0.0119 		-0.0491 		0.0816
-v 0.0103 		-0.0501 		0.0771
-v 0.0125 		-0.0479 		0.0793
-v 0.005 		0.0498 		-0.0038
-v 0.0246 		0.0323 		-0.0372
-v -0.0186 		0.0499 		-0.0122
-v -0.0006 		-0.0535 		0.098
-v -0.008 		0.0498 		-0.0038
-v -0.0139 		0.0499 		-0.0071
-v 0.005 		0.0482 		-0.0038
-v 0.005 		0.0482 		-0.0038
-v -0.0015 		0.0498 		-0.0027
-v 0 		0.0428 		0.0384
-v 0 		0.0428 		0.0384
-v 0.0018 		-0.0476 		0.1047
-v 0.0163 		-0.0409 		0.0827
-v 0.0172 		-0.0377 		0.0859
-v 0.0015 		-0.0471 		0.1053
-v -0.0015 		0.0428 		0.0384
-v -0.0063 		0.035 		-0.0533
-v 0.0168 		-0.0392 		0.0807
-v -0.0062 		0.036 		-0.0532
-v 0.0177 		-0.0359 		0.0839
-v 0.0043 		0.0471 		0.0416
-v 0.0254 		0.0319 		-0.0351
-v -0.0126 		0.0345 		0.0533
-v -0.0142 		0.0333 		0.0522
-v -0.008 		0.0347 		-0.0529
-v -0.0086 		0.0345 		-0.0528
-v -0.0155 		0.0321 		0.051
-v -0.0086 		0.0349 		-0.0528
-v -0.0156 		0.032 		0.0509
-v -0.0168 		0.0307 		0.0496
-v -0.017 		0.0306 		0.0494
-v -0.0216 		0.016 		0.0348
-v -0.0064 		0.035 		-0.0532
-v -0.0213 		0.014 		0.0329
-v 0.0128 		-0.0478 		0.0861
-v -0.0208 		0.0121 		0.031
-v -0.0201 		0.0103 		0.0291
-v -0.0193 		0.0085 		0.0274
-v 0.014 		-0.0452 		0.0887
-v -0.0183 		0.0068 		0.0257
-v 0.0194 		0.0476 		-0.04
-v -0.0171 		0.0053 		0.0241
-v -0.0063 		0.035 		-0.0533
-v 0.0148 		-0.0425 		0.0915
-v -0.0158 		0.0038 		0.0227
-v -0.0085 		0.0364 		-0.0527
-v 0.0048 		0.0482 		-0.0038
-v 0.0082 		0.0482 		-0.0056
-v 0.0084 		0.0482 		-0.0057
-v 0.0136 		-0.0466 		0.084
-v 0.0149 		-0.0439 		0.0868
-v -0.0109 		0.0348 		-0.0521
-v -0.0099 		0.0342 		-0.0525
-v 0.0109 		0.0499 		-0.0071
-v 0.0156 		0.0499 		-0.0122
-v 0.0003 		-0.0532 		0.0982
-v -0.0003 		-0.0545 		0.0958
-v -0.0103 		0.0341 		-0.0524
-v -0.0109 		0.0339 		-0.0522
-v -0.0143 		0.0025 		0.0213
-v 0.0194 		0.049 		-0.0384
-v 0.0203 		0.048 		-0.038
-v -0.0127 		0.0013 		0.0202
-v 0.0197 		0.049 		-0.0379
-v -0.011 		0.0003 		0.0192
-v -0.0108 		0.0368 		-0.052
-v 0.0009 		-0.0542 		0.0961
-v 0.0205 		0.049 		-0.0362
-v -0.0092 		-0.0005 		0.0183
-v -0.0217 		0.0179 		0.0368
-v -0.0216 		0.0199 		0.0387
-v -0.0183 		0.029 		0.0479
-v -0.0193 		0.0273 		0.0462
-v -0.0201 		0.0256 		0.0444
-v -0.0208 		0.0237 		0.0426
-v -0.0213 		0.0218 		0.0407
-v 0.0199 		0.0427 		-0.0422
-v 0.0157 		-0.041 		0.0897
-v 0.0109 		0.0483 		-0.0071
-v 0.0109 		0.0483 		-0.0071
-v 0.0211 		0.043 		-0.0403
-v 0.0134 		0.0483 		-0.0099
-v 0.0156 		0.0484 		-0.0122
-v 0.0143 		-0.0453 		0.0819
-v 0.0157 		-0.0424 		0.0848
-v 0.014 		0.0478 		0.0108
-v 0 		-0.0554 		0.0935
-v 0.0048 		0.0477 		0.0146
-v 0.0207 		0.0489 		-0.0359
-v 0.0211 		0.0482 		-0.0359
-v -0.013 		0.0328 		-0.0515
-v 0.0173 		0.0158 		0.0094
-v -0.0134 		0.0326 		-0.0513
-v 0.0014 		-0.055 		0.0938
-v 0.0077 		0.0473 		0.0328
-v 0.0078 		0.047 		0.0336
-v -0.0153 		0.0345 		-0.0503
-v -0.0186 		0.0484 		-0.0122
-v 0.0079 		0.0471 		0.0337
-v -0.0139 		0.0483 		-0.0071
-v 0.0076 		0.0471 		0.0337
-v -0.016 		0.0483 		-0.0095
-v 0.0073 		0.0473 		0.0338
-v -0.008 		0.0482 		-0.0038
-v -0.008 		0.0482 		-0.0038
-v -0.0108 		0.0482 		-0.0054
-v 0.0075 		0.0473 		0.0338
-v 0.0213 		0.0489 		-0.0341
-v -0.0046 		0.0482 		-0.0032
-v -0.0015 		0.0482 		-0.0027
-v 0.0019 		0.0482 		-0.0033
-v -0.0171 		0.0309 		-0.0494
-v -0.0127 		0.0345 		0.0534
-v -0.0174 		0.0343 		-0.0491
-v -0.0015 		-0.0523 		0.1001
-v -0.0143 		0.0334 		0.0522
-v -0.0158 		0.0321 		0.0509
-v -0.0037 		-0.0515 		0.1009
-v -0.0171 		0.0306 		0.0495
-v 0.0012 		-0.0466 		0.1058
-v -0.0032 		-0.0518 		0.1005
-v -0.0092 		-0.0006 		0.0183
-v 0.0188 		0.0488 		-0.0311
-v -0.0073 		-0.0012 		0.0177
-v -0.0027 		-0.0521 		0.1003
-v -0.0073 		-0.0013 		0.0177
-v -0.0054 		-0.0018 		0.0173
-v -0.0021 		-0.0522 		0.1001
-v 0.0222 		0.0431 		-0.0384
-v -0.0054 		-0.0018 		0.0173
-v -0.0166 		0.0491 		-0.0415
-v -0.0035 		-0.0021 		0.017
-v 0.0048 		0.0473 		0.0345
-v -0.0035 		0.0365 		-0.0534
-v 0.0165 		-0.0394 		0.0878
-v 0.0008 		-0.0462 		0.1062
-v -0.0033 		0.0369 		-0.0534
-v 0.0061 		0.0472 		0.0381
-v 0.0231 		0.0432 		-0.0363
-v -0.0035 		-0.0021 		0.017
-v 0.0005 		-0.0021 		0.017
-v 0.0005 		-0.0021 		0.017
-v 0.0214 		0.0489 		-0.0338
-v 0.0218 		0.0483 		-0.0338
-v 0.0084 		-0.0529 		0.0842
-v 0.0103 		-0.051 		0.086
-v 0.0024 		-0.0018 		0.0173
-v 0.0024 		-0.0018 		0.0173
-v 0.0237 		0.0431 		-0.0342
-v 0.0043 		-0.0013 		0.0177
-v 0.0044 		-0.0012 		0.0177
-v 0.0004 		0.0369 		-0.0534
-v 0.0084 		-0.0522 		0.0904
-v 0.0007 		0.0365 		-0.0534
-v 0.0171 		0.0342 		0.0263
-v 0.0174 		0.0329 		0.0256
-v 0.0178 		0.0307 		0.0243
-v 0.0097 		-0.0503 		0.0922
-v 0.0222 		0.0482 		-0.0317
-v 0.0158 		0.0372 		0.028
-v 0.0167 		0.0351 		0.0268
-v 0.0218 		0.0489 		-0.0319
-v 0.016 		0.0373 		0.0281
-v 0.0169 		0.0352 		0.0269
-v 0.0219 		0.0488 		-0.0316
-v -0.0038 		0.0353 		-0.0535
-v -0.0038 		0.0355 		-0.0535
-v -0.0037 		0.036 		-0.0535
-v -0.0043 		0.0352 		-0.0535
-v -0.0041 		-0.0529 		0.0986
-v 0.0003 		-0.0458 		0.1065
-v -0.0003 		-0.0456 		0.1068
-v -0.0009 		-0.0454 		0.1069
-v 0.0242 		0.0378 		-0.0368
-v -0.0181 		0.0275 		0.0499
-v -0.0181 		0.0275 		0.0499
-v -0.0183 		0.0272 		0.0497
-v 0.025 		0.0376 		-0.0347
-v -0.0032 		-0.0494 		0.1035
-v -0.0208 		0.0307 		0.0243
-v 0.0175 		0.033 		0.0256
-v -0.021 		0.0307 		0.0243
-v 0.0148 		0.0395 		0.0293
-v 0.0149 		0.0393 		0.0292
-v 0.0094 		-0.0517 		0.0882
-v 0.0137 		0.041 		0.0302
-v 0.015 		0.0393 		0.0292
-v 0.0109 		-0.0497 		0.0903
-v 0.0139 		0.0412 		0.0303
-v -0.0031 		-0.0497 		0.1032
-v -0.003 		-0.0499 		0.1029
-v 0.0242 		0.043 		-0.0321
-v -0.0028 		0.0353 		-0.0536
-v -0.0021 		0.0353 		-0.0536
-v 0.0255 		0.0373 		-0.0325
-v -0.0042 		-0.051 		0.1013
-v 0.018 		0.0307 		0.0243
-v 0.0119 		-0.0474 		0.0925
-v 0.0019 		-0.0444 		0.1071
-v 0.0245 		0.0427 		-0.0299
-v 0.0258 		0.037 		-0.0304
-v -0.0015 		-0.0508 		0.102
-v 0.0116 		0.0439 		0.0318
-v 0.0124 		0.0428 		0.0312
-v 0.011 		0.0444 		0.0321
-v 0.0125 		0.0429 		0.0313
-v 0.0111 		0.0445 		0.0322
-v -0.0019 		0.0353 		-0.0536
-v -0.0018 		0.0354 		-0.0536
-v 0.0094 		0.0457 		0.0329
-v 0.0095 		0.0459 		0.033
-v -0.0014 		0.0354 		-0.0536
-v -0.0014 		0.0354 		-0.0536
-v -0.0013 		0.0354 		-0.0536
-v -0.0014 		0.0354 		-0.0536
-v 0.0253 		0.0396 		-0.028
-v -0.0028 		-0.0502 		0.1027
-v -0.0017 		0.0354 		-0.0536
-v -0.0026 		-0.0504 		0.1024
-v -0.0024 		-0.0506 		0.1023
-v -0.0021 		-0.0507 		0.1021
-v 0.0221 		0.0488 		-0.0297
-v 0.0221 		0.0488 		-0.0294
-v 0.0225 		0.0481 		-0.0295
-v -0.0018 		-0.0508 		0.1021
-v 0.0077 		0.0055 		0.0098
-v -0.0016 		0.0354 		-0.0536
-v -0.0181 		0.0279 		0.0493
-v -0.0015 		0.0354 		-0.0536
-v -0.0015 		0.0354 		-0.0536
-v -0.0183 		0.0275 		0.0494
-v 0.022 		0.0488 		-0.0276
-v 0.0226 		0.0478 		-0.0273
-v 0.0226 		0.0478 		-0.0273
-v -0.0191 		0.0255 		0.0487
-v -0.0191 		0.0255 		0.0487
-v -0.0193 		0.0251 		0.0484
-v -0.0191 		0.0261 		0.0481
-v -0.0191 		0.026 		0.048
-v -0.0193 		0.0254 		0.0481
-v 0.0194 		0.0487 		-0.0272
-v -0.02 		0.0234 		0.0473
-v 0.0194 		0.0487 		-0.0272
-v -0.0199 		0.0234 		0.0473
-v -0.0201 		0.023 		0.047
-v -0.02 		0.0239 		0.0467
-v -0.0199 		0.0239 		0.0468
-v -0.0201 		0.023 		0.047
-v -0.0009 		-0.0522 		0.1001
-v 0.0194 		0.0487 		-0.0272
-v -0.0003 		-0.0521 		0.1003
-v -0.0206 		0.0213 		0.046
-v -0.0207 		0.0211 		0.0459
-v 0.0003 		-0.0518 		0.1005
-v -0.0206 		0.0213 		0.046
-v 0.0008 		-0.0515 		0.1009
-v 0.019 		0.0488 		-0.0299
-v -0.0206 		0.0215 		0.0457
-v -0.0012 		0.0354 		-0.0536
-v 0.0119 		-0.0488 		0.0882
-v -0.0011 		0.0354 		-0.0536
-v -0.001 		0.0353 		-0.0536
-v 0.013 		-0.0464 		0.0906
-v -0.0212 		0.0284 		0.023
-v -0.0213 		0.0284 		0.023
-v -0.0126 		0.034 		0.0541
-v -0.0127 		0.0339 		0.054
-v -0.0126 		0.034 		0.0541
-v -0.0121 		0.0343 		0.0543
-v -0.0126 		0.034 		0.054
-v 0.0226 		0.0478 		-0.0273
-v 0.022 		0.0487 		-0.0272
-v -0.0008 		0.0353 		-0.0536
-v 0.0008 		0.036 		-0.0535
-v 0.0107 		-0.0483 		0.0942
-v -0.0001 		0.0353 		-0.0536
-v 0.0194 		0.0487 		-0.0272
-v -0.0142 		0.0326 		0.0532
-v 0.0009 		0.0355 		-0.0535
-v -0.0142 		0.0326 		0.0532
-v 0.001 		0.0353 		-0.0535
-v 0.0113 		-0.0461 		0.0964
-v -0.0143 		0.0325 		0.0531
-v 0.0194 		0.0487 		-0.0272
-v -0.0128 		0.0338 		0.054
-v 0.0196 		0.0502 		-0.0258
-v 0.0126 		-0.0451 		0.0949
-v -0.017 		0.0478 		0.0108
-v -0.0142 		0.0328 		0.053
-v 0.0196 		0.0487 		-0.0258
-v 0.0192 		0.0486 		-0.0227
-v -0.0143 		0.0326 		0.053
-v 0.0137 		-0.0438 		0.0932
-v 0.0196 		0.0485 		-0.0183
-v 0.0011 		-0.0529 		0.0986
-v 0.0198 		0.009 		-0.0305
-v 0.0019 		-0.0523 		0.0991
-v -0.0156 		0.0311 		0.0522
-v -0.0156 		0.031 		0.0522
-v -0.0158 		0.0309 		0.0521
-v 0.0031 		0.037 		-0.0531
-v 0.0197 		0.0092 		-0.0305
-v 0.0188 		0.0077 		-0.0306
-v 0.0191 		0.0082 		-0.0308
-v 0.0033 		0.036 		-0.0532
-v 0.0031 		0.035 		-0.0533
-v 0.0034 		0.035 		-0.0533
-v 0.0192 		0.022 		-0.0439
-v 0.0061 		0.0031 		0.0131
-v 0.0211 		0.0229 		-0.042
-v 0.0036 		0.035 		-0.0532
-v 0.0073 		0.0037 		0.0136
-v 0.0062 		0.0031 		0.0132
-v -0.0012 		-0.0508 		0.1021
-v -0.0009 		-0.0507 		0.1021
-v 0.0062 		0.0031 		0.0132
-v -0.0006 		-0.0506 		0.1023
-v 0.0195 		0.0197 		-0.0427
-v -0.0004 		-0.0504 		0.1024
-v -0.0001 		-0.0502 		0.1027
-v 0.0196 		0.0189 		-0.0423
-v 0 		-0.0499 		0.1029
-v 0.0002 		-0.0497 		0.1032
-v 0.0203 		0.0172 		-0.0405
-v 0.0002 		-0.0494 		0.1035
-v 0.0197 		0.0179 		-0.0418
-v -0.0227 		0.009 		-0.0305
-v -0.0078 		0.0477 		0.0146
-v 0.0079 		0.0041 		0.0138
-v -0.0224 		0.0087 		-0.0307
-v -0.0224 		0.0087 		-0.0307
-v 0.0079 		0.0041 		0.0138
-v 0.0079 		0.0041 		0.0138
-v -0.0221 		0.0082 		-0.0305
-v -0.0234 		0.0104 		-0.0306
-v -0.0226 		0.0091 		-0.0305
-v -0.0212 		0.0069 		-0.0309
-v 0.0084 		-0.0479 		0.0991
-v 0.0079 		0.0003 		0.0191
-v 0.0068 		-0.0002 		0.0186
-v 0.0062 		-0.0005 		0.0183
-v 0.0085 		-0.0508 		0.0941
-v 0.0195 		0.0157 		-0.0406
-v 0.0094 		-0.049 		0.0959
-v -0.0193 		0.0049 		-0.0308
-v 0.0211 		0.0163 		-0.0385
-v -0.0201 		0.0059 		-0.0307
-v 0.019 		0.0133 		-0.0393
-v -0.0198 		0.0055 		-0.031
-v 0.0099 		-0.0471 		0.0978
-v -0.0192 		0.005 		-0.0308
-v -0.0156 		0.0313 		0.0519
-v -0.0156 		0.0313 		0.0518
-v -0.0158 		0.0311 		0.0519
-v -0.016 		0.0021 		-0.031
-v -0.0175 		0.0034 		-0.0312
-v 0.0189 		0.0124 		-0.0388
-v 0.0188 		0.012 		-0.0386
-v -0.017 		0.0294 		0.0511
-v -0.0171 		0.0291 		0.051
-v -0.0169 		0.0293 		0.0511
-v -0.0155 		0.0015 		-0.0313
-v -0.0169 		0.0298 		0.0507
-v -0.017 		0.0297 		0.0506
-v -0.0178 		0.0395 		0.0293
-v -0.0171 		0.0294 		0.0507
-v -0.0188 		0.0372 		0.028
-v -0.0179 		0.0393 		0.0292
-v -0.018 		0.0393 		0.0292
-v -0.019 		0.0373 		0.0281
-v 0.0218 		0.0155 		-0.0365
-v 0.0092 		0.0063 		0.0103
-v -0.0201 		0.0342 		0.0263
-v -0.0197 		0.0351 		0.0268
-v -0.0203 		0.0329 		0.0256
-v -0.0205 		0.033 		0.0256
-v -0.0198 		0.0352 		0.0269
-v 0.0222 		0.0149 		-0.0344
-v 0.008 		-0.0182 		0.1054
-v 0.014 		0.0102 		0.0076
-v 0.0082 		-0.0159 		0.104
-v 0.0094 		0.0065 		0.0104
-v 0.0095 		0.0063 		0.0103
-v -0.0167 		0.041 		0.0302
-v 0.0191 		0.0109 		-0.0369
-v -0.0168 		0.0412 		0.0303
-v 0.0195 		0.0101 		-0.0348
-v 0.0123 		0.0095 		0.0121
-v 0.0109 		0.008 		0.0113
-v 0.0125 		0.0092 		0.012
-v 0.0111 		0.0077 		0.0111
-v 0.0197 		0.0095 		-0.0326
-v 0.0068 		-0.0254 		0.1085
-v 0.0072 		-0.023 		0.1077
-v -0.0107 		0.0473 		0.0328
-v -0.0106 		0.0471 		0.0337
-v -0.0108 		0.047 		0.0336
-v 0.0076 		-0.0206 		0.1066
-v -0.0109 		0.0471 		0.0337
-v -0.0105 		0.0473 		0.0338
-v -0.0216 		-0.0287 		0.0795
-v -0.0213 		-0.0307 		0.0776
-v -0.0213 		-0.0304 		0.0779
-v -0.0214 		-0.03 		0.0783
-v -0.0208 		-0.0326 		0.0757
-v -0.0103 		0.0473 		0.0338
-v -0.0201 		-0.0344 		0.0739
-v -0.0203 		-0.0339 		0.0744
-v -0.0205 		-0.0333 		0.075
-v -0.0193 		-0.0362 		0.0721
-v -0.0015 		-0.0432 		0.1083
-v -0.0183 		-0.0379 		0.0704
-v -0.0188 		-0.037 		0.0713
-v -0.0191 		-0.0366 		0.0717
-v -0.014 		0.0444 		0.0321
-v -0.0141 		0.0445 		0.0322
-v -0.0024 		-0.0433 		0.1082
-v -0.0073 		-0.0459 		0.0624
-v -0.0146 		0.0439 		0.0318
-v -0.0081 		-0.0456 		0.0627
-v -0.0086 		-0.0454 		0.0628
-v -0.0054 		-0.0464 		0.0619
-v -0.0035 		-0.0467 		0.0616
-v -0.0047 		-0.0465 		0.0618
-v -0.0051 		-0.0464 		0.0619
-v -0.0015 		-0.0468 		0.0615
-v 0.0005 		-0.0467 		0.0616
-v 0.0024 		-0.0464 		0.0619
-v 0.0022 		-0.0464 		0.0619
-v 0.0017 		-0.0465 		0.0618
-v 0.0044 		-0.0459 		0.0624
-v -0.0033 		-0.0435 		0.108
-v -0.0171 		-0.0395 		0.0688
-v -0.0158 		-0.0409 		0.0674
-v 0.008 		-0.0427 		0.1043
-v -0.0099 		-0.0013 		-0.0316
-v -0.0168 		-0.0398 		0.0685
-v -0.017 		-0.0396 		0.0687
-v -0.0109 		-0.001 		-0.0313
-v -0.0041 		-0.0439 		0.1076
-v -0.0143 		-0.0422 		0.0661
-v -0.0144 		-0.0421 		0.0662
-v -0.0146 		-0.0419 		0.0664
-v -0.0127 		-0.0434 		0.0649
-v -0.011 		-0.0444 		0.0639
-v -0.0114 		-0.0442 		0.0641
-v -0.0118 		-0.0439 		0.0644
-v -0.0092 		-0.0452 		0.0631
-v -0.0152 		0.0014 		-0.0311
-v -0.0136 		0.0006 		-0.0314
-v -0.0183 		-0.0157 		0.0926
-v 0.0012 		-0.051 		0.1013
-v -0.0193 		-0.0174 		0.0909
-v -0.0191 		-0.017 		0.0913
-v -0.0188 		-0.0165 		0.0918
-v -0.0201 		-0.0191 		0.0891
-v -0.0109 		-0.0008 		-0.0313
-v -0.0208 		-0.021 		0.0873
-v -0.0205 		-0.0202 		0.0881
-v -0.0039 		-0.0414 		0.1089
-v -0.0203 		-0.0197 		0.0886
-v -0.0213 		-0.0229 		0.0854
-v -0.0093 		-0.0016 		-0.0313
-v 0.0015 		-0.0505 		0.1018
-v -0.0216 		-0.0248 		0.0835
-v -0.0214 		-0.0236 		0.0847
-v -0.0213 		-0.0232 		0.0851
-v -0.0217 		-0.0268 		0.0815
-v -0.0127 		-0.0102 		0.0981
-v -0.0118 		-0.0097 		0.0986
-v 0.0018 		-0.05 		0.1023
-v -0.0143 		-0.0113 		0.0969
-v -0.0087 		-0.0019 		-0.0316
-v -0.0158 		-0.0127 		0.0956
-v -0.0146 		-0.0116 		0.0967
-v -0.0144 		-0.0114 		0.0968
-v -0.0171 		-0.0141 		0.0942
-v -0.017 		-0.014 		0.0943
-v -0.0168 		-0.0138 		0.0945
-v -0.0204 		-0.0336 		0.0747
-v -0.019 		-0.0368 		0.0715
-v -0.0124 		0.0457 		0.0329
-v -0.0125 		0.0459 		0.033
-v 0.0257 		0.0375 		-0.0282
-v 0.0257 		0.0376 		-0.0281
-v 0.0259 		0.0367 		-0.0282
-v -0.0214 		-0.0303 		0.078
-v 0.0261 		0.0338 		-0.0284
-v 0.0035 		-0.0548 		0.0922
-v -0.0014 		-0.0031 		-0.0315
-v -0.0084 		-0.0456 		0.0627
-v 0.0261 		0.0342 		-0.0285
-v -0.0063 		-0.0026 		-0.0314
-v 0.0258 		0.0367 		-0.0282
-v -0.005 		-0.0465 		0.0618
-v 0.0264 		0.0309 		-0.0288
-v -0.0026 		-0.0029 		-0.0317
-v -0.0015 		-0.003 		-0.0316
-v -0.0081 		-0.002 		-0.0314
-v -0.0074 		-0.0021 		-0.0317
-v 0.002 		-0.0465 		0.0618
-v -0.0062 		-0.0023 		-0.0314
-v -0.0015 		-0.003 		-0.0314
-v -0.0015 		-0.0031 		-0.0317
-v 0.0134 		0.0106 		0.0128
-v 0.0148 		0.0131 		0.0142
-v 0.0137 		0.0111 		0.0131
-v 0.0139 		0.011 		0.013
-v 0.015 		0.0129 		0.014
-v 0.0158 		0.015 		0.0153
-v 0.016 		0.0149 		0.0152
-v 0.0164 		0.0161 		0.0159
-v 0.0167 		0.0171 		0.0165
-v 0.0169 		0.017 		0.0164
-v 0.0034 		-0.0026 		-0.0314
-v -0.0169 		-0.0396 		0.0687
-v 0.005 		-0.0455 		0.1049
-v 0.0046 		-0.0021 		-0.0317
-v -0.0009 		-0.003 		-0.0317
-v -0.0006 		-0.0029 		-0.0317
-v -0.0145 		-0.0421 		0.0662
-v -0.0116 		-0.0441 		0.0642
-v -0.0015 		-0.041 		0.1093
-v -0.0014 		-0.003 		-0.0316
-v -0.0027 		-0.0411 		0.1092
-v 0.0033 		-0.0023 		-0.0314
-v -0.0014 		-0.003 		-0.0314
-v 0.0054 		-0.0478 		0.1025
-v 0.0238 		0.0301 		-0.0123
-v 0.0053 		-0.0466 		0.1037
-v -0.0204 		-0.02 		0.0883
-v -0.0214 		-0.0233 		0.085
-v 0.007 		-0.0471 		0.1018
-v 0.0215 		0.012 		-0.0304
-v 0.0222 		0.0132 		-0.0301
-v 0.0069 		-0.0456 		0.1032
-v -0.019 		-0.0168 		0.0915
-v 0.0227 		0.0139 		-0.0303
-v -0.0116 		-0.0095 		0.0988
-v 0.0065 		-0.0442 		0.1047
-v 0.0059 		-0.0428 		0.106
-v -0.0145 		-0.0115 		0.0968
-v -0.0169 		-0.014 		0.0943
-v 0.0246 		0.0192 		-0.0296
-v -0.0221 		0.022 		-0.0439
-v -0.0211 		-0.0341 		0.082
-v 0.0248 		0.0202 		-0.0297
-v 0.0249 		0.0206 		-0.0295
-v -0.0202 		-0.0374 		0.0787
-v 0.0072 		-0.0412 		0.1059
-v -0.0187 		-0.0405 		0.0756
-v -0.0078 		0.0473 		0.0345
-v 0.0245 		0.0193 		-0.0296
-v 0.0062 		-0.0397 		0.1073
-v -0.0015 		-0.0386 		0.1102
-v -0.0154 		0.0428 		0.0312
-v -0.0213 		-0.0322 		0.08
-v -0.0155 		0.0429 		0.0313
-v 0.005 		-0.0385 		0.1085
-v -0.003 		-0.0387 		0.1101
-v -0.0204 		-0.0355 		0.0767
-v -0.0044 		-0.0391 		0.1097
-v -0.0189 		-0.0387 		0.0735
-v 0.0231 		0.0152 		-0.03
-v 0.0235 		0.0164 		-0.03
-v 0.0074 		-0.0377 		0.1072
-v 0.0059 		-0.0363 		0.1086
-v -0.0091 		0.0472 		0.0381
-v -0.0097 		0.0472 		0.0362
-v -0.0083 		-0.0492 		0.0669
-v -0.0049 		-0.05 		0.066
-v 0.0255 		0.0221 		-0.0295
-v -0.0084 		-0.0474 		0.0648
-v 0.005 		-0.0416 		0.1072
-v -0.0223 		0.0208 		-0.0433
-v -0.005 		-0.0483 		0.0639
-v -0.024 		0.0229 		-0.042
-v -0.0225 		0.0189 		-0.0423
-v 0.0068 		-0.0341 		0.1085
-v -0.0232 		0.0172 		-0.0405
-v 0.005 		-0.0328 		0.1097
-v -0.0226 		0.0179 		-0.0418
-v 0.0077 		-0.0318 		0.1081
-v -0.0225 		0.0186 		-0.0421
-v 0.0056 		-0.0304 		0.1095
-v -0.0015 		-0.0503 		0.0657
-v 0.002 		-0.05 		0.066
-v 0.0011 		-0.0439 		0.1076
-v 0.002 		-0.0537 		0.0966
-v 0.0029 		-0.053 		0.0973
-v 0.0003 		-0.0435 		0.108
-v 0.002 		-0.0483 		0.0639
-v -0.0015 		-0.0486 		0.0636
-v 0.0028 		-0.0544 		0.0945
-v -0.0006 		-0.0433 		0.1082
-v 0.004 		-0.0535 		0.0953
-v -0.0224 		0.0165 		-0.041
-v -0.0224 		0.0157 		-0.0406
-v 0.0062 		-0.0279 		0.1091
-v -0.0221 		0.0143 		-0.0399
-v -0.024 		0.0163 		-0.0385
-v -0.0218 		0.0124 		-0.0388
-v -0.0215 		0.0116 		-0.0385
-v 0.0259 		0.0249 		-0.0292
-v 0.0261 		0.0276 		-0.0291
-v 0.0261 		0.0283 		-0.0289
-v 0.0256 		0.0238 		-0.0293
-v 0.0257 		0.0241 		-0.0294
-v 0.0258 		0.025 		-0.0292
-v -0.0217 		0.0121 		-0.0387
-v -0.0217 		0.012 		-0.0386
-v 0.0025 		-0.0517 		0.0998
-v -0.0247 		0.0155 		-0.0365
-v 0.018 		0.0221 		0.0194
-v 0.003 		-0.051 		0.1005
-v 0.0009 		-0.0414 		0.1089
-v -0.0003 		-0.0411 		0.1092
-v 0.0038 		-0.0522 		0.0981
-v -0.0167 		-0.0433 		0.0727
-v -0.0143 		-0.0457 		0.0703
-v 0.0045 		-0.0512 		0.0991
-v -0.0114 		-0.0477 		0.0684
-v -0.0251 		0.0149 		-0.0344
-v 0.002 		-0.0494 		0.1029
-v -0.0169 		-0.0415 		0.0707
-v -0.0144 		-0.044 		0.0682
-v 0.0034 		-0.0502 		0.1013
-v -0.0115 		-0.046 		0.0662
-v 0.0036 		-0.0493 		0.1022
-v 0.0181 		0.0238 		0.0203
-v 0.0183 		0.0237 		0.0203
-v 0.0182 		0.0284 		0.023
-v 0.0182 		0.0283 		0.0229
-v 0.0181 		0.0261 		0.0216
-v 0.0184 		0.0261 		0.0216
-v 0.0183 		0.0284 		0.023
-v 0.0222 		0.0221 		-0.0401
-v 0.0184 		-0.0307 		0.0854
-v -0.0204 		0.0096 		-0.0378
-v -0.022 		0.0109 		-0.0369
-v -0.0193 		0.0076 		-0.0371
-v 0.0242 		0.0267 		-0.0377
-v 0.0181 		-0.0273 		0.0888
-v -0.019 		0.006 		-0.0351
-v -0.0187 		0.0067 		-0.0368
-v 0.0172 		-0.0239 		0.0921
-v -0.0179 		-0.0438 		0.0798
-v -0.019 		0.0071 		-0.037
-v 0.0231 		0.0214 		-0.0381
-v 0.0186 		-0.0287 		0.0835
-v -0.0224 		0.0101 		-0.0348
-v 0.0183 		-0.0253 		0.0869
-v 0.0174 		-0.0219 		0.0903
-v 0.0173 		0.0193 		0.0177
-v 0.025 		0.0262 		-0.0356
-v -0.0192 		0.0053 		-0.033
-v 0.0175 		0.0192 		0.0177
-v 0.0178 		0.0215 		0.019
-v 0.018 		0.0214 		0.019
-v -0.0226 		0.0095 		-0.0326
-v 0.0259 		0.0315 		-0.033
-v -0.0184 		-0.0422 		0.0776
-v 0.0157 		-0.0208 		0.0952
-v 0.0137 		-0.018 		0.098
-v 0.0255 		0.0258 		-0.0335
-v -0.0202 		-0.0377 		0.0859
-v -0.0193 		-0.0409 		0.0827
-v -0.0224 		0.0087 		-0.0307
-v -0.0211 		0.0071 		-0.0309
-v -0.0207 		-0.0359 		0.0839
-v -0.0198 		-0.0392 		0.0807
-v -0.0187 		-0.0208 		0.0952
-v -0.0202 		-0.0239 		0.0921
-v -0.0211 		-0.0273 		0.0888
-v -0.0214 		-0.0307 		0.0854
-v -0.0178 		-0.0425 		0.0915
-v -0.0078 		0.0471 		0.0409
-v -0.0091 		0.0466 		0.0406
-v -0.0189 		-0.0188 		0.0934
-v -0.0109 		0.0456 		0.04
-v 0.0237 		0.0207 		-0.0361
-v -0.0204 		-0.0219 		0.0903
-v 0.0113 		-0.0156 		0.1005
-v -0.0213 		-0.0253 		0.0869
-v -0.0216 		-0.0287 		0.0835
-v 0.0242 		0.0201 		-0.034
-v -0.0171 		0.0049 		-0.0362
-v 0.0258 		0.0253 		-0.0313
-v 0.0245 		0.0196 		-0.0318
-v 0.0158 		0.0132 		0.0196
-v 0.016 		0.0137 		0.0199
-v 0.0161 		0.0138 		0.02
-v -0.0151 		0.0027 		-0.0354
-v -0.0151 		0.0026 		-0.0354
-v -0.0151 		0.0026 		-0.0354
-v -0.015 		0.0026 		-0.0354
-v 0.0162 		0.0137 		0.0199
-v -0.0114 		-0.0136 		0.1024
-v -0.0109 		-0.0005 		-0.0335
-v -0.0108 		-0.0001 		-0.0347
-v 0.0169 		0.0158 		0.0212
-v 0.0167 		0.0153 		0.0209
-v -0.0124 		0.0009 		-0.0348
-v 0.0014 		-0.0391 		0.1097
-v -0.0143 		-0.0156 		0.1005
-v -0.0123 		0.0008 		-0.0348
-v -0.0153 		0.0019 		-0.0332
-v 0.0169 		0.0159 		0.0213
-v 0 		-0.0387 		0.1101
-v 0.018 		0.0202 		0.0241
-v 0.018 		0.0203 		0.0241
-v -0.0167 		-0.018 		0.098
-v 0.0181 		0.0202 		0.0241
-v 0.0184 		0.0248 		0.027
-v -0.0115 		-0.0115 		0.1007
-v 0.0183 		0.0225 		0.0255
-v 0.0183 		0.0244 		0.0267
-v 0.0183 		0.0225 		0.0255
-v -0.0144 		-0.0135 		0.0987
-v 0.0184 		0.0225 		0.0255
-v -0.0169 		-0.016 		0.0962
-v 0.002 		-0.0488 		0.1035
-v 0.017 		0.0158 		0.0213
-v -0.0154 		0.0016 		-0.0313
-v 0.002 		-0.0482 		0.1041
-v -0.0193 		-0.028 		0.0956
-v -0.0187 		-0.041 		0.0897
-v 0.0037 		-0.0484 		0.1031
-v -0.0202 		-0.0312 		0.0924
-v -0.0179 		-0.0439 		0.0868
-v -0.0195 		-0.0394 		0.0878
-v -0.0204 		-0.0344 		0.0892
-v -0.0187 		-0.0424 		0.0848
-v -0.0198 		-0.026 		0.0939
-v -0.0207 		-0.0292 		0.0906
-v 0.0036 		-0.0475 		0.104
-v 0.0034 		-0.0466 		0.1049
-v -0.021 		-0.0326 		0.0873
-v -0.0015 		-0.0532 		0.0704
-v 0.0018 		-0.0529 		0.0707
-v -0.0148 		0.0012 		-0.0314
-v -0.0153 		0.0015 		-0.0313
-v -0.0048 		-0.0529 		0.0707
-v 0.0019 		-0.0516 		0.0683
-v -0.0008 		-0.0029 		-0.0317
-v -0.0015 		-0.0519 		0.068
-v -0.0178 		-0.0368 		0.0972
-v -0.0014 		-0.003 		-0.0317
-v -0.0015 		-0.003 		-0.0317
-v -0.0049 		-0.0516 		0.0683
-v -0.0087 		-0.0017 		-0.0316
-v 0.003 		-0.0458 		0.1057
-v -0.018 		-0.0396 		0.0943
-v 0.0025 		-0.0451 		0.1064
-v -0.0179 		-0.0321 		0.0986
-v -0.0187 		-0.035 		0.0957
-v 0.0045 		-0.0444 		0.1059
-v -0.019 		-0.038 		0.0927
-v -0.016 		-0.0465 		0.0771
-v 0.0038 		-0.0434 		0.1069
-v -0.0137 		-0.0488 		0.0748
-v -0.0288 		0.0367 		-0.0282
-v -0.0288 		0.0367 		-0.0282
-v -0.0288 		0.0366 		-0.0282
-v -0.0288 		0.0365 		-0.0282
-v -0.0288 		0.0368 		-0.0282
-v -0.0288 		0.0367 		-0.0282
-v -0.0187 		-0.03 		0.0971
-v -0.0294 		0.0309 		-0.0288
-v -0.0164 		-0.045 		0.0749
-v -0.0195 		-0.0331 		0.0941
-v -0.0198 		-0.0362 		0.091
-v -0.014 		-0.0474 		0.0725
-v 0.0035 		-0.0375 		0.1095
-v -0.0112 		-0.0493 		0.0706
-v -0.0092 		0.0465 		0.0408
-v -0.0066 		0.0478 		0.0105
-v -0.0066 		0.0478 		0.0105
-v -0.0065 		0.0478 		0.0104
-v 0.0253 		0.0222 		-0.0295
-v -0.0066 		0.0488 		0.0105
-v -0.0052 		0.0489 		0.009
-v -0.0075 		0.0478 		0.0124
-v -0.0074 		0.0478 		0.0122
-v -0.0075 		0.0487 		0.0125
-v -0.011 		-0.0507 		0.0729
-v -0.0052 		0.0479 		0.0089
-v 0.0185 		0.0248 		0.027
-v 0.0084 		-0.0136 		0.1024
-v 0.0262 		0.0312 		-0.0309
-v 0.0159 		-0.0188 		0.0934
-v 0.0175 		0.018 		0.0226
-v 0.0175 		0.018 		0.0227
-v 0.0177 		0.018 		0.0226
-v 0.0139 		-0.016 		0.0962
-v -0.0078 		0.0486 		0.0146
-v 0.0114 		-0.0135 		0.0987
-v -0.0075 		0.0485 		0.0167
-v -0.008 		-0.0521 		0.0715
-v 0.0086 		-0.0115 		0.1007
-v 0.0225 		0.0143 		-0.0322
-v -0.0082 		-0.0507 		0.0692
-v -0.0045 		0.0479 		0.0086
-v -0.0076 		0.0478 		0.0127
-v -0.0071 		0.0477 		0.0175
-v -0.0075 		0.0477 		0.0167
-v -0.0078 		0.0477 		0.015
-v -0.0034 		0.0489 		0.008
-v -0.0141 		-0.0501 		0.0838
-v -0.0015 		0.0489 		0.0077
-v 0.0175 		-0.0344 		0.0892
-v 0.0005 		0.0489 		0.008
-v -0.0121 		-0.0521 		0.0818
-v -0.0015 		0.0479 		0.0076
-v -0.0034 		0.0479 		0.008
-v 0.0172 		-0.0312 		0.0924
-v 0.0263 		0.0311 		-0.0288
-v 0.0263 		0.0308 		-0.0288
-v 0.0263 		0.0309 		-0.0288
-v 0.0005 		0.0479 		0.008
-v -0.0149 		-0.0491 		0.0816
-v 0.0163 		-0.028 		0.0956
-v -0.0127 		-0.0512 		0.0794
-v -0.0042 		0.0479 		0.0084
-v -0.0035 		0.0479 		0.008
-v -0.0034 		0.0479 		0.008
-v 0.0029 		-0.0426 		0.1077
-v -0.0015 		0.0479 		0.0081
-v 0.0005 		0.0479 		0.008
-v 0.002 		-0.0419 		0.1084
-v -0.0179 		-0.0251 		0.0985
-v -0.0184 		-0.0229 		0.0969
-v 0.0005 		0.0479 		0.008
-v 0.0015 		0.0479 		0.0086
-v 0.004 		-0.0406 		0.1082
-v 0.0028 		-0.0397 		0.1091
-v 0.009 		0.0049 		0.0143
-v 0.0095 		0.0053 		0.0145
-v -0.0158 		-0.0314 		0.1025
-v -0.017 		-0.034 		0.0999
-v -0.0155 		-0.0479 		0.0793
-v -0.0132 		-0.0501 		0.0771
-v 0.002 		0.0479 		0.0088
-v -0.0166 		-0.0293 		0.1013
-v 0.0008 		-0.0313 		0.1113
-v -0.0015 		-0.0311 		0.1115
-v 0.018 		-0.0326 		0.0873
-v -0.0288 		0.0249 		-0.0292
-v -0.0288 		0.025 		-0.0293
-v -0.0287 		0.0248 		-0.0292
-v -0.0098 		-0.0538 		0.0802
-v -0.0037 		-0.0313 		0.1113
-v 0.0177 		-0.0292 		0.0906
-v -0.0287 		0.0247 		-0.0292
-v -0.0071 		-0.055 		0.079
-v -0.0288 		0.0257 		-0.0291
-v 0.0168 		-0.026 		0.0939
-v -0.0288 		0.0249 		-0.0292
-v 0.0228 		0.0144 		-0.0302
-v 0.0226 		0.0139 		-0.0303
-v -0.0285 		0.0221 		-0.0295
-v 0.0226 		0.014 		-0.0303
-v 0.001 		-0.0287 		0.1112
-v 0.0096 		0.0053 		0.0146
-v 0.0121 		0.0077 		0.0161
-v -0.0015 		-0.0285 		0.1114
-v 0.0125 		0.0082 		0.0164
-v 0.0135 		0.0094 		0.0172
-v 0.0139 		0.0099 		0.0175
-v 0.0126 		0.0083 		0.0164
-v -0.004 		-0.0287 		0.1112
-v 0.0139 		0.01 		0.0175
-v 0.015 		-0.0396 		0.0943
-v 0.0127 		0.0082 		0.0164
-v 0.014 		0.0099 		0.0175
-v 0.0148 		-0.0368 		0.0972
-v 0.016 		-0.038 		0.0927
-v 0.0012 		-0.0261 		0.1109
-v 0.015 		0.0118 		0.0187
-v 0.0151 		0.0118 		0.0187
-v -0.0015 		-0.0259 		0.1112
-v 0.0151 		0.0118 		0.0187
-v -0.0015 		0.0486 		0.0146
-v -0.0042 		-0.0261 		0.1109
-v -0.011 		-0.0182 		0.1054
-v 0.0096 		0.0053 		0.0145
-v -0.0137 		-0.0201 		0.1035
-v 0.0111 		0.0066 		0.0154
-v 0.0106 		0.0062 		0.0151
-v 0.0112 		0.0067 		0.0154
-v -0.0275 		0.0192 		-0.0296
-v 0.0112 		0.0067 		0.0154
-v -0.016 		-0.0224 		0.1012
-v -0.0273 		0.0187 		-0.0298
-v -0.0276 		0.0198 		-0.0296
-v -0.0276 		0.0194 		-0.0298
-v -0.0275 		0.0192 		-0.0296
-v -0.0269 		0.0176 		-0.0298
-v 0.0157 		-0.035 		0.0957
-v 0.0086 		0.0007 		0.0195
-v 0.0096 		0.0013 		0.0202
-v 0.0112 		0.0025 		0.0213
-v 0.0127 		0.0038 		0.0226
-v 0.0185 		0.0247 		-0.0455
-v 0.014 		0.0052 		0.0241
-v 0.0151 		0.0068 		0.0257
-v 0.0168 		-0.0362 		0.091
-v 0.0162 		0.0085 		0.0273
-v 0.017 		0.0103 		0.0291
-v 0.0165 		-0.0331 		0.0941
-v 0.0177 		0.0121 		0.031
-v 0.0181 		0.014 		0.0329
-v 0.0184 		0.0159 		0.0348
-v 0.0061 		0.0466 		0.0406
-v 0.0049 		0.0471 		0.0409
-v 0.0185 		0.0244 		-0.0454
-v 0.0079 		0.0456 		0.04
-v 0.014 		-0.034 		0.0999
-v 0.0029 		-0.0319 		0.1107
-v 0.0128 		-0.0314 		0.1025
-v 0.0185 		0.0424 		-0.044
-v -0.0102 		-0.0529 		0.0777
-v 0.0034 		-0.0293 		0.1106
-v -0.0075 		-0.0542 		0.0764
-v 0.0149 		-0.0321 		0.0986
-v -0.0257 		0.0139 		-0.0303
-v -0.0045 		-0.055 		0.0757
-v 0.0136 		-0.0293 		0.1013
-v -0.0106 		-0.0519 		0.0753
-v -0.0112 		-0.0159 		0.104
-v -0.0077 		-0.0532 		0.0739
-v -0.014 		-0.0178 		0.1021
-v -0.0164 		-0.0202 		0.0997
-v 0.0022 		0.0489 		0.009
-v -0.0047 		-0.0541 		0.0731
-v 0.0022 		0.0479 		0.0089
-v 0.0023 		0.0479 		0.009
-v 0.0036 		0.0478 		0.0105
-v 0.0036 		0.0488 		0.0105
-v 0.0036 		0.0478 		0.0105
-v 0.0037 		0.0478 		0.0106
-v 0.0045 		0.0487 		0.0125
-v -0.0241 		0.0115 		-0.0303
-v 0.0048 		0.0486 		0.0146
-v -0.0121 		-0.0271 		0.1069
-v 0.0045 		0.0478 		0.0124
-v -0.017 		-0.0452 		0.0887
-v 0.0046 		0.0478 		0.0127
-v -0.0141 		-0.0291 		0.1048
-v -0.0158 		-0.0478 		0.0861
-v 0.0048 		0.0477 		0.015
-v 0.0046 		0.0477 		0.0159
-v -0.0127 		-0.0247 		0.1059
-v -0.0166 		-0.0466 		0.084
-v -0.0149 		-0.0269 		0.1038
-v 0.0038 		-0.0268 		0.1103
-v -0.0173 		-0.0453 		0.0819
-v -0.0251 		0.0221 		-0.0401
-v -0.0132 		-0.0224 		0.1048
-v -0.0155 		-0.0246 		0.1026
-v 0.0049 		0.0428 		0.0384
-v 0.0066 		0.0428 		0.0384
-v 0.0067 		0.0428 		0.0384
-v 0.0003 		-0.0363 		0.1107
-v -0.0173 		-0.0272 		0.1
-v 0.0062 		0.0465 		0.0408
-v 0.0079 		0.0455 		0.0402
-v -0.0015 		-0.0362 		0.1109
-v -0.026 		0.0214 		-0.0381
-v -0.0032 		-0.0363 		0.1107
-v -0.0271 		0.0267 		-0.0377
-v 0.0005 		-0.0338 		0.1111
-v -0.0015 		-0.0337 		0.1113
-v -0.0071 		-0.0242 		0.1097
-v -0.0279 		0.0262 		-0.0356
-v -0.0035 		-0.0338 		0.1111
-v -0.0098 		-0.0254 		0.1085
-v -0.0045 		-0.0209 		0.1097
-v 0.0183 		0.0268 		0.0282
-v -0.0075 		-0.0217 		0.1089
-v 0.0183 		0.0271 		0.0284
-v 0.0183 		0.0271 		0.0284
-v -0.0284 		0.0258 		-0.0335
-v 0.018 		0.0294 		0.0299
-v -0.0288 		0.0315 		-0.033
-v 0.0184 		0.0271 		0.0284
-v 0.0181 		0.0294 		0.0299
-v 0.018 		0.0294 		0.0299
-v 0.0157 		-0.03 		0.0971
-v 0.0175 		0.0316 		0.0313
-v 0.0175 		0.0316 		0.0313
-v 0.0161 		0.0358 		0.0339
-v 0.002 		-0.0368 		0.1103
-v 0.016 		0.0358 		0.034
-v 0.0043 		-0.0352 		0.1097
-v 0.0162 		0.0359 		0.034
-v -0.0102 		-0.023 		0.1077
-v 0.016 		0.0359 		0.034
-v 0.0025 		-0.0343 		0.1106
-v 0.0177 		0.0316 		0.0313
-v -0.0077 		-0.0192 		0.108
-v -0.0106 		-0.0206 		0.1066
-v -0.0062 		-0.0021 		-0.0336
-v -0.0062 		-0.0018 		-0.0344
-v 0.0169 		0.0338 		0.0327
-v 0.0169 		0.0338 		0.0327
-v -0.0086 		-0.0009 		-0.0346
-v 0.017 		0.0338 		0.0327
-v 0.0185 		0.049 		-0.0398
-v 0.0014 		-0.0235 		0.1104
-v 0.0034 		-0.0021 		-0.0336
-v 0.0033 		-0.0018 		-0.0344
-v -0.0015 		-0.0233 		0.1107
-v 0.0003 		-0.0021 		-0.0344
-v -0.0014 		-0.0026 		-0.0336
-v 0.0186 		0.0116 		-0.0385
-v -0.0014 		-0.0023 		-0.0344
-v 0.0111 		0.043 		0.0385
-v -0.0044 		-0.002 		-0.0344
-v -0.0014 		-0.0026 		-0.0336
-v -0.0014 		-0.0026 		-0.0336
-v -0.0014 		-0.0026 		-0.0336
-v 0.0095 		0.0444 		0.0393
-v 0.0149 		-0.0251 		0.0985
-v 0.013 		-0.0224 		0.1012
-v 0.0107 		-0.0201 		0.1035
-v 0.0151 		0.0378 		0.0352
-v 0.015 		0.0379 		0.0353
-v 0.0151 		0.0378 		0.0352
-v 0.0139 		0.0397 		0.0364
-v 0.0154 		-0.0229 		0.0969
-v 0.0134 		-0.0202 		0.0997
-v 0.011 		-0.0178 		0.1021
-v -0.0184 		0.0458 		-0.0454
-v 0.0151 		0.0379 		0.0353
-v 0.014 		0.0397 		0.0365
-v 0.0185 		0.0245 		-0.0455
-v 0.0045 		0.0485 		0.0167
-v 0.0139 		0.0397 		0.0365
-v 0.0112 		-0.0291 		0.1048
-v 0.0126 		0.0414 		0.0375
-v 0.0091 		-0.0271 		0.1069
-v -0.0179 		0.0491 		-0.0438
-v 0.0127 		0.0414 		0.0376
-v -0.0184 		0.0491 		-0.0435
-v 0.0112 		0.0428 		0.0384
-v -0.02 		0.0491 		-0.0417
-v -0.0193 		0.0491 		-0.0425
-v 0.0119 		-0.0269 		0.1038
-v 0.011 		0.0428 		0.0384
-v 0.0111 		0.0428 		0.0384
-v 0.0097 		-0.0247 		0.1059
-v 0.0088 		0.0428 		0.0385
-v 0.0125 		0.0414 		0.0376
-v 0.0126 		0.0414 		0.0375
-v 0.0096 		0.0444 		0.0394
-v 0.0112 		0.043 		0.0386
-v 0.0143 		-0.0272 		0.1
-v 0.0087 		0.0428 		0.0385
-v 0.0045 		0.0477 		0.0167
-v 0.0125 		-0.0246 		0.1026
-v 0.0041 		0.0477 		0.0175
-v -0.0052 		0.0483 		0.0202
-v 0.0103 		-0.0224 		0.1048
-v -0.0066 		0.0484 		0.0187
-v -0.0066 		0.0476 		0.0186
-v -0.0045 		0.0476 		0.0205
-v -0.0052 		0.0476 		0.0202
-v -0.0057 		0.0476 		0.0197
-v -0.0116 		0.0418 		-0.0507
-v -0.0135 		0.0429 		-0.0496
-v -0.0044 		-0.0235 		0.1104
-v 0.0184 		0.0199 		0.0387
-v -0.0121 		0.0454 		-0.0494
-v 0.0185 		0.0192 		0.0381
-v 0.0185 		0.0179 		0.0367
-v 0.0015 		-0.0209 		0.1097
-v 0.0182 		0.0213 		0.0401
-v 0.0181 		0.0218 		0.0406
-v 0.0178 		0.0232 		0.0421
-v 0.0177 		0.0237 		0.0425
-v -0.0015 		-0.0207 		0.11
-v 0.017 		0.0255 		0.0444
-v -0.0152 		0.044 		-0.0483
-v -0.0136 		0.0468 		-0.0481
-v 0.0163 		0.027 		0.0458
-v 0.0162 		0.0273 		0.0462
-v 0.0151 		0.029 		0.0478
-v 0.0153 		0.0287 		0.0476
-v -0.0266 		0.0207 		-0.0361
-v 0.014 		0.0306 		0.0494
-v 0.0128 		0.0319 		0.0507
-v 0.0127 		0.032 		0.0509
-v 0.0113 		0.0332 		0.0521
-v 0.0112 		0.0333 		0.0522
-v -0.0271 		0.0201 		-0.034
-v -0.0169 		0.0449 		-0.0469
-v 0.0096 		0.0345 		0.0533
-v 0.008 		0.0003 		0.0192
-v 0.0062 		-0.0005 		0.0183
-v 0.0042 		-0.0242 		0.1097
-v 0.0186 		0.016 		0.0348
-v 0.0097 		0.0013 		0.0202
-v 0.0113 		0.0025 		0.0213
-v 0.0045 		-0.0217 		0.1089
-v 0.0128 		0.0038 		0.0227
-v 0.0141 		0.0053 		0.0241
-v -0.0274 		0.0196 		-0.0318
-v 0.0153 		0.0068 		0.0257
-v 0.0048 		-0.0192 		0.108
-v 0.0163 		0.0085 		0.0274
-v 0.0171 		0.0103 		0.0291
-v -0.0287 		0.0253 		-0.0313
-v 0.0178 		0.0121 		0.031
-v 0.0183 		0.014 		0.0329
-v -0.0097 		0.0406 		-0.0517
-v 0.0186 		0.0199 		0.0387
-v -0.0137 		-0.0395 		0.103
-v 0.0183 		0.0218 		0.0407
-v 0.0178 		0.0237 		0.0426
-v 0.0005 		0.0476 		0.0211
-v -0.0015 		0.0476 		0.0215
-v -0.0282 		0.0222 		-0.0295
-v 0.0005 		0.0482 		0.0212
-v -0.0015 		0.0482 		0.0215
-v -0.0143 		-0.0417 		0.1009
-v 0.0171 		0.0256 		0.0444
-v -0.0034 		0.0482 		0.0212
-v -0.0145 		-0.0439 		0.0986
-v 0.0163 		0.0273 		0.0462
-v -0.0291 		0.0312 		-0.0309
-v 0.0153 		0.029 		0.0479
-v 0.0115 		-0.0439 		0.0986
-v 0.0113 		-0.0417 		0.1009
-v 0.0107 		-0.0395 		0.103
-v 0.0062 		-0.0006 		0.0183
-v 0.0128 		-0.0426 		0.0973
-v 0.0126 		-0.0401 		0.0998
-v -0.0056 		0.0379 		-0.053
-v -0.0254 		0.0143 		-0.0322
-v -0.0051 		0.0388 		-0.053
-v -0.0155 		-0.0401 		0.0998
-v -0.0045 		0.0395 		-0.0529
-v -0.0158 		-0.0426 		0.0973
-v 0.0036 		0.0484 		0.0187
-v 0.0022 		0.0483 		0.0202
-v -0.0167 		-0.0385 		0.0985
-v -0.0169 		-0.0412 		0.0959
-v 0.0016 		0.0476 		0.0205
-v -0.0034 		0.0476 		0.0211
-v -0.0034 		0.0476 		0.0211
-v 0.0022 		0.0476 		0.0202
-v 0.0036 		0.0476 		0.0186
-v 0.0036 		0.0476 		0.0186
-v 0.0032 		0.0476 		0.0191
-v -0.0288 		0.025 		-0.0293
-v -0.0287 		0.0246 		-0.0293
-v -0.0041 		0.0476 		0.0208
-v 0.0177 		0.0213 		0.046
-v 0.0171 		0.023 		0.047
-v 0.0176 		0.0213 		0.046
-v -0.0292 		0.0306 		-0.0288
-v 0.0177 		0.0211 		0.0458
-v -0.0077 		0.0393 		-0.0524
-v 0.0177 		0.0215 		0.0456
-v 0.0177 		0.0214 		0.0457
-v 0.014 		-0.0412 		0.0959
-v -0.0292 		0.0308 		-0.0288
-v 0.0171 		0.023 		0.047
-v -0.0288 		0.0365 		-0.0283
-v -0.0288 		0.0367 		-0.0283
-v -0.0069 		0.0405 		-0.0523
-v 0.0137 		-0.0385 		0.0985
-v -0.0292 		0.0309 		-0.0288
-v -0.0061 		0.0416 		-0.0522
-v 0.017 		0.0234 		0.0473
-v 0.017 		0.0234 		0.0473
-v 0.017 		0.0239 		0.0468
-v 0.0162 		0.0255 		0.0487
-v 0.0163 		0.0251 		0.0484
-v 0.0163 		0.0254 		0.0482
-v -0.0114 		-0.0357 		0.1069
-v -0.0127 		-0.0375 		0.1051
-v -0.0252 		0.0135 		-0.0303
-v 0.0161 		0.0255 		0.0487
-v -0.0255 		0.0139 		-0.0303
-v 0.0151 		0.0275 		0.0499
-v 0.0153 		0.0272 		0.0497
-v -0.0255 		0.014 		-0.0302
-v 0.0162 		0.0258 		0.048
-v 0.0162 		0.026 		0.048
-v 0.0153 		0.0275 		0.0494
-v -0.0104 		0.0438 		-0.0506
-v -0.009 		0.0456 		-0.0504
-v 0.0097 		-0.0375 		0.1051
-v 0.0151 		0.0275 		0.0499
-v 0.014 		0.0294 		0.0511
-v 0.0055 		-0.001 		-0.0345
-v 0.0084 		-0.0357 		0.1069
-v 0.0152 		0.0278 		0.0493
-v 0.0151 		0.028 		0.0493
-v -0.0075 		0.0473 		0.0323
-v 0.0119 		-0.0378 		0.1021
-v -0.0078 		0.0482 		0.0345
-v -0.0075 		0.0483 		0.0324
-v -0.0138 		-0.0355 		0.1044
-v -0.0149 		-0.0378 		0.1021
-v 0.0127 		0.0311 		0.0522
-v -0.0104 		0.0475 		-0.0492
-v -0.0149 		-0.0335 		0.1035
-v -0.016 		-0.0359 		0.1011
-v -0.0076 		0.0019 		-0.0036
-v -0.005 		0.0425 		-0.0522
-v 0.0046 		0.0019 		-0.0036
-v -0.0285 		0.0397 		-0.028
-v -0.0066 		0.0474 		0.0304
-v -0.0226 		0.049 		-0.0379
-v -0.0066 		0.0484 		0.0305
-v -0.0228 		0.049 		-0.0375
-v 0.0109 		-0.0355 		0.1044
-v -0.0075 		0.0473 		0.0326
-v -0.0068 		0.0473 		0.0326
-v -0.0045 		0.0473 		0.0326
-v -0.0076 		0.0473 		0.0327
-v -0.0114 		-0.0444 		0.1026
-v -0.0076 		0.0473 		0.0328
-v -0.024 		0.0482 		-0.0359
-v -0.0052 		0.0475 		0.0289
-v -0.0116 		-0.0462 		0.1009
-v -0.0236 		0.0489 		-0.0359
-v -0.0052 		0.0485 		0.0289
-v 0.0068 		0.0406 		-0.0517
-v -0.0075 		0.0437 		-0.0514
-v -0.0115 		-0.0394 		0.1056
-v -0.0062 		0.0448 		-0.0513
-v -0.0124 		-0.0412 		0.1037
-v -0.0047 		0.0457 		-0.0512
-v -0.0271 		0.043 		-0.0321
-v -0.0129 		-0.0431 		0.1018
-v -0.0274 		0.0427 		-0.0299
-v 0.0061 		0.0456 		-0.0504
-v -0.0073 		0.047 		-0.0503
-v -0.0131 		-0.0451 		0.0998
-v -0.0055 		0.0481 		-0.0502
-v 0.0075 		0.0438 		-0.0506
-v -0.0282 		0.0396 		-0.028
-v 0.0075 		0.0475 		-0.0492
-v -0.0253 		0.0221 		-0.0088
-v -0.0087 		0.0422 		-0.0515
-v 0.0058 		0.0422 		-0.0515
-v -0.011 		-0.0427 		0.1043
-v -0.0186 		0.0504 		-0.0394
-v -0.0201 		0.049 		-0.0362
-v -0.0077 		0.0473 		0.0338
-v -0.0077 		0.0473 		0.0338
-v -0.0077 		0.0473 		0.0338
-v -0.0203 		0.0489 		-0.0356
-v 0.0055 		0.0492 		-0.0491
-v 0.0053 		0.0493 		-0.0491
-v 0.0056 		0.0493 		-0.049
-v -0.008 		-0.0455 		0.1049
-v -0.0117 		0.0492 		-0.0479
-v 0.005 		0.0506 		-0.0478
-v -0.0275 		0.0424 		-0.0278
-v -0.0275 		0.0423 		-0.0277
-v -0.0275 		0.0424 		-0.0277
-v -0.0116 		0.0492 		-0.0479
-v -0.0275 		0.0424 		-0.0278
-v -0.0151 		0.0481 		-0.0467
-v -0.0275 		0.0425 		-0.0278
-v -0.0132 		0.0492 		-0.0471
-v -0.0117 		0.0492 		-0.0478
-v -0.0142 		0.0492 		-0.0466
-v 0.0084 		0.0492 		-0.0459
-v 0.005 		0.0492 		-0.0478
-v -0.0275 		0.0424 		-0.0277
-v -0.0117 		0.0492 		-0.0479
-v -0.0165 		0.0492 		-0.0451
-v -0.0165 		0.0492 		-0.0451
-v -0.0164 		0.0492 		-0.0451
-v -0.0148 		0.0492 		-0.0462
-v -0.0139 		0.0505 		-0.0445
-v 0.0087 		0.0418 		-0.0507
-v -0.0247 		0.0483 		-0.0338
-v -0.0237 		0.0489 		-0.0355
-v 0.0092 		0.0454 		-0.0494
-v 0.0106 		0.0429 		-0.0496
-v 0.013 		-0.0359 		0.1011
-v 0.0108 		0.0468 		-0.0481
-v 0.0119 		-0.0335 		0.1035
-v 0.0123 		0.044 		-0.0483
-v -0.0078 		0.0473 		0.0346
-v -0.0077 		0.0472 		0.0354
-v 0.0005 		0.0486 		0.0279
-v 0.014 		0.0449 		-0.0469
-v -0.0275 		0.0423 		-0.0278
-v -0.0034 		0.0475 		0.0279
-v -0.011 		0.0492 		-0.0461
-v -0.0139 		0.0492 		-0.0445
-v 0.0086 		-0.0462 		0.1009
-v 0.0084 		-0.0444 		0.1026
-v 0.0101 		-0.0451 		0.0998
-v 0.0088 		0.0492 		-0.0479
-v 0.0087 		0.0492 		-0.0479
-v 0.0099 		-0.0431 		0.1018
-v 0.0088 		0.0492 		-0.0478
-v 0.0113 		0.0492 		-0.0466
-v 0.0122 		0.0481 		-0.0467
-v 0.0094 		-0.0412 		0.1037
-v 0.0085 		-0.0394 		0.1056
-v 0.0135 		0.0492 		-0.0451
-v -0.0084 		0.0492 		-0.0491
-v 0.0136 		0.0492 		-0.0451
-v 0.0136 		0.0492 		-0.0451
-v -0.0082 		0.0493 		-0.0491
-v -0.0066 		0.0493 		-0.0494
-v 0.0109 		0.0505 		-0.0445
-v -0.0058 		0.0493 		-0.0496
-v -0.0048 		0.0493 		-0.0497
-v 0.0094 		-0.0335 		0.1064
-v 0.0109 		0.0492 		-0.0445
-v 0.0103 		-0.0313 		0.1057
-v -0.0099 		0.0493 		-0.0485
-v 0.0084 		-0.0294 		0.1076
-v -0.0084 		0.0493 		-0.049
-v -0.0083 		0.0493 		-0.0491
-v -0.008 		0.0506 		-0.0478
-v 0.0156 		0.0458 		-0.0454
-v -0.008 		0.0492 		-0.0478
-v 0.0155 		0.0491 		-0.0435
-v 0.0161 		0.0491 		-0.0428
-v 0.0171 		0.0491 		-0.0417
-v -0.0071 		0.0035 		0.0087
-v -0.0072 		0.0036 		0.0087
-v -0.0015 		0.0476 		0.0276
-v -0.0053 		0.0032 		0.0085
-v -0.0073 		0.0033 		0.0086
-v -0.0054 		0.0027 		0.0082
-v 0.0005 		0.0475 		0.0279
-v -0.0091 		0.0041 		0.009
-v -0.0034 		0.0486 		0.0279
-v 0.0122 		0.0315 		-0.0505
-v 0.0122 		0.0315 		-0.0505
-v -0.0014 		0.038 		-0.0533
-v -0.003 		0.0373 		-0.0534
-v 0.0122 		0.0315 		-0.0505
-v -0.0027 		0.0376 		-0.0533
-v -0.0015 		0.0026 		0.0081
-v -0.0034 		0.0029 		0.0083
-v 0.014 		0.0301 		-0.0495
-v -0.0015 		0.0486 		0.0276
-v -0.0023 		0.0378 		-0.0533
-v -0.0019 		0.0379 		-0.0533
-v 0.0157 		0.0284 		-0.0483
-v 0.0146 		0.0295 		-0.0491
-v 0.0023 		0.0032 		0.0085
-v 0.0004 		0.0029 		0.0083
-v 0.0024 		0.0027 		0.0082
-v 0.0005 		0.0024 		0.008
-v -0.0015 		0.0023 		0.008
-v 0.0041 		0.0035 		0.0087
-v 0.0042 		0.0036 		0.0087
-v 0.0043 		0.0033 		0.0086
-v -0.0034 		0.0024 		0.008
-v 0.0167 		0.0271 		-0.0474
-v 0.0172 		0.0265 		-0.0469
-v 0.0183 		0.0248 		-0.0457
-v -0.0039 		0.0473 		0.0326
-v -0.0028 		0.0473 		0.0325
-v -0.0021 		0.0473 		0.0325
-v -0.0014 		0.0473 		0.0326
-v -0.0009 		0.0473 		0.0325
-v -0.0015 		0.0473 		0.0326
-v -0.0002 		0.0473 		0.0325
-v -0.0014 		0.0409 		-0.0528
-v 0.0009 		0.0473 		0.0326
-v 0.002 		0.0473 		0.0326
-v -0.0039 		0.0401 		-0.0528
-v 0.0053 		0.0379 		-0.0525
-v -0.0031 		0.0405 		-0.0528
-v -0.0109 		0.0051 		0.0096
-v -0.0089 		0.0045 		0.0093
-v 0.0075 		0.0387 		-0.0518
-v 0.0036 		0.0474 		0.0304
-v 0.0036 		0.0484 		0.0305
-v 0.0045 		0.0483 		0.0324
-v -0.0023 		0.0408 		-0.0528
-v 0.0022 		0.0475 		0.0289
-v 0.0022 		0.0485 		0.0289
-v 0.0056 		0.0364 		-0.0527
-v 0.0045 		0.0473 		0.0323
-v 0.0057 		0.0349 		-0.0528
-v -0.001 		0.0379 		-0.0533
-v -0.0054 		0.0018 		0.0123
-v -0.0006 		0.0378 		-0.0533
-v -0.0002 		0.0376 		-0.0533
-v -0.0054 		0.0005 		0.0141
-v 0.0038 		0.0473 		0.0326
-v 0.0046 		0.0473 		0.0326
-v -0.0054 		0.0018 		0.0123
-v 0.0046 		0.0473 		0.0326
-v 0.0001 		0.0373 		-0.0534
-v 0.008 		0.0348 		-0.0521
-v 0.0046 		0.0473 		0.0327
-v 0.0046 		0.0473 		0.0328
-v 0.0074 		0.0341 		-0.0524
-v 0.008 		0.0339 		-0.0522
-v -0.0006 		0.0408 		-0.0528
-v 0.0002 		0.0405 		-0.0528
-v 0.001 		0.0401 		-0.0528
-v 0.0047 		0.0473 		0.0338
-v 0.0047 		0.0473 		0.0338
-v 0.0047 		0.0473 		0.0338
-v 0.0017 		0.0395 		-0.0529
-v 0.0047 		0.0473 		0.0338
-v 0.0048 		0.0473 		0.0346
-v 0.0048 		0.0473 		0.0346
-v -0.0015 		0.0482 		0.0345
-v -0.0014 		0.0437 		-0.0521
-v -0.0039 		0.0431 		-0.0521
-v -0.0027 		0.0435 		-0.0521
-v 0.0048 		0.0482 		0.0345
-v -0.0014 		0.0464 		-0.0512
-v 0.0047 		0.0472 		0.0354
-v -0.0031 		0.0462 		-0.0512
-v -0.0014 		0.049 		-0.0501
-v -0.0055 		0.0471 		0.0398
-v -0.0066 		0.0472 		0.0385
-v -0.0052 		0.0471 		0.0409
-v -0.0035 		0.0488 		-0.0501
-v -0.0072 		0.0471 		0.0409
-v -0.0053 		0.0471 		0.0412
-v -0.0078 		0.0471 		0.0412
-v -0.0072 		0.0471 		0.0412
-v -0.0014 		0.0493 		-0.05
-v -0.0073 		0.0471 		0.0416
-v -0.0036 		0.0493 		-0.0499
-v -0.0031 		0.0493 		-0.0499
-v -0.0066 		0.048 		0.0386
-v -0.0052 		0.0471 		0.0401
-v -0.0052 		0.0479 		0.0401
-v -0.0068 		0.0472 		0.0382
-v -0.0075 		0.0472 		0.0366
-v -0.0002 		0.0435 		-0.0521
-v -0.0075 		0.0481 		0.0367
-v -0.0075 		0.0472 		0.0366
-v 0.001 		0.0431 		-0.0521
-v -0.0045 		0.0471 		0.0405
-v 0.0002 		0.0462 		-0.0512
-v 0.0018 		0.0457 		-0.0512
-v -0.004 		0.0469 		0.0408
-v -0.004 		0.0469 		0.0408
-v -0.0035 		0.0469 		0.041
-v -0.0035 		0.0469 		0.041
-v 0.0006 		0.0488 		-0.0501
-v 0.0007 		0.0493 		-0.0499
-v -0.0011 		0.0493 		-0.05
-v -0.0015 		0.0469 		0.0408
-v -0.0032 		0.0469 		0.0408
-v 0.0022 		0.0388 		-0.053
-v -0.0033 		0.0469 		0.041
-v -0.0032 		0.0469 		0.041
-v 0.0027 		0.0379 		-0.053
-v -0.0015 		0.0469 		0.041
-v 0.0032 		0.0416 		-0.0522
-v 0.0003 		0.0469 		0.0408
-v 0.001 		0.0469 		0.0408
-v 0.0004 		0.0469 		0.0408
-v 0.0001 		0.0469 		0.041
-v 0.0004 		0.0469 		0.041
-v 0.0004 		0.0469 		0.041
-v 0.0005 		0.0469 		0.041
-v -0.0033 		0.0469 		0.0408
-v -0.0034 		0.0469 		0.0408
-v -0.0034 		0.0469 		0.041
-v -0.0033 		0.0469 		0.041
-v 0.001 		0.0469 		0.0408
-v 0.0005 		0.0469 		0.041
-v -0.0041 		0.0471 		0.0407
-v -0.0038 		0.0471 		0.0409
-v -0.0038 		0.0471 		0.0408
-v -0.0035 		0.0469 		0.041
-v -0.0034 		0.0471 		0.0412
-v 0.0005 		0.0479 		0.0411
-v 0.002 		0.0471 		0.0402
-v 0.0018 		0.0471 		0.0403
-v 0.0011 		0.0471 		0.0407
-v 0.0008 		0.0471 		0.0409
-v 0.0004 		0.0471 		0.0412
-v 0.0005 		0.0469 		0.0411
-v 0.0004 		0.047 		0.0411
-v 0.0001 		0.047 		0.0411
-v -0.0015 		0.0479 		0.0414
-v 0.0001 		0.047 		0.0411
-v -0.0001 		0.0471 		0.0412
-v -0.0001 		0.0471 		0.0412
-v -0.0001 		0.0471 		0.0412
-v -0.0002 		0.0471 		0.0412
-v -0.0015 		0.0471 		0.0414
-v -0.0033 		0.047 		0.0411
-v -0.0034 		0.0469 		0.0411
-v -0.0032 		0.047 		0.0411
-v -0.0031 		0.047 		0.0411
-v -0.0034 		0.0479 		0.0411
-v -0.0029 		0.0471 		0.0412
-v -0.0029 		0.0471 		0.0412
-v -0.0029 		0.0471 		0.0412
-v -0.0029 		0.0471 		0.0412
-v -0.0028 		0.0471 		0.0412
-v -0.0038 		0.0471 		0.0409
-v -0.0038 		0.0471 		0.0409
-v -0.0038 		0.0471 		0.0409
-v -0.0038 		0.0471 		0.0409
-v 0.0022 		0.0471 		0.0401
-v 0.0022 		0.0471 		0.0401
-v 0.0022 		0.0471 		0.0409
-v 0.0042 		0.0471 		0.0409
-v 0.0023 		0.0471 		0.0412
-v 0.0043 		0.0471 		0.0412
-v 0.0048 		0.0471 		0.0412
-v 0.0043 		0.0471 		0.0416
-v 0.0022 		0.0479 		0.0401
-v 0.0022 		0.0471 		0.0401
-v 0.0036 		0.0472 		0.0385
-v 0.0034 		0.0472 		0.0388
-v 0.0036 		0.048 		0.0386
-v 0.0045 		0.0481 		0.0367
-v 0.0045 		0.0472 		0.0366
-v 0.0044 		0.0472 		0.0368
-# 2330 vertices
-
-g group_0_10988977
-
-usemtl color_10988977
-s 0
-
-f 9 	11 	859
-f 2009 	1998 	13
-f 35 	36 	2009
-f 5 	315 	6
-f 18 	315 	5
-f 20 	23 	7
-f 20 	7 	8
-f 7 	23 	13
-f 25 	2009 	29
-f 2 	24 	30
-f 103 	28 	102
-f 28 	2009 	74
-f 2009 	13 	35
-f 10 	34 	12
-f 10 	32 	34
-f 37 	38 	33
-f 2204 	30 	85
-f 19 	39 	24
-f 30 	24 	89
-f 45 	52 	44
-f 339 	111 	2164
-f 47 	49 	46
-f 44 	52 	53
-f 51 	2165 	54
-f 52 	64 	63
-f 44 	53 	43
-f 63 	53 	52
-f 33 	58 	37
-f 27 	2310 	41
-f 2290 	2296 	17
-f 17 	16 	2290
-f 2319 	2290 	16
-f 822 	2319 	15
-f 58 	61 	37
-f 45 	1728 	52
-f 62 	39 	19
-f 2088 	65 	62
-f 38 	37 	60
-f 62 	57 	39
-f 63 	83 	53
-f 62 	65 	57
-f 55 	75 	67
-f 65 	69 	72
-f 47 	68 	2042
-f 48 	70 	50
-f 50 	73 	55
-f 50 	70 	73
-f 102 	28 	74
-f 57 	65 	72
-f 18 	25 	330
-f 2042 	49 	47
-f 29 	330 	25
-f 53 	77 	43
-f 72 	277 	265
-f 43 	77 	71
-f 80 	81 	82
-f 53 	83 	77
-f 87 	84 	108
-f 33 	66 	58
-f 90 	58 	66
-f 89 	24 	39
-f 95 	90 	66
-f 118 	91 	119
-f 92 	119 	91
-f 2143 	2144 	89
-f 30 	89 	2144
-f 75 	55 	73
-f 155 	2041 	154
-f 51 	54 	2198
-f 2041 	155 	66
-f 23 	36 	35
-f 23 	35 	13
-f 2165 	94 	54
-f 23 	96 	36
-f 74 	36 	96
-f 66 	158 	95
-f 2165 	98 	94
-f 28 	99 	29
-f 100 	99 	28
-f 94 	98 	343
-f 98 	97 	101
-f 100 	28 	103
-f 101 	343 	98
-f 10 	73 	70
-f 2160 	105 	104
-f 84 	87 	120
-f 105 	2160 	106
-f 942 	101 	107
-f 104 	107 	97
-f 99 	333 	29
-f 105 	107 	104
-f 101 	97 	107
-f 330 	29 	333
-f 100 	333 	99
-f 106 	107 	105
-f 84 	1 	108
-f 2159 	109 	110
-f 2160 	110 	106
-f 2159 	111 	109
-f 333 	100 	112
-f 112 	100 	96
-f 96 	103 	102
-f 96 	102 	74
-f 81 	118 	82
-f 107 	110 	348
-f 110 	109 	348
-f 306 	822 	80
-f 106 	110 	107
-f 103 	96 	100
-f 111 	348 	109
-f 113 	115 	116
-f 118 	81 	16
-f 117 	113 	116
-f 111 	339 	348
-f 87 	121 	120
-f 122 	115 	113
-f 122 	113 	117
-f 124 	2049 	123
-f 1727 	127 	123
-f 124 	123 	129
-f 130 	129 	123
-f 127 	130 	123
-f 1727 	255 	127
-f 131 	127 	255
-f 131 	132 	130
-f 131 	130 	127
-f 135 	86 	125
-f 86 	2257 	125
-f 126 	125 	2257
-f 2258 	2236 	126
-f 115 	340 	403
-f 126 	2239 	128
-f 115 	403 	116
-f 116 	403 	117
-f 129 	149 	124
-f 333 	112 	117
-f 217 	209 	129
-f 130 	217 	129
-f 132 	219 	130
-f 95 	133 	90
-f 58 	90 	61
-f 73 	10 	12
-f 117 	112 	122
-f 340 	115 	112
-f 73 	12 	75
-f 61 	60 	37
-f 61 	90 	133
-f 134 	133 	95
-f 122 	112 	115
-f 66 	155 	158
-f 145 	2049 	148
-f 137 	2049 	141
-f 316 	317 	6
-f 140 	143 	144
-f 140 	144 	141
-f 142 	70 	48
-f 332 	18 	331
-f 149 	150 	147
-f 148 	147 	150
-f 95 	160 	134
-f 147 	124 	149
-f 1232 	952 	153
-f 138 	151 	139
-f 150 	143 	145
-f 140 	145 	143
-f 139 	151 	159
-f 95 	158 	160
-f 145 	148 	150
-f 143 	183 	144
-f 157 	1900 	161
-f 139 	159 	142
-f 164 	1905 	167
-f 137 	144 	1066
-f 1907 	1908 	170
-f 165 	1907 	170
-f 141 	144 	137
-f 171 	1910 	174
-f 177 	1066 	175
-f 144 	175 	1066
-f 211 	199 	160
-f 356 	223 	188
-f 181 	1913 	180
-f 178 	1913 	181
-f 146 	134 	160
-f 151 	14 	159
-f 155 	185 	158
-f 154 	185 	155
-f 186 	144 	184
-f 183 	184 	144
-f 182 	1916 	190
-f 186 	175 	144
-f 185 	188 	158
-f 160 	158 	188
-f 159 	14 	26
-f 150 	200 	143
-f 183 	143 	191
-f 192 	136 	193
-f 149 	240 	150
-f 129 	213 	149
-f 184 	183 	195
-f 191 	197 	183
-f 195 	183 	197
-f 207 	129 	209
-f 1610 	1614 	93
-f 196 	210 	198
-f 93 	1614 	194
-f 176 	146 	160
-f 191 	143 	200
-f 213 	129 	207
-f 244 	240 	206
-f 220 	130 	219
-f 1089 	356 	188
-f 130 	218 	217
-f 199 	176 	160
-f 203 	149 	213
-f 2060 	56 	135
-f 209 	214 	207
-f 213 	207 	206
-f 203 	213 	206
-f 214 	206 	207
-f 218 	130 	220
-f 216 	160 	215
-f 220 	219 	226
-f 211 	160 	216
-f 202 	225 	205
-f 2060 	135 	224
-f 160 	188 	222
-f 215 	160 	222
-f 221 	225 	202
-f 209 	217 	214
-f 125 	224 	135
-f 225 	227 	205
-f 220 	226 	218
-f 226 	214 	218
-f 217 	218 	214
-f 206 	251 	244
-f 214 	252 	206
-f 205 	227 	208
-f 30 	2144 	88
-f 191 	200 	197
-f 197 	248 	195
-f 89 	39 	231
-f 175 	186 	233
-f 39 	57 	231
-f 221 	194 	234
-f 229 	2144 	230
-f 89 	231 	235
-f 175 	233 	177
-f 233 	577 	177
-f 221 	234 	225
-f 237 	238 	239
-f 184 	195 	186
-f 225 	236 	227
-f 195 	233 	186
-f 2143 	2147 	237
-f 235 	2147 	89
-f 241 	150 	240
-f 200 	150 	241
-f 242 	237 	239
-f 149 	203 	240
-f 225 	234 	236
-f 241 	240 	244
-f 203 	206 	240
-f 251 	249 	244
-f 239 	535 	242
-f 251 	206 	252
-f 243 	242 	535
-f 252 	214 	253
-f 226 	253 	214
-f 1656 	45 	236
-f 200 	244 	197
-f 200 	241 	244
-f 598 	577 	599
-f 599 	233 	247
-f 195 	247 	233
-f 248 	247 	195
-f 234 	1656 	236
-f 248 	197 	249
-f 244 	249 	197
-f 198 	210 	250
-f 2144 	859 	88
-f 253 	226 	398
-f 57 	72 	254
-f 198 	250 	201
-f 271 	131 	255
-f 254 	231 	57
-f 201 	250 	2035
-f 231 	258 	235
-f 255 	256 	257
-f 257 	276 	255
-f 1163 	1250 	256
-f 91 	120 	121
-f 91 	121 	92
-f 257 	256 	261
-f 239 	238 	246
-f 260 	2182 	256
-f 263 	246 	238
-f 245 	246 	263
-f 91 	21 	120
-f 246 	537 	239
-f 261 	279 	257
-f 231 	254 	258
-f 239 	537 	535
-f 264 	720 	259
-f 254 	72 	265
-f 254 	265 	266
-f 255 	270 	271
-f 205 	262 	457
-f 255 	267 	270
-f 246 	542 	537
-f 254 	266 	258
-f 262 	208 	264
-f 205 	208 	262
-f 208 	633 	264
-f 242 	2144 	237
-f 243 	2144 	242
-f 230 	2144 	232
-f 228 	2144 	229
-f 232 	2144 	243
-f 264 	633 	720
-f 268 	275 	270
-f 271 	270 	275
-f 270 	267 	268
-f 272 	2144 	273
-f 267 	255 	276
-f 277 	72 	69
-f 276 	257 	279
-f 69 	76 	277
-f 267 	276 	268
-f 279 	268 	276
-f 369 	366 	268
-f 275 	132 	271
-f 131 	271 	132
-f 278 	2144 	272
-f 269 	2144 	281
-f 281 	2144 	278
-f 273 	2144 	228
-f 268 	366 	275
-f 366 	367 	275
-f 283 	284 	280
-f 283 	280 	274
-f 279 	368 	268
-f 280 	284 	221
-f 201 	2035 	204
-f 261 	375 	279
-f 282 	288 	283
-f 368 	370 	268
-f 287 	288 	282
-f 288 	93 	283
-f 373 	368 	279
-f 283 	93 	284
-f 194 	221 	284
-f 93 	194 	284
-f 293 	2141 	298
-f 120 	41 	84
-f 298 	297 	299
-f 1 	84 	59
-f 1748 	1751 	287
-f 894 	2144 	269
-f 119 	82 	118
-f 302 	1920 	301
-f 193 	1918 	302
-f 299 	303 	293
-f 294 	293 	303
-f 293 	298 	299
-f 308 	309 	1964
-f 305 	1964 	309
-f 81 	80 	822
-f 299 	297 	318
-f 310 	1981 	313
-f 822 	15 	81
-f 17 	118 	16
-f 294 	303 	292
-f 15 	16 	81
-f 315 	316 	6
-f 314 	6 	317
-f 22 	21 	91
-f 299 	318 	303
-f 1751 	288 	287
-f 91 	118 	22
-f 17 	22 	118
-f 892 	2144 	894
-f 928 	927 	2198
-f 27 	120 	21
-f 2198 	318 	2195
-f 319 	2195 	318
-f 297 	319 	318
-f 41 	120 	27
-f 223 	222 	188
-f 59 	84 	41
-f 3 	324 	323
-f 326 	327 	2164
-f 3 	323 	1
-f 108 	1 	323
-f 328 	327 	326
-f 315 	18 	332
-f 330 	331 	18
-f 2164 	327 	339
-f 340 	79 	371
-f 304 	371 	79
-f 335 	334 	31
-f 334 	337 	31
-f 328 	951 	327
-f 152 	341 	153
-f 60 	335 	38
-f 54 	94 	343
-f 80 	82 	345
-f 344 	345 	82
-f 82 	119 	344
-f 119 	92 	342
-f 342 	344 	119
-f 156 	157 	152
-f 152 	157 	161
-f 943 	107 	348
-f 942 	107 	943
-f 346 	347 	87
-f 87 	347 	121
-f 87 	108 	346
-f 2159 	2164 	111
-f 949 	348 	951
-f 163 	162 	164
-f 163 	164 	167
-f 92 	121 	342
-f 347 	342 	121
-f 166 	165 	170
-f 348 	339 	951
-f 166 	350 	167
-f 327 	951 	339
-f 174 	169 	171
-f 1937 	952 	1117
-f 951 	328 	952
-f 1117 	952 	328
-f 306 	80 	374
-f 168 	171 	169
-f 353 	132 	363
-f 219 	132 	353
-f 275 	363 	132
-f 172 	178 	173
-f 365 	363 	275
-f 349 	161 	163
-f 295 	151 	138
-f 169 	351 	170
-f 369 	268 	370
-f 173 	354 	174
-f 181 	173 	178
-f 373 	279 	375
-f 382 	375 	261
-f 180 	179 	182
-f 180 	182 	190
-f 356 	1089 	357
-f 291 	358 	295
-f 382 	261 	384
-f 189 	360 	190
-f 291 	355 	358
-f 226 	219 	361
-f 353 	361 	219
-f 295 	358 	362
-f 358 	201 	362
-f 180 	359 	181
-f 365 	275 	367
-f 189 	187 	192
-f 192 	193 	302
-f 374 	371 	304
-f 374 	304 	306
-f 305 	309 	300
-f 301 	300 	309
-f 345 	374 	80
-f 337 	376 	31
-f 384 	261 	385
-f 310 	313 	307
-f 324 	377 	323
-f 324 	329 	377
-f 346 	108 	377
-f 323 	377 	108
-f 301 	372 	302
-f 368 	379 	370
-f 368 	373 	379
-f 308 	378 	309
-f 380 	377 	329
-f 375 	381 	373
-f 381 	379 	373
-f 308 	307 	313
-f 329 	78 	380
-f 336 	380 	78
-f 383 	313 	312
-f 314 	317 	311
-f 312 	311 	317
-f 403 	340 	371
-f 375 	382 	381
-f 316 	315 	332
-f 385 	387 	384
-f 387 	381 	384
-f 382 	384 	381
-f 317 	316 	386
-f 403 	371 	407
-f 389 	332 	331
-f 374 	409 	371
-f 388 	292 	387
-f 385 	388 	387
-f 333 	338 	330
-f 331 	330 	338
-f 303 	387 	292
-f 419 	418 	347
-f 423 	424 	346
-f 420 	423 	346
-f 390 	357 	1089
-f 425 	420 	346
-f 377 	425 	346
-f 362 	151 	295
-f 367 	366 	393
-f 429 	430 	380
-f 362 	14 	151
-f 370 	379 	369
-f 379 	393 	369
-f 366 	369 	393
-f 483 	393 	379
-f 381 	485 	379
-f 403 	404 	117
-f 392 	647 	617
-f 355 	196 	198
-f 303 	492 	387
-f 1393 	1230 	153
-f 1393 	153 	341
-f 355 	198 	358
-f 363 	361 	353
-f 363 	365 	361
-f 408 	409 	374
-f 409 	411 	371
-f 374 	345 	408
-f 367 	393 	365
-f 393 	361 	365
-f 413 	414 	344
-f 341 	152 	394
-f 398 	226 	361
-f 413 	344 	418
-f 342 	418 	344
-f 393 	399 	361
-f 322 	282 	320
-f 342 	347 	418
-f 287 	282 	322
-f 390 	1089 	395
-f 396 	287 	322
-f 428 	429 	380
-f 428 	380 	336
-f 320 	282 	321
-f 283 	274 	321
-f 201 	358 	198
-f 282 	283 	321
-f 204 	14 	362
-f 362 	201 	204
-f 490 	387 	492
-f 396 	322 	1945
-f 398 	361 	399
-f 396 	1748 	287
-f 404 	338 	117
-f 428 	336 	405
-f 296 	2133 	410
-f 285 	410 	2133
-f 336 	1070 	405
-f 407 	371 	411
-f 345 	412 	408
-f 221 	202 	280
-f 416 	345 	414
-f 412 	345 	416
-f 345 	344 	414
-f 410 	615 	1810
-f 2132 	286 	285
-f 419 	347 	424
-f 347 	346 	424
-f 422 	426 	415
-f 425 	377 	430
-f 377 	380 	430
-f 333 	117 	338
-f 422 	321 	426
-f 320 	321 	422
-f 400 	1750 	402
-f 274 	431 	426
-f 321 	274 	426
-f 423 	433 	424
-f 274 	280 	431
-f 430 	423 	425
-f 420 	425 	423
-f 406 	429 	405
-f 428 	405 	429
-f 477 	434 	438
-f 437 	441 	432
-f 432 	441 	435
-f 434 	452 	438
-f 436 	456 	439
-f 429 	440 	430
-f 431 	456 	436
-f 407 	411 	403
-f 404 	403 	411
-f 443 	445 	442
-f 478 	442 	445
-f 412 	416 	408
-f 409 	408 	416
-f 414 	448 	416
-f 418 	414 	413
-f 1983 	210 	444
-f 424 	418 	419
-f 409 	447 	411
-f 442 	432 	451
-f 443 	442 	451
-f 453 	437 	442
-f 432 	442 	437
-f 338 	404 	391
-f 450 	259 	507
-f 452 	434 	449
-f 438 	452 	455
-f 453 	442 	454
-f 438 	455 	444
-f 439 	457 	446
-f 455 	397 	444
-f 456 	457 	439
-f 1340 	464 	406
-f 262 	446 	457
-f 402 	397 	455
-f 450 	446 	262
-f 460 	462 	449
-f 463 	464 	459
-f 460 	1778 	462
-f 647 	392 	394
-f 462 	452 	449
-f 459 	464 	461
-f 462 	400 	452
-f 152 	161 	394
-f 433 	503 	424
-f 433 	463 	503
-f 440 	464 	463
-f 455 	452 	400
-f 440 	463 	430
-f 423 	430 	463
-f 433 	423 	463
-f 400 	402 	455
-f 406 	464 	429
-f 440 	429 	464
-f 83 	63 	465
-f 437 	453 	2015
-f 427 	435 	441
-f 2015 	427 	441
-f 469 	465 	1541
-f 441 	437 	2015
-f 460 	1775 	1778
-f 445 	443 	458
-f 443 	451 	458
-f 462 	1746 	400
-f 454 	2015 	453
-f 469 	471 	465
-f 474 	475 	473
-f 392 	617 	469
-f 469 	617 	471
-f 471 	466 	465
-f 401 	476 	470
-f 472 	479 	196
-f 472 	477 	479
-f 210 	196 	479
-f 475 	442 	480
-f 478 	480 	442
-f 442 	475 	454
-f 482 	454 	475
-f 474 	482 	475
-f 1545 	392 	469
-f 434 	477 	1777
-f 481 	629 	476
-f 477 	438 	479
-f 479 	438 	444
-f 399 	393 	483
-f 210 	479 	444
-f 483 	379 	485
-f 488 	381 	486
-f 387 	486 	381
-f 488 	485 	381
-f 387 	490 	486
-f 417 	2086 	376
-f 262 	264 	450
-f 498 	500 	467
-f 450 	264 	259
-f 431 	280 	456
-f 500 	468 	467
-f 280 	202 	456
-f 468 	503 	496
-f 500 	503 	468
-f 77 	497 	71
-f 456 	202 	457
-f 77 	501 	497
-f 71 	497 	484
-f 202 	205 	457
-f 501 	77 	83
-f 503 	463 	496
-f 800 	497 	501
-f 228 	229 	494
-f 505 	507 	499
-f 465 	466 	83
-f 520 	401 	506
-f 499 	507 	502
-f 501 	83 	466
-f 473 	508 	474
-f 230 	509 	229
-f 494 	229 	509
-f 480 	478 	458
-f 494 	509 	511
-f 494 	511 	506
-f 458 	478 	445
-f 513 	515 	510
-f 510 	515 	512
-f 454 	482 	1181
-f 474 	1181 	482
-f 520 	506 	511
-f 509 	514 	511
-f 511 	514 	521
-f 512 	986 	954
-f 544 	1504 	543
-f 512 	515 	986
-f 946 	515 	513
-f 518 	946 	513
-f 637 	48 	487
-f 432 	435 	516
-f 520 	476 	401
-f 487 	50 	489
-f 487 	48 	50
-f 520 	511 	521
-f 484 	790 	518
-f 491 	489 	55
-f 520 	481 	476
-f 481 	520 	521
-f 489 	50 	55
-f 491 	55 	67
-f 514 	522 	521
-f 491 	67 	493
-f 517 	522 	514
-f 521 	522 	680
-f 1122 	245 	1119
-f 522 	517 	525
-f 522 	525 	683
-f 439 	446 	504
-f 496 	463 	459
-f 504 	446 	505
-f 450 	507 	505
-f 447 	1601 	411
-f 446 	450 	505
-f 416 	498 	409
-f 448 	498 	416
-f 447 	409 	498
-f 498 	448 	500
-f 259 	765 	507
-f 503 	500 	418
-f 529 	528 	530
-f 418 	500 	414
-f 448 	414 	500
-f 418 	424 	503
-f 531 	436 	538
-f 531 	538 	536
-f 538 	436 	439
-f 527 	689 	525
-f 415 	426 	531
-f 531 	426 	436
-f 431 	436 	426
-f 12 	34 	534
-f 509 	230 	232
-f 243 	535 	232
-f 534 	532 	12
-f 534 	536 	532
-f 509 	232 	535
-f 514 	509 	535
-f 532 	536 	533
-f 533 	536 	557
-f 538 	557 	536
-f 535 	517 	514
-f 541 	1504 	529
-f 537 	517 	535
-f 538 	504 	557
-f 530 	540 	541
-f 530 	541 	529
-f 534 	34 	415
-f 528 	529 	1497
-f 543 	541 	540
-f 534 	531 	536
-f 544 	543 	540
-f 415 	531 	534
-f 542 	606 	537
-f 545 	530 	1188
-f 606 	517 	537
-f 538 	439 	504
-f 546 	530 	545
-f 608 	546 	545
-f 540 	530 	546
-f 516 	540 	546
-f 495 	1170 	555
-f 722 	723 	539
-f 552 	1171 	556
-f 596 	557 	547
-f 1066 	575 	983
-f 557 	558 	549
-f 557 	549 	547
-f 549 	499 	551
-f 552 	560 	554
-f 560 	559 	554
-f 558 	499 	549
-f 555 	554 	559
-f 552 	556 	560
-f 499 	502 	551
-f 1177 	564 	1178
-f 1178 	565 	563
-f 628 	550 	561
-f 550 	1802 	561
-f 568 	567 	571
-f 568 	571 	570
-f 566 	572 	523
-f 569 	571 	567
-f 569 	983 	575
-f 566 	954 	572
-f 1066 	177 	576
-f 523 	572 	524
-f 575 	577 	569
-f 574 	565 	570
-f 564 	570 	565
-f 564 	568 	570
-f 575 	1066 	576
-f 719 	512 	566
-f 577 	576 	177
-f 512 	954 	566
-f 233 	599 	577
-f 630 	573 	578
-f 576 	577 	575
-f 571 	569 	577
-f 579 	1397 	524
-f 577 	595 	571
-f 524 	526 	579
-f 598 	595 	577
-f 563 	574 	562
-f 574 	560 	562
-f 556 	562 	560
-f 563 	565 	574
-f 723 	724 	539
-f 574 	589 	560
-f 724 	725 	539
-f 570 	592 	574
-f 557 	504 	558
-f 725 	793 	539
-f 570 	593 	592
-f 558 	505 	499
-f 571 	594 	570
-f 504 	505 	558
-f 597 	594 	571
-f 621 	539 	798
-f 495 	555 	559
-f 580 	625 	582
-f 621 	632 	539
-f 587 	586 	559
-f 587 	559 	588
-f 560 	588 	559
-f 590 	560 	589
-f 632 	634 	539
-f 560 	590 	588
-f 67 	75 	591
-f 589 	574 	592
-f 593 	570 	594
-f 591 	583 	67
-f 597 	571 	595
-f 591 	596 	583
-f 591 	533 	596
-f 637 	487 	539
-f 583 	596 	584
-f 487 	489 	539
-f 584 	547 	585
-f 489 	491 	539
-f 491 	493 	539
-f 540 	516 	544
-f 601 	544 	516
-f 519 	601 	516
-f 493 	980 	539
-f 980 	991 	539
-f 991 	992 	539
-f 596 	547 	584
-f 475 	545 	1193
-f 992 	1018 	539
-f 1018 	1020 	539
-f 1020 	1021 	539
-f 581 	1145 	1151
-f 1021 	1022 	539
-f 475 	480 	545
-f 1022 	1026 	539
-f 1026 	1003 	539
-f 546 	451 	432
-f 1003 	1115 	539
-f 546 	432 	516
-f 1115 	1116 	539
-f 601 	1504 	544
-f 541 	543 	1504
-f 539 	1116 	1118
-f 603 	516 	435
-f 539 	1118 	1120
-f 539 	1120 	1121
-f 608 	605 	546
-f 604 	546 	605
-f 539 	1121 	1123
-f 1123 	1124 	539
-f 451 	546 	604
-f 606 	525 	517
-f 435 	427 	603
-f 605 	458 	604
-f 451 	604 	458
-f 605 	608 	458
-f 602 	613 	609
-f 1319 	603 	427
-f 475 	1193 	473
-f 608 	545 	480
-f 611 	1422 	610
-f 608 	480 	458
-f 473 	1193 	612
-f 473 	612 	508
-f 602 	1422 	611
-f 611 	613 	602
-f 508 	1181 	474
-f 547 	549 	585
-f 579 	526 	610
-f 610 	581 	611
-f 610 	526 	581
-f 542 	607 	606
-f 548 	607 	542
-f 607 	527 	606
-f 616 	865 	615
-f 797 	798 	539
-f 532 	591 	75
-f 606 	527 	525
-f 75 	12 	532
-f 532 	533 	591
-f 607 	548 	619
-f 533 	557 	596
-f 618 	471 	617
-f 580 	622 	625
-f 582 	628 	561
-f 625 	628 	582
-f 573 	630 	622
-f 634 	635 	539
-f 636 	539 	635
-f 539 	636 	637
-f 638 	481 	680
-f 626 	639 	627
-f 639 	626 	640
-f 481 	638 	629
-f 638 	1848 	629
-f 680 	643 	638
-f 641 	633 	208
-f 643 	654 	638
-f 629 	1849 	1846
-f 739 	890 	642
-f 642 	869 	616
-f 622 	631 	625
-f 630 	631 	622
-f 631 	646 	625
-f 645 	638 	654
-f 665 	635 	634
-f 647 	649 	617
-f 2163 	2015 	650
-f 650 	1027 	648
-f 650 	648 	620
-f 643 	657 	654
-f 617 	649 	618
-f 653 	624 	618
-f 932 	1849 	651
-f 651 	1849 	652
-f 654 	672 	645
-f 2163 	650 	620
-f 649 	653 	618
-f 208 	227 	641
-f 641 	640 	633
-f 641 	663 	640
-f 657 	643 	2018
-f 653 	658 	624
-f 621 	656 	659
-f 633 	640 	626
-f 621 	659 	632
-f 640 	661 	639
-f 677 	1481 	666
-f 632 	662 	634
-f 640 	663 	661
-f 632 	659 	662
-f 665 	634 	662
-f 667 	715 	600
-f 600 	668 	666
-f 227 	236 	670
-f 635 	669 	636
-f 670 	641 	227
-f 635 	665 	669
-f 670 	663 	641
-f 671 	636 	669
-f 631 	459 	646
-f 663 	43 	661
-f 663 	44 	43
-f 625 	646 	628
-f 678 	1481 	677
-f 646 	553 	628
-f 675 	2232 	674
-f 676 	2232 	675
-f 652 	1848 	672
-f 2018 	2054 	657
-f 670 	236 	45
-f 1479 	678 	679
-f 674 	1479 	679
-f 628 	553 	550
-f 666 	668 	682
-f 681 	682 	668
-f 481 	521 	680
-f 45 	44 	670
-f 677 	666 	682
-f 670 	44 	663
-f 1590 	467 	1182
-f 522 	683 	680
-f 468 	578 	467
-f 578 	468 	630
-f 643 	680 	683
-f 468 	496 	630
-f 716 	667 	1217
-f 655 	643 	683
-f 630 	496 	631
-f 686 	685 	688
-f 684 	513 	510
-f 631 	496 	459
-f 687 	688 	685
-f 461 	553 	646
-f 525 	689 	683
-f 646 	459 	461
-f 692 	684 	627
-f 495 	693 	1187
-f 691 	1187 	693
-f 655 	683 	689
-f 691 	695 	690
-f 695 	688 	690
-f 687 	690 	688
-f 639 	692 	627
-f 691 	693 	695
-f 527 	696 	689
-f 692 	513 	684
-f 693 	495 	695
-f 559 	695 	495
-f 699 	697 	698
-f 624 	658 	644
-f 689 	696 	2028
-f 697 	700 	701
-f 661 	702 	639
-f 703 	700 	697
-f 699 	703 	697
-f 639 	702 	692
-f 692 	518 	513
-f 702 	518 	692
-f 679 	678 	1577
-f 678 	677 	1577
-f 711 	707 	696
-f 71 	702 	661
-f 682 	1577 	677
-f 71 	661 	43
-f 700 	703 	956
-f 700 	694 	701
-f 702 	484 	518
-f 716 	717 	667
-f 484 	702 	71
-f 669 	139 	671
-f 655 	689 	2028
-f 636 	671 	637
-f 48 	637 	671
-f 828 	718 	830
-f 765 	259 	709
-f 259 	720 	709
-f 1233 	662 	659
-f 662 	1241 	665
-f 710 	706 	705
-f 665 	138 	669
-f 607 	711 	527
-f 619 	711 	607
-f 1577 	2234 	679
-f 711 	696 	527
-f 665 	1241 	138
-f 712 	710 	705
-f 679 	2234 	674
-f 713 	711 	619
-f 710 	714 	706
-f 668 	600 	715
-f 710 	684 	714
-f 669 	138 	139
-f 667 	717 	715
-f 623 	713 	619
-f 706 	714 	708
-f 48 	671 	142
-f 139 	142 	671
-f 713 	707 	711
-f 717 	716 	718
-f 2039 	707 	713
-f 714 	719 	708
-f 688 	718 	716
-f 688 	716 	686
-f 1290 	719 	566
-f 713 	623 	721
-f 720 	712 	709
-f 720 	626 	712
-f 1113 	1114 	620
-f 633 	626 	720
-f 1130 	1113 	648
-f 709 	712 	705
-f 1638 	1133 	648
-f 712 	626 	627
-f 712 	627 	710
-f 721 	2039 	713
-f 1113 	620 	648
-f 797 	539 	796
-f 627 	684 	710
-f 684 	510 	714
-f 714 	510 	719
-f 698 	704 	699
-f 512 	719 	510
-f 727 	909 	729
-f 703 	699 	956
-f 699 	704 	956
-f 962 	956 	704
-f 161 	349 	394
-f 394 	349 	647
-f 732 	1109 	734
-f 167 	647 	163
-f 350 	647 	167
-f 349 	163 	647
-f 350 	649 	647
-f 735 	1095 	736
-f 170 	649 	166
-f 351 	649 	170
-f 350 	166 	649
-f 649 	351 	653
-f 653 	354 	658
-f 174 	653 	169
-f 354 	653 	174
-f 351 	169 	653
-f 181 	658 	173
-f 354 	173 	658
-f 738 	742 	740
-f 729 	909 	739
-f 741 	742 	738
-f 2041 	721 	731
-f 658 	741 	644
-f 681 	715 	718
-f 717 	718 	715
-f 715 	681 	668
-f 644 	741 	738
-f 329 	1577 	78
-f 78 	682 	824
-f 718 	825 	681
-f 828 	825 	718
-f 688 	830 	718
-f 695 	832 	688
-f 559 	586 	695
-f 743 	746 	764
-f 2235 	2233 	675
-f 324 	3 	2237
-f 324 	2237 	329
-f 2234 	329 	2237
-f 747 	767 	748
-f 742 	1451 	740
-f 892 	898 	745
-f 898 	754 	745
-f 756 	884 	1095
-f 658 	359 	741
-f 359 	658 	181
-f 190 	741 	180
-f 360 	741 	190
-f 359 	180 	741
-f 682 	78 	1577
-f 681 	824 	682
-f 754 	747 	745
-f 752 	746 	743
-f 754 	767 	747
-f 752 	757 	746
-f 832 	695 	586
-f 750 	760 	751
-f 753 	756 	1095
-f 759 	760 	750
-f 760 	758 	751
-f 771 	746 	757
-f 751 	758 	749
-f 762 	743 	764
-f 732 	762 	764
-f 765 	759 	502
-f 761 	401 	470
-f 502 	507 	765
-f 764 	774 	1111
-f 741 	360 	742
-f 764 	1111 	732
-f 360 	189 	742
-f 761 	770 	754
-f 501 	466 	769
-f 754 	770 	767
-f 771 	757 	768
-f 770 	1885 	767
-f 775 	769 	466
-f 2259 	2260 	789
-f 746 	774 	764
-f 767 	1885 	1872
-f 466 	471 	775
-f 746 	771 	774
-f 770 	761 	470
-f 1715 	1716 	782
-f 769 	776 	772
-f 787 	777 	2317
-f 775 	776 	769
-f 1898 	770 	470
-f 773 	772 	779
-f 776 	779 	772
-f 768 	780 	771
-f 812 	787 	2268
-f 768 	778 	780
-f 777 	783 	2317
-f 771 	780 	784
-f 618 	775 	471
-f 1716 	2318 	782
-f 2320 	785 	2319
-f 618 	624 	775
-f 775 	624 	776
-f 777 	2319 	783
-f 771 	784 	774
-f 779 	776 	644
-f 624 	644 	776
-f 789 	2274 	788
-f 816 	725 	724
-f 790 	946 	518
-f 790 	792 	946
-f 539 	793 	794
-f 539 	794 	796
-f 790 	484 	795
-f 484 	497 	795
-f 795 	799 	790
-f 795 	801 	799
-f 790 	799 	792
-f 921 	793 	725
-f 851 	792 	799
-f 497 	800 	795
-f 800 	801 	795
-f 766 	760 	759
-f 765 	766 	759
-f 972 	796 	794
-f 760 	763 	758
-f 766 	763 	760
-f 763 	705 	706
-f 766 	705 	763
-f 774 	784 	1438
-f 709 	766 	765
-f 709 	705 	766
-f 778 	803 	780
-f 722 	1523 	1526
-f 800 	501 	769
-f 2317 	2268 	787
-f 723 	722 	1526
-f 769 	772 	800
-f 2276 	788 	2255
-f 660 	2255 	788
-f 800 	772 	801
-f 1526 	813 	723
-f 772 	773 	801
-f 2277 	2262 	788
-f 885 	773 	814
-f 812 	2273 	787
-f 777 	787 	2319
-f 780 	803 	1443
-f 723 	813 	724
-f 785 	2320 	782
-f 781 	791 	820
-f 2259 	789 	817
-f 2259 	817 	811
-f 781 	1965 	791
-f 789 	788 	2263
-f 817 	789 	2265
-f 791 	1965 	1940
-f 812 	811 	2270
-f 811 	817 	2265
-f 779 	819 	773
-f 780 	1443 	784
-f 773 	819 	814
-f 818 	844 	820
-f 822 	306 	2322
-f 821 	815 	814
-f 819 	821 	814
-f 1 	59 	2284
-f 16 	15 	2319
-f 41 	2306 	59
-f 821 	1648 	815
-f 968 	791 	969
-f 823 	803 	975
-f 820 	791 	968
-f 824 	681 	825
-f 803 	823 	1456
-f 829 	826 	827
-f 779 	738 	819
-f 644 	738 	779
-f 831 	688 	832
-f 738 	740 	819
-f 831 	830 	688
-f 819 	740 	821
-f 823 	1462 	1466
-f 834 	970 	826
-f 871 	599 	833
-f 823 	1466 	1456
-f 833 	247 	835
-f 248 	835 	247
-f 249 	837 	248
-f 835 	248 	837
-f 792 	851 	836
-f 837 	249 	838
-f 251 	838 	249
-f 839 	838 	251
-f 251 	252 	839
-f 829 	834 	826
-f 839 	252 	841
-f 252 	253 	841
-f 841 	253 	843
-f 398 	843 	253
-f 846 	843 	398
-f 398 	399 	846
-f 844 	834 	847
-f 829 	847 	834
-f 827 	854 	829
-f 844 	970 	834
-f 820 	844 	847
-f 848 	1737 	808
-f 808 	1737 	809
-f 809 	887 	849
-f 847 	781 	820
-f 836 	852 	840
-f 853 	829 	854
-f 1810 	862 	842
-f 749 	858 	805
-f 399 	483 	861
-f 399 	861 	846
-f 860 	853 	859
-f 483 	485 	864
-f 483 	864 	861
-f 863 	842 	862
-f 854 	859 	853
-f 758 	858 	749
-f 862 	865 	863
-f 486 	866 	488
-f 866 	864 	488
-f 485 	488 	864
-f 853 	867 	829
-f 858 	868 	805
-f 860 	744 	853
-f 930 	842 	863
-f 853 	747 	867
-f 492 	870 	490
-f 870 	866 	490
-f 486 	490 	866
-f 745 	747 	853
-f 871 	872 	598
-f 595 	598 	872
-f 829 	867 	847
-f 805 	868 	857
-f 847 	786 	781
-f 920 	586 	873
-f 865 	869 	863
-f 586 	587 	873
-f 588 	874 	587
-f 873 	587 	874
-f 588 	590 	874
-f 875 	874 	590
-f 875 	590 	589
-f 875 	589 	876
-f 592 	876 	589
-f 862 	615 	865
-f 851 	852 	836
-f 852 	879 	840
-f 867 	786 	847
-f 745 	853 	744
-f 840 	879 	845
-f 878 	768 	757
-f 880 	850 	887
-f 851 	799 	885
-f 801 	885 	799
-f 882 	768 	878
-f 880 	887 	881
-f 849 	887 	850
-f 881 	887 	883
-f 884 	883 	887
-f 887 	1095 	884
-f 747 	748 	867
-f 851 	886 	852
-f 867 	748 	786
-f 930 	882 	842
-f 827 	826 	854
-f 854 	826 	970
-f 818 	970 	844
-f 763 	888 	758
-f 891 	869 	890
-f 1635 	1644 	848
-f 887 	1749 	889
-f 889 	1752 	887
-f 1863 	896 	1861
-f 1861 	887 	1753
-f 887 	1861 	896
-f 859 	2144 	860
-f 958 	1433 	1330
-f 745 	744 	892
-f 869 	642 	890
-f 758 	888 	858
-f 888 	895 	858
-f 869 	891 	863
-f 897 	1011 	896
-f 896 	1011 	887
-f 898 	892 	894
-f 891 	940 	863
-f 900 	1012 	897
-f 896 	902 	897
-f 858 	895 	868
-f 904 	902 	896
-f 908 	900 	902
-f 897 	902 	900
-f 902 	904 	908
-f 813 	816 	724
-f 888 	763 	706
-f 592 	593 	876
-f 877 	876 	593
-f 593 	594 	877
-f 594 	597 	877
-f 872 	877 	597
-f 895 	888 	708
-f 894 	269 	898
-f 872 	597 	595
-f 272 	273 	913
-f 599 	871 	598
-f 706 	708 	888
-f 228 	494 	273
-f 247 	833 	599
-f 913 	278 	272
-f 78 	824 	336
-f 281 	915 	269
-f 898 	269 	915
-f 914 	336 	824
-f 917 	914 	825
-f 824 	825 	914
-f 281 	278 	915
-f 913 	915 	278
-f 830 	918 	828
-f 918 	917 	828
-f 825 	828 	917
-f 898 	761 	754
-f 831 	832 	920
-f 920 	918 	831
-f 830 	831 	918
-f 1553 	1555 	816
-f 915 	761 	898
-f 832 	586 	920
-f 913 	273 	494
-f 1203 	1204 	835
-f 1203 	835 	837
-f 945 	891 	909
-f 890 	909 	891
-f 1208 	1209 	838
-f 915 	913 	506
-f 1208 	838 	839
-f 494 	506 	913
-f 506 	401 	915
-f 923 	318 	925
-f 303 	318 	923
-f 915 	401 	761
-f 1219 	1221 	925
-f 925 	1221 	923
-f 924 	963 	728
-f 909 	727 	944
-f 890 	739 	909
-f 318 	927 	925
-f 318 	2198 	927
-f 744 	2144 	892
-f 860 	2144 	744
-f 728 	944 	727
-f 1223 	1219 	928
-f 927 	928 	1219
-f 925 	927 	1219
-f 2198 	931 	928
-f 863 	940 	930
-f 926 	929 	1022
-f 2198 	343 	931
-f 933 	931 	343
-f 882 	778 	768
-f 934 	2217 	904
-f 2217 	2218 	904
-f 2225 	939 	904
-f 885 	886 	851
-f 816 	921 	725
-f 886 	936 	852
-f 793 	937 	794
-f 908 	939 	900
-f 930 	778 	882
-f 852 	936 	879
-f 908 	904 	939
-f 773 	885 	801
-f 814 	886 	885
-f 1223 	928 	931
-f 933 	1225 	931
-f 1224 	1225 	933
-f 343 	941 	933
-f 886 	815 	936
-f 343 	101 	941
-f 814 	815 	886
-f 815 	1612 	936
-f 941 	101 	1224
-f 933 	941 	1224
-f 969 	791 	1940
-f 975 	803 	778
-f 944 	945 	909
-f 942 	1228 	101
-f 943 	1228 	942
-f 946 	947 	515
-f 348 	948 	943
-f 348 	949 	948
-f 947 	986 	515
-f 1230 	1231 	948
-f 950 	940 	891
-f 949 	1229 	948
-f 1229 	1230 	948
-f 945 	950 	891
-f 946 	792 	947
-f 792 	836 	947
-f 1005 	987 	887
-f 954 	959 	572
-f 960 	945 	963
-f 961 	962 	704
-f 944 	963 	945
-f 964 	965 	961
-f 962 	961 	965
-f 984 	985 	704
-f 960 	963 	966
-f 945 	960 	993
-f 951 	1232 	949
-f 1229 	949 	1232
-f 951 	952 	1232
-f 749 	805 	916
-f 994 	967 	968
-f 945 	993 	950
-f 968 	969 	994
-f 995 	994 	969
-f 1009 	995 	935
-f 969 	935 	995
-f 996 	950 	993
-f 1010 	1009 	938
-f 966 	1023 	960
-f 1025 	960 	1023
-f 970 	818 	820
-f 970 	994 	854
-f 864 	1245 	861
-f 1246 	1247 	866
-f 820 	968 	970
-f 870 	1249 	866
-f 923 	492 	303
-f 551 	971 	919
-f 967 	970 	968
-f 793 	921 	937
-f 492 	923 	1249
-f 937 	972 	794
-f 1089 	1578 	906
-f 906 	1626 	910
-f 870 	492 	1249
-f 922 	919 	971
-f 395 	1089 	899
-f 901 	903 	1089
-f 837 	1206 	1203
-f 1209 	1210 	838
-f 971 	750 	922
-f 899 	1089 	903
-f 1213 	1214 	841
-f 905 	1089 	906
-f 907 	1089 	905
-f 901 	1089 	907
-f 502 	971 	551
-f 841 	843 	1213
-f 973 	797 	796
-f 502 	759 	971
-f 1221 	1222 	923
-f 910 	1627 	911
-f 971 	759 	750
-f 1225 	1226 	931
-f 796 	972 	973
-f 911 	1630 	912
-f 912 	1634 	848
-f 1224 	101 	1227
-f 922 	750 	926
-f 101 	1228 	1227
-f 751 	929 	926
-f 750 	751 	926
-f 1234 	1213 	843
-f 929 	749 	916
-f 843 	846 	1238
-f 1235 	1238 	846
-f 185 	1166 	1089
-f 1243 	1244 	861
-f 1242 	1243 	861
-f 751 	749 	929
-f 1245 	1242 	861
-f 1174 	1175 	364
-f 963 	924 	966
-f 924 	1058 	966
-f 864 	866 	1248
-f 940 	975 	930
-f 866 	1249 	1246
-f 1635 	848 	1634
-f 1739 	809 	1738
-f 930 	975 	778
-f 977 	976 	978
-f 950 	979 	940
-f 137 	1065 	364
-f 975 	940 	979
-f 965 	982 	956
-f 957 	956 	982
-f 956 	962 	965
-f 961 	704 	985
-f 823 	975 	979
-f 704 	887 	984
-f 985 	984 	988
-f 988 	984 	990
-f 987 	990 	984
-f 969 	1940 	935
-f 987 	1005 	990
-f 967 	994 	970
-f 988 	964 	985
-f 961 	985 	964
-f 980 	493 	583
-f 583 	493 	67
-f 979 	950 	996
-f 583 	584 	991
-f 973 	974 	797
-f 583 	991 	980
-f 1829 	1830 	988
-f 584 	585 	991
-f 991 	585 	992
-f 797 	974 	798
-f 935 	938 	1009
-f 997 	992 	585
-f 798 	656 	621
-f 982 	998 	957
-f 958 	957 	998
-f 938 	2146 	1010
-f 798 	974 	656
-f 959 	954 	989
-f 986 	989 	954
-f 1009 	859 	995
-f 859 	854 	995
-f 1555 	921 	816
-f 989 	999 	959
-f 937 	921 	1000
-f 1840 	1831 	990
-f 1829 	988 	990
-f 919 	1020 	1018
-f 997 	919 	1018
-f 919 	922 	1020
-f 1806 	1807 	965
-f 997 	585 	549
-f 993 	960 	1001
-f 964 	988 	1828
-f 1025 	1001 	960
-f 549 	551 	997
-f 997 	551 	919
-f 993 	1002 	996
-f 993 	1001 	1002
-f 887 	1004 	1005
-f 987 	984 	887
-f 887 	1006 	1004
-f 1005 	1004 	1007
-f 1008 	1007 	1004
-f 1006 	1008 	1004
-f 1005 	1007 	990
-f 1006 	887 	1011
-f 1011 	897 	1012
-f 1001 	1025 	697
-f 1006 	1011 	1008
-f 1012 	1008 	1011
-f 697 	1025 	698
-f 1035 	698 	1025
-f 1016 	1015 	859
-f 1001 	697 	701
-f 1001 	701 	1017
-f 148 	2049 	147
-f 147 	2049 	124
-f 1023 	1024 	1025
-f 1030 	1031 	2154
-f 1029 	1032 	976
-f 1003 	1050 	1115
-f 978 	1278 	977
-f 1072 	1025 	1033
-f 1035 	1025 	1034
-f 1024 	1033 	1025
-f 992 	997 	1018
-f 1032 	1029 	873
-f 920 	873 	1029
-f 1037 	978 	1036
-f 976 	1036 	978
-f 1019 	1028 	859
-f 1031 	859 	1028
-f 1014 	1013 	859
-f 1030 	1014 	859
-f 1016 	859 	1013
-f 1031 	1030 	859
-f 1036 	1038 	1037
-f 1039 	1036 	1032
-f 976 	1032 	1036
-f 1040 	1036 	1039
-f 1014 	2145 	1013
-f 1040 	1041 	1036
-f 1255 	1256 	1038
-f 922 	1021 	1020
-f 2148 	1028 	1019
-f 1254 	1255 	1038
-f 922 	926 	1021
-f 1031 	2153 	2154
-f 1021 	926 	1022
-f 1040 	1039 	874
-f 873 	874 	1039
-f 1032 	873 	1039
-f 1026 	1022 	929
-f 2148 	2153 	1028
-f 1031 	1028 	2153
-f 1041 	1040 	874
-f 1045 	1038 	1043
-f 1036 	1043 	1038
-f 1043 	1053 	1046
-f 1043 	1046 	1045
-f 1047 	1043 	1048
-f 1048 	1043 	1041
-f 1036 	1041 	1043
-f 929 	916 	1026
-f 1010 	859 	1009
-f 994 	995 	854
-f 1053 	1043 	1049
-f 1047 	1049 	1043
-f 1044 	1042 	1033
-f 1026 	916 	1003
-f 1038 	1045 	1254
-f 2147 	2151 	237
-f 1045 	1046 	1254
-f 1257 	1254 	1046
-f 916 	1050 	1003
-f 1047 	1048 	875
-f 874 	875 	1048
-f 874 	1048 	1041
-f 1016 	2196 	1015
-f 875 	1049 	1047
-f 1051 	1044 	1033
-f 1053 	1054 	1056
-f 1060 	859 	1015
-f 1053 	1056 	1046
-f 1049 	1059 	1053
-f 1059 	1054 	1053
-f 2194 	1016 	1013
-f 1056 	1054 	1257
-f 1015 	2197 	1060
-f 1024 	1058 	1033
-f 1023 	1058 	1024
-f 944 	728 	963
-f 876 	1259 	1054
-f 1259 	1260 	1054
-f 1046 	1056 	1257
-f 986 	1061 	989
-f 1051 	1033 	1058
-f 1023 	966 	1058
-f 1060 	2203 	1062
-f 875 	876 	1059
-f 875 	1059 	1049
-f 947 	1061 	986
-f 1054 	1059 	876
-f 1061 	1064 	989
-f 1259 	876 	1263
-f 877 	1263 	876
-f 1065 	981 	364
-f 989 	1064 	999
-f 1067 	1068 	1069
-f 1017 	701 	694
-f 1070 	1067 	1069
-f 137 	1066 	1065
-f 1071 	1067 	1070
-f 1034 	704 	1035
-f 1068 	1067 	1071
-f 1035 	704 	698
-f 1069 	1068 	405
-f 1034 	1025 	1072
-f 567 	983 	569
-f 836 	1061 	947
-f 406 	405 	1068
-f 1064 	1061 	840
-f 1270 	1271 	1068
-f 1271 	406 	1068
-f 1033 	1073 	1072
-f 836 	840 	1061
-f 955 	1063 	953
-f 1062 	953 	1063
-f 336 	914 	1070
-f 955 	1074 	1063
-f 1074 	955 	1075
-f 914 	1071 	1070
-f 1074 	1075 	1077
-f 1270 	1068 	914
-f 914 	1068 	1071
-f 1080 	1077 	1075
-f 1100 	1084 	1099
-f 1079 	1099 	1084
-f 1080 	1082 	1077
-f 1079 	1084 	1081
-f 1033 	1085 	1073
-f 650 	2015 	1027
-f 1042 	1078 	1033
-f 1073 	730 	1072
-f 1034 	1072 	704
-f 955 	1102 	1075
-f 704 	1072 	730
-f 1091 	1092 	1073
-f 1088 	1083 	1076
-f 1091 	1073 	1085
-f 981 	1176 	364
-f 1078 	1085 	1033
-f 1065 	1066 	981
-f 983 	981 	1066
-f 1099 	1079 	1093
-f 1081 	1086 	1079
-f 1086 	1090 	1079
-f 1076 	959 	999
-f 1076 	999 	1088
-f 1090 	1093 	1079
-f 730 	1092 	1095
-f 730 	1073 	1092
-f 805 	1050 	916
-f 1081 	1084 	1270
-f 857 	1052 	1050
-f 1273 	1270 	1084
-f 737 	736 	1095
-f 805 	857 	1050
-f 737 	1095 	1092
-f 1081 	1270 	1086
-f 1052 	1096 	1055
-f 1270 	914 	1086
-f 1090 	1086 	917
-f 914 	917 	1086
-f 1052 	857 	1096
-f 917 	1093 	1090
-f 1096 	1098 	1055
-f 1010 	1019 	859
-f 1060 	1062 	859
-f 1062 	1063 	859
-f 1063 	1074 	859
-f 859 	1074 	1077
-f 859 	1077 	1082
-f 1099 	1101 	1100
-f 1055 	1098 	1057
-f 1075 	1102 	1106
-f 1027 	1173 	648
-f 1097 	1104 	1105
-f 1097 	1105 	1193
-f 1097 	1103 	1104
-f 1075 	1106 	1080
-f 1080 	1107 	1082
-f 1096 	857 	1390
-f 1390 	1391 	1096
-f 1080 	1106 	1107
-f 1108 	1107 	1106
-f 1103 	1336 	1181
-f 1119 	263 	1109
-f 2164 	620 	326
-f 1108 	1106 	1112
-f 1110 	620 	1114
-f 1114 	1113 	1117
-f 1109 	732 	1119
-f 1117 	328 	1110
-f 326 	1110 	328
-f 1117 	1110 	1114
-f 1107 	1108 	859
-f 1082 	1107 	859
-f 1112 	859 	1108
-f 9 	859 	1112
-f 732 	1111 	1119
-f 1122 	1119 	1111
-f 2207 	2208 	859
-f 539 	1124 	1126
-f 1126 	722 	539
-f 1127 	1122 	1125
-f 1111 	1125 	1122
-f 1130 	648 	1133
-f 1115 	1052 	1116
-f 1392 	973 	972
-f 973 	1396 	974
-f 999 	1094 	1088
-f 1131 	1128 	1132
-f 1117 	1113 	1134
-f 1130 	1134 	1113
-f 1064 	1094 	999
-f 1130 	1133 	1134
-f 1125 	1144 	1127
-f 1094 	1968 	1088
-f 1128 	1131 	1135
-f 1133 	1638 	1134
-f 1137 	1128 	1135
-f 1140 	1141 	1134
-f 845 	1094 	1064
-f 840 	845 	1064
-f 845 	1674 	1094
-f 1674 	1968 	1094
-f 1132 	1138 	1131
-f 1134 	1701 	1140
-f 611 	581 	1139
-f 1135 	1138 	255
-f 1131 	1138 	1135
-f 611 	1139 	613
-f 1117 	1134 	1141
-f 1141 	1142 	1117
-f 1159 	1401 	1158
-f 1127 	245 	1122
-f 1144 	245 	1127
-f 1149 	1401 	1144
-f 1135 	255 	1137
-f 1143 	526 	524
-f 524 	572 	1143
-f 526 	1143 	1145
-f 1153 	1154 	1099
-f 1153 	1099 	1093
-f 1144 	1125 	1149
-f 526 	1145 	581
-f 1146 	1148 	1150
-f 1164 	1160 	1155
-f 1152 	1148 	1146
-f 1050 	1052 	1115
-f 1154 	1155 	1099
-f 1116 	1055 	1118
-f 1052 	1055 	1116
-f 1156 	1146 	1157
-f 1084 	1100 	1273
-f 1100 	1101 	1273
-f 1275 	1276 	1101
-f 1125 	1147 	1149
-f 1156 	1152 	1146
-f 1158 	1149 	1147
-f 918 	1154 	1153
-f 1093 	917 	1153
-f 918 	1153 	917
-f 1055 	1057 	1118
-f 1148 	1138 	1150
-f 918 	1155 	1154
-f 1253 	1121 	1120
-f 1160 	1161 	1162
-f 1159 	1158 	1186
-f 1147 	1186 	1158
-f 1099 	1160 	1101
-f 1162 	1101 	1160
-f 1121 	1265 	1123
-f 1099 	1155 	1160
-f 1123 	1272 	1124
-f 1265 	1272 	1123
-f 1148 	255 	1138
-f 1126 	1124 	1425
-f 1272 	1425 	1124
-f 1145 	1143 	1076
-f 255 	1148 	1152
-f 1145 	1083 	1151
-f 1129 	1089 	1608
-f 1584 	1585 	1089
-f 1607 	1608 	1089
-f 1196 	1607 	1089
-f 1160 	1164 	1165
-f 1139 	581 	1151
-f 1029 	976 	1167
-f 1165 	1167 	1160
-f 1175 	1168 	364
-f 1169 	1166 	364
-f 185 	364 	1166
-f 1101 	1162 	1275
-f 1174 	364 	1176
-f 572 	959 	1143
-f 1169 	1168 	1171
-f 1169 	1171 	1170
-f 1279 	1280 	1161
-f 1278 	1279 	1161
-f 1177 	1176 	983
-f 981 	983 	1176
-f 959 	1076 	1143
-f 920 	1165 	1164
-f 1155 	918 	1164
-f 920 	1164 	918
-f 1178 	1171 	1168
-f 1076 	1083 	1145
-f 920 	1167 	1165
-f 1172 	1147 	1450
-f 1083 	1934 	1151
-f 1170 	1187 	1166
-f 1166 	1169 	1170
-f 1160 	976 	1161
-f 977 	1161 	976
-f 1168 	1169 	364
-f 983 	567 	1177
-f 1177 	1178 	1174
-f 1175 	1174 	1178
-f 1172 	1186 	1147
-f 1174 	1176 	1177
-f 1160 	1167 	976
-f 467 	1590 	498
-f 1252 	1278 	978
-f 447 	498 	1601
-f 1168 	1175 	1178
-f 404 	411 	1601
-f 1161 	977 	1278
-f 554 	1170 	552
-f 1029 	1167 	920
-f 1172 	1179 	1188
-f 1178 	563 	1171
-f 1027 	2015 	1173
-f 565 	1178 	564
-f 1172 	1188 	1186
-f 567 	568 	1177
-f 454 	1181 	1183
-f 454 	1183 	1173
-f 1190 	1192 	1183
-f 1183 	1184 	1173
-f 1184 	648 	1173
-f 1357 	1185 	1187
-f 1182 	578 	1180
-f 1185 	1089 	1166
-f 1187 	1185 	1166
-f 1639 	1638 	1184
-f 1184 	1638 	648
-f 1180 	578 	573
-f 1157 	1163 	1156
-f 1181 	1189 	1190
-f 1181 	1190 	1183
-f 467 	578 	1182
-f 1190 	1189 	1191
-f 1190 	1191 	1192
-f 1163 	255 	1156
-f 1189 	1181 	1306
-f 893 	1308 	1181
-f 1189 	1306 	1191
-f 1195 	1906 	1194
-f 1037 	1038 	1252
-f 1196 	1089 	1283
-f 1196 	1198 	1197
-f 1266 	1267 	872
-f 872 	1267 	877
-f 1266 	872 	1269
-f 871 	1269 	872
-f 871 	833 	1269
-f 1200 	1201 	1197
-f 1198 	1200 	1197
-f 1276 	1277 	1101
-f 833 	835 	1205
-f 1202 	833 	1205
-f 1204 	1205 	835
-f 1197 	1207 	1196
-f 1206 	837 	1210
-f 837 	838 	1210
-f 2027 	1196 	1207
-f 839 	1211 	1208
-f 1201 	1207 	1197
-f 1180 	573 	1199
-f 1215 	839 	1214
-f 1211 	839 	1215
-f 839 	841 	1214
-f 1198 	1196 	1283
-f 1220 	1216 	1089
-f 1216 	1283 	1089
-f 1284 	1283 	1217
-f 1249 	923 	1222
-f 1218 	659 	656
-f 1223 	931 	1226
-f 656 	1212 	1218
-f 1216 	1220 	1217
-f 1359 	1217 	1220
-f 1193 	1602 	1097
-f 1220 	1357 	1359
-f 2101 	613 	1139
-f 943 	948 	1231
-f 1228 	943 	1231
-f 1233 	659 	1218
-f 1283 	1284 	1198
-f 1370 	1201 	1200
-f 1234 	843 	1239
-f 1238 	1239 	843
-f 846 	861 	1244
-f 1235 	846 	1244
-f 1241 	662 	1233
-f 1057 	1120 	1118
-f 1248 	866 	1247
-f 1245 	864 	1248
-f 1240 	1250 	1251
-f 1240 	1251 	1500
-f 1120 	1057 	1253
-f 1258 	1250 	1240
-f 1256 	1252 	1038
-f 978 	1037 	1252
-f 1264 	1258 	1240
-f 1257 	1054 	1262
-f 1260 	1262 	1054
-f 1218 	1261 	1233
-f 1121 	1253 	1265
-f 1237 	1264 	1240
-f 1263 	877 	1268
-f 1267 	1268 	877
-f 1413 	1253 	1057
-f 833 	1202 	1269
-f 291 	1233 	1261
-f 1163 	1251 	1250
-f 1070 	1069 	405
-f 1273 	1101 	1277
-f 1280 	1275 	1161
-f 1162 	1161 	1275
-f 1188 	1179 	1193
-f 1202 	1205 	1269
-f 1193 	1179 	1602
-f 1206 	1210 	1203
-f 1204 	1203 	1210
-f 2013 	256 	1250
-f 1264 	2013 	1258
-f 1211 	1215 	1208
-f 1209 	1208 	1215
-f 1214 	1282 	1215
-f 1201 	1370 	1207
-f 1214 	1213 	1239
-f 1234 	1239 	1213
-f 1258 	2013 	1250
-f 1285 	1286 	1287
-f 1428 	1272 	1265
-f 1274 	2013 	1264
-f 1274 	1264 	1237
-f 1204 	1288 	1205
-f 1209 	1281 	1210
-f 895 	708 	1290
-f 1221 	1292 	1222
-f 1287 	1289 	1293
-f 1223 	1226 	1219
-f 1295 	1289 	1287
-f 1295 	1287 	1286
-f 1219 	1226 	1221
-f 1395 	1290 	523
-f 719 	1290 	708
-f 1225 	1296 	1226
-f 1299 	1291 	1298
-f 1291 	1294 	1298
-f 1285 	694 	1286
-f 1227 	1228 	1231
-f 1297 	1293 	1289
-f 1300 	1301 	1294
-f 1804 	1294 	1301
-f 1229 	1232 	1230
-f 153 	1230 	1232
-f 1330 	956 	957
-f 1303 	1300 	1294
-f 1294 	1291 	1304
-f 1303 	1294 	1304
-f 1225 	1224 	1227
-f 1184 	1183 	1192
-f 956 	1330 	694
-f 1313 	1311 	893
-f 1307 	1308 	893
-f 1306 	1181 	1308
-f 1289 	1295 	1330
-f 1216 	1217 	1283
-f 1307 	1310 	1308
-f 1308 	1310 	1309
-f 1307 	893 	1311
-f 1295 	1286 	1330
-f 1274 	1301 	1300
-f 1307 	1311 	1312
-f 1307 	1312 	1310
-f 1305 	1299 	1298
-f 2013 	1274 	1300
-f 1300 	1303 	2013
-f 1315 	1312 	1313
-f 1311 	1313 	1312
-f 291 	1241 	1233
-f 2149 	2013 	1304
-f 1303 	1304 	2013
-f 1230 	1302 	1231
-f 1241 	291 	295
-f 295 	138 	1241
-f 1317 	1239 	1238
-f 421 	1316 	1319
-f 516 	1319 	1316
-f 1235 	1244 	1238
-f 1245 	1248 	1242
-f 1243 	1242 	1248
-f 1320 	1321 	1291
-f 1316 	1291 	1321
-f 1327 	1328 	1316
-f 1323 	1248 	1247
-f 1249 	1222 	1246
-f 1247 	1246 	1222
-f 1200 	1198 	1284
-f 1291 	1325 	1320
-f 1299 	1325 	1291
-f 1212 	1324 	1326
-f 1243 	1322 	1244
-f 1291 	1316 	1328
-f 1328 	1304 	1291
-f 1278 	1252 	1279
-f 1316 	421 	1327
-f 1212 	1326 	1218
-f 1286 	694 	1330
-f 1262 	1255 	1257
-f 609 	1334 	1329
-f 1254 	1257 	1255
-f 1260 	1259 	1263
-f 1260 	1263 	1268
-f 1297 	1289 	1330
-f 1260 	1332 	1262
-f 2015 	421 	427
-f 694 	700 	956
-f 1267 	1266 	1269
-f 887 	704 	730
-f 1321 	1320 	1305
-f 1268 	1267 	1333
-f 1336 	1097 	1335
-f 1327 	2015 	1328
-f 1097 	1336 	1103
-f 609 	613 	1334
-f 1319 	427 	421
-f 1334 	1337 	1329
-f 1255 	1338 	1256
-f 600 	1200 	1284
-f 1329 	1337 	1331
-f 1277 	1271 	1273
-f 1341 	1318 	1331
-f 1335 	1339 	1336
-f 1336 	1339 	893
-f 1270 	1273 	1271
-f 1337 	1341 	1331
-f 1276 	1275 	1280
-f 1341 	1342 	1318
-f 1344 	1280 	1279
-f 1256 	1279 	1252
-f 1320 	1325 	1305
-f 1305 	1325 	1299
-f 613 	2101 	1334
-f 508 	1104 	1181
-f 2102 	1337 	1334
-f 406 	1271 	1340
-f 421 	2015 	1327
-f 1328 	2015 	1304
-f 1276 	1343 	1277
-f 245 	1346 	246
-f 1337 	1236 	1341
-f 2102 	1236 	1337
-f 1236 	1351 	1341
-f 1349 	1345 	1348
-f 1341 	1351 	1342
-f 1342 	1355 	1375
-f 1342 	1351 	1355
-f 1354 	1345 	1349
-f 1350 	1364 	1352
-f 1370 	2093 	1207
-f 1326 	1261 	1218
-f 1357 	1089 	1185
-f 1220 	1089 	1357
-f 1187 	1359 	1357
-f 1324 	1418 	1356
-f 1324 	1361 	1326
-f 1358 	1362 	1347
-f 1355 	1368 	1360
-f 1355 	1367 	1368
-f 1324 	1356 	1361
-f 1347 	1362 	1350
-f 1363 	1326 	1361
-f 1362 	1364 	1350
-f 1345 	1365 	1366
-f 1366 	1490 	1345
-f 1288 	1358 	1486
-f 1351 	2111 	1367
-f 1288 	1486 	1205
-f 686 	1217 	685
-f 1281 	1362 	1358
-f 1351 	1367 	1355
-f 686 	716 	1217
-f 1363 	1261 	1326
-f 1281 	1358 	1210
-f 1204 	1210 	1358
-f 1288 	1204 	1358
-f 1363 	355 	1261
-f 1282 	1362 	1215
-f 1209 	1215 	1362
-f 1281 	1209 	1362
-f 1362 	1282 	1364
-f 1481 	1369 	1370
-f 1239 	1364 	1214
-f 1282 	1214 	1364
-f 1345 	1354 	1365
-f 1369 	1478 	2229
-f 2229 	2243 	1369
-f 1369 	2244 	1370
-f 2111 	2000 	1367
-f 495 	1187 	1170
-f 1171 	552 	1170
-f 554 	555 	1170
-f 1374 	1371 	1423
-f 1374 	1377 	1371
-f 1346 	1376 	1378
-f 1378 	246 	1346
-f 1339 	1366 	1365
-f 1376 	1379 	1378
-f 1371 	1377 	1372
-f 1349 	1348 	1373
-f 1375 	1355 	1360
-f 1367 	1380 	1368
-f 1292 	1429 	1222
-f 1261 	355 	291
-f 1429 	1292 	1374
-f 1374 	1296 	1377
-f 1356 	1771 	1361
-f 1356 	1769 	1771
-f 1296 	1374 	1226
-f 1221 	1226 	1374
-f 1292 	1221 	1374
-f 1380 	1386 	1382
-f 1296 	1225 	1377
-f 1385 	1759 	1379
-f 472 	1363 	1361
-f 1388 	1547 	1387
-f 1363 	472 	196
-f 1290 	566 	523
-f 1381 	1759 	1383
-f 1363 	196 	355
-f 1387 	1394 	1393
-f 1372 	1394 	1387
-f 1389 	972 	937
-f 868 	1390 	857
-f 1389 	937 	1000
-f 1393 	1388 	1387
-f 1389 	1392 	972
-f 1390 	1397 	1391
-f 868 	895 	1395
-f 1388 	394 	392
-f 1393 	394 	1388
-f 1372 	1377 	1394
-f 1395 	1390 	868
-f 1313 	1314 	1315
-f 1396 	973 	1392
-f 974 	1396 	1212
-f 1395 	1397 	1390
-f 579 	1391 	1397
-f 1396 	1324 	1212
-f 1380 	1384 	1386
-f 1385 	1144 	1383
-f 1376 	1144 	1379
-f 1379 	1144 	1385
-f 245 	1144 	1346
-f 1309 	1191 	1306
-f 974 	1212 	656
-f 1381 	1398 	1399
-f 1306 	1308 	1309
-f 1398 	1144 	1399
-f 1384 	1400 	1386
-f 1415 	1459 	1373
-f 1383 	1398 	1381
-f 1354 	1349 	893
-f 1401 	1402 	1399
-f 1349 	1373 	893
-f 1399 	1402 	1381
-f 1339 	1365 	893
-f 1354 	893 	1365
-f 1401 	1403 	1402
-f 1502 	1503 	1315
-f 1770 	1381 	1402
-f 562 	556 	1171
-f 1407 	1405 	1406
-f 562 	1171 	563
-f 1666 	1691 	1192
-f 1405 	1408 	1409
-f 1192 	1191 	1666
-f 1407 	1410 	1405
-f 1670 	1669 	1309
-f 564 	1177 	568
-f 1410 	1408 	1405
-f 1373 	1409 	1408
-f 1408 	1330 	1373
-f 1670 	1309 	1310
-f 1290 	1395 	895
-f 1312 	1492 	1491
-f 1312 	1491 	1310
-f 1297 	1407 	1406
-f 1395 	523 	1397
-f 1315 	1458 	1502
-f 1397 	523 	524
-f 1057 	1098 	1413
-f 957 	958 	1330
-f 1441 	1414 	1412
-f 1404 	1441 	1412
-f 1419 	1413 	1098
-f 893 	1373 	1459
-f 1394 	1302 	1393
-f 1389 	1417 	1392
-f 1394 	1227 	1231
-f 1394 	1231 	1302
-f 1302 	1230 	1393
-f 341 	394 	1393
-f 1377 	1225 	1227
-f 1098 	1096 	1391
-f 1389 	1631 	1417
-f 1394 	1377 	1227
-f 1392 	1417 	1418
-f 1402 	1403 	1414
-f 1411 	1414 	1403
-f 1098 	1391 	1419
-f 1391 	579 	1419
-f 1416 	1413 	1422
-f 1419 	1422 	1413
-f 1416 	602 	1428
-f 1422 	602 	1416
-f 610 	1422 	1419
-f 1429 	1423 	1421
-f 1435 	1431 	1330
-f 579 	610 	1419
-f 1897 	1414 	1424
-f 1426 	1420 	1352
-f 1352 	1364 	1426
-f 1416 	1265 	1253
-f 1426 	1427 	1420
-f 1253 	1413 	1416
-f 1416 	1428 	1265
-f 1407 	1330 	1410
-f 1415 	1373 	1330
-f 1410 	1330 	1408
-f 1420 	1427 	1421
-f 1427 	1429 	1421
-f 1297 	1330 	1407
-f 1272 	1430 	1425
-f 1423 	1429 	1374
-f 1364 	1239 	1317
-f 1272 	1428 	1430
-f 667 	600 	1284
-f 667 	1284 	1217
-f 1432 	1460 	1415
-f 1359 	685 	1217
-f 1415 	1431 	1432
-f 1434 	1330 	1433
-f 1415 	1330 	1431
-f 1435 	1330 	1434
-f 1431 	1435 	1436
-f 1431 	1436 	1432
-f 1412 	1411 	1159
-f 1411 	1403 	1159
-f 1159 	1403 	1401
-f 1399 	1144 	1401
-f 1346 	1144 	1376
-f 1437 	1434 	1433
-f 1368 	1380 	1382
-f 1435 	1434 	1436
-f 1437 	1436 	1434
-f 1412 	1159 	1404
-f 1111 	774 	1438
-f 1317 	1426 	1364
-f 1322 	1427 	1426
-f 1404 	1440 	1441
-f 1440 	1442 	1441
-f 1438 	1125 	1111
-f 1439 	821 	740
-f 1411 	1412 	1414
-f 1322 	1426 	1244
-f 1238 	1244 	1426
-f 1317 	1238 	1426
-f 740 	1451 	1439
-f 1323 	1427 	1248
-f 1243 	1248 	1427
-f 1322 	1243 	1427
-f 1323 	1429 	1427
-f 1439 	1453 	1444
-f 1451 	1453 	1439
-f 1222 	1429 	1247
-f 1323 	1247 	1429
-f 1450 	784 	1443
-f 1449 	1452 	1442
-f 1433 	958 	1437
-f 1441 	1442 	1452
-f 1482 	1450 	1443
-f 1445 	1449 	1446
-f 1449 	1445 	1452
-f 784 	1450 	1438
-f 1424 	1414 	1441
-f 1438 	1147 	1125
-f 1453 	1454 	1444
-f 1147 	1438 	1450
-f 1314 	893 	1455
-f 1444 	1454 	1447
-f 1452 	1424 	1441
-f 1313 	893 	1314
-f 803 	1456 	1443
-f 1447 	1592 	1464
-f 1315 	1314 	1458
-f 1455 	1458 	1314
-f 1454 	1592 	1447
-f 1455 	893 	1459
-f 1415 	1460 	1459
-f 742 	192 	1451
-f 1455 	1459 	1460
-f 1455 	1460 	1458
-f 189 	192 	742
-f 1457 	1461 	1445
-f 372 	1451 	302
-f 192 	302 	1451
-f 1451 	372 	1453
-f 378 	1454 	1453
-f 1445 	1461 	1452
-f 1782 	1783 	1437
-f 378 	1453 	309
-f 301 	309 	1453
-f 372 	301 	1453
-f 378 	308 	1454
-f 1462 	823 	979
-f 979 	996 	1462
-f 1472 	1352 	1463
-f 1430 	1329 	1529
-f 1462 	1489 	1466
-f 1128 	1461 	1132
-f 1469 	1132 	1461
-f 1457 	1469 	1461
-f 1470 	1457 	1150
-f 1469 	1457 	1470
-f 1146 	1150 	1457
-f 602 	609 	1428
-f 1428 	609 	1430
-f 1128 	1136 	1461
-f 609 	1329 	1430
-f 1467 	1472 	1468
-f 1471 	1472 	1467
-f 1449 	1442 	1159
-f 1440 	1159 	1442
-f 1404 	1159 	1440
-f 1472 	1463 	1468
-f 1468 	1463 	1448
-f 1347 	1471 	1539
-f 1474 	1485 	1475
-f 1462 	1591 	1489
-f 687 	685 	1359
-f 690 	687 	1359
-f 1350 	1472 	1471
-f 1347 	1350 	1471
-f 1187 	691 	1359
-f 690 	1359 	691
-f 1350 	1352 	1472
-f 1347 	1539 	1476
-f 1479 	674 	1478
-f 1478 	674 	2232
-f 600 	666 	1481
-f 1481 	1200 	600
-f 1479 	1481 	678
-f 1480 	1483 	1473
-f 1465 	1833 	1464
-f 1443 	1456 	1482
-f 1509 	1502 	1458
-f 1511 	1594 	1460
-f 1450 	1482 	1172
-f 1473 	1483 	1474
-f 1511 	1460 	1432
-f 1383 	1144 	1398
-f 1483 	1485 	1474
-f 1485 	1486 	1475
-f 1466 	1487 	1456
-f 1333 	1267 	1485
-f 1492 	1312 	1493
-f 1485 	1269 	1486
-f 1482 	1456 	1487
-f 1475 	1486 	1476
-f 1497 	1495 	1159
-f 1515 	1518 	1436
-f 1482 	1179 	1172
-f 1476 	1358 	1347
-f 1486 	1358 	1476
-f 1488 	1496 	1445
-f 1482 	1487 	1179
-f 1338 	1522 	1256
-f 1480 	1332 	1483
-f 1511 	1432 	1512
-f 1517 	1512 	1432
-f 1446 	1488 	1445
-f 1332 	1480 	1262
-f 1255 	1262 	1480
-f 1338 	1255 	1480
-f 1490 	1466 	1489
-f 1333 	1483 	1268
-f 1260 	1268 	1483
-f 1332 	1260 	1483
-f 1333 	1485 	1483
-f 1312 	1315 	1503
-f 1487 	1466 	1490
-f 1494 	1488 	1159
-f 1446 	1449 	1159
-f 1269 	1485 	1267
-f 1494 	1495 	1496
-f 1495 	1497 	1496
-f 1492 	1498 	1491
-f 1396 	1392 	1418
-f 1488 	1494 	1496
-f 1269 	1205 	1486
-f 1498 	1492 	1493
-f 1503 	1493 	1312
-f 1324 	1396 	1418
-f 1504 	1508 	1497
-f 1507 	1508 	1504
-f 1496 	1497 	1508
-f 1507 	1501 	1500
-f 1507 	1500 	1508
-f 1516 	1520 	1499
-f 1417 	1510 	1418
-f 1499 	1520 	1506
-f 1594 	1593 	1460
-f 1510 	1417 	1505
-f 1496 	1457 	1445
-f 1506 	1513 	1733
-f 1517 	1432 	1519
-f 1518 	1519 	1432
-f 1418 	1510 	1356
-f 1496 	1508 	1457
-f 1511 	1512 	1514
-f 1633 	1734 	1473
-f 1516 	1499 	461
-f 461 	464 	1516
-f 1432 	1436 	1518
-f 1500 	1804 	1240
-f 1521 	1514 	1517
-f 1512 	1517 	1514
-f 1505 	1765 	1510
-f 1506 	1522 	1513
-f 1517 	1519 	1521
-f 1520 	1522 	1506
-f 1522 	1480 	1513
-f 1473 	1513 	1480
-f 1493 	1503 	1498
-f 1510 	1769 	1356
-f 1516 	464 	1340
-f 1524 	1498 	1503
-f 1523 	722 	1126
-f 1500 	1542 	1508
-f 1343 	1520 	1516
-f 1503 	1502 	1524
-f 1502 	1509 	1524
-f 1146 	1508 	1157
-f 1525 	1157 	1508
-f 1425 	1523 	1126
-f 1509 	1458 	1593
-f 1343 	1516 	1277
-f 1271 	1277 	1516
-f 1340 	1271 	1516
-f 1508 	1146 	1457
-f 1280 	1520 	1276
-f 1344 	1520 	1280
-f 1343 	1276 	1520
-f 1520 	1344 	1522
-f 1595 	1524 	1593
-f 1509 	1593 	1524
-f 1522 	1338 	1480
-f 1488 	1446 	1159
-f 1495 	1494 	1159
-f 1279 	1256 	1522
-f 1344 	1279 	1522
-f 1425 	1430 	1529
-f 1808 	1501 	601
-f 1504 	601 	1507
-f 1528 	1531 	1477
-f 1536 	1539 	1530
-f 1532 	1534 	1528
-f 1530 	1539 	1533
-f 1159 	1817 	1497
-f 1817 	528 	1497
-f 1999 	1820 	519
-f 1820 	1805 	601
-f 1405 	1489 	1591
-f 1528 	1534 	1531
-f 1405 	1591 	1406
-f 1489 	1345 	1490
-f 603 	1319 	516
-f 1535 	1536 	1527
-f 1523 	1425 	1529
-f 1316 	1321 	1812
-f 1523 	1537 	1526
-f 1535 	1475 	1536
-f 1529 	1537 	1523
-f 1527 	1536 	1530
-f 1298 	1823 	1550
-f 1537 	1538 	1526
-f 1467 	1468 	1532
-f 1532 	1468 	1534
-f 1526 	1538 	813
-f 1468 	1448 	1534
-f 1533 	1471 	1467
-f 1471 	1533 	1539
-f 1150 	1138 	1470
-f 1541 	64 	1540
-f 1540 	64 	1736
-f 1163 	1157 	1525
-f 1474 	1475 	1535
-f 1240 	1804 	1237
-f 1537 	1529 	1331
-f 1500 	1251 	1542
-f 64 	1541 	63
-f 1329 	1331 	1529
-f 1541 	465 	63
-f 1539 	1536 	1476
-f 1543 	1508 	1542
-f 1475 	1476 	1536
-f 1543 	1525 	1508
-f 1736 	1544 	1540
-f 1540 	1545 	1541
-f 1812 	1321 	1546
-f 1545 	1540 	1547
-f 1812 	1546 	1822
-f 1549 	1822 	1546
-f 1545 	469 	1541
-f 1550 	1823 	1549
-f 1294 	1823 	1298
-f 1552 	1804 	1301
-f 1237 	1804 	1552
-f 1553 	816 	813
-f 1551 	1547 	1544
-f 1538 	1553 	813
-f 1546 	1305 	1549
-f 1321 	1305 	1546
-f 1550 	1549 	1305
-f 1544 	1547 	1540
-f 1553 	1561 	1555
-f 1305 	1298 	1550
-f 1388 	1545 	1547
-f 1552 	1301 	1274
-f 1555 	1000 	921
-f 1388 	392 	1545
-f 1251 	1163 	1542
-f 1543 	1542 	1163
-f 1525 	1543 	1163
-f 1537 	1318 	1538
-f 1603 	1372 	1551
-f 1552 	1274 	1237
-f 1537 	1331 	1318
-f 1551 	1387 	1547
-f 1318 	1558 	1538
-f 1372 	1387 	1551
-f 1548 	1559 	1554
-f 1558 	1553 	1538
-f 1470 	1138 	1469
-f 1132 	1469 	1138
-f 1557 	1559 	1548
-f 1559 	1528 	1554
-f 1558 	1561 	1553
-f 1563 	1564 	1565
-f 1555 	1628 	1000
-f 1565 	1566 	1563
-f 1560 	1562 	1642
-f 1555 	1561 	1628
-f 1563 	1567 	1564
-f 1568 	1567 	1563
-f 1554 	1528 	1477
-f 1566 	1568 	1563
-f 1318 	1342 	1558
-f 1556 	1572 	1557
-f 1342 	1375 	1558
-f 1571 	1560 	1448
-f 1569 	1572 	1556
-f 1448 	1463 	1571
-f 1479 	1478 	1369
-f 1571 	1574 	1560
-f 1573 	1559 	1557
-f 1481 	1370 	1200
-f 1481 	1479 	1369
-f 1572 	1573 	1557
-f 1560 	1574 	1562
-f 1478 	2232 	2229
-f 1573 	1532 	1559
-f 1574 	1576 	1562
-f 2234 	2235 	674
-f 1420 	1571 	1352
-f 1463 	1352 	1571
-f 1559 	1532 	1528
-f 1571 	1421 	1574
-f 1571 	1420 	1421
-f 1421 	1423 	1574
-f 1579 	906 	1578
-f 1580 	906 	1579
-f 1588 	906 	1580
-f 1569 	1766 	1527
-f 1489 	1405 	1409
-f 1489 	1581 	1348
-f 1489 	1348 	1345
-f 1574 	1423 	1576
-f 1569 	1530 	1572
-f 1578 	1089 	1585
-f 1584 	1089 	1605
-f 1423 	1371 	1576
-f 1527 	1530 	1569
-f 1604 	906 	1588
-f 1589 	1521 	1518
-f 1834 	1590 	1182
-f 1589 	1518 	1515
-f 996 	1002 	1591
-f 1484 	1590 	1834
-f 137 	364 	1570
-f 1519 	1518 	1521
-f 1462 	996 	1591
-f 1458 	1460 	1593
-f 1592 	1596 	1465
-f 1592 	1465 	1464
-f 1562 	1576 	1587
-f 1465 	1598 	1484
-f 1596 	1598 	1465
-f 1001 	1287 	1002
-f 1598 	1601 	1484
-f 1293 	1002 	1287
-f 1484 	1601 	1590
-f 1601 	498 	1590
-f 1490 	1602 	1487
-f 1487 	1602 	1179
-f 1587 	1603 	1600
-f 1625 	906 	1604
-f 383 	1454 	313
-f 308 	313 	1454
-f 383 	1592 	1454
-f 1576 	1603 	1587
-f 1129 	1605 	1089
-f 1603 	1551 	1600
-f 386 	1592 	317
-f 312 	317 	1592
-f 383 	312 	1592
-f 1602 	1490 	1660
-f 1606 	1607 	1196
-f 1592 	386 	1596
-f 1600 	1551 	1544
-f 332 	1596 	316
-f 389 	1596 	332
-f 386 	316 	1596
-f 1596 	389 	1598
-f 1371 	1603 	1576
-f 1598 	391 	1601
-f 338 	1598 	331
-f 391 	1598 	338
-f 389 	331 	1598
-f 1372 	1603 	1371
-f 1373 	1348 	1581
-f 404 	1601 	391
-f 1619 	1406 	1591
-f 1610 	93 	288
-f 1581 	1489 	1409
-f 1285 	1001 	1017
-f 1287 	1001 	1285
-f 1610 	1624 	1614
-f 1622 	1624 	1610
-f 1002 	1293 	1618
-f 1591 	1002 	1618
-f 1618 	1620 	1591
-f 1619 	1591 	1620
-f 1654 	1658 	1617
-f 1626 	906 	1625
-f 1617 	1658 	1623
-f 1594 	1511 	1595
-f 1530 	1533 	1572
-f 1297 	1406 	1619
-f 1514 	1595 	1511
-f 1572 	1533 	1573
-f 1581 	1409 	1373
-f 1467 	1532 	1573
-f 1627 	910 	1626
-f 1629 	911 	1627
-f 1630 	911 	1629
-f 1533 	1467 	1573
-f 1000 	1631 	1389
-f 1594 	1595 	1593
-f 1000 	1628 	1631
-f 1787 	1876 	1589
-f 1527 	1766 	1632
-f 1634 	912 	1630
-f 1633 	1632 	1694
-f 1561 	1558 	1375
-f 1632 	1535 	1527
-f 1628 	1561 	1636
-f 1633 	1535 	1632
-f 1713 	1712 	1514
-f 1514 	1521 	1713
-f 1714 	1713 	1521
-f 1714 	1521 	1589
-f 1633 	1474 	1535
-f 1473 	1474 	1633
-f 1375 	1636 	1561
-f 1620 	1297 	1619
-f 1628 	1636 	1637
-f 1636 	1575 	1637
-f 1628 	1637 	1631
-f 1631 	1505 	1417
-f 1631 	1637 	1505
-f 1642 	1643 	1622
-f 1636 	1375 	1360
-f 1644 	1737 	848
-f 1575 	1636 	1360
-f 1622 	1643 	1624
-f 1557 	1548 	1641
-f 1758 	1448 	1560
-f 1564 	1570 	1565
-f 2016 	1570 	1564
-f 1565 	1570 	1566
-f 1560 	1642 	1758
-f 1564 	1567 	2016
-f 1642 	1562 	1643
-f 1568 	1566 	364
-f 1566 	1570 	364
-f 1562 	1587 	1643
-f 1646 	1667 	1647
-f 1664 	1667 	1646
-f 1649 	1650 	1651
-f 194 	1652 	234
-f 815 	1648 	1612
-f 1614 	1652 	194
-f 1612 	1654 	1617
-f 1651 	1655 	1649
-f 1648 	1654 	1612
-f 1649 	1657 	1650
-f 1620 	1618 	1297
-f 1659 	1649 	1655
-f 1652 	1656 	234
-f 1285 	1017 	694
-f 1659 	1657 	1649
-f 1654 	1447 	1658
-f 1297 	1618 	1293
-f 1490 	1366 	1660
-f 1656 	1728 	45
-f 1725 	1728 	1656
-f 1832 	1623 	1658
-f 1660 	1663 	1602
-f 1661 	1602 	1663
-f 1689 	1690 	1192
-f 821 	1439 	1648
-f 1439 	1444 	1648
-f 1665 	1639 	1184
-f 1690 	1665 	1184
-f 1646 	1720 	1664
-f 1691 	1689 	1192
-f 1648 	1444 	1654
-f 1191 	1668 	1666
-f 1191 	1309 	1669
-f 1669 	1671 	1191
-f 1671 	1668 	1191
-f 1444 	1447 	1654
-f 1658 	1447 	1464
-f 1667 	1672 	1647
-f 1670 	1310 	1673
-f 1681 	1310 	1491
-f 1670 	1676 	1669
-f 1675 	1669 	1676
-f 1671 	1669 	1675
-f 2049 	1655 	1662
-f 1670 	1673 	1676
-f 1647 	1672 	1653
-f 1674 	1677 	1968
-f 1653 	1672 	449
-f 1653 	449 	434
-f 1645 	1640 	1750
-f 1666 	1668 	1675
-f 1666 	1675 	1693
-f 1641 	1640 	1556
-f 1668 	1671 	1675
-f 1640 	1645 	1556
-f 1310 	1680 	1673
-f 1641 	1556 	1557
-f 1680 	1310 	1681
-f 1679 	1682 	1664
-f 1650 	1662 	1651
-f 1570 	1662 	1650
-f 1498 	1683 	1491
-f 1681 	1491 	1683
-f 1651 	1662 	1655
-f 1645 	1569 	1556
-f 1569 	1645 	1766
-f 1659 	2049 	1657
-f 1650 	1657 	1570
-f 1673 	1680 	1676
-f 1683 	1676 	1680
-f 1657 	2049 	1570
-f 1680 	1681 	1683
-f 1664 	1682 	1667
-f 1706 	1704 	1676
-f 1707 	1706 	1683
-f 1682 	1685 	1667
-f 1802 	550 	1686
-f 1687 	1134 	1638
-f 1687 	1638 	1639
-f 1655 	2049 	1659
-f 137 	1570 	2049
-f 1665 	1687 	1639
-f 1184 	1192 	1690
-f 1667 	1685 	1672
-f 1672 	460 	449
-f 1685 	460 	1672
-f 1691 	1666 	1693
-f 1693 	1675 	1703
-f 1704 	1703 	1675
-f 1688 	1734 	1694
-f 1733 	1734 	1688
-f 1675 	1676 	1704
-f 1682 	1679 	1814
-f 1692 	1696 	1697
-f 1692 	1697 	1909
-f 1678 	1674 	845
-f 1698 	1696 	1692
-f 1689 	1693 	1690
-f 1691 	1693 	1689
-f 1693 	1687 	1690
-f 1665 	1690 	1687
-f 845 	879 	1678
-f 1678 	1700 	1674
-f 1335 	1602 	1661
-f 1097 	1602 	1335
-f 1366 	1339 	1660
-f 1663 	1660 	1339
-f 1663 	1339 	1661
-f 1687 	1702 	1701
-f 1134 	1687 	1701
-f 1335 	1661 	1339
-f 1674 	1700 	1677
-f 1693 	1703 	1702
-f 1687 	1693 	1702
-f 730 	1095 	887
-f 735 	753 	1095
-f 1676 	1683 	1706
-f 1709 	1707 	1498
-f 1707 	1683 	1498
-f 1710 	1709 	1524
-f 1708 	1678 	879
-f 1699 	1692 	1695
-f 936 	1708 	879
-f 1699 	1698 	1692
-f 1498 	1524 	1709
-f 1708 	1711 	1678
-f 1524 	1595 	1710
-f 1712 	1710 	1595
-f 1595 	1514 	1712
-f 1678 	1711 	1700
-f 936 	1612 	1708
-f 785 	782 	2318
-f 732 	1705 	762
-f 1708 	1617 	1711
-f 1705 	732 	1717
-f 1612 	1617 	1708
-f 734 	1717 	732
-f 1873 	1685 	1682
-f 1617 	1623 	1711
-f 1718 	1715 	1763
-f 1718 	900 	1715
-f 1705 	1717 	1838
-f 939 	1715 	900
-f 1719 	1677 	1726
-f 1726 	1729 	1719
-f 1624 	1723 	1614
-f 1719 	1729 	1721
-f 1720 	1382 	1724
-f 1614 	1723 	1652
-f 1723 	1725 	1652
-f 1652 	1725 	1656
-f 1700 	1726 	1677
-f 1662 	1696 	2049
-f 1731 	550 	553
-f 1624 	1730 	1723
-f 1662 	1697 	1696
-f 1731 	1686 	550
-f 1624 	1643 	1730
-f 1731 	1733 	1686
-f 1730 	1732 	1723
-f 1730 	1600 	1732
-f 1686 	1733 	1688
-f 1738 	809 	1737
-f 1723 	1732 	1725
-f 1732 	1736 	1725
-f 887 	809 	1739
-f 1739 	1741 	887
-f 1600 	1544 	1732
-f 1734 	1633 	1694
-f 1698 	1699 	2049
-f 1741 	1742 	887
-f 1725 	1736 	1728
-f 1736 	64 	1728
-f 553 	1499 	1731
-f 1695 	1727 	1699
-f 1742 	1747 	887
-f 1728 	64 	52
-f 1727 	2049 	1699
-f 1696 	1698 	2049
-f 553 	461 	1499
-f 1587 	1730 	1643
-f 1499 	1506 	1731
-f 1128 	1744 	1136
-f 1587 	1600 	1730
-f 1731 	1506 	1733
-f 1128 	1137 	1744
-f 1734 	1733 	1513
-f 1736 	1732 	1544
-f 1513 	1473 	1734
-f 1749 	887 	1747
-f 1750 	400 	1746
-f 1748 	396 	1477
-f 1753 	887 	1752
-f 1746 	1756 	1750
-f 1610 	288 	1751
-f 1382 	1386 	1724
-f 1746 	1778 	1754
-f 1722 	757 	752
-f 1477 	1531 	1748
-f 1720 	1724 	1664
-f 878 	757 	1722
-f 1531 	1755 	1748
-f 1748 	1755 	1751
-f 1754 	1756 	1746
-f 1751 	1622 	1610
-f 1755 	1622 	1751
-f 1386 	1400 	1757
-f 1760 	1761 	1754
-f 1531 	1534 	1758
-f 1534 	1448 	1758
-f 1754 	1761 	1756
-f 1758 	1755 	1531
-f 1137 	255 	1744
-f 1136 	1744 	1727
-f 1755 	1758 	1622
-f 1642 	1622 	1758
-f 1756 	1645 	1750
-f 1757 	1724 	1386
-f 1757 	1679 	1724
-f 1378 	542 	246
-f 1763 	1764 	1718
-f 1764 	1860 	1718
-f 1378 	1379 	1759
-f 1724 	1679 	1664
-f 1385 	1383 	1759
-f 1902 	1757 	1400
-f 1716 	1715 	939
-f 548 	1378 	1759
-f 1763 	1715 	1762
-f 782 	1762 	1715
-f 1505 	1794 	1765
-f 1767 	1762 	2321
-f 1756 	1766 	1645
-f 782 	2321 	1762
-f 1761 	1766 	1756
-f 1764 	1763 	1767
-f 1764 	1767 	1768
-f 1769 	1510 	1765
-f 1762 	1767 	1763
-f 1765 	1774 	1769
-f 542 	1378 	548
-f 1765 	1773 	1774
-f 1688 	1694 	1760
-f 1760 	1694 	1761
-f 1381 	1770 	1759
-f 1761 	1632 	1766
-f 472 	1361 	1771
-f 1759 	1772 	548
-f 1694 	1632 	1761
-f 304 	79 	1767
-f 1770 	1772 	1759
-f 1767 	2321 	304
-f 1899 	1768 	79
-f 619 	548 	1772
-f 1768 	1767 	79
-f 1685 	1873 	1775
-f 1770 	1402 	1891
-f 998 	1437 	958
-f 1769 	1774 	1777
-f 1770 	1776 	1772
-f 1775 	460 	1685
-f 1891 	1776 	1770
-f 1769 	1777 	1771
-f 1771 	1777 	477
-f 1776 	623 	1772
-f 1746 	462 	1778
-f 1776 	1786 	623
-f 1771 	477 	472
-f 1780 	1515 	1436
-f 1772 	623 	619
-f 1436 	1437 	1780
-f 1783 	1780 	1437
-f 1782 	1437 	998
-f 1782 	998 	1785
-f 1792 	1789 	982
-f 1773 	1646 	1647
-f 1793 	965 	964
-f 1799 	1795 	964
-f 1773 	1647 	1774
-f 1806 	965 	1793
-f 1784 	1786 	1776
-f 1653 	1777 	1774
-f 1782 	1785 	1787
-f 1783 	1782 	1787
-f 1788 	1787 	1785
-f 1774 	1647 	1653
-f 998 	1789 	1785
-f 1791 	1792 	982
-f 998 	982 	1789
-f 1777 	1653 	434
-f 1700 	1790 	1726
-f 1791 	965 	1807
-f 982 	965 	1791
-f 1793 	964 	1795
-f 1794 	1505 	1637
-f 1711 	1790 	1700
-f 1637 	1575 	1794
-f 1799 	964 	1828
-f 1360 	1368 	1796
-f 1795 	1797 	1793
-f 1360 	1796 	1575
-f 1775 	1798 	1778
-f 1796 	1800 	1575
-f 1781 	1798 	1775
-f 1796 	1720 	1800
-f 1795 	1799 	1797
-f 1799 	1828 	1797
-f 1798 	1754 	1778
-f 1794 	1575 	1800
-f 743 	277 	752
-f 1794 	1773 	1765
-f 1883 	561 	1779
-f 1794 	1800 	1773
-f 1792 	1791 	1801
-f 1779 	1802 	1781
-f 1807 	1801 	1791
-f 1796 	1368 	1382
-f 561 	1802 	1779
-f 1785 	1789 	1788
-f 1801 	1788 	1792
-f 1789 	1792 	1788
-f 1796 	1382 	1720
-f 1781 	1803 	1798
-f 1880 	1879 	1788
-f 1800 	1646 	1773
-f 1800 	1720 	1646
-f 1881 	1880 	1788
-f 1802 	1803 	1781
-f 842 	290 	296
-f 1803 	1760 	1798
-f 1783 	1787 	1780
-f 1515 	1780 	1589
-f 1787 	1589 	1780
-f 1501 	1808 	1500
-f 1798 	1760 	1754
-f 1806 	1793 	1809
-f 1807 	1806 	1809
-f 1500 	1808 	1804
-f 1805 	1804 	1808
-f 1797 	1809 	1793
-f 842 	296 	1810
-f 1802 	1686 	1803
-f 1797 	1888 	1887
-f 1803 	1688 	1760
-f 1686 	1688 	1803
-f 1808 	601 	1805
-f 1507 	601 	1501
-f 1757 	1811 	1679
-f 1809 	1801 	1807
-f 869 	865 	616
-f 1787 	1874 	1876
-f 1881 	1788 	1801
-f 1815 	1813 	1812
-f 1815 	1812 	1816
-f 1811 	1814 	1679
-f 1104 	1103 	1181
-f 263 	734 	1109
-f 1818 	1820 	1815
-f 1809 	1797 	1887
-f 1159 	1186 	1817
-f 1818 	1815 	1816
-f 1820 	1818 	1816
-f 1820 	1816 	1804
-f 1821 	1816 	1822
-f 1822 	1816 	1812
-f 1821 	1823 	1816
-f 1623 	1790 	1711
-f 1816 	1823 	1804
-f 1623 	1825 	1790
-f 1821 	1822 	1823
-f 1805 	1820 	1804
-f 1316 	1812 	516
-f 1193 	545 	1188
-f 1824 	1819 	1008
-f 1823 	1294 	1804
-f 1718 	1824 	900
-f 1012 	900 	1824
-f 1828 	988 	1830
-f 1180 	1827 	1182
-f 1815 	1820 	1999
-f 601 	519 	1820
-f 1829 	990 	1831
-f 1832 	1825 	1623
-f 1822 	1549 	1823
-f 990 	1842 	1840
-f 1832 	1833 	1826
-f 1832 	1826 	1825
-f 1833 	1834 	1826
-f 1008 	1819 	1007
-f 1008 	1012 	1824
-f 1826 	1834 	1827
-f 470 	476 	1835
-f 1837 	1836 	1829
-f 1830 	1829 	1836
-f 1829 	1831 	1837
-f 1834 	1182 	1827
-f 1851 	1852 	1819
-f 266 	762 	1705
-f 1819 	1824 	1851
-f 1464 	1832 	1658
-f 2168 	1705 	1838
-f 1832 	1464 	1833
-f 734 	263 	1717
-f 1465 	1484 	1833
-f 1819 	1847 	1007
-f 1833 	1484 	1834
-f 1855 	1856 	1007
-f 76 	2129 	1722
-f 1856 	1842 	990
-f 476 	629 	1835
-f 2129 	289 	1722
-f 1831 	1840 	1837
-f 1722 	752 	76
-f 1841 	1843 	2123
-f 1844 	1835 	1846
-f 629 	1846 	1835
-f 1837 	1840 	1845
-f 1842 	1845 	1840
-f 1722 	289 	878
-f 1819 	1852 	1847
-f 1849 	629 	1848
-f 1721 	1729 	1850
-f 1729 	1862 	1850
-f 1854 	1851 	1824
-f 1850 	1841 	1721
-f 1841 	1853 	1843
-f 743 	762 	265
-f 638 	645 	1848
-f 1850 	1853 	1841
-f 1849 	932 	1846
-f 1849 	1848 	652
-f 645 	672 	1848
-f 752 	277 	76
-f 1853 	1195 	1843
-f 990 	1007 	1856
-f 265 	277 	743
-f 1195 	1853 	1199
-f 1007 	1847 	1855
-f 762 	266 	265
-f 1843 	1195 	1194
-f 1857 	1858 	1851
-f 1852 	1851 	1858
-f 1726 	1790 	1859
-f 1857 	1851 	1854
-f 1824 	1860 	1854
-f 1824 	1718 	1860
-f 289 	290 	878
-f 1859 	1729 	1726
-f 1854 	1860 	1768
-f 1857 	1854 	1768
-f 1764 	1768 	1860
-f 1729 	1859 	1862
-f 1825 	1859 	1790
-f 1825 	1826 	1859
-f 1858 	1847 	1852
-f 842 	882 	290
-f 1862 	1865 	1850
-f 1826 	1862 	1859
-f 290 	882 	878
-f 1855 	1845 	1856
-f 1867 	1196 	1870
-f 1606 	1196 	1867
-f 1959 	1868 	2022
-f 1856 	1845 	1842
-f 1855 	1847 	1845
-f 1858 	1845 	1847
-f 1850 	1865 	1853
-f 410 	1810 	296
-f 1870 	1196 	1869
-f 1196 	2022 	1869
-f 1810 	615 	862
-f 1865 	1199 	1853
-f 1894 	1893 	1845
-f 1105 	1104 	508
-f 1895 	1894 	1845
-f 1899 	1896 	1857
-f 1857 	1768 	1899
-f 1830 	1836 	1828
-f 1797 	1828 	1836
-f 1889 	1890 	1836
-f 1862 	1827 	1865
-f 1889 	1836 	1837
-f 1826 	1827 	1862
-f 1158 	1401 	1149
-f 1827 	1180 	1865
-f 1186 	528 	1817
-f 1895 	1845 	1858
-f 1872 	1871 	748
-f 1682 	1814 	1873
-f 748 	767 	1872
-f 1504 	1497 	529
-f 1872 	1875 	1871
-f 1589 	1876 	1877
-f 1879 	1874 	1787
-f 530 	528 	1186
-f 1787 	1788 	1879
-f 1881 	1801 	1882
-f 1188 	530 	1186
-f 1878 	1883 	1811
-f 1878 	582 	1883
-f 770 	1898 	1885
-f 1801 	1809 	1882
-f 1884 	1882 	1809
-f 1809 	1887 	1884
-f 1811 	1883 	1814
-f 1836 	1890 	1797
-f 1779 	1873 	1814
-f 1872 	1886 	1875
-f 1890 	1888 	1797
-f 1883 	1779 	1814
-f 1877 	1714 	1589
-f 1885 	1886 	1872
-f 1779 	1781 	1873
-f 1873 	1781 	1775
-f 1889 	1837 	1892
-f 1906 	580 	1878
-f 1402 	1414 	1891
-f 1893 	1892 	1837
-f 1837 	1845 	1893
-f 1895 	1858 	1896
-f 580 	582 	1878
-f 582 	561 	1883
-f 1858 	1857 	1896
-f 1414 	1897 	1891
-f 1901 	1141 	1900
-f 1141 	1140 	1900
-f 1901 	1142 	1141
-f 1194 	1902 	1400
-f 1897 	1784 	1891
-f 1701 	1900 	1140
-f 1714 	1877 	1903
-f 136 	1903 	1877
-f 1900 	1701 	1904
-f 1701 	1702 	1904
-f 1902 	1811 	1757
-f 1914 	1784 	1897
-f 1702 	1703 	1904
-f 1905 	1904 	1703
-f 1194 	1906 	1902
-f 1891 	1784 	1776
-f 1703 	1704 	1905
-f 1907 	1905 	1704
-f 1898 	470 	1835
-f 1704 	1706 	1907
-f 1908 	1907 	1706
-f 1706 	1707 	1908
-f 1902 	1878 	1811
-f 1424 	1941 	1909
-f 2080 	1898 	2079
-f 1835 	2079 	1898
-f 1906 	1878 	1902
-f 1910 	1908 	1707
-f 1195 	1199 	1911
-f 1910 	1709 	1912
-f 1707 	1709 	1910
-f 1897 	1424 	1909
-f 1911 	1906 	1195
-f 1909 	1914 	1897
-f 1709 	1710 	1912
-f 1913 	1912 	1710
-f 1911 	580 	1906
-f 573 	1911 	1199
-f 1710 	1712 	1913
-f 1915 	1913 	1712
-f 1911 	622 	580
-f 1712 	1713 	1915
-f 1916 	1915 	1713
-f 573 	622 	1911
-f 1713 	1714 	1916
-f 1903 	1916 	1714
-f 1692 	1909 	1941
-f 1877 	1876 	136
-f 1874 	1918 	1876
-f 136 	1876 	1918
-f 1917 	781 	786
-f 1909 	1958 	1914
-f 1880 	1920 	1879
-f 1920 	1918 	1879
-f 1874 	1879 	1918
-f 1882 	1921 	1881
-f 1921 	1920 	1881
-f 1880 	1881 	1920
-f 1923 	2175 	1922
-f 1928 	1921 	1884
-f 1882 	1884 	1921
-f 1919 	1943 	1927
-f 721 	623 	1786
-f 1928 	1887 	1931
-f 1884 	1887 	1928
-f 1931 	1887 	1888
-f 1784 	1932 	1786
-f 1931 	1890 	1933
-f 1888 	1890 	1931
-f 1890 	1889 	1933
-f 1180 	1199 	1865
-f 1914 	1932 	1784
-f 1933 	1889 	20
-f 1892 	20 	1889
-f 1892 	1893 	20
-f 731 	1786 	1932
-f 23 	20 	1893
-f 23 	1893 	1894
-f 23 	1895 	96
-f 1894 	1895 	23
-f 1895 	1896 	96
-f 112 	96 	1896
-f 1971 	731 	1932
-f 1969 	1975 	1932
-f 1896 	1899 	112
-f 79 	340 	1899
-f 721 	1786 	731
-f 112 	1899 	340
-f 1117 	1142 	1937
-f 786 	748 	1871
-f 1938 	1934 	1083
-f 1969 	1932 	1963
-f 1914 	1963 	1932
-f 1871 	1917 	786
-f 1083 	1088 	1938
-f 1938 	1939 	1934
-f 1901 	156 	1142
-f 1934 	1939 	1935
-f 1424 	1452 	1941
-f 1452 	1461 	1941
-f 2004 	1936 	1935
-f 1937 	153 	952
-f 1142 	156 	1937
-f 1461 	1985 	1941
-f 157 	1901 	1900
-f 1987 	1990 	1941
-f 1973 	1942 	1940
-f 1942 	1976 	1944
-f 1905 	164 	1904
-f 1973 	1976 	1942
-f 1907 	166 	1905
-f 1943 	1945 	1927
-f 168 	169 	1908
-f 1570 	1957 	1662
-f 171 	1908 	1910
-f 1912 	174 	1910
-f 1927 	1945 	1930
-f 1990 	1695 	1941
-f 1930 	322 	320
-f 1945 	322 	1930
-f 182 	1915 	1916
-f 187 	189 	1903
-f 1903 	136 	192
-f 1987 	1941 	1985
-f 1948 	1943 	2008
-f 152 	1937 	156
-f 153 	1937 	152
-f 1949 	1945 	1943
-f 1901 	157 	156
-f 163 	161 	1900
-f 162 	163 	1904
-f 1904 	163 	1900
-f 1922 	2199 	1950
-f 1904 	164 	162
-f 1948 	1949 	1943
-f 165 	166 	1907
-f 167 	1905 	166
-f 1949 	396 	1945
-f 169 	170 	1908
-f 1908 	171 	168
-f 172 	173 	1912
-f 173 	174 	1912
-f 1950 	2200 	1953
-f 1863 	1954 	896
-f 1477 	396 	1949
-f 172 	1912 	178
-f 1913 	178 	1912
-f 179 	180 	1915
-f 1915 	180 	1913
-f 1954 	1955 	896
-f 1955 	1956 	896
-f 179 	1915 	182
-f 189 	190 	1916
-f 1916 	1903 	189
-f 192 	187 	1903
-f 1956 	1953 	896
-f 2200 	896 	1953
-f 136 	1918 	193
-f 1957 	1914 	1958
-f 300 	301 	1920
-f 1920 	302 	1918
-f 1868 	1869 	2022
-f 1548 	1554 	1948
-f 1909 	1924 	1958
-f 300 	1920 	305
-f 1921 	305 	1920
-f 1960 	1977 	1961
-f 1960 	1961 	1962
-f 1964 	1960 	1962
-f 1957 	1963 	1914
-f 1966 	1960 	1967
-f 1960 	1964 	1967
-f 1977 	1960 	1970
-f 1966 	1970 	1960
-f 307 	308 	1964
-f 1921 	1964 	305
-f 1972 	731 	1971
-f 1088 	1968 	1938
-f 1964 	1962 	307
-f 1971 	1932 	1975
-f 1965 	1973 	1940
-f 1961 	307 	1962
-f 1938 	1974 	1939
-f 1921 	1966 	1967
-f 1921 	1967 	1964
-f 1938 	1968 	1974
-f 1975 	1969 	1570
-f 1921 	1928 	1966
-f 1970 	1966 	1928
-f 1977 	1978 	1961
-f 1958 	1662 	1957
-f 1924 	1662 	1958
-f 1978 	1977 	1981
-f 1980 	1981 	1977
-f 2089 	1974 	1719
-f 1970 	1979 	1977
-f 1957 	1570 	1963
-f 1969 	1963 	1570
-f 1948 	1554 	1949
-f 1986 	1981 	1980
-f 1554 	1477 	1949
-f 1975 	1570 	1971
-f 2016 	1972 	1570
-f 1979 	1982 	1977
-f 1982 	1980 	1977
-f 1991 	1980 	1982
-f 1992 	1980 	1991
-f 1992 	1993 	1980
-f 1961 	310 	307
-f 1917 	1965 	781
-f 1971 	1570 	1972
-f 1978 	1981 	310
-f 1928 	1979 	1970
-f 1692 	1941 	1695
-f 1924 	1909 	1697
-f 1961 	1978 	310
-f 2007 	2008 	1984
-f 1928 	1931 	1979
-f 1982 	1979 	1931
-f 1985 	1461 	1136
-f 2008 	1919 	1984
-f 1980 	1988 	1989
-f 1986 	1980 	1989
-f 1988 	1980 	1993
-f 1988 	1993 	2001
-f 313 	1981 	312
-f 1677 	1974 	1968
-f 1989 	311 	1986
-f 1981 	1986 	311
-f 311 	312 	1981
-f 1193 	1105 	612
-f 1931 	1933 	1992
-f 1931 	1992 	1991
-f 1931 	1991 	1982
-f 1677 	1719 	1974
-f 1993 	1992 	1933
-f 1951 	2170 	1923
-f 1988 	1997 	1989
-f 612 	1105 	508
-f 2022 	2023 	1959
-f 2025 	2022 	1196
-f 893 	1181 	1336
-f 2027 	2025 	1196
-f 1813 	1999 	1812
-f 2027 	1207 	2055
-f 1353 	2057 	1207
-f 1999 	519 	516
-f 516 	1812 	1999
-f 1998 	6 	1988
-f 5 	6 	1998
-f 1988 	6 	1997
-f 1380 	1367 	2000
-f 2002 	1988 	2001
-f 8 	7 	1998
-f 1813 	1815 	1999
-f 1998 	1988 	8
-f 2002 	8 	1988
-f 7 	13 	1998
-f 1983 	397 	2007
-f 6 	314 	1997
-f 1997 	314 	1989
-f 1983 	2007 	1984
-f 311 	1989 	314
-f 1990 	1987 	1727
-f 1987 	1985 	1727
-f 1985 	1136 	1727
-f 1933 	2002 	2001
-f 1933 	2001 	1993
-f 2011 	2007 	397
-f 1933 	20 	2002
-f 8 	2002 	20
-f 25 	18 	2009
-f 5 	1998 	18
-f 28 	29 	2009
-f 2008 	1943 	1919
-f 1924 	1697 	1662
-f 2010 	1994 	1875
-f 36 	74 	2009
-f 1994 	2010 	1995
-f 2009 	18 	1998
-f 1727 	1695 	1990
-f 402 	2011 	397
-f 2011 	2012 	2007
-f 2011 	1641 	2012
-f 2012 	2008 	2007
-f 2012 	1948 	2008
-f 1152 	1156 	255
-f 1944 	1976 	2014
-f 2149 	1304 	2015
-f 1640 	402 	1750
-f 1640 	2011 	402
-f 643 	655 	2018
-f 2020 	2054 	2018
-f 2011 	1640 	1641
-f 1641 	1548 	2012
-f 2012 	1548 	1948
-f 1939 	2004 	1935
-f 2020 	655 	2028
-f 210 	1983 	250
-f 1936 	2004 	2021
-f 2169 	1951 	2024
-f 2023 	2024 	1952
-f 1952 	1959 	2023
-f 2018 	655 	2020
-f 1984 	250 	1983
-f 444 	397 	1983
-f 32 	2026 	2030
-f 2020 	2028 	2031
-f 2085 	2028 	696
-f 42 	2033 	40
-f 2040 	2044 	2026
-f 696 	707 	2085
-f 2026 	2044 	2030
-f 32 	2030 	34
-f 2028 	2086 	2031
-f 2030 	415 	34
-f 250 	1984 	2035
-f 707 	2039 	33
-f 2034 	2043 	2036
-f 204 	2035 	2037
-f 2014 	1976 	2036
-f 2031 	2086 	417
-f 2014 	2038 	2221
-f 2036 	2038 	2014
-f 2039 	721 	2041
-f 2043 	2034 	1995
-f 2040 	2037 	1927
-f 2042 	2046 	49
-f 2036 	2045 	2038
-f 2030 	422 	415
-f 2043 	2045 	2036
-f 2044 	422 	2030
-f 2051 	49 	2046
-f 2097 	731 	2047
-f 1984 	1919 	2035
-f 2035 	1919 	2037
-f 2116 	2117 	2043
-f 1919 	1927 	2037
-f 2042 	68 	2048
-f 2117 	2119 	2043
-f 1567 	1568 	364
-f 2046 	2042 	2087
-f 2048 	2087 	2042
-f 2040 	1930 	2044
-f 1917 	2050 	1965
-f 1927 	1930 	2040
-f 731 	1972 	2047
-f 2044 	1930 	320
-f 2044 	320 	422
-f 1965 	2050 	1973
-f 2047 	1972 	2016
-f 2034 	1973 	2050
-f 2050 	1917 	1994
-f 1995 	2034 	2050
-f 14 	204 	2052
-f 1994 	1995 	2050
-f 42 	2051 	2033
-f 1973 	2034 	1976
-f 14 	2052 	26
-f 2034 	2036 	1976
-f 26 	2052 	2026
-f 2054 	673 	657
-f 2055 	1207 	2056
-f 672 	654 	673
-f 654 	657 	673
-f 2084 	2033 	2051
-f 1207 	2057 	2056
-f 2031 	2058 	2020
-f 2054 	2020 	2058
-f 26 	2026 	32
-f 2059 	68 	56
-f 2052 	204 	2037
-f 56 	2060 	2059
-f 2059 	2048 	68
-f 2060 	2061 	2059
-f 2037 	2040 	2052
-f 2052 	2040 	2026
-f 2104 	2048 	2059
-f 1917 	1871 	1994
-f 1744 	255 	1727
-f 2104 	2059 	2105
-f 2061 	2105 	2059
-f 2062 	70 	142
-f 1871 	1875 	1994
-f 142 	159 	2062
-f 1875 	1886 	2063
-f 2065 	2066 	2067
-f 10 	70 	2062
-f 26 	2062 	159
-f 2062 	32 	10
-f 2062 	26 	32
-f 2067 	2069 	2065
-f 2070 	1886 	1885
-f 1885 	1898 	2070
-f 2077 	2067 	2066
-f 2063 	1886 	2073
-f 2072 	2073 	1886
-f 2072 	1886 	2074
-f 2070 	2074 	1886
-f 2063 	2078 	2068
-f 2073 	2078 	2063
-f 2075 	2105 	2076
-f 2105 	2061 	2076
-f 2060 	2076 	2061
-f 2079 	1835 	1844
-f 224 	2076 	2060
-f 1844 	932 	2079
-f 2066 	2065 	2016
-f 2069 	2016 	2065
-f 1898 	2080 	2081
-f 1898 	2081 	2070
-f 2070 	2082 	2074
-f 2081 	2082 	2070
-f 2077 	2066 	364
-f 4 	2077 	364
-f 62 	19 	2084
-f 2051 	2046 	2084
-f 19 	2033 	2084
-f 31 	2086 	2085
-f 2028 	2085 	2086
-f 2084 	2046 	2088
-f 2085 	707 	33
-f 2085 	33 	38
-f 1936 	2021 	1996
-f 2046 	2087 	2088
-f 2085 	38 	31
-f 2084 	2088 	62
-f 2121 	2000 	1996
-f 2092 	2088 	2087
-f 33 	2039 	66
-f 2088 	2092 	65
-f 2121 	1384 	2000
-f 2000 	1384 	1380
-f 1974 	2089 	1939
-f 38 	335 	31
-f 31 	376 	2086
-f 2090 	2087 	2048
-f 1939 	2089 	2004
-f 2041 	66 	2039
-f 2004 	2091 	2021
-f 2090 	2092 	2087
-f 2089 	2091 	2004
-f 1353 	1207 	2093
-f 731 	2097 	2041
-f 2097 	2069 	2041
-f 2067 	2071 	2041
-f 2090 	2096 	2092
-f 1719 	1721 	2089
-f 2067 	2041 	2069
-f 2092 	69 	65
-f 2089 	1721 	2091
-f 154 	2041 	2071
-f 2047 	2016 	2097
-f 2069 	2097 	2016
-f 2096 	69 	2092
-f 154 	2071 	185
-f 1721 	1841 	2091
-f 364 	2066 	2016
-f 2016 	1567 	364
-f 140 	141 	2049
-f 145 	140 	2049
-f 2096 	76 	69
-f 1727 	123 	2049
-f 1334 	2101 	2102
-f 2072 	2099 	2073
-f 2074 	2100 	2072
-f 2101 	1139 	2103
-f 1846 	932 	1844
-f 2078 	2073 	2099
-f 2099 	2072 	2100
-f 2074 	2082 	2100
-f 2082 	2081 	2100
-f 2080 	932 	2081
-f 2079 	932 	2080
-f 1139 	1151 	2103
-f 2090 	2048 	2104
-f 2100 	2081 	932
-f 2103 	2106 	2101
-f 1934 	2103 	1151
-f 2058 	2031 	417
-f 2103 	1935 	2106
-f 2105 	2107 	2104
-f 1934 	1935 	2103
-f 2107 	2108 	2109
-f 2107 	2109 	2104
-f 2101 	2106 	2102
-f 2102 	2110 	1236
-f 2105 	2075 	2107
-f 2106 	2110 	2102
-f 2104 	2109 	2090
-f 2111 	1351 	1236
-f 2109 	2096 	2090
-f 1236 	2110 	2111
-f 2108 	2112 	2109
-f 1995 	2113 	2043
-f 2114 	2129 	2112
-f 1995 	2010 	2113
-f 2113 	2116 	2043
-f 2110 	2106 	1936
-f 2113 	2127 	2116
-f 1935 	1936 	2106
-f 2126 	2127 	2113
-f 188 	185 	1089
-f 2116 	2127 	2130
-f 1936 	1996 	2110
-f 2067 	4 	2071
-f 2110 	1996 	2111
-f 2045 	2043 	2119
-f 2067 	2077 	4
-f 2111 	1996 	2000
-f 2119 	2120 	2045
-f 2021 	2121 	1996
-f 2071 	4 	185
-f 4 	364 	185
-f 2091 	2123 	2021
-f 1875 	2063 	2010
-f 2124 	2010 	2068
-f 2063 	2068 	2010
-f 2021 	2123 	2121
-f 2115 	2114 	286
-f 2115 	286 	2131
-f 2112 	286 	2114
-f 2121 	2125 	1384
-f 2126 	2010 	2124
-f 2113 	2010 	2126
-f 2123 	2125 	2121
-f 2125 	1400 	1384
-f 2132 	2131 	286
-f 286 	2112 	2122
-f 2108 	2122 	2112
-f 2107 	2075 	2108
-f 2091 	1841 	2123
-f 2122 	2108 	2075
-f 1843 	2125 	2123
-f 1843 	1194 	2125
-f 2125 	1194 	1400
-f 2109 	2129 	2096
-f 2109 	2112 	2129
-f 2134 	2135 	2013
-f 2129 	76 	2096
-f 2119 	128 	2120
-f 2149 	2150 	2013
-f 2115 	2131 	289
-f 2119 	2117 	128
-f 2130 	128 	2117
-f 2117 	2116 	2130
-f 2127 	2126 	2130
-f 2124 	2130 	2126
-f 2124 	2068 	2099
-f 2078 	2099 	2068
-f 2130 	2124 	2099
-f 454 	1173 	2015
-f 289 	2129 	2115
-f 2114 	2115 	2129
-f 2135 	2183 	2013
-f 2134 	2013 	2137
-f 2132 	2133 	290
-f 2133 	296 	290
-f 2139 	2138 	2134
-f 2135 	2134 	2138
-f 290 	289 	2132
-f 2131 	2132 	289
-f 2134 	2137 	2139
-f 2137 	2150 	2139
-f 2132 	285 	2133
-f 2151 	2156 	237
-f 2141 	2135 	2138
-f 2143 	237 	2144
-f 263 	1119 	245
-f 2194 	1013 	2145
-f 1019 	1010 	2146
-f 2143 	89 	2147
-f 2146 	2148 	1019
-f 235 	2151 	2147
-f 2137 	2013 	2150
-f 2155 	2156 	258
-f 235 	258 	2156
-f 2158 	2015 	2157
-f 2149 	2015 	2158
-f 2154 	2145 	1030
-f 2158 	2157 	2159
-f 2158 	2159 	2160
-f 2156 	2151 	235
-f 2155 	258 	2166
-f 1014 	1030 	2145
-f 2161 	2149 	2160
-f 2158 	2160 	2149
-f 2015 	2162 	2157
-f 2015 	2163 	2162
-f 620 	2164 	2163
-f 2164 	2159 	2162
-f 2157 	2162 	2159
-f 938 	935 	1942
-f 2162 	2163 	2164
-f 85 	88 	859
-f 238 	237 	2156
-f 263 	238 	2156
-f 2166 	263 	2155
-f 1942 	935 	1940
-f 2156 	2155 	263
-f 1942 	1944 	938
-f 2161 	2165 	2149
-f 2150 	2149 	2165
-f 1944 	2146 	938
-f 2167 	2166 	266
-f 258 	266 	2166
-f 2168 	2167 	266
-f 2171 	1923 	2170
-f 2174 	1923 	2171
-f 2170 	1951 	2169
-f 266 	1705 	2168
-f 2139 	2150 	2165
-f 2173 	1923 	2172
-f 2172 	1923 	2174
-f 2145 	2154 	2176
-f 2166 	2167 	263
-f 2167 	2168 	263
-f 2168 	1838 	263
-f 1838 	1717 	263
-f 2161 	97 	98
-f 2161 	98 	2165
-f 2177 	1922 	2175
-f 2178 	1922 	2177
-f 2175 	1923 	2173
-f 104 	97 	2161
-f 2161 	2160 	104
-f 1944 	2179 	2146
-f 1944 	2014 	2179
-f 1163 	256 	255
-f 2146 	2179 	2148
-f 2183 	260 	2013
-f 2181 	2153 	2148
-f 261 	256 	2182
-f 260 	256 	2013
-f 1952 	2024 	1951
-f 2183 	2135 	2141
-f 40 	2033 	2184
-f 2033 	19 	2184
-f 2181 	2148 	2179
-f 2141 	2182 	2183
-f 260 	2183 	2182
-f 261 	2182 	385
-f 388 	385 	2182
-f 2153 	2181 	2188
-f 292 	2182 	294
-f 2184 	2180 	40
-f 2180 	2184 	2
-f 294 	2141 	293
-f 2141 	294 	2182
-f 2153 	2188 	2154
-f 2182 	292 	388
-f 2188 	2176 	2154
-f 319 	297 	2138
-f 2138 	298 	2141
-f 297 	298 	2138
-f 2176 	2245 	2209
-f 2139 	2195 	2138
-f 2184 	19 	24
-f 1102 	2180 	2191
-f 2014 	2221 	2179
-f 2191 	2180 	2
-f 2221 	2181 	2179
-f 1102 	2191 	1106
-f 2193 	1106 	2191
-f 319 	2138 	2195
-f 2188 	2220 	2176
-f 2199 	1922 	2178
-f 2197 	1015 	2196
-f 1112 	1106 	2193
-f 2203 	1060 	2197
-f 2200 	1950 	2199
-f 1112 	2193 	9
-f 896 	2200 	2202
-f 2202 	2205 	896
-f 2195 	2139 	2201
-f 2194 	2196 	1016
-f 54 	343 	2198
-f 953 	1062 	2203
-f 2195 	2201 	2198
-f 2201 	51 	2198
-f 2201 	2139 	51
-f 2191 	2204 	2193
-f 2145 	2209 	2194
-f 2139 	2165 	51
-f 2206 	896 	2205
-f 2191 	2 	2204
-f 2207 	11 	2204
-f 2208 	2207 	2204
-f 2193 	2204 	11
-f 30 	2204 	2
-f 2197 	2215 	2203
-f 1110 	326 	620
-f 2208 	2204 	85
-f 88 	85 	30
-f 2160 	2159 	110
-f 2207 	859 	11
-f 85 	859 	2208
-f 2212 	904 	2206
-f 2213 	904 	2212
-f 2193 	11 	9
-f 896 	2206 	904
-f 2213 	2214 	904
-f 2184 	24 	2
-f 2145 	2176 	2209
-f 2194 	2210 	2196
-f 2194 	2209 	2210
-f 2210 	2211 	2196
-f 2196 	2211 	2197
-f 2214 	2216 	904
-f 2211 	2215 	2197
-f 2216 	934 	904
-f 2248 	2210 	2209
-f 2218 	2225 	904
-f 2215 	2211 	2266
-f 2266 	42 	2215
-f 2181 	2222 	2188
-f 2222 	2181 	2221
-f 2220 	2188 	2222
-f 664 	2230 	676
-f 2038 	2226 	2221
-f 2221 	2226 	2222
-f 2222 	2224 	2220
-f 676 	675 	2233
-f 2226 	2224 	2222
-f 660 	2230 	664
-f 2232 	676 	2230
-f 664 	2233 	660
-f 2038 	2045 	2231
-f 2228 	2229 	2232
-f 2231 	2226 	2038
-f 2227 	2224 	2226
-f 2231 	2227 	2226
-f 675 	674 	2235
-f 1577 	329 	2234
-f 2237 	2235 	2234
-f 664 	676 	2233
-f 2258 	2227 	2236
-f 2238 	2231 	2120
-f 2045 	2120 	2231
-f 2237 	2233 	2235
-f 2238 	2239 	2231
-f 2228 	2232 	2241
-f 2236 	2227 	2239
-f 2231 	2239 	2227
-f 2232 	2230 	2241
-f 2239 	126 	2236
-f 2238 	128 	2239
-f 2120 	128 	2238
-f 2244 	1369 	2243
-f 2244 	2247 	1370
-f 2094 	1370 	2247
-f 2220 	2245 	2176
-f 2093 	1370 	2094
-f 2245 	2248 	2209
-f 2245 	2251 	2248
-f 2241 	2230 	2249
-f 2210 	2248 	46
-f 2224 	2250 	2220
-f 2220 	2250 	2245
-f 2250 	2251 	2245
-f 2251 	47 	2248
-f 2253 	2230 	2252
-f 2255 	660 	2233
-f 2254 	2255 	2233
-f 2248 	47 	46
-f 2227 	2256 	2224
-f 2224 	2256 	2250
-f 2250 	56 	2251
-f 2256 	56 	2250
-f 56 	68 	2251
-f 811 	2267 	2259
-f 2251 	68 	47
-f 2269 	2267 	812
-f 2257 	2256 	2258
-f 2227 	2258 	2256
-f 2263 	788 	2262
-f 2257 	86 	2256
-f 86 	135 	56
-f 2256 	86 	56
-f 2265 	789 	2263
-f 2258 	126 	2257
-f 2265 	2270 	811
-f 2211 	2210 	46
-f 2203 	2261 	953
-f 2277 	788 	2276
-f 2261 	2203 	2215
-f 2264 	953 	2261
-f 953 	2264 	955
-f 2264 	1102 	955
-f 46 	2266 	2211
-f 811 	812 	2267
-f 2269 	812 	2268
-f 2266 	2051 	42
-f 2270 	2271 	812
-f 49 	2051 	2266
-f 812 	2271 	2272
-f 2273 	812 	2272
-f 2215 	42 	2261
-f 2261 	40 	2264
-f 42 	40 	2261
-f 2264 	2180 	1102
-f 2264 	40 	2180
-f 2266 	46 	49
-f 2252 	788 	2275
-f 2275 	788 	2274
-f 2260 	2274 	789
-f 2273 	2279 	2319
-f 2311 	2230 	2281
-f 2253 	2281 	2230
-f 2230 	660 	2252
-f 788 	2252 	660
-f 2311 	2312 	2230
-f 2314 	2282 	2230
-f 2280 	2249 	2230
-f 2282 	2280 	2230
-f 2302 	2283 	2233
-f 2284 	2302 	2233
-f 2301 	2302 	2284
-f 2237 	3 	2233
-f 2307 	41 	2308
-f 2233 	3 	2284
-f 1 	2284 	3
-f 2288 	2317 	2287
-f 2317 	2289 	2278
-f 2278 	2268 	2317
-f 2289 	2317 	2288
-f 2290 	2319 	2291
-f 2298 	2299 	22
-f 2297 	2298 	22
-f 2292 	2293 	2290
-f 2293 	2295 	2290
-f 2292 	2290 	2291
-f 2296 	2290 	2295
-f 2299 	2300 	22
-f 21 	22 	2300
-f 27 	21 	2300
-f 2310 	27 	2300
-f 2303 	2301 	2284
-f 2284 	2304 	2303
-f 2309 	41 	2310
-f 2284 	2306 	2304
-f 2284 	59 	2306
-f 2306 	41 	2307
-f 2308 	41 	2309
-f 2312 	2313 	2230
-f 2314 	2230 	2313
-f 2283 	2254 	2233
-f 2319 	787 	2273
-f 783 	785 	2318
-f 2321 	782 	2320
-f 2316 	2318 	2315
-f 2324 	2317 	2316
-f 783 	2318 	2317
-f 2318 	2316 	2317
-f 939 	2325 	1716
-f 2286 	2317 	2324
-f 2318 	1716 	2326
-f 783 	2319 	785
-f 2279 	2291 	2319
-f 2319 	822 	2320
-f 2321 	2322 	304
-f 2321 	2320 	2322
-f 306 	304 	2322
-f 22 	17 	2296
-f 2322 	2320 	822
-f 2296 	2297 	22
-f 2287 	2317 	2286
-f 2315 	2318 	2326
-f 2326 	1716 	2325
-f 2329 	2330 	939
-f 939 	2225 	2329
-f 2325 	939 	2330
-# 4289 faces
-
-g group_0_14541540
-
-usemtl color_14541540
-s 0
-
-f 125 	126 	114
-f 128 	114 	126
-f 134 	146 	212
-f 212 	325 	133
-f 146 	176 	212
-f 199 	212 	176
-f 133 	134 	212
-f 199 	211 	212
-f 215 	212 	216
-f 224 	125 	2064
-f 216 	212 	211
-f 352 	212 	222
-f 215 	222 	212
-f 2076 	224 	2064
-f 352 	222 	223
-f 114 	2064 	125
-f 285 	286 	614
-f 337 	334 	325
-f 335 	325 	334
-f 61 	133 	325
-f 60 	61 	325
-f 335 	60 	325
-f 223 	356 	352
-f 357 	352 	356
-f 325 	376 	337
-f 357 	390 	352
-f 395 	352 	390
-f 376 	325 	417
-f 615 	410 	614
-f 410 	285 	614
-f 614 	726 	615
-f 672 	2053 	652
-f 672 	673 	2053
-f 727 	726 	728
-f 727 	729 	726
-f 755 	2053 	325
-f 735 	736 	733
-f 736 	737 	733
-f 352 	395 	804
-f 726 	729 	739
-f 735 	733 	753
-f 726 	739 	642
-f 616 	615 	726
-f 642 	616 	726
-f 804 	807 	755
-f 325 	212 	755
-f 726 	755 	1087
-f 2118 	2064 	755
-f 755 	733 	1087
-f 2083 	2053 	755
-f 2128 	2083 	755
-f 614 	2118 	755
-f 726 	614 	755
-f 755 	212 	352
-f 856 	733 	755
-f 753 	733 	756
-f 856 	756 	733
-f 352 	804 	755
-f 755 	807 	806
-f 810 	755 	806
-f 755 	802 	855
-f 849 	855 	802
-f 755 	810 	802
-f 912 	802 	810
-f 808 	809 	802
-f 848 	808 	802
-f 809 	849 	802
-f 855 	849 	850
-f 855 	856 	755
-f 856 	855 	883
-f 884 	856 	883
-f 756 	856 	884
-f 810 	806 	910
-f 911 	810 	910
-f 911 	912 	810
-f 881 	855 	880
-f 850 	880 	855
-f 881 	883 	855
-f 804 	395 	899
-f 901 	807 	903
-f 899 	903 	804
-f 807 	804 	903
-f 905 	906 	806
-f 905 	806 	907
-f 807 	907 	806
-f 901 	907 	807
-f 906 	910 	806
-f 802 	912 	848
-f 924 	728 	726
-f 726 	1058 	924
-f 726 	1087 	1058
-f 1091 	1085 	1087
-f 1085 	1078 	1087
-f 1044 	1051 	1087
-f 1051 	1058 	1087
-f 1042 	1044 	1087
-f 737 	1092 	733
-f 1078 	1042 	1087
-f 1087 	1092 	1091
-f 1087 	733 	1092
-f 114 	2128 	755
-f 1578 	1582 	1579
-f 1582 	1583 	1580
-f 1582 	1580 	1579
-f 1578 	1585 	1582
-f 1582 	1585 	1586
-f 1584 	1586 	1585
-f 1583 	1588 	1580
-f 1607 	1606 	1599
-f 1599 	1608 	1607
-f 1586 	1605 	1597
-f 1604 	1588 	1583
-f 1605 	1129 	1597
-f 1867 	1866 	1606
-f 1129 	1608 	1597
-f 1599 	1597 	1608
-f 1584 	1605 	1586
-f 1616 	1609 	1611
-f 1616 	1611 	1615
-f 1625 	1583 	1626
-f 1616 	1627 	1626
-f 1629 	1627 	1615
-f 1616 	1615 	1627
-f 1629 	1615 	1630
-f 1621 	1630 	1615
-f 1615 	1611 	1613
-f 1615 	1613 	1621
-f 1635 	1634 	1735
-f 1621 	1735 	1634
-f 1616 	1583 	1609
-f 1625 	1604 	1583
-f 1616 	1626 	1583
-f 1634 	1630 	1621
-f 1684 	1586 	1597
-f 1597 	1599 	1684
-f 1582 	1586 	1684
-f 1684 	1609 	1583
-f 1582 	1684 	1583
-f 1684 	1611 	1609
-f 1611 	1684 	1613
-f 1684 	1740 	1735
-f 1684 	1735 	1613
-f 1684 	1743 	1740
-f 1745 	1743 	1684
-f 1947 	1946 	1684
-f 1866 	1684 	1599
-f 1613 	1735 	1621
-f 1740 	1739 	1738
-f 1740 	1738 	1735
-f 1737 	1735 	1738
-f 1743 	1742 	1740
-f 1742 	1741 	1740
-f 1739 	1740 	1741
-f 1644 	1635 	1735
-f 1735 	1737 	1644
-f 1745 	1749 	1743
-f 1743 	1747 	1742
-f 1747 	1743 	1749
-f 1745 	889 	1749
-f 1753 	1752 	1839
-f 1752 	889 	1745
-f 1752 	1745 	1839
-f 1946 	1839 	1684
-f 1839 	1745 	1684
-f 1864 	1684 	1866
-f 1753 	1839 	1861
-f 1839 	1946 	1863
-f 1839 	1863 	1861
-f 1599 	1606 	1866
-f 1868 	1864 	1869
-f 1864 	1866 	1870
-f 1864 	1870 	1869
-f 1867 	1870 	1866
-f 1922 	1925 	1923
-f 1926 	1923 	1925
-f 1864 	1929 	1684
-f 1952 	1951 	1929
-f 1947 	1684 	1925
-f 1926 	1925 	1684
-f 1926 	1684 	1929
-f 1925 	1950 	1947
-f 1863 	1946 	1954
-f 1947 	1956 	1946
-f 1950 	1925 	1922
-f 1923 	1929 	1951
-f 1926 	1929 	1923
-f 1953 	1947 	1950
-f 1955 	1954 	1946
-f 1955 	1946 	1956
-f 1947 	1953 	1956
-f 1864 	1959 	1929
-f 1952 	1929 	1959
-f 1868 	1959 	1864
-f 2005 	2006 	2003
-f 2003 	2019 	2017
-f 2019 	2003 	2006
-f 2024 	2023 	2017
-f 2003 	2017 	2023
-f 2022 	2003 	2023
-f 2027 	2005 	2025
-f 2025 	2005 	2022
-f 2017 	2032 	2029
-f 2017 	2019 	2032
-f 673 	2054 	2053
-f 2055 	2005 	2027
-f 2057 	2005 	2056
-f 2056 	2005 	2055
-f 1353 	2005 	2057
-f 755 	2064 	114
-f 2076 	2064 	2075
-f 2118 	2075 	2064
-f 2003 	2022 	2005
-f 2006 	2219 	2019
-f 2006 	2005 	2219
-f 2005 	1353 	2093
-f 2170 	2169 	2029
-f 2171 	2170 	2098
-f 2029 	2098 	2170
-f 2128 	2099 	2083
-f 2083 	2100 	932
-f 2100 	2083 	2099
-f 651 	652 	2053
-f 2054 	2058 	325
-f 325 	2053 	2054
-f 417 	325 	2058
-f 932 	2053 	2083
-f 932 	651 	2053
-f 2122 	2075 	2118
-f 614 	286 	2118
-f 114 	128 	2128
-f 2122 	2118 	286
-f 2130 	2099 	2128
-f 2130 	2128 	128
-f 2098 	2136 	2171
-f 2140 	2189 	2175
-f 2142 	2098 	2032
-f 2029 	2032 	2098
-f 2098 	2152 	2136
-f 2095 	2140 	2136
-f 2152 	2095 	2136
-f 2152 	2098 	2142
-f 2169 	2024 	2017
-f 2017 	2029 	2169
-f 2136 	2174 	2171
-f 2172 	2136 	2173
-f 2140 	2173 	2136
-f 2174 	2136 	2172
-f 2140 	2175 	2173
-f 2185 	2178 	2177
-f 2219 	2032 	2019
-f 2186 	2187 	2185
-f 2186 	2185 	2189
-f 2185 	2177 	2189
-f 2190 	2186 	2189
-f 2185 	2187 	2192
-f 2190 	2095 	2219
-f 2219 	2186 	2190
-f 2192 	2200 	2199
-f 2185 	2192 	2199
-f 2178 	2185 	2199
-f 2192 	2223 	2200
-f 2202 	2200 	2223
-f 2175 	2189 	2177
-f 2190 	2140 	2095
-f 2189 	2140 	2190
-f 2206 	2205 	2223
-f 2205 	2202 	2223
-f 2212 	2206 	2223
-f 2213 	2212 	2223
-f 2214 	2213 	2223
-f 2219 	2142 	2032
-f 2219 	2095 	2152
-f 2219 	2152 	2142
-f 2219 	2223 	2187
-f 2240 	2242 	2219
-f 2187 	2186 	2219
-f 2327 	2328 	2219
-f 2219 	2328 	2223
-f 2219 	2285 	2323
-f 2294 	2285 	2219
-f 2219 	2305 	2294
-f 2223 	2192 	2187
-f 2216 	2214 	2223
-f 934 	2216 	2223
-f 2217 	2328 	2218
-f 934 	2223 	2217
-f 2328 	2217 	2223
-f 2228 	2240 	2229
-f 2228 	2241 	2242
-f 2228 	2242 	2240
-f 2246 	2244 	2243
-f 2247 	2244 	2246
-f 2240 	2246 	2243
-f 2240 	2243 	2229
-f 2246 	2005 	2093
-f 2241 	2249 	2242
-f 2247 	2246 	2094
-f 2093 	2094 	2246
-f 2219 	2005 	2246
-f 2254 	2281 	2255
-f 2262 	2277 	2274
-f 2259 	2265 	2263
-f 2272 	2271 	2269
-f 2267 	2270 	2259
-f 2269 	2271 	2267
-f 2271 	2270 	2267
-f 2259 	2270 	2265
-f 2272 	2269 	2273
-f 2268 	2273 	2269
-f 2260 	2259 	2263
-f 2260 	2262 	2274
-f 2263 	2262 	2260
-f 2275 	2274 	2277
-f 2275 	2277 	2276
-f 2276 	2255 	2275
-f 2252 	2275 	2255
-f 2285 	2291 	2289
-f 2268 	2278 	2273
-f 2249 	2280 	2242
-f 2252 	2255 	2253
-f 2280 	2282 	2242
-f 2253 	2255 	2281
-f 2283 	2281 	2254
-f 2286 	2323 	2287
-f 2288 	2287 	2285
-f 2279 	2289 	2291
-f 2278 	2289 	2273
-f 2288 	2285 	2289
-f 2273 	2289 	2279
-f 2293 	2285 	2294
-f 2293 	2292 	2285
-f 2291 	2285 	2292
-f 2293 	2294 	2295
-f 2295 	2294 	2296
-f 2296 	2294 	2297
-f 2297 	2294 	2298
-f 2298 	2294 	2299
-f 2294 	2300 	2299
-f 2304 	2294 	2305
-f 2302 	2301 	2305
-f 2301 	2303 	2305
-f 2303 	2304 	2305
-f 2304 	2306 	2294
-f 2306 	2307 	2294
-f 2307 	2308 	2294
-f 2309 	2310 	2294
-f 2308 	2309 	2294
-f 2310 	2300 	2294
-f 2305 	2311 	2302
-f 2281 	2283 	2311
-f 2312 	2311 	2305
-f 2313 	2312 	2305
-f 2305 	2242 	2282
-f 2305 	2282 	2314
-f 2314 	2313 	2305
-f 2283 	2302 	2311
-f 2219 	2242 	2305
-f 2219 	2246 	2240
-f 2219 	2323 	2327
-f 2315 	2323 	2316
-f 2324 	2316 	2323
-f 2324 	2323 	2286
-f 2285 	2287 	2323
-f 2323 	2315 	2326
-f 2325 	2327 	2326
-f 2326 	2327 	2323
-f 2330 	2328 	2327
-f 2327 	2325 	2330
-f 2218 	2328 	2225
-f 2329 	2225 	2328
-f 2328 	2330 	2329
-# 371 faces
-
- #end of obj_0
-

BIN
examples/models/utf8/James_Body_Lores.jpg


BIN
examples/models/utf8/James_EyeLashBotTran.png


BIN
examples/models/utf8/James_EyeLashTopTran.png


BIN
examples/models/utf8/James_Eye_Green.jpg


BIN
examples/models/utf8/James_Eye_Inner_Green.jpg


BIN
examples/models/utf8/James_Face_Color_Hair_Lores.jpg


BIN
examples/models/utf8/James_Mouth_Gum_Lores.jpg


BIN
examples/models/utf8/James_Tongue_Lores.jpg


BIN
examples/models/utf8/MCasShoe1TEX_Lores.jpg


BIN
examples/models/utf8/MJeans1TEX_Lores.jpg


BIN
examples/models/utf8/MTshirt3TEX_Lores.jpg


BIN
examples/models/utf8/Nail_Hand_01_Lores.jpg


+ 0 - 21
examples/models/utf8/WaltHi.js

@@ -1,21 +0,0 @@
-{
-  "materials": {
-    "lambert4sg": { "Kd": [204, 204, 204] }
-  },
-  "decodeParams": {
-    "decodeOffsets": [-5863,24,-6527,0,0,-511,-511,-511],
-    "decodeScales": [0.004800,0.004800,0.004800,0.000978,0.000978,0.001957,0.001957,0.001957]
-  },
-  "urls": {
-    "WaltHi.utf8": [
-      { "material": "lambert4sg",
-        "attribRange": [0, 55294],
-        "codeRange": [442352, 216890, 108427]
-      },
-      { "material": "lambert4sg",
-        "attribRange": [659242, 31285],
-        "codeRange": [909522, 121073, 60507]
-      }
-    ]
-  }
-}

BIN
examples/models/utf8/WaltHi.utf8


+ 0 - 107
examples/models/utf8/ben.js

@@ -1,107 +0,0 @@
-{
-  "materials": {
-    "gums": { "map_Kd": "James_Mouth_Gum_Lores.jpg" },
-    "tongue": { "map_Kd": "James_Tongue_Lores.jpg" },
-    "teethbottom": { "Kd": [251, 248, 248] },
-    "teethtop": { "Kd": [251, 248, 248] },
-    "topeyelashes": { "Kd": [66, 52, 42], "map_Kd": "James_EyeLashTopTran.png", "d": 0.999 },
-    "bottomeyelashes": { "Kd": [66, 52, 42], "map_Kd": "James_EyeLashBotTran.png", "d": 0.999 },
-    "head": { "map_Kd": "James_Face_Color_Hair_Lores.jpg", "Ks": [25,25,25], "Ns": 70 },
-    "eyetrans": { "Kd": [0, 0, 0] },
-    "pupil": { "Kd": [1, 1, 1] },
-    "iris": { "map_Kd": "James_Eye_Inner_Green.jpg" },
-    "eyeball": { "map_Kd": "James_Eye_Green.jpg" },
-    "pants": { "map_Kd": "MJeans1TEX_Lores.jpg", "Ks": [30,30,30], "Ns": 20 },
-    "tshirt3": { "map_Kd": "MTshirt3TEX_Lores.jpg", "Ks": [30,30,30], "Ns": 20 },
-    "skinbody": { "map_Kd": "James_Body_Lores.jpg", "Ks": [25,25,25], "Ns": 70 },
-    "fingernails": { "map_Kd": "Nail_Hand_01_Lores.jpg" },
-    "soleshoe": { "map_Kd": "MCasShoe1TEX_Lores.jpg" },
-    "sole": { "map_Kd": "MCasShoe1TEX_Lores.jpg" },
-    "laces": { "map_Kd": "MCasShoe1TEX_Lores.jpg" },
-    "bow": { "map_Kd": "MCasShoe1TEX_Lores.jpg" }
-  },
-  "decodeParams": {
-    "decodeOffsets": [-2533,-149,-6225,0,0,-511,-511,-511],
-    "decodeScales": [0.000043,0.000043,0.000043,0.000978,0.000978,0.001957,0.001957,0.001957]
-  },
-  "urls": {
-    "ben.utf8": [
-      { "material": "bottomeyelashes",
-        "attribRange": [0, 130],
-        "codeRange": [1040, 388, 192]
-      },
-      { "material": "bow",
-        "attribRange": [1428, 1848],
-        "codeRange": [16212, 6457, 3224]
-      },
-      { "material": "eyeball",
-        "attribRange": [22669, 3834],
-        "codeRange": [53341, 14697, 7284]
-      },
-      { "material": "eyetrans",
-        "attribRange": [68038, 5248],
-        "codeRange": [110022, 20180, 9964]
-      },
-      { "material": "fingernails",
-        "attribRange": [130202, 1023],
-        "codeRange": [138386, 2669, 1228]
-      },
-      { "material": "gums",
-        "attribRange": [141055, 1446],
-        "codeRange": [152623, 5270, 2624]
-      },
-      { "material": "head",
-        "attribRange": [157893, 2219],
-        "codeRange": [175645, 8353, 4168]
-      },
-      { "material": "iris",
-        "attribRange": [183998, 902],
-        "codeRange": [191214, 3332, 1664]
-      },
-      { "material": "laces",
-        "attribRange": [194546, 1016],
-        "codeRange": [202674, 3590, 1792]
-      },
-      { "material": "pants",
-        "attribRange": [206264, 8200],
-        "codeRange": [271864, 30625, 15293]
-      },
-      { "material": "pupil",
-        "attribRange": [302489, 148],
-        "codeRange": [303673, 581, 288]
-      },
-      { "material": "skinbody",
-        "attribRange": [304254, 4990],
-        "codeRange": [344174, 15770, 7830]
-      },
-      { "material": "sole",
-        "attribRange": [359944, 2588],
-        "codeRange": [380648, 9345, 4668]
-      },
-      { "material": "soleshoe",
-        "attribRange": [389993, 3164],
-        "codeRange": [415305, 10721, 5352]
-      },
-      { "material": "teethbottom",
-        "attribRange": [426026, 1235],
-        "codeRange": [435906, 3513, 1656]
-      },
-      { "material": "teethtop",
-        "attribRange": [439419, 1666],
-        "codeRange": [452747, 3937, 1816]
-      },
-      { "material": "tongue",
-        "attribRange": [456684, 845],
-        "codeRange": [463444, 3162, 1578]
-      },
-      { "material": "topeyelashes",
-        "attribRange": [466606, 130],
-        "codeRange": [467646, 388, 192]
-      },
-      { "material": "tshirt3",
-        "attribRange": [468034, 4283],
-        "codeRange": [502298, 14470, 7216]
-      }
-    ]
-  }
-}

BIN
examples/models/utf8/ben.utf8


+ 0 - 107
examples/models/utf8/ben_dds.js

@@ -1,107 +0,0 @@
-{
-  "materials": {
-    "gums": { "map_Kd": "dds/James_Mouth_Gum_Lores.dds" },
-    "tongue": { "map_Kd": "dds/James_Tongue_Lores.dds" },
-    "teethbottom": { "Kd": [251, 248, 248] },
-    "teethtop": { "Kd": [251, 248, 248] },
-    "topeyelashes": { "Kd": [66, 52, 42], "map_Kd": "dds/James_EyeLashTopTran.dds", "d": 0.999 },
-    "bottomeyelashes": { "Kd": [66, 52, 42], "map_Kd": "dds/James_EyeLashBotTran.dds", "d": 0.999 },
-    "head": { "map_Kd": "dds/James_Face_Color_Hair_Lores.dds", "Ks": [25,25,25], "Ns": 70 },
-    "eyetrans": { "Kd": [0, 0, 0] },
-    "pupil": { "Kd": [1, 1, 1] },
-    "iris": { "map_Kd": "dds/James_Eye_Inner_Green.dds" },
-    "eyeball": { "map_Kd": "dds/James_Eye_Green.dds" },
-    "pants": { "map_Kd": "dds/MJeans1TEX_Lores.dds", "Ks": [30,30,30], "Ns": 20 },
-    "tshirt3": { "map_Kd": "dds/MTshirt3TEX_Lores.dds", "Ks": [30,30,30], "Ns": 20 },
-    "skinbody": { "map_Kd": "dds/James_Body_Lores.dds", "Ks": [25,25,25], "Ns": 70 },
-    "fingernails": { "map_Kd": "dds/Nail_Hand_01_Lores.dds" },
-    "soleshoe": { "map_Kd": "dds/MCasShoe1TEX_Lores.dds" },
-    "sole": { "map_Kd": "dds/MCasShoe1TEX_Lores.dds" },
-    "laces": { "map_Kd": "dds/MCasShoe1TEX_Lores.dds" },
-    "bow": { "map_Kd": "dds/MCasShoe1TEX_Lores.dds" }
-  },
-  "decodeParams": {
-    "decodeOffsets": [-2533,-149,-6225,0,0,-511,-511,-511],
-    "decodeScales": [0.000043,0.000043,0.000043,0.000978,0.000978,0.001957,0.001957,0.001957]
-  },
-  "urls": {
-    "ben.utf8": [
-      { "material": "bottomeyelashes",
-        "attribRange": [0, 130],
-        "codeRange": [1040, 388, 192]
-      },
-      { "material": "bow",
-        "attribRange": [1428, 1848],
-        "codeRange": [16212, 6457, 3224]
-      },
-      { "material": "eyeball",
-        "attribRange": [22669, 3834],
-        "codeRange": [53341, 14697, 7284]
-      },
-      { "material": "eyetrans",
-        "attribRange": [68038, 5248],
-        "codeRange": [110022, 20180, 9964]
-      },
-      { "material": "fingernails",
-        "attribRange": [130202, 1023],
-        "codeRange": [138386, 2669, 1228]
-      },
-      { "material": "gums",
-        "attribRange": [141055, 1446],
-        "codeRange": [152623, 5270, 2624]
-      },
-      { "material": "head",
-        "attribRange": [157893, 2219],
-        "codeRange": [175645, 8353, 4168]
-      },
-      { "material": "iris",
-        "attribRange": [183998, 902],
-        "codeRange": [191214, 3332, 1664]
-      },
-      { "material": "laces",
-        "attribRange": [194546, 1016],
-        "codeRange": [202674, 3590, 1792]
-      },
-      { "material": "pants",
-        "attribRange": [206264, 8200],
-        "codeRange": [271864, 30625, 15293]
-      },
-      { "material": "pupil",
-        "attribRange": [302489, 148],
-        "codeRange": [303673, 581, 288]
-      },
-      { "material": "skinbody",
-        "attribRange": [304254, 4990],
-        "codeRange": [344174, 15770, 7830]
-      },
-      { "material": "sole",
-        "attribRange": [359944, 2588],
-        "codeRange": [380648, 9345, 4668]
-      },
-      { "material": "soleshoe",
-        "attribRange": [389993, 3164],
-        "codeRange": [415305, 10721, 5352]
-      },
-      { "material": "teethbottom",
-        "attribRange": [426026, 1235],
-        "codeRange": [435906, 3513, 1656]
-      },
-      { "material": "teethtop",
-        "attribRange": [439419, 1666],
-        "codeRange": [452747, 3937, 1816]
-      },
-      { "material": "tongue",
-        "attribRange": [456684, 845],
-        "codeRange": [463444, 3162, 1578]
-      },
-      { "material": "topeyelashes",
-        "attribRange": [466606, 130],
-        "codeRange": [467646, 388, 192]
-      },
-      { "material": "tshirt3",
-        "attribRange": [468034, 4283],
-        "codeRange": [502298, 14470, 7216]
-      }
-    ]
-  }
-}

BIN
examples/models/utf8/dds/James_Body_Lores.dds


BIN
examples/models/utf8/dds/James_EyeLashBotTran.dds


BIN
examples/models/utf8/dds/James_EyeLashTopTran.dds


BIN
examples/models/utf8/dds/James_Eye_Green.dds


BIN
examples/models/utf8/dds/James_Eye_Inner_Green.dds


BIN
examples/models/utf8/dds/James_Face_Color_Hair_Lores.dds


BIN
examples/models/utf8/dds/James_Mouth_Gum_Lores.dds


BIN
examples/models/utf8/dds/James_Tongue_Lores.dds


BIN
examples/models/utf8/dds/MCasShoe1TEX_Lores.dds


BIN
examples/models/utf8/dds/MJeans1TEX_Lores.dds


BIN
examples/models/utf8/dds/MTshirt3TEX_Lores.dds


BIN
examples/models/utf8/dds/Nail_Hand_01_Lores.dds


BIN
examples/models/utf8/hand.jpg


+ 0 - 27
examples/models/utf8/hand.js

@@ -1,27 +0,0 @@
-{
-  "materials": {
-    "preview": { "Kd": [184, 136, 234] },
-    "nails": { "Kd": [251, 238, 209], "map_Kd": "hand.jpg", "Ks": [30,30,30], "Ns": 100 },
-    "skin": { "Kd": [207, 181, 161],  "map_Kd": "hand.jpg", "Ks": [30,30,30], "Ns": 30 }
-  },
-  "decodeParams": {
-    "decodeOffsets": [-7473,-239,-8362,0,0,-511,-511,-511],
-    "decodeScales": [0.000050,0.000050,0.000050,0.000978,0.000978,0.001957,0.001957,0.001957]
-  },
-  "urls": {
-    "hand.utf8": [
-      { "material": "nails",
-        "attribRange": [0, 261],
-        "codeRange": [2088, 817, 404]
-      },
-      { "material": "preview",
-        "attribRange": [2905, 688],
-        "codeRange": [8409, 2570, 1280]
-      },
-      { "material": "skin",
-        "attribRange": [10979, 8899],
-        "codeRange": [82171, 31026, 15451]
-      }
-    ]
-  }
-}

BIN
examples/models/utf8/hand.utf8


+ 2 - 4
examples/webaudio_orientation.html

@@ -123,7 +123,7 @@
 
 		//
 
-		light = new THREE.HemisphereLight( 0xffffff, 0x444444 );
+		var light = new THREE.HemisphereLight( 0xffffff, 0x444444 );
 		light.position.set( 0, 200, 0 );
 		scene.add( light );
 
@@ -150,8 +150,6 @@
 
 		//
 
-		var audioLoader = new THREE.AudioLoader();
-
 		var listener = new THREE.AudioListener();
 		camera.add( listener );
 
@@ -172,7 +170,7 @@
 		var gltfLoader = new THREE.GLTFLoader();
 		gltfLoader.load( 'models/gltf/BoomBox/glTF-Binary/BoomBox.glb', function( gltf ) {
 
-			boomBox =  gltf.scene;
+			var boomBox =  gltf.scene;
 			boomBox.position.set( 0, 0.2, 0 );
 			boomBox.scale.set( 20, 20, 20 );
 

+ 0 - 2
examples/webgl_buffergeometry_instancing_lambert.html

@@ -268,8 +268,6 @@
 			var colors = new Float32Array( INSTANCES * 3 ); // rgb
 			var scales = new Float32Array( INSTANCES * 1 ); // s
 
-			var color = new THREE.Color();
-
 			for ( var i = 0, l = INSTANCES; i < l; i ++ ) {
 
 				var index = 3 * i;

+ 0 - 232
examples/webgl_loader_utf8.html

@@ -1,232 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<title>three.js webgl - loader - UTF8</title>
-		<meta charset="utf-8">
-		<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
-		<style>
-			body {
-				font-family: Monospace;
-				background-color: #000;
-				color: #fff;
-				margin: 0px;
-				overflow: hidden;
-			}
-			#info {
-				color: #fff;
-				position: absolute;
-				top: 10px;
-				width: 100%;
-				text-align: center;
-				z-index: 100;
-				display:block;
-			}
-			#info a, .button { color: #f00; font-weight: bold; text-decoration: underline; cursor: pointer }
-		</style>
-	</head>
-
-	<body>
-		<div id="info">
-		<a href="http://threejs.org" target="_blank" rel="noopener">three.js</a> -
-		<a href="http://code.google.com/p/webgl-loader/" target="_blank" rel="noopener">UTF8 format</a> loader test -
-		models from <a href="http://www.sci.utah.edu/~wald/animrep/" target="_blank" rel="noopener">The Utah 3D Animation Repository</a>
-		</div>
-
-		<script src="../build/three.js"></script>
-
-		<script src="js/loaders/UTF8Loader.js"></script>
-		<script src="js/loaders/MTLLoader.js"></script>
-		<script src="js/loaders/DDSLoader.js"></script>
-
-		<script src="js/Detector.js"></script>
-		<script src="js/libs/stats.min.js"></script>
-
-		<script>
-
-			var SCREEN_WIDTH = window.innerWidth;
-			var SCREEN_HEIGHT = window.innerHeight;
-
-			var FLOOR = -150;
-
-			var container, stats;
-
-			var camera, scene, renderer;
-
-			var mesh, zmesh, geometry;
-
-			var mouseX = 0, mouseY = 0;
-
-			var windowHalfX = window.innerWidth / 2;
-			var windowHalfY = window.innerHeight / 2;
-
-			document.addEventListener('mousemove', onDocumentMouseMove, false);
-
-			init();
-			animate();
-
-
-			function init() {
-
-				container = document.createElement( 'div' );
-				document.body.appendChild( container );
-
-				camera = new THREE.PerspectiveCamera( 20, SCREEN_WIDTH / SCREEN_HEIGHT, 1, 2000 );
-				camera.position.z = 800;
-
-				scene = new THREE.Scene();
-				scene.background = new THREE.Color( 0x000000 );
-				scene.fog = new THREE.Fog( 0x000000, 800, 2000 );
-
-				var path = "textures/cube/SwedishRoyalCastle/";
-				var format = '.jpg';
-				var urls = [
-					path + 'px' + format, path + 'nx' + format,
-					path + 'py' + format, path + 'ny' + format,
-					path + 'pz' + format, path + 'nz' + format
-				];
-
-				reflectionCube = new THREE.CubeTextureLoader().load( urls );
-
-				// LIGHTS
-
-				var ambient = new THREE.AmbientLight( 0x222222 );
-				scene.add( ambient );
-
-				var directionalLight = new THREE.DirectionalLight( 0xffffff, 1.1 );
-				directionalLight.position.set( 0, 20, 300 );
-				scene.add( directionalLight );
-
-				directionalLight.castShadow = true;
-
-				directionalLight.shadow.mapSize.width = 2048;
-				directionalLight.shadow.mapSize.height = 2048;
-
-				var d = 150;
-
-				directionalLight.shadow.camera.left = -d * 1.2;
-				directionalLight.shadow.camera.right = d * 1.2;
-				directionalLight.shadow.camera.top = d;
-				directionalLight.shadow.camera.bottom = -d;
-
-				directionalLight.shadow.camera.near = 200;
-				directionalLight.shadow.camera.far = 500;
-
-
-				// RENDERER
-
-				renderer = new THREE.WebGLRenderer( { antialias: true } );
-				renderer.setPixelRatio( window.devicePixelRatio );
-				renderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT );
-				renderer.domElement.style.position = "relative";
-				container.appendChild( renderer.domElement );
-
-				//
-
-				renderer.gammaInput = true;
-				renderer.gammaOutput = true;
-
-				renderer.shadowMap.enabled = true;
-				renderer.shadowMap.type = THREE.PCFShadowMap;
-
-				// STATS
-
-				stats = new Stats();
-				container.appendChild( stats.dom );
-
-				var start = Date.now();
-
-				THREE.Loader.Handlers.add( /\.dds$/i, new THREE.DDSLoader() );
-
-				var loader = new THREE.UTF8Loader();
-
-				loader.load( "models/utf8/hand.js", function ( object ) {
-
-					var end = Date.now();
-					console.log( "hand", end - start, "ms" );
-
-					var s = 350;
-					object.scale.set( s, s, s );
-					object.position.x = 125;
-					object.position.y = -125;
-					scene.add( object );
-
-					object.traverse( function( node ) {
-
-						node.castShadow = true;
-						node.receiveShadow = true;
-
-					} );
-
-				}, { normalizeRGB: true } );
-
-				loader.load( "models/utf8/ben_dds.js", function ( object ) {
-
-					var end = Date.now();
-					console.log( "ben", end - start, "ms" );
-
-					var s = 350;
-					object.scale.set( s, s, s );
-					object.position.x = -125;
-					object.position.y = -125;
-					scene.add( object );
-
-					object.traverse( function( node ) {
-
-						node.castShadow = true;
-						node.receiveShadow = true;
-
-					} );
-
-				}, { normalizeRGB: true } );
-
-				//
-
-				window.addEventListener( 'resize', onWindowResize, false );
-
-			}
-
-			function onWindowResize() {
-
-				windowHalfX = window.innerWidth / 2;
-				windowHalfY = window.innerHeight / 2;
-
-				camera.aspect = window.innerWidth / window.innerHeight;
-				camera.updateProjectionMatrix();
-
-				renderer.setSize( window.innerWidth, window.innerHeight );
-
-			}
-
-			function onDocumentMouseMove( event ) {
-
-				mouseX = ( event.clientX - windowHalfX );
-				mouseY = ( event.clientY - windowHalfY );
-
-			}
-
-			//
-
-			function animate() {
-
-				requestAnimationFrame( animate );
-
-				render();
-				stats.update();
-
-			}
-
-			function render() {
-
-				camera.position.x += ( mouseX - camera.position.x ) * .05;
-				camera.position.y += ( - mouseY - camera.position.y ) * .05;
-
-				camera.lookAt( scene.position );
-
-				renderer.render( scene, camera );
-
-			}
-
-		</script>
-
-	</body>
-</html>

+ 3 - 3
examples/webgl_tiled_forward.html

@@ -52,7 +52,7 @@
 
 		var RADIUS = 75;
 
-		THREE.ShaderChunk[ 'lights_pars_maps' ] += [
+		THREE.ShaderChunk[ 'lights_pars_begin' ] += [
 			'#if defined TILED_FORWARD',
 			'uniform vec4 tileData;',
 			'uniform sampler2D tileTexture;',
@@ -60,7 +60,7 @@
 			'#endif'
 		].join( '\n' );
 
-		THREE.ShaderChunk[ 'lights_fragment_maps' ] += [
+		THREE.ShaderChunk[ 'lights_fragment_end' ] += [
 			'',
 			'#if defined TILED_FORWARD',
 			'vec2 tUv = floor(gl_FragCoord.xy / tileData.xy * 32.) / 32. + tileData.zw;',
@@ -383,7 +383,7 @@
 			init( geometry );
 			resize();
 
-			renderer.animate( function ( time ) {
+			renderer.setAnimationLoop( function ( time ) {
 
 				update( time / 1000 );
 				stats.begin();

+ 25 - 21
examples/webvr_daydream.html → examples/webvr_ballshooter.html

@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <html lang="en">
 	<head>
-		<title>three.js webvr - daydream</title>
+		<title>three.js webvr - ball shooter</title>
 		<meta charset="utf-8">
 		<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
 		<!-- Origin Trial Token, feature = WebVR (For Chrome M62+), origin = https://threejs.org, expires = 2018-07-25 -->
@@ -19,24 +19,20 @@
 				overflow: hidden;
 			}
 			a {
-				color: #f00;
+				color: #48f;
 			}
 		</style>
 	</head>
 	<body>
 
 		<script src="../build/three.js"></script>
-
-		<script src="js/vr/DaydreamController.js"></script>
 		<script src="js/vr/WebVR.js"></script>
 
 		<script>
 
-			var clock = new THREE.Clock();
-
 			var container;
 			var camera, scene, renderer;
-			var controller;
+			var controller, isSelecting = false;
 
 			var room;
 
@@ -57,7 +53,7 @@
 				info.style.top = '10px';
 				info.style.width = '100%';
 				info.style.textAlign = 'center';
-				info.innerHTML = '<a href="https://threejs.org" target="_blank" rel="noopener">three.js</a> webvr - daydream';
+				info.innerHTML = '<a href="https://threejs.org" target="_blank" rel="noopener">three.js</a> webvr - ball shooter';
 				container.appendChild( info );
 
 				scene = new THREE.Scene();
@@ -111,14 +107,24 @@
 
 				//
 
-				controller = new THREE.DaydreamController();
-				controller.position.set( 0.3, 0.75, 0 );
+				controller = renderer.vr.getController( 0 );
+				controller.addEventListener( 'selectstart', function () {
+
+					isSelecting = true;
+
+				} );
+				controller.addEventListener( 'selectend', function () {
+
+					isSelecting = false;
+
+				} );
 				scene.add( controller );
 
 				//
 
-				var controllerHelper = new THREE.Line( new THREE.BufferGeometry(), new THREE.LineBasicMaterial( { linewidth: 2 } ) );
-				controllerHelper.geometry.addAttribute( 'position', new THREE.Float32BufferAttribute( [ 0, 0, 0, 0, 0, - 10 ], 3 ) );
+				var controllerHelper = new THREE.Line( new THREE.BufferGeometry(), new THREE.LineBasicMaterial( { vertexColors: true, linewidth: 2, blending: THREE.AdditiveBlending } ) );
+				controllerHelper.geometry.addAttribute( 'position', new THREE.Float32BufferAttribute( [ 0, 0, 0, 0, 0, - 1 ], 3 ) );
+				controllerHelper.geometry.addAttribute( 'color', new THREE.Float32BufferAttribute( [ 0.5, 0.5, 0.5, 0, 0, 0 ], 3 ) );
 				controller.add( controllerHelper );
 
 				//
@@ -146,11 +152,7 @@
 
 			function render() {
 
-				var delta = clock.getDelta() * 60;
-
-				controller.update();
-
-				if ( controller.getTouchpadState() === true ) {
+				if ( isSelecting ) {
 
 					var cube = room.children[ 0 ];
 					room.remove( cube );
@@ -204,18 +206,20 @@
 
 						normal.copy( cube.position ).sub( cube2.position );
 
-						if ( normal.length() < 2 * radius ) {
+						var distance = normal.length();
+
+						if ( distance < 2 * radius ) {
+
+							normal.multiplyScalar( 0.5 * distance - radius );
 
-							normal.multiplyScalar( 0.5 * normal.length() - radius );
 							cube.position.sub( normal );
 							cube2.position.add( normal );
 
 							normal.normalize();
 
 							relativeVelocity.copy( cube.userData.velocity ).sub( cube2.userData.velocity );
-							var dot = relativeVelocity.dot( normal );
 
-							normal = normal.multiplyScalar( dot );
+							normal = normal.multiplyScalar( relativeVelocity.dot( normal ) );
 
 							cube.userData.velocity.sub( normal );
 							cube2.userData.velocity.add( normal );

+ 0 - 262
examples/webvr_gearvr.html

@@ -1,262 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<title>three.js webvr - gear vr</title>
-		<meta charset="utf-8">
-		<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
-		<!-- Origin Trial Token, feature = WebVR (For Chrome M62+), origin = https://threejs.org, expires = 2018-07-25 -->
-		<meta http-equiv="origin-trial" data-feature="WebVR (For Chrome M62+)" data-expires="2018-07-25" content="AtW06hJFoVWUJTZf5gqymMIlrR60JJi5MsSe44qsHjrCmzDUNmvaTtAVg+K9O9jFpjJtn/W9jvG//hHHaq5HcQoAAABQeyJvcmlnaW4iOiJodHRwczovL3RocmVlanMub3JnOjQ0MyIsImZlYXR1cmUiOiJXZWJWUjEuMU02MiIsImV4cGlyeSI6MTUzMjUyNjI5OH0=">
-		<!-- Origin Trial Token, feature = WebXR Device API, origin = https://threejs.org, expires = 2018-07-21 -->
-		<meta http-equiv="origin-trial" data-feature="WebXR Device API" data-expires="2018-07-21" content="Anlf1R/bCOUxOEgGI/9TWuzHHNxBMfZSTUMDCN7cLwDj2gpLwgA1K0DPwOzO/O0Jwaur5bsHo7k9KXx+6g+82wIAAABQeyJvcmlnaW4iOiJodHRwczovL3RocmVlanMub3JnOjQ0MyIsImZlYXR1cmUiOiJXZWJYUkRldmljZSIsImV4cGlyeSI6MTUzMjE2NjIyNX0=">
-		<!-- Origin Trial Token, feature = WebXR Gamepad Support, origin = https://threejs.org, expires = 2018-07-21 -->
-		<meta http-equiv="origin-trial" data-feature="WebXR Gamepad Support" data-expires="2018-07-21" content="ArDsXbwATKHPmvQiPlEIWNCt4DlEjB7bLj9vOgoNmL8r38U+wQNYZyUvjQIqqzgACciUUuAnxluTIL7nNkI89gcAAABYeyJvcmlnaW4iOiJodHRwczovL3RocmVlanMub3JnOjQ0MyIsImZlYXR1cmUiOiJXZWJYUkdhbWVwYWRTdXBwb3J0IiwiZXhwaXJ5IjoxNTMyMTY2MjI1fQ==">
-		<style>
-			body {
-				font-family: Monospace;
-				background-color: #101010;
-				color: #fff;
-				margin: 0px;
-				overflow: hidden;
-			}
-			a {
-				color: #f00;
-			}
-		</style>
-	</head>
-	<body>
-
-		<script src="../build/three.js"></script>
-
-		<script src="js/loaders/MTLLoader.js"></script>
-		<script src="js/loaders/OBJLoader.js"></script>
-
-		<script src="js/vr/GearVRController.js"></script>
-		<script src="js/vr/WebVR.js"></script>
-
-		<script>
-
-			var clock = new THREE.Clock();
-
-			var container;
-			var camera, scene, renderer;
-			var controller;
-
-			var room;
-
-			var radius = 0.08;
-			var normal = new THREE.Vector3();
-			var relativeVelocity = new THREE.Vector3();
-
-			init();
-			animate();
-
-			function init() {
-
-				container = document.createElement( 'div' );
-				document.body.appendChild( container );
-
-				var info = document.createElement( 'div' );
-				info.style.position = 'absolute';
-				info.style.top = '10px';
-				info.style.width = '100%';
-				info.style.textAlign = 'center';
-				info.innerHTML = '<a href="http://threejs.org" target="_blank" rel="noopener">three.js</a> webgl - gear vr';
-				container.appendChild( info );
-
-				scene = new THREE.Scene();
-				scene.background = new THREE.Color( 0x505050 );
-
-				camera = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 0.1, 10 );
-
-				room = new THREE.Mesh(
-					new THREE.BoxBufferGeometry( 6, 6, 6, 8, 8, 8 ),
-					new THREE.MeshBasicMaterial( { color: 0x404040, wireframe: true } )
-				);
-				room.position.y = 3;
-				scene.add( room );
-
-				scene.add( new THREE.HemisphereLight( 0x606060, 0x404040 ) );
-
-				var light = new THREE.DirectionalLight( 0xffffff );
-				light.position.set( 1, 1, 1 ).normalize();
-				scene.add( light );
-
-				var geometry = new THREE.IcosahedronBufferGeometry( radius, 2 );
-
-				for ( var i = 0; i < 200; i ++ ) {
-
-					var object = new THREE.Mesh(
-						geometry,
-						new THREE.MeshLambertMaterial( { color: Math.random() * 0xffffff } )
-					);
-
-					object.position.x = Math.random() * 4 - 2;
-					object.position.y = Math.random() * 4 - 2;
-					object.position.z = Math.random() * 4 - 2;
-
-					object.userData.velocity = new THREE.Vector3();
-					object.userData.velocity.x = Math.random() * 0.01 - 0.005;
-					object.userData.velocity.y = Math.random() * 0.01 - 0.005;
-					object.userData.velocity.z = Math.random() * 0.01 - 0.005;
-
-					room.add( object );
-
-				}
-
-				renderer = new THREE.WebGLRenderer( { antialias: true } );
-				renderer.setPixelRatio( window.devicePixelRatio );
-				renderer.setSize( window.innerWidth, window.innerHeight );
-				renderer.vr.enabled = true;
-				container.appendChild( renderer.domElement );
-
-				document.body.appendChild( WEBVR.createButton( renderer ) );
-
-				controller = new THREE.GearVRController();
-				controller.position.set( 0.25, 0.75, 0 );
-				scene.add( controller );
-
-				var skyBox = {
-					front: 'textures/cube/Bridge2/posz.jpg',
-					back: 'textures/cube/Bridge2/negz.jpg',
-					left: 'textures/cube/Bridge2/posx.jpg',
-					right: 'textures/cube/Bridge2/negx.jpg',
-					up: 'textures/cube/Bridge2/posy.jpg',
-					down: 'textures/cube/Bridge2/negy.jpg'
-				};
-
-				if ( 'SamsungChangeSky' in window ) {
-
-					window.SamsungChangeSky( skyBox );
-
-				}
-
-				var MTL = new THREE.MTLLoader();
-
-				MTL.setPath( 'models/obj/gear_vr_controller/' );
-				MTL.load( 'gear_vr_controller.mtl', function ( materials ) {
-
-					materials.preload();
-
-					var OBJ = new THREE.OBJLoader();
-					OBJ.setMaterials( materials );
-					OBJ.setPath( 'models/obj/gear_vr_controller/' );
-
-					OBJ.load( 'gear_vr_controller.obj', function ( obj ) {
-
-						obj.translateZ( - 0.03 );
-						controller.add( obj );
-
-					} );
-
-				} );
-
-				window.addEventListener( 'resize', onWindowResize, false );
-
-			}
-
-			function onWindowResize() {
-
-				camera.aspect = window.innerWidth / window.innerHeight;
-				camera.updateProjectionMatrix();
-
-				renderer.setSize( window.innerWidth, window.innerHeight );
-
-			}
-
-			function animate() {
-
-				renderer.setAnimationLoop( render );
-
-			}
-
-			function render() {
-
-				var delta = clock.getDelta() * 60;
-
-				controller.update();
-
-				if ( controller.getTouchpadState() === true ) {
-
-					var cube = room.children[ 0 ];
-					room.remove( cube );
-
-					cube.position.copy( controller.position ).sub( room.position );
-					cube.userData.velocity.x = ( Math.random() - 0.5 ) * 0.02;
-					cube.userData.velocity.y = ( Math.random() - 0.5 ) * 0.02;
-					cube.userData.velocity.z = ( Math.random() * 0.02 - 0.1 );
-					cube.userData.velocity.applyQuaternion( controller.quaternion );
-					room.add( cube );
-
-				}
-
-				// keep cubes inside room
-
-				var range = 3 - radius;
-
-				for ( var i = 0; i < room.children.length; i ++ ) {
-
-					var cube = room.children[ i ];
-
-					cube.position.add( cube.userData.velocity );
-
-					if ( cube.position.x < - range || cube.position.x > range ) {
-
-						cube.position.x = THREE.Math.clamp( cube.position.x, - range, range );
-						cube.userData.velocity.x = - cube.userData.velocity.x;
-
-					}
-
-					if ( cube.position.y < - range || cube.position.y > range ) {
-
-						cube.position.y = Math.max( cube.position.y, - range );
-
-						cube.userData.velocity.x *= 0.9;
-						cube.userData.velocity.y = - cube.userData.velocity.y * 0.8;
-						cube.userData.velocity.z *= 0.9;
-
-					}
-
-					if ( cube.position.z < - range || cube.position.z > range ) {
-
-						cube.position.z = THREE.Math.clamp( cube.position.z, - range, range );
-						cube.userData.velocity.z = - cube.userData.velocity.z;
-
-					}
-
-					for ( var j = i + 1; j < room.children.length; j ++ ) {
-
-						var cube2 = room.children[ j ];
-
-						normal.copy( cube.position ).sub( cube2.position );
-
-						if ( normal.length() < 2 * radius ) {
-
-							normal.multiplyScalar( 0.5 * normal.length() - radius );
-							cube.position.sub( normal );
-							cube2.position.add( normal );
-
-							normal.normalize();
-
-							relativeVelocity.copy( cube.userData.velocity ).sub( cube2.userData.velocity );
-							var dot = relativeVelocity.dot( normal );
-
-							normal = normal.multiplyScalar( dot );
-
-							cube.userData.velocity.sub( normal );
-							cube2.userData.velocity.add( normal );
-
-						}
-
-					}
-
-					cube.userData.velocity.y -= 0.00098;
-
-				}
-
-				renderer.render( scene, camera );
-
-			}
-
-		</script>
-	</body>
-</html>

+ 36 - 22
examples/webvr_lorenzattractor.html

@@ -25,10 +25,10 @@
 
 		<script>
 
-			var camera, scene, renderer, x, y, z, c, geometry;
+			var camera, scene, renderer, x, y, z, c;
 
-			var scale = .015; // for reducing overall displayed size
-			var multiplier = 5; // integer, increase for faster visualization
+			var scale = .02; // for reducing overall displayed size
+			var speed = 5; // integer, increase for faster visualization
 
 			var steps = 100000;
 			var current = 1;
@@ -43,7 +43,9 @@
 			init();
 			animate();
 
-			function move() {
+			function draw() {
+
+				var geometry = attractor.geometry;
 
 				geometry.attributes.position.array.copyWithin( 3 );
 				geometry.attributes.color.array.copyWithin( 3 );
@@ -80,10 +82,8 @@
 			function init() {
 
 				scene = new THREE.Scene();
-				scene.position.set( 0, 1.5, - 1 );
 
-				camera = new THREE.PerspectiveCamera( 50, window.innerWidth / window.innerHeight, 0.1, 2 );
-				camera.lookAt( 0, 1.5, - 1 );
+				camera = new THREE.PerspectiveCamera( 50, window.innerWidth / window.innerHeight, 0.1, 10 );
 
 				//
 
@@ -93,37 +93,56 @@
 
 				c = new THREE.Color();
 
-				geometry = new THREE.BufferGeometry();
+				var geometry = new THREE.BufferGeometry();
 
 				var positions = new Float32Array( 3 * shown );
+
 				for ( var i = 0; i < positions.length; i += 3 ) {
 
 					positions.set( [ scale * x, scale * y, scale * z ], i );
 
 				}
+
 				geometry.addAttribute( 'position', new THREE.BufferAttribute( positions, 3 ) );
 
 				var colors = new Float32Array( 3 * shown );
+
 				for ( var i = 0; i < positions.length; i += 3 ) {
 
 					colors.set( [ 1, 0, 0 ], i );
 
 				}
+
 				geometry.addAttribute( 'color', new THREE.BufferAttribute( colors, 3 ) );
 
 				var material = new THREE.LineBasicMaterial( { vertexColors: THREE.VertexColors } );
 
-				var line = new THREE.Line( geometry, material );
-				line.frustumCulled = false; // critical to avoid blackouts!
-				scene.add( line );
+				attractor = new THREE.Line( geometry, material );
+				attractor.position.set( 0, 1.5, - 2 );
+				attractor.frustumCulled = false; // critical to avoid blackouts!
+				scene.add( attractor );
+
+				//
+
+				var light = new THREE.PointLight( 0xffffff, 1 );
+				light.color = c;
+				light.distance = 2;
+				attractor.add( light );
+
+				// scene.add( new THREE.PointLightHelper( light ))
+
+				var ground = new THREE.Mesh(
+					new THREE.PlaneBufferGeometry( 10, 10 ),
+					new THREE.MeshPhongMaterial()
+				);
+				ground.geometry.rotateX( - 90 * Math.PI / 180 );
+				scene.add( ground );
 
 				//
 
 				renderer = new THREE.WebGLRenderer( { antialias: true } );
-				renderer.autoClear = false;
 				renderer.setPixelRatio( window.devicePixelRatio );
 				renderer.setSize( window.innerWidth, window.innerHeight );
-				renderer.shadowMap.enabled = true;
 				renderer.vr.enabled = true;
 				document.body.appendChild( renderer.domElement );
 
@@ -152,16 +171,11 @@
 
 			function render() {
 
-				scene.rotation.z += .001;
-
-				for ( var i = 0; i < multiplier; i ++ ) {
-
-					move();
-
-				}
+				for ( var i = 0; i < speed; i ++ ) draw();
 
-				geometry.attributes.position.needsUpdate = true;
-				geometry.attributes.color.needsUpdate = true;
+				attractor.geometry.attributes.position.needsUpdate = true;
+				attractor.geometry.attributes.color.needsUpdate = true;
+				attractor.rotation.z += .001;
 
 				renderer.render( scene, camera );
 

+ 0 - 263
examples/webvr_oculusgo.html

@@ -1,263 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-	<head>
-		<title>three.js webvr - oculus go</title>
-		<meta charset="utf-8">
-		<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
-		<!-- Origin Trial Token, feature = WebVR (For Chrome M62+), origin = https://threejs.org, expires = 2018-07-25 -->
-		<meta http-equiv="origin-trial" data-feature="WebVR (For Chrome M62+)" data-expires="2018-07-25" content="AtW06hJFoVWUJTZf5gqymMIlrR60JJi5MsSe44qsHjrCmzDUNmvaTtAVg+K9O9jFpjJtn/W9jvG//hHHaq5HcQoAAABQeyJvcmlnaW4iOiJodHRwczovL3RocmVlanMub3JnOjQ0MyIsImZlYXR1cmUiOiJXZWJWUjEuMU02MiIsImV4cGlyeSI6MTUzMjUyNjI5OH0=">
-		<!-- Origin Trial Token, feature = WebXR Device API, origin = https://threejs.org, expires = 2018-07-21 -->
-		<meta http-equiv="origin-trial" data-feature="WebXR Device API" data-expires="2018-07-21" content="Anlf1R/bCOUxOEgGI/9TWuzHHNxBMfZSTUMDCN7cLwDj2gpLwgA1K0DPwOzO/O0Jwaur5bsHo7k9KXx+6g+82wIAAABQeyJvcmlnaW4iOiJodHRwczovL3RocmVlanMub3JnOjQ0MyIsImZlYXR1cmUiOiJXZWJYUkRldmljZSIsImV4cGlyeSI6MTUzMjE2NjIyNX0=">
-		<!-- Origin Trial Token, feature = WebXR Gamepad Support, origin = https://threejs.org, expires = 2018-07-21 -->
-		<meta http-equiv="origin-trial" data-feature="WebXR Gamepad Support" data-expires="2018-07-21" content="ArDsXbwATKHPmvQiPlEIWNCt4DlEjB7bLj9vOgoNmL8r38U+wQNYZyUvjQIqqzgACciUUuAnxluTIL7nNkI89gcAAABYeyJvcmlnaW4iOiJodHRwczovL3RocmVlanMub3JnOjQ0MyIsImZlYXR1cmUiOiJXZWJYUkdhbWVwYWRTdXBwb3J0IiwiZXhwaXJ5IjoxNTMyMTY2MjI1fQ==">
-		<style>
-			body {
-				font-family: Monospace;
-				background-color: #101010;
-				color: #fff;
-				margin: 0px;
-				overflow: hidden;
-			}
-			a {
-				color: #f00;
-			}
-		</style>
-	</head>
-	<body>
-
-		<script src="../build/three.js"></script>
-
-		<script src="js/loaders/MTLLoader.js"></script>
-		<script src="js/loaders/OBJLoader.js"></script>
-
-		<script src="js/vr/GearVRController.js"></script>
-		<script src="js/vr/WebVR.js"></script>
-
-		<script>
-
-			var clock = new THREE.Clock();
-
-			var container;
-			var camera, scene, renderer;
-			var controller;
-
-			var room;
-
-			var radius = 0.08;
-			var normal = new THREE.Vector3();
-			var relativeVelocity = new THREE.Vector3();
-
-			init();
-			animate();
-
-			function init() {
-
-				container = document.createElement( 'div' );
-				document.body.appendChild( container );
-
-				var info = document.createElement( 'div' );
-				info.style.position = 'absolute';
-				info.style.top = '10px';
-				info.style.width = '100%';
-				info.style.textAlign = 'center';
-				info.innerHTML = '<a href="http://threejs.org" target="_blank" rel="noopener">three.js</a> webvr - oculus go';
-				container.appendChild( info );
-
-				scene = new THREE.Scene();
-				scene.background = new THREE.Color( 0x505050 );
-
-				camera = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 0.1, 10 );
-
-				room = new THREE.Mesh(
-					new THREE.BoxBufferGeometry( 6, 6, 6, 8, 8, 8 ),
-					new THREE.MeshBasicMaterial( { color: 0x404040, wireframe: true } )
-				);
-				room.position.y = 3;
-				scene.add( room );
-
-				scene.add( new THREE.HemisphereLight( 0x606060, 0x404040 ) );
-
-				var light = new THREE.DirectionalLight( 0xffffff );
-				light.position.set( 1, 1, 1 ).normalize();
-				scene.add( light );
-
-				var geometry = new THREE.IcosahedronBufferGeometry( radius, 2 );
-
-				for ( var i = 0; i < 200; i ++ ) {
-
-					var object = new THREE.Mesh(
-						geometry,
-						new THREE.MeshLambertMaterial( { color: Math.random() * 0xffffff } )
-					);
-
-					object.position.x = Math.random() * 4 - 2;
-					object.position.y = Math.random() * 4 - 2;
-					object.position.z = Math.random() * 4 - 2;
-
-					object.userData.velocity = new THREE.Vector3();
-					object.userData.velocity.x = Math.random() * 0.01 - 0.005;
-					object.userData.velocity.y = Math.random() * 0.01 - 0.005;
-					object.userData.velocity.z = Math.random() * 0.01 - 0.005;
-
-					room.add( object );
-
-				}
-
-				renderer = new THREE.WebGLRenderer( { antialias: true } );
-				renderer.setPixelRatio( window.devicePixelRatio );
-				renderer.setSize( window.innerWidth, window.innerHeight );
-				renderer.vr.enabled = true;
-				container.appendChild( renderer.domElement );
-
-				document.body.appendChild( WEBVR.createButton( renderer ) );
-
-				controller = new THREE.GearVRController();
-				controller.position.set( 0.35, 1.1, -0.3 );
-
-				scene.add( controller );
-
-				var skyBox = {
-					front: 'textures/cube/Bridge2/posz.jpg',
-					back: 'textures/cube/Bridge2/negz.jpg',
-					left: 'textures/cube/Bridge2/posx.jpg',
-					right: 'textures/cube/Bridge2/negx.jpg',
-					up: 'textures/cube/Bridge2/posy.jpg',
-					down: 'textures/cube/Bridge2/negy.jpg'
-				};
-
-				if ( 'SamsungChangeSky' in window ) {
-
-					window.SamsungChangeSky( skyBox );
-
-				}
-
-				var MTL = new THREE.MTLLoader();
-
-				MTL.setPath( 'models/obj/oculus_go_controller/' );
-				MTL.load( 'oculus_go_controller.mtl', function ( materials ) {
-
-					materials.preload();
-
-					var OBJ = new THREE.OBJLoader();
-					OBJ.setMaterials( materials );
-					OBJ.setPath( 'models/obj/oculus_go_controller/' );
-
-					OBJ.load( 'oculus_go_controller.obj', function ( obj ) {
-	
-						obj.translateZ( - 0.03 );
-						controller.add( obj );
-
-					} );
-
-				} );
-
-				window.addEventListener( 'resize', onWindowResize, false );
-
-			}
-
-			function onWindowResize() {
-
-				camera.aspect = window.innerWidth / window.innerHeight;
-				camera.updateProjectionMatrix();
-
-				renderer.setSize( window.innerWidth, window.innerHeight );
-
-			}
-
-			function animate() {
-
-				renderer.setAnimationLoop( render );
-
-			}
-
-			function render() {
-
-				var delta = clock.getDelta() * 60;
-
-				controller.update();
-
-				if ( controller.getTouchpadState() === true ) {
-
-					var cube = room.children[ 0 ];
-					room.remove( cube );
-
-					cube.position.copy( controller.position ).sub( room.position );
-					cube.userData.velocity.x = ( Math.random() - 0.5 ) * 0.02;
-					cube.userData.velocity.y = ( Math.random() - 0.5 ) * 0.02;
-					cube.userData.velocity.z = ( Math.random() * 0.02 - 0.1 );
-					cube.userData.velocity.applyQuaternion( controller.quaternion );
-					room.add( cube );
-
-				}
-
-				// keep cubes inside room
-
-				var range = 3 - radius;
-
-				for ( var i = 0; i < room.children.length; i ++ ) {
-
-					var cube = room.children[ i ];
-
-					cube.position.add( cube.userData.velocity );
-
-					if ( cube.position.x < - range || cube.position.x > range ) {
-
-						cube.position.x = THREE.Math.clamp( cube.position.x, - range, range );
-						cube.userData.velocity.x = - cube.userData.velocity.x;
-
-					}
-
-					if ( cube.position.y < - range || cube.position.y > range ) {
-
-						cube.position.y = Math.max( cube.position.y, - range );
-
-						cube.userData.velocity.x *= 0.9;
-						cube.userData.velocity.y = - cube.userData.velocity.y * 0.8;
-						cube.userData.velocity.z *= 0.9;
-
-					}
-
-					if ( cube.position.z < - range || cube.position.z > range ) {
-
-						cube.position.z = THREE.Math.clamp( cube.position.z, - range, range );
-						cube.userData.velocity.z = - cube.userData.velocity.z;
-
-					}
-
-					for ( var j = i + 1; j < room.children.length; j ++ ) {
-
-						var cube2 = room.children[ j ];
-
-						normal.copy( cube.position ).sub( cube2.position );
-
-						if ( normal.length() < 2 * radius ) {
-
-							normal.multiplyScalar( 0.5 * normal.length() - radius );
-							cube.position.sub( normal );
-							cube2.position.add( normal );
-
-							normal.normalize();
-
-							relativeVelocity.copy( cube.userData.velocity ).sub( cube2.userData.velocity );
-							var dot = relativeVelocity.dot( normal );
-
-							normal = normal.multiplyScalar( dot );
-
-							cube.userData.velocity.sub( normal );
-							cube2.userData.velocity.add( normal );
-
-						}
-
-					}
-
-					cube.userData.velocity.y -= 0.00098;
-
-				}
-
-				renderer.render( scene, camera );
-
-			}
-
-		</script>
-	</body>
-</html>

+ 6 - 0
src/audio/AudioListener.js

@@ -43,6 +43,8 @@ AudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {
 
 		}
 
+		return this;
+
 	},
 
 	getFilter: function () {
@@ -68,6 +70,8 @@ AudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {
 		this.gain.connect( this.filter );
 		this.filter.connect( this.context.destination );
 
+		return this;
+
 	},
 
 	getMasterVolume: function () {
@@ -80,6 +84,8 @@ AudioListener.prototype = Object.assign( Object.create( Object3D.prototype ), {
 
 		this.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );
 
+		return this;
+
 	},
 
 	updateMatrixWorld: ( function () {

+ 8 - 0
src/audio/PositionalAudio.js

@@ -36,6 +36,8 @@ PositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {
 
 		this.panner.refDistance = value;
 
+		return this;
+
 	},
 
 	getRolloffFactor: function () {
@@ -48,6 +50,8 @@ PositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {
 
 		this.panner.rolloffFactor = value;
 
+		return this;
+
 	},
 
 	getDistanceModel: function () {
@@ -60,6 +64,8 @@ PositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {
 
 		this.panner.distanceModel = value;
 
+		return this;
+
 	},
 
 	getMaxDistance: function () {
@@ -72,6 +78,8 @@ PositionalAudio.prototype = Object.assign( Object.create( Audio.prototype ), {
 
 		this.panner.maxDistance = value;
 
+		return this;
+
 	},
 
 	updateMatrixWorld: ( function () {

+ 1 - 1
src/loaders/CubeTextureLoader.js

@@ -15,7 +15,7 @@ function CubeTextureLoader( manager ) {
 
 Object.assign( CubeTextureLoader.prototype, {
 
-	crossOrigin: 'Anonymous',
+	crossOrigin: 'anonymous',
 
 	load: function ( urls, onLoad, onProgress, onError ) {
 

+ 1 - 1
src/loaders/ImageLoader.js

@@ -14,7 +14,7 @@ function ImageLoader( manager ) {
 
 Object.assign( ImageLoader.prototype, {
 
-	crossOrigin: 'Anonymous',
+	crossOrigin: 'anonymous',
 
 	load: function ( url, onLoad, onProgress, onError ) {
 

+ 10 - 0
src/loaders/JSONLoader.js

@@ -32,6 +32,8 @@ function JSONLoader( manager ) {
 
 Object.assign( JSONLoader.prototype, {
 
+	crossOrigin: 'anonymous',
+
 	load: function ( url, onLoad, onProgress, onError ) {
 
 		var scope = this;
@@ -69,9 +71,17 @@ Object.assign( JSONLoader.prototype, {
 
 	},
 
+	setCrossOrigin: function ( value ) {
+
+		this.crossOrigin = value;
+		return this;
+
+	},
+
 	setTexturePath: function ( value ) {
 
 		this.texturePath = value;
+		return this;
 
 	},
 

+ 1 - 1
src/loaders/Loader.js

@@ -61,7 +61,7 @@ Loader.Handlers = {
 
 Object.assign( Loader.prototype, {
 
-	crossOrigin: undefined,
+	crossOrigin: 'anonymous',
 
 	onLoadStart: function () {},
 

+ 42 - 4
src/loaders/ObjectLoader.js

@@ -42,6 +42,7 @@ import { RectAreaLight } from '../lights/RectAreaLight.js';
 import { OrthographicCamera } from '../cameras/OrthographicCamera.js';
 import { PerspectiveCamera } from '../cameras/PerspectiveCamera.js';
 import { Scene } from '../scenes/Scene.js';
+import { CubeTexture } from '../textures/CubeTexture.js';
 import { Texture } from '../textures/Texture.js';
 import { ImageLoader } from './ImageLoader.js';
 import { LoadingManager, DefaultLoadingManager } from './LoadingManager.js';
@@ -66,6 +67,8 @@ function ObjectLoader( manager ) {
 
 Object.assign( ObjectLoader.prototype, {
 
+	crossOrigin: 'anonymous',
+
 	load: function ( url, onLoad, onProgress, onError ) {
 
 		if ( this.texturePath === '' ) {
@@ -532,12 +535,36 @@ Object.assign( ObjectLoader.prototype, {
 			var loader = new ImageLoader( manager );
 			loader.setCrossOrigin( this.crossOrigin );
 
-			for ( var i = 0, l = json.length; i < l; i ++ ) {
+			for ( var i = 0, il = json.length; i < il; i ++ ) {
 
 				var image = json[ i ];
-				var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( image.url ) ? image.url : scope.texturePath + image.url;
+				var url = image.url;
+
+				if ( Array.isArray( url ) ) {
+
+					// load array of images e.g CubeTexture
+
+					images[ image.uuid ] = [];
+
+					for ( var j = 0, jl = url.length; j < jl; j ++ ) {
+
+						var currentUrl = url[ j ];
+
+						var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( currentUrl ) ? currentUrl : scope.texturePath + currentUrl;
+
+						images[ image.uuid ].push( loadImage( path ) );
+
+					}
+
+				} else {
 
-				images[ image.uuid ] = loadImage( path );
+					// load single image
+
+					var path = /^(\/\/)|([a-z]+:(\/\/)?)/i.test( image.url ) ? image.url : scope.texturePath + image.url;
+
+					images[ image.uuid ] = loadImage( path );
+
+				}
 
 			}
 
@@ -579,7 +606,18 @@ Object.assign( ObjectLoader.prototype, {
 
 				}
 
-				var texture = new Texture( images[ data.image ] );
+				var texture;
+
+				if ( Array.isArray( images[ data.image ] ) ) {
+
+					texture = new CubeTexture( images[ data.image ] );
+
+				} else {
+
+					texture = new Texture( images[ data.image ] );
+
+				}
+
 				texture.needsUpdate = true;
 
 				texture.uuid = data.uuid;

+ 1 - 1
src/loaders/TextureLoader.js

@@ -16,7 +16,7 @@ function TextureLoader( manager ) {
 
 Object.assign( TextureLoader.prototype, {
 
-	crossOrigin: 'Anonymous',
+	crossOrigin: 'anonymous',
 
 	load: function ( url, onLoad, onProgress, onError ) {
 

+ 56 - 0
src/math/Color.js

@@ -329,6 +329,62 @@ Object.assign( Color.prototype, {
 
 	},
 
+	copySRGBToLinear: function () {
+
+		function SRGBToLinear( c ) {
+
+			return ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );
+
+		}
+
+		return function copySRGBToLinear( color ) {
+
+			this.r = SRGBToLinear( color.r );
+			this.g = SRGBToLinear( color.g );
+			this.b = SRGBToLinear( color.b );
+
+			return this;
+
+		};
+
+	}(),
+
+	copyLinearToSRGB: function () {
+
+		function LinearToSRGB( c ) {
+
+			return ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;
+
+		}
+
+		return function copyLinearToSRGB( color ) {
+
+			this.r = LinearToSRGB( color.r );
+			this.g = LinearToSRGB( color.g );
+			this.b = LinearToSRGB( color.b );
+
+			return this;
+
+		};
+
+	}(),
+
+	convertSRGBToLinear: function () {
+
+		this.copySRGBToLinear( this );
+
+		return this;
+
+	},
+
+	convertLinearToSRGB: function () {
+
+		this.copyLinearToSRGB( this );
+
+		return this;
+
+	},
+
 	getHex: function () {
 
 		return ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;

+ 9 - 7
src/math/Quaternion.js

@@ -533,19 +533,21 @@ Object.assign( Quaternion.prototype, {
 
 		}
 
-		var sinHalfTheta = Math.sqrt( 1.0 - cosHalfTheta * cosHalfTheta );
+		var sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;
 
-		if ( Math.abs( sinHalfTheta ) < 0.001 ) {
+		if ( sqrSinHalfTheta <= Number.EPSILON ) {
 
-			this._w = 0.5 * ( w + this._w );
-			this._x = 0.5 * ( x + this._x );
-			this._y = 0.5 * ( y + this._y );
-			this._z = 0.5 * ( z + this._z );
+			var s = 1 - t;
+			this._w = s * w + t * this._w;
+			this._x = s * x + t * this._x;
+			this._y = s * y + t * this._y;
+			this._z = s * z + t * this._z;
 
-			return this;
+			return this.normalize();
 
 		}
 
+		var sinHalfTheta = Math.sqrt( sqrSinHalfTheta );
 		var halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );
 		var ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,
 			ratioB = Math.sin( t * halfTheta ) / sinHalfTheta;

+ 95 - 19
src/objects/Mesh.js

@@ -190,13 +190,13 @@ Mesh.prototype = Object.assign( Object.create( Object3D.prototype ), {
 
 		}
 
-		function checkBufferGeometryIntersection( object, raycaster, ray, position, uv, a, b, c ) {
+		function checkBufferGeometryIntersection( object, material, raycaster, ray, position, uv, a, b, c ) {
 
 			vA.fromBufferAttribute( position, a );
 			vB.fromBufferAttribute( position, b );
 			vC.fromBufferAttribute( position, c );
 
-			var intersection = checkIntersection( object, object.material, raycaster, ray, vA, vB, vC, intersectionPoint );
+			var intersection = checkIntersection( object, material, raycaster, ray, vA, vB, vC, intersectionPoint );
 
 			if ( intersection ) {
 
@@ -259,24 +259,64 @@ Mesh.prototype = Object.assign( Object.create( Object3D.prototype ), {
 				var index = geometry.index;
 				var position = geometry.attributes.position;
 				var uv = geometry.attributes.uv;
-				var i, l;
+				var groups = geometry.groups;
+				var drawRange = geometry.drawRange;
+				var i, j, il, jl;
+				var group, groupMaterial;
+				var start, end;
 
 				if ( index !== null ) {
 
 					// indexed buffer geometry
 
-					for ( i = 0, l = index.count; i < l; i += 3 ) {
+					if ( Array.isArray( material ) ) {
 
-						a = index.getX( i );
-						b = index.getX( i + 1 );
-						c = index.getX( i + 2 );
+						for ( i = 0, il = groups.length; i < il; i ++ ) {
 
-						intersection = checkBufferGeometryIntersection( this, raycaster, ray, position, uv, a, b, c );
+							group = groups[ i ];
+							groupMaterial = material[ group.materialIndex ];
 
-						if ( intersection ) {
+							start = Math.max( group.start, drawRange.start );
+							end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );
 
-							intersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics
-							intersects.push( intersection );
+							for ( j = start, jl = end; j < jl; j += 3 ) {
+
+								a = index.getX( i );
+								b = index.getX( i + 1 );
+								c = index.getX( i + 2 );
+
+								intersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, uv, a, b, c );
+
+								if ( intersection ) {
+
+									intersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics
+									intersects.push( intersection );
+
+								}
+
+							}
+
+						}
+
+					} else {
+
+						start = Math.max( 0, drawRange.start );
+						end = Math.min( index.count, ( drawRange.start + drawRange.count ) );
+
+						for ( i = start, il = end; i < il; i += 3 ) {
+
+							a = index.getX( i );
+							b = index.getX( i + 1 );
+							c = index.getX( i + 2 );
+
+							intersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, uv, a, b, c );
+
+							if ( intersection ) {
+
+								intersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics
+								intersects.push( intersection );
+
+							}
 
 						}
 
@@ -286,18 +326,54 @@ Mesh.prototype = Object.assign( Object.create( Object3D.prototype ), {
 
 					// non-indexed buffer geometry
 
-					for ( i = 0, l = position.count; i < l; i += 3 ) {
+					if ( Array.isArray( material ) ) {
+
+						for ( i = 0, il = groups.length; i < il; i ++ ) {
+
+							group = groups[ i ];
+							groupMaterial = material[ group.materialIndex ];
+
+							start = Math.max( group.start, drawRange.start );
+							end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );
+
+							for ( j = start, jl = end; j < jl; j += 3 ) {
+
+								a = j;
+								b = j + 1;
+								c = j + 2;
+
+								intersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, ray, position, uv, a, b, c );
+
+								if ( intersection ) {
+
+									intersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics
+									intersects.push( intersection );
+
+								}
+
+							}
+
+						}
+
+					} else {
+
+						start = Math.max( 0, drawRange.start );
+						end = Math.min( position.count, ( drawRange.start + drawRange.count ) );
+
+						for ( i = start, il = end; i < il; i += 3 ) {
+
+							a = i;
+							b = i + 1;
+							c = i + 2;
 
-						a = i;
-						b = i + 1;
-						c = i + 2;
+							intersection = checkBufferGeometryIntersection( this, material, raycaster, ray, position, uv, a, b, c );
 
-						intersection = checkBufferGeometryIntersection( this, raycaster, ray, position, uv, a, b, c );
+							if ( intersection ) {
 
-						if ( intersection ) {
+								intersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics
+								intersects.push( intersection );
 
-							intersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics
-							intersects.push( intersection );
+							}
 
 						}
 

+ 4 - 2
src/renderers/WebGLRenderer.js

@@ -2214,11 +2214,13 @@ function WebGLRenderer( parameters ) {
 
 	function refreshUniformsPhysical( uniforms, material ) {
 
+		refreshUniformsStandard( uniforms, material );
+
+		uniforms.reflectivity.value = material.reflectivity; // also part of uniforms common
+
 		uniforms.clearCoat.value = material.clearCoat;
 		uniforms.clearCoatRoughness.value = material.clearCoatRoughness;
 
-		refreshUniformsStandard( uniforms, material );
-
 	}
 
 	function refreshUniformsDepth( uniforms, material ) {

+ 112 - 1
src/renderers/webvr/WebVRManager.js

@@ -2,6 +2,7 @@
  * @author mrdoob / http://mrdoob.com/
  */
 
+import { Group } from '../../objects/Group.js';
 import { Matrix4 } from '../../math/Matrix4.js';
 import { Vector3 } from '../../math/Vector3.js';
 import { Vector4 } from '../../math/Vector4.js';
@@ -19,6 +20,7 @@ function WebVRManager( renderer ) {
 
 	var poseTarget = null;
 
+	var controllers = [];
 	var standingMatrix = new Matrix4();
 	var standingMatrixInverse = new Matrix4();
 
@@ -82,9 +84,111 @@ function WebVRManager( renderer ) {
 
 	//
 
+	var isTriggerPressed = false;
+
+	function findGamepad( id ) {
+
+		var gamepads = navigator.getGamepads && navigator.getGamepads();
+
+		for ( var i = 0, j = 0, l = gamepads.length; i < l; i ++ ) {
+
+			var gamepad = gamepads[ i ];
+
+			if ( gamepad && ( gamepad.id === 'Daydream Controller' ||
+				gamepad.id === 'Gear VR Controller' || gamepad.id === 'Oculus Go Controller' ||
+				gamepad.id === 'OpenVR Gamepad' || gamepad.id.startsWith( 'Oculus Touch' ) ||
+				gamepad.id.startsWith( 'Spatial Controller' ) ) ) {
+
+				if ( j === id ) return gamepad;
+
+				j ++;
+
+			}
+
+		}
+
+	}
+
+	function updateControllers() {
+
+		for ( var i = 0; i < controllers.length; i ++ ) {
+
+			var controller = controllers[ i ];
+
+			var gamepad = findGamepad( i );
+
+			if ( gamepad !== undefined && gamepad.pose !== undefined ) {
+
+				if ( gamepad.pose === null ) return;
+
+				//  Pose
+
+				var pose = gamepad.pose;
+
+				if ( pose.hasPosition === false ) controller.position.set( 0.2, - 0.6, - 0.05 );
+
+				if ( pose.position !== null ) controller.position.fromArray( pose.position );
+				if ( pose.orientation !== null ) controller.quaternion.fromArray( pose.orientation );
+				controller.matrix.compose( controller.position, controller.quaternion, controller.scale );
+				controller.matrix.premultiply( standingMatrix );
+				controller.matrix.decompose( controller.position, controller.quaternion, controller.scale );
+				controller.matrixWorldNeedsUpdate = true;
+				controller.visible = true;
+
+				//  Trigger
+
+				var buttonId = gamepad.id === 'Daydream Controller' ? 0 : 1;
+
+				if ( isTriggerPressed !== gamepad.buttons[ buttonId ].pressed ) {
+
+					isTriggerPressed = gamepad.buttons[ buttonId ].pressed;
+
+					if ( isTriggerPressed ) {
+
+						controller.dispatchEvent( { type: 'selectstart' } );
+
+					} else {
+
+						controller.dispatchEvent( { type: 'selectend' } );
+						controller.dispatchEvent( { type: 'select' } );
+
+					}
+
+				}
+
+			} else {
+
+				controller.visible = false;
+
+			}
+
+		}
+
+	}
+
+	//
+
 	this.enabled = false;
 	this.userHeight = 1.6;
 
+	this.getController = function ( id ) {
+
+		var controller = controllers[ id ];
+
+		if ( controller === undefined ) {
+
+			controller = new Group();
+			controller.matrixAutoUpdate = false;
+			controller.visible = false;
+
+			controllers[ id ] = controller;
+
+		}
+
+		return controller;
+
+	};
+
 	this.getDevice = function () {
 
 		return device;
@@ -107,7 +211,12 @@ function WebVRManager( renderer ) {
 
 	this.getCamera = function ( camera ) {
 
-		if ( device === null ) return camera;
+		if ( device === null ) {
+
+			camera.position.set( 0, scope.userHeight, 0 );
+			return camera;
+
+		}
 
 		device.depthNear = camera.near;
 		device.depthFar = camera.far;
@@ -223,6 +332,8 @@ function WebVRManager( renderer ) {
 
 		}
 
+		updateControllers();
+
 		return cameraVR;
 
 	};

+ 99 - 21
src/renderers/webvr/WebXRManager.js

@@ -2,6 +2,7 @@
  * @author mrdoob / http://mrdoob.com/
  */
 
+import { Group } from '../../objects/Group.js';
 import { Vector4 } from '../../math/Vector4.js';
 import { ArrayCamera } from '../../cameras/ArrayCamera.js';
 import { PerspectiveCamera } from '../../cameras/PerspectiveCamera.js';
@@ -18,10 +19,14 @@ function WebXRManager( renderer ) {
 
 	var pose = null;
 
+	var controllers = [];
+	var inputSources = [];
+
 	function isPresenting() {
 
 		return session !== null && frameOfRef !== null;
 
+
 	}
 
 	//
@@ -42,6 +47,24 @@ function WebXRManager( renderer ) {
 
 	this.enabled = false;
 
+	this.getController = function ( id ) {
+
+		var controller = controllers[ id ];
+
+		if ( controller === undefined ) {
+
+			controller = new Group();
+			controller.matrixAutoUpdate = false;
+			controller.visible = false;
+
+			controllers[ id ] = controller;
+
+		}
+
+		return controller;
+
+	};
+
 	this.getDevice = function () {
 
 		return device;
@@ -58,18 +81,30 @@ function WebXRManager( renderer ) {
 
 	//
 
+	function onSessionEvent( event ) {
+
+		var controller = controllers[ inputSources.indexOf( event.inputSource ) ];
+		if ( controller ) controller.dispatchEvent( { type: event.type } );
+
+	}
+
+	function onSessionEnd() {
+
+		renderer.setFramebuffer( null );
+		animation.stop();
+
+	}
+
 	this.setSession = function ( value, options ) {
 
 		session = value;
 
 		if ( session !== null ) {
 
-			session.addEventListener( 'end', function () {
-
-				renderer.setFramebuffer( null );
-				animation.stop();
-
-			} );
+			session.addEventListener( 'select', onSessionEvent );
+			session.addEventListener( 'selectstart', onSessionEvent );
+			session.addEventListener( 'selectend', onSessionEvent );
+			session.addEventListener( 'end', onSessionEnd );
 
 			session.baseLayer = new XRWebGLLayer( session, gl );
 			session.requestFrameOfReference( options.frameOfReferenceType ).then( function ( value ) {
@@ -83,6 +118,17 @@ function WebXRManager( renderer ) {
 
 			} );
 
+			//
+
+			inputSources = session.getInputSources();
+
+			session.addEventListener( 'inputsourceschange', function () {
+
+				inputSources = session.getInputSources();
+				console.log( inputSources );
+
+			} );
+
 		}
 
 	};
@@ -150,33 +196,65 @@ function WebXRManager( renderer ) {
 
 		pose = frame.getDevicePose( frameOfRef );
 
-		var layer = session.baseLayer;
-		var views = frame.views;
+		if ( pose !== null ) {
 
-		for ( var i = 0; i < views.length; i ++ ) {
+			var layer = session.baseLayer;
+			var views = frame.views;
 
-			var view = views[ i ];
-			var viewport = layer.getViewport( view );
-			var viewMatrix = pose.getViewMatrix( view );
+			for ( var i = 0; i < views.length; i ++ ) {
 
-			var camera = cameraVR.cameras[ i ];
-			camera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix );
-			camera.projectionMatrix.fromArray( view.projectionMatrix );
-			camera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );
+				var view = views[ i ];
+				var viewport = layer.getViewport( view );
+				var viewMatrix = pose.getViewMatrix( view );
 
-			if ( i === 0 ) {
+				var camera = cameraVR.cameras[ i ];
+				camera.matrix.fromArray( viewMatrix ).getInverse( camera.matrix );
+				camera.projectionMatrix.fromArray( view.projectionMatrix );
+				camera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );
 
-				cameraVR.matrix.copy( camera.matrix );
+				if ( i === 0 ) {
 
-				// HACK (mrdoob)
-				// https://github.com/w3c/webvr/issues/203
+					cameraVR.matrix.copy( camera.matrix );
 
-				cameraVR.projectionMatrix.copy( camera.projectionMatrix );
+					// HACK (mrdoob)
+					// https://github.com/w3c/webvr/issues/203
+
+					cameraVR.projectionMatrix.copy( camera.projectionMatrix );
+
+				}
 
 			}
 
 		}
 
+		//
+
+		for ( var i = 0; i < controllers.length; i ++ ) {
+
+			var controller = controllers[ i ];
+
+			var inputSource = inputSources[ i ];
+
+			if ( inputSource ) {
+
+				var inputPose = frame.getInputPose( inputSource, frameOfRef );
+
+				if ( inputPose !== null ) {
+
+					controller.matrix.elements = inputPose.pointerMatrix;
+					controller.matrix.decompose( controller.position, controller.rotation, controller.scale );
+					controller.visible = true;
+
+					continue;
+
+				}
+
+			}
+
+			controller.visible = false;
+
+		}
+
 		if ( onAnimationFrameCallback ) onAnimationFrameCallback( time );
 
 	}

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно