diff options
| author | Ray <[email protected]> | 2021-03-19 22:40:17 +0100 |
|---|---|---|
| committer | Ray <[email protected]> | 2021-03-19 22:40:17 +0100 |
| commit | aad3ceff145724815da44195b73d45ebb6e960ae (patch) | |
| tree | faab64a6d4fe1c16380fa9b961286eced59caa61 /examples | |
| parent | e70fc278cf5450a906405b7bf55eb3f4ae7c026d (diff) | |
| download | raylib.com-aad3ceff145724815da44195b73d45ebb6e960ae.tar.gz raylib.com-aad3ceff145724815da44195b73d45ebb6e960ae.zip | |
REVIEWED some examples
Diffstat (limited to 'examples')
24 files changed, 377 insertions, 10831 deletions
diff --git a/examples/web/Makefile b/examples/web/Makefile index 3d65747..5cc56b9 100644 --- a/examples/web/Makefile +++ b/examples/web/Makefile @@ -891,12 +891,8 @@ models/models_skybox: models/models_skybox.c # compile [models] example - models yaw pitch roll models/models_yaw_pitch_roll: models/models_yaw_pitch_roll.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) -s TOTAL_MEMORY=67108864 \ - --preload-file models/resources/plane.obj@resources/plane.obj \ - --preload-file models/resources/plane_diffuse.png@resources/plane_diffuse.png \ - --preload-file models/resources/plane.png@resources/plane.png \ - --preload-file models/resources/pitch.png@resources/pitch.png \ - --preload-file models/resources/background.png@resources/background.png \ - --preload-file models/resources/angle_gauge.png@resources/angle_gauge.png + --preload-file models/resources/plane/plane.gltf@resources/plane/plane.gltf \ + --preload-file models/resources/plane/plane_diffuse.png@resources/plane/plane_diffuse.png # compile [models] example - heightmap loading models/models_heightmap: models/models_heightmap.c diff --git a/examples/web/models/models_rlgl_solar_system.c b/examples/web/models/models_rlgl_solar_system.c index 8157e07..2217a6e 100644 --- a/examples/web/models/models_rlgl_solar_system.c +++ b/examples/web/models/models_rlgl_solar_system.c @@ -62,7 +62,7 @@ int main(void) camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; camera.fovy = 45.0f; - camera.type = CAMERA_PERSPECTIVE; + camera.projection = CAMERA_PERSPECTIVE; SetCameraMode(camera, CAMERA_FREE); diff --git a/examples/web/models/models_waving_cubes.c b/examples/web/models/models_waving_cubes.c index a076a5b..067046d 100644 --- a/examples/web/models/models_waving_cubes.c +++ b/examples/web/models/models_waving_cubes.c @@ -52,7 +52,7 @@ int main() camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; camera.fovy = 70.0f; - camera.type = CAMERA_PERSPECTIVE; + camera.projection = CAMERA_PERSPECTIVE; #if defined(PLATFORM_WEB) emscripten_set_main_loop(UpdateDrawFrame, 60, 1); diff --git a/examples/web/models/models_yaw_pitch_roll.c b/examples/web/models/models_yaw_pitch_roll.c index 1c5dd98..f085927 100644 --- a/examples/web/models/models_yaw_pitch_roll.c +++ b/examples/web/models/models_yaw_pitch_roll.c @@ -27,12 +27,6 @@ const int screenHeight = 450; // Define our custom camera to look into our 3d world Camera camera = { 0 }; -Texture2D texAngleGauge = { 0 }; -Texture2D texBackground = { 0 }; -Texture2D texPitch = { 0 }; -Texture2D texPlane = { 0 }; - -RenderTexture2D framebuffer = { 0 }; Model model = { 0 }; float pitch = 0.0f; @@ -44,9 +38,6 @@ float yaw = 0.0f; //---------------------------------------------------------------------------------- void UpdateDrawFrame(void); // Update and Draw one frame -// Draw angle gauge controls -void DrawAngleGauge(Texture2D angleGauge, int x, int y, float angle, char title[], Color color); - //---------------------------------------------------------------------------------- // Program Main Entry Point //---------------------------------------------------------------------------------- @@ -56,24 +47,14 @@ int main(void) //-------------------------------------------------------------------------------------- InitWindow(screenWidth, screenHeight, "raylib [models] example - plane rotations (yaw, pitch, roll)"); - texAngleGauge = LoadTexture("resources/angle_gauge.png"); - texBackground = LoadTexture("resources/background.png"); - texPitch = LoadTexture("resources/pitch.png"); - texPlane = LoadTexture("resources/plane.png"); - - framebuffer = LoadRenderTexture(192, 192); - - // Model loading - model = LoadModel("resources/plane.obj"); // Load OBJ model - model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture = LoadTexture("resources/plane_diffuse.png"); // Set map diffuse texture - - GenTextureMipmaps(&model.materials[0].maps[MATERIAL_MAP_DIFFUSE].texture); - - camera.position = (Vector3){ 0.0f, 60.0f, -120.0f };// Camera position perspective - camera.target = (Vector3){ 0.0f, 12.0f, 0.0f }; // Camera looking at point + camera.position = (Vector3){ 0.0f, 50.0f, -120.0f };// Camera position perspective + camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; // Camera looking at point camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) camera.fovy = 30.0f; // Camera field-of-view Y - camera.type = CAMERA_PERSPECTIVE; // Camera type + camera.projection = CAMERA_PERSPECTIVE; // Camera type + + // Model loading + model = LoadModel("resources/plane/plane.gltf"); // Load OBJ model #if defined(PLATFORM_WEB) emscripten_set_main_loop(UpdateDrawFrame, 60, 1); @@ -90,18 +71,9 @@ int main(void) // De-Initialization //-------------------------------------------------------------------------------------- + UnloadModel(model); // Unload all loaded data - // Unload all loaded data - UnloadModel(model); - - UnloadRenderTexture(framebuffer); - - UnloadTexture(texAngleGauge); - UnloadTexture(texBackground); - UnloadTexture(texPitch); - UnloadTexture(texPlane); - - CloseWindow(); // Close window and OpenGL context + CloseWindow(); // Close window and OpenGL context //-------------------------------------------------------------------------------------- return 0; @@ -113,14 +85,14 @@ int main(void) void UpdateDrawFrame(void) { // Update - //---------------------------------------------------------------------------------- - // Plane roll (x-axis) controls - if (IsKeyDown(KEY_LEFT)) roll += 1.0f; - else if (IsKeyDown(KEY_RIGHT)) roll -= 1.0f; + //---------------------------------------------------------------------------------- + // Plane pitch (x-axis) controls + if (IsKeyDown(KEY_DOWN)) pitch += 0.6f; + else if (IsKeyDown(KEY_UP)) pitch -= 0.6f; else { - if (roll > 0.0f) roll -= 0.5f; - else if (roll < 0.0f) roll += 0.5f; + if (pitch > 0.3f) pitch -= 0.3f; + else if (pitch < -0.3f) pitch += 0.3f; } // Plane yaw (y-axis) controls @@ -132,28 +104,17 @@ void UpdateDrawFrame(void) else if (yaw < 0.0f) yaw += 0.5f; } - // Plane pitch (z-axis) controls - if (IsKeyDown(KEY_DOWN)) pitch += 0.6f; - else if (IsKeyDown(KEY_UP)) pitch -= 0.6f; + // Plane roll (z-axis) controls + if (IsKeyDown(KEY_LEFT)) roll += 1.0f; + else if (IsKeyDown(KEY_RIGHT)) roll -= 1.0f; else { - if (pitch > 0.3f) pitch -= 0.3f; - else if (pitch < -0.3f) pitch += 0.3f; + if (roll > 0.0f) roll -= 0.5f; + else if (roll < 0.0f) roll += 0.5f; } - // Wraps the phase of an angle to fit between -180 and +180 degrees - int pitchOffset = pitch; - while (pitchOffset > 180) pitchOffset -= 360; - while (pitchOffset < -180) pitchOffset += 360; - pitchOffset *= 10; - - Matrix transform = MatrixIdentity(); - - transform = MatrixMultiply(transform, MatrixRotateZ(DEG2RAD*roll)); - transform = MatrixMultiply(transform, MatrixRotateX(DEG2RAD*pitch)); - transform = MatrixMultiply(transform, MatrixRotateY(DEG2RAD*yaw)); - - model.transform = transform; + // Tranformation matrix for rotations + model.transform = MatrixRotateXYZ((Vector3){DEG2RAD*pitch,DEG2RAD*yaw,DEG2RAD*roll}); //---------------------------------------------------------------------------------- // Draw @@ -162,70 +123,23 @@ void UpdateDrawFrame(void) ClearBackground(RAYWHITE); - // Draw framebuffer texture (Ahrs Display) - int centerX = framebuffer.texture.width/2; - int centerY = framebuffer.texture.height/2; - float scaleFactor = 0.5f; - - BeginTextureMode(framebuffer); - - BeginBlendMode(BLEND_ALPHA); - - DrawTexturePro(texBackground, (Rectangle){0,0,texBackground.width, texBackground.height}, - (Rectangle){ centerX, centerY, texBackground.width*scaleFactor, texBackground.height*scaleFactor}, - (Vector2){texBackground.width/2*scaleFactor, texBackground.height/2*scaleFactor + pitchOffset*scaleFactor}, roll, WHITE); - - DrawTexturePro(texPitch, (Rectangle){ 0, 0, texPitch.width, texPitch.height }, - (Rectangle){ centerX, centerY, texPitch.width*scaleFactor, texPitch.height*scaleFactor }, - (Vector2){ texPitch.width/2*scaleFactor, texPitch.height/2*scaleFactor + pitchOffset*scaleFactor }, roll, WHITE); - - DrawTexturePro(texPlane, (Rectangle){0,0,texPlane.width, texPlane.height }, - (Rectangle){ centerX, centerY, texPlane.width*scaleFactor, texPlane.height*scaleFactor }, - (Vector2){texPlane.width/2*scaleFactor, texPlane.height/2*scaleFactor }, 0, WHITE); - - EndBlendMode(); - - EndTextureMode(); - // Draw 3D model (recomended to draw 3D always before 2D) BeginMode3D(camera); - DrawModel(model, (Vector3){ 0, 6.0f, 0 }, 1.0f, WHITE); // Draw 3d model with texture + DrawModel(model, (Vector3){ 0.0f, 0.0f, 15.0f }, 0.25f, WHITE); // Draw 3d model with texture DrawGrid(10, 10.0f); EndMode3D(); + + // Draw controls info + DrawRectangle(30, 370, 260, 70, Fade(GREEN, 0.5f)); + DrawRectangleLines(30, 370, 260, 70, Fade(DARKGREEN, 0.5f)); + DrawText("Pitch controlled with: KEY_UP / KEY_DOWN", 40, 380, 10, DARKGRAY); + DrawText("Roll controlled with: KEY_LEFT / KEY_RIGHT", 40, 400, 10, DARKGRAY); + DrawText("Yaw controlled with: KEY_A / KEY_S", 40, 420, 10, DARKGRAY); - // Draw 2D GUI stuff - DrawAngleGauge(texAngleGauge, 80, 70, roll, "roll", RED); - DrawAngleGauge(texAngleGauge, 190, 70, pitch, "pitch", GREEN); - DrawAngleGauge(texAngleGauge, 300, 70, yaw, "yaw", SKYBLUE); - - DrawRectangle(30, 360, 260, 70, Fade(SKYBLUE, 0.5f)); - DrawRectangleLines(30, 360, 260, 70, Fade(DARKBLUE, 0.5f)); - DrawText("Pitch controlled with: KEY_UP / KEY_DOWN", 40, 370, 10, DARKGRAY); - DrawText("Roll controlled with: KEY_LEFT / KEY_RIGHT", 40, 390, 10, DARKGRAY); - DrawText("Yaw controlled with: KEY_A / KEY_S", 40, 410, 10, DARKGRAY); - - // Draw framebuffer texture - DrawTextureRec(framebuffer.texture, (Rectangle){ 0, 0, framebuffer.texture.width, -framebuffer.texture.height }, - (Vector2){ screenWidth - framebuffer.texture.width - 20, 20 }, Fade(WHITE, 0.8f)); - - DrawRectangleLines(screenWidth - framebuffer.texture.width - 20, 20, framebuffer.texture.width, framebuffer.texture.height, DARKGRAY); + DrawText("(c) WWI Plane Model created by GiaHanLam", screenWidth - 240, screenHeight - 20, 10, DARKGRAY); EndDrawing(); //---------------------------------------------------------------------------------- } - -// Draw angle gauge controls -void DrawAngleGauge(Texture2D angleGauge, int x, int y, float angle, char title[], Color color) -{ - Rectangle srcRec = { 0, 0, angleGauge.width, angleGauge.height }; - Rectangle dstRec = { x, y, angleGauge.width, angleGauge.height }; - Vector2 origin = { angleGauge.width/2, angleGauge.height/2}; - int textSize = 20; - - DrawTexturePro(angleGauge, srcRec, dstRec, origin, angle, color); - - DrawText(TextFormat("%5.1f", angle), x - MeasureText(TextFormat("%5.1f", angle), textSize) / 2, y + 10, textSize, DARKGRAY); - DrawText(title, x - MeasureText(title, textSize) / 2, y + 60, textSize, DARKGRAY); -}
\ No newline at end of file diff --git a/examples/web/models/models_yaw_pitch_roll.data b/examples/web/models/models_yaw_pitch_roll.data Binary files differindex 62b3a66..103fd11 100644 --- a/examples/web/models/models_yaw_pitch_roll.data +++ b/examples/web/models/models_yaw_pitch_roll.data diff --git a/examples/web/models/models_yaw_pitch_roll.js b/examples/web/models/models_yaw_pitch_roll.js index 5aadc53..66d2c56 100644 --- a/examples/web/models/models_yaw_pitch_roll.js +++ b/examples/web/models/models_yaw_pitch_roll.js @@ -1 +1 @@ -var Module=typeof Module!=="undefined"?Module:{};if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0}Module.expectedDataFileDownloads++;(function(){var loadPackage=function(metadata){var PACKAGE_PATH;if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/")}else if(typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/")}else{throw"using preloaded data can only be done on a web page or in a web worker"}var PACKAGE_NAME="models/models_yaw_pitch_roll.data";var REMOTE_PACKAGE_BASE="models_yaw_pitch_roll.data";if(typeof Module["locateFilePackage"]==="function"&&!Module["locateFile"]){Module["locateFile"]=Module["locateFilePackage"];err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")}var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];var PACKAGE_UUID=metadata["package_uuid"];function fetchRemotePackage(packageName,packageSize,callback,errback){var xhr=new XMLHttpRequest;xhr.open("GET",packageName,true);xhr.responseType="arraybuffer";xhr.onprogress=function(event){var url=packageName;var size=packageSize;if(event.total)size=event.total;if(event.loaded){if(!xhr.addedTotal){xhr.addedTotal=true;if(!Module.dataFileDownloads)Module.dataFileDownloads={};Module.dataFileDownloads[url]={loaded:event.loaded,total:size}}else{Module.dataFileDownloads[url].loaded=event.loaded}var total=0;var loaded=0;var num=0;for(var download in Module.dataFileDownloads){var data=Module.dataFileDownloads[download];total+=data.total;loaded+=data.loaded;num++}total=Math.ceil(total*Module.expectedDataFileDownloads/num);if(Module["setStatus"])Module["setStatus"]("Downloading data... ("+loaded+"/"+total+")")}else if(!Module.dataFileDownloads){if(Module["setStatus"])Module["setStatus"]("Downloading data...")}};xhr.onerror=function(event){throw new Error("NetworkError for: "+packageName)};xhr.onload=function(event){if(xhr.status==200||xhr.status==304||xhr.status==206||xhr.status==0&&xhr.response){var packageData=xhr.response;callback(packageData)}else{throw new Error(xhr.statusText+" : "+xhr.responseURL)}};xhr.send(null)}function handleError(error){console.error("package error:",error)}var fetchedCallback=null;var fetched=Module["getPreloadedPackage"]?Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE):null;if(!fetched)fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE,function(data){if(fetchedCallback){fetchedCallback(data);fetchedCallback=null}else{fetched=data}},handleError);function runWithFS(){function assert(check,msg){if(!check)throw msg+(new Error).stack}Module["FS_createPath"]("/","resources",true,true);function DataRequest(start,end,audio){this.start=start;this.end=end;this.audio=audio}DataRequest.prototype={requests:{},open:function(mode,name){this.name=name;this.requests[name]=this;Module["addRunDependency"]("fp "+this.name)},send:function(){},onload:function(){var byteArray=this.byteArray.subarray(this.start,this.end);this.finish(byteArray)},finish:function(byteArray){var that=this;Module["FS_createDataFile"](this.name,null,byteArray,true,true,true);Module["removeRunDependency"]("fp "+that.name);this.requests[this.name]=null}};var files=metadata["files"];for(var i=0;i<files.length;++i){new DataRequest(files[i]["start"],files[i]["end"],files[i]["audio"]).open("GET",files[i]["filename"])}function processPackageData(arrayBuffer){assert(arrayBuffer,"Loading data file failed.");assert(arrayBuffer instanceof ArrayBuffer,"bad input to processPackageData");var byteArray=new Uint8Array(arrayBuffer);DataRequest.prototype.byteArray=byteArray;var files=metadata["files"];for(var i=0;i<files.length;++i){DataRequest.prototype.requests[files[i].filename].onload()}Module["removeRunDependency"]("datafile_models/models_yaw_pitch_roll.data")}Module["addRunDependency"]("datafile_models/models_yaw_pitch_roll.data");if(!Module.preloadResults)Module.preloadResults={};Module.preloadResults[PACKAGE_NAME]={fromCache:false};if(fetched){processPackageData(fetched);fetched=null}else{fetchedCallback=processPackageData}}if(Module["calledRun"]){runWithFS()}else{if(!Module["preRun"])Module["preRun"]=[];Module["preRun"].push(runWithFS)}};loadPackage({"files":[{"filename":"/resources/plane.obj","start":0,"end":317645,"audio":0},{"filename":"/resources/plane_diffuse.png","start":317645,"end":619295,"audio":0},{"filename":"/resources/plane.png","start":619295,"end":621077,"audio":0},{"filename":"/resources/pitch.png","start":621077,"end":638447,"audio":0},{"filename":"/resources/background.png","start":638447,"end":642855,"audio":0},{"filename":"/resources/angle_gauge.png","start":642855,"end":653060,"audio":0}],"remote_package_size":653060,"package_uuid":"8fc8541b-a83c-4934-8b23-9e7bf7723ea0"})})();var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var ALLOC_NORMAL=0;var ALLOC_STACK=1;function allocate(slab,allocator){var ret;if(allocator==ALLOC_STACK){ret=stackAlloc(slab.length)}else{ret=_malloc(slab.length)}if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx<endPtr){var u0=heap[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||67108864;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="models_yaw_pitch_roll.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["ne"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["qe"];removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")}};var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.flush(stream.tty)},flush:function(stream){stream.tty.ops.flush(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now()}return i}},default_tty_ops:{get_char:function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc?Buffer.alloc(BUFSIZE):new Buffer(BUFSIZE);var bytesRead=0;try{bytesRead=nodeFS.readSync(process.stdin.fd,buf,0,BUFSIZE,null)}catch(e){if(e.toString().indexOf("EOF")!=-1)bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){var alignedSize=alignMemory(size,16384);var ptr=_malloc(alignedSize);while(size<alignedSize)HEAP8[ptr+size++]=0;return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write:function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position)}else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate:function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap:function(stream,address,length,position,prot,flags){if(address!==0){throw new FS.ErrnoError(28)}if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===buffer){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}HEAP8.set(contents,ptr)}return{ptr:ptr,allocated:allocated}},msync:function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(path,opts){path=PATH_FS.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+="/"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev:function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:function(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){err("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){err("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}},rmdir:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readdir:function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readlink:function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:function(path){return FS.stat(path,true)},chmod:function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:function(path,mode){FS.chmod(path,mode,true)},fchmod:function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:function(path,uid,gid){FS.chown(path,uid,gid,true)},fchown:function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:function(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;err("FS.trackingDelegate error on read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){err("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream},close:function(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:function(stream){return stream.fd===null},llseek:function(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){err("FS.trackingDelegate['onWriteToFile']('"+stream.path+"') threw an exception: "+e.message)}return bytesWritten},allocate:function(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:function(stream,address,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:function(stream){return 0},ioctl:function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:function(path,opts){opts=opts||{};opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:function(path,data,opts){opts=opts||{};opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:function(){return FS.currentPath},chdir:function(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function(){return 0},write:function(stream,buffer,offset,length,pos){return length}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return stream.path}}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>"})},staticInit:function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:function(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}},getMode:function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:function(parent,path,canRead,canWrite){parent=typeof parent==="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node},createDevice:function(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:function(stream){stream.seekable=false},close:function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}},read:function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now()}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile:function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node},createPreloadedFile:function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module["preloadPlugins"].forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,function(){if(onerror)onerror();removeRunDependency(dep)});handled=true}});if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,function(byteArray){processData(byteArray)},onerror)}else{processData(url)}},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={mappings:{},DEFAULT_POLLMASK:5,umask:511,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret},doWritev:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_chdir(path){try{path=SYSCALLS.getStr(path);FS.chdir(path);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd);if(size<cwdLengthInBytes+1)return-68;stringToUTF8(cwd,buf,size);return buf}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence<y.precedence})},removeDeferredCalls:function(targetFunction){for(var i=0;i<JSEvents.deferredCalls.length;++i){if(JSEvents.deferredCalls[i].targetFunction==targetFunction){JSEvents.deferredCalls.splice(i,1);--i}}},canPerformEventHandlerRequests:function(){return JSEvents.inEventHandler&&JSEvents.currentEventHandler.allowsDeferredCalls},runDeferredCalls:function(){if(!JSEvents.canPerformEventHandlerRequests()){return}for(var i=0;i<JSEvents.deferredCalls.length;++i){var call=JSEvents.deferredCalls[i];JSEvents.deferredCalls.splice(i,1);--i;call.targetFunction.apply(null,call.argsList)}},eventHandlers:[],removeAllHandlersOnTarget:function(target,eventTypeString){for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==target&&(!eventTypeString||eventTypeString==JSEvents.eventHandlers[i].eventTypeString)){JSEvents._removeHandler(i--)}}},_removeHandler:function(i){var h=JSEvents.eventHandlers[i];h.target.removeEventListener(h.eventTypeString,h.eventListenerFunc,h.useCapture);JSEvents.eventHandlers.splice(i,1)},registerOrRemoveHandler:function(eventHandler){var jsEventHandler=function jsEventHandler(event){++JSEvents.inEventHandler;JSEvents.currentEventHandler=eventHandler;JSEvents.runDeferredCalls();eventHandler.handlerFunc(event);JSEvents.runDeferredCalls();--JSEvents.inEventHandler};if(eventHandler.callbackfunc){eventHandler.eventListenerFunc=jsEventHandler;eventHandler.target.addEventListener(eventHandler.eventTypeString,jsEventHandler,eventHandler.useCapture);JSEvents.eventHandlers.push(eventHandler);JSEvents.registerRemoveEventListeners()}else{for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==eventHandler.target&&JSEvents.eventHandlers[i].eventTypeString==eventHandler.eventTypeString){JSEvents._removeHandler(i--)}}}},getNodeNameForTarget:function(target){if(!target)return"";if(target==window)return"#window";if(target==screen)return"#screen";return target&&target.nodeName?target.nodeName:""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function requestPointerLock(target){if(target.requestPointerLock){target.requestPointerLock()}else if(target.msRequestPointerLock){target.msRequestPointerLock()}else{if(document.body.requestPointerLock||document.body.msRequestPointerLock){return-3}else{return-1}}return 0}function _emscripten_exit_pointerlock(){JSEvents.removeDeferredCalls(requestPointerLock);if(document.exitPointerLock){document.exitPointerLock()}else if(document.msExitPointerLock){document.msExitPointerLock()}else{return-1}return 0}function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!=="undefined"?document:0,typeof window!=="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=="undefined"?document.querySelector(target):undefined);return domElement}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function _emscripten_get_element_css_size(target,width,height){target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0}function fillGamepadEventData(eventStruct,e){HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i<e.axes.length;++i){HEAPF64[eventStruct+i*8+16>>3]=e.axes[i]}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)}function _emscripten_get_gamepad_status(index,gamepadState){if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i<ret;i++){table[i]=null}return ret},getSource:function(shader,count,string,length){var source="";for(var i=0;i<count;++i){var len=length?HEAP32[length+i*4>>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault==="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents==="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query");__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(ext.indexOf("lose_context")<0&&ext.indexOf("debug")<0){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i<numUniforms;++i){var u=GLctx.getActiveUniform(p,i);var name=u.name;ptable.maxUniformLength=Math.max(ptable.maxUniformLength,name.length+1);if(name.slice(-1)=="]"){name=name.slice(0,name.lastIndexOf("["))}var loc=GLctx.getUniformLocation(p,name);if(loc){var id=GL.getNewId(GL.uniforms);utable[name]=[u.size,id];GL.uniforms[id]=loc;for(var j=1;j<u.size;++j){var n=name+"["+j+"]";loc=GLctx.getUniformLocation(p,n);id=GL.getNewId(GL.uniforms);GL.uniforms[id]=loc}}}}};function _emscripten_glActiveTexture(x0){GLctx["activeTexture"](x0)}function _emscripten_glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.timerQueriesEXT[id])}function _emscripten_glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _emscripten_glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _emscripten_glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _emscripten_glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _emscripten_glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _emscripten_glBindVertexArrayOES(vao){GLctx["bindVertexArray"](GL.vaos[vao])}function _emscripten_glBlendColor(x0,x1,x2,x3){GLctx["blendColor"](x0,x1,x2,x3)}function _emscripten_glBlendEquation(x0){GLctx["blendEquation"](x0)}function _emscripten_glBlendEquationSeparate(x0,x1){GLctx["blendEquationSeparate"](x0,x1)}function _emscripten_glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _emscripten_glBlendFuncSeparate(x0,x1,x2,x3){GLctx["blendFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _emscripten_glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _emscripten_glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _emscripten_glClear(x0){GLctx["clear"](x0)}function _emscripten_glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _emscripten_glClearDepthf(x0){GLctx["clearDepth"](x0)}function _emscripten_glClearStencil(x0){GLctx["clearStencil"](x0)}function _emscripten_glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}function _emscripten_glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _emscripten_glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexSubImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _emscripten_glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _emscripten_glCullFace(x0){GLctx["cullFace"](x0)}function _emscripten_glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _emscripten_glDeleteFramebuffers(n,framebuffers){for(var i=0;i<n;++i){var id=HEAP32[framebuffers+i*4>>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _emscripten_glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _emscripten_glDeleteQueriesEXT(n,ids){for(var i=0;i<n;i++){var id=HEAP32[ids+i*4>>2];var query=GL.timerQueriesEXT[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.timerQueriesEXT[id]=null}}function _emscripten_glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i<n;i++){var id=HEAP32[renderbuffers+i*4>>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}function _emscripten_glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _emscripten_glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _emscripten_glDeleteVertexArraysOES(n,vaos){for(var i=0;i<n;i++){var id=HEAP32[vaos+i*4>>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _emscripten_glDepthFunc(x0){GLctx["depthFunc"](x0)}function _emscripten_glDepthMask(flag){GLctx.depthMask(!!flag)}function _emscripten_glDepthRangef(x0,x1){GLctx["depthRange"](x0,x1)}function _emscripten_glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glDisable(x0){GLctx["disable"](x0)}function _emscripten_glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _emscripten_glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _emscripten_glDrawArraysInstancedANGLE(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}var tempFixedLengthArray=[];function _emscripten_glDrawBuffersWEBGL(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i<n;i++){bufArray[i]=HEAP32[bufs+i*4>>2]}GLctx["drawBuffers"](bufArray)}function _emscripten_glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _emscripten_glDrawElementsInstancedANGLE(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _emscripten_glEnable(x0){GLctx["enable"](x0)}function _emscripten_glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _emscripten_glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}function _emscripten_glFinish(){GLctx["finish"]()}function _emscripten_glFlush(){GLctx["flush"]()}function _emscripten_glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _emscripten_glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _emscripten_glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i<n;i++){var buffer=GLctx[createFunction]();var id=buffer&&GL.getNewId(objectTable);if(buffer){buffer.name=id;objectTable[id]=buffer}else{GL.recordError(1282)}HEAP32[buffers+i*4>>2]=id}}function _emscripten_glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _emscripten_glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _emscripten_glGenQueriesEXT(n,ids){for(var i=0;i<n;i++){var query=GLctx.disjointTimerQueryExt["createQueryEXT"]();if(!query){GL.recordError(1282);while(i<n)HEAP32[ids+i++*4>>2]=0;return}var id=GL.getNewId(GL.timerQueriesEXT);query.name=id;GL.timerQueriesEXT[id]=query;HEAP32[ids+i*4>>2]=id}}function _emscripten_glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _emscripten_glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _emscripten_glGenVertexArraysOES(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _emscripten_glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function __glGetActiveAttribOrUniform(funcName,program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}}function _emscripten_glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}function _emscripten_glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}function _emscripten_glGetAttachedShaders(program,maxCount,count,shaders){var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i<len;++i){var id=GL.shaders.indexOf(result[i]);HEAP32[shaders+i*4>>2]=id}}function _emscripten_glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i<result.length;++i){switch(type){case 0:HEAP32[p+i*4>>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _emscripten_glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}function _emscripten_glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)}function _emscripten_glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function _emscripten_glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _emscripten_glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result}function _emscripten_glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _emscripten_glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _emscripten_glGetQueryObjecti64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryObjectui64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectuivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)}function _emscripten_glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}function _emscripten_glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision}function _emscripten_glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _emscripten_glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)}function _emscripten_glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}function jstoi_q(str){return parseInt(str)}function _emscripten_glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function emscriptenWebGLGetUniform(program,location,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getUniform(GL.programs[program],GL.uniforms[location]);if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}}function _emscripten_glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}function _emscripten_glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}function _emscripten_glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}}function _emscripten_glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)}function _emscripten_glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}function _emscripten_glHint(x0,x1){GLctx["hint"](x0,x1)}function _emscripten_glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)}function _emscripten_glIsEnabled(x0){return GLctx["isEnabled"](x0)}function _emscripten_glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)}function _emscripten_glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)}function _emscripten_glIsQueryEXT(id){var query=GL.timerQueriesEXT[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)}function _emscripten_glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)}function _emscripten_glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}function _emscripten_glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}function _emscripten_glIsVertexArrayOES(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx["isVertexArray"](vao)}function _emscripten_glLineWidth(x0){GLctx["lineWidth"](x0)}function _emscripten_glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _emscripten_glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _emscripten_glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function _emscripten_glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.timerQueriesEXT[id],target)}function computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize}function __colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==1)return HEAPU8;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<<shift;var sizePerPixel=__colorChannelsInGlTextureFormat(format)*byteSize;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(pixels>>shift,pixels+bytes>>shift)}function _emscripten_glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _emscripten_glReleaseShaderCompiler(){}function _emscripten_glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _emscripten_glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}function _emscripten_glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _emscripten_glShaderBinary(){GL.recordError(1280)}function _emscripten_glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _emscripten_glStencilFunc(x0,x1,x2){GLctx["stencilFunc"](x0,x1,x2)}function _emscripten_glStencilFuncSeparate(x0,x1,x2,x3){GLctx["stencilFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glStencilMask(x0){GLctx["stencilMask"](x0)}function _emscripten_glStencilMaskSeparate(x0,x1){GLctx["stencilMaskSeparate"](x0,x1)}function _emscripten_glStencilOp(x0,x1,x2){GLctx["stencilOp"](x0,x1,x2)}function _emscripten_glStencilOpSeparate(x0,x1,x2,x3){GLctx["stencilOpSeparate"](x0,x1,x2,x3)}function _emscripten_glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _emscripten_glTexParameterf(x0,x1,x2){GLctx["texParameterf"](x0,x1,x2)}function _emscripten_glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)}function _emscripten_glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _emscripten_glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}function _emscripten_glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function _emscripten_glUniform1f(location,v0){GLctx.uniform1f(GL.uniforms[location],v0)}var miniTempWebGLFloatBuffers=[];function _emscripten_glUniform1fv(location,count,value){if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAPF32[value+4*i>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(GL.uniforms[location],view)}function _emscripten_glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}var __miniTempWebGLIntBuffers=[];function _emscripten_glUniform1iv(location,count,value){if(count<=288){var view=__miniTempWebGLIntBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAP32[value+4*i>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(GL.uniforms[location],view)}function _emscripten_glUniform2f(location,v0,v1){GLctx.uniform2f(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2fv(location,count,value){if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(GL.uniforms[location],view)}function _emscripten_glUniform2i(location,v0,v1){GLctx.uniform2i(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2iv(location,count,value){if(count<=144){var view=__miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(GL.uniforms[location],view)}function _emscripten_glUniform3f(location,v0,v1,v2){GLctx.uniform3f(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3fv(location,count,value){if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(GL.uniforms[location],view)}function _emscripten_glUniform3i(location,v0,v1,v2){GLctx.uniform3i(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3iv(location,count,value){if(count<=96){var view=__miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(GL.uniforms[location],view)}function _emscripten_glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4fv(location,count,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(GL.uniforms[location],view)}function _emscripten_glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4iv(location,count,value){if(count<=72){var view=__miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(GL.uniforms[location],view)}function _emscripten_glUniformMatrix2fv(location,count,transpose,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix3fv(location,count,transpose,value){if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _emscripten_glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}function _emscripten_glVertexAttrib1f(x0,x1){GLctx["vertexAttrib1f"](x0,x1)}function _emscripten_glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])}function _emscripten_glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _emscripten_glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])}function _emscripten_glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _emscripten_glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])}function _emscripten_glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _emscripten_glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])}function _emscripten_glVertexAttribDivisorANGLE(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}function _emscripten_glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _emscripten_glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){abortOnCannotGrowMemory(requestedSize)}function _emscripten_run_script(ptr){eval(UTF8ToString(ptr))}function _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)?0:-1}function fillMouseEventData(eventStruct,e,target){var idx=eventStruct>>2;HEAP32[idx+0]=e.screenX;HEAP32[idx+1]=e.screenY;HEAP32[idx+2]=e.clientX;HEAP32[idx+3]=e.clientY;HEAP32[idx+4]=e.ctrlKey;HEAP32[idx+5]=e.shiftKey;HEAP32[idx+6]=e.altKey;HEAP32[idx+7]=e.metaKey;HEAP16[idx*2+16]=e.button;HEAP16[idx*2+17]=e.buttons;HEAP32[idx+9]=e["movementX"];HEAP32[idx+10]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+11]=e.clientX-rect.left;HEAP32[idx+12]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(64);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(wasmTable.get(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function fillFullscreenChangeEventData(eventStruct){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement&&reportedElement.id?reportedElement.id:"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}}function registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(ev){var e=ev||event;var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(wasmTable.get(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_fullscreenchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread);registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return 0}function registerGamepadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=function(ev){var e=ev||event;var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(wasmTable.get(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread);return 0}function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(164);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;var idx=keyEventData>>2;HEAP32[idx+0]=e.location;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;HEAP32[idx+5]=e.repeat;HEAP32[idx+6]=e.charCode;HEAP32[idx+7]=e.keyCode;HEAP32[idx+8]=e.which;stringToUTF8(e.key||"",keyEventData+36,32);stringToUTF8(e.code||"",keyEventData+68,32);stringToUTF8(e.char||"",keyEventData+100,32);stringToUTF8(e.locale||"",keyEventData+132,32);if(wasmTable.get(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining<expected){Module["setStatus"](message+" ("+(expected-remaining)+"/"+expected+")")}else{Module["setStatus"](message)}}else{Module["setStatus"]("")}}},runIter:function(func){if(ABORT)return;if(Module["preMainLoop"]){var preRet=Module["preMainLoop"]();if(preRet===false){return}}try{func()}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){return}else{if(e&&typeof e==="object"&&e.stack)err("exception thrown: "+[e,e.stack]);throw e}}if(Module["postMainLoop"])Module["postMainLoop"]()}},isFullscreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(!Module["preloadPlugins"])Module["preloadPlugins"]=[];if(Browser.initted)return;Browser.initted=true;try{new Blob;Browser.hasBlobConstructor=true}catch(e){Browser.hasBlobConstructor=false;console.log("warning: no blob constructor, cannot create blobs with mimetypes")}Browser.BlobBuilder=typeof MozBlobBuilder!="undefined"?MozBlobBuilder:typeof WebKitBlobBuilder!="undefined"?WebKitBlobBuilder:!Browser.hasBlobConstructor?console.log("warning: no BlobBuilder"):null;Browser.URLObject=typeof window!="undefined"?window.URL?window.URL:window.webkitURL:undefined;if(!Module.noImageDecoding&&typeof Browser.URLObject==="undefined"){console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");Module.noImageDecoding=true}var imagePlugin={};imagePlugin["canHandle"]=function imagePlugin_canHandle(name){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(name)};imagePlugin["handle"]=function imagePlugin_handle(byteArray,name,onload,onerror){var b=null;if(Browser.hasBlobConstructor){try{b=new Blob([byteArray],{type:Browser.getMimetype(name)});if(b.size!==byteArray.length){b=new Blob([new Uint8Array(byteArray).buffer],{type:Browser.getMimetype(name)})}}catch(e){warnOnce("Blob constructor present but fails: "+e+"; falling back to blob builder")}}if(!b){var bb=new Browser.BlobBuilder;bb.append(new Uint8Array(byteArray).buffer);b=bb.getBlob()}var url=Browser.URLObject.createObjectURL(b);var img=new Image;img.onload=function img_onload(){assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);Module["preloadedImages"][name]=canvas;Browser.URLObject.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=function img_onerror(event){console.log("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};Module["preloadPlugins"].push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;Module["preloadedAudios"][name]=audio;if(onload)onload(byteArray)}function fail(){if(done)return;done=true;Module["preloadedAudios"][name]=new Audio;if(onerror)onerror()}if(Browser.hasBlobConstructor){try{var b=new Blob([byteArray],{type:Browser.getMimetype(name)})}catch(e){return fail()}var url=Browser.URLObject.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",function(){finish(audio)},false);audio.onerror=function audio_onerror(event){if(done)return;console.log("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i<data.length;i++){leftchar=leftchar<<8|data[i];leftbits+=8;while(leftbits>=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout(function(){finish(audio)},1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||function(){};canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||function(){};canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",function(ev){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!=="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?function(){canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null)||(canvasContainer["webkitRequestFullScreen"]?function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||function(){};CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame==="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(function(){if(ABORT)return;func()})},safeSetTimeout:function(func,timeout){noExitRuntime=true;return setTimeout(function(){if(ABORT)return;func()},timeout)},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},asyncLoad:function(url,onload,onerror,noRunDep){var dep=!noRunDep?getUniqueRunDependency("al "+url):"";readAsync(url,function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(function(listener){listener(canvas.width,canvas.height)})},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h<Module["forcedAspectRatio"]){w=Math.round(h*Module["forcedAspectRatio"])}else{h=Math.round(w/Module["forcedAspectRatio"])}}if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvas.parentNode&&typeof screen!="undefined"){var factor=Math.min(screen.width/w,screen.height/h);w=Math.round(w*factor);h=Math.round(h*factor)}if(Browser.resizeCanvas){if(canvas.width!=w)canvas.width=w;if(canvas.height!=h)canvas.height=h;if(typeof canvas.style!="undefined"){canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}else{if(canvas.width!=wNative)canvas.width=wNative;if(canvas.height!=hNative)canvas.height=hNative;if(typeof canvas.style!="undefined"){if(w!=wNative||h!=hNative){canvas.style.setProperty("width",w+"px","important");canvas.style.setProperty("height",h+"px","important")}else{canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}}},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var handle=Browser.nextWgetRequestHandle;Browser.nextWgetRequestHandle++;return handle}};function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate==="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=function(event){if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else _emscripten_get_now=function(){return performance.now()};function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){noExitRuntime=true;assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;if(typeof SDL==="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=wasmTable.get(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1684);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var touches={};var et=e.touches;for(var i=0;i<et.length;++i){var touch=et[i];touches[touch.identifier]=touch}et=e.changedTouches;for(var i=0;i<et.length;++i){var touch=et[i];touch.isChanged=1;touches[touch.identifier]=touch}et=e.targetTouches;for(var i=0;i<et.length;++i){touches[et[i].identifier].onTarget=1}var touchEvent=JSEvents.touchEvent;var idx=touchEvent>>2;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;idx+=5;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){var t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent>>2]=numTouches;if(wasmTable.get(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);return 0}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);return 0}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);return 0}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);return 0}function _emscripten_thread_sleep(msecs){var start=_emscripten_get_now();while(_emscripten_get_now()-start<msecs){}}function _exit(status){exit(status)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBlendEquation(x0){GLctx["blendEquation"](x0)}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glClearDepthf(x0){GLctx["clearDepth"](x0)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glCullFace(x0){GLctx["cullFace"](x0)}function _glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _glDeleteFramebuffers(n,framebuffers){for(var i=0;i<n;++i){var id=HEAP32[framebuffers+i*4>>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i<n;i++){var id=HEAP32[renderbuffers+i*4>>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDepthFunc(x0){GLctx["depthFunc"](x0)}function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _glFrontFace(x0){GLctx["frontFace"](x0)}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function _glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result}function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function _glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function _glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}function _glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function GLFW_Window(id,width,height,title,monitor,share){this.id=id;this.x=0;this.y=0;this.fullscreen=false;this.storedX=0;this.storedY=0;this.width=width;this.height=height;this.storedWidth=width;this.storedHeight=height;this.title=title;this.monitor=monitor;this.share=share;this.attributes=GLFW.hints;this.inputModes={208897:212993,208898:0,208899:0};this.buttons=0;this.keys=new Array;this.domKeys=new Array;this.shouldClose=0;this.title=null;this.windowPosFunc=null;this.windowSizeFunc=null;this.windowCloseFunc=null;this.windowRefreshFunc=null;this.windowFocusFunc=null;this.windowIconifyFunc=null;this.framebufferSizeFunc=null;this.mouseButtonFunc=null;this.cursorPosFunc=null;this.cursorEnterFunc=null;this.scrollFunc=null;this.dropFunc=null;this.keyFunc=null;this.charFunc=null;this.userptr=null}var GLFW={WindowFromId:function(id){if(id<=0||!GLFW.windows)return null;return GLFW.windows[id-1]},joystickFunc:null,errorFunc:null,monitorFunc:null,active:null,windows:null,monitors:null,monitorString:null,versionString:null,initialTime:null,extensions:null,hints:null,defaultHints:{131073:0,131074:0,131075:1,131076:1,131077:1,135169:8,135170:8,135171:8,135172:8,135173:24,135174:8,135175:0,135176:0,135177:0,135178:0,135179:0,135180:0,135181:0,135182:0,135183:0,139265:196609,139266:1,139267:0,139268:0,139269:0,139270:0,139271:0,139272:0},DOMToGLFWKeyCode:function(keycode){switch(keycode){case 32:return 32;case 222:return 39;case 188:return 44;case 173:return 45;case 189:return 45;case 190:return 46;case 191:return 47;case 48:return 48;case 49:return 49;case 50:return 50;case 51:return 51;case 52:return 52;case 53:return 53;case 54:return 54;case 55:return 55;case 56:return 56;case 57:return 57;case 59:return 59;case 61:return 61;case 187:return 61;case 65:return 65;case 66:return 66;case 67:return 67;case 68:return 68;case 69:return 69;case 70:return 70;case 71:return 71;case 72:return 72;case 73:return 73;case 74:return 74;case 75:return 75;case 76:return 76;case 77:return 77;case 78:return 78;case 79:return 79;case 80:return 80;case 81:return 81;case 82:return 82;case 83:return 83;case 84:return 84;case 85:return 85;case 86:return 86;case 87:return 87;case 88:return 88;case 89:return 89;case 90:return 90;case 219:return 91;case 220:return 92;case 221:return 93;case 192:return 94;case 27:return 256;case 13:return 257;case 9:return 258;case 8:return 259;case 45:return 260;case 46:return 261;case 39:return 262;case 37:return 263;case 40:return 264;case 38:return 265;case 33:return 266;case 34:return 267;case 36:return 268;case 35:return 269;case 20:return 280;case 145:return 281;case 144:return 282;case 44:return 283;case 19:return 284;case 112:return 290;case 113:return 291;case 114:return 292;case 115:return 293;case 116:return 294;case 117:return 295;case 118:return 296;case 119:return 297;case 120:return 298;case 121:return 299;case 122:return 300;case 123:return 301;case 124:return 302;case 125:return 303;case 126:return 304;case 127:return 305;case 128:return 306;case 129:return 307;case 130:return 308;case 131:return 309;case 132:return 310;case 133:return 311;case 134:return 312;case 135:return 313;case 136:return 314;case 96:return 320;case 97:return 321;case 98:return 322;case 99:return 323;case 100:return 324;case 101:return 325;case 102:return 326;case 103:return 327;case 104:return 328;case 105:return 329;case 110:return 330;case 111:return 331;case 106:return 332;case 109:return 333;case 107:return 334;case 16:return 340;case 17:return 341;case 18:return 342;case 91:return 343;case 93:return 348;default:return-1}},getModBits:function(win){var mod=0;if(win.keys[340])mod|=1;if(win.keys[341])mod|=2;if(win.keys[342])mod|=4;if(win.keys[343])mod|=8;return mod},onKeyPress:function(event){if(!GLFW.active||!GLFW.active.charFunc)return;if(event.ctrlKey||event.metaKey)return;var charCode=event.charCode;if(charCode==0||charCode>=0&&charCode<=31)return;wasmTable.get(GLFW.active.charFunc)(GLFW.active.id,charCode)},onKeyChanged:function(keyCode,status){if(!GLFW.active)return;var key=GLFW.DOMToGLFWKeyCode(keyCode);if(key==-1)return;var repeat=status&&GLFW.active.keys[key];GLFW.active.keys[key]=status;GLFW.active.domKeys[keyCode]=status;if(!GLFW.active.keyFunc)return;if(repeat)status=2;wasmTable.get(GLFW.active.keyFunc)(GLFW.active.id,key,keyCode,status,GLFW.getModBits(GLFW.active))},onGamepadConnected:function(event){GLFW.refreshJoysticks()},onGamepadDisconnected:function(event){GLFW.refreshJoysticks()},onKeydown:function(event){GLFW.onKeyChanged(event.keyCode,1);if(event.keyCode===8||event.keyCode===9){event.preventDefault()}},onKeyup:function(event){GLFW.onKeyChanged(event.keyCode,0)},onBlur:function(event){if(!GLFW.active)return;for(var i=0;i<GLFW.active.domKeys.length;++i){if(GLFW.active.domKeys[i]){GLFW.onKeyChanged(i,0)}}},onMousemove:function(event){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"]||!GLFW.active.cursorPosFunc)return;wasmTable.get(GLFW.active.cursorPosFunc)(GLFW.active.id,Browser.mouseX,Browser.mouseY)},DOMToGLFWMouseButton:function(event){var eventButton=event["button"];if(eventButton>0){if(eventButton==1){eventButton=2}else{eventButton=1}}return eventButton},onMouseenter:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,1)},onMouseleave:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,0)},onMouseButtonChanged:function(event,status){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"])return;var eventButton=GLFW.DOMToGLFWMouseButton(event);if(status==1){GLFW.active.buttons|=1<<eventButton;try{event.target.setCapture()}catch(e){}}else{GLFW.active.buttons&=~(1<<eventButton)}if(!GLFW.active.mouseButtonFunc)return;wasmTable.get(GLFW.active.mouseButtonFunc)(GLFW.active.id,eventButton,status,GLFW.getModBits(GLFW.active))},onMouseButtonDown:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,1)},onMouseButtonUp:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,0)},onMouseWheel:function(event){var delta=-Browser.getMouseWheelDelta(event);delta=delta==0?0:delta>0?Math.max(delta,1):Math.min(delta,-1);GLFW.wheelPos+=delta;if(!GLFW.active||!GLFW.active.scrollFunc||event.target!=Module["canvas"])return;var sx=0;var sy=0;if(event.type=="mousewheel"){sx=event.wheelDeltaX;sy=event.wheelDeltaY}else{sx=event.deltaX;sy=event.deltaY}wasmTable.get(GLFW.active.scrollFunc)(GLFW.active.id,sx,sy);event.preventDefault()},onCanvasResize:function(width,height){if(!GLFW.active)return;var resizeNeeded=true;if(document["fullscreen"]||document["fullScreen"]||document["mozFullScreen"]||document["webkitIsFullScreen"]){GLFW.active.storedX=GLFW.active.x;GLFW.active.storedY=GLFW.active.y;GLFW.active.storedWidth=GLFW.active.width;GLFW.active.storedHeight=GLFW.active.height;GLFW.active.x=GLFW.active.y=0;GLFW.active.width=screen.width;GLFW.active.height=screen.height;GLFW.active.fullscreen=true}else if(GLFW.active.fullscreen==true){GLFW.active.x=GLFW.active.storedX;GLFW.active.y=GLFW.active.storedY;GLFW.active.width=GLFW.active.storedWidth;GLFW.active.height=GLFW.active.storedHeight;GLFW.active.fullscreen=false}else if(GLFW.active.width!=width||GLFW.active.height!=height){GLFW.active.width=width;GLFW.active.height=height}else{resizeNeeded=false}if(resizeNeeded){Browser.setCanvasSize(GLFW.active.width,GLFW.active.height,true);GLFW.onWindowSizeChanged();GLFW.onFramebufferSizeChanged()}},onWindowSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.windowSizeFunc)return;wasmTable.get(GLFW.active.windowSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},onFramebufferSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.framebufferSizeFunc)return;wasmTable.get(GLFW.active.framebufferSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},getTime:function(){return _emscripten_get_now()/1e3},setWindowTitle:function(winid,title){var win=GLFW.WindowFromId(winid);if(!win)return;win.title=UTF8ToString(title);if(GLFW.active.id==win.id){document.title=win.title}},setJoystickCallback:function(cbfun){GLFW.joystickFunc=cbfun;GLFW.refreshJoysticks()},joys:{},lastGamepadState:null,lastGamepadStateFrame:null,refreshJoysticks:function(){if(Browser.mainLoop.currentFrameNumber!==GLFW.lastGamepadStateFrame||!Browser.mainLoop.currentFrameNumber){GLFW.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads:null;GLFW.lastGamepadStateFrame=Browser.mainLoop.currentFrameNumber;for(var joy=0;joy<GLFW.lastGamepadState.length;++joy){var gamepad=GLFW.lastGamepadState[joy];if(gamepad){if(!GLFW.joys[joy]){console.log("glfw joystick connected:",joy);GLFW.joys[joy]={id:allocate(intArrayFromString(gamepad.id),ALLOC_NORMAL),buttonsCount:gamepad.buttons.length,axesCount:gamepad.axes.length,buttons:allocate(new Array(gamepad.buttons.length),ALLOC_NORMAL),axes:allocate(new Array(gamepad.axes.length*4),ALLOC_NORMAL)};if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262145)}}var data=GLFW.joys[joy];for(var i=0;i<gamepad.buttons.length;++i){setValue(data.buttons+i,gamepad.buttons[i].pressed,"i8")}for(var i=0;i<gamepad.axes.length;++i){setValue(data.axes+i*4,gamepad.axes[i],"float")}}else{if(GLFW.joys[joy]){console.log("glfw joystick disconnected",joy);if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262146)}_free(GLFW.joys[joy].id);_free(GLFW.joys[joy].buttons);_free(GLFW.joys[joy].axes);delete GLFW.joys[joy]}}}}},setKeyCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.keyFunc;win.keyFunc=cbfun;return prevcbfun},setCharCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.charFunc;win.charFunc=cbfun;return prevcbfun},setMouseButtonCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.mouseButtonFunc;win.mouseButtonFunc=cbfun;return prevcbfun},setCursorPosCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorPosFunc;win.cursorPosFunc=cbfun;return prevcbfun},setScrollCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.scrollFunc;win.scrollFunc=cbfun;return prevcbfun},setDropCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.dropFunc;win.dropFunc=cbfun;return prevcbfun},onDrop:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;if(!event.dataTransfer||!event.dataTransfer.files||event.dataTransfer.files.length==0)return;event.preventDefault();var filenames=allocate(new Array(event.dataTransfer.files.length*4),ALLOC_NORMAL);var filenamesArray=[];var count=event.dataTransfer.files.length;var written=0;var drop_dir=".glfw_dropped_files";FS.createPath("/",drop_dir);function save(file){var path="/"+drop_dir+"/"+file.name.replace(/\//g,"_");var reader=new FileReader;reader.onloadend=function(e){if(reader.readyState!=2){++written;console.log("failed to read dropped file: "+file.name+": "+reader.error);return}var data=e.target.result;FS.writeFile(path,new Uint8Array(data));if(++written===count){wasmTable.get(GLFW.active.dropFunc)(GLFW.active.id,count,filenames);for(var i=0;i<filenamesArray.length;++i){_free(filenamesArray[i])}_free(filenames)}};reader.readAsArrayBuffer(file);var filename=allocate(intArrayFromString(path),ALLOC_NORMAL);filenamesArray.push(filename);setValue(filenames+i*4,filename,"i8*")}for(var i=0;i<count;++i){save(event.dataTransfer.files[i])}return false},onDragover:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;event.preventDefault();return false},setWindowSizeCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowSizeFunc;win.windowSizeFunc=cbfun;return prevcbfun},setWindowCloseCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowCloseFunc;win.windowCloseFunc=cbfun;return prevcbfun},setWindowRefreshCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowRefreshFunc;win.windowRefreshFunc=cbfun;return prevcbfun},onClickRequestPointerLock:function(e){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();e.preventDefault()}},setInputMode:function(winid,mode,value){var win=GLFW.WindowFromId(winid);if(!win)return;switch(mode){case 208897:{switch(value){case 212993:{win.inputModes[mode]=value;Module["canvas"].removeEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].exitPointerLock();break}case 212994:{console.log("glfwSetInputMode called with GLFW_CURSOR_HIDDEN value not implemented.");break}case 212995:{win.inputModes[mode]=value;Module["canvas"].addEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].requestPointerLock();break}default:{console.log("glfwSetInputMode called with unknown value parameter value: "+value+".");break}}break}case 208898:{console.log("glfwSetInputMode called with GLFW_STICKY_KEYS mode not implemented.");break}case 208899:{console.log("glfwSetInputMode called with GLFW_STICKY_MOUSE_BUTTONS mode not implemented.");break}default:{console.log("glfwSetInputMode called with unknown mode parameter value: "+mode+".");break}}},getKey:function(winid,key){var win=GLFW.WindowFromId(winid);if(!win)return 0;return win.keys[key]},getMouseButton:function(winid,button){var win=GLFW.WindowFromId(winid);if(!win)return 0;return(win.buttons&1<<button)>0},getCursorPos:function(winid,x,y){setValue(x,Browser.mouseX,"double");setValue(y,Browser.mouseY,"double")},getMousePos:function(winid,x,y){setValue(x,Browser.mouseX,"i32");setValue(y,Browser.mouseY,"i32")},setCursorPos:function(winid,x,y){},getWindowPos:function(winid,x,y){var wx=0;var wy=0;var win=GLFW.WindowFromId(winid);if(win){wx=win.x;wy=win.y}if(x){setValue(x,wx,"i32")}if(y){setValue(y,wy,"i32")}},setWindowPos:function(winid,x,y){var win=GLFW.WindowFromId(winid);if(!win)return;win.x=x;win.y=y},getWindowSize:function(winid,width,height){var ww=0;var wh=0;var win=GLFW.WindowFromId(winid);if(win){ww=win.width;wh=win.height}if(width){setValue(width,ww,"i32")}if(height){setValue(height,wh,"i32")}},setWindowSize:function(winid,width,height){var win=GLFW.WindowFromId(winid);if(!win)return;if(GLFW.active.id==win.id){if(width==screen.width&&height==screen.height){Browser.requestFullscreen()}else{Browser.exitFullscreen();Browser.setCanvasSize(width,height);win.width=width;win.height=height}}if(!win.windowSizeFunc)return;wasmTable.get(win.windowSizeFunc)(win.id,width,height)},createWindow:function(width,height,title,monitor,share){var i,id;for(i=0;i<GLFW.windows.length&&GLFW.windows[i]!==null;i++){}if(i>0)throw"glfwCreateWindow only supports one window at time currently";id=i+1;if(width<=0||height<=0)return 0;if(monitor){Browser.requestFullscreen()}else{Browser.setCanvasSize(width,height)}for(i=0;i<GLFW.windows.length&&GLFW.windows[i]==null;i++){}var useWebGL=GLFW.hints[139265]>0;if(i==GLFW.windows.length){if(useWebGL){var contextAttributes={antialias:GLFW.hints[135181]>1,depth:GLFW.hints[135173]>0,stencil:GLFW.hints[135174]>0,alpha:GLFW.hints[135172]>0};Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes)}else{Browser.init()}}if(!Module.ctx&&useWebGL)return 0;var win=new GLFW_Window(id,width,height,title,monitor,share);if(id-1==GLFW.windows.length){GLFW.windows.push(win)}else{GLFW.windows[id-1]=win}GLFW.active=win;return win.id},destroyWindow:function(winid){var win=GLFW.WindowFromId(winid);if(!win)return;if(win.windowCloseFunc)wasmTable.get(win.windowCloseFunc)(win.id);GLFW.windows[win.id-1]=null;if(GLFW.active.id==win.id)GLFW.active=null;for(var i=0;i<GLFW.windows.length;i++)if(GLFW.windows[i]!==null)return;Module.ctx=Browser.destroyContext(Module["canvas"],true,true)},swapBuffers:function(winid){},GLFW2ParamToGLFW3Param:function(param){var table={196609:0,196610:0,196611:0,196612:0,196613:0,196614:0,131073:0,131074:0,131075:0,131076:0,131077:135169,131078:135170,131079:135171,131080:135172,131081:135173,131082:135174,131083:135183,131084:135175,131085:135176,131086:135177,131087:135178,131088:135179,131089:135180,131090:0,131091:135181,131092:139266,131093:139267,131094:139270,131095:139271,131096:139272};return table[param]}};function _glfwCreateWindow(width,height,title,monitor,share){return GLFW.createWindow(width,height,title,monitor,share)}function _glfwDefaultWindowHints(){GLFW.hints=GLFW.defaultHints}function _glfwDestroyWindow(winid){return GLFW.destroyWindow(winid)}function _glfwGetPrimaryMonitor(){return 1}function _glfwGetTime(){return GLFW.getTime()-GLFW.initialTime}function _glfwGetVideoModes(monitor,count){setValue(count,0,"i32");return 0}function _glfwInit(){if(GLFW.windows)return 1;GLFW.initialTime=GLFW.getTime();GLFW.hints=GLFW.defaultHints;GLFW.windows=new Array;GLFW.active=null;window.addEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.addEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.addEventListener("keydown",GLFW.onKeydown,true);window.addEventListener("keypress",GLFW.onKeyPress,true);window.addEventListener("keyup",GLFW.onKeyup,true);window.addEventListener("blur",GLFW.onBlur,true);Module["canvas"].addEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].addEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].addEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].addEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].addEventListener("drop",GLFW.onDrop,true);Module["canvas"].addEventListener("dragover",GLFW.onDragover,true);Browser.resizeListeners.push(function(width,height){GLFW.onCanvasResize(width,height)});return 1}function _glfwMakeContextCurrent(winid){}function _glfwSetCharCallback(winid,cbfun){return GLFW.setCharCallback(winid,cbfun)}function _glfwSetCursorEnterCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorEnterFunc;win.cursorEnterFunc=cbfun;return prevcbfun}function _glfwSetCursorPosCallback(winid,cbfun){return GLFW.setCursorPosCallback(winid,cbfun)}function _glfwSetDropCallback(winid,cbfun){return GLFW.setDropCallback(winid,cbfun)}function _glfwSetErrorCallback(cbfun){var prevcbfun=GLFW.errorFunc;GLFW.errorFunc=cbfun;return prevcbfun}function _glfwSetKeyCallback(winid,cbfun){return GLFW.setKeyCallback(winid,cbfun)}function _glfwSetMouseButtonCallback(winid,cbfun){return GLFW.setMouseButtonCallback(winid,cbfun)}function _glfwSetScrollCallback(winid,cbfun){return GLFW.setScrollCallback(winid,cbfun)}function _glfwSetWindowFocusCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowFocusFunc;win.windowFocusFunc=cbfun;return prevcbfun}function _glfwSetWindowIconifyCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowIconifyFunc;win.windowIconifyFunc=cbfun;return prevcbfun}function _glfwSetWindowShouldClose(winid,value){var win=GLFW.WindowFromId(winid);if(!win)return;win.shouldClose=value}function _glfwSetWindowSizeCallback(winid,cbfun){return GLFW.setWindowSizeCallback(winid,cbfun)}function _glfwSwapBuffers(winid){GLFW.swapBuffers(winid)}function _glfwSwapInterval(interval){interval=Math.abs(interval);if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval)}function _glfwTerminate(){window.removeEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.removeEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.removeEventListener("keydown",GLFW.onKeydown,true);window.removeEventListener("keypress",GLFW.onKeyPress,true);window.removeEventListener("keyup",GLFW.onKeyup,true);window.removeEventListener("blur",GLFW.onBlur,true);Module["canvas"].removeEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].removeEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].removeEventListener("drop",GLFW.onDrop,true);Module["canvas"].removeEventListener("dragover",GLFW.onDragover,true);Module["canvas"].width=Module["canvas"].height=1;GLFW.windows=null;GLFW.active=null}function _glfwWindowHint(target,hint){GLFW.hints[target]=hint}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var __miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){__miniTempWebGLIntBuffers[i]=__miniTempWebGLIntBuffersStorage.subarray(0,i+1)}Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"a":___assert_fail,"Ya":___sys_chdir,"P":___sys_fcntl64,"Xa":___sys_getcwd,"_a":___sys_ioctl,"$a":___sys_open,"ya":_emscripten_exit_pointerlock,"Z":_emscripten_get_element_css_size,"ge":_emscripten_get_gamepad_status,"he":_emscripten_get_num_gamepads,"Md":_emscripten_glActiveTexture,"Ld":_emscripten_glAttachShader,"ae":_emscripten_glBeginQueryEXT,"Kd":_emscripten_glBindAttribLocation,"Jd":_emscripten_glBindBuffer,"Id":_emscripten_glBindFramebuffer,"Hd":_emscripten_glBindRenderbuffer,"Gd":_emscripten_glBindTexture,"Ud":_emscripten_glBindVertexArrayOES,"Fd":_emscripten_glBlendColor,"Ed":_emscripten_glBlendEquation,"Dd":_emscripten_glBlendEquationSeparate,"Cd":_emscripten_glBlendFunc,"Bd":_emscripten_glBlendFuncSeparate,"Ad":_emscripten_glBufferData,"zd":_emscripten_glBufferSubData,"yd":_emscripten_glCheckFramebufferStatus,"xd":_emscripten_glClear,"wd":_emscripten_glClearColor,"vd":_emscripten_glClearDepthf,"ud":_emscripten_glClearStencil,"td":_emscripten_glColorMask,"sd":_emscripten_glCompileShader,"rd":_emscripten_glCompressedTexImage2D,"qd":_emscripten_glCompressedTexSubImage2D,"pd":_emscripten_glCopyTexImage2D,"od":_emscripten_glCopyTexSubImage2D,"nd":_emscripten_glCreateProgram,"md":_emscripten_glCreateShader,"ld":_emscripten_glCullFace,"kd":_emscripten_glDeleteBuffers,"jd":_emscripten_glDeleteFramebuffers,"id":_emscripten_glDeleteProgram,"ce":_emscripten_glDeleteQueriesEXT,"hd":_emscripten_glDeleteRenderbuffers,"gd":_emscripten_glDeleteShader,"fd":_emscripten_glDeleteTextures,"Td":_emscripten_glDeleteVertexArraysOES,"ed":_emscripten_glDepthFunc,"dd":_emscripten_glDepthMask,"cd":_emscripten_glDepthRangef,"bd":_emscripten_glDetachShader,"ad":_emscripten_glDisable,"$c":_emscripten_glDisableVertexAttribArray,"_c":_emscripten_glDrawArrays,"Pd":_emscripten_glDrawArraysInstancedANGLE,"Qd":_emscripten_glDrawBuffersWEBGL,"Zc":_emscripten_glDrawElements,"Od":_emscripten_glDrawElementsInstancedANGLE,"Yc":_emscripten_glEnable,"Xc":_emscripten_glEnableVertexAttribArray,"$d":_emscripten_glEndQueryEXT,"Wc":_emscripten_glFinish,"Vc":_emscripten_glFlush,"Uc":_emscripten_glFramebufferRenderbuffer,"Tc":_emscripten_glFramebufferTexture2D,"Sc":_emscripten_glFrontFace,"Rc":_emscripten_glGenBuffers,"Oc":_emscripten_glGenFramebuffers,"de":_emscripten_glGenQueriesEXT,"Nc":_emscripten_glGenRenderbuffers,"Mc":_emscripten_glGenTextures,"Sd":_emscripten_glGenVertexArraysOES,"Qc":_emscripten_glGenerateMipmap,"Lc":_emscripten_glGetActiveAttrib,"Kc":_emscripten_glGetActiveUniform,"Jc":_emscripten_glGetAttachedShaders,"Ic":_emscripten_glGetAttribLocation,"Hc":_emscripten_glGetBooleanv,"Gc":_emscripten_glGetBufferParameteriv,"Fc":_emscripten_glGetError,"Ec":_emscripten_glGetFloatv,"Dc":_emscripten_glGetFramebufferAttachmentParameteriv,"Cc":_emscripten_glGetIntegerv,"Ac":_emscripten_glGetProgramInfoLog,"Bc":_emscripten_glGetProgramiv,"Wd":_emscripten_glGetQueryObjecti64vEXT,"Yd":_emscripten_glGetQueryObjectivEXT,"Vd":_emscripten_glGetQueryObjectui64vEXT,"Xd":_emscripten_glGetQueryObjectuivEXT,"Zd":_emscripten_glGetQueryivEXT,"zc":_emscripten_glGetRenderbufferParameteriv,"xc":_emscripten_glGetShaderInfoLog,"wc":_emscripten_glGetShaderPrecisionFormat,"vc":_emscripten_glGetShaderSource,"yc":_emscripten_glGetShaderiv,"tc":_emscripten_glGetString,"sc":_emscripten_glGetTexParameterfv,"rc":_emscripten_glGetTexParameteriv,"oc":_emscripten_glGetUniformLocation,"qc":_emscripten_glGetUniformfv,"pc":_emscripten_glGetUniformiv,"lc":_emscripten_glGetVertexAttribPointerv,"nc":_emscripten_glGetVertexAttribfv,"mc":_emscripten_glGetVertexAttribiv,"kc":_emscripten_glHint,"ic":_emscripten_glIsBuffer,"hc":_emscripten_glIsEnabled,"gc":_emscripten_glIsFramebuffer,"fc":_emscripten_glIsProgram,"be":_emscripten_glIsQueryEXT,"ec":_emscripten_glIsRenderbuffer,"dc":_emscripten_glIsShader,"cc":_emscripten_glIsTexture,"Rd":_emscripten_glIsVertexArrayOES,"bc":_emscripten_glLineWidth,"ac":_emscripten_glLinkProgram,"$b":_emscripten_glPixelStorei,"_b":_emscripten_glPolygonOffset,"_d":_emscripten_glQueryCounterEXT,"Zb":_emscripten_glReadPixels,"Yb":_emscripten_glReleaseShaderCompiler,"Xb":_emscripten_glRenderbufferStorage,"Wb":_emscripten_glSampleCoverage,"Vb":_emscripten_glScissor,"Ub":_emscripten_glShaderBinary,"Tb":_emscripten_glShaderSource,"Sb":_emscripten_glStencilFunc,"Rb":_emscripten_glStencilFuncSeparate,"Qb":_emscripten_glStencilMask,"Pb":_emscripten_glStencilMaskSeparate,"Ob":_emscripten_glStencilOp,"Nb":_emscripten_glStencilOpSeparate,"Mb":_emscripten_glTexImage2D,"Lb":_emscripten_glTexParameterf,"Kb":_emscripten_glTexParameterfv,"Jb":_emscripten_glTexParameteri,"Ib":_emscripten_glTexParameteriv,"Hb":_emscripten_glTexSubImage2D,"Gb":_emscripten_glUniform1f,"Fb":_emscripten_glUniform1fv,"Eb":_emscripten_glUniform1i,"Db":_emscripten_glUniform1iv,"Cb":_emscripten_glUniform2f,"Bb":_emscripten_glUniform2fv,"Ab":_emscripten_glUniform2i,"zb":_emscripten_glUniform2iv,"yb":_emscripten_glUniform3f,"xb":_emscripten_glUniform3fv,"vb":_emscripten_glUniform3i,"ub":_emscripten_glUniform3iv,"tb":_emscripten_glUniform4f,"sb":_emscripten_glUniform4fv,"rb":_emscripten_glUniform4i,"qb":_emscripten_glUniform4iv,"pb":_emscripten_glUniformMatrix2fv,"ob":_emscripten_glUniformMatrix3fv,"nb":_emscripten_glUniformMatrix4fv,"mb":_emscripten_glUseProgram,"lb":_emscripten_glValidateProgram,"kb":_emscripten_glVertexAttrib1f,"jb":_emscripten_glVertexAttrib1fv,"ib":_emscripten_glVertexAttrib2f,"hb":_emscripten_glVertexAttrib2fv,"gb":_emscripten_glVertexAttrib3f,"fb":_emscripten_glVertexAttrib3fv,"eb":_emscripten_glVertexAttrib4f,"db":_emscripten_glVertexAttrib4fv,"Nd":_emscripten_glVertexAttribDivisorANGLE,"cb":_emscripten_glVertexAttribPointer,"ab":_emscripten_glViewport,"Ta":_emscripten_memcpy_big,"Ua":_emscripten_resize_heap,"Y":_emscripten_run_script,"ie":_emscripten_sample_gamepad_data,"va":_emscripten_set_click_callback_on_thread,"xa":_emscripten_set_fullscreenchange_callback_on_thread,"qa":_emscripten_set_gamepadconnected_callback_on_thread,"pa":_emscripten_set_gamepaddisconnected_callback_on_thread,"wa":_emscripten_set_keydown_callback_on_thread,"me":_emscripten_set_main_loop,"ra":_emscripten_set_touchcancel_callback_on_thread,"ta":_emscripten_set_touchend_callback_on_thread,"sa":_emscripten_set_touchmove_callback_on_thread,"ua":_emscripten_set_touchstart_callback_on_thread,"Wa":_emscripten_thread_sleep,"ee":_exit,"Q":_fd_close,"Za":_fd_read,"Sa":_fd_seek,"O":_fd_write,"r":_glActiveTexture,"E":_glAttachShader,"l":_glBindAttribLocation,"b":_glBindBuffer,"k":_glBindFramebuffer,"H":_glBindRenderbuffer,"e":_glBindTexture,"za":_glBlendEquation,"R":_glBlendFunc,"f":_glBufferData,"y":_glBufferSubData,"La":_glCheckFramebufferStatus,"S":_glClear,"T":_glClearColor,"Ra":_glClearDepthf,"Ea":_glCompileShader,"Pa":_glCompressedTexImage2D,"Ca":_glCreateProgram,"Ga":_glCreateShader,"bb":_glCullFace,"o":_glDeleteBuffers,"jc":_glDeleteFramebuffers,"I":_glDeleteProgram,"uc":_glDeleteRenderbuffers,"J":_glDeleteShader,"L":_glDeleteTextures,"wb":_glDepthFunc,"K":_glDetachShader,"V":_glDisable,"j":_glDisableVertexAttribArray,"X":_glDrawArrays,"W":_glDrawElements,"z":_glEnable,"c":_glEnableVertexAttribArray,"v":_glFramebufferRenderbuffer,"q":_glFramebufferTexture2D,"Va":_glFrontFace,"g":_glGenBuffers,"Ma":_glGenFramebuffers,"Oa":_glGenRenderbuffers,"N":_glGenTextures,"Ka":_glGenerateMipmap,"x":_glGetAttribLocation,"Pc":_glGetFloatv,"U":_glGetFramebufferAttachmentParameteriv,"Aa":_glGetProgramInfoLog,"G":_glGetProgramiv,"Da":_glGetShaderInfoLog,"F":_glGetShaderiv,"p":_glGetString,"w":_glGetUniformLocation,"Ba":_glLinkProgram,"Qa":_glPixelStorei,"Ha":_glReadPixels,"Na":_glRenderbufferStorage,"Fa":_glShaderSource,"M":_glTexImage2D,"i":_glTexParameteri,"B":_glUniform1i,"s":_glUniform4f,"u":_glUniformMatrix4fv,"m":_glUseProgram,"Ia":_glVertexAttrib2f,"Ja":_glVertexAttrib3f,"t":_glVertexAttrib4f,"d":_glVertexAttribPointer,"le":_glViewport,"C":_glfwCreateWindow,"ma":_glfwDefaultWindowHints,"ke":_glfwDestroyWindow,"D":_glfwGetPrimaryMonitor,"n":_glfwGetTime,"la":_glfwGetVideoModes,"na":_glfwInit,"aa":_glfwMakeContextCurrent,"fa":_glfwSetCharCallback,"ba":_glfwSetCursorEnterCallback,"da":_glfwSetCursorPosCallback,"ha":_glfwSetDropCallback,"oa":_glfwSetErrorCallback,"ga":_glfwSetKeyCallback,"ea":_glfwSetMouseButtonCallback,"ca":_glfwSetScrollCallback,"ia":_glfwSetWindowFocusCallback,"ja":_glfwSetWindowIconifyCallback,"fe":_glfwSetWindowShouldClose,"ka":_glfwSetWindowSizeCallback,"je":_glfwSwapBuffers,"$":_glfwSwapInterval,"A":_glfwTerminate,"h":_glfwWindowHint,"_":_time};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["oe"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["pe"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["re"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["se"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["te"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["ue"]).apply(null,arguments)};Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e==="object"&&e.stack){toLog=[e,e.stack]}err("exception thrown: "+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); +var Module=typeof Module!=="undefined"?Module:{};if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0}Module.expectedDataFileDownloads++;(function(){var loadPackage=function(metadata){var PACKAGE_PATH;if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/")}else if(typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/")}else{throw"using preloaded data can only be done on a web page or in a web worker"}var PACKAGE_NAME="models/models_yaw_pitch_roll.data";var REMOTE_PACKAGE_BASE="models_yaw_pitch_roll.data";if(typeof Module["locateFilePackage"]==="function"&&!Module["locateFile"]){Module["locateFile"]=Module["locateFilePackage"];err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")}var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];var PACKAGE_UUID=metadata["package_uuid"];function fetchRemotePackage(packageName,packageSize,callback,errback){var xhr=new XMLHttpRequest;xhr.open("GET",packageName,true);xhr.responseType="arraybuffer";xhr.onprogress=function(event){var url=packageName;var size=packageSize;if(event.total)size=event.total;if(event.loaded){if(!xhr.addedTotal){xhr.addedTotal=true;if(!Module.dataFileDownloads)Module.dataFileDownloads={};Module.dataFileDownloads[url]={loaded:event.loaded,total:size}}else{Module.dataFileDownloads[url].loaded=event.loaded}var total=0;var loaded=0;var num=0;for(var download in Module.dataFileDownloads){var data=Module.dataFileDownloads[download];total+=data.total;loaded+=data.loaded;num++}total=Math.ceil(total*Module.expectedDataFileDownloads/num);if(Module["setStatus"])Module["setStatus"]("Downloading data... ("+loaded+"/"+total+")")}else if(!Module.dataFileDownloads){if(Module["setStatus"])Module["setStatus"]("Downloading data...")}};xhr.onerror=function(event){throw new Error("NetworkError for: "+packageName)};xhr.onload=function(event){if(xhr.status==200||xhr.status==304||xhr.status==206||xhr.status==0&&xhr.response){var packageData=xhr.response;callback(packageData)}else{throw new Error(xhr.statusText+" : "+xhr.responseURL)}};xhr.send(null)}function handleError(error){console.error("package error:",error)}var fetchedCallback=null;var fetched=Module["getPreloadedPackage"]?Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE):null;if(!fetched)fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE,function(data){if(fetchedCallback){fetchedCallback(data);fetchedCallback=null}else{fetched=data}},handleError);function runWithFS(){function assert(check,msg){if(!check)throw msg+(new Error).stack}Module["FS_createPath"]("/","resources",true,true);Module["FS_createPath"]("/resources","plane",true,true);function DataRequest(start,end,audio){this.start=start;this.end=end;this.audio=audio}DataRequest.prototype={requests:{},open:function(mode,name){this.name=name;this.requests[name]=this;Module["addRunDependency"]("fp "+this.name)},send:function(){},onload:function(){var byteArray=this.byteArray.subarray(this.start,this.end);this.finish(byteArray)},finish:function(byteArray){var that=this;Module["FS_createDataFile"](this.name,null,byteArray,true,true,true);Module["removeRunDependency"]("fp "+that.name);this.requests[this.name]=null}};var files=metadata["files"];for(var i=0;i<files.length;++i){new DataRequest(files[i]["start"],files[i]["end"],files[i]["audio"]).open("GET",files[i]["filename"])}function processPackageData(arrayBuffer){assert(arrayBuffer,"Loading data file failed.");assert(arrayBuffer instanceof ArrayBuffer,"bad input to processPackageData");var byteArray=new Uint8Array(arrayBuffer);DataRequest.prototype.byteArray=byteArray;var files=metadata["files"];for(var i=0;i<files.length;++i){DataRequest.prototype.requests[files[i].filename].onload()}Module["removeRunDependency"]("datafile_models/models_yaw_pitch_roll.data")}Module["addRunDependency"]("datafile_models/models_yaw_pitch_roll.data");if(!Module.preloadResults)Module.preloadResults={};Module.preloadResults[PACKAGE_NAME]={fromCache:false};if(fetched){processPackageData(fetched);fetched=null}else{fetchedCallback=processPackageData}}if(Module["calledRun"]){runWithFS()}else{if(!Module["preRun"])Module["preRun"]=[];Module["preRun"].push(runWithFS)}};loadPackage({"files":[{"filename":"/resources/plane/plane.gltf","start":0,"end":5267,"audio":0},{"filename":"/resources/plane/plane_diffuse.png","start":5267,"end":828760,"audio":0}],"remote_package_size":828760,"package_uuid":"4fc7af9d-3f17-4850-ac4f-5ba6b2ae50cf"})})();var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;if(typeof WebAssembly!=="object"){abort("no native wasm support detected")}function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var ALLOC_NORMAL=0;var ALLOC_STACK=1;function allocate(slab,allocator){var ret;if(allocator==ALLOC_STACK){ret=stackAlloc(slab.length)}else{ret=_malloc(slab.length)}if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(heap,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heap[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx<endPtr){var u0=heap[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||67108864;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){FS.ignorePermissions=false;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix="file://";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile="models_yaw_pitch_roll.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["ae"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["de"];removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!=="")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push("..")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join("/")}};var TTY={ttys:[],init:function(){},shutdown:function(){},register:function(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open:function(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close:function(stream){stream.tty.ops.flush(stream.tty)},flush:function(stream){stream.tty.ops.flush(stream.tty)},read:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now()}return i}},default_tty_ops:{get_char:function(tty){if(!tty.input.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc?Buffer.alloc(BUFSIZE):new Buffer(BUFSIZE);var bytesRead=0;try{bytesRead=nodeFS.readSync(process.stdin.fd,buf,0,BUFSIZE,null)}catch(e){if(e.toString().indexOf("EOF")!=-1)bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){var alignedSize=alignMemory(size,16384);var ptr=_malloc(alignedSize);while(size<alignedSize)HEAP8[ptr+size++]=0;return ptr}var MEMFS={ops_table:null,mount:function(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode:function(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}if(!MEMFS.ops_table){MEMFS.ops_table={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}}}var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray:function(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage:function(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write:function(stream,buffer,offset,length,position,canOwn){if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position)}else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek:function(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate:function(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap:function(stream,address,length,position,prot,flags){if(address!==0){throw new FS.ErrnoError(28)}if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===buffer){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}HEAP8.set(contents,ptr)}return{ptr:ptr,allocated:allocated}},msync:function(stream,buffer,offset,length,mmapFlags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(mmapFlags&2){return 0}var bytesWritten=MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(path,opts){path=PATH_FS.resolve(FS.cwd(),path);opts=opts||{};if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};for(var key in defaults){if(opts[key]===undefined){opts[key]=defaults[key]}}if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.indexOf("r")!==-1&&!(node.mode&292)){return 2}else if(perms.indexOf("w")!==-1&&!(node.mode&146)){return 2}else if(perms.indexOf("x")!==-1&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.indexOf(current.mount)!==-1){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+="/"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev:function(path,mode,dev){if(typeof dev==="undefined"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink:function(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename:function(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!=="."){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,"w");if(errCode){throw new FS.ErrnoError(errCode)}}try{if(FS.trackingDelegate["willMovePath"]){FS.trackingDelegate["willMovePath"](old_path,new_path)}}catch(e){err("FS.trackingDelegate['willMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name)}catch(e){throw e}finally{FS.hashAddNode(old_node)}try{if(FS.trackingDelegate["onMovePath"])FS.trackingDelegate["onMovePath"](old_path,new_path)}catch(e){err("FS.trackingDelegate['onMovePath']('"+old_path+"', '"+new_path+"') threw an exception: "+e.message)}},rmdir:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readdir:function(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink:function(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}try{if(FS.trackingDelegate["willDeletePath"]){FS.trackingDelegate["willDeletePath"](path)}}catch(e){err("FS.trackingDelegate['willDeletePath']('"+path+"') threw an exception: "+e.message)}parent.node_ops.unlink(parent,name);FS.destroyNode(node);try{if(FS.trackingDelegate["onDeletePath"])FS.trackingDelegate["onDeletePath"](path)}catch(e){err("FS.trackingDelegate['onDeletePath']('"+path+"') threw an exception: "+e.message)}},readlink:function(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat:function(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat:function(path){return FS.stat(path,true)},chmod:function(path,mode,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod:function(path,mode){FS.chmod(path,mode,true)},fchmod:function(fd,mode){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chmod(stream.node,mode)},chown:function(path,uid,gid,dontFollow){var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown:function(path,uid,gid){FS.chown(path,uid,gid,true)},fchown:function(fd,uid,gid){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}FS.chown(stream.node,uid,gid)},truncate:function(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==="string"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,"w");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate:function(fd,len){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime:function(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open:function(path,flags,mode,fd_start,fd_end){if(path===""){throw new FS.ErrnoError(44)}flags=typeof flags==="string"?FS.modeStringToFlags(flags):flags;mode=typeof mode==="undefined"?438:mode;if(flags&64){mode=mode&4095|32768}else{mode=0}var node;if(typeof path==="object"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false},fd_start,fd_end);if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module["logReadFiles"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1;err("FS.trackingDelegate error on read file: "+path)}}try{if(FS.trackingDelegate["onOpenFile"]){var trackingFlags=0;if((flags&2097155)!==1){trackingFlags|=FS.tracking.openFlags.READ}if((flags&2097155)!==0){trackingFlags|=FS.tracking.openFlags.WRITE}FS.trackingDelegate["onOpenFile"](path,trackingFlags)}}catch(e){err("FS.trackingDelegate['onOpenFile']('"+path+"', flags) threw an exception: "+e.message)}return stream},close:function(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed:function(stream){return stream.fd===null},llseek:function(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read:function(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write:function(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=="undefined";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;try{if(stream.path&&FS.trackingDelegate["onWriteToFile"])FS.trackingDelegate["onWriteToFile"](stream.path)}catch(e){err("FS.trackingDelegate['onWriteToFile']('"+stream.path+"') threw an exception: "+e.message)}return bytesWritten},allocate:function(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap:function(stream,address,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,address,length,position,prot,flags)},msync:function(stream,buffer,offset,length,mmapFlags){if(!stream||!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},munmap:function(stream){return 0},ioctl:function(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile:function(path,opts){opts=opts||{};opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error('Invalid encoding type "'+opts.encoding+'"')}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile:function(path,data,opts){opts=opts||{};opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:function(){return FS.currentPath},chdir:function(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories:function(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices:function(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:function(){return 0},write:function(stream,buffer,offset,length,pos){return length}});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var random_device=getRandomDevice();FS.createDevice("/dev","random",random_device);FS.createDevice("/dev","urandom",random_device);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount:function(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup:function(parent,name){var fd=+name;var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return stream.path}}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams:function(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},ensureErrnoError:function(){if(FS.ErrnoError)return;FS.ErrnoError=function ErrnoError(errno,node){this.node=node;this.setErrno=function(errno){this.errno=errno};this.setErrno(errno);this.message="FS error"};FS.ErrnoError.prototype=new Error;FS.ErrnoError.prototype.constructor=FS.ErrnoError;[44].forEach(function(code){FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack="<generic error, no stack>"})},staticInit:function(){FS.ensureErrnoError();FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init:function(input,output,error){FS.init.initialized=true;FS.ensureErrnoError();Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit:function(){FS.init.initialized=false;var fflush=Module["_fflush"];if(fflush)fflush(0);for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}},getMode:function(canRead,canWrite){var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode},findObject:function(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(ret.exists){return ret.object}else{return null}},analyzePath:function(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path==="/"}catch(e){ret.error=e.errno}return ret},createPath:function(parent,path,canRead,canWrite){parent=typeof parent==="string"?parent:FS.getPath(parent);var parts=path.split("/").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile:function(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile:function(parent,name,data,canRead,canWrite,canOwn){var path=name?PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name):parent;var mode=FS.getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==="string"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}return node},createDevice:function(parent,name,input,output){var path=PATH.join2(typeof parent==="string"?parent:FS.getPath(parent),name);var mode=FS.getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open:function(stream){stream.seekable=false},close:function(stream){if(output&&output.buffer&&output.buffer.length){output(10)}},read:function(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write:function(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now()}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile:function(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=="undefined"){throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error("Cannot load without read() or XMLHttpRequest.")}},createLazyFile:function(parent,name,url,canRead,canWrite){function LazyUint8Array(){this.lengthKnown=false;this.chunks=[]}LazyUint8Array.prototype.get=function LazyUint8Array_get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size};node.stream_ops=stream_ops;return node},createPreloadedFile:function(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish){Browser.init();var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency("cp "+fullname);function processData(byteArray){function finish(byteArray){if(preFinish)preFinish();if(!dontCreateFile){FS.createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}if(onload)onload();removeRunDependency(dep)}var handled=false;Module["preloadPlugins"].forEach(function(plugin){if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,function(){if(onerror)onerror();removeRunDependency(dep)});handled=true}});if(!handled)finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){Browser.asyncLoad(url,function(byteArray){processData(byteArray)},onerror)}else{processData(url)}},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=function openRequest_onupgradeneeded(){out("creating db");var db=openRequest.result;db.createObjectStore(FS.DB_STORE_NAME)};openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;var transaction=db.transaction([FS.DB_STORE_NAME],"readwrite");var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var putRequest=files.put(FS.analyzePath(path).object.contents,path);putRequest.onsuccess=function putRequest_onsuccess(){ok++;if(ok+fail==total)finish()};putRequest.onerror=function putRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror},loadFilesFromDB:function(paths,onload,onerror){onload=onload||function(){};onerror=onerror||function(){};var indexedDB=FS.indexedDB();try{var openRequest=indexedDB.open(FS.DB_NAME(),FS.DB_VERSION)}catch(e){return onerror(e)}openRequest.onupgradeneeded=onerror;openRequest.onsuccess=function openRequest_onsuccess(){var db=openRequest.result;try{var transaction=db.transaction([FS.DB_STORE_NAME],"readonly")}catch(e){onerror(e);return}var files=transaction.objectStore(FS.DB_STORE_NAME);var ok=0,fail=0,total=paths.length;function finish(){if(fail==0)onload();else onerror()}paths.forEach(function(path){var getRequest=files.get(path);getRequest.onsuccess=function getRequest_onsuccess(){if(FS.analyzePath(path).exists){FS.unlink(path)}FS.createDataFile(PATH.dirname(path),PATH.basename(path),getRequest.result,true,true,true);ok++;if(ok+fail==total)finish()};getRequest.onerror=function getRequest_onerror(){fail++;if(ok+fail==total)finish()}});transaction.onerror=onerror};openRequest.onerror=onerror}};var SYSCALLS={mappings:{},DEFAULT_POLLMASK:5,umask:511,calculateAt:function(dirfd,path,allowEmpty){if(path[0]==="/"){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=FS.getStream(dirfd);if(!dirstream)throw new FS.ErrnoError(8);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat:function(func,path,buf){try{var stat=func(path)}catch(e){if(e&&e.node&&PATH.normalize(path)!==PATH.normalize(FS.getPath(e.node))){return-54}throw e}HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break}return ret},doWritev:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAP32[iov+i*8>>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_chdir(path){try{path=SYSCALLS.getStr(path);FS.chdir(path);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd);if(size<cwdLengthInBytes+1)return-68;stringToUTF8(cwd,buf,size);return buf}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence<y.precedence})},removeDeferredCalls:function(targetFunction){for(var i=0;i<JSEvents.deferredCalls.length;++i){if(JSEvents.deferredCalls[i].targetFunction==targetFunction){JSEvents.deferredCalls.splice(i,1);--i}}},canPerformEventHandlerRequests:function(){return JSEvents.inEventHandler&&JSEvents.currentEventHandler.allowsDeferredCalls},runDeferredCalls:function(){if(!JSEvents.canPerformEventHandlerRequests()){return}for(var i=0;i<JSEvents.deferredCalls.length;++i){var call=JSEvents.deferredCalls[i];JSEvents.deferredCalls.splice(i,1);--i;call.targetFunction.apply(null,call.argsList)}},eventHandlers:[],removeAllHandlersOnTarget:function(target,eventTypeString){for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==target&&(!eventTypeString||eventTypeString==JSEvents.eventHandlers[i].eventTypeString)){JSEvents._removeHandler(i--)}}},_removeHandler:function(i){var h=JSEvents.eventHandlers[i];h.target.removeEventListener(h.eventTypeString,h.eventListenerFunc,h.useCapture);JSEvents.eventHandlers.splice(i,1)},registerOrRemoveHandler:function(eventHandler){var jsEventHandler=function jsEventHandler(event){++JSEvents.inEventHandler;JSEvents.currentEventHandler=eventHandler;JSEvents.runDeferredCalls();eventHandler.handlerFunc(event);JSEvents.runDeferredCalls();--JSEvents.inEventHandler};if(eventHandler.callbackfunc){eventHandler.eventListenerFunc=jsEventHandler;eventHandler.target.addEventListener(eventHandler.eventTypeString,jsEventHandler,eventHandler.useCapture);JSEvents.eventHandlers.push(eventHandler);JSEvents.registerRemoveEventListeners()}else{for(var i=0;i<JSEvents.eventHandlers.length;++i){if(JSEvents.eventHandlers[i].target==eventHandler.target&&JSEvents.eventHandlers[i].eventTypeString==eventHandler.eventTypeString){JSEvents._removeHandler(i--)}}}},getNodeNameForTarget:function(target){if(!target)return"";if(target==window)return"#window";if(target==screen)return"#screen";return target&&target.nodeName?target.nodeName:""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function requestPointerLock(target){if(target.requestPointerLock){target.requestPointerLock()}else if(target.msRequestPointerLock){target.msRequestPointerLock()}else{if(document.body.requestPointerLock||document.body.msRequestPointerLock){return-3}else{return-1}}return 0}function _emscripten_exit_pointerlock(){JSEvents.removeDeferredCalls(requestPointerLock);if(document.exitPointerLock){document.exitPointerLock()}else if(document.msExitPointerLock){document.msExitPointerLock()}else{return-1}return 0}function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!=="undefined"?document:0,typeof window!=="undefined"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!=="undefined"?document.querySelector(target):undefined);return domElement}function getBoundingClientRect(e){return specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0}}function _emscripten_get_element_css_size(target,width,height){target=findEventTarget(target);if(!target)return-4;var rect=getBoundingClientRect(target);HEAPF64[width>>3]=rect.width;HEAPF64[height>>3]=rect.height;return 0}function fillGamepadEventData(eventStruct,e){HEAPF64[eventStruct>>3]=e.timestamp;for(var i=0;i<e.axes.length;++i){HEAPF64[eventStruct+i*8+16>>3]=e.axes[i]}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i].value}else{HEAPF64[eventStruct+i*8+528>>3]=e.buttons[i]}}for(var i=0;i<e.buttons.length;++i){if(typeof e.buttons[i]==="object"){HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i].pressed}else{HEAP32[eventStruct+i*4+1040>>2]=e.buttons[i]==1}}HEAP32[eventStruct+1296>>2]=e.connected;HEAP32[eventStruct+1300>>2]=e.index;HEAP32[eventStruct+8>>2]=e.axes.length;HEAP32[eventStruct+12>>2]=e.buttons.length;stringToUTF8(e.id,eventStruct+1304,64);stringToUTF8(e.mapping,eventStruct+1368,64)}function _emscripten_get_gamepad_status(index,gamepadState){if(index<0||index>=JSEvents.lastGamepadState.length)return-5;if(!JSEvents.lastGamepadState[index])return-7;fillGamepadEventData(gamepadState,JSEvents.lastGamepadState[index]);return 0}function _emscripten_get_num_gamepads(){return JSEvents.lastGamepadState.length}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension("ANGLE_instanced_arrays");if(ext){ctx["vertexAttribDivisor"]=function(index,divisor){ext["vertexAttribDivisorANGLE"](index,divisor)};ctx["drawArraysInstanced"]=function(mode,first,count,primcount){ext["drawArraysInstancedANGLE"](mode,first,count,primcount)};ctx["drawElementsInstanced"]=function(mode,count,type,indices,primcount){ext["drawElementsInstancedANGLE"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension("OES_vertex_array_object");if(ext){ctx["createVertexArray"]=function(){return ext["createVertexArrayOES"]()};ctx["deleteVertexArray"]=function(vao){ext["deleteVertexArrayOES"](vao)};ctx["bindVertexArray"]=function(vao){ext["bindVertexArrayOES"](vao)};ctx["isVertexArray"]=function(vao){return ext["isVertexArrayOES"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension("WEBGL_draw_buffers");if(ext){ctx["drawBuffers"]=function(n,bufs){ext["drawBuffersWEBGL"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i<ret;i++){table[i]=null}return ret},getSource:function(shader,count,string,length){var source="";for(var i=0;i<count;++i){var len=length?HEAP32[length+i*4>>2]:-1;source+=UTF8ToString(HEAP32[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext("webgl",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault==="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents==="object")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query");__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(ext.indexOf("lose_context")<0&&ext.indexOf("debug")<0){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i<numUniforms;++i){var u=GLctx.getActiveUniform(p,i);var name=u.name;ptable.maxUniformLength=Math.max(ptable.maxUniformLength,name.length+1);if(name.slice(-1)=="]"){name=name.slice(0,name.lastIndexOf("["))}var loc=GLctx.getUniformLocation(p,name);if(loc){var id=GL.getNewId(GL.uniforms);utable[name]=[u.size,id];GL.uniforms[id]=loc;for(var j=1;j<u.size;++j){var n=name+"["+j+"]";loc=GLctx.getUniformLocation(p,n);id=GL.getNewId(GL.uniforms);GL.uniforms[id]=loc}}}}};function _emscripten_glActiveTexture(x0){GLctx["activeTexture"](x0)}function _emscripten_glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glBeginQueryEXT(target,id){GLctx.disjointTimerQueryExt["beginQueryEXT"](target,GL.timerQueriesEXT[id])}function _emscripten_glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _emscripten_glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _emscripten_glBindFramebuffer(target,framebuffer){GLctx.bindFramebuffer(target,GL.framebuffers[framebuffer])}function _emscripten_glBindRenderbuffer(target,renderbuffer){GLctx.bindRenderbuffer(target,GL.renderbuffers[renderbuffer])}function _emscripten_glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _emscripten_glBindVertexArrayOES(vao){GLctx["bindVertexArray"](GL.vaos[vao])}function _emscripten_glBlendColor(x0,x1,x2,x3){GLctx["blendColor"](x0,x1,x2,x3)}function _emscripten_glBlendEquation(x0){GLctx["blendEquation"](x0)}function _emscripten_glBlendEquationSeparate(x0,x1){GLctx["blendEquationSeparate"](x0,x1)}function _emscripten_glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _emscripten_glBlendFuncSeparate(x0,x1,x2,x3){GLctx["blendFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _emscripten_glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _emscripten_glCheckFramebufferStatus(x0){return GLctx["checkFramebufferStatus"](x0)}function _emscripten_glClear(x0){GLctx["clear"](x0)}function _emscripten_glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _emscripten_glClearDepthf(x0){GLctx["clearDepth"](x0)}function _emscripten_glClearStencil(x0){GLctx["clearStencil"](x0)}function _emscripten_glColorMask(red,green,blue,alpha){GLctx.colorMask(!!red,!!green,!!blue,!!alpha)}function _emscripten_glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _emscripten_glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCompressedTexSubImage2D(target,level,xoffset,yoffset,width,height,format,imageSize,data){GLctx["compressedTexSubImage2D"](target,level,xoffset,yoffset,width,height,format,data?HEAPU8.subarray(data,data+imageSize):null)}function _emscripten_glCopyTexImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCopyTexSubImage2D(x0,x1,x2,x3,x4,x5,x6,x7){GLctx["copyTexSubImage2D"](x0,x1,x2,x3,x4,x5,x6,x7)}function _emscripten_glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _emscripten_glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _emscripten_glCullFace(x0){GLctx["cullFace"](x0)}function _emscripten_glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _emscripten_glDeleteFramebuffers(n,framebuffers){for(var i=0;i<n;++i){var id=HEAP32[framebuffers+i*4>>2];var framebuffer=GL.framebuffers[id];if(!framebuffer)continue;GLctx.deleteFramebuffer(framebuffer);framebuffer.name=0;GL.framebuffers[id]=null}}function _emscripten_glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _emscripten_glDeleteQueriesEXT(n,ids){for(var i=0;i<n;i++){var id=HEAP32[ids+i*4>>2];var query=GL.timerQueriesEXT[id];if(!query)continue;GLctx.disjointTimerQueryExt["deleteQueryEXT"](query);GL.timerQueriesEXT[id]=null}}function _emscripten_glDeleteRenderbuffers(n,renderbuffers){for(var i=0;i<n;i++){var id=HEAP32[renderbuffers+i*4>>2];var renderbuffer=GL.renderbuffers[id];if(!renderbuffer)continue;GLctx.deleteRenderbuffer(renderbuffer);renderbuffer.name=0;GL.renderbuffers[id]=null}}function _emscripten_glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _emscripten_glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _emscripten_glDeleteVertexArraysOES(n,vaos){for(var i=0;i<n;i++){var id=HEAP32[vaos+i*4>>2];GLctx["deleteVertexArray"](GL.vaos[id]);GL.vaos[id]=null}}function _emscripten_glDepthFunc(x0){GLctx["depthFunc"](x0)}function _emscripten_glDepthMask(flag){GLctx.depthMask(!!flag)}function _emscripten_glDepthRangef(x0,x1){GLctx["depthRange"](x0,x1)}function _emscripten_glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _emscripten_glDisable(x0){GLctx["disable"](x0)}function _emscripten_glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _emscripten_glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _emscripten_glDrawArraysInstancedANGLE(mode,first,count,primcount){GLctx["drawArraysInstanced"](mode,first,count,primcount)}var tempFixedLengthArray=[];function _emscripten_glDrawBuffersWEBGL(n,bufs){var bufArray=tempFixedLengthArray[n];for(var i=0;i<n;i++){bufArray[i]=HEAP32[bufs+i*4>>2]}GLctx["drawBuffers"](bufArray)}function _emscripten_glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _emscripten_glDrawElementsInstancedANGLE(mode,count,type,indices,primcount){GLctx["drawElementsInstanced"](mode,count,type,indices,primcount)}function _emscripten_glEnable(x0){GLctx["enable"](x0)}function _emscripten_glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _emscripten_glEndQueryEXT(target){GLctx.disjointTimerQueryExt["endQueryEXT"](target)}function _emscripten_glFinish(){GLctx["finish"]()}function _emscripten_glFlush(){GLctx["flush"]()}function _emscripten_glFramebufferRenderbuffer(target,attachment,renderbuffertarget,renderbuffer){GLctx.framebufferRenderbuffer(target,attachment,renderbuffertarget,GL.renderbuffers[renderbuffer])}function _emscripten_glFramebufferTexture2D(target,attachment,textarget,texture,level){GLctx.framebufferTexture2D(target,attachment,textarget,GL.textures[texture],level)}function _emscripten_glFrontFace(x0){GLctx["frontFace"](x0)}function __glGenObject(n,buffers,createFunction,objectTable){for(var i=0;i<n;i++){var buffer=GLctx[createFunction]();var id=buffer&&GL.getNewId(objectTable);if(buffer){buffer.name=id;objectTable[id]=buffer}else{GL.recordError(1282)}HEAP32[buffers+i*4>>2]=id}}function _emscripten_glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _emscripten_glGenFramebuffers(n,ids){__glGenObject(n,ids,"createFramebuffer",GL.framebuffers)}function _emscripten_glGenQueriesEXT(n,ids){for(var i=0;i<n;i++){var query=GLctx.disjointTimerQueryExt["createQueryEXT"]();if(!query){GL.recordError(1282);while(i<n)HEAP32[ids+i++*4>>2]=0;return}var id=GL.getNewId(GL.timerQueriesEXT);query.name=id;GL.timerQueriesEXT[id]=query;HEAP32[ids+i*4>>2]=id}}function _emscripten_glGenRenderbuffers(n,renderbuffers){__glGenObject(n,renderbuffers,"createRenderbuffer",GL.renderbuffers)}function _emscripten_glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _emscripten_glGenVertexArraysOES(n,arrays){__glGenObject(n,arrays,"createVertexArray",GL.vaos)}function _emscripten_glGenerateMipmap(x0){GLctx["generateMipmap"](x0)}function __glGetActiveAttribOrUniform(funcName,program,index,bufSize,length,size,type,name){program=GL.programs[program];var info=GLctx[funcName](program,index);if(info){var numBytesWrittenExclNull=name&&stringToUTF8(info.name,name,bufSize);if(length)HEAP32[length>>2]=numBytesWrittenExclNull;if(size)HEAP32[size>>2]=info.size;if(type)HEAP32[type>>2]=info.type}}function _emscripten_glGetActiveAttrib(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveAttrib",program,index,bufSize,length,size,type,name)}function _emscripten_glGetActiveUniform(program,index,bufSize,length,size,type,name){__glGetActiveAttribOrUniform("getActiveUniform",program,index,bufSize,length,size,type,name)}function _emscripten_glGetAttachedShaders(program,maxCount,count,shaders){var result=GLctx.getAttachedShaders(GL.programs[program]);var len=result.length;if(len>maxCount){len=maxCount}HEAP32[count>>2]=len;for(var i=0;i<len;++i){var id=GL.shaders.indexOf(result[i]);HEAP32[shaders+i*4>>2]=id}}function _emscripten_glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function writeI53ToI64(ptr,num){HEAPU32[ptr>>2]=num;HEAPU32[ptr+4>>2]=(num-HEAPU32[ptr>>2])/4294967296}function emscriptenWebGLGet(name_,p,type){if(!p){GL.recordError(1281);return}var ret=undefined;switch(name_){case 36346:ret=1;break;case 36344:if(type!=0&&type!=1){GL.recordError(1280)}return;case 36345:ret=0;break;case 34466:var formats=GLctx.getParameter(34467);ret=formats?formats.length:0;break}if(ret===undefined){var result=GLctx.getParameter(name_);switch(typeof result){case"number":ret=result;break;case"boolean":ret=result?1:0;break;case"string":GL.recordError(1280);return;case"object":if(result===null){switch(name_){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 34068:{ret=0;break}default:{GL.recordError(1280);return}}}else if(result instanceof Float32Array||result instanceof Uint32Array||result instanceof Int32Array||result instanceof Array){for(var i=0;i<result.length;++i){switch(type){case 0:HEAP32[p+i*4>>2]=result[i];break;case 2:HEAPF32[p+i*4>>2]=result[i];break;case 4:HEAP8[p+i>>0]=result[i]?1:0;break}}return}else{try{ret=result.name|0}catch(e){GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Unknown object returned from WebGL getParameter("+name_+")! (error: "+e+")");return}}break;default:GL.recordError(1280);err("GL_INVALID_ENUM in glGet"+type+"v: Native code calling glGet"+type+"v("+name_+") and it returns "+result+" of type "+typeof result+"!");return}}switch(type){case 1:writeI53ToI64(p,ret);break;case 0:HEAP32[p>>2]=ret;break;case 2:HEAPF32[p>>2]=ret;break;case 4:HEAP8[p>>0]=ret?1:0;break}}function _emscripten_glGetBooleanv(name_,p){emscriptenWebGLGet(name_,p,4)}function _emscripten_glGetBufferParameteriv(target,value,data){if(!data){GL.recordError(1281);return}HEAP32[data>>2]=GLctx.getBufferParameter(target,value)}function _emscripten_glGetError(){var error=GLctx.getError()||GL.lastError;GL.lastError=0;return error}function _emscripten_glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _emscripten_glGetFramebufferAttachmentParameteriv(target,attachment,pname,params){var result=GLctx.getFramebufferAttachmentParameter(target,attachment,pname);if(result instanceof WebGLRenderbuffer||result instanceof WebGLTexture){result=result.name|0}HEAP32[params>>2]=result}function _emscripten_glGetIntegerv(name_,p){emscriptenWebGLGet(name_,p,0)}function _emscripten_glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _emscripten_glGetQueryObjecti64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryObjectui64vEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}writeI53ToI64(params,ret)}function _emscripten_glGetQueryObjectuivEXT(id,pname,params){if(!params){GL.recordError(1281);return}var query=GL.timerQueriesEXT[id];var param=GLctx.disjointTimerQueryExt["getQueryObjectEXT"](query,pname);var ret;if(typeof param=="boolean"){ret=param?1:0}else{ret=param}HEAP32[params>>2]=ret}function _emscripten_glGetQueryivEXT(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.disjointTimerQueryExt["getQueryEXT"](target,pname)}function _emscripten_glGetRenderbufferParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getRenderbufferParameter(target,pname)}function _emscripten_glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderPrecisionFormat(shaderType,precisionType,range,precision){var result=GLctx.getShaderPrecisionFormat(shaderType,precisionType);HEAP32[range>>2]=result.rangeMin;HEAP32[range+4>>2]=result.rangeMax;HEAP32[precision>>2]=result.precision}function _emscripten_glGetShaderSource(shader,bufSize,length,source){var result=GLctx.getShaderSource(GL.shaders[shader]);if(!result)return;var numBytesWrittenExclNull=bufSize>0&&source?stringToUTF8(result,source,bufSize):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _emscripten_glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _emscripten_glGetTexParameterfv(target,pname,params){if(!params){GL.recordError(1281);return}HEAPF32[params>>2]=GLctx.getTexParameter(target,pname)}function _emscripten_glGetTexParameteriv(target,pname,params){if(!params){GL.recordError(1281);return}HEAP32[params>>2]=GLctx.getTexParameter(target,pname)}function jstoi_q(str){return parseInt(str)}function _emscripten_glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function emscriptenWebGLGetUniform(program,location,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getUniform(GL.programs[program],GL.uniforms[location]);if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break}}}}function _emscripten_glGetUniformfv(program,location,params){emscriptenWebGLGetUniform(program,location,params,2)}function _emscripten_glGetUniformiv(program,location,params){emscriptenWebGLGetUniform(program,location,params,0)}function _emscripten_glGetVertexAttribPointerv(index,pname,pointer){if(!pointer){GL.recordError(1281);return}HEAP32[pointer>>2]=GLctx.getVertexAttribOffset(index,pname)}function emscriptenWebGLGetVertexAttrib(index,pname,params,type){if(!params){GL.recordError(1281);return}var data=GLctx.getVertexAttrib(index,pname);if(pname==34975){HEAP32[params>>2]=data&&data["name"]}else if(typeof data=="number"||typeof data=="boolean"){switch(type){case 0:HEAP32[params>>2]=data;break;case 2:HEAPF32[params>>2]=data;break;case 5:HEAP32[params>>2]=Math.fround(data);break}}else{for(var i=0;i<data.length;i++){switch(type){case 0:HEAP32[params+i*4>>2]=data[i];break;case 2:HEAPF32[params+i*4>>2]=data[i];break;case 5:HEAP32[params+i*4>>2]=Math.fround(data[i]);break}}}}function _emscripten_glGetVertexAttribfv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,2)}function _emscripten_glGetVertexAttribiv(index,pname,params){emscriptenWebGLGetVertexAttrib(index,pname,params,5)}function _emscripten_glHint(x0,x1){GLctx["hint"](x0,x1)}function _emscripten_glIsBuffer(buffer){var b=GL.buffers[buffer];if(!b)return 0;return GLctx.isBuffer(b)}function _emscripten_glIsEnabled(x0){return GLctx["isEnabled"](x0)}function _emscripten_glIsFramebuffer(framebuffer){var fb=GL.framebuffers[framebuffer];if(!fb)return 0;return GLctx.isFramebuffer(fb)}function _emscripten_glIsProgram(program){program=GL.programs[program];if(!program)return 0;return GLctx.isProgram(program)}function _emscripten_glIsQueryEXT(id){var query=GL.timerQueriesEXT[id];if(!query)return 0;return GLctx.disjointTimerQueryExt["isQueryEXT"](query)}function _emscripten_glIsRenderbuffer(renderbuffer){var rb=GL.renderbuffers[renderbuffer];if(!rb)return 0;return GLctx.isRenderbuffer(rb)}function _emscripten_glIsShader(shader){var s=GL.shaders[shader];if(!s)return 0;return GLctx.isShader(s)}function _emscripten_glIsTexture(id){var texture=GL.textures[id];if(!texture)return 0;return GLctx.isTexture(texture)}function _emscripten_glIsVertexArrayOES(array){var vao=GL.vaos[array];if(!vao)return 0;return GLctx["isVertexArray"](vao)}function _emscripten_glLineWidth(x0){GLctx["lineWidth"](x0)}function _emscripten_glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _emscripten_glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _emscripten_glPolygonOffset(x0,x1){GLctx["polygonOffset"](x0,x1)}function _emscripten_glQueryCounterEXT(id,target){GLctx.disjointTimerQueryExt["queryCounterEXT"](GL.timerQueriesEXT[id],target)}function computeUnpackAlignedImageSize(width,height,sizePerPixel,alignment){function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize}function __colorChannelsInGlTextureFormat(format){var colorChannels={5:3,6:4,8:2,29502:3,29504:4};return colorChannels[format-6402]||1}function heapObjectForWebGLType(type){type-=5120;if(type==1)return HEAPU8;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922)return HEAPU32;return HEAPU16}function heapAccessShiftForWebGLHeap(heap){return 31-Math.clz32(heap.BYTES_PER_ELEMENT)}function emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat){var heap=heapObjectForWebGLType(type);var shift=heapAccessShiftForWebGLHeap(heap);var byteSize=1<<shift;var sizePerPixel=__colorChannelsInGlTextureFormat(format)*byteSize;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(pixels>>shift,pixels+bytes>>shift)}function _emscripten_glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _emscripten_glReleaseShaderCompiler(){}function _emscripten_glRenderbufferStorage(x0,x1,x2,x3){GLctx["renderbufferStorage"](x0,x1,x2,x3)}function _emscripten_glSampleCoverage(value,invert){GLctx.sampleCoverage(value,!!invert)}function _emscripten_glScissor(x0,x1,x2,x3){GLctx["scissor"](x0,x1,x2,x3)}function _emscripten_glShaderBinary(){GL.recordError(1280)}function _emscripten_glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _emscripten_glStencilFunc(x0,x1,x2){GLctx["stencilFunc"](x0,x1,x2)}function _emscripten_glStencilFuncSeparate(x0,x1,x2,x3){GLctx["stencilFuncSeparate"](x0,x1,x2,x3)}function _emscripten_glStencilMask(x0){GLctx["stencilMask"](x0)}function _emscripten_glStencilMaskSeparate(x0,x1){GLctx["stencilMaskSeparate"](x0,x1)}function _emscripten_glStencilOp(x0,x1,x2){GLctx["stencilOp"](x0,x1,x2)}function _emscripten_glStencilOpSeparate(x0,x1,x2,x3){GLctx["stencilOpSeparate"](x0,x1,x2,x3)}function _emscripten_glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _emscripten_glTexParameterf(x0,x1,x2){GLctx["texParameterf"](x0,x1,x2)}function _emscripten_glTexParameterfv(target,pname,params){var param=HEAPF32[params>>2];GLctx.texParameterf(target,pname,param)}function _emscripten_glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _emscripten_glTexParameteriv(target,pname,params){var param=HEAP32[params>>2];GLctx.texParameteri(target,pname,param)}function _emscripten_glTexSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixels){var pixelData=null;if(pixels)pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,0);GLctx.texSubImage2D(target,level,xoffset,yoffset,width,height,format,type,pixelData)}function _emscripten_glUniform1f(location,v0){GLctx.uniform1f(GL.uniforms[location],v0)}var miniTempWebGLFloatBuffers=[];function _emscripten_glUniform1fv(location,count,value){if(count<=288){var view=miniTempWebGLFloatBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAPF32[value+4*i>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1fv(GL.uniforms[location],view)}function _emscripten_glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}var __miniTempWebGLIntBuffers=[];function _emscripten_glUniform1iv(location,count,value){if(count<=288){var view=__miniTempWebGLIntBuffers[count-1];for(var i=0;i<count;++i){view[i]=HEAP32[value+4*i>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*4>>2)}GLctx.uniform1iv(GL.uniforms[location],view)}function _emscripten_glUniform2f(location,v0,v1){GLctx.uniform2f(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2fv(location,count,value){if(count<=144){var view=miniTempWebGLFloatBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2fv(GL.uniforms[location],view)}function _emscripten_glUniform2i(location,v0,v1){GLctx.uniform2i(GL.uniforms[location],v0,v1)}function _emscripten_glUniform2iv(location,count,value){if(count<=144){var view=__miniTempWebGLIntBuffers[2*count-1];for(var i=0;i<2*count;i+=2){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*8>>2)}GLctx.uniform2iv(GL.uniforms[location],view)}function _emscripten_glUniform3f(location,v0,v1,v2){GLctx.uniform3f(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3fv(location,count,value){if(count<=96){var view=miniTempWebGLFloatBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3fv(GL.uniforms[location],view)}function _emscripten_glUniform3i(location,v0,v1,v2){GLctx.uniform3i(GL.uniforms[location],v0,v1,v2)}function _emscripten_glUniform3iv(location,count,value){if(count<=96){var view=__miniTempWebGLIntBuffers[3*count-1];for(var i=0;i<3*count;i+=3){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*12>>2)}GLctx.uniform3iv(GL.uniforms[location],view)}function _emscripten_glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4fv(location,count,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<4*count;i+=4){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4fv(GL.uniforms[location],view)}function _emscripten_glUniform4i(location,v0,v1,v2,v3){GLctx.uniform4i(GL.uniforms[location],v0,v1,v2,v3)}function _emscripten_glUniform4iv(location,count,value){if(count<=72){var view=__miniTempWebGLIntBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAP32[value+4*i>>2];view[i+1]=HEAP32[value+(4*i+4)>>2];view[i+2]=HEAP32[value+(4*i+8)>>2];view[i+3]=HEAP32[value+(4*i+12)>>2]}}else{var view=HEAP32.subarray(value>>2,value+count*16>>2)}GLctx.uniform4iv(GL.uniforms[location],view)}function _emscripten_glUniformMatrix2fv(location,count,transpose,value){if(count<=72){var view=miniTempWebGLFloatBuffers[4*count-1];for(var i=0;i<4*count;i+=4){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*16>>2)}GLctx.uniformMatrix2fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix3fv(location,count,transpose,value){if(count<=32){var view=miniTempWebGLFloatBuffers[9*count-1];for(var i=0;i<9*count;i+=9){view[i]=HEAPF32[value+4*i>>2];view[i+1]=HEAPF32[value+(4*i+4)>>2];view[i+2]=HEAPF32[value+(4*i+8)>>2];view[i+3]=HEAPF32[value+(4*i+12)>>2];view[i+4]=HEAPF32[value+(4*i+16)>>2];view[i+5]=HEAPF32[value+(4*i+20)>>2];view[i+6]=HEAPF32[value+(4*i+24)>>2];view[i+7]=HEAPF32[value+(4*i+28)>>2];view[i+8]=HEAPF32[value+(4*i+32)>>2]}}else{var view=HEAPF32.subarray(value>>2,value+count*36>>2)}GLctx.uniformMatrix3fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _emscripten_glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _emscripten_glValidateProgram(program){GLctx.validateProgram(GL.programs[program])}function _emscripten_glVertexAttrib1f(x0,x1){GLctx["vertexAttrib1f"](x0,x1)}function _emscripten_glVertexAttrib1fv(index,v){GLctx.vertexAttrib1f(index,HEAPF32[v>>2])}function _emscripten_glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _emscripten_glVertexAttrib2fv(index,v){GLctx.vertexAttrib2f(index,HEAPF32[v>>2],HEAPF32[v+4>>2])}function _emscripten_glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _emscripten_glVertexAttrib3fv(index,v){GLctx.vertexAttrib3f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2])}function _emscripten_glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _emscripten_glVertexAttrib4fv(index,v){GLctx.vertexAttrib4f(index,HEAPF32[v>>2],HEAPF32[v+4>>2],HEAPF32[v+8>>2],HEAPF32[v+12>>2])}function _emscripten_glVertexAttribDivisorANGLE(index,divisor){GLctx["vertexAttribDivisor"](index,divisor)}function _emscripten_glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _emscripten_glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){abortOnCannotGrowMemory(requestedSize)}function _emscripten_run_script(ptr){eval(UTF8ToString(ptr))}function _emscripten_sample_gamepad_data(){return(JSEvents.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():null)?0:-1}function fillMouseEventData(eventStruct,e,target){var idx=eventStruct>>2;HEAP32[idx+0]=e.screenX;HEAP32[idx+1]=e.screenY;HEAP32[idx+2]=e.clientX;HEAP32[idx+3]=e.clientY;HEAP32[idx+4]=e.ctrlKey;HEAP32[idx+5]=e.shiftKey;HEAP32[idx+6]=e.altKey;HEAP32[idx+7]=e.metaKey;HEAP16[idx*2+16]=e.button;HEAP16[idx*2+17]=e.buttons;HEAP32[idx+9]=e["movementX"];HEAP32[idx+10]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+11]=e.clientX-rect.left;HEAP32[idx+12]=e.clientY-rect.top}function registerMouseEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(64);target=findEventTarget(target);var mouseEventHandlerFunc=function(ev){var e=ev||event;fillMouseEventData(JSEvents.mouseEvent,e,target);if(wasmTable.get(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_click_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerMouseEventCallback(target,userData,useCapture,callbackfunc,4,"click",targetThread);return 0}function fillFullscreenChangeEventData(eventStruct){var fullscreenElement=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement;var isFullscreen=!!fullscreenElement;HEAP32[eventStruct>>2]=isFullscreen;HEAP32[eventStruct+4>>2]=JSEvents.fullscreenEnabled();var reportedElement=isFullscreen?fullscreenElement:JSEvents.previousFullscreenElement;var nodeName=JSEvents.getNodeNameForTarget(reportedElement);var id=reportedElement&&reportedElement.id?reportedElement.id:"";stringToUTF8(nodeName,eventStruct+8,128);stringToUTF8(id,eventStruct+136,128);HEAP32[eventStruct+264>>2]=reportedElement?reportedElement.clientWidth:0;HEAP32[eventStruct+268>>2]=reportedElement?reportedElement.clientHeight:0;HEAP32[eventStruct+272>>2]=screen.width;HEAP32[eventStruct+276>>2]=screen.height;if(isFullscreen){JSEvents.previousFullscreenElement=fullscreenElement}}function registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.fullscreenChangeEvent)JSEvents.fullscreenChangeEvent=_malloc(280);var fullscreenChangeEventhandlerFunc=function(ev){var e=ev||event;var fullscreenChangeEvent=JSEvents.fullscreenChangeEvent;fillFullscreenChangeEventData(fullscreenChangeEvent);if(wasmTable.get(callbackfunc)(eventTypeId,fullscreenChangeEvent,userData))e.preventDefault()};var eventHandler={target:target,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:fullscreenChangeEventhandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_fullscreenchange_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){if(!JSEvents.fullscreenEnabled())return-1;target=findEventTarget(target);if(!target)return-4;registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"fullscreenchange",targetThread);registerFullscreenChangeEventCallback(target,userData,useCapture,callbackfunc,19,"webkitfullscreenchange",targetThread);return 0}function registerGamepadEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.gamepadEvent)JSEvents.gamepadEvent=_malloc(1432);var gamepadEventHandlerFunc=function(ev){var e=ev||event;var gamepadEvent=JSEvents.gamepadEvent;fillGamepadEventData(gamepadEvent,e["gamepad"]);if(wasmTable.get(callbackfunc)(eventTypeId,gamepadEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:gamepadEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_gamepadconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,26,"gamepadconnected",targetThread);return 0}function _emscripten_set_gamepaddisconnected_callback_on_thread(userData,useCapture,callbackfunc,targetThread){if(!navigator.getGamepads&&!navigator.webkitGetGamepads)return-1;registerGamepadEventCallback(2,userData,useCapture,callbackfunc,27,"gamepaddisconnected",targetThread);return 0}function registerKeyEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(164);var keyEventHandlerFunc=function(e){var keyEventData=JSEvents.keyEvent;var idx=keyEventData>>2;HEAP32[idx+0]=e.location;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;HEAP32[idx+5]=e.repeat;HEAP32[idx+6]=e.charCode;HEAP32[idx+7]=e.keyCode;HEAP32[idx+8]=e.which;stringToUTF8(e.key||"",keyEventData+36,32);stringToUTF8(e.code||"",keyEventData+68,32);stringToUTF8(e.char||"",keyEventData+100,32);stringToUTF8(e.locale||"",keyEventData+132,32);if(wasmTable.get(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread);return 0}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus:function(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining<expected){Module["setStatus"](message+" ("+(expected-remaining)+"/"+expected+")")}else{Module["setStatus"](message)}}else{Module["setStatus"]("")}}},runIter:function(func){if(ABORT)return;if(Module["preMainLoop"]){var preRet=Module["preMainLoop"]();if(preRet===false){return}}try{func()}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){return}else{if(e&&typeof e==="object"&&e.stack)err("exception thrown: "+[e,e.stack]);throw e}}if(Module["postMainLoop"])Module["postMainLoop"]()}},isFullscreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(!Module["preloadPlugins"])Module["preloadPlugins"]=[];if(Browser.initted)return;Browser.initted=true;try{new Blob;Browser.hasBlobConstructor=true}catch(e){Browser.hasBlobConstructor=false;console.log("warning: no blob constructor, cannot create blobs with mimetypes")}Browser.BlobBuilder=typeof MozBlobBuilder!="undefined"?MozBlobBuilder:typeof WebKitBlobBuilder!="undefined"?WebKitBlobBuilder:!Browser.hasBlobConstructor?console.log("warning: no BlobBuilder"):null;Browser.URLObject=typeof window!="undefined"?window.URL?window.URL:window.webkitURL:undefined;if(!Module.noImageDecoding&&typeof Browser.URLObject==="undefined"){console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");Module.noImageDecoding=true}var imagePlugin={};imagePlugin["canHandle"]=function imagePlugin_canHandle(name){return!Module.noImageDecoding&&/\.(jpg|jpeg|png|bmp)$/i.test(name)};imagePlugin["handle"]=function imagePlugin_handle(byteArray,name,onload,onerror){var b=null;if(Browser.hasBlobConstructor){try{b=new Blob([byteArray],{type:Browser.getMimetype(name)});if(b.size!==byteArray.length){b=new Blob([new Uint8Array(byteArray).buffer],{type:Browser.getMimetype(name)})}}catch(e){warnOnce("Blob constructor present but fails: "+e+"; falling back to blob builder")}}if(!b){var bb=new Browser.BlobBuilder;bb.append(new Uint8Array(byteArray).buffer);b=bb.getBlob()}var url=Browser.URLObject.createObjectURL(b);var img=new Image;img.onload=function img_onload(){assert(img.complete,"Image "+name+" could not be decoded");var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);Module["preloadedImages"][name]=canvas;Browser.URLObject.revokeObjectURL(url);if(onload)onload(byteArray)};img.onerror=function img_onerror(event){console.log("Image "+url+" could not be decoded");if(onerror)onerror()};img.src=url};Module["preloadPlugins"].push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;Module["preloadedAudios"][name]=audio;if(onload)onload(byteArray)}function fail(){if(done)return;done=true;Module["preloadedAudios"][name]=new Audio;if(onerror)onerror()}if(Browser.hasBlobConstructor){try{var b=new Blob([byteArray],{type:Browser.getMimetype(name)})}catch(e){return fail()}var url=Browser.URLObject.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",function(){finish(audio)},false);audio.onerror=function audio_onerror(event){if(done)return;console.log("warning: browser could not fully decode audio "+name+", trying slower base64 approach");function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i<data.length;i++){leftchar=leftchar<<8|data[i];leftbits+=8;while(leftbits>=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;Browser.safeSetTimeout(function(){finish(audio)},1e4)}else{return fail()}};Module["preloadPlugins"].push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||function(){};canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||function(){};canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",function(ev){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext:function(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:1};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!=="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){if(!useWebGL)assert(typeof GLctx==="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});Browser.init()}return ctx},destroyContext:function(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen:function(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer==="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas==="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}if(Module["onFullScreen"])Module["onFullScreen"](Browser.isFullscreen);if(Module["onFullscreen"])Module["onFullscreen"](Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?function(){canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null)||(canvasContainer["webkitRequestFullScreen"]?function(){canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"])}:null);canvasContainer.requestFullscreen()},exitFullscreen:function(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||function(){};CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame:function(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame:function(func){if(typeof requestAnimationFrame==="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeRequestAnimationFrame:function(func){return Browser.requestAnimationFrame(function(){if(ABORT)return;func()})},safeSetTimeout:function(func,timeout){noExitRuntime=true;return setTimeout(function(){if(ABORT)return;func()},timeout)},getMimetype:function(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia:function(func){if(!window.getUserMedia){window.getUserMedia=navigator["getUserMedia"]||navigator["mozGetUserMedia"]}window.getUserMedia(func)},getMovementX:function(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY:function(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta:function(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!=="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!=="undefined"?window.scrollY:window.pageYOffset;if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var adjustedX=touch.pageX-(scrollX+rect.left);var adjustedY=touch.pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);var coords={x:adjustedX,y:adjustedY};if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];if(!last)last=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}var x=event.pageX-(scrollX+rect.left);var y=event.pageY-(scrollY+rect.top);x=x*(cw/rect.width);y=y*(ch/rect.height);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y}},asyncLoad:function(url,onload,onerror,noRunDep){var dep=!noRunDep?getUniqueRunDependency("al "+url):"";readAsync(url,function(arrayBuffer){assert(arrayBuffer,'Loading data file "'+url+'" failed (no arrayBuffer).');onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},function(event){if(onerror){onerror()}else{throw'Loading data file "'+url+'" failed.'}});if(dep)addRunDependency(dep)},resizeListeners:[],updateResizeListeners:function(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(function(listener){listener(canvas.width,canvas.height)})},setCanvasSize:function(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags|8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>2];flags=flags&~8388608;HEAP32[SDL.screen>>2]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions:function(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h<Module["forcedAspectRatio"]){w=Math.round(h*Module["forcedAspectRatio"])}else{h=Math.round(w/Module["forcedAspectRatio"])}}if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvas.parentNode&&typeof screen!="undefined"){var factor=Math.min(screen.width/w,screen.height/h);w=Math.round(w*factor);h=Math.round(h*factor)}if(Browser.resizeCanvas){if(canvas.width!=w)canvas.width=w;if(canvas.height!=h)canvas.height=h;if(typeof canvas.style!="undefined"){canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}else{if(canvas.width!=wNative)canvas.width=wNative;if(canvas.height!=hNative)canvas.height=hNative;if(typeof canvas.style!="undefined"){if(w!=wNative||h!=hNative){canvas.style.setProperty("width",w+"px","important");canvas.style.setProperty("height",h+"px","important")}else{canvas.style.removeProperty("width");canvas.style.removeProperty("height")}}}},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var handle=Browser.nextWgetRequestHandle;Browser.nextWgetRequestHandle++;return handle}};function _emscripten_set_main_loop_timing(mode,value){Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof setImmediate==="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=function(event){if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else _emscripten_get_now=function(){return performance.now()};function setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming){noExitRuntime=true;assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;Browser.mainLoop.runner=function Browser_mainLoop_runner(){if(ABORT)return;if(Browser.mainLoop.queue.length>0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}console.log('main loop blocker "'+blocker.name+'" took '+(Date.now()-start)+" ms");Browser.mainLoop.updateStatus();if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(thisMainLoopId<Browser.mainLoop.currentlyRunningMainloop)return;if(typeof SDL==="object"&&SDL.audio&&SDL.audio.queueNewAudioData)SDL.audio.queueNewAudioData();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0)_emscripten_set_main_loop_timing(0,1e3/fps);else _emscripten_set_main_loop_timing(1,1);Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){var browserIterationFunc=wasmTable.get(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}function registerTouchEventCallback(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread){if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1684);target=findEventTarget(target);var touchEventHandlerFunc=function(e){var touches={};var et=e.touches;for(var i=0;i<et.length;++i){var touch=et[i];touches[touch.identifier]=touch}et=e.changedTouches;for(var i=0;i<et.length;++i){var touch=et[i];touch.isChanged=1;touches[touch.identifier]=touch}et=e.targetTouches;for(var i=0;i<et.length;++i){touches[et[i].identifier].onTarget=1}var touchEvent=JSEvents.touchEvent;var idx=touchEvent>>2;HEAP32[idx+1]=e.ctrlKey;HEAP32[idx+2]=e.shiftKey;HEAP32[idx+3]=e.altKey;HEAP32[idx+4]=e.metaKey;idx+=5;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){var t=touches[i];HEAP32[idx+0]=t.identifier;HEAP32[idx+1]=t.screenX;HEAP32[idx+2]=t.screenY;HEAP32[idx+3]=t.clientX;HEAP32[idx+4]=t.clientY;HEAP32[idx+5]=t.pageX;HEAP32[idx+6]=t.pageY;HEAP32[idx+7]=t.isChanged;HEAP32[idx+8]=t.onTarget;HEAP32[idx+9]=t.clientX-targetRect.left;HEAP32[idx+10]=t.clientY-targetRect.top;idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent>>2]=numTouches;if(wasmTable.get(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};JSEvents.registerOrRemoveHandler(eventHandler)}function _emscripten_set_touchcancel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,25,"touchcancel",targetThread);return 0}function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread);return 0}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread);return 0}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread);return 0}function _emscripten_thread_sleep(msecs){var start=_emscripten_get_now();while(_emscripten_get_now()-start<msecs){}}function _exit(status){exit(status)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _glActiveTexture(x0){GLctx["activeTexture"](x0)}function _glAttachShader(program,shader){GLctx.attachShader(GL.programs[program],GL.shaders[shader])}function _glBindAttribLocation(program,index,name){GLctx.bindAttribLocation(GL.programs[program],index,UTF8ToString(name))}function _glBindBuffer(target,buffer){GLctx.bindBuffer(target,GL.buffers[buffer])}function _glBindTexture(target,texture){GLctx.bindTexture(target,GL.textures[texture])}function _glBlendFunc(x0,x1){GLctx["blendFunc"](x0,x1)}function _glBufferData(target,size,data,usage){GLctx.bufferData(target,data?HEAPU8.subarray(data,data+size):size,usage)}function _glBufferSubData(target,offset,size,data){GLctx.bufferSubData(target,offset,HEAPU8.subarray(data,data+size))}function _glClear(x0){GLctx["clear"](x0)}function _glClearColor(x0,x1,x2,x3){GLctx["clearColor"](x0,x1,x2,x3)}function _glClearDepthf(x0){GLctx["clearDepth"](x0)}function _glCompileShader(shader){GLctx.compileShader(GL.shaders[shader])}function _glCompressedTexImage2D(target,level,internalFormat,width,height,border,imageSize,data){GLctx["compressedTexImage2D"](target,level,internalFormat,width,height,border,data?HEAPU8.subarray(data,data+imageSize):null)}function _glCreateProgram(){var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;GL.programs[id]=program;return id}function _glCreateShader(shaderType){var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id}function _glCullFace(x0){GLctx["cullFace"](x0)}function _glDeleteBuffers(n,buffers){for(var i=0;i<n;i++){var id=HEAP32[buffers+i*4>>2];var buffer=GL.buffers[id];if(!buffer)continue;GLctx.deleteBuffer(buffer);buffer.name=0;GL.buffers[id]=null}}function _glDeleteProgram(id){if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null;GL.programInfos[id]=null}function _glDeleteShader(id){if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null}function _glDeleteTextures(n,textures){for(var i=0;i<n;i++){var id=HEAP32[textures+i*4>>2];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}function _glDepthFunc(x0){GLctx["depthFunc"](x0)}function _glDetachShader(program,shader){GLctx.detachShader(GL.programs[program],GL.shaders[shader])}function _glDisable(x0){GLctx["disable"](x0)}function _glDisableVertexAttribArray(index){GLctx.disableVertexAttribArray(index)}function _glDrawArrays(mode,first,count){GLctx.drawArrays(mode,first,count)}function _glDrawElements(mode,count,type,indices){GLctx.drawElements(mode,count,type,indices)}function _glEnable(x0){GLctx["enable"](x0)}function _glEnableVertexAttribArray(index){GLctx.enableVertexAttribArray(index)}function _glFrontFace(x0){GLctx["frontFace"](x0)}function _glGenBuffers(n,buffers){__glGenObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){__glGenObject(n,textures,"createTexture",GL.textures)}function _glGetAttribLocation(program,name){return GLctx.getAttribLocation(GL.programs[program],UTF8ToString(name))}function _glGetFloatv(name_,p){emscriptenWebGLGet(name_,p,2)}function _glGetProgramInfoLog(program,maxLength,length,infoLog){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetProgramiv(program,pname,p){if(!p){GL.recordError(1281);return}if(program>=GL.counter){GL.recordError(1281);return}var ptable=GL.programInfos[program];if(!ptable){GL.recordError(1282);return}if(pname==35716){var log=GLctx.getProgramInfoLog(GL.programs[program]);if(log===null)log="(unknown error)";HEAP32[p>>2]=log.length+1}else if(pname==35719){HEAP32[p>>2]=ptable.maxUniformLength}else if(pname==35722){if(ptable.maxAttributeLength==-1){program=GL.programs[program];var numAttribs=GLctx.getProgramParameter(program,35721);ptable.maxAttributeLength=0;for(var i=0;i<numAttribs;++i){var activeAttrib=GLctx.getActiveAttrib(program,i);ptable.maxAttributeLength=Math.max(ptable.maxAttributeLength,activeAttrib.name.length+1)}}HEAP32[p>>2]=ptable.maxAttributeLength}else if(pname==35381){if(ptable.maxUniformBlockNameLength==-1){program=GL.programs[program];var numBlocks=GLctx.getProgramParameter(program,35382);ptable.maxUniformBlockNameLength=0;for(var i=0;i<numBlocks;++i){var activeBlockName=GLctx.getActiveUniformBlockName(program,i);ptable.maxUniformBlockNameLength=Math.max(ptable.maxUniformBlockNameLength,activeBlockName.length+1)}}HEAP32[p>>2]=ptable.maxUniformBlockNameLength}else{HEAP32[p>>2]=GLctx.getProgramParameter(GL.programs[program],pname)}}function _glGetShaderInfoLog(shader,maxLength,length,infoLog){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>2]=numBytesWrittenExclNull}function _glGetShaderiv(shader,pname,p){if(!p){GL.recordError(1281);return}if(pname==35716){var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var logLength=log?log.length+1:0;HEAP32[p>>2]=logLength}else if(pname==35720){var source=GLctx.getShaderSource(GL.shaders[shader]);var sourceLength=source?source.length+1:0;HEAP32[p>>2]=sourceLength}else{HEAP32[p>>2]=GLctx.getShaderParameter(GL.shaders[shader],pname)}}function _glGetString(name_){if(GL.stringCache[name_])return GL.stringCache[name_];var ret;switch(name_){case 7939:var exts=GLctx.getSupportedExtensions()||[];exts=exts.concat(exts.map(function(e){return"GL_"+e}));ret=stringToNewUTF8(exts.join(" "));break;case 7936:case 7937:case 37445:case 37446:var s=GLctx.getParameter(name_);if(!s){GL.recordError(1280)}ret=stringToNewUTF8(s);break;case 7938:var glVersion=GLctx.getParameter(7938);{glVersion="OpenGL ES 2.0 ("+glVersion+")"}ret=stringToNewUTF8(glVersion);break;case 35724:var glslVersion=GLctx.getParameter(35724);var ver_re=/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/;var ver_num=glslVersion.match(ver_re);if(ver_num!==null){if(ver_num[1].length==3)ver_num[1]=ver_num[1]+"0";glslVersion="OpenGL ES GLSL ES "+ver_num[1]+" ("+glslVersion+")"}ret=stringToNewUTF8(glslVersion);break;default:GL.recordError(1280);return 0}GL.stringCache[name_]=ret;return ret}function _glGetUniformLocation(program,name){name=UTF8ToString(name);var arrayIndex=0;if(name[name.length-1]=="]"){var leftBrace=name.lastIndexOf("[");arrayIndex=name[leftBrace+1]!="]"?jstoi_q(name.slice(leftBrace+1)):0;name=name.slice(0,leftBrace)}var uniformInfo=GL.programInfos[program]&&GL.programInfos[program].uniforms[name];if(uniformInfo&&arrayIndex>=0&&arrayIndex<uniformInfo[0]){return uniformInfo[1]+arrayIndex}else{return-1}}function _glLinkProgram(program){GLctx.linkProgram(GL.programs[program]);GL.populateUniformTable(program)}function _glPixelStorei(pname,param){if(pname==3317){GL.unpackAlignment=param}GLctx.pixelStorei(pname,param)}function _glReadPixels(x,y,width,height,format,type,pixels){var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}function _glTexParameteri(x0,x1,x2){GLctx["texParameteri"](x0,x1,x2)}function _glUniform1i(location,v0){GLctx.uniform1i(GL.uniforms[location],v0)}function _glUniform4f(location,v0,v1,v2,v3){GLctx.uniform4f(GL.uniforms[location],v0,v1,v2,v3)}function _glUniformMatrix4fv(location,count,transpose,value){if(count<=18){var view=miniTempWebGLFloatBuffers[16*count-1];var heap=HEAPF32;value>>=2;for(var i=0;i<16*count;i+=16){var dst=value+i;view[i]=heap[dst];view[i+1]=heap[dst+1];view[i+2]=heap[dst+2];view[i+3]=heap[dst+3];view[i+4]=heap[dst+4];view[i+5]=heap[dst+5];view[i+6]=heap[dst+6];view[i+7]=heap[dst+7];view[i+8]=heap[dst+8];view[i+9]=heap[dst+9];view[i+10]=heap[dst+10];view[i+11]=heap[dst+11];view[i+12]=heap[dst+12];view[i+13]=heap[dst+13];view[i+14]=heap[dst+14];view[i+15]=heap[dst+15]}}else{var view=HEAPF32.subarray(value>>2,value+count*64>>2)}GLctx.uniformMatrix4fv(GL.uniforms[location],!!transpose,view)}function _glUseProgram(program){GLctx.useProgram(GL.programs[program])}function _glVertexAttrib2f(x0,x1,x2){GLctx["vertexAttrib2f"](x0,x1,x2)}function _glVertexAttrib3f(x0,x1,x2,x3){GLctx["vertexAttrib3f"](x0,x1,x2,x3)}function _glVertexAttrib4f(x0,x1,x2,x3,x4){GLctx["vertexAttrib4f"](x0,x1,x2,x3,x4)}function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}function _glViewport(x0,x1,x2,x3){GLctx["viewport"](x0,x1,x2,x3)}function GLFW_Window(id,width,height,title,monitor,share){this.id=id;this.x=0;this.y=0;this.fullscreen=false;this.storedX=0;this.storedY=0;this.width=width;this.height=height;this.storedWidth=width;this.storedHeight=height;this.title=title;this.monitor=monitor;this.share=share;this.attributes=GLFW.hints;this.inputModes={208897:212993,208898:0,208899:0};this.buttons=0;this.keys=new Array;this.domKeys=new Array;this.shouldClose=0;this.title=null;this.windowPosFunc=null;this.windowSizeFunc=null;this.windowCloseFunc=null;this.windowRefreshFunc=null;this.windowFocusFunc=null;this.windowIconifyFunc=null;this.framebufferSizeFunc=null;this.mouseButtonFunc=null;this.cursorPosFunc=null;this.cursorEnterFunc=null;this.scrollFunc=null;this.dropFunc=null;this.keyFunc=null;this.charFunc=null;this.userptr=null}var GLFW={WindowFromId:function(id){if(id<=0||!GLFW.windows)return null;return GLFW.windows[id-1]},joystickFunc:null,errorFunc:null,monitorFunc:null,active:null,windows:null,monitors:null,monitorString:null,versionString:null,initialTime:null,extensions:null,hints:null,defaultHints:{131073:0,131074:0,131075:1,131076:1,131077:1,135169:8,135170:8,135171:8,135172:8,135173:24,135174:8,135175:0,135176:0,135177:0,135178:0,135179:0,135180:0,135181:0,135182:0,135183:0,139265:196609,139266:1,139267:0,139268:0,139269:0,139270:0,139271:0,139272:0},DOMToGLFWKeyCode:function(keycode){switch(keycode){case 32:return 32;case 222:return 39;case 188:return 44;case 173:return 45;case 189:return 45;case 190:return 46;case 191:return 47;case 48:return 48;case 49:return 49;case 50:return 50;case 51:return 51;case 52:return 52;case 53:return 53;case 54:return 54;case 55:return 55;case 56:return 56;case 57:return 57;case 59:return 59;case 61:return 61;case 187:return 61;case 65:return 65;case 66:return 66;case 67:return 67;case 68:return 68;case 69:return 69;case 70:return 70;case 71:return 71;case 72:return 72;case 73:return 73;case 74:return 74;case 75:return 75;case 76:return 76;case 77:return 77;case 78:return 78;case 79:return 79;case 80:return 80;case 81:return 81;case 82:return 82;case 83:return 83;case 84:return 84;case 85:return 85;case 86:return 86;case 87:return 87;case 88:return 88;case 89:return 89;case 90:return 90;case 219:return 91;case 220:return 92;case 221:return 93;case 192:return 94;case 27:return 256;case 13:return 257;case 9:return 258;case 8:return 259;case 45:return 260;case 46:return 261;case 39:return 262;case 37:return 263;case 40:return 264;case 38:return 265;case 33:return 266;case 34:return 267;case 36:return 268;case 35:return 269;case 20:return 280;case 145:return 281;case 144:return 282;case 44:return 283;case 19:return 284;case 112:return 290;case 113:return 291;case 114:return 292;case 115:return 293;case 116:return 294;case 117:return 295;case 118:return 296;case 119:return 297;case 120:return 298;case 121:return 299;case 122:return 300;case 123:return 301;case 124:return 302;case 125:return 303;case 126:return 304;case 127:return 305;case 128:return 306;case 129:return 307;case 130:return 308;case 131:return 309;case 132:return 310;case 133:return 311;case 134:return 312;case 135:return 313;case 136:return 314;case 96:return 320;case 97:return 321;case 98:return 322;case 99:return 323;case 100:return 324;case 101:return 325;case 102:return 326;case 103:return 327;case 104:return 328;case 105:return 329;case 110:return 330;case 111:return 331;case 106:return 332;case 109:return 333;case 107:return 334;case 16:return 340;case 17:return 341;case 18:return 342;case 91:return 343;case 93:return 348;default:return-1}},getModBits:function(win){var mod=0;if(win.keys[340])mod|=1;if(win.keys[341])mod|=2;if(win.keys[342])mod|=4;if(win.keys[343])mod|=8;return mod},onKeyPress:function(event){if(!GLFW.active||!GLFW.active.charFunc)return;if(event.ctrlKey||event.metaKey)return;var charCode=event.charCode;if(charCode==0||charCode>=0&&charCode<=31)return;wasmTable.get(GLFW.active.charFunc)(GLFW.active.id,charCode)},onKeyChanged:function(keyCode,status){if(!GLFW.active)return;var key=GLFW.DOMToGLFWKeyCode(keyCode);if(key==-1)return;var repeat=status&&GLFW.active.keys[key];GLFW.active.keys[key]=status;GLFW.active.domKeys[keyCode]=status;if(!GLFW.active.keyFunc)return;if(repeat)status=2;wasmTable.get(GLFW.active.keyFunc)(GLFW.active.id,key,keyCode,status,GLFW.getModBits(GLFW.active))},onGamepadConnected:function(event){GLFW.refreshJoysticks()},onGamepadDisconnected:function(event){GLFW.refreshJoysticks()},onKeydown:function(event){GLFW.onKeyChanged(event.keyCode,1);if(event.keyCode===8||event.keyCode===9){event.preventDefault()}},onKeyup:function(event){GLFW.onKeyChanged(event.keyCode,0)},onBlur:function(event){if(!GLFW.active)return;for(var i=0;i<GLFW.active.domKeys.length;++i){if(GLFW.active.domKeys[i]){GLFW.onKeyChanged(i,0)}}},onMousemove:function(event){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"]||!GLFW.active.cursorPosFunc)return;wasmTable.get(GLFW.active.cursorPosFunc)(GLFW.active.id,Browser.mouseX,Browser.mouseY)},DOMToGLFWMouseButton:function(event){var eventButton=event["button"];if(eventButton>0){if(eventButton==1){eventButton=2}else{eventButton=1}}return eventButton},onMouseenter:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,1)},onMouseleave:function(event){if(!GLFW.active)return;if(event.target!=Module["canvas"]||!GLFW.active.cursorEnterFunc)return;wasmTable.get(GLFW.active.cursorEnterFunc)(GLFW.active.id,0)},onMouseButtonChanged:function(event,status){if(!GLFW.active)return;Browser.calculateMouseEvent(event);if(event.target!=Module["canvas"])return;var eventButton=GLFW.DOMToGLFWMouseButton(event);if(status==1){GLFW.active.buttons|=1<<eventButton;try{event.target.setCapture()}catch(e){}}else{GLFW.active.buttons&=~(1<<eventButton)}if(!GLFW.active.mouseButtonFunc)return;wasmTable.get(GLFW.active.mouseButtonFunc)(GLFW.active.id,eventButton,status,GLFW.getModBits(GLFW.active))},onMouseButtonDown:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,1)},onMouseButtonUp:function(event){if(!GLFW.active)return;GLFW.onMouseButtonChanged(event,0)},onMouseWheel:function(event){var delta=-Browser.getMouseWheelDelta(event);delta=delta==0?0:delta>0?Math.max(delta,1):Math.min(delta,-1);GLFW.wheelPos+=delta;if(!GLFW.active||!GLFW.active.scrollFunc||event.target!=Module["canvas"])return;var sx=0;var sy=0;if(event.type=="mousewheel"){sx=event.wheelDeltaX;sy=event.wheelDeltaY}else{sx=event.deltaX;sy=event.deltaY}wasmTable.get(GLFW.active.scrollFunc)(GLFW.active.id,sx,sy);event.preventDefault()},onCanvasResize:function(width,height){if(!GLFW.active)return;var resizeNeeded=true;if(document["fullscreen"]||document["fullScreen"]||document["mozFullScreen"]||document["webkitIsFullScreen"]){GLFW.active.storedX=GLFW.active.x;GLFW.active.storedY=GLFW.active.y;GLFW.active.storedWidth=GLFW.active.width;GLFW.active.storedHeight=GLFW.active.height;GLFW.active.x=GLFW.active.y=0;GLFW.active.width=screen.width;GLFW.active.height=screen.height;GLFW.active.fullscreen=true}else if(GLFW.active.fullscreen==true){GLFW.active.x=GLFW.active.storedX;GLFW.active.y=GLFW.active.storedY;GLFW.active.width=GLFW.active.storedWidth;GLFW.active.height=GLFW.active.storedHeight;GLFW.active.fullscreen=false}else if(GLFW.active.width!=width||GLFW.active.height!=height){GLFW.active.width=width;GLFW.active.height=height}else{resizeNeeded=false}if(resizeNeeded){Browser.setCanvasSize(GLFW.active.width,GLFW.active.height,true);GLFW.onWindowSizeChanged();GLFW.onFramebufferSizeChanged()}},onWindowSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.windowSizeFunc)return;wasmTable.get(GLFW.active.windowSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},onFramebufferSizeChanged:function(){if(!GLFW.active)return;if(!GLFW.active.framebufferSizeFunc)return;wasmTable.get(GLFW.active.framebufferSizeFunc)(GLFW.active.id,GLFW.active.width,GLFW.active.height)},getTime:function(){return _emscripten_get_now()/1e3},setWindowTitle:function(winid,title){var win=GLFW.WindowFromId(winid);if(!win)return;win.title=UTF8ToString(title);if(GLFW.active.id==win.id){document.title=win.title}},setJoystickCallback:function(cbfun){GLFW.joystickFunc=cbfun;GLFW.refreshJoysticks()},joys:{},lastGamepadState:null,lastGamepadStateFrame:null,refreshJoysticks:function(){if(Browser.mainLoop.currentFrameNumber!==GLFW.lastGamepadStateFrame||!Browser.mainLoop.currentFrameNumber){GLFW.lastGamepadState=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads:null;GLFW.lastGamepadStateFrame=Browser.mainLoop.currentFrameNumber;for(var joy=0;joy<GLFW.lastGamepadState.length;++joy){var gamepad=GLFW.lastGamepadState[joy];if(gamepad){if(!GLFW.joys[joy]){console.log("glfw joystick connected:",joy);GLFW.joys[joy]={id:allocate(intArrayFromString(gamepad.id),ALLOC_NORMAL),buttonsCount:gamepad.buttons.length,axesCount:gamepad.axes.length,buttons:allocate(new Array(gamepad.buttons.length),ALLOC_NORMAL),axes:allocate(new Array(gamepad.axes.length*4),ALLOC_NORMAL)};if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262145)}}var data=GLFW.joys[joy];for(var i=0;i<gamepad.buttons.length;++i){setValue(data.buttons+i,gamepad.buttons[i].pressed,"i8")}for(var i=0;i<gamepad.axes.length;++i){setValue(data.axes+i*4,gamepad.axes[i],"float")}}else{if(GLFW.joys[joy]){console.log("glfw joystick disconnected",joy);if(GLFW.joystickFunc){wasmTable.get(GLFW.joystickFunc)(joy,262146)}_free(GLFW.joys[joy].id);_free(GLFW.joys[joy].buttons);_free(GLFW.joys[joy].axes);delete GLFW.joys[joy]}}}}},setKeyCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.keyFunc;win.keyFunc=cbfun;return prevcbfun},setCharCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.charFunc;win.charFunc=cbfun;return prevcbfun},setMouseButtonCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.mouseButtonFunc;win.mouseButtonFunc=cbfun;return prevcbfun},setCursorPosCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorPosFunc;win.cursorPosFunc=cbfun;return prevcbfun},setScrollCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.scrollFunc;win.scrollFunc=cbfun;return prevcbfun},setDropCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.dropFunc;win.dropFunc=cbfun;return prevcbfun},onDrop:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;if(!event.dataTransfer||!event.dataTransfer.files||event.dataTransfer.files.length==0)return;event.preventDefault();var filenames=allocate(new Array(event.dataTransfer.files.length*4),ALLOC_NORMAL);var filenamesArray=[];var count=event.dataTransfer.files.length;var written=0;var drop_dir=".glfw_dropped_files";FS.createPath("/",drop_dir);function save(file){var path="/"+drop_dir+"/"+file.name.replace(/\//g,"_");var reader=new FileReader;reader.onloadend=function(e){if(reader.readyState!=2){++written;console.log("failed to read dropped file: "+file.name+": "+reader.error);return}var data=e.target.result;FS.writeFile(path,new Uint8Array(data));if(++written===count){wasmTable.get(GLFW.active.dropFunc)(GLFW.active.id,count,filenames);for(var i=0;i<filenamesArray.length;++i){_free(filenamesArray[i])}_free(filenames)}};reader.readAsArrayBuffer(file);var filename=allocate(intArrayFromString(path),ALLOC_NORMAL);filenamesArray.push(filename);setValue(filenames+i*4,filename,"i8*")}for(var i=0;i<count;++i){save(event.dataTransfer.files[i])}return false},onDragover:function(event){if(!GLFW.active||!GLFW.active.dropFunc)return;event.preventDefault();return false},setWindowSizeCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowSizeFunc;win.windowSizeFunc=cbfun;return prevcbfun},setWindowCloseCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowCloseFunc;win.windowCloseFunc=cbfun;return prevcbfun},setWindowRefreshCallback:function(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowRefreshFunc;win.windowRefreshFunc=cbfun;return prevcbfun},onClickRequestPointerLock:function(e){if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();e.preventDefault()}},setInputMode:function(winid,mode,value){var win=GLFW.WindowFromId(winid);if(!win)return;switch(mode){case 208897:{switch(value){case 212993:{win.inputModes[mode]=value;Module["canvas"].removeEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].exitPointerLock();break}case 212994:{console.log("glfwSetInputMode called with GLFW_CURSOR_HIDDEN value not implemented.");break}case 212995:{win.inputModes[mode]=value;Module["canvas"].addEventListener("click",GLFW.onClickRequestPointerLock,true);Module["canvas"].requestPointerLock();break}default:{console.log("glfwSetInputMode called with unknown value parameter value: "+value+".");break}}break}case 208898:{console.log("glfwSetInputMode called with GLFW_STICKY_KEYS mode not implemented.");break}case 208899:{console.log("glfwSetInputMode called with GLFW_STICKY_MOUSE_BUTTONS mode not implemented.");break}default:{console.log("glfwSetInputMode called with unknown mode parameter value: "+mode+".");break}}},getKey:function(winid,key){var win=GLFW.WindowFromId(winid);if(!win)return 0;return win.keys[key]},getMouseButton:function(winid,button){var win=GLFW.WindowFromId(winid);if(!win)return 0;return(win.buttons&1<<button)>0},getCursorPos:function(winid,x,y){setValue(x,Browser.mouseX,"double");setValue(y,Browser.mouseY,"double")},getMousePos:function(winid,x,y){setValue(x,Browser.mouseX,"i32");setValue(y,Browser.mouseY,"i32")},setCursorPos:function(winid,x,y){},getWindowPos:function(winid,x,y){var wx=0;var wy=0;var win=GLFW.WindowFromId(winid);if(win){wx=win.x;wy=win.y}if(x){setValue(x,wx,"i32")}if(y){setValue(y,wy,"i32")}},setWindowPos:function(winid,x,y){var win=GLFW.WindowFromId(winid);if(!win)return;win.x=x;win.y=y},getWindowSize:function(winid,width,height){var ww=0;var wh=0;var win=GLFW.WindowFromId(winid);if(win){ww=win.width;wh=win.height}if(width){setValue(width,ww,"i32")}if(height){setValue(height,wh,"i32")}},setWindowSize:function(winid,width,height){var win=GLFW.WindowFromId(winid);if(!win)return;if(GLFW.active.id==win.id){if(width==screen.width&&height==screen.height){Browser.requestFullscreen()}else{Browser.exitFullscreen();Browser.setCanvasSize(width,height);win.width=width;win.height=height}}if(!win.windowSizeFunc)return;wasmTable.get(win.windowSizeFunc)(win.id,width,height)},createWindow:function(width,height,title,monitor,share){var i,id;for(i=0;i<GLFW.windows.length&&GLFW.windows[i]!==null;i++){}if(i>0)throw"glfwCreateWindow only supports one window at time currently";id=i+1;if(width<=0||height<=0)return 0;if(monitor){Browser.requestFullscreen()}else{Browser.setCanvasSize(width,height)}for(i=0;i<GLFW.windows.length&&GLFW.windows[i]==null;i++){}var useWebGL=GLFW.hints[139265]>0;if(i==GLFW.windows.length){if(useWebGL){var contextAttributes={antialias:GLFW.hints[135181]>1,depth:GLFW.hints[135173]>0,stencil:GLFW.hints[135174]>0,alpha:GLFW.hints[135172]>0};Module.ctx=Browser.createContext(Module["canvas"],true,true,contextAttributes)}else{Browser.init()}}if(!Module.ctx&&useWebGL)return 0;var win=new GLFW_Window(id,width,height,title,monitor,share);if(id-1==GLFW.windows.length){GLFW.windows.push(win)}else{GLFW.windows[id-1]=win}GLFW.active=win;return win.id},destroyWindow:function(winid){var win=GLFW.WindowFromId(winid);if(!win)return;if(win.windowCloseFunc)wasmTable.get(win.windowCloseFunc)(win.id);GLFW.windows[win.id-1]=null;if(GLFW.active.id==win.id)GLFW.active=null;for(var i=0;i<GLFW.windows.length;i++)if(GLFW.windows[i]!==null)return;Module.ctx=Browser.destroyContext(Module["canvas"],true,true)},swapBuffers:function(winid){},GLFW2ParamToGLFW3Param:function(param){var table={196609:0,196610:0,196611:0,196612:0,196613:0,196614:0,131073:0,131074:0,131075:0,131076:0,131077:135169,131078:135170,131079:135171,131080:135172,131081:135173,131082:135174,131083:135183,131084:135175,131085:135176,131086:135177,131087:135178,131088:135179,131089:135180,131090:0,131091:135181,131092:139266,131093:139267,131094:139270,131095:139271,131096:139272};return table[param]}};function _glfwCreateWindow(width,height,title,monitor,share){return GLFW.createWindow(width,height,title,monitor,share)}function _glfwDefaultWindowHints(){GLFW.hints=GLFW.defaultHints}function _glfwDestroyWindow(winid){return GLFW.destroyWindow(winid)}function _glfwGetPrimaryMonitor(){return 1}function _glfwGetTime(){return GLFW.getTime()-GLFW.initialTime}function _glfwGetVideoModes(monitor,count){setValue(count,0,"i32");return 0}function _glfwInit(){if(GLFW.windows)return 1;GLFW.initialTime=GLFW.getTime();GLFW.hints=GLFW.defaultHints;GLFW.windows=new Array;GLFW.active=null;window.addEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.addEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.addEventListener("keydown",GLFW.onKeydown,true);window.addEventListener("keypress",GLFW.onKeyPress,true);window.addEventListener("keyup",GLFW.onKeyup,true);window.addEventListener("blur",GLFW.onBlur,true);Module["canvas"].addEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].addEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].addEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].addEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].addEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].addEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].addEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].addEventListener("drop",GLFW.onDrop,true);Module["canvas"].addEventListener("dragover",GLFW.onDragover,true);Browser.resizeListeners.push(function(width,height){GLFW.onCanvasResize(width,height)});return 1}function _glfwMakeContextCurrent(winid){}function _glfwSetCharCallback(winid,cbfun){return GLFW.setCharCallback(winid,cbfun)}function _glfwSetCursorEnterCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.cursorEnterFunc;win.cursorEnterFunc=cbfun;return prevcbfun}function _glfwSetCursorPosCallback(winid,cbfun){return GLFW.setCursorPosCallback(winid,cbfun)}function _glfwSetDropCallback(winid,cbfun){return GLFW.setDropCallback(winid,cbfun)}function _glfwSetErrorCallback(cbfun){var prevcbfun=GLFW.errorFunc;GLFW.errorFunc=cbfun;return prevcbfun}function _glfwSetKeyCallback(winid,cbfun){return GLFW.setKeyCallback(winid,cbfun)}function _glfwSetMouseButtonCallback(winid,cbfun){return GLFW.setMouseButtonCallback(winid,cbfun)}function _glfwSetScrollCallback(winid,cbfun){return GLFW.setScrollCallback(winid,cbfun)}function _glfwSetWindowFocusCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowFocusFunc;win.windowFocusFunc=cbfun;return prevcbfun}function _glfwSetWindowIconifyCallback(winid,cbfun){var win=GLFW.WindowFromId(winid);if(!win)return null;var prevcbfun=win.windowIconifyFunc;win.windowIconifyFunc=cbfun;return prevcbfun}function _glfwSetWindowShouldClose(winid,value){var win=GLFW.WindowFromId(winid);if(!win)return;win.shouldClose=value}function _glfwSetWindowSizeCallback(winid,cbfun){return GLFW.setWindowSizeCallback(winid,cbfun)}function _glfwSwapBuffers(winid){GLFW.swapBuffers(winid)}function _glfwSwapInterval(interval){interval=Math.abs(interval);if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval)}function _glfwTerminate(){window.removeEventListener("gamepadconnected",GLFW.onGamepadConnected,true);window.removeEventListener("gamepaddisconnected",GLFW.onGamepadDisconnected,true);window.removeEventListener("keydown",GLFW.onKeydown,true);window.removeEventListener("keypress",GLFW.onKeyPress,true);window.removeEventListener("keyup",GLFW.onKeyup,true);window.removeEventListener("blur",GLFW.onBlur,true);Module["canvas"].removeEventListener("touchmove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("touchstart",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("touchcancel",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("touchend",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("mousemove",GLFW.onMousemove,true);Module["canvas"].removeEventListener("mousedown",GLFW.onMouseButtonDown,true);Module["canvas"].removeEventListener("mouseup",GLFW.onMouseButtonUp,true);Module["canvas"].removeEventListener("wheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mousewheel",GLFW.onMouseWheel,true);Module["canvas"].removeEventListener("mouseenter",GLFW.onMouseenter,true);Module["canvas"].removeEventListener("mouseleave",GLFW.onMouseleave,true);Module["canvas"].removeEventListener("drop",GLFW.onDrop,true);Module["canvas"].removeEventListener("dragover",GLFW.onDragover,true);Module["canvas"].width=Module["canvas"].height=1;GLFW.windows=null;GLFW.active=null}function _glfwWindowHint(target,hint){GLFW.hints[target]=hint}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;var GLctx;for(var i=0;i<32;++i)tempFixedLengthArray.push(new Array(i));var miniTempWebGLFloatBuffersStorage=new Float32Array(288);for(var i=0;i<288;++i){miniTempWebGLFloatBuffers[i]=miniTempWebGLFloatBuffersStorage.subarray(0,i+1)}var __miniTempWebGLIntBuffersStorage=new Int32Array(288);for(var i=0;i<288;++i){__miniTempWebGLIntBuffers[i]=__miniTempWebGLIntBuffersStorage.subarray(0,i+1)}Module["requestFullscreen"]=function Module_requestFullscreen(lockPointer,resizeCanvas){Browser.requestFullscreen(lockPointer,resizeCanvas)};Module["requestAnimationFrame"]=function Module_requestAnimationFrame(func){Browser.requestAnimationFrame(func)};Module["setCanvasSize"]=function Module_setCanvasSize(width,height,noUpdates){Browser.setCanvasSize(width,height,noUpdates)};Module["pauseMainLoop"]=function Module_pauseMainLoop(){Browser.mainLoop.pause()};Module["resumeMainLoop"]=function Module_resumeMainLoop(){Browser.mainLoop.resume()};Module["getUserMedia"]=function Module_getUserMedia(){Browser.getUserMedia()};Module["createContext"]=function Module_createContext(canvas,useWebGL,setInModule,webGLContextAttributes){return Browser.createContext(canvas,useWebGL,setInModule,webGLContextAttributes)};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"a":___assert_fail,"Ta":___sys_chdir,"K":___sys_fcntl64,"Sa":___sys_getcwd,"Va":___sys_ioctl,"Xa":___sys_open,"Aa":_emscripten_exit_pointerlock,"$":_emscripten_get_element_css_size,"W":_emscripten_get_gamepad_status,"X":_emscripten_get_num_gamepads,"Jd":_emscripten_glActiveTexture,"Id":_emscripten_glAttachShader,"Zd":_emscripten_glBeginQueryEXT,"Hd":_emscripten_glBindAttribLocation,"Gd":_emscripten_glBindBuffer,"Fd":_emscripten_glBindFramebuffer,"Ed":_emscripten_glBindRenderbuffer,"Dd":_emscripten_glBindTexture,"Rd":_emscripten_glBindVertexArrayOES,"Cd":_emscripten_glBlendColor,"Bd":_emscripten_glBlendEquation,"Ad":_emscripten_glBlendEquationSeparate,"zd":_emscripten_glBlendFunc,"yd":_emscripten_glBlendFuncSeparate,"xd":_emscripten_glBufferData,"wd":_emscripten_glBufferSubData,"vd":_emscripten_glCheckFramebufferStatus,"ud":_emscripten_glClear,"td":_emscripten_glClearColor,"sd":_emscripten_glClearDepthf,"rd":_emscripten_glClearStencil,"qd":_emscripten_glColorMask,"pd":_emscripten_glCompileShader,"od":_emscripten_glCompressedTexImage2D,"nd":_emscripten_glCompressedTexSubImage2D,"md":_emscripten_glCopyTexImage2D,"ld":_emscripten_glCopyTexSubImage2D,"kd":_emscripten_glCreateProgram,"jd":_emscripten_glCreateShader,"id":_emscripten_glCullFace,"hd":_emscripten_glDeleteBuffers,"gd":_emscripten_glDeleteFramebuffers,"fd":_emscripten_glDeleteProgram,"S":_emscripten_glDeleteQueriesEXT,"ed":_emscripten_glDeleteRenderbuffers,"dd":_emscripten_glDeleteShader,"cd":_emscripten_glDeleteTextures,"Qd":_emscripten_glDeleteVertexArraysOES,"bd":_emscripten_glDepthFunc,"ad":_emscripten_glDepthMask,"$c":_emscripten_glDepthRangef,"_c":_emscripten_glDetachShader,"Zc":_emscripten_glDisable,"Yc":_emscripten_glDisableVertexAttribArray,"Xc":_emscripten_glDrawArrays,"Md":_emscripten_glDrawArraysInstancedANGLE,"Nd":_emscripten_glDrawBuffersWEBGL,"Wc":_emscripten_glDrawElements,"Ld":_emscripten_glDrawElementsInstancedANGLE,"Vc":_emscripten_glEnable,"Uc":_emscripten_glEnableVertexAttribArray,"Yd":_emscripten_glEndQueryEXT,"Tc":_emscripten_glFinish,"Sc":_emscripten_glFlush,"Rc":_emscripten_glFramebufferRenderbuffer,"Qc":_emscripten_glFramebufferTexture2D,"Pc":_emscripten_glFrontFace,"Oc":_emscripten_glGenBuffers,"Mc":_emscripten_glGenFramebuffers,"T":_emscripten_glGenQueriesEXT,"Lc":_emscripten_glGenRenderbuffers,"Kc":_emscripten_glGenTextures,"Pd":_emscripten_glGenVertexArraysOES,"Nc":_emscripten_glGenerateMipmap,"Ic":_emscripten_glGetActiveAttrib,"Hc":_emscripten_glGetActiveUniform,"Gc":_emscripten_glGetAttachedShaders,"Fc":_emscripten_glGetAttribLocation,"Ec":_emscripten_glGetBooleanv,"Dc":_emscripten_glGetBufferParameteriv,"Cc":_emscripten_glGetError,"Bc":_emscripten_glGetFloatv,"Ac":_emscripten_glGetFramebufferAttachmentParameteriv,"zc":_emscripten_glGetIntegerv,"xc":_emscripten_glGetProgramInfoLog,"yc":_emscripten_glGetProgramiv,"Td":_emscripten_glGetQueryObjecti64vEXT,"Vd":_emscripten_glGetQueryObjectivEXT,"Sd":_emscripten_glGetQueryObjectui64vEXT,"Ud":_emscripten_glGetQueryObjectuivEXT,"Wd":_emscripten_glGetQueryivEXT,"wc":_emscripten_glGetRenderbufferParameteriv,"uc":_emscripten_glGetShaderInfoLog,"tc":_emscripten_glGetShaderPrecisionFormat,"sc":_emscripten_glGetShaderSource,"vc":_emscripten_glGetShaderiv,"rc":_emscripten_glGetString,"qc":_emscripten_glGetTexParameterfv,"pc":_emscripten_glGetTexParameteriv,"mc":_emscripten_glGetUniformLocation,"oc":_emscripten_glGetUniformfv,"nc":_emscripten_glGetUniformiv,"jc":_emscripten_glGetVertexAttribPointerv,"lc":_emscripten_glGetVertexAttribfv,"kc":_emscripten_glGetVertexAttribiv,"ic":_emscripten_glHint,"hc":_emscripten_glIsBuffer,"gc":_emscripten_glIsEnabled,"fc":_emscripten_glIsFramebuffer,"ec":_emscripten_glIsProgram,"R":_emscripten_glIsQueryEXT,"dc":_emscripten_glIsRenderbuffer,"cc":_emscripten_glIsShader,"bc":_emscripten_glIsTexture,"Od":_emscripten_glIsVertexArrayOES,"ac":_emscripten_glLineWidth,"$b":_emscripten_glLinkProgram,"_b":_emscripten_glPixelStorei,"Zb":_emscripten_glPolygonOffset,"Xd":_emscripten_glQueryCounterEXT,"Yb":_emscripten_glReadPixels,"Xb":_emscripten_glReleaseShaderCompiler,"Vb":_emscripten_glRenderbufferStorage,"Ub":_emscripten_glSampleCoverage,"Tb":_emscripten_glScissor,"Sb":_emscripten_glShaderBinary,"Rb":_emscripten_glShaderSource,"Qb":_emscripten_glStencilFunc,"Pb":_emscripten_glStencilFuncSeparate,"Ob":_emscripten_glStencilMask,"Nb":_emscripten_glStencilMaskSeparate,"Mb":_emscripten_glStencilOp,"Kb":_emscripten_glStencilOpSeparate,"Jb":_emscripten_glTexImage2D,"Ib":_emscripten_glTexParameterf,"Hb":_emscripten_glTexParameterfv,"Gb":_emscripten_glTexParameteri,"Fb":_emscripten_glTexParameteriv,"Eb":_emscripten_glTexSubImage2D,"Db":_emscripten_glUniform1f,"Cb":_emscripten_glUniform1fv,"Bb":_emscripten_glUniform1i,"zb":_emscripten_glUniform1iv,"yb":_emscripten_glUniform2f,"xb":_emscripten_glUniform2fv,"wb":_emscripten_glUniform2i,"vb":_emscripten_glUniform2iv,"ub":_emscripten_glUniform3f,"tb":_emscripten_glUniform3fv,"sb":_emscripten_glUniform3i,"rb":_emscripten_glUniform3iv,"qb":_emscripten_glUniform4f,"ob":_emscripten_glUniform4fv,"nb":_emscripten_glUniform4i,"mb":_emscripten_glUniform4iv,"lb":_emscripten_glUniformMatrix2fv,"kb":_emscripten_glUniformMatrix3fv,"jb":_emscripten_glUniformMatrix4fv,"ib":_emscripten_glUseProgram,"hb":_emscripten_glValidateProgram,"gb":_emscripten_glVertexAttrib1f,"fb":_emscripten_glVertexAttrib1fv,"db":_emscripten_glVertexAttrib2f,"cb":_emscripten_glVertexAttrib2fv,"bb":_emscripten_glVertexAttrib3f,"ab":_emscripten_glVertexAttrib3fv,"$a":_emscripten_glVertexAttrib4f,"_a":_emscripten_glVertexAttrib4fv,"Kd":_emscripten_glVertexAttribDivisorANGLE,"Za":_emscripten_glVertexAttribPointer,"Ya":_emscripten_glViewport,"Pa":_emscripten_memcpy_big,"Qa":_emscripten_resize_heap,"x":_emscripten_run_script,"Y":_emscripten_sample_gamepad_data,"xa":_emscripten_set_click_callback_on_thread,"za":_emscripten_set_fullscreenchange_callback_on_thread,"sa":_emscripten_set_gamepadconnected_callback_on_thread,"ra":_emscripten_set_gamepaddisconnected_callback_on_thread,"ya":_emscripten_set_keydown_callback_on_thread,"$d":_emscripten_set_main_loop,"ta":_emscripten_set_touchcancel_callback_on_thread,"va":_emscripten_set_touchend_callback_on_thread,"ua":_emscripten_set_touchmove_callback_on_thread,"wa":_emscripten_set_touchstart_callback_on_thread,"Ra":_emscripten_thread_sleep,"U":_exit,"L":_fd_close,"Ua":_fd_read,"Na":_fd_seek,"J":_fd_write,"p":_glActiveTexture,"C":_glAttachShader,"k":_glBindAttribLocation,"b":_glBindBuffer,"i":_glBindTexture,"Lb":_glBlendFunc,"e":_glBufferData,"v":_glBufferSubData,"M":_glClear,"N":_glClearColor,"eb":_glClearDepthf,"Fa":_glCompileShader,"La":_glCompressedTexImage2D,"Da":_glCreateProgram,"Ha":_glCreateShader,"Ab":_glCullFace,"m":_glDeleteBuffers,"F":_glDeleteProgram,"G":_glDeleteShader,"I":_glDeleteTextures,"Wb":_glDepthFunc,"H":_glDetachShader,"O":_glDisable,"h":_glDisableVertexAttribArray,"Q":_glDrawArrays,"P":_glDrawElements,"w":_glEnable,"c":_glEnableVertexAttribArray,"pb":_glFrontFace,"f":_glGenBuffers,"Oa":_glGenTextures,"u":_glGetAttribLocation,"Jc":_glGetFloatv,"Ba":_glGetProgramInfoLog,"E":_glGetProgramiv,"Ea":_glGetShaderInfoLog,"D":_glGetShaderiv,"n":_glGetString,"t":_glGetUniformLocation,"Ca":_glLinkProgram,"Wa":_glPixelStorei,"Ia":_glReadPixels,"Ga":_glShaderSource,"Ma":_glTexImage2D,"o":_glTexParameteri,"y":_glUniform1i,"q":_glUniform4f,"r":_glUniformMatrix4fv,"l":_glUseProgram,"Ja":_glVertexAttrib2f,"Ka":_glVertexAttrib3f,"s":_glVertexAttrib4f,"d":_glVertexAttribPointer,"_d":_glViewport,"A":_glfwCreateWindow,"oa":_glfwDefaultWindowHints,"_":_glfwDestroyWindow,"B":_glfwGetPrimaryMonitor,"j":_glfwGetTime,"na":_glfwGetVideoModes,"pa":_glfwInit,"ca":_glfwMakeContextCurrent,"ha":_glfwSetCharCallback,"da":_glfwSetCursorEnterCallback,"fa":_glfwSetCursorPosCallback,"ja":_glfwSetDropCallback,"qa":_glfwSetErrorCallback,"ia":_glfwSetKeyCallback,"ga":_glfwSetMouseButtonCallback,"ea":_glfwSetScrollCallback,"ka":_glfwSetWindowFocusCallback,"la":_glfwSetWindowIconifyCallback,"V":_glfwSetWindowShouldClose,"ma":_glfwSetWindowSizeCallback,"Z":_glfwSwapBuffers,"ba":_glfwSwapInterval,"z":_glfwTerminate,"g":_glfwWindowHint,"aa":_time};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["be"]).apply(null,arguments)};var _main=Module["_main"]=function(){return(_main=Module["_main"]=Module["asm"]["ce"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["ee"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["fe"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["ge"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["he"]).apply(null,arguments)};Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}var calledMain=false;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(args){var entryFunction=Module["_main"];var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exit(ret,true)}catch(e){if(e instanceof ExitStatus){return}else if(e=="unwind"){noExitRuntime=true;return}else{var toLog=e;if(e&&typeof e==="object"&&e.stack){toLog=[e,e.stack]}err("exception thrown: "+toLog);quit_(1,e)}}finally{calledMain=true}}function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(noExitRuntime){}else{EXITSTATUS=status;exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); diff --git a/examples/web/models/models_yaw_pitch_roll.png b/examples/web/models/models_yaw_pitch_roll.png Binary files differnew file mode 100644 index 0000000..8b36fe3 --- /dev/null +++ b/examples/web/models/models_yaw_pitch_roll.png diff --git a/examples/web/models/models_yaw_pitch_roll.wasm b/examples/web/models/models_yaw_pitch_roll.wasm Binary files differindex 62dc425..9930ad5 100644 --- a/examples/web/models/models_yaw_pitch_roll.wasm +++ b/examples/web/models/models_yaw_pitch_roll.wasm diff --git a/examples/web/models/resources/angle_gauge.png b/examples/web/models/resources/angle_gauge.png Binary files differdeleted file mode 100644 index 810097d..0000000 --- a/examples/web/models/resources/angle_gauge.png +++ /dev/null diff --git a/examples/web/models/resources/background.png b/examples/web/models/resources/background.png Binary files differdeleted file mode 100644 index 88ece1f..0000000 --- a/examples/web/models/resources/background.png +++ /dev/null diff --git a/examples/web/models/resources/pitch.png b/examples/web/models/resources/pitch.png Binary files differdeleted file mode 100644 index 82f89cd..0000000 --- a/examples/web/models/resources/pitch.png +++ /dev/null diff --git a/examples/web/models/resources/plane.obj b/examples/web/models/resources/plane.obj deleted file mode 100644 index e9100a4..0000000 --- a/examples/web/models/resources/plane.obj +++ /dev/null @@ -1,10700 +0,0 @@ -# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware -# File Created: 23.07.2017 19:55:30 - -# -# object P_51_Mustang_Proppeler -# - -v 6.98 -5.85 40.44 -v 7.18 -5.71 40.16 -v 7.46 -5.54 40.90 -v 7.65 -5.40 40.61 -v -1.06 6.70 43.10 -v -0.66 7.22 43.05 -v -2.20 7.04 41.37 -v -1.32 8.19 41.26 -v -0.05 7.42 43.02 -v 0.03 8.62 41.20 -v 0.55 7.21 43.04 -v 1.34 8.17 41.23 -v 0.89 6.69 43.08 -v 2.11 7.01 41.33 -v 0.86 6.04 43.14 -v 2.04 5.59 41.46 -v 0.47 5.52 43.19 -v 1.16 4.45 41.57 -v -0.15 5.33 43.22 -v -0.19 4.02 41.63 -v -0.74 5.53 43.20 -v -1.50 4.47 41.60 -v -1.09 6.06 43.16 -v -2.27 5.62 41.50 -v -0.20 3.16 38.93 -v -1.94 3.76 38.90 -v -2.97 5.30 38.76 -v -2.88 7.20 38.59 -v -1.71 8.72 38.44 -v 0.10 9.29 38.37 -v 1.84 8.70 38.40 -v 2.87 7.15 38.54 -v 2.78 5.26 38.71 -v 1.61 3.73 38.86 -v -0.11 6.40 43.97 -v 2.25 5.68 40.33 -v 0.23 3.72 40.34 -v 7.55 -5.03 41.18 -v 6.53 -5.89 40.11 -v -2.39 6.87 40.27 -v -0.36 8.83 39.88 -v -7.68 17.58 39.26 -v -6.63 18.36 38.02 -v -7.10 18.35 38.37 -v -7.59 18.07 38.89 -v -11.88 -2.05 40.51 -v -12.14 -1.59 39.98 -v -11.39 -2.12 40.84 -v -12.14 -1.14 39.60 -v -2.58 5.85 39.82 -v -0.73 3.87 40.17 -v -0.75 3.90 40.52 -v -2.60 5.87 40.18 -v -11.53 -1.92 41.09 -v -12.28 -0.94 39.85 -v -12.28 -1.40 40.23 -v -12.02 -1.86 40.76 -v 7.74 -4.89 40.89 -v 2.27 5.69 39.97 -v 0.25 3.72 39.99 -v 6.72 -5.74 39.83 -v 12.03 14.07 38.30 -v 12.17 13.89 38.58 -v 12.04 13.60 38.00 -v 12.18 13.42 38.29 -v 11.76 14.57 38.74 -v 11.89 14.39 39.03 -v 11.40 14.47 39.35 -v 11.26 14.65 39.07 -v 0.60 8.66 39.71 -v 0.62 8.66 40.07 -v 2.45 6.68 39.69 -v 2.47 6.67 40.05 -v -7.29 18.19 38.11 -v -6.82 18.20 37.77 -v -7.77 17.91 38.63 -v -7.87 17.42 39.01 -v -2.40 6.84 39.91 -v -0.37 8.80 39.53 -# 79 vertices - -vn 0.56 -0.83 -0.03 -vn -0.69 0.31 0.65 -vn -0.42 0.65 0.63 -vn -0.85 0.35 0.40 -vn -0.51 0.77 0.38 -vn 0.01 0.77 0.63 -vn 0.01 0.92 0.38 -vn 0.44 0.62 0.65 -vn 0.55 0.74 0.40 -vn 0.70 0.25 0.66 -vn 0.87 0.27 0.42 -vn 0.70 -0.20 0.68 -vn 0.86 -0.28 0.43 -vn 0.44 -0.56 0.71 -vn 0.53 -0.72 0.45 -vn -0.00 -0.69 0.72 -vn -0.01 -0.88 0.47 -vn -0.45 -0.53 0.72 -vn -0.56 -0.69 0.46 -vn -0.71 -0.14 0.69 -vn -0.88 -0.21 0.43 -vn -0.01 -0.95 0.30 -vn -0.60 -0.75 0.29 -vn -0.94 -0.23 0.27 -vn -0.90 0.36 0.24 -vn -0.54 0.81 0.23 -vn 0.02 0.97 0.23 -vn 0.58 0.78 0.25 -vn 0.92 0.29 0.27 -vn 0.91 -0.30 0.28 -vn 0.57 -0.77 0.30 -vn 0.00 0.07 1.00 -vn -0.01 -0.09 -1.00 -vn -0.05 0.06 1.00 -vn -0.09 0.02 1.00 -vn -0.48 -0.32 0.82 -vn -0.52 -0.35 0.78 -vn -0.53 -0.33 0.78 -vn 0.07 0.13 0.99 -vn 0.11 0.16 0.98 -vn 0.47 0.44 0.76 -vn 0.51 0.47 0.72 -vn 0.52 0.45 0.73 -vn 0.40 -0.58 -0.71 -vn 0.39 -0.54 -0.75 -vn 0.42 -0.57 -0.71 -vn 0.06 -0.19 -0.98 -vn 0.02 -0.15 -0.99 -vn -0.03 0.15 0.99 -vn -0.06 0.19 0.98 -vn -0.39 0.54 0.75 -vn -0.42 0.57 0.71 -vn -0.40 0.58 0.71 -vn 0.84 -0.36 0.40 -vn 0.88 0.46 0.06 -vn 0.88 0.46 0.07 -vn 0.67 0.38 0.64 -vn 0.66 0.38 0.65 -vn -0.70 0.72 -0.02 -vn -0.63 -0.42 -0.65 -vn -0.64 -0.43 -0.64 -vn -0.83 -0.55 -0.07 -vn -0.84 -0.55 -0.06 -vn 0.53 0.33 -0.78 -vn 0.48 0.32 -0.82 -vn 0.52 0.35 -0.78 -vn 0.09 -0.03 -1.00 -vn 0.05 -0.06 -1.00 -vn 0.92 0.21 -0.32 -vn 0.84 0.53 -0.08 -vn 0.38 0.85 0.36 -vn -0.49 0.87 0.03 -vn -0.49 0.87 0.04 -vn -0.34 0.71 0.61 -vn -0.34 0.71 0.62 -vn -0.73 -0.68 0.03 -vn 0.38 -0.68 -0.62 -vn 0.39 -0.69 -0.61 -vn 0.57 -0.82 -0.04 -vn 0.57 -0.82 -0.03 -vn -0.43 0.46 -0.77 -vn -0.42 0.41 -0.81 -vn -0.45 0.45 -0.77 -vn -0.08 0.01 -1.00 -vn -0.04 -0.03 -1.00 -vn 0.05 0.03 1.00 -vn 0.08 -0.00 1.00 -vn 0.42 -0.41 0.81 -vn 0.45 -0.45 0.77 -vn 0.43 -0.46 0.77 -vn -0.29 0.89 -0.35 -vn -0.57 0.82 -0.10 -vn -0.83 0.43 0.35 -vn -0.89 -0.45 0.07 -vn -0.89 -0.45 0.08 -vn -0.69 -0.28 0.67 -vn -0.68 -0.27 0.68 -vn 0.70 -0.72 0.04 -vn 0.65 0.32 -0.69 -vn 0.66 0.32 -0.68 -vn 0.84 0.54 -0.08 -vn 0.84 0.54 -0.07 -vn -0.52 -0.45 -0.73 -vn -0.47 -0.44 -0.77 -vn -0.50 -0.47 -0.72 -vn -0.11 -0.15 -0.98 -vn -0.07 -0.12 -0.99 -vn -0.91 -0.27 -0.32 -vn -0.84 -0.54 -0.06 -vn -0.39 -0.82 0.42 -vn 0.49 -0.87 0.10 -vn 0.49 -0.86 0.11 -vn 0.37 -0.62 0.69 -vn 0.37 -0.62 0.70 -vn 0.73 0.68 -0.00 -vn -0.41 0.59 -0.70 -vn -0.42 0.59 -0.69 -vn -0.57 0.81 -0.11 -vn 0.27 -0.92 -0.28 -# 119 vertex normals - -vt 0.04 0.85 0.00 -vt 0.03 0.85 0.00 -vt 0.92 0.13 0.00 -vt 0.92 0.12 0.00 -vt 0.96 0.13 0.00 -vt 0.96 0.11 0.00 -vt 0.96 0.10 0.00 -vt 0.92 0.14 0.00 -vt 0.96 0.14 0.00 -vt 0.92 0.15 0.00 -vt 0.96 0.16 0.00 -vt 0.96 0.17 0.00 -vt 0.96 0.15 0.00 -vt 1.00 0.18 0.00 -vt 1.00 0.16 0.00 -vt 1.00 0.15 0.00 -vt 1.00 0.13 0.00 -vt 1.00 0.11 0.00 -vt 1.00 0.09 0.00 -vt 0.91 0.13 0.00 -vt 0.80 0.95 0.00 -vt 0.81 0.94 0.00 -vt 0.81 0.96 0.00 -vt 0.82 0.95 0.00 -vt 0.82 0.96 0.00 -vt 0.80 0.96 0.00 -vt 0.38 0.65 0.00 -vt 0.37 0.68 0.00 -vt 0.23 0.65 0.00 -vt 0.23 0.67 0.00 -vt 0.23 0.66 0.00 -vt 0.37 0.66 0.00 -vt 0.37 0.67 0.00 -vt 0.35 0.66 0.00 -vt 0.35 0.67 0.00 -vt 0.06 0.85 0.00 -vt 0.05 0.85 0.00 -# 37 texture coords - -g P_51_Mustang_Proppeler -f 1/1/1 2/1/1 3/2/1 -f 4/2/1 3/2/1 2/1/1 -f 5/3/2 6/4/3 7/5/4 -f 8/6/5 7/5/4 6/4/3 -f 6/4/3 9/4/6 8/6/5 -f 10/7/7 8/6/5 9/4/6 -f 9/4/6 11/4/8 10/7/7 -f 12/6/9 10/7/7 11/4/8 -f 11/4/8 13/3/10 12/6/9 -f 14/5/11 12/6/9 13/3/10 -f 13/3/10 15/8/12 14/5/11 -f 16/9/13 14/5/11 15/8/12 -f 15/8/12 17/10/14 16/9/13 -f 18/11/15 16/9/13 17/10/14 -f 17/10/14 19/10/16 18/11/15 -f 20/12/17 18/11/15 19/10/16 -f 19/10/16 21/10/18 20/12/17 -f 22/11/19 20/12/17 21/10/18 -f 21/10/18 23/8/20 22/11/19 -f 24/13/21 22/11/19 23/8/20 -f 20/12/17 22/11/19 25/14/22 -f 26/15/23 25/14/22 22/11/19 -f 22/11/19 24/13/21 26/15/23 -f 27/16/24 26/15/23 24/13/21 -f 23/8/20 5/3/2 24/13/21 -f 7/5/4 24/13/21 5/3/2 -f 24/13/21 7/5/4 27/16/24 -f 28/17/25 27/16/24 7/5/4 -f 7/5/4 8/6/5 28/17/25 -f 29/18/26 28/17/25 8/6/5 -f 8/6/5 10/7/7 29/18/26 -f 30/19/27 29/18/26 10/7/7 -f 10/7/7 12/6/9 30/19/27 -f 31/18/28 30/19/27 12/6/9 -f 12/6/9 14/5/11 31/18/28 -f 32/17/29 31/18/28 14/5/11 -f 14/5/11 16/9/13 32/17/29 -f 33/16/30 32/17/29 16/9/13 -f 16/9/13 18/11/15 33/16/30 -f 34/15/31 33/16/30 18/11/15 -f 18/11/15 20/12/17 34/15/31 -f 25/14/22 34/15/31 20/12/17 -f 35/20/32 21/10/18 19/10/16 -f 35/20/32 23/8/20 21/10/18 -f 35/20/32 5/3/2 23/8/20 -f 35/20/32 6/4/3 5/3/2 -f 35/20/32 9/4/6 6/4/3 -f 35/20/32 11/4/8 9/4/6 -f 35/20/32 13/3/10 11/4/8 -f 35/20/32 15/8/12 13/3/10 -f 35/20/32 17/10/14 15/8/12 -f 35/20/32 19/10/16 17/10/14 -f 31/21/33 32/22/33 30/21/33 -f 32/22/33 28/23/33 30/21/33 -f 34/24/33 28/23/33 32/22/33 -f 26/25/33 28/23/33 34/24/33 -f 25/24/33 26/25/33 34/24/33 -f 30/21/33 28/23/33 29/26/33 -f 27/23/33 28/23/33 26/25/33 -f 36/27/34 37/28/35 38/29/36 -f 37/28/35 39/30/37 38/29/36 -f 39/30/37 1/31/38 38/29/36 -f 1/31/38 3/31/38 38/29/36 -f 40/27/39 41/28/40 42/29/41 -f 41/28/40 43/30/42 42/29/41 -f 43/30/42 44/31/43 42/29/41 -f 44/31/43 45/31/43 42/29/41 -f 46/31/44 47/31/44 48/29/45 -f 47/31/44 49/30/46 48/29/45 -f 49/30/46 50/28/47 48/29/45 -f 50/28/47 51/27/48 48/29/45 -f 52/27/49 53/28/50 54/29/51 -f 53/28/50 55/30/52 54/29/51 -f 55/30/52 56/31/53 54/29/51 -f 56/31/53 57/31/53 54/29/51 -f 3/30/54 4/31/54 38/30/54 -f 58/31/54 38/30/54 4/31/54 -f 59/32/55 36/33/56 58/31/57 -f 38/30/58 58/31/57 36/33/56 -f 60/34/59 37/35/59 59/32/59 -f 36/33/59 59/32/59 37/35/59 -f 61/31/60 39/30/61 60/34/62 -f 39/30/61 37/35/63 60/34/62 -f 4/31/64 2/31/64 58/29/65 -f 2/31/64 61/30/66 58/29/65 -f 61/30/66 60/28/67 58/29/65 -f 60/28/67 59/27/68 58/29/65 -f 62/1/69 63/1/69 64/36/69 -f 65/37/69 64/36/69 63/1/69 -f 66/2/70 67/2/70 62/1/70 -f 63/1/70 62/1/70 67/2/70 -f 67/30/71 66/31/71 68/30/71 -f 69/31/71 68/30/71 66/31/71 -f 70/32/72 71/33/73 69/31/74 -f 68/30/75 69/31/74 71/33/73 -f 72/34/76 73/35/76 70/32/76 -f 71/33/76 70/32/76 73/35/76 -f 64/31/77 65/30/78 72/34/79 -f 65/30/78 73/35/80 72/34/79 -f 66/31/81 62/31/81 69/29/82 -f 62/31/81 64/30/83 69/29/82 -f 64/30/83 72/28/84 69/29/82 -f 72/28/84 70/27/85 69/29/82 -f 71/27/86 73/28/87 68/29/88 -f 73/28/87 65/30/89 68/29/88 -f 65/30/89 63/31/90 68/29/88 -f 63/31/90 67/31/90 68/29/88 -f 74/1/91 44/1/91 75/2/91 -f 43/2/91 75/2/91 44/1/91 -f 76/37/92 45/36/92 74/1/92 -f 44/1/92 74/1/92 45/36/92 -f 45/30/93 76/31/93 42/30/93 -f 77/31/93 42/30/93 76/31/93 -f 78/32/94 40/33/95 77/31/96 -f 42/30/97 77/31/96 40/33/95 -f 79/34/98 41/35/98 78/32/98 -f 40/33/98 78/32/98 41/35/98 -f 75/31/99 43/30/100 79/34/101 -f 43/30/100 41/35/102 79/34/101 -f 76/31/103 74/31/103 77/29/104 -f 74/31/103 75/30/105 77/29/104 -f 75/30/105 79/28/106 77/29/104 -f 79/28/106 78/27/107 77/29/104 -f 47/1/108 56/1/108 49/2/108 -f 55/2/108 49/2/108 56/1/108 -f 46/37/109 57/37/109 47/1/109 -f 56/1/109 47/1/109 57/37/109 -f 57/30/110 46/31/110 54/30/110 -f 48/31/110 54/30/110 46/31/110 -f 51/32/111 52/33/112 48/31/113 -f 54/30/114 48/31/113 52/33/112 -f 50/34/115 53/35/115 51/32/115 -f 52/33/115 51/32/115 53/35/115 -f 49/31/116 55/30/117 50/34/118 -f 55/30/117 53/35/92 50/34/118 -f 33/22/33 34/24/33 32/22/33 -f 2/1/119 1/1/119 61/36/119 -f 39/37/119 61/36/119 1/1/119 -# 138 faces - -# -# object P_51_Mustang_Right_Rockets -# - -v -34.05 -4.42 7.01 -v -33.98 -4.35 7.01 -v -34.09 -4.33 9.68 -v -34.02 -4.26 9.67 -v -35.60 -3.83 7.68 -v -35.21 -3.94 7.69 -v -35.84 -3.60 19.17 -v -36.18 -3.24 19.14 -v -35.88 -3.53 7.66 -v -36.29 -2.75 19.10 -v -36.09 -2.72 20.16 -v -36.01 -3.10 20.20 -v -35.35 -2.67 21.77 -v -35.74 -3.38 20.22 -v -35.37 -3.49 20.23 -v -35.37 -3.74 19.18 -v -34.88 -3.61 19.16 -v -34.81 -3.84 7.67 -v -34.50 -3.54 7.65 -v -34.50 -3.25 19.13 -v -34.37 -3.14 7.61 -v -34.35 -2.76 19.08 -v -34.46 -2.73 7.57 -v -34.46 -2.27 19.04 -v -34.74 -2.43 7.55 -v -34.79 -1.91 19.01 -v -35.13 -2.32 7.54 -v -35.27 -1.77 19.00 -v -35.54 -2.43 7.55 -v -35.76 -1.90 19.01 -v -35.84 -2.72 7.58 -v -36.13 -2.26 19.05 -v -35.97 -3.13 7.62 -v -35.97 -2.33 20.13 -v -35.68 -2.05 20.10 -v -35.30 -1.95 20.08 -v -34.92 -2.06 20.09 -v -34.66 -2.34 20.12 -v -34.58 -2.73 20.15 -v -34.70 -3.11 20.19 -v -34.99 -3.39 20.21 -v -36.27 -1.89 6.80 -v -35.13 -3.10 7.59 -v -36.34 -1.96 6.81 -v -35.20 -3.17 7.60 -v -36.30 -1.80 9.47 -v -36.38 -1.87 9.47 -v -35.16 -3.02 10.26 -v -35.24 -3.08 10.27 -v -33.90 -1.89 9.45 -v -33.97 -1.82 9.45 -v -35.18 -3.09 10.27 -v -35.25 -3.01 10.26 -v -36.43 -4.31 9.70 -v -36.49 -4.24 9.69 -v -33.87 -1.98 6.79 -v -35.15 -3.17 7.60 -v -36.39 -4.40 7.03 -v -36.46 -4.33 7.02 -v -35.21 -3.10 7.59 -v -33.93 -1.90 6.78 -v -31.30 -4.44 6.99 -v -31.23 -4.37 6.98 -v -31.34 -4.35 9.66 -v -31.26 -4.28 9.65 -v -32.85 -3.85 7.66 -v -32.46 -3.96 7.67 -v -33.09 -3.63 19.15 -v -33.43 -3.26 19.12 -v -33.13 -3.55 7.63 -v -33.53 -2.77 19.08 -v -33.34 -2.74 20.14 -v -33.25 -3.12 20.17 -v -32.60 -2.69 21.75 -v -32.99 -3.41 20.20 -v -32.62 -3.51 20.21 -v -32.61 -3.76 19.16 -v -32.12 -3.63 19.14 -v -32.05 -3.86 7.65 -v -31.75 -3.56 7.62 -v -31.75 -3.28 19.11 -v -31.62 -3.16 7.59 -v -31.60 -2.78 19.06 -v -31.71 -2.75 7.55 -v -31.71 -2.29 19.02 -v -31.99 -2.45 7.52 -v -32.04 -1.93 18.99 -v -32.38 -2.34 7.52 -v -32.52 -1.79 18.98 -v -32.78 -2.45 7.53 -v -33.01 -1.92 18.99 -v -33.09 -2.74 7.56 -v -33.38 -2.28 19.03 -v -33.22 -3.15 7.60 -v -33.22 -2.35 20.10 -v -32.93 -2.07 20.08 -v -32.54 -1.97 20.06 -v -32.17 -2.08 20.07 -v -31.91 -2.36 20.09 -v -31.82 -2.75 20.13 -v -31.94 -3.13 20.16 -v -32.23 -3.41 20.19 -v -33.52 -1.91 6.78 -v -32.38 -3.12 7.57 -v -33.59 -1.98 6.78 -v -32.45 -3.19 7.58 -v -33.55 -1.82 9.44 -v -33.63 -1.89 9.45 -v -32.41 -3.04 10.24 -v -32.48 -3.11 10.25 -v -31.15 -1.91 9.43 -v -31.22 -1.84 9.43 -v -32.43 -3.11 10.24 -v -32.49 -3.04 10.24 -v -33.67 -4.33 9.68 -v -33.74 -4.26 9.67 -v -31.12 -2.00 6.77 -v -32.39 -3.19 7.58 -v -33.64 -4.42 7.01 -v -33.70 -4.35 7.00 -v -32.46 -3.12 7.57 -v -31.18 -1.93 6.76 -v -28.67 -4.46 6.97 -v -28.59 -4.39 6.96 -v -28.70 -4.37 9.64 -v -28.63 -4.30 9.63 -v -30.21 -3.87 7.64 -v -29.82 -3.98 7.65 -v -30.45 -3.65 19.13 -v -30.79 -3.28 19.10 -v -30.49 -3.57 7.61 -v -30.90 -2.79 19.06 -v -30.70 -2.76 20.12 -v -30.62 -3.14 20.15 -v -29.96 -2.71 21.73 -v -30.35 -3.43 20.18 -v -29.98 -3.53 20.19 -v -29.98 -3.78 19.14 -v -29.49 -3.65 19.12 -v -29.42 -3.88 7.63 -v -29.11 -3.58 7.60 -v -29.12 -3.30 19.09 -v -28.98 -3.18 7.57 -v -28.96 -2.81 19.04 -v -29.07 -2.77 7.53 -v -29.07 -2.31 19.00 -v -29.35 -2.47 7.50 -v -29.41 -1.95 18.97 -v -29.74 -2.36 7.50 -v -29.88 -1.81 18.96 -v -30.15 -2.47 7.51 -v -30.37 -1.94 18.97 -v -30.45 -2.76 7.54 -v -30.74 -2.30 19.01 -v -30.58 -3.17 7.58 -v -30.58 -2.37 20.08 -v -30.29 -2.09 20.06 -v -29.91 -1.99 20.04 -v -29.53 -2.10 20.05 -v -29.27 -2.38 20.07 -v -29.19 -2.77 20.11 -v -29.31 -3.15 20.14 -v -29.60 -3.43 20.17 -v -30.88 -1.93 6.76 -v -29.74 -3.14 7.55 -v -30.95 -2.00 6.76 -v -29.81 -3.21 7.56 -v -30.92 -1.84 9.42 -v -30.99 -1.91 9.43 -v -29.77 -3.06 10.22 -v -29.85 -3.13 10.22 -v -28.51 -1.93 9.41 -v -28.58 -1.86 9.41 -v -29.79 -3.13 10.22 -v -29.86 -3.06 10.22 -v -31.04 -4.35 9.66 -v -31.10 -4.28 9.65 -v -28.48 -2.02 6.75 -v -29.76 -3.21 7.56 -v -31.00 -4.44 6.99 -v -31.07 -4.37 6.98 -v -29.82 -3.14 7.55 -v -28.54 -1.95 6.74 -# 183 vertices - -vn 0.69 -0.72 0.03 -vn -0.52 -0.85 0.01 -vn -0.01 -1.00 0.02 -vn -0.52 -0.85 0.11 -vn -0.89 -0.45 0.10 -vn -0.89 -0.46 -0.01 -vn -0.98 -0.20 0.08 -vn -0.94 -0.18 0.29 -vn -0.85 -0.42 0.32 -vn 0.32 -0.56 0.77 -vn -0.50 -0.79 0.34 -vn -0.01 -0.94 0.35 -vn -0.01 -0.99 0.12 -vn 0.49 -0.86 0.12 -vn 0.50 -0.87 0.02 -vn 0.86 -0.52 0.01 -vn 0.85 -0.51 0.12 -vn 1.00 -0.04 -0.00 -vn 0.99 -0.04 0.10 -vn 0.88 0.47 -0.02 -vn 0.88 0.47 0.08 -vn 0.52 0.85 -0.04 -vn 0.52 0.85 0.07 -vn 0.01 1.00 -0.05 -vn 0.01 1.00 0.06 -vn -0.48 0.87 -0.05 -vn -0.49 0.87 0.05 -vn -0.85 0.53 -0.04 -vn -0.85 0.53 0.06 -vn -0.95 0.29 -0.04 -vn -0.95 0.30 0.07 -vn -0.81 0.52 0.27 -vn -0.91 0.31 0.28 -vn -0.43 0.79 0.44 -vn -0.46 0.85 0.27 -vn 0.01 0.96 0.27 -vn 0.49 0.82 0.29 -vn 0.83 0.46 0.30 -vn 0.95 -0.02 0.32 -vn 0.82 -0.47 0.33 -vn 0.47 -0.81 0.34 -vn -0.01 -0.09 -1.00 -vn 0.25 -0.35 -0.90 -vn -0.02 -0.08 -1.00 -vn -0.27 0.19 -0.94 -vn -0.25 0.35 0.90 -vn 0.01 0.09 1.00 -vn 0.02 0.08 1.00 -vn 0.27 -0.19 0.94 -vn 0.73 0.68 -0.01 -vn 0.27 0.33 0.91 -vn -0.00 0.08 1.00 -vn -0.27 -0.17 0.95 -vn 0.27 0.17 -0.95 -vn 0.00 -0.08 -1.00 -vn -0.27 -0.33 -0.91 -vn -0.69 0.72 -0.03 -vn -0.73 -0.68 0.01 -vn -0.98 -0.21 -0.02 -vn -0.00 -0.09 -1.00 -vn 0.00 0.09 1.00 -# 61 vertex normals - -vt 0.71 0.65 0.00 -vt 0.81 0.65 0.00 -vt 0.64 0.57 0.00 -vt 0.64 0.58 0.00 -vt 0.83 0.57 0.00 -vt 0.85 0.57 0.00 -vt 0.89 0.58 0.00 -vt 0.85 0.58 0.00 -vt 0.83 0.58 0.00 -vt 0.64 0.59 0.00 -vt 0.83 0.59 0.00 -vt 0.64 0.60 0.00 -vt 0.83 0.60 0.00 -vt 0.64 0.61 0.00 -vt 0.83 0.61 0.00 -vt 0.85 0.60 0.00 -vt 0.85 0.61 0.00 -vt 0.89 0.60 0.00 -vt 0.85 0.59 0.00 -vt 0.39 0.73 0.00 -vt 0.39 0.74 0.00 -vt 0.39 0.72 0.00 -vt 0.37 0.73 0.00 -vt 0.37 0.72 0.00 -vt 0.38 0.71 0.00 -vt 0.75 0.65 0.00 -vt 0.69 0.65 0.00 -vt 0.98 0.63 0.00 -vt 0.91 0.63 0.00 -vt 0.98 0.66 0.00 -vt 0.91 0.66 0.00 -vt 0.98 0.70 0.00 -vt 0.91 0.70 0.00 -vt 0.37 0.74 0.00 -vt 0.38 0.74 0.00 -# 35 texture coords - -g P_51_Mustang_Right_Rockets -f 80/38/120 81/38/120 82/39/120 -f 83/39/120 82/39/120 81/38/120 -f 84/40/121 85/41/122 86/42/123 -f 86/42/123 87/42/124 84/40/121 -f 88/40/125 84/40/121 87/42/124 -f 87/42/124 89/42/126 88/40/125 -f 89/42/126 87/42/124 90/43/127 -f 91/43/128 90/43/127 87/42/124 -f 90/43/127 91/43/128 92/44/129 -f 91/43/128 93/43/130 92/44/129 -f 93/43/130 94/45/131 92/44/129 -f 94/45/131 93/43/130 95/46/132 -f 95/46/132 96/46/133 94/45/131 -f 96/46/133 95/46/132 97/41/134 -f 97/41/134 98/41/135 96/46/133 -f 99/46/136 96/46/133 98/41/135 -f 98/41/135 100/47/137 99/46/136 -f 101/48/138 99/46/136 100/47/137 -f 100/47/137 102/47/139 101/48/138 -f 103/48/140 101/48/138 102/47/139 -f 87/42/124 86/42/123 91/43/128 -f 93/43/130 91/43/128 86/42/123 -f 86/42/123 95/46/132 93/43/130 -f 95/46/132 86/42/123 85/41/122 -f 85/41/122 97/41/134 95/46/132 -f 102/47/139 104/47/141 103/48/140 -f 105/48/142 103/48/140 104/47/141 -f 104/47/141 106/49/143 105/48/142 -f 107/50/144 105/48/142 106/49/143 -f 106/49/143 108/49/145 107/50/144 -f 109/50/146 107/50/144 108/49/145 -f 108/49/145 110/49/147 109/50/146 -f 111/50/148 109/50/146 110/49/147 -f 110/49/147 112/51/149 111/50/148 -f 89/52/150 111/50/148 112/51/149 -f 111/50/148 89/52/150 113/53/151 -f 90/54/152 113/53/151 89/52/150 -f 113/53/151 90/54/152 92/55/153 -f 114/53/154 113/53/151 92/55/153 -f 115/53/155 114/53/154 92/55/153 -f 114/53/154 115/53/155 109/50/146 -f 107/50/144 109/50/146 115/53/155 -f 115/53/155 116/56/156 107/50/144 -f 116/56/156 115/53/155 92/55/153 -f 105/48/142 107/50/144 116/56/156 -f 116/56/156 117/56/157 105/48/142 -f 103/48/140 105/48/142 117/56/157 -f 117/56/157 118/56/158 103/48/140 -f 101/48/138 103/48/140 118/56/158 -f 118/56/158 119/45/159 101/48/138 -f 99/46/136 101/48/138 119/45/159 -f 119/45/159 120/45/160 99/46/136 -f 96/46/133 99/46/136 120/45/160 -f 120/45/160 94/45/131 96/46/133 -f 94/45/131 120/45/160 92/44/129 -f 120/45/160 119/45/159 92/44/129 -f 119/45/159 118/56/158 92/44/129 -f 118/56/158 117/56/157 92/44/129 -f 117/56/157 116/56/156 92/44/129 -f 102/57/161 100/57/161 104/58/161 -f 100/57/161 97/59/161 104/58/161 -f 97/59/161 112/60/161 104/58/161 -f 84/61/161 112/60/161 97/59/161 -f 88/61/161 112/60/161 84/61/161 -f 98/59/161 97/59/161 100/57/161 -f 85/62/161 84/61/161 97/59/161 -f 121/39/162 122/63/161 123/39/162 -f 124/63/163 123/39/162 122/63/161 -f 124/63/163 122/63/161 80/64/164 -f 81/64/164 80/64/164 122/63/161 -f 125/39/165 126/39/165 127/63/166 -f 128/63/167 127/63/166 126/39/165 -f 127/63/166 128/63/167 83/64/168 -f 82/64/168 83/64/168 128/63/167 -f 121/65/169 125/66/169 122/67/169 -f 127/68/169 122/67/169 125/66/169 -f 122/67/169 127/68/169 81/69/169 -f 83/70/169 81/69/169 127/68/169 -f 129/39/170 130/39/170 131/63/171 -f 132/63/166 131/63/171 130/39/170 -f 131/63/171 132/63/166 133/64/172 -f 134/64/172 133/64/172 132/63/166 -f 135/65/120 129/66/120 136/67/120 -f 131/68/120 136/67/120 129/66/120 -f 136/67/120 131/68/120 137/69/120 -f 133/70/120 137/69/120 131/68/120 -f 137/64/173 138/64/173 136/63/174 -f 139/63/161 136/63/174 138/64/173 -f 139/63/161 140/39/175 136/63/174 -f 135/39/175 136/63/174 140/39/175 -f 138/65/176 134/66/176 139/67/176 -f 132/68/176 139/67/176 134/66/176 -f 139/67/176 132/68/176 140/69/176 -f 130/70/176 140/69/176 132/68/176 -f 80/65/177 82/66/177 124/67/177 -f 128/68/177 124/67/177 82/66/177 -f 124/67/177 128/68/177 123/69/177 -f 126/70/177 123/69/177 128/68/177 -f 121/38/176 123/38/176 125/39/176 -f 126/39/176 125/39/176 123/38/176 -f 138/38/177 137/38/177 134/39/177 -f 133/39/177 134/39/177 137/38/177 -f 135/38/169 140/38/169 129/39/169 -f 130/39/169 129/39/169 140/38/169 -f 109/50/146 111/50/148 114/53/154 -f 113/53/151 114/53/154 111/50/148 -f 112/40/178 88/40/125 89/42/126 -f 110/60/161 108/71/161 112/60/161 -f 112/60/161 108/71/161 104/58/161 -f 104/58/161 108/71/161 106/72/161 -f 141/38/120 142/38/120 143/39/120 -f 144/39/120 143/39/120 142/38/120 -f 145/40/121 146/41/122 147/42/123 -f 147/42/123 148/42/124 145/40/121 -f 149/40/125 145/40/121 148/42/124 -f 148/42/124 150/42/126 149/40/125 -f 150/42/126 148/42/124 151/43/127 -f 152/43/128 151/43/127 148/42/124 -f 151/43/127 152/43/128 153/44/129 -f 152/43/128 154/43/130 153/44/129 -f 154/43/130 155/45/131 153/44/129 -f 155/45/131 154/43/130 156/46/132 -f 156/46/132 157/46/133 155/45/131 -f 157/46/133 156/46/132 158/41/134 -f 158/41/134 159/41/135 157/46/133 -f 160/46/136 157/46/133 159/41/135 -f 159/41/135 161/47/137 160/46/136 -f 162/48/138 160/46/136 161/47/137 -f 161/47/137 163/47/139 162/48/138 -f 164/48/140 162/48/138 163/47/139 -f 148/42/124 147/42/123 152/43/128 -f 154/43/130 152/43/128 147/42/123 -f 147/42/123 156/46/132 154/43/130 -f 156/46/132 147/42/123 146/41/122 -f 146/41/122 158/41/134 156/46/132 -f 163/47/139 165/47/141 164/48/140 -f 166/48/142 164/48/140 165/47/141 -f 165/47/141 167/49/143 166/48/142 -f 168/50/144 166/48/142 167/49/143 -f 167/49/143 169/49/145 168/50/144 -f 170/50/146 168/50/144 169/49/145 -f 169/49/145 171/49/147 170/50/146 -f 172/50/148 170/50/146 171/49/147 -f 171/49/147 173/51/149 172/50/148 -f 150/52/150 172/50/148 173/51/149 -f 172/50/148 150/52/150 174/53/151 -f 151/54/152 174/53/151 150/52/150 -f 174/53/151 151/54/152 153/55/153 -f 175/53/154 174/53/151 153/55/153 -f 176/53/155 175/53/154 153/55/153 -f 175/53/154 176/53/155 170/50/146 -f 168/50/144 170/50/146 176/53/155 -f 176/53/155 177/56/156 168/50/144 -f 177/56/156 176/53/155 153/55/153 -f 166/48/142 168/50/144 177/56/156 -f 177/56/156 178/56/157 166/48/142 -f 164/48/140 166/48/142 178/56/157 -f 178/56/157 179/56/158 164/48/140 -f 162/48/138 164/48/140 179/56/158 -f 179/56/158 180/45/159 162/48/138 -f 160/46/136 162/48/138 180/45/159 -f 180/45/159 181/45/160 160/46/136 -f 157/46/133 160/46/136 181/45/160 -f 181/45/160 155/45/131 157/46/133 -f 155/45/131 181/45/160 153/44/129 -f 181/45/160 180/45/159 153/44/129 -f 180/45/159 179/56/158 153/44/129 -f 179/56/158 178/56/157 153/44/129 -f 178/56/157 177/56/156 153/44/129 -f 163/57/161 161/57/161 165/58/161 -f 161/57/161 158/59/161 165/58/161 -f 158/59/161 173/60/161 165/58/161 -f 145/61/161 173/60/161 158/59/161 -f 149/61/161 173/60/161 145/61/161 -f 159/59/161 158/59/161 161/57/161 -f 146/62/161 145/61/161 158/59/161 -f 182/39/162 183/63/161 184/39/162 -f 185/63/163 184/39/162 183/63/161 -f 185/63/163 183/63/161 141/64/164 -f 142/64/164 141/64/164 183/63/161 -f 186/39/165 187/39/165 188/63/166 -f 189/63/167 188/63/166 187/39/165 -f 188/63/166 189/63/167 144/64/168 -f 143/64/168 144/64/168 189/63/167 -f 182/65/169 186/66/169 183/67/169 -f 188/68/169 183/67/169 186/66/169 -f 183/67/169 188/68/169 142/69/169 -f 144/70/169 142/69/169 188/68/169 -f 190/39/170 191/39/170 192/63/171 -f 193/63/166 192/63/171 191/39/170 -f 192/63/171 193/63/166 194/64/172 -f 195/64/172 194/64/172 193/63/166 -f 196/65/120 190/66/120 197/67/120 -f 192/68/120 197/67/120 190/66/120 -f 197/67/120 192/68/120 198/69/120 -f 194/70/120 198/69/120 192/68/120 -f 198/64/173 199/64/173 197/63/174 -f 200/63/179 197/63/174 199/64/173 -f 200/63/179 201/39/175 197/63/174 -f 196/39/175 197/63/174 201/39/175 -f 199/65/176 195/66/176 200/67/176 -f 193/68/176 200/67/176 195/66/176 -f 200/67/176 193/68/176 201/69/176 -f 191/70/176 201/69/176 193/68/176 -f 141/65/177 143/66/177 185/67/177 -f 189/68/177 185/67/177 143/66/177 -f 185/67/177 189/68/177 184/69/177 -f 187/70/177 184/69/177 189/68/177 -f 182/38/176 184/38/176 186/39/176 -f 187/39/176 186/39/176 184/38/176 -f 199/38/177 198/38/177 195/39/177 -f 194/39/177 195/39/177 198/38/177 -f 196/38/169 201/38/169 190/39/169 -f 191/39/169 190/39/169 201/38/169 -f 170/50/146 172/50/148 175/53/154 -f 174/53/151 175/53/154 172/50/148 -f 173/40/178 149/40/125 150/42/126 -f 171/60/161 169/71/161 173/60/161 -f 173/60/161 169/71/161 165/58/161 -f 165/58/161 169/71/161 167/72/161 -f 202/38/120 203/38/120 204/39/120 -f 205/39/120 204/39/120 203/38/120 -f 206/40/121 207/41/122 208/42/123 -f 208/42/123 209/42/124 206/40/121 -f 210/40/125 206/40/121 209/42/124 -f 209/42/124 211/42/126 210/40/125 -f 211/42/126 209/42/124 212/43/127 -f 213/43/128 212/43/127 209/42/124 -f 212/43/127 213/43/128 214/44/129 -f 213/43/128 215/43/130 214/44/129 -f 215/43/130 216/45/131 214/44/129 -f 216/45/131 215/43/130 217/46/132 -f 217/46/132 218/46/133 216/45/131 -f 218/46/133 217/46/132 219/41/134 -f 219/41/134 220/41/135 218/46/133 -f 221/46/136 218/46/133 220/41/135 -f 220/41/135 222/47/137 221/46/136 -f 223/48/138 221/46/136 222/47/137 -f 222/47/137 224/47/139 223/48/138 -f 225/48/140 223/48/138 224/47/139 -f 209/42/124 208/42/123 213/43/128 -f 215/43/130 213/43/128 208/42/123 -f 208/42/123 217/46/132 215/43/130 -f 217/46/132 208/42/123 207/41/122 -f 207/41/122 219/41/134 217/46/132 -f 224/47/139 226/47/141 225/48/140 -f 227/48/142 225/48/140 226/47/141 -f 226/47/141 228/49/143 227/48/142 -f 229/50/144 227/48/142 228/49/143 -f 228/49/143 230/49/145 229/50/144 -f 231/50/146 229/50/144 230/49/145 -f 230/49/145 232/49/147 231/50/146 -f 233/50/148 231/50/146 232/49/147 -f 232/49/147 234/51/149 233/50/148 -f 211/52/150 233/50/148 234/51/149 -f 233/50/148 211/52/150 235/53/151 -f 212/54/152 235/53/151 211/52/150 -f 235/53/151 212/54/152 214/55/153 -f 236/53/154 235/53/151 214/55/153 -f 237/53/155 236/53/154 214/55/153 -f 236/53/154 237/53/155 231/50/146 -f 229/50/144 231/50/146 237/53/155 -f 237/53/155 238/56/156 229/50/144 -f 238/56/156 237/53/155 214/55/153 -f 227/48/142 229/50/144 238/56/156 -f 238/56/156 239/56/157 227/48/142 -f 225/48/140 227/48/142 239/56/157 -f 239/56/157 240/56/158 225/48/140 -f 223/48/138 225/48/140 240/56/158 -f 240/56/158 241/45/159 223/48/138 -f 221/46/136 223/48/138 241/45/159 -f 241/45/159 242/45/160 221/46/136 -f 218/46/133 221/46/136 242/45/160 -f 242/45/160 216/45/131 218/46/133 -f 216/45/131 242/45/160 214/44/129 -f 242/45/160 241/45/159 214/44/129 -f 241/45/159 240/56/158 214/44/129 -f 240/56/158 239/56/157 214/44/129 -f 239/56/157 238/56/156 214/44/129 -f 224/57/161 222/57/161 226/58/161 -f 222/57/161 219/59/161 226/58/161 -f 219/59/161 234/60/161 226/58/161 -f 206/61/161 234/60/161 219/59/161 -f 210/61/161 234/60/161 206/61/161 -f 220/59/161 219/59/161 222/57/161 -f 207/62/161 206/61/161 219/59/161 -f 243/39/162 244/63/161 245/39/162 -f 246/63/163 245/39/162 244/63/161 -f 246/63/163 244/63/161 202/64/164 -f 203/64/164 202/64/164 244/63/161 -f 247/39/165 248/39/165 249/63/166 -f 250/63/167 249/63/166 248/39/165 -f 249/63/166 250/63/167 205/64/168 -f 204/64/168 205/64/168 250/63/167 -f 243/65/169 247/66/169 244/67/169 -f 249/68/169 244/67/169 247/66/169 -f 244/67/169 249/68/169 203/69/169 -f 205/70/169 203/69/169 249/68/169 -f 251/39/170 252/39/170 253/63/171 -f 254/63/180 253/63/171 252/39/170 -f 253/63/171 254/63/180 255/64/172 -f 256/64/172 255/64/172 254/63/180 -f 257/65/120 251/66/120 258/67/120 -f 253/68/120 258/67/120 251/66/120 -f 258/67/120 253/68/120 259/69/120 -f 255/70/120 259/69/120 253/68/120 -f 259/64/173 260/64/173 258/63/174 -f 261/63/161 258/63/174 260/64/173 -f 261/63/161 262/39/175 258/63/174 -f 257/39/175 258/63/174 262/39/175 -f 260/65/176 256/66/176 261/67/176 -f 254/68/176 261/67/176 256/66/176 -f 261/67/176 254/68/176 262/69/176 -f 252/70/176 262/69/176 254/68/176 -f 202/65/177 204/66/177 246/67/177 -f 250/68/177 246/67/177 204/66/177 -f 246/67/177 250/68/177 245/69/177 -f 248/70/177 245/69/177 250/68/177 -f 243/38/176 245/38/176 247/39/176 -f 248/39/176 247/39/176 245/38/176 -f 260/38/177 259/38/177 256/39/177 -f 255/39/177 256/39/177 259/38/177 -f 257/38/169 262/38/169 251/39/169 -f 252/39/169 251/39/169 262/38/169 -f 231/50/146 233/50/148 236/53/154 -f 235/53/151 236/53/154 233/50/148 -f 234/40/178 210/40/125 211/42/126 -f 232/60/161 230/71/161 234/60/161 -f 234/60/161 230/71/161 226/58/161 -f 226/58/161 230/71/161 228/72/161 -# 330 faces - -# -# object P_51_Mustang_Right_Wing -# - -v -48.14 -0.16 8.05 -v -48.99 -0.03 6.01 -v -48.12 0.14 8.01 -v -29.31 0.19 6.44 -v -37.50 0.25 7.12 -v -30.21 0.47 8.72 -v -37.42 0.46 8.93 -v -44.57 0.16 7.71 -v -44.63 0.35 8.79 -v -47.59 0.24 8.96 -v -44.79 0.51 12.04 -v -47.99 0.25 12.03 -v -45.36 0.48 14.13 -v -48.50 0.36 13.97 -v -48.43 0.22 15.21 -v -49.84 0.07 14.16 -v -49.74 -0.04 15.39 -v -50.25 -0.08 14.12 -v -50.04 -0.09 15.40 -v -49.58 -0.10 16.12 -v -48.28 -0.12 16.74 -v -45.18 0.20 15.46 -v -29.52 0.68 12.85 -v -45.01 -0.15 17.06 -v -37.84 0.31 16.08 -v -37.82 -0.24 17.66 -v -30.95 -0.31 18.28 -v -29.88 0.43 16.64 -v -30.50 0.73 14.92 -v -37.93 0.62 14.50 -v -37.87 0.66 12.48 -v -37.95 -1.08 12.58 -v -38.02 -1.05 14.59 -v -44.85 -0.90 12.10 -v -29.86 -1.33 15.03 -v -37.90 -0.94 16.16 -v -29.38 -1.15 16.73 -v -44.96 -0.79 15.49 -v -48.45 -0.33 15.36 -v -45.08 -0.88 14.18 -v -48.53 -0.34 14.14 -v -48.02 -0.34 12.18 -v -49.75 -0.18 12.22 -v -49.14 -0.12 8.71 -v -47.61 -0.23 9.09 -v -44.67 -0.62 8.83 -v -44.59 -0.38 7.72 -v -37.48 -0.85 9.01 -v -37.54 -0.59 7.18 -v -30.23 -1.03 8.80 -v -29.34 -0.65 6.49 -v -29.61 -1.28 12.96 -v -49.23 0.13 8.56 -v -49.74 0.14 12.03 -v -50.13 -0.08 12.02 -v -49.58 -0.07 8.63 -v -49.75 -0.17 15.42 -v -49.85 -0.23 14.35 -v -29.74 -1.25 16.26 -v -29.78 -2.23 16.37 -v -29.67 -1.06 11.16 -v -29.74 -2.36 12.28 -v -29.92 -2.36 12.29 -v -29.96 -2.23 16.38 -v -29.85 -1.06 11.16 -v -29.92 -1.24 16.26 -v -32.53 -1.18 16.28 -v -32.58 -2.21 16.40 -v -32.35 -1.18 16.27 -v -32.40 -2.21 16.39 -v -32.54 -2.34 12.31 -v -32.36 -2.34 12.30 -v -32.46 -0.98 11.17 -v -32.28 -0.98 11.17 -v -35.27 -1.05 16.29 -v -35.32 -2.19 16.42 -v -35.09 -1.06 16.29 -v -35.15 -2.19 16.42 -v -35.28 -2.32 12.33 -v -35.11 -2.32 12.33 -v -35.21 -0.94 11.19 -v -35.03 -0.95 11.19 -v -29.68 -0.25 3.04 -v -21.55 0.05 5.47 -v -22.30 -1.51 12.76 -v -22.41 -1.49 15.29 -v -22.62 -1.36 17.25 -v -23.33 -0.39 18.94 -v -19.50 -0.44 19.26 -v -19.00 -1.50 17.12 -v -14.13 -0.49 20.28 -v -13.50 -1.56 17.59 -v -14.82 -1.75 15.41 -v -18.80 -1.58 15.14 -v -18.58 -1.57 12.58 -v -22.41 -1.16 8.70 -v -21.59 -0.77 5.53 -v -18.71 -1.36 9.03 -v -18.35 -1.00 6.58 -v -14.07 -1.37 9.24 -v -12.73 -0.99 6.36 -v -18.23 -0.74 5.10 -v -12.47 -0.77 4.38 -v -12.44 -0.05 4.34 -v -18.19 -0.02 5.06 -v -12.67 0.19 6.29 -v -18.29 0.22 6.52 -v -14.04 0.46 9.14 -v -18.63 0.56 8.92 -v -13.44 0.66 12.23 -v -18.47 0.74 12.46 -v -22.34 0.49 8.60 -v -22.20 0.75 12.64 -v -22.31 0.72 15.17 -v -22.53 0.53 17.14 -v -18.91 0.57 17.52 -v -13.40 0.59 18.05 -v -14.35 0.80 15.32 -v -18.69 0.73 15.02 -v -18.32 -0.76 20.39 -v -18.70 -0.53 20.37 -v -18.30 -0.83 18.46 -v -18.68 -0.59 18.44 -v -18.68 -0.07 20.33 -v -18.66 -0.13 18.40 -v -18.28 0.16 20.30 -v -18.26 0.10 18.37 -v -17.89 -0.08 20.32 -v -17.87 -0.14 18.39 -v -17.92 -0.54 20.36 -v -17.90 -0.60 18.43 -v -13.54 -1.60 12.35 -v -19.63 -0.07 20.24 -v -20.01 0.17 20.22 -v -19.65 -0.53 20.28 -v -20.44 -0.52 20.29 -v -20.05 -0.75 20.31 -v -20.41 -0.06 20.25 -v -21.96 -0.75 20.15 -v -22.34 -0.51 20.13 -v -21.94 -0.81 18.22 -v -22.32 -0.57 18.21 -v -22.32 -0.05 20.09 -v -22.30 -0.11 18.16 -v -21.92 0.18 20.07 -v -21.90 0.11 18.14 -v -21.53 -0.06 20.08 -v -21.51 -0.12 18.16 -v -21.56 -0.52 20.13 -v -21.54 -0.58 18.20 -v -26.32 -1.30 15.42 -v -26.39 -2.57 15.66 -v -26.01 -1.30 15.43 -v -26.08 -2.57 15.66 -v -26.38 -2.72 15.16 -v -26.07 -2.72 15.16 -v -25.97 -2.76 11.48 -v -26.29 -2.76 11.48 -v -26.19 -1.32 10.34 -v -25.88 -1.32 10.34 -v -20.03 -0.82 18.38 -v -20.42 -0.58 18.36 -v -20.39 -0.12 18.32 -v -19.99 0.11 18.29 -v -19.61 -0.13 18.31 -v -19.63 -0.59 18.35 -v -24.91 -3.09 9.88 -v -26.21 -2.73 9.87 -v -24.99 -3.07 16.55 -v -26.29 -2.70 16.54 -v -27.54 -3.07 9.90 -v -27.63 -3.05 16.58 -v -28.55 -4.05 9.98 -v -28.64 -4.02 16.65 -v -28.97 -5.38 10.07 -v -29.05 -5.36 16.74 -v -28.68 -6.73 10.15 -v -28.76 -6.70 16.82 -v -27.76 -7.71 10.20 -v -27.85 -7.69 16.87 -v -26.46 -8.08 10.21 -v -26.54 -8.06 16.88 -v -25.13 -7.74 10.18 -v -25.21 -7.71 16.85 -v -24.11 -6.76 10.11 -v -24.20 -6.73 16.78 -v -23.70 -5.42 10.02 -v -23.78 -5.40 16.69 -v -23.99 -4.08 9.93 -v -24.07 -4.06 16.60 -v -28.86 -5.35 18.00 -v -28.59 -6.59 18.07 -v -27.75 -7.50 18.12 -v -26.55 -7.84 18.13 -v -25.32 -7.52 18.10 -v -24.39 -6.62 18.03 -v -24.00 -5.39 17.95 -v -24.27 -4.15 17.87 -v -25.12 -3.24 17.82 -v -26.32 -2.90 17.81 -v -28.10 -6.30 19.61 -v -27.46 -6.99 19.65 -v -27.36 -5.86 20.77 -v -27.47 -5.35 20.74 -v -28.31 -5.35 19.56 -v -27.55 -3.23 17.85 -v -28.48 -4.12 17.91 -v -28.01 -4.41 19.49 -v -27.31 -4.84 20.70 -v -26.47 -5.36 21.07 -v -27.01 -6.24 20.79 -v -26.54 -7.25 19.66 -v -25.60 -7.01 19.63 -v -24.89 -6.32 19.58 -v -24.60 -5.38 19.52 -v -24.80 -4.44 19.46 -v -25.45 -3.74 19.42 -v -26.36 -3.48 19.42 -v -27.30 -3.73 19.44 -v -26.93 -4.47 20.68 -v -26.42 -4.34 20.66 -v -25.92 -4.48 20.67 -v -25.57 -4.86 20.69 -v -25.46 -5.37 20.72 -v -25.62 -5.88 20.75 -v -26.01 -6.25 20.78 -v -26.52 -6.38 20.79 -v -27.02 -4.02 6.72 -v -26.22 -3.82 6.70 -v -25.44 -4.04 6.71 -v -24.89 -4.63 6.74 -v -24.72 -5.43 6.79 -v -24.97 -6.23 6.84 -v -25.57 -6.81 6.89 -v -26.37 -7.02 6.91 -v -27.15 -6.80 6.90 -v -27.70 -6.21 6.87 -v -26.53 -4.91 4.15 -v -26.23 -4.84 4.15 -v -27.87 -5.41 6.82 -v -27.62 -4.61 6.77 -v -26.75 -5.13 4.17 -v -26.26 -5.43 3.93 -v -25.95 -4.92 4.15 -v -25.74 -5.14 4.16 -v -25.68 -5.43 4.18 -v -25.77 -5.73 4.20 -v -25.99 -5.94 4.21 -v -26.29 -6.02 4.22 -v -26.58 -5.94 4.22 -v -26.78 -5.72 4.21 -v -26.85 -5.42 4.19 -# 252 vertices - -vn 0.92 -0.09 -0.39 -vn -0.00 0.99 -0.12 -vn -0.01 0.99 -0.11 -vn -0.00 1.00 -0.09 -vn -0.01 1.00 -0.09 -vn -0.03 0.99 -0.17 -vn -0.03 0.99 -0.12 -vn -0.04 1.00 -0.06 -vn -0.04 1.00 -0.02 -vn -0.06 1.00 -0.03 -vn -0.03 1.00 0.09 -vn -0.11 0.99 0.03 -vn -0.09 0.98 0.16 -vn -0.28 0.96 0.07 -vn -0.18 0.98 0.09 -vn -0.34 0.94 0.05 -vn -0.16 0.99 0.06 -vn -0.14 0.98 0.16 -vn -0.04 0.97 0.22 -vn -0.02 0.98 0.21 -vn -0.01 1.00 -0.04 -vn -0.02 0.97 0.22 -vn -0.02 0.96 0.26 -vn -0.02 0.94 0.34 -vn -0.04 0.92 0.38 -vn -0.03 0.96 0.28 -vn -0.02 1.00 0.08 -vn -0.02 0.99 0.10 -vn -0.01 1.00 -0.02 -vn -0.03 -1.00 -0.03 -vn -0.03 -1.00 0.04 -vn -0.09 -0.99 -0.04 -vn -0.03 -1.00 0.05 -vn -0.04 -0.97 0.25 -vn -0.05 -0.90 0.43 -vn -0.05 -0.91 0.42 -vn -0.05 -0.93 0.38 -vn -0.07 -0.97 0.21 -vn -0.11 -0.97 0.22 -vn -0.13 -0.99 0.07 -vn -0.09 -1.00 0.03 -vn -0.12 -0.99 -0.01 -vn -0.13 -0.99 -0.04 -vn -0.09 -1.00 -0.03 -vn -0.06 -1.00 -0.04 -vn -0.11 -0.99 -0.04 -vn -0.08 -1.00 -0.04 -vn -0.07 -0.99 -0.14 -vn -0.05 -0.98 -0.21 -vn -0.03 -0.99 -0.10 -vn -0.03 -0.99 -0.14 -vn -0.02 -0.99 -0.11 -vn -0.02 -0.99 -0.17 -vn -0.02 -1.00 -0.04 -vn -0.28 0.96 -0.07 -vn -0.29 0.96 -0.04 -vn -0.47 0.88 -0.05 -vn -0.51 0.86 -0.09 -vn -0.15 0.99 -0.08 -vn -0.04 1.00 -0.08 -vn -0.09 -0.98 0.16 -vn -0.13 -0.98 0.15 -vn -0.10 -0.98 0.15 -vn -0.24 -0.96 0.12 -vn -0.28 -0.96 0.08 -vn -0.33 -0.94 0.00 -vn -0.37 -0.93 0.04 -vn -0.26 -0.97 -0.03 -vn -0.11 -0.99 0.06 -vn -0.09 -1.00 0.01 -vn 1.00 -0.05 0.01 -vn -1.00 0.05 -0.01 -vn 0.02 0.12 0.99 -vn -0.01 -1.00 0.03 -vn -0.02 -0.64 -0.77 -vn 0.02 0.11 0.99 -vn -0.08 -0.05 -1.00 -vn -0.08 0.09 -0.99 -vn 1.00 0.02 -0.07 -vn -0.08 -0.06 -0.99 -vn -0.08 -0.08 -0.99 -vn -0.08 0.03 -1.00 -vn -0.10 -0.12 -0.99 -vn 0.93 0.01 0.36 -vn 0.93 -0.02 0.37 -vn 0.99 -0.05 -0.15 -vn 0.99 -0.02 -0.17 -vn 0.87 0.29 0.40 -vn 0.99 -0.04 0.12 -vn 0.92 0.27 -0.29 -vn 0.75 0.27 0.61 -vn -0.02 -0.66 -0.75 -vn 0.99 -0.05 -0.10 -vn -0.02 -1.00 -0.06 -vn -0.03 -0.99 -0.11 -vn -0.04 -0.99 -0.11 -vn -0.01 0.99 -0.13 -vn -0.01 1.00 -0.08 -vn -0.92 0.09 0.39 -vn 0.08 0.12 0.99 -vn 0.08 0.06 0.99 -vn -0.12 -0.06 -0.99 -vn -0.03 -1.00 -0.04 -vn -0.03 -1.00 0.03 -vn -0.02 -1.00 0.04 -vn -0.04 -0.96 0.29 -vn -0.04 -0.96 0.28 -vn -0.06 -0.88 0.47 -vn -0.06 -0.90 0.44 -vn -0.04 -0.97 0.23 -vn -0.05 -0.92 0.38 -vn -0.03 -0.96 0.26 -vn -0.02 -1.00 0.03 -vn -0.03 -1.00 0.01 -vn -0.02 -0.99 -0.16 -vn -0.02 -0.99 -0.10 -vn -0.01 -0.99 -0.16 -vn -0.00 -0.99 -0.11 -vn -0.01 -0.99 -0.13 -vn -0.01 -0.99 -0.17 -vn -0.01 0.99 -0.12 -vn -0.00 0.99 -0.16 -vn 0.00 0.99 -0.14 -vn 0.02 1.00 -0.09 -vn 0.01 1.00 -0.10 -vn 0.02 1.00 -0.05 -vn 0.00 1.00 -0.03 -vn -0.00 1.00 -0.10 -vn -0.01 1.00 -0.03 -vn -0.00 1.00 -0.03 -vn -0.01 1.00 0.05 -vn -0.00 1.00 0.08 -vn -0.02 0.96 0.29 -vn -0.03 0.96 0.27 -vn -0.03 0.90 0.44 -vn -0.07 0.88 0.47 -vn -0.04 0.96 0.28 -vn -0.05 0.90 0.43 -vn -0.01 1.00 0.03 -vn -0.88 -0.48 0.01 -vn -0.89 -0.46 0.01 -vn -0.86 0.51 -0.03 -vn -0.84 0.54 -0.03 -vn 0.01 1.00 -0.03 -vn 0.02 1.00 -0.03 -vn 0.89 0.46 -0.01 -vn 0.88 0.48 -0.01 -vn 0.84 -0.54 0.03 -vn 0.86 -0.51 0.03 -vn -0.00 0.99 -0.14 -vn -0.00 0.99 -0.13 -vn -0.00 1.00 -0.08 -vn -0.01 -1.00 -0.06 -vn 0.01 0.09 1.00 -vn -0.00 0.18 0.98 -vn -0.01 -0.96 0.29 -vn -0.01 -1.00 0.01 -vn -0.00 -0.62 -0.78 -vn -0.02 0.92 0.40 -vn -0.05 -0.90 0.44 -vn 1.00 -0.05 0.03 -vn -1.00 0.05 -0.03 -vn 0.99 -0.04 0.13 -vn 0.98 -0.05 -0.17 -vn 0.98 -0.02 -0.19 -vn 0.91 0.01 0.42 -vn 0.90 -0.02 0.43 -vn 0.91 -0.15 0.37 -vn 0.96 -0.03 0.29 -vn 0.94 0.03 -0.33 -vn 0.85 -0.17 -0.50 -vn 0.96 -0.10 0.27 -vn -0.75 -0.27 -0.61 -vn -0.93 0.02 -0.37 -vn -0.93 -0.01 -0.36 -vn -0.99 0.02 0.15 -vn -0.99 0.05 0.16 -vn -0.99 0.04 -0.12 -vn -0.87 -0.29 -0.40 -vn -0.92 -0.27 0.29 -vn 0.52 0.85 0.00 -vn 0.01 1.00 -0.00 -vn -0.48 0.88 -0.01 -vn -0.50 0.87 -0.01 -vn -0.85 0.53 -0.01 -vn -0.86 0.52 -0.01 -vn -1.00 0.03 -0.01 -vn -0.89 -0.46 -0.01 -vn -0.88 -0.47 -0.01 -vn -0.52 -0.85 -0.00 -vn -0.01 -1.00 0.00 -vn 0.50 -0.87 0.01 -vn 0.48 -0.88 0.01 -vn 0.86 -0.52 0.01 -vn 0.85 -0.53 0.01 -vn 1.00 -0.03 0.01 -vn 0.88 0.47 0.01 -vn 0.89 0.46 0.01 -vn -0.99 0.06 0.15 -vn -0.88 -0.44 0.16 -vn -0.97 0.06 0.24 -vn -0.86 -0.44 0.25 -vn -0.52 -0.84 0.17 -vn -0.51 -0.82 0.26 -vn -0.01 -0.99 0.17 -vn -0.01 -0.96 0.26 -vn 0.49 -0.85 0.17 -vn 0.48 -0.84 0.26 -vn 0.85 -0.50 0.17 -vn 0.83 -0.50 0.26 -vn 0.98 -0.02 0.17 -vn 0.96 -0.03 0.26 -vn 0.87 0.47 0.17 -vn 0.85 0.46 0.26 -vn 0.51 0.84 0.17 -vn 0.50 0.83 0.26 -vn 0.02 0.99 0.16 -vn 0.01 0.97 0.25 -vn -0.79 -0.39 0.47 -vn -0.47 -0.74 0.48 -vn -0.55 -0.24 0.80 -vn -0.62 0.08 0.78 -vn -0.89 0.07 0.45 -vn -0.47 0.87 0.15 -vn -0.47 0.85 0.24 -vn -0.83 0.54 0.15 -vn -0.82 0.52 0.23 -vn -0.75 0.49 0.44 -vn -0.53 0.37 0.76 -vn 0.01 0.06 1.00 -vn -0.32 -0.49 0.81 -vn -0.01 -0.88 0.48 -vn 0.45 -0.76 0.47 -vn 0.76 -0.44 0.47 -vn 0.89 -0.01 0.46 -vn 0.78 0.43 0.46 -vn 0.45 0.76 0.46 -vn 0.01 0.89 0.45 -vn -0.43 0.79 0.44 -vn -0.30 0.58 0.76 -vn 0.01 0.65 0.76 -vn 0.32 0.56 0.76 -vn 0.55 0.33 0.77 -vn 0.63 0.02 0.78 -vn 0.54 -0.29 0.79 -vn 0.32 -0.51 0.80 -vn 0.00 -0.59 0.81 -vn -0.48 0.82 -0.32 -vn 0.01 0.95 -0.33 -vn -0.47 0.81 -0.34 -vn 0.01 0.94 -0.35 -vn 0.50 0.80 -0.32 -vn 0.50 0.80 -0.34 -vn 0.85 0.42 -0.31 -vn 0.84 0.42 -0.33 -vn 0.95 -0.07 -0.30 -vn 0.94 -0.06 -0.32 -vn 0.80 -0.52 -0.29 -vn 0.80 -0.51 -0.31 -vn 0.45 -0.84 -0.30 -vn 0.45 -0.83 -0.32 -vn -0.02 -0.95 -0.31 -vn -0.01 -0.95 -0.33 -vn -0.49 -0.81 -0.32 -vn -0.48 -0.81 -0.34 -vn -0.83 -0.46 -0.32 -vn -0.83 -0.45 -0.34 -vn -0.38 0.63 -0.68 -vn 0.00 0.73 -0.69 -vn -0.95 0.01 -0.32 -vn -0.94 0.02 -0.34 -vn -0.82 0.47 -0.32 -vn -0.81 0.48 -0.34 -vn -0.65 0.36 -0.67 -vn -0.01 -0.05 -1.00 -vn 0.39 0.61 -0.68 -vn 0.67 0.31 -0.67 -vn 0.75 -0.07 -0.65 -vn 0.64 -0.43 -0.64 -vn 0.36 -0.68 -0.63 -vn -0.01 -0.77 -0.64 -vn -0.39 -0.66 -0.64 -vn -0.66 -0.38 -0.65 -vn -0.75 -0.00 -0.66 -# 284 vertex normals - -vt 0.50 0.03 0.00 -vt 0.49 0.03 0.00 -vt 0.71 0.21 0.00 -vt 0.82 0.22 0.00 -vt 0.73 0.24 0.00 -vt 0.82 0.24 0.00 -vt 0.92 0.23 0.00 -vt 0.92 0.25 0.00 -vt 0.96 0.24 0.00 -vt 0.92 0.29 0.00 -vt 0.96 0.29 0.00 -vt 0.93 0.32 0.00 -vt 0.97 0.32 0.00 -vt 0.97 0.34 0.00 -vt 0.99 0.32 0.00 -vt 0.99 0.34 0.00 -vt 0.98 0.35 0.00 -vt 0.97 0.37 0.00 -vt 0.92 0.35 0.00 -vt 0.72 0.31 0.00 -vt 0.92 0.37 0.00 -vt 0.83 0.36 0.00 -vt 0.83 0.38 0.00 -vt 0.73 0.40 0.00 -vt 0.72 0.37 0.00 -vt 0.73 0.34 0.00 -vt 0.83 0.33 0.00 -vt 0.83 0.30 0.00 -vt 0.12 0.42 0.00 -vt 0.14 0.43 0.00 -vt 0.10 0.50 0.00 -vt 0.16 0.34 0.00 -vt 0.16 0.43 0.00 -vt 0.19 0.34 0.00 -vt 0.20 0.36 0.00 -vt 0.18 0.43 0.00 -vt 0.16 0.51 0.00 -vt 0.14 0.50 0.00 -vt 0.15 0.54 0.00 -vt 0.13 0.54 0.00 -vt 0.12 0.50 0.00 -vt 0.12 0.54 0.00 -vt 0.09 0.53 0.00 -vt 0.09 0.55 0.00 -vt 0.05 0.54 0.00 -vt 0.05 0.52 0.00 -vt 0.04 0.52 0.00 -vt 0.06 0.49 0.00 -vt 0.01 0.53 0.00 -vt 0.04 0.49 0.00 -vt 0.07 0.41 0.00 -vt 0.05 0.41 0.00 -vt 0.08 0.33 0.00 -vt 0.05 0.32 0.00 -vt 0.14 0.33 0.00 -vt 0.98 0.23 0.00 -vt 0.99 0.29 0.00 -vt 0.98 0.19 0.00 -vt 0.96 0.23 0.00 -vt 0.14 0.56 0.00 -vt 0.13 0.56 0.00 -vt 0.11 0.56 0.00 -vt 0.12 0.55 0.00 -vt 0.04 0.54 0.00 -vt 0.77 0.13 0.00 -vt 0.77 0.11 0.00 -vt 0.87 0.13 0.00 -vt 0.85 0.11 0.00 -vt 0.01 0.74 0.00 -vt 0.52 0.02 0.00 -vt 0.65 0.02 0.00 -vt 0.52 0.01 0.00 -vt 0.65 0.01 0.00 -vt 0.03 0.73 0.00 -vt 0.04 0.73 0.00 -vt 0.56 0.01 0.00 -vt 0.49 0.01 0.00 -vt 0.47 0.01 0.00 -vt 0.56 0.02 0.00 -vt 0.19 0.51 0.00 -vt 0.20 0.49 0.00 -vt 0.22 0.51 0.00 -vt 0.21 0.49 0.00 -vt 0.20 0.55 0.00 -vt 0.23 0.54 0.00 -vt 0.24 0.56 0.00 -vt 0.20 0.56 0.00 -vt 0.20 0.58 0.00 -vt 0.23 0.57 0.00 -vt 0.22 0.59 0.00 -vt 0.51 0.02 0.00 -vt 0.51 0.03 0.00 -vt 0.48 0.02 0.00 -vt 0.01 0.32 0.00 -vt 0.72 0.15 0.00 -vt 0.96 0.22 0.00 -vt 0.48 0.03 0.00 -vt 0.48 0.01 0.00 -vt 0.59 0.01 0.00 -vt 0.15 0.26 0.00 -vt 0.18 0.26 0.00 -vt 0.21 0.27 0.00 -vt 0.23 0.28 0.00 -vt 0.24 0.24 0.00 -vt 0.21 0.23 0.00 -vt 0.26 0.18 0.00 -vt 0.23 0.17 0.00 -vt 0.20 0.18 0.00 -vt 0.19 0.22 0.00 -vt 0.15 0.22 0.00 -vt 0.09 0.25 0.00 -vt 0.06 0.24 0.00 -vt 0.11 0.21 0.00 -vt 0.07 0.20 0.00 -vt 0.12 0.16 0.00 -vt 0.08 0.14 0.00 -vt 0.06 0.20 0.00 -vt 0.06 0.14 0.00 -vt 0.49 0.18 0.00 -vt 0.56 0.19 0.00 -vt 0.49 0.21 0.00 -vt 0.57 0.21 0.00 -vt 0.51 0.26 0.00 -vt 0.57 0.25 0.00 -vt 0.50 0.31 0.00 -vt 0.57 0.31 0.00 -vt 0.62 0.24 0.00 -vt 0.62 0.31 0.00 -vt 0.62 0.35 0.00 -vt 0.62 0.38 0.00 -vt 0.63 0.41 0.00 -vt 0.58 0.42 0.00 -vt 0.57 0.39 0.00 -vt 0.51 0.43 0.00 -vt 0.50 0.40 0.00 -vt 0.51 0.36 0.00 -vt 0.57 0.35 0.00 -vt 0.25 0.71 0.00 -vt 0.25 0.70 0.00 -vt 0.39 0.71 0.00 -vt 0.39 0.70 0.00 -vt 0.25 0.69 0.00 -vt 0.39 0.69 0.00 -vt 0.25 0.68 0.00 -vt 0.39 0.68 0.00 -vt 0.61 0.19 0.00 -vt 0.16 0.16 0.00 -vt 0.39 0.72 0.00 -vt 0.38 0.71 0.00 -vt 0.39 0.73 0.00 -vt 0.37 0.73 0.00 -vt 0.37 0.72 0.00 -vt 0.38 0.74 0.00 -vt 0.60 0.01 0.00 -vt 0.59 0.02 0.00 -vt 0.02 0.73 0.00 -vt 0.63 0.02 0.00 -vt 0.60 0.02 0.00 -vt 0.63 0.01 0.00 -vt 0.78 0.11 0.00 -vt 0.21 0.50 0.00 -vt 0.20 0.50 0.00 -vt 0.24 0.54 0.00 -vt 0.23 0.52 0.00 -vt 0.19 0.54 0.00 -vt 0.19 0.52 0.00 -vt 0.19 0.56 0.00 -vt 0.24 0.57 0.00 -vt 0.22 0.49 0.00 -vt 0.20 0.51 0.00 -vt 0.23 0.51 0.00 -vt 0.88 0.10 0.00 -vt 0.88 0.11 0.00 -vt 0.75 0.09 0.00 -vt 0.75 0.10 0.00 -vt 0.88 0.08 0.00 -vt 0.75 0.08 0.00 -vt 0.88 0.06 0.00 -vt 0.75 0.05 0.00 -vt 0.88 0.03 0.00 -vt 0.75 0.03 0.00 -vt 0.88 0.02 0.00 -vt 0.75 0.01 0.00 -vt 0.88 0.01 0.00 -vt 0.75 0.00 0.00 -vt 0.73 0.05 0.00 -vt 0.73 0.03 0.00 -vt 0.73 0.02 0.00 -vt 0.73 0.01 0.00 -vt 0.73 0.08 0.00 -vt 0.73 0.09 0.00 -vt 0.73 0.10 0.00 -vt 0.70 0.03 0.00 -vt 0.70 0.02 0.00 -vt 0.68 0.04 0.00 -vt 0.68 0.05 0.00 -vt 0.70 0.05 0.00 -vt 0.70 0.07 0.00 -vt 0.67 0.06 0.00 -vt 0.67 0.05 0.00 -vt 0.70 0.08 0.00 -vt 0.70 0.09 0.00 -vt 0.67 0.07 0.00 -vt 0.68 0.03 0.00 -vt 0.94 0.08 0.00 -vt 0.94 0.09 0.00 -vt 0.94 0.07 0.00 -vt 0.94 0.06 0.00 -vt 0.94 0.04 0.00 -vt 0.94 0.03 0.00 -vt 0.99 0.07 0.00 -vt 0.99 0.06 0.00 -vt 0.99 0.05 0.00 -# 213 texture coords - -g P_51_Mustang_Right_Wing -f 263/73/181 264/74/181 265/73/181 -f 266/75/182 267/76/183 268/77/184 -f 269/78/185 268/77/184 267/76/183 -f 267/76/183 270/79/186 269/78/185 -f 271/80/187 269/78/185 270/79/186 -f 271/80/187 270/79/186 272/81/188 -f 271/80/187 272/81/188 273/82/189 -f 274/83/190 273/82/189 272/81/188 -f 273/82/189 274/83/190 275/84/191 -f 276/85/192 275/84/191 274/83/190 -f 276/85/192 277/86/193 275/84/191 -f 276/85/192 278/87/194 277/86/193 -f 279/88/195 277/86/193 278/87/194 -f 278/87/194 280/87/196 279/88/195 -f 281/88/197 279/88/195 280/87/196 -f 279/88/195 281/88/197 282/89/198 -f 279/88/195 282/89/198 277/86/193 -f 283/90/199 277/86/193 282/89/198 -f 277/86/193 283/90/199 284/91/200 -f 268/77/184 269/78/185 285/92/201 -f 286/93/202 284/91/200 283/90/199 -f 284/91/200 286/93/202 287/94/203 -f 288/95/204 287/94/203 286/93/202 -f 288/95/204 289/96/205 287/94/203 -f 290/97/206 287/94/203 289/96/205 -f 290/97/206 291/98/207 287/94/203 -f 292/99/208 287/94/203 291/98/207 -f 291/98/207 285/92/201 292/99/208 -f 293/100/209 292/99/208 285/92/201 -f 293/100/209 285/92/201 269/78/185 -f 269/78/185 271/80/187 293/100/209 -f 273/82/189 293/100/209 271/80/187 -f 293/100/209 273/82/189 292/99/208 -f 275/84/191 292/99/208 273/82/189 -f 275/84/191 284/91/200 292/99/208 -f 284/91/200 275/84/191 277/86/193 -f 287/94/203 292/99/208 284/91/200 -f 294/101/210 295/102/211 296/103/212 -f 295/102/211 294/101/210 297/104/213 -f 295/102/211 297/104/213 298/105/214 -f 299/106/214 298/105/214 297/104/213 -f 299/106/214 289/107/215 298/105/214 -f 288/108/216 298/105/214 289/107/215 -f 288/108/216 286/109/217 298/105/214 -f 300/110/218 298/105/214 286/109/217 -f 286/109/217 283/111/219 300/110/218 -f 301/112/220 300/110/218 283/111/219 -f 300/110/218 301/112/220 302/113/221 -f 303/114/222 302/113/221 301/112/220 -f 303/114/222 304/115/223 302/113/221 -f 304/115/223 303/114/222 305/116/224 -f 305/116/224 306/117/225 304/115/223 -f 307/118/226 304/115/223 306/117/225 -f 263/119/227 307/118/226 306/117/225 -f 307/118/226 263/119/227 308/120/228 -f 264/121/225 263/119/227 306/117/225 -f 309/122/229 308/120/228 263/119/227 -f 308/120/228 309/122/229 310/123/230 -f 311/124/231 310/123/230 309/122/229 -f 310/123/230 311/124/231 312/125/232 -f 313/126/233 312/125/232 311/124/231 -f 312/125/232 314/127/234 310/123/230 -f 294/101/210 310/123/230 314/127/234 -f 310/123/230 294/101/210 308/120/228 -f 296/103/212 308/120/228 294/101/210 -f 308/120/228 296/103/212 307/118/226 -f 304/115/223 307/118/226 296/103/212 -f 296/103/212 302/113/221 304/115/223 -f 302/113/221 296/103/212 295/102/211 -f 302/113/221 295/102/211 300/110/218 -f 298/105/214 300/110/218 295/102/211 -f 314/127/234 297/104/213 294/101/210 -f 272/81/188 315/128/235 274/83/190 -f 316/129/236 274/83/190 315/128/235 -f 274/83/190 316/129/236 276/85/192 -f 278/87/194 276/85/192 316/129/236 -f 278/87/194 316/129/236 280/87/196 -f 317/129/237 280/87/196 316/129/236 -f 317/129/237 316/129/236 318/128/238 -f 315/128/235 318/128/238 316/129/236 -f 264/130/239 318/128/238 315/128/235 -f 264/130/239 315/128/235 265/131/240 -f 272/81/188 265/131/240 315/128/235 -f 265/131/240 272/81/188 270/79/186 -f 283/111/241 282/132/242 301/112/243 -f 319/133/244 301/112/243 282/132/242 -f 281/133/245 319/133/244 282/132/242 -f 281/133/245 280/134/246 319/133/244 -f 320/135/247 319/133/244 280/134/246 -f 320/135/247 280/134/246 305/116/248 -f 317/116/248 305/116/248 280/134/246 -f 317/116/248 318/136/223 305/116/248 -f 306/117/223 305/116/248 318/136/223 -f 264/121/223 306/117/223 318/136/223 -f 319/133/249 320/135/250 301/112/220 -f 303/114/222 301/112/220 320/135/250 -f 320/135/250 305/116/224 303/114/222 -f 321/137/251 322/138/251 323/139/251 -f 324/140/251 323/139/251 322/138/251 -f 325/140/252 326/138/252 327/139/252 -f 328/137/252 327/139/252 326/138/252 -f 329/141/253 330/141/253 331/141/253 -f 332/141/253 331/141/253 330/141/253 -f 330/142/254 333/143/254 332/144/254 -f 334/145/254 332/144/254 333/143/254 -f 333/146/255 335/147/255 334/146/255 -f 336/147/255 334/146/255 335/147/255 -f 334/140/251 336/139/251 332/138/251 -f 331/137/251 332/138/251 336/139/251 -f 333/140/252 330/138/252 335/139/252 -f 329/137/252 335/139/252 330/138/252 -f 337/141/256 338/141/256 339/141/256 -f 340/141/256 339/141/256 338/141/256 -f 338/142/254 341/143/254 340/144/254 -f 342/145/254 340/144/254 341/143/254 -f 341/146/255 343/147/255 342/146/255 -f 344/147/255 342/146/255 343/147/255 -f 342/140/251 344/139/251 340/138/251 -f 339/137/251 340/138/251 344/139/251 -f 341/140/252 338/138/252 343/139/252 -f 337/137/252 343/139/252 338/138/252 -f 267/144/257 266/148/257 270/149/257 -f 270/149/258 266/148/259 265/150/258 -f 313/151/260 311/142/260 266/148/260 -f 266/148/261 311/142/261 265/150/261 -f 311/142/262 309/149/262 265/150/262 -f 309/149/263 263/150/263 265/150/263 -f 312/152/264 313/153/264 268/154/264 -f 266/155/265 268/154/265 313/153/265 -f 314/156/266 312/152/266 285/157/266 -f 268/154/267 285/157/267 312/152/267 -f 291/158/268 297/159/268 285/157/268 -f 314/156/269 285/157/269 297/159/269 -f 299/160/270 297/159/270 290/161/270 -f 291/158/270 290/161/270 297/159/270 -f 289/162/271 299/160/271 290/161/271 -f 328/141/253 326/141/253 321/141/253 -f 322/141/253 321/141/253 326/141/253 -f 326/142/254 325/143/254 322/144/254 -f 324/145/254 322/144/254 325/143/254 -f 325/146/272 327/147/272 324/146/272 -f 323/147/272 324/146/272 327/147/272 -f 266/163/273 313/164/273 345/165/273 -f 264/121/274 345/166/275 263/119/274 -f 313/126/276 263/119/274 345/166/275 -f 345/167/277 264/130/185 266/75/277 -f 265/168/278 266/75/277 264/130/185 -f 264/73/279 263/169/279 265/169/279 -f 263/143/280 313/165/280 265/145/280 -f 266/170/281 265/145/281 313/165/281 -f 266/148/282 346/171/282 313/151/282 -f 347/172/283 348/173/284 314/127/234 -f 297/104/285 314/127/234 348/173/284 -f 297/104/285 348/173/284 299/106/286 -f 349/174/287 299/106/286 348/173/284 -f 349/174/287 350/175/288 299/106/286 -f 350/175/288 349/174/287 351/176/289 -f 352/177/290 351/176/289 349/174/287 -f 351/176/289 352/177/290 353/178/291 -f 354/179/292 353/178/291 352/177/290 -f 354/179/292 352/177/290 355/180/293 -f 356/181/294 355/180/293 352/177/290 -f 356/181/294 357/182/234 355/180/293 -f 357/182/234 356/181/294 347/172/283 -f 347/172/283 358/183/230 357/182/234 -f 347/172/283 314/127/234 358/183/230 -f 312/125/232 358/183/230 314/127/234 -f 312/125/232 313/126/295 358/183/230 -f 359/184/231 358/183/230 313/126/295 -f 349/174/287 348/173/284 352/177/290 -f 356/181/294 352/177/290 348/173/284 -f 348/173/284 347/172/283 356/181/294 -f 358/183/230 359/184/231 360/185/296 -f 361/186/297 360/185/296 359/184/231 -f 360/185/296 361/186/297 362/187/298 -f 363/188/299 362/187/298 361/186/297 -f 361/186/297 364/189/300 363/188/299 -f 365/190/232 363/188/299 364/189/300 -f 364/189/300 361/186/297 359/184/231 -f 366/191/301 367/192/302 368/193/182 -f 369/194/303 368/193/182 367/192/302 -f 368/193/182 369/194/303 370/195/304 -f 371/196/305 370/195/304 369/194/303 -f 370/195/304 371/196/305 372/197/306 -f 373/198/307 372/197/306 371/196/305 -f 371/196/305 374/199/308 373/198/307 -f 375/200/309 373/198/307 374/199/308 -f 375/200/309 374/199/308 285/92/310 -f 375/200/309 285/92/310 376/201/311 -f 291/98/312 376/201/311 285/92/310 -f 291/98/312 290/97/313 376/201/311 -f 377/202/314 376/201/311 290/97/313 -f 377/202/314 290/97/313 350/203/315 -f 350/203/315 351/204/316 377/202/314 -f 378/205/317 377/202/314 351/204/316 -f 351/204/316 353/206/318 378/205/317 -f 379/207/314 378/205/317 353/206/318 -f 372/197/306 373/198/307 380/208/319 -f 379/207/314 380/208/319 378/205/317 -f 381/209/319 378/205/317 380/208/319 -f 381/209/319 380/208/319 373/198/307 -f 373/198/307 375/200/309 381/209/319 -f 376/201/311 381/209/319 375/200/309 -f 381/209/319 376/201/311 378/205/317 -f 377/202/314 378/205/317 376/201/311 -f 382/210/293 383/211/320 384/212/254 -f 385/213/321 384/212/254 383/211/320 -f 383/211/320 386/214/322 385/213/321 -f 387/215/323 385/213/321 386/214/322 -f 386/214/322 388/216/324 387/215/323 -f 389/217/325 387/215/323 388/216/324 -f 388/216/324 390/214/326 389/217/325 -f 391/215/327 389/217/325 390/214/326 -f 390/214/326 392/211/328 391/215/327 -f 393/213/329 391/215/327 392/211/328 -f 392/211/328 382/210/293 393/213/329 -f 384/212/254 393/213/329 382/210/293 -f 367/192/302 346/218/330 369/194/303 -f 369/194/303 346/218/330 371/196/305 -f 374/199/308 371/196/305 346/218/330 -f 346/218/330 266/75/331 374/199/308 -f 268/77/332 374/199/308 266/75/331 -f 268/77/332 285/92/310 374/199/308 -f 362/187/298 394/219/333 360/185/296 -f 357/182/234 360/185/296 394/219/333 -f 360/185/296 357/182/234 358/183/230 -f 394/219/333 355/180/293 357/182/234 -f 390/220/334 388/221/334 392/222/334 -f 388/221/334 383/223/334 392/222/334 -f 386/224/334 383/223/334 388/221/334 -f 392/222/334 383/223/334 382/225/334 -f 395/220/334 396/221/334 397/222/334 -f 396/221/334 398/223/334 397/222/334 -f 397/222/334 398/223/334 399/225/334 -f 400/224/334 398/223/334 396/221/334 -f 401/210/293 402/211/320 403/212/254 -f 404/213/321 403/212/254 402/211/320 -f 402/211/320 405/214/322 404/213/321 -f 406/215/323 404/213/321 405/214/322 -f 405/214/322 407/216/324 406/215/323 -f 408/217/325 406/215/323 407/216/324 -f 407/216/324 409/214/326 408/217/325 -f 410/215/327 408/217/325 409/214/326 -f 409/214/326 411/211/328 410/215/327 -f 412/213/329 410/215/327 411/211/328 -f 411/211/328 401/210/293 412/213/329 -f 403/212/254 412/213/329 401/210/293 -f 409/220/334 407/221/334 411/222/334 -f 407/221/334 402/223/334 411/222/334 -f 405/224/334 402/223/334 407/221/334 -f 411/222/334 402/223/334 401/225/334 -f 367/226/282 359/227/282 346/171/282 -f 346/171/282 359/227/282 313/151/282 -f 413/141/335 414/141/335 415/141/335 -f 416/141/335 415/141/335 414/141/335 -f 414/228/336 417/228/336 416/228/336 -f 418/228/336 416/228/336 417/228/336 -f 419/147/337 418/228/337 420/147/337 -f 417/228/337 420/147/337 418/228/337 -f 420/146/338 421/147/338 419/146/338 -f 422/147/338 419/146/338 421/147/338 -f 289/96/339 350/203/315 290/97/313 -f 289/107/340 299/106/286 350/175/288 -f 365/229/282 364/230/282 366/231/282 -f 367/226/282 366/231/282 364/230/282 -f 364/230/282 359/227/282 367/226/282 -f 415/137/341 416/138/341 422/139/341 -f 422/139/341 418/232/341 419/140/341 -f 416/138/341 418/232/341 422/139/341 -f 413/137/342 421/139/342 414/138/342 -f 421/139/342 420/140/342 414/138/342 -f 414/138/342 420/140/342 417/232/342 -f 399/210/293 398/211/320 423/212/254 -f 424/213/321 423/212/254 398/211/320 -f 398/211/320 400/214/322 424/213/321 -f 425/215/323 424/213/321 400/214/322 -f 400/214/322 396/216/324 425/215/323 -f 426/217/325 425/215/323 396/216/324 -f 396/216/324 395/214/326 426/217/325 -f 427/215/327 426/217/325 395/214/326 -f 395/214/326 397/211/328 427/215/327 -f 428/213/329 427/215/327 397/211/328 -f 397/211/328 399/210/293 428/213/329 -f 423/212/254 428/213/329 399/210/293 -f 363/154/343 365/233/343 368/152/343 -f 366/234/269 368/152/269 365/233/269 -f 394/235/344 362/236/344 372/237/344 -f 370/238/345 372/237/345 362/236/345 -f 362/236/346 363/154/346 370/238/346 -f 368/152/347 370/238/347 363/154/347 -f 355/158/348 394/235/348 380/239/348 -f 372/237/349 380/239/349 394/235/349 -f 379/160/350 354/240/350 380/239/350 -f 355/158/351 380/239/351 354/240/351 -f 353/162/352 354/240/352 379/160/352 -f 290/160/353 299/240/353 289/162/353 -f 266/153/354 313/241/354 268/242/354 -f 312/243/355 268/242/355 313/241/355 -f 312/243/356 314/235/356 268/242/356 -f 285/156/357 268/242/357 314/235/357 -f 314/235/358 297/158/358 285/156/358 -f 291/159/359 285/156/359 297/158/359 -f 291/159/360 297/158/360 290/160/360 -f 299/240/360 290/160/360 297/158/360 -f 429/244/361 430/245/362 431/246/361 -f 432/247/362 431/246/361 430/245/362 -f 430/245/362 433/244/363 432/247/362 -f 434/246/364 432/247/362 433/244/363 -f 433/244/363 435/248/365 434/246/364 -f 436/249/366 434/246/364 435/248/365 -f 435/248/365 437/250/252 436/249/366 -f 438/251/367 436/249/366 437/250/252 -f 437/250/252 439/252/368 438/251/367 -f 440/253/369 438/251/367 439/252/368 -f 439/252/368 441/254/370 440/253/369 -f 442/255/370 440/253/369 441/254/370 -f 441/254/370 443/256/371 442/255/370 -f 444/257/371 442/255/370 443/256/371 -f 443/256/371 445/254/372 444/257/371 -f 446/255/373 444/257/371 445/254/372 -f 445/254/372 447/252/374 446/255/373 -f 448/253/375 446/255/373 447/252/374 -f 447/252/374 449/250/376 448/253/375 -f 450/251/251 448/253/375 449/250/376 -f 449/250/376 451/248/377 450/251/251 -f 452/249/378 450/251/251 451/248/377 -f 451/248/377 429/244/361 452/249/378 -f 431/246/361 452/249/378 429/244/361 -f 438/251/379 440/253/380 453/258/381 -f 454/259/382 453/258/381 440/253/380 -f 440/253/380 442/255/383 454/259/382 -f 455/260/384 454/259/382 442/255/383 -f 442/255/383 444/257/385 455/260/384 -f 456/261/386 455/260/384 444/257/385 -f 444/257/385 446/255/387 456/261/386 -f 457/260/388 456/261/386 446/255/387 -f 446/255/387 448/253/389 457/260/388 -f 458/259/390 457/260/388 448/253/389 -f 448/253/389 450/251/391 458/259/390 -f 459/258/392 458/259/390 450/251/391 -f 450/251/391 452/249/393 459/258/392 -f 460/262/394 459/258/392 452/249/393 -f 452/249/393 431/246/395 460/262/394 -f 461/263/396 460/262/394 431/246/395 -f 431/246/395 432/247/397 461/263/396 -f 462/264/398 461/263/396 432/247/397 -f 454/259/382 455/260/384 463/265/399 -f 455/260/384 456/261/386 464/266/400 -f 464/266/400 463/265/399 455/260/384 -f 463/265/399 464/266/400 465/267/401 -f 465/267/401 466/268/402 463/265/399 -f 467/269/403 463/265/399 466/268/402 -f 463/265/399 467/269/403 454/259/382 -f 453/258/381 454/259/382 467/269/403 -f 432/247/397 434/246/404 462/264/398 -f 468/263/405 462/264/398 434/246/404 -f 434/246/404 436/249/406 468/263/405 -f 469/262/407 468/263/405 436/249/406 -f 436/249/406 438/251/379 469/262/407 -f 453/258/381 469/262/407 438/251/379 -f 469/262/407 453/258/381 470/270/408 -f 467/269/403 470/270/408 453/258/381 -f 470/270/408 467/269/403 471/271/409 -f 466/268/402 471/271/409 467/269/403 -f 472/272/410 471/271/409 466/268/402 -f 472/272/410 466/268/402 465/267/401 -f 472/272/410 465/267/401 473/267/411 -f 473/267/411 465/267/401 464/266/400 -f 464/266/400 474/266/412 473/267/411 -f 474/266/412 464/266/400 456/261/386 -f 456/261/386 457/260/388 474/266/412 -f 475/266/413 474/266/412 457/260/388 -f 457/260/388 458/259/390 475/266/413 -f 476/265/414 475/266/413 458/259/390 -f 458/259/390 459/258/392 476/265/414 -f 477/269/415 476/265/414 459/258/392 -f 459/258/392 460/262/394 477/269/415 -f 478/270/416 477/269/415 460/262/394 -f 460/262/394 461/263/396 478/270/416 -f 479/273/417 478/270/416 461/263/396 -f 461/263/396 462/264/398 479/273/417 -f 480/274/418 479/273/417 462/264/398 -f 462/264/398 468/263/405 480/274/418 -f 481/273/419 480/274/418 468/263/405 -f 468/263/405 469/262/407 481/273/419 -f 470/270/408 481/273/419 469/262/407 -f 481/273/419 470/270/408 482/275/420 -f 471/271/409 482/275/420 470/270/408 -f 472/272/410 482/275/420 471/271/409 -f 472/272/410 483/275/421 482/275/420 -f 480/274/418 481/273/419 483/275/421 -f 482/275/420 483/275/421 481/273/419 -f 472/272/410 484/275/422 483/275/421 -f 483/275/421 484/275/422 480/274/418 -f 479/273/417 480/274/418 484/275/422 -f 484/275/422 485/271/423 479/273/417 -f 478/270/416 479/273/417 485/271/423 -f 485/271/423 486/268/424 478/270/416 -f 477/269/415 478/270/416 486/268/424 -f 486/268/424 487/267/425 477/269/415 -f 476/265/414 477/269/415 487/267/425 -f 487/267/425 488/267/426 476/265/414 -f 475/266/413 476/265/414 488/267/426 -f 488/267/426 489/276/427 475/266/413 -f 474/266/412 475/266/413 489/276/427 -f 489/276/427 473/267/411 474/266/412 -f 472/272/410 473/267/411 489/276/427 -f 472/272/410 489/276/427 488/267/426 -f 472/272/410 488/267/426 487/267/425 -f 472/272/410 487/267/425 486/268/424 -f 472/272/410 486/268/424 485/271/423 -f 472/272/410 485/271/423 484/275/422 -f 433/244/428 430/245/429 490/277/430 -f 491/278/431 490/277/430 430/245/429 -f 430/245/429 429/244/432 491/278/431 -f 492/277/433 491/278/431 429/244/432 -f 429/244/432 451/248/434 492/277/433 -f 493/279/435 492/277/433 451/248/434 -f 451/248/434 449/250/436 493/279/435 -f 494/280/437 493/279/435 449/250/436 -f 449/250/436 447/252/438 494/280/437 -f 495/281/439 494/280/437 447/252/438 -f 447/252/438 445/254/440 495/281/439 -f 496/282/441 495/281/439 445/254/440 -f 445/254/440 443/256/442 496/282/441 -f 497/282/443 496/282/441 443/256/442 -f 443/256/442 441/254/444 497/282/443 -f 498/282/445 497/282/443 441/254/444 -f 441/254/444 439/252/446 498/282/445 -f 499/281/447 498/282/445 439/252/446 -f 490/277/430 491/278/431 500/283/448 -f 501/283/449 500/283/448 491/278/431 -f 491/278/431 492/277/433 501/283/449 -f 439/252/446 437/250/450 499/281/447 -f 502/280/451 499/281/447 437/250/450 -f 437/250/450 435/248/452 502/280/451 -f 503/279/453 502/280/451 435/248/452 -f 435/248/452 433/244/428 503/279/453 -f 490/277/430 503/279/453 433/244/428 -f 503/279/453 490/277/430 504/284/454 -f 500/283/448 504/284/454 490/277/430 -f 504/284/454 500/283/448 505/284/455 -f 500/283/448 501/283/449 505/284/455 -f 501/283/449 506/283/456 505/284/455 -f 506/283/456 501/283/449 492/277/433 -f 492/277/433 493/279/435 506/283/456 -f 507/284/457 506/283/456 493/279/435 -f 493/279/435 494/280/437 507/284/457 -f 508/284/458 507/284/457 494/280/437 -f 494/280/437 495/281/439 508/284/458 -f 509/285/459 508/284/458 495/281/439 -f 495/281/439 496/282/441 509/285/459 -f 510/285/460 509/285/459 496/282/441 -f 496/282/441 497/282/443 510/285/460 -f 511/285/461 510/285/460 497/282/443 -f 497/282/443 498/282/445 511/285/461 -f 512/285/462 511/285/461 498/282/445 -f 498/282/445 499/281/447 512/285/462 -f 513/285/463 512/285/462 499/281/447 -f 499/281/447 502/280/451 513/285/463 -f 514/284/464 513/285/463 502/280/451 -f 502/280/451 503/279/453 514/284/464 -f 504/284/454 514/284/464 503/279/453 -f 514/284/464 504/284/454 505/284/455 -f 513/285/463 514/284/464 505/284/455 -f 512/285/462 513/285/463 505/284/455 -f 511/285/461 512/285/462 505/284/455 -f 510/285/460 511/285/461 505/284/455 -f 509/285/459 510/285/460 505/284/455 -f 508/284/458 509/285/459 505/284/455 -f 507/284/457 508/284/458 505/284/455 -f 506/283/456 507/284/457 505/284/455 -# 472 faces - -# -# object P_51_Mustang_Right_Landing_Wheel -# - -v -21.65 -7.03 18.48 -v -20.12 -7.12 18.43 -v -21.65 -7.03 18.62 -v -20.12 -7.12 18.57 -v -20.72 -9.30 17.99 -v -20.96 -9.30 18.00 -v -20.29 -0.52 17.44 -v -20.54 -0.52 17.45 -v -21.12 -9.30 18.19 -v -20.70 -0.51 17.64 -v -21.11 -9.30 18.43 -v -20.69 -0.51 17.88 -v -20.93 -9.30 18.59 -v -20.51 -0.51 18.04 -v -20.69 -9.30 18.58 -v -20.27 -0.52 18.03 -v -20.53 -9.30 18.39 -v -20.10 -0.52 17.84 -v -20.54 -9.30 18.15 -v -20.11 -0.52 17.60 -v -20.33 -12.95 18.23 -v -20.20 -10.30 18.07 -v -20.11 -12.93 18.22 -v -19.87 -10.28 18.05 -v -20.30 -9.53 18.02 -v -20.07 -9.01 17.98 -v -20.64 -9.29 18.02 -v -20.61 -8.74 17.98 -v -20.32 -12.95 18.73 -v -20.01 -12.93 18.71 -v -20.20 -10.30 18.56 -v -19.86 -10.28 18.55 -v -20.30 -9.53 18.52 -v -20.07 -9.01 18.48 -v -20.63 -9.29 18.51 -v -20.60 -8.73 18.48 -v -21.23 -1.10 17.16 -v -22.09 -3.52 17.35 -v -21.15 -1.12 18.27 -v -24.19 -9.64 18.88 -v -24.42 -9.57 15.50 -v -24.22 -9.64 15.49 -v -21.89 -3.59 17.34 -v -23.98 -9.71 18.87 -v -20.95 -1.19 18.26 -v -21.02 -1.16 17.16 -v -21.65 -6.86 18.47 -v -21.64 -6.86 18.61 -v -20.11 -6.80 18.41 -v -20.11 -6.80 18.55 -v -20.12 -6.80 17.67 -v -20.13 -7.12 17.69 -v -21.65 -6.86 17.72 -v -21.66 -7.04 17.74 -v -21.66 -7.04 17.88 -v -20.13 -7.12 17.83 -v -21.65 -6.86 17.87 -v -20.11 -6.80 17.81 -v -20.14 -11.43 20.48 -v -20.18 -12.67 20.94 -v -20.12 -10.55 19.48 -v -20.30 -15.29 18.74 -v -20.31 -15.01 17.47 -v -20.27 -14.90 19.94 -v -20.15 -10.67 17.01 -v -20.12 -10.27 18.21 -v -20.23 -13.94 20.74 -v -20.89 -10.51 16.93 -v -20.86 -10.09 18.22 -v -20.86 -10.40 19.58 -v -20.88 -11.34 20.66 -v -20.92 -12.66 21.15 -v -20.97 -14.03 20.94 -v -21.02 -15.05 20.07 -v -21.05 -15.47 18.78 -v -21.06 -15.17 17.42 -v -20.29 -14.13 16.47 -v -21.04 -14.23 16.35 -v -20.25 -12.89 16.01 -v -20.99 -12.90 15.85 -v -20.20 -11.62 16.21 -v -20.94 -11.54 16.07 -v -21.69 -11.63 16.26 -v -21.64 -10.67 17.07 -v -21.61 -10.28 18.27 -v -21.61 -10.56 19.54 -v -21.63 -11.44 20.54 -v -21.67 -12.68 21.00 -v -21.72 -13.94 20.80 -v -21.76 -14.90 19.99 -v -21.79 -15.29 18.79 -v -21.80 -15.01 17.52 -v -21.78 -14.14 16.52 -v -21.74 -12.90 16.06 -# 94 vertices - -vn -0.05 -1.00 0.00 -vn 0.32 -0.07 -0.95 -vn -0.45 -0.03 -0.89 -vn 0.33 -0.07 -0.94 -vn -0.43 -0.04 -0.90 -vn -0.95 0.03 -0.32 -vn -0.94 0.02 -0.35 -vn -0.90 0.07 0.44 -vn -0.90 0.07 0.42 -vn -0.33 0.07 0.94 -vn -0.32 0.07 0.95 -vn 0.43 0.04 0.90 -vn 0.45 0.03 0.89 -vn 0.94 -0.02 0.35 -vn 0.95 -0.03 0.32 -vn 0.90 -0.07 -0.42 -vn 0.90 -0.07 -0.44 -vn -0.03 -0.06 -1.00 -vn 0.03 0.06 1.00 -vn -0.01 -1.00 0.00 -vn 0.01 1.00 -0.00 -vn -0.94 0.34 0.07 -vn 0.94 -0.34 -0.07 -vn -1.00 0.05 0.01 -vn -0.04 1.00 -0.00 -vn 1.00 -0.05 -0.01 -vn 0.46 0.89 -0.01 -vn 0.99 0.16 -0.01 -vn 0.97 -0.10 -0.20 -vn 1.00 -0.06 -0.04 -vn 0.98 -0.10 -0.18 -vn 1.00 -0.06 -0.01 -vn 0.07 -1.00 0.00 -vn 0.06 -1.00 -0.00 -vn 0.05 -1.00 -0.01 -vn -0.99 -0.13 0.01 -vn -0.59 -0.81 0.01 -vn 0.32 0.95 -0.00 -vn 0.06 0.05 1.00 -vn -0.32 -0.95 0.00 -vn 0.05 0.27 -0.96 -vn -0.06 -0.05 -1.00 -vn 1.00 -0.04 -0.01 -vn 0.22 0.81 -0.55 -vn -0.02 0.83 -0.56 -vn 0.24 0.97 -0.05 -vn -0.00 1.00 -0.05 -vn 0.25 0.87 0.44 -vn 0.01 0.89 0.45 -vn 0.26 0.55 0.79 -vn 0.03 0.57 0.82 -vn 0.27 0.10 0.96 -vn 0.03 0.10 0.99 -vn 0.27 -0.40 0.87 -vn 0.03 -0.42 0.91 -vn 0.26 -0.80 0.53 -vn 0.02 -0.83 0.56 -vn 0.24 -0.97 0.04 -vn 0.00 -1.00 0.05 -vn 0.22 -0.87 -0.45 -vn -0.01 -0.89 -0.45 -vn 0.20 -0.55 -0.81 -vn -0.03 -0.57 -0.82 -vn 0.20 -0.10 -0.97 -vn -0.03 -0.10 -0.99 -vn 0.21 0.40 -0.89 -vn -0.03 0.42 -0.91 -vn -0.27 0.40 -0.87 -vn -0.26 0.80 -0.53 -vn -0.24 0.97 -0.04 -vn -0.22 0.87 0.45 -vn -0.20 0.55 0.81 -vn -0.20 0.10 0.97 -vn -0.21 -0.40 0.89 -vn -0.22 -0.81 0.55 -vn -0.24 -0.97 0.05 -vn -0.25 -0.87 -0.44 -vn -0.26 -0.55 -0.79 -vn -0.27 -0.10 -0.96 -vn -1.00 0.04 0.01 -# 80 vertex normals - -vt 0.07 0.76 0.00 -vt 0.30 0.92 0.00 -vt 0.09 0.92 0.00 -vt 0.30 0.93 0.00 -vt 0.09 0.93 0.00 -vt 0.30 0.94 0.00 -vt 0.09 0.94 0.00 -vt 0.44 0.70 0.00 -vt 0.44 0.73 0.00 -vt 0.44 0.74 0.00 -vt 0.43 0.74 0.00 -vt 0.43 0.75 0.00 -vt 0.32 0.98 0.00 -vt 0.31 0.98 0.00 -vt 0.33 0.98 0.00 -vt 0.33 0.99 0.00 -vt 0.32 1.00 0.00 -vt 0.33 1.00 0.00 -vt 0.47 0.08 0.00 -vt 0.53 0.08 0.00 -vt 0.47 0.11 0.00 -vt 0.67 0.11 0.00 -vt 0.66 0.03 0.00 -vt 0.61 0.03 0.00 -vt 0.47 0.00 0.00 -vt 0.66 0.00 0.00 -vt 0.08 0.75 0.00 -vt 0.09 0.75 0.00 -vt 0.07 0.75 0.00 -vt 0.04 0.84 0.00 -vt 0.04 0.85 0.00 -vt 0.03 0.84 0.00 -vt 0.03 0.85 0.00 -vt 0.08 0.76 0.00 -vt 0.09 0.74 0.00 -vt 0.43 0.73 0.00 -vt 0.42 0.73 0.00 -vt 0.42 0.74 0.00 -vt 0.43 0.72 0.00 -vt 0.42 0.72 0.00 -vt 0.46 0.72 0.00 -vt 0.46 0.73 0.00 -vt 0.45 0.73 0.00 -vt 0.03 0.68 0.00 -vt 0.05 0.68 0.00 -vt 0.16 0.67 0.00 -vt 0.03 0.67 0.00 -vt 0.08 0.67 0.00 -vt 0.08 0.68 0.00 -vt 0.07 0.67 0.00 -vt 0.07 0.66 0.00 -vt 0.16 0.66 0.00 -vt 0.03 0.66 0.00 -vt 0.31 0.99 0.00 -vt 0.85 0.94 0.00 -vt 0.85 0.96 0.00 -vt 0.84 0.93 0.00 -vt 0.80 0.99 0.00 -vt 0.78 0.98 0.00 -vt 0.82 0.99 0.00 -vt 0.80 0.92 0.00 -vt 0.82 0.92 0.00 -vt 0.84 0.98 0.00 -vt 0.32 0.78 0.00 -vt 0.32 0.76 0.00 -vt 0.34 0.78 0.00 -vt 0.34 0.76 0.00 -vt 0.36 0.78 0.00 -vt 0.36 0.76 0.00 -vt 0.38 0.78 0.00 -vt 0.38 0.76 0.00 -vt 0.39 0.78 0.00 -vt 0.39 0.76 0.00 -vt 0.31 0.78 0.00 -vt 0.31 0.76 0.00 -vt 0.29 0.78 0.00 -vt 0.29 0.76 0.00 -vt 0.31 0.75 0.00 -vt 0.32 0.75 0.00 -vt 0.34 0.75 0.00 -vt 0.36 0.75 0.00 -vt 0.38 0.75 0.00 -vt 0.39 0.75 0.00 -vt 0.29 0.75 0.00 -vt 0.78 0.96 0.00 -vt 0.78 0.94 0.00 -vt 0.79 0.93 0.00 -# 87 texture coords - -g P_51_Mustang_Right_Landing_Wheel -f 515/286/465 516/286/465 517/286/465 -f 518/286/465 517/286/465 516/286/465 -f 519/287/466 520/287/467 521/288/468 -f 522/288/469 521/288/468 520/287/467 -f 520/287/467 523/289/470 522/288/469 -f 524/290/471 522/288/469 523/289/470 -f 523/289/470 525/291/472 524/290/471 -f 526/292/473 524/290/471 525/291/472 -f 525/291/472 527/291/474 526/292/473 -f 528/292/475 526/292/473 527/291/474 -f 527/291/474 529/291/476 528/292/475 -f 530/292/477 528/292/475 529/291/476 -f 529/291/476 531/291/478 530/292/477 -f 532/292/479 530/292/477 531/291/478 -f 531/291/478 533/289/480 532/292/479 -f 534/290/481 532/292/479 533/289/480 -f 533/289/480 519/287/466 534/290/481 -f 521/288/468 534/290/481 519/287/466 -f 535/293/482 536/294/482 537/293/482 -f 537/293/482 536/294/482 538/294/482 -f 536/294/482 539/295/482 538/294/482 -f 538/294/482 539/295/482 540/295/482 -f 540/295/482 539/295/482 541/296/482 -f 542/297/482 540/295/482 541/296/482 -f 543/293/483 544/293/483 545/294/483 -f 544/293/483 546/294/483 545/294/483 -f 545/294/483 546/294/483 547/295/483 -f 546/294/483 548/295/483 547/295/483 -f 547/295/483 548/295/483 549/296/483 -f 548/295/483 550/297/483 549/296/483 -f 533/298/484 531/299/484 519/300/484 -f 519/300/484 531/299/484 523/301/484 -f 531/299/484 527/302/484 523/301/484 -f 523/301/484 527/302/484 525/303/484 -f 520/300/484 519/300/484 523/301/484 -f 530/303/485 532/301/485 528/302/485 -f 532/301/485 521/300/485 528/302/485 -f 521/300/485 524/299/485 528/302/485 -f 522/298/485 524/299/485 521/300/485 -f 534/300/485 521/300/485 532/301/485 -f 551/304/486 552/305/486 553/306/486 -f 552/305/486 554/307/486 553/306/486 -f 555/308/486 554/307/486 552/305/486 -f 556/304/487 557/309/487 558/310/487 -f 558/310/487 557/309/487 559/311/487 -f 557/309/487 560/308/487 559/311/487 -f 561/312/488 515/312/488 562/312/488 -f 517/312/488 562/312/488 515/312/488 -f 563/313/489 561/312/489 564/313/489 -f 562/312/489 564/313/489 561/312/489 -f 516/314/490 563/314/490 518/314/490 -f 564/314/490 518/314/490 563/314/490 -f 565/315/482 566/316/482 567/317/482 -f 568/318/482 567/317/482 566/316/482 -f 569/316/483 570/318/483 571/315/483 -f 572/317/483 571/315/483 570/318/483 -f 568/319/465 566/286/465 569/312/465 -f 570/314/465 569/312/465 566/286/465 -f 567/313/488 568/313/488 571/313/488 -f 569/313/488 571/313/488 568/313/488 -f 565/312/489 567/312/489 572/312/489 -f 571/312/489 572/312/489 567/312/489 -f 566/320/490 565/320/490 570/320/490 -f 572/320/490 570/320/490 565/320/490 -f 540/321/491 542/322/491 548/296/491 -f 550/323/491 548/296/491 542/322/491 -f 538/324/492 540/325/492 546/321/492 -f 548/322/492 546/321/492 540/325/492 -f 537/326/493 538/324/494 544/327/495 -f 546/321/496 544/327/495 538/324/494 -f 535/296/497 537/321/498 543/296/499 -f 544/321/499 543/296/499 537/321/498 -f 536/328/488 535/322/488 545/328/488 -f 543/322/488 545/328/488 535/322/488 -f 539/327/500 536/328/500 547/327/500 -f 545/328/500 547/327/500 536/328/500 -f 541/296/501 539/296/501 549/323/501 -f 547/323/501 549/323/501 539/296/501 -f 559/329/502 560/330/502 553/329/502 -f 551/330/502 553/329/502 560/330/502 -f 553/331/503 554/332/503 559/331/503 -f 558/332/503 559/331/503 554/332/503 -f 554/333/504 555/332/504 558/334/504 -f 556/329/504 558/334/504 555/332/504 -f 557/335/505 556/331/505 552/336/505 -f 555/337/505 552/336/505 556/331/505 -f 552/336/506 551/338/506 557/335/506 -f 560/332/506 557/335/506 551/338/506 -f 528/302/485 524/299/485 526/339/485 -f 563/315/482 516/316/482 561/317/482 -f 515/318/482 561/317/482 516/316/482 -f 517/316/483 518/318/483 562/315/483 -f 564/317/483 562/315/483 518/318/483 -f 529/339/484 527/302/484 531/299/484 -f 573/340/507 574/341/507 575/342/507 -f 576/343/507 577/344/507 578/345/507 -f 577/344/507 574/341/507 578/345/507 -f 579/346/507 574/341/507 577/344/507 -f 575/342/507 574/341/507 579/346/507 -f 580/347/507 575/342/507 579/346/507 -f 578/345/507 574/341/507 581/348/507 -f 579/349/508 582/350/509 580/351/510 -f 583/352/511 580/351/510 582/350/509 -f 580/351/510 583/352/511 575/353/512 -f 584/354/513 575/353/512 583/352/511 -f 575/353/512 584/354/513 573/355/514 -f 585/356/515 573/355/514 584/354/513 -f 573/355/514 585/356/515 574/357/516 -f 586/358/517 574/357/516 585/356/515 -f 574/357/516 586/358/517 581/355/518 -f 587/356/519 581/355/518 586/358/517 -f 581/355/518 587/356/519 578/353/520 -f 588/354/521 578/353/520 587/356/519 -f 578/353/520 588/354/521 576/351/522 -f 589/352/523 576/351/522 588/354/521 -f 576/351/522 589/352/523 577/349/524 -f 590/350/525 577/349/524 589/352/523 -f 577/349/524 590/350/525 591/359/526 -f 592/360/527 591/359/526 590/350/525 -f 591/359/526 592/360/527 593/361/528 -f 594/362/529 593/361/528 592/360/527 -f 593/361/528 594/362/529 595/359/530 -f 596/360/531 595/359/530 594/362/529 -f 595/359/530 596/360/531 579/349/508 -f 582/350/509 579/349/508 596/360/531 -f 596/360/531 597/363/532 582/350/509 -f 598/364/533 582/350/509 597/363/532 -f 582/350/509 598/364/533 583/352/511 -f 599/365/534 583/352/511 598/364/533 -f 583/352/511 599/365/534 584/354/513 -f 600/366/535 584/354/513 599/365/534 -f 584/354/513 600/366/535 585/356/515 -f 601/367/536 585/356/515 600/366/535 -f 585/356/515 601/367/536 586/358/517 -f 602/368/537 586/358/517 601/367/536 -f 586/358/517 602/368/537 587/356/519 -f 603/367/538 587/356/519 602/368/537 -f 587/356/519 603/367/538 588/354/521 -f 604/366/539 588/354/521 603/367/538 -f 588/354/521 604/366/539 589/352/523 -f 605/365/540 589/352/523 604/366/539 -f 589/352/523 605/365/540 590/350/525 -f 606/364/541 590/350/525 605/365/540 -f 590/350/525 606/364/541 592/360/527 -f 607/363/542 592/360/527 606/364/541 -f 592/360/527 607/363/542 594/362/529 -f 608/369/543 594/362/529 607/363/542 -f 594/362/529 608/369/543 596/360/531 -f 597/363/532 596/360/531 608/369/543 -f 604/344/544 603/370/544 605/343/544 -f 605/343/544 603/370/544 607/348/544 -f 607/348/544 603/370/544 599/347/544 -f 597/340/544 607/348/544 599/347/544 -f 598/342/544 597/340/544 599/347/544 -f 608/341/544 607/348/544 597/340/544 -f 606/345/544 605/343/544 607/348/544 -f 591/370/507 593/371/507 577/344/507 -f 593/371/507 579/346/507 577/344/507 -f 595/372/507 579/346/507 593/371/507 -f 600/346/544 599/347/544 601/372/544 -f 599/347/544 603/370/544 601/372/544 -f 601/372/544 603/370/544 602/371/544 -# 162 faces - -# -# object P_51_Mustang_Hull -# - -v -2.18 8.58 9.73 -v -2.30 8.86 6.02 -v -2.39 8.59 9.73 -v -3.01 6.76 9.95 -v -3.00 7.11 6.05 -v -2.52 8.87 6.26 -v -3.01 7.30 3.85 -v -2.47 9.05 4.06 -v -2.46 9.23 1.97 -v -2.94 7.47 1.76 -v -2.64 7.71 -0.97 -v -2.18 9.48 -0.86 -v -1.61 9.68 -3.39 -v -2.16 7.97 -4.05 -v -1.03 9.75 -4.33 -v -1.12 8.59 -5.66 -v 0.11 9.80 -4.96 -v -0.16 8.78 -6.15 -v 0.64 8.86 -6.31 -v 0.67 9.81 -5.10 -v 1.22 9.79 -4.97 -v 1.42 8.77 -6.17 -v 2.36 8.56 -5.69 -v 2.34 9.73 -4.36 -v 3.35 7.92 -4.07 -v 2.94 9.65 -3.40 -v 3.68 7.66 -1.02 -v 3.37 9.43 -0.91 -v 3.56 9.19 1.92 -v 3.88 7.42 1.70 -v 3.89 7.24 3.80 -v 3.50 9.01 4.01 -v 3.48 8.82 6.21 -v 3.80 7.05 6.00 -v 3.24 8.55 9.69 -v 3.68 6.70 9.89 -v 3.42 6.70 9.89 -v 3.02 8.54 9.69 -v 3.54 7.05 5.77 -v 3.25 8.81 5.98 -v 3.62 7.24 3.66 -v 3.27 9.00 3.86 -v 3.32 9.19 1.84 -v 3.62 7.42 1.64 -v 3.43 7.66 -0.98 -v 3.15 9.44 -0.88 -v 2.76 9.66 -3.28 -v 3.14 7.93 -3.92 -v 2.21 9.73 -4.21 -v 2.21 8.57 -5.48 -v 1.17 9.80 -4.74 -v 1.35 8.78 -5.89 -v 0.63 8.87 -6.03 -v 0.66 9.82 -4.87 -v 0.14 9.81 -4.73 -v -0.11 8.79 -5.88 -v -1.00 8.60 -5.46 -v -0.91 9.76 -4.19 -v -1.97 7.97 -3.90 -v -1.45 9.69 -3.27 -v -2.41 7.71 -0.94 -v -1.97 9.47 -0.84 -v -2.23 9.23 1.89 -v -2.68 7.47 1.69 -v -2.76 7.29 3.71 -v -2.25 9.05 3.90 -v -2.75 7.10 5.82 -v -2.76 6.75 9.94 -v -2.84 6.73 10.23 -v -0.81 12.12 9.64 -v -3.12 6.71 10.24 -v -1.01 12.45 9.62 -v 2.05 12.10 9.61 -v 2.28 12.42 9.59 -v 3.57 6.66 10.17 -v 3.86 6.66 10.17 -v 3.58 6.71 9.84 -v 2.05 12.09 9.29 -v -0.81 12.12 9.32 -v -2.83 6.78 9.90 -v 3.86 6.71 9.84 -v 2.28 12.42 9.26 -v -1.00 12.44 9.30 -v -3.12 6.76 9.90 -v 4.66 -1.79 -1.03 -v 4.25 -0.21 1.79 -v 5.11 -0.16 2.78 -v -3.87 -3.05 -1.87 -v -4.48 -1.72 -0.95 -v -3.60 -2.34 -4.87 -v -3.65 -3.03 1.13 -v -3.68 -1.87 2.11 -v -2.89 -2.82 3.93 -v -2.58 -1.80 4.33 -v -1.34 -1.85 5.56 -v -1.63 -3.21 5.62 -v -0.01 -1.92 6.45 -v -0.09 -3.54 6.63 -v 1.51 -3.23 5.59 -v 1.35 -1.87 5.53 -v 2.85 -2.86 3.87 -v 2.62 -1.84 4.28 -v 3.78 -1.93 2.04 -v 3.66 -3.09 1.06 -v 3.95 -3.11 -1.94 -v 3.82 -2.40 -4.94 -v 3.26 -4.73 -4.88 -v 3.54 -4.03 -1.52 -v 3.30 -4.95 -1.65 -v 2.58 -5.40 -4.82 -v 3.39 -3.91 1.68 -v 2.74 -3.53 4.26 -v 2.35 -3.57 6.63 -v 3.21 -4.15 4.04 -v 3.01 -4.04 6.65 -v 3.11 -5.17 4.28 -v 2.84 -5.09 6.73 -v 2.20 -5.93 4.14 -v 1.97 -5.61 6.76 -v -0.20 -5.90 6.80 -v 3.21 -5.14 1.70 -v 2.63 -5.80 -1.55 -v 2.42 -5.98 1.71 -v -2.81 -5.76 -1.50 -v -3.47 -4.44 -1.52 -v -2.64 -5.36 -4.77 -v -3.41 -5.09 1.76 -v -2.70 -5.94 1.75 -v -3.37 -5.12 4.34 -v -2.53 -5.90 4.18 -v -3.16 -5.04 6.79 -v -2.34 -5.58 6.80 -v -0.18 -6.23 2.91 -v 1.26 -6.32 1.56 -v 1.15 -6.28 -1.34 -v 1.38 -5.76 -5.00 -v 2.45 -4.83 -8.13 -v -3.37 -4.10 4.10 -v -3.47 -3.86 1.74 -v -2.85 -3.49 4.32 -v -3.10 -2.40 -8.95 -v -2.97 -3.71 -8.45 -v -3.25 -4.68 -4.82 -v -2.52 -3.54 6.68 -v -3.23 -3.99 6.71 -v 2.64 7.92 -7.83 -v 0.66 8.54 -8.04 -v 1.70 8.81 -6.12 -v 0.68 8.16 -10.79 -v -1.38 7.95 -7.79 -v -1.27 7.48 -10.79 -v -1.94 6.54 -10.08 -v -1.76 6.04 -15.12 -v -2.35 4.01 -14.71 -v -2.68 4.18 -10.15 -v -2.65 0.18 -14.70 -v -3.13 0.11 -9.48 -v -2.51 -1.75 -14.35 -v -2.17 -2.56 -13.63 -v -2.37 -4.79 -8.08 -v 0.70 7.68 -15.64 -v -0.96 7.14 -15.33 -v 3.16 -3.76 -8.51 -v 2.57 -2.60 -13.68 -v 0.19 -2.88 -13.74 -v 0.33 -0.98 -18.94 -v -1.92 -1.05 -18.81 -v -2.26 -0.55 -18.26 -v -2.16 1.12 -18.78 -v -1.95 3.55 -18.87 -v -1.41 5.63 -19.24 -v -0.63 6.76 -19.48 -v -1.82 0.96 -23.00 -v -1.73 -0.34 -22.73 -v 0.33 -2.07 -22.55 -v 2.58 -1.08 -18.86 -v 3.00 -1.79 -14.41 -v 3.43 -2.45 -9.01 -v 3.70 0.06 -9.54 -v 3.90 0.33 -5.99 -v 3.73 5.02 -6.62 -v 3.92 4.94 -3.00 -v 3.27 7.20 -5.88 -v 3.38 7.92 -4.06 -v 2.45 8.56 -5.59 -v -1.49 3.34 -25.54 -v -1.66 1.28 -25.54 -v -1.68 3.36 -23.04 -v -1.44 -0.13 -25.65 -v 0.43 -0.87 -25.61 -v 2.56 -0.37 -22.78 -v 2.94 -0.59 -18.32 -v 3.33 0.13 -14.76 -v 3.65 4.13 -10.21 -v 3.13 6.50 -10.13 -v 2.56 7.45 -10.83 -v 3.39 3.96 -14.77 -v 3.02 1.08 -18.84 -v -1.36 0.20 -28.16 -v 0.48 -0.62 -27.84 -v 2.38 -0.16 -25.69 -v 2.79 0.93 -23.05 -v 3.03 3.51 -18.93 -v 3.01 6.01 -15.17 -v 2.31 7.11 -15.36 -v 2.69 5.60 -19.28 -v 2.87 3.33 -23.10 -v 2.72 1.24 -25.59 -v 2.39 0.17 -28.20 -v 0.56 -0.18 -32.31 -v -1.02 0.49 -32.48 -v -1.45 1.45 -28.24 -v -1.11 1.83 -32.23 -v -1.22 3.44 -28.23 -v -0.97 3.60 -32.20 -v -0.54 0.61 -36.78 -v -0.65 1.57 -37.11 -v -0.39 0.69 -37.86 -v -0.54 1.56 -37.94 -v -0.40 3.34 -38.12 -v -0.52 3.41 -37.33 -v -0.81 4.47 -34.00 -v -0.80 3.33 -33.98 -v -1.08 4.53 -32.20 -v -1.18 4.91 -28.36 -v -1.43 5.01 -25.55 -v -1.39 5.21 -23.17 -v -1.29 5.80 -25.86 -v -0.82 5.27 -34.30 -v -1.17 5.60 -32.19 -v -0.67 5.70 -35.24 -v -1.25 5.89 -30.06 -v -0.71 6.30 -31.82 -v -1.23 6.04 -28.10 -v -0.11 6.62 -25.95 -v -0.61 6.31 -23.30 -v -0.34 5.20 -38.31 -v 0.09 7.37 -36.51 -v 0.29 7.13 -38.50 -v 0.20 8.38 -37.33 -v 0.34 8.23 -38.61 -v 0.86 15.56 -39.24 -v 0.26 8.62 -35.31 -v 0.18 7.65 -34.16 -v 0.30 8.02 -31.06 -v 0.74 7.30 -20.27 -v 2.04 6.74 -19.51 -v 1.68 6.61 -25.97 -v 2.08 6.29 -23.33 -v 2.78 5.77 -25.91 -v 2.84 4.97 -25.60 -v 2.67 4.88 -28.41 -v 2.57 3.42 -28.27 -v 2.44 3.57 -32.24 -v 2.41 1.80 -32.27 -v 2.28 1.75 -33.92 -v 2.14 0.64 -33.77 -v 1.86 0.59 -36.81 -v 0.59 -0.02 -33.73 -v 0.65 0.31 -37.01 -v 2.30 3.31 -34.01 -v 2.63 4.50 -32.24 -v 2.42 4.44 -34.04 -v 2.83 5.57 -32.24 -v 1.89 16.66 -36.52 -v 1.85 15.87 -36.07 -v 1.97 16.49 -38.45 -v 1.95 15.68 -38.16 -v 1.92 15.55 -39.26 -v 1.73 8.61 -35.34 -v 1.85 8.37 -37.37 -v 1.68 7.64 -34.19 -v 1.83 7.36 -36.54 -v 2.41 6.27 -31.86 -v 2.42 5.67 -35.28 -v 2.88 5.86 -30.11 -v 2.51 5.25 -34.34 -v 2.12 3.39 -37.36 -v 2.07 1.55 -37.14 -v 2.81 6.01 -28.14 -v 1.48 8.01 -31.09 -v 0.89 8.76 -29.21 -v 1.54 8.93 -32.66 -v 0.96 9.49 -30.87 -v 1.34 15.98 -35.15 -v 0.84 15.88 -36.04 -v 0.90 16.67 -36.50 -v 0.87 16.50 -38.43 -v 0.81 15.69 -38.13 -v 0.92 16.38 -39.42 -v 0.38 8.94 -32.64 -v 0.96 17.20 -36.78 -v 1.38 16.76 -35.70 -v 1.06 16.91 -39.48 -v 1.94 16.37 -39.44 -v 1.94 16.37 -39.43 -v 1.94 16.28 -39.43 -v 1.85 16.90 -39.49 -v 1.89 17.19 -36.80 -v 1.41 17.28 -36.06 -v 1.45 17.57 -37.12 -v 1.48 17.32 -39.52 -v 1.44 17.63 -36.65 -v 1.99 1.54 -37.97 -v 1.75 0.67 -37.88 -v 2.02 3.32 -38.14 -v 2.14 5.18 -38.33 -v 1.69 7.13 -38.52 -v 1.75 8.22 -38.63 -v 0.67 0.46 -37.85 -v 3.86 7.51 0.69 -v 3.95 4.68 1.12 -v 3.90 7.06 5.85 -v 3.95 4.60 6.04 -v 3.79 6.68 10.01 -v 3.87 4.45 9.55 -v 3.70 6.44 11.84 -v 3.81 3.46 11.93 -v 3.68 6.42 15.10 -v 3.73 4.91 15.20 -v 3.73 5.37 19.12 -v 3.69 2.76 19.65 -v 3.60 2.71 23.29 -v 3.53 0.63 23.15 -v 3.34 0.90 26.42 -v 3.07 -0.41 26.45 -v 2.86 1.14 31.85 -v 1.48 -0.38 32.12 -v 3.83 2.01 9.53 -v 3.89 1.66 6.29 -v 4.03 1.15 1.42 -v 4.05 0.52 -2.36 -v 4.15 -0.95 -1.80 -v 4.21 0.67 6.43 -v 4.10 1.18 9.55 -v 4.11 1.23 12.19 -v 3.73 2.28 15.62 -v 0.99 0.57 36.00 -v -0.28 -0.63 32.46 -v -0.28 0.36 36.21 -v -1.53 0.59 36.02 -v -2.00 -0.36 32.15 -v -3.23 1.19 31.90 -v -3.45 -0.36 26.51 -v -3.60 0.95 26.49 -v -3.73 0.69 23.22 -v -3.61 2.76 23.36 -v -3.60 2.82 19.72 -v -3.38 5.42 19.19 -v -3.33 4.97 15.27 -v -3.14 6.47 15.16 -v -3.46 3.51 12.00 -v -3.08 6.49 11.90 -v -3.37 4.51 9.62 -v -3.10 6.74 10.07 -v -2.61 -1.47 26.73 -v -0.26 -1.79 26.94 -v -3.76 -0.41 24.24 -v -3.32 -1.40 24.00 -v -2.16 -1.98 24.36 -v -0.25 -2.12 24.38 -v 2.12 -1.51 26.69 -v 2.91 -1.45 23.95 -v 3.44 -0.47 24.18 -v 1.68 -2.00 24.32 -v -3.35 4.66 6.11 -v -3.06 7.12 5.92 -v -3.22 4.74 1.19 -v -2.85 7.57 0.76 -v -3.06 5.00 -2.93 -v -2.21 7.96 -4.00 -v -2.13 7.24 -5.83 -v -1.19 8.59 -5.55 -v -0.40 8.83 -6.10 -v 0.66 8.89 -6.31 -v -2.77 5.07 -6.56 -v -3.39 0.39 -5.92 -v -3.61 0.58 -2.29 -v -3.64 1.21 1.49 -v -3.57 1.72 6.36 -v -3.56 2.07 9.60 -v -3.87 -0.89 -1.73 -v -3.99 -0.15 1.87 -v -3.99 0.73 6.51 -v -3.91 1.24 9.63 -v -3.98 1.29 12.27 -v -3.58 2.34 15.69 -v 3.48 8.59 10.06 -v 3.42 7.85 11.79 -v 3.40 7.97 12.78 -v 3.48 7.69 15.11 -v 3.72 6.84 18.67 -v 3.66 5.67 23.35 -v 3.50 2.82 26.85 -v 3.33 3.01 31.94 -v 2.17 1.58 35.93 -v 2.97 3.24 35.96 -v 1.87 2.09 38.21 -v 2.20 3.58 38.12 -v 3.30 5.02 36.17 -v 0.83 1.30 38.26 -v 2.01 3.59 38.71 -v 2.70 5.55 38.59 -v 3.26 6.60 35.87 -v 2.69 6.79 38.51 -v 2.56 8.39 35.96 -v 2.08 8.17 38.43 -v 2.14 8.94 35.78 -v 1.33 8.81 38.39 -v 1.17 9.51 35.68 -v 0.66 9.21 38.36 -v 0.16 9.58 35.68 -v 0.11 9.29 38.36 -v -0.45 9.22 38.37 -v -0.86 9.52 35.70 -v -1.16 8.83 38.41 -v -1.88 8.97 35.82 -v -1.96 8.20 38.46 -v -2.36 8.43 36.01 -v -0.94 9.87 31.34 -v -0.99 10.19 26.34 -v 0.31 10.34 26.77 -v 0.24 10.10 31.35 -v 1.40 9.85 31.31 -v 2.43 9.42 31.16 -v 2.98 8.72 31.28 -v 3.55 6.98 31.31 -v 3.30 9.02 26.28 -v 2.49 9.75 26.24 -v 2.79 9.81 22.99 -v 1.60 10.17 26.31 -v 1.80 10.21 23.30 -v 2.05 10.21 20.89 -v 0.35 10.44 23.69 -v 0.39 10.50 21.00 -v 0.42 10.41 17.76 -v 0.46 10.45 15.10 -v -1.03 10.08 15.41 -v -3.29 7.11 21.42 -v -3.28 7.11 23.77 -v -2.82 8.99 21.40 -v -2.82 8.71 18.17 -v -2.21 9.52 17.94 -v -2.03 9.13 15.29 -v -2.22 8.81 13.72 -v -1.24 9.98 14.02 -v 0.48 10.47 13.79 -v 1.91 10.06 15.38 -v 2.10 10.07 18.02 -v 2.87 9.77 21.15 -v 3.35 9.04 23.40 -v 3.64 6.98 26.77 -v -3.23 6.90 18.74 -v -3.39 5.73 23.42 -v -2.82 7.74 15.17 -v -2.65 8.02 12.84 -v -3.59 2.87 26.92 -v -2.66 7.90 11.85 -v -2.61 8.64 10.12 -v -2.70 6.83 38.56 -v -3.20 6.62 35.03 -v -2.83 5.59 38.64 -v -3.42 5.07 36.23 -v -2.33 3.62 38.75 -v -2.50 3.62 38.16 -v -3.25 3.29 36.02 -v -2.32 2.13 38.25 -v -2.60 1.62 35.98 -v -1.35 1.32 38.28 -v -3.53 3.06 32.00 -v -3.56 5.54 26.97 -v -3.59 4.96 32.12 -v -3.34 7.04 26.84 -v -2.77 9.09 23.46 -v -2.17 9.81 21.20 -v -1.29 10.09 18.05 -v -1.30 10.23 20.93 -v -1.11 10.24 23.32 -v -2.80 9.06 26.34 -v -2.13 9.85 23.04 -v -1.92 9.78 26.28 -v -2.63 8.76 31.33 -v -3.37 7.03 31.38 -v -2.01 9.46 31.20 -v 3.57 4.91 32.06 -v 3.72 5.49 26.90 -v 3.66 7.05 23.70 -v 3.73 7.06 21.36 -v 3.44 8.94 21.34 -v 3.50 8.66 18.11 -v 2.97 9.48 17.90 -v 2.82 9.09 15.25 -v 3.02 8.77 13.67 -v 2.14 9.95 13.99 -v -8.03 6.05 -27.42 -v -4.52 6.07 -27.32 -v -8.03 5.97 -28.86 -v -11.48 5.96 -28.73 -v -11.12 5.68 -31.09 -v -13.81 5.66 -30.77 -v -14.13 5.91 -28.57 -v -15.24 5.49 -30.33 -v -15.27 5.57 -28.02 -v -14.18 5.73 -27.39 -v -11.49 6.01 -27.59 -v -11.64 5.76 -26.95 -v -8.48 5.76 -26.64 -v -5.05 5.77 -26.30 -v -2.22 5.77 -26.09 -v -1.90 6.05 -27.63 -v -1.72 5.88 -29.69 -v -4.26 5.97 -29.14 -v -4.42 5.63 -31.75 -v -7.79 5.68 -31.43 -v -1.74 5.55 -32.08 -v 4.34 6.11 32.28 -v 4.06 6.10 32.66 -v 4.63 6.10 32.53 -v 4.17 6.09 33.03 -v 4.75 5.76 32.68 -v 4.21 5.75 33.23 -v 4.60 5.42 32.56 -v 4.14 5.41 33.05 -v 4.31 5.43 32.30 -v 4.02 5.42 32.69 -v 4.19 5.77 32.16 -v 3.98 5.77 32.49 -v 3.79 5.77 32.46 -v 3.80 6.10 32.64 -v 3.78 6.10 33.03 -v 3.75 5.75 33.24 -v 3.74 5.42 33.06 -v 3.76 5.42 32.67 -v 13.07 5.77 -29.01 -v 12.75 5.49 -31.56 -v 9.62 5.83 -29.06 -v 9.43 5.54 -31.80 -v 5.87 5.90 -29.25 -v 6.06 5.54 -32.00 -v 3.33 5.84 -29.75 -v 3.46 6.01 -27.69 -v 3.72 5.73 -26.16 -v 6.08 5.99 -27.44 -v 6.55 5.68 -26.43 -v 9.59 5.91 -27.62 -v 9.99 5.62 -26.85 -v 13.05 5.81 -27.87 -v 13.16 5.56 -27.23 -v 15.71 5.50 -27.73 -v 15.71 5.68 -28.91 -v 3.39 5.51 -32.16 -v 16.80 5.32 -28.38 -v 16.83 5.24 -30.69 -v 15.57 5.42 -31.45 -v 16.72 5.01 -33.40 -v 15.72 4.99 -33.73 -v 2.75 5.18 -23.22 -v 2.74 3.31 -25.59 -v 2.61 1.41 -28.29 -v 2.21 0.46 -32.52 -v -0.90 0.66 -33.74 -v -0.94 1.77 -33.88 -v -3.75 5.44 34.55 -v -3.73 5.78 34.73 -v -4.14 5.45 34.56 -v -4.02 5.45 34.19 -v -4.29 5.46 33.81 -v -4.13 5.81 33.67 -v -3.94 5.80 33.99 -v -4.26 6.14 33.78 -v -3.98 6.13 34.16 -v -4.55 6.14 34.05 -v -4.11 6.13 34.53 -v -4.72 5.80 34.19 -v -4.19 5.78 34.73 -v -4.59 5.46 34.07 -v -3.71 6.12 34.53 -v -3.72 6.13 34.14 -v -3.74 5.80 33.96 -v -3.76 5.45 34.16 -v -4.87 -0.09 2.87 -v -4.96 0.33 6.76 -v -4.97 0.69 9.85 -v -4.97 0.81 12.34 -v -4.02 1.40 15.81 -v -5.09 0.90 16.22 -v -4.95 0.55 19.82 -v -3.90 1.32 19.99 -v -4.83 0.16 22.21 -v -4.59 -0.55 23.22 -v 5.14 0.25 6.67 -v 6.54 -0.19 3.45 -v 6.70 0.02 6.36 -v 5.11 0.61 9.76 -v 6.75 0.38 9.22 -v 5.06 0.73 12.25 -v 6.64 0.56 12.08 -v 5.08 0.82 16.12 -v 6.67 0.70 16.38 -v 6.69 0.53 18.92 -v 4.83 0.58 19.72 -v 5.76 -0.33 22.01 -v 4.60 0.08 22.12 -v 4.27 -0.62 23.14 -v 6.08 -0.69 22.43 -v 8.22 -0.70 21.64 -v -2.94 -4.05 6.84 -v -2.50 -4.14 5.16 -v -2.29 -3.64 6.81 -v -1.95 -3.79 5.13 -v -0.10 -3.68 6.76 -v 2.10 -3.67 6.76 -v 1.79 -3.82 5.09 -v 2.71 -4.09 6.78 -v 2.31 -4.18 5.11 -v -2.69 8.37 10.10 -v -1.01 12.37 9.64 -v -2.40 8.38 10.10 -v -0.82 12.04 9.66 -v 2.27 12.34 9.61 -v 2.05 12.02 9.63 -v 3.51 8.33 10.04 -v 3.22 8.33 10.04 -v 3.84 1.26 19.92 -v 4.07 1.34 15.73 -v -4.70 -0.90 3.35 -v -4.70 -1.20 6.48 -v -6.30 -0.85 3.61 -v -6.56 -1.14 6.50 -v -12.47 -0.77 4.38 -v -12.73 -0.99 6.36 -v -6.67 -1.53 9.41 -v -14.07 -1.37 9.24 -v -6.52 -1.75 12.40 -v -13.54 -1.60 12.35 -v -6.88 -1.99 14.90 -v -14.82 -1.75 15.41 -v -7.22 -1.67 18.64 -v -4.86 -2.15 14.61 -v -4.82 -1.75 19.27 -v -3.62 -2.25 14.45 -v -3.44 -1.80 19.64 -v -1.88 -2.40 14.58 -v -1.67 -2.00 20.13 -v -0.19 -2.16 20.12 -v -3.22 -1.95 12.03 -v -4.78 -1.81 12.13 -v -4.74 -1.59 9.42 -v -2.95 -1.72 9.49 -v -1.52 -2.01 12.24 -v -0.12 -2.14 14.54 -v 1.61 -2.42 14.55 -v 1.30 -2.02 20.10 -v 3.10 -1.85 19.57 -v 3.08 -1.79 21.12 -v 4.47 -1.76 20.56 -v 3.43 -1.11 22.63 -v -0.09 -2.11 12.44 -v -2.90 -1.39 6.33 -v -1.41 -1.87 9.61 -v -0.05 -1.96 9.46 -v 1.31 -1.89 9.58 -v 1.35 -2.03 12.21 -v -1.47 -1.58 6.59 -v 1.48 -1.60 6.57 -v 4.85 -0.98 3.26 -v 6.45 -0.95 3.49 -v 4.75 -1.28 6.39 -v 6.61 -1.24 6.37 -v 4.68 -1.66 9.33 -v 6.61 -1.63 9.28 -v 4.63 -1.88 12.04 -v 6.36 -1.85 12.28 -v 4.61 -2.22 14.52 -v 6.63 -2.09 14.77 -v 6.91 -1.78 18.50 -v 4.50 -1.82 19.18 -v 7.17 -1.73 19.64 -v 3.37 -2.30 14.39 -v 3.06 -1.99 11.97 -v 2.87 -1.77 9.44 -v 2.93 -1.44 6.28 -v -0.21 -2.18 21.60 -v 1.16 -2.18 21.93 -v -13.50 -1.56 17.59 -v -7.50 -1.61 19.78 -v -4.83 -1.69 20.65 -v -3.45 -1.74 21.19 -v -1.59 -2.16 21.95 -v -3.78 -1.05 22.70 -v -14.13 -0.49 20.28 -v -8.50 -0.57 21.80 -v -6.38 -0.59 22.55 -v -6.57 0.66 12.21 -v -6.69 0.77 16.50 -v -13.44 0.66 12.23 -v -14.35 0.80 15.32 -v -6.79 0.64 19.05 -v -13.40 0.59 18.05 -v -6.02 -0.24 22.12 -v -14.04 0.46 9.14 -v -6.62 0.48 9.35 -v -6.54 0.12 6.49 -v -6.32 -0.09 3.57 -v -12.44 -0.05 4.34 -v -12.67 0.19 6.29 -v -2.87 -5.00 6.90 -v -2.45 -4.96 5.21 -v 2.56 -5.05 6.85 -v 2.18 -4.99 5.17 -v 1.76 -5.52 6.88 -v 1.50 -5.39 5.19 -v -0.19 -5.70 6.91 -v -2.13 -5.49 6.92 -v -1.81 -5.37 5.22 -v -3.14 5.42 35.50 -v -3.77 5.43 35.52 -v -3.16 5.24 35.02 -v -3.79 5.24 35.05 -v -3.34 5.42 26.54 -v -3.97 5.42 26.57 -v -3.34 5.62 26.05 -v -3.97 5.63 26.08 -v -3.93 6.43 26.05 -v -3.91 6.61 26.52 -v -3.30 6.42 26.02 -v -3.28 6.61 26.49 -v -3.73 6.43 35.00 -v -3.10 6.43 34.97 -v -3.73 6.23 35.49 -v -3.10 6.22 35.46 -v -3.88 5.93 27.60 -v -3.87 6.28 27.39 -v -4.34 5.93 27.59 -v -4.29 5.60 27.42 -v -4.74 5.61 26.94 -v -4.44 5.61 26.67 -v -4.17 5.60 27.05 -v -4.28 5.96 26.53 -v -4.09 5.95 26.85 -v -4.41 6.30 26.65 -v -4.13 6.29 27.02 -v -4.70 6.29 26.91 -v -4.26 6.28 27.39 -v -4.87 5.95 27.05 -v -3.87 6.28 27.00 -v -3.89 5.95 26.82 -v -3.91 5.60 27.03 -v -3.90 5.59 27.42 -v -1.21 9.64 14.41 -v -0.71 12.35 9.95 -v -1.44 9.65 14.42 -v -1.02 12.35 9.90 -v -1.45 9.34 14.15 -v -1.00 12.00 9.77 -v -1.22 9.34 14.15 -v -0.69 12.00 9.83 -v 2.22 12.32 9.86 -v 1.90 12.33 9.92 -v 2.27 9.62 14.38 -v 2.04 9.62 14.38 -v 2.17 11.98 9.74 -v 2.26 9.31 14.12 -v 1.85 11.98 9.80 -v 2.03 9.31 14.12 -v 0.81 -4.99 -22.81 -v -0.46 -4.98 -22.79 -v 0.82 -4.71 -23.17 -v -0.44 -4.70 -23.15 -v 0.89 -3.01 -22.29 -v -0.38 -3.00 -22.28 -v 0.96 -1.67 -22.95 -v -0.30 -1.66 -22.94 -v 0.96 -1.54 -22.03 -v -0.31 -1.53 -22.02 -v 0.89 -2.88 -21.51 -v -0.38 -2.87 -21.49 -v -1.47 -5.74 -4.97 -v -1.38 -6.26 -1.31 -v -1.57 -6.30 1.58 -v -0.12 -6.30 -1.26 -v -0.03 -5.59 -5.78 -v 0.03 -5.10 -8.16 -v 3.48 5.22 -27.47 -v 3.30 5.03 -29.46 -v 3.33 4.89 -32.33 -v 5.82 5.02 -29.12 -v 6.03 4.88 -32.03 -v 9.40 4.92 -31.81 -v 9.58 5.05 -28.94 -v 12.73 4.96 -31.49 -v 13.03 5.07 -28.91 -v 15.50 5.01 -31.28 -v 15.68 5.13 -28.83 -v 13.02 5.21 -27.78 -v 6.03 5.22 -27.32 -v 9.54 5.21 -27.51 -v -0.26 1.32 38.26 -v -15.08 5.26 -33.04 -v -14.07 5.22 -33.39 -v -14.09 5.21 -32.45 -v -13.95 5.24 -30.69 -v -14.16 5.36 -28.49 -v -11.51 5.26 -28.63 -v -11.52 5.40 -27.50 -v -8.05 5.35 -27.31 -v -4.55 5.31 -27.20 -v -1.99 5.26 -27.41 -v -1.77 5.07 -29.40 -v -1.73 4.93 -32.15 -v -4.31 5.09 -29.00 -v -8.06 5.19 -28.74 -v -4.44 4.96 -31.91 -v -7.82 5.05 -31.65 -v -11.33 5.14 -31.30 -v -1.04 1.63 37.01 -v 0.59 1.62 36.99 -v -1.77 2.24 36.99 -v -1.91 3.36 36.92 -v 1.37 2.21 36.96 -v 1.61 3.33 36.89 -v 2.64 -0.09 1.94 -v 2.34 6.46 -0.67 -v -2.37 -0.05 1.99 -v -1.39 6.49 -0.64 -v 2.56 -0.95 10.54 -v -2.59 -0.91 10.59 -v 2.52 4.84 11.25 -v -2.03 4.88 11.29 -v 2.59 6.63 11.43 -v -1.94 6.67 11.48 -v 0.49 10.12 11.77 -v 2.05 9.05 11.64 -v -1.17 9.07 11.67 -v 1.94 3.49 38.22 -v -2.26 3.52 38.26 -v -2.09 2.18 38.33 -v -1.23 1.46 38.36 -v 0.72 1.45 38.34 -v 1.65 2.15 38.30 -v -3.85 5.90 29.03 -v -3.83 6.25 28.83 -v -4.31 5.90 29.03 -v -4.26 5.57 28.86 -v -4.71 5.58 28.37 -v -4.41 5.58 28.11 -v -4.14 5.57 28.49 -v -4.25 5.93 27.97 -v -4.06 5.92 28.29 -v -4.38 6.27 28.08 -v -4.10 6.26 28.46 -v -4.67 6.26 28.35 -v -4.23 6.25 28.83 -v -4.84 5.92 28.49 -v -3.84 6.25 28.44 -v -3.86 5.92 28.26 -v -3.88 5.57 28.46 -v -3.87 5.56 28.85 -v -3.82 5.87 30.47 -v -3.80 6.22 30.26 -v -4.28 5.87 30.46 -v -4.23 5.54 30.29 -v -4.68 5.55 29.81 -v -4.38 5.55 29.54 -v -4.10 5.54 29.92 -v -4.22 5.90 29.40 -v -4.03 5.89 29.72 -v -4.35 6.24 29.52 -v -4.07 6.23 29.89 -v -4.64 6.23 29.78 -v -4.20 6.22 30.26 -v -4.80 5.89 29.92 -v -3.81 6.22 29.87 -v -3.83 5.89 29.69 -v -3.85 5.54 29.90 -v -3.84 5.53 30.29 -v -3.79 5.84 31.87 -v -3.78 6.19 31.66 -v -4.25 5.84 31.87 -v -4.20 5.51 31.69 -v -4.65 5.52 31.21 -v -4.35 5.52 30.95 -v -4.08 5.51 31.32 -v -4.19 5.87 30.80 -v -4.00 5.86 31.12 -v -4.32 6.21 30.92 -v -4.04 6.20 31.30 -v -4.61 6.20 31.18 -v -4.17 6.19 31.67 -v -4.78 5.86 31.33 -v -3.78 6.19 31.27 -v -3.80 5.86 31.09 -v -3.82 5.51 31.30 -v -3.81 5.50 31.69 -v -3.76 5.81 33.31 -v -3.74 6.16 33.10 -v -4.22 5.81 33.31 -v -4.17 5.48 33.13 -v -4.62 5.49 32.65 -v -4.32 5.49 32.38 -v -4.05 5.48 32.76 -v -4.16 5.84 32.24 -v -3.97 5.83 32.56 -v -4.29 6.17 32.36 -v -4.01 6.16 32.73 -v -4.58 6.17 32.62 -v -4.14 6.16 33.11 -v -4.75 5.83 32.77 -v -3.75 6.16 32.71 -v -3.77 5.83 32.53 -v -3.79 5.48 32.74 -v -3.78 5.47 33.13 -v 4.13 5.56 26.00 -v 4.09 5.36 26.49 -v 3.50 5.57 25.99 -v 3.46 5.36 26.48 -v 3.69 5.18 34.98 -v 3.06 5.19 34.96 -v 3.67 5.37 35.45 -v 3.04 5.37 35.44 -v 3.08 6.18 35.41 -v 3.71 6.17 35.42 -v 3.11 6.38 34.92 -v 3.74 6.38 34.93 -v 3.52 6.56 26.43 -v 4.15 6.55 26.45 -v 3.53 6.37 25.96 -v 4.16 6.37 25.97 -v 4.02 5.53 27.34 -v 4.41 5.53 27.34 -v 4.03 5.87 27.52 -v 4.49 5.87 27.51 -v 4.05 6.21 27.31 -v 4.45 6.21 27.31 -v 4.07 6.22 26.92 -v 4.33 6.22 26.94 -v 4.06 5.89 26.74 -v 4.26 5.88 26.77 -v 4.04 5.54 26.95 -v 4.30 5.54 26.97 -v 4.59 5.54 26.59 -v 4.87 5.54 26.85 -v 5.03 5.87 26.96 -v 4.90 6.22 26.82 -v 4.62 6.23 26.56 -v 4.46 5.89 26.45 -v 3.95 5.50 28.78 -v 4.34 5.50 28.78 -v 3.96 5.84 28.96 -v 4.42 5.84 28.95 -v 3.98 6.19 28.75 -v 4.38 6.18 28.75 -v 4.00 6.19 28.36 -v 4.26 6.19 28.38 -v 4.00 5.86 28.18 -v 4.19 5.85 28.21 -v 3.97 5.51 28.39 -v 4.23 5.51 28.41 -v 4.52 5.52 28.03 -v 4.80 5.51 28.28 -v 4.96 5.84 28.40 -v 4.83 6.19 28.26 -v 4.55 6.20 28.00 -v 4.39 5.86 27.88 -v 3.88 5.47 30.21 -v 4.27 5.47 30.21 -v 3.89 5.81 30.39 -v 4.35 5.81 30.38 -v 3.91 6.16 30.19 -v 4.31 6.15 30.18 -v 3.93 6.16 29.80 -v 4.19 6.16 29.81 -v 3.93 5.83 29.62 -v 4.12 5.82 29.64 -v 3.90 5.48 29.82 -v 4.16 5.48 29.84 -v 4.45 5.49 29.46 -v 4.73 5.48 29.72 -v 4.89 5.81 29.83 -v 4.77 6.16 29.69 -v 4.48 6.17 29.43 -v 4.32 5.83 29.32 -v 3.81 5.45 31.62 -v 4.21 5.44 31.61 -v 3.82 5.78 31.80 -v 4.28 5.78 31.79 -v 3.85 6.13 31.59 -v 4.24 6.12 31.59 -v 3.87 6.13 31.20 -v 4.12 6.13 31.22 -v 3.86 5.80 31.02 -v 4.05 5.80 31.05 -v 3.83 5.45 31.23 -v 4.09 5.45 31.25 -v 4.38 5.46 30.86 -v 4.67 5.45 31.12 -v 4.82 5.79 31.24 -v 4.70 6.13 31.09 -v 4.41 6.14 30.84 -v 4.26 5.80 30.72 -v 3.68 5.39 34.48 -v 4.07 5.38 34.48 -v 3.68 5.72 34.66 -v 4.14 5.72 34.65 -v 3.71 6.07 34.46 -v 4.10 6.06 34.45 -v 3.73 6.08 34.07 -v 3.99 6.07 34.08 -v 3.72 5.74 33.89 -v 3.91 5.74 33.91 -v 3.69 5.39 34.09 -v 3.95 5.39 34.11 -v 4.24 5.40 33.73 -v 4.53 5.39 33.99 -v 4.69 5.73 34.10 -v 4.56 6.07 33.96 -v 4.28 6.08 33.70 -v 4.12 5.74 33.59 -v 2.00 9.86 13.69 -v 0.48 10.50 13.49 -v 2.82 8.80 13.37 -v 3.16 8.00 12.53 -v 3.18 7.88 11.58 -v 3.25 8.63 9.91 -v 3.52 6.72 9.87 -v 3.62 7.10 5.87 -v 3.59 7.56 0.92 -v 3.15 7.97 -3.64 -v 2.31 8.62 -5.12 -v 1.61 8.87 -5.63 -v 0.65 8.95 -5.81 -v -0.32 8.88 -5.61 -v -1.05 8.64 -5.08 -v -1.99 8.01 -3.59 -v -2.58 7.61 0.98 -v -2.78 7.15 5.93 -v -2.82 6.77 9.93 -v -2.37 8.67 9.96 -v -2.41 7.93 11.63 -v -2.41 8.05 12.58 -v -2.01 8.84 13.42 -v -1.11 9.89 13.72 -v 2.65 -0.56 6.70 -v -2.55 -0.52 6.75 -v -2.25 3.17 2.89 -v 2.75 3.13 2.84 -v -1.08 9.58 0.57 -v 2.23 9.55 0.54 -v -2.17 3.24 6.44 -v 2.58 3.21 6.40 -v -2.27 0.09 6.82 -v 2.37 0.05 6.77 -v -1.09 9.25 -0.17 -v 2.22 9.22 -0.20 -v -1.96 -0.05 1.55 -v 2.19 -0.09 1.51 -v 3.50 8.34 10.37 -v 2.27 12.35 9.94 -v -1.02 12.37 9.97 -v -2.69 8.38 10.43 -v 3.22 8.34 10.37 -v 2.04 12.02 9.96 -v -0.82 12.04 9.99 -v -2.41 8.39 10.42 -v 1.01 7.38 -18.16 -v 1.12 12.77 -18.66 -v 0.72 7.40 -17.87 -v 0.98 12.78 -18.51 -v 0.43 7.39 -18.16 -v 0.84 12.77 -18.65 -v 0.72 7.38 -18.45 -v 0.98 12.77 -18.80 -v 15.64 4.97 -32.81 -# 1073 vertices - -vn 0.05 1.00 0.07 -vn -0.95 0.32 0.03 -vn -0.95 0.31 0.03 -vn -0.96 0.27 0.04 -vn -0.96 0.28 0.01 -vn -0.96 0.29 0.01 -vn -0.96 0.27 -0.04 -vn -0.96 0.27 -0.05 -vn -0.95 0.28 -0.12 -vn -0.96 0.26 -0.14 -vn -0.88 0.37 -0.28 -vn -0.88 0.40 -0.26 -vn -0.66 0.56 -0.49 -vn -0.59 0.64 -0.49 -vn -0.29 0.75 -0.59 -vn -0.31 0.76 -0.57 -vn 0.00 0.78 -0.62 -vn 0.00 0.79 -0.62 -vn 0.30 0.74 -0.60 -vn 0.32 0.75 -0.58 -vn 0.60 0.62 -0.50 -vn 0.69 0.52 -0.50 -vn 0.91 0.34 -0.25 -vn 0.91 0.30 -0.27 -vn 0.98 0.19 -0.09 -vn 0.98 0.18 -0.10 -vn 0.98 0.19 -0.01 -vn 0.98 0.18 -0.02 -vn 0.98 0.19 0.03 -vn 0.98 0.21 0.04 -vn 0.98 0.18 0.06 -vn 0.97 0.22 0.06 -vn 0.97 0.24 0.05 -vn -0.97 -0.22 -0.05 -vn -0.98 -0.20 -0.05 -vn -0.98 -0.17 -0.06 -vn -0.98 -0.16 -0.06 -vn -0.98 -0.18 -0.03 -vn -0.98 -0.19 -0.04 -vn -0.99 -0.17 0.01 -vn -0.99 -0.17 0.02 -vn -0.98 -0.18 0.08 -vn -0.98 -0.16 0.10 -vn -0.92 -0.28 0.27 -vn -0.92 -0.31 0.24 -vn -0.69 -0.51 0.51 -vn -0.62 -0.60 0.51 -vn -0.30 -0.73 0.62 -vn -0.33 -0.73 0.60 -vn -0.00 -0.77 0.64 -vn -0.00 -0.78 0.63 -vn 0.29 -0.74 0.61 -vn 0.32 -0.74 0.59 -vn 0.60 -0.62 0.50 -vn 0.67 -0.55 0.50 -vn 0.89 -0.38 0.25 -vn 0.89 -0.35 0.28 -vn 0.96 -0.26 0.11 -vn 0.96 -0.25 0.13 -vn 0.97 -0.26 0.04 -vn 0.97 -0.25 0.04 -vn 0.96 -0.26 -0.01 -vn 0.96 -0.28 -0.01 -vn 0.97 -0.25 -0.03 -vn 0.96 -0.29 -0.03 -vn 0.95 -0.30 -0.02 -vn 0.01 0.11 0.99 -vn 0.03 0.08 1.00 -vn 0.01 0.10 0.99 -vn -0.01 0.08 1.00 -vn -0.96 -0.28 -0.06 -vn -0.62 -0.79 -0.00 -vn -0.59 -0.81 -0.00 -vn 0.59 -0.81 0.01 -vn 0.54 -0.84 0.01 -vn 0.93 -0.36 -0.03 -vn 0.93 -0.36 -0.04 -vn -0.01 -0.10 -0.99 -vn 0.01 -0.08 -1.00 -vn -0.03 -0.08 -1.00 -vn 0.01 1.00 0.09 -vn -0.07 0.99 0.07 -vn -0.01 1.00 0.08 -vn -0.01 1.00 0.09 -vn 0.10 0.99 0.09 -vn 0.25 0.97 0.08 -vn -0.11 0.99 0.08 -vn 0.08 0.99 0.08 -vn -0.03 1.00 0.07 -vn -0.75 0.66 0.05 -vn 0.13 0.99 0.09 -vn 0.20 0.98 0.09 -vn -0.03 1.00 0.08 -vn -0.03 1.00 0.09 -vn 0.05 1.00 0.08 -vn 0.03 1.00 0.05 -vn 0.05 1.00 -0.03 -vn 0.08 0.99 -0.08 -vn 0.06 1.00 0.01 -vn 0.08 1.00 0.03 -vn 0.06 1.00 0.05 -vn -0.01 1.00 0.05 -vn -0.05 1.00 0.04 -vn -0.07 1.00 0.03 -vn -0.04 1.00 0.01 -vn -0.07 0.99 -0.09 -vn -0.04 1.00 -0.03 -vn -0.05 -0.95 -0.32 -vn -0.21 -0.95 -0.25 -vn -0.32 -0.93 -0.19 -vn -0.19 -0.98 -0.10 -vn -0.26 -0.93 0.26 -vn -0.13 -0.99 0.03 -vn 0.11 -0.99 0.04 -vn 0.21 -0.95 -0.25 -vn 0.31 -0.94 -0.16 -vn 0.18 -0.98 -0.08 -vn 0.25 -0.93 0.28 -vn 0.03 -0.95 -0.32 -vn 0.08 -0.99 -0.08 -vn -0.50 -0.86 -0.08 -vn -0.04 -1.00 -0.09 -vn -0.09 -0.99 -0.09 -vn -0.18 -0.98 -0.09 -vn -0.01 -1.00 -0.09 -vn -0.04 -0.99 -0.09 -vn 0.02 -1.00 -0.08 -vn -0.03 -1.00 -0.09 -vn 0.47 -0.88 -0.06 -vn -0.09 -0.99 -0.08 -vn -0.14 -0.99 -0.08 -vn -0.00 -1.00 -0.09 -vn 0.02 -1.00 -0.09 -vn 0.07 -0.99 -0.08 -vn 0.96 0.27 0.06 -vn 0.60 0.80 0.00 -vn 0.62 0.78 0.00 -vn -0.55 0.84 -0.01 -vn -0.59 0.81 -0.01 -vn -0.94 0.35 0.03 -vn -0.94 0.35 0.04 -vn 0.41 0.82 -0.40 -vn -0.95 -0.30 -0.05 -vn -1.00 0.04 -0.08 -vn -0.99 -0.05 -0.12 -vn -0.96 -0.21 0.16 -vn -0.94 -0.19 0.29 -vn -0.89 0.08 0.45 -vn -0.78 -0.00 0.62 -vn -0.65 0.14 0.75 -vn -0.63 0.51 0.59 -vn 0.02 0.13 0.99 -vn -0.01 0.11 0.99 -vn 0.65 0.46 0.61 -vn 0.66 0.08 0.75 -vn 0.89 -0.00 0.46 -vn 0.78 -0.07 0.62 -vn 0.91 -0.27 0.30 -vn 0.94 -0.30 0.18 -vn 1.00 -0.03 -0.06 -vn 0.92 -0.40 -0.02 -vn 0.99 -0.14 -0.10 -vn 0.86 -0.51 -0.10 -vn 0.95 -0.32 0.04 -vn 0.89 -0.45 -0.02 -vn 0.52 -0.85 -0.13 -vn 0.98 -0.12 0.13 -vn 0.84 0.44 0.32 -vn 0.51 0.86 0.05 -vn 0.96 0.25 0.09 -vn 0.91 0.41 0.06 -vn 0.88 -0.46 0.08 -vn 0.82 -0.55 0.13 -vn 0.38 -0.92 0.10 -vn 0.32 -0.94 0.14 -vn -0.01 -0.99 0.11 -vn 0.90 -0.43 0.03 -vn 0.56 -0.82 -0.06 -vn 0.52 -0.86 0.02 -vn -0.65 -0.76 -0.09 -vn -0.94 -0.35 -0.03 -vn -0.56 -0.82 -0.13 -vn -0.93 -0.36 0.00 -vn -0.55 -0.84 0.00 -vn -0.92 -0.40 0.06 -vn -0.41 -0.91 0.09 -vn -0.86 -0.50 0.12 -vn -0.35 -0.93 0.14 -vn -0.01 -1.00 0.08 -vn 0.13 -0.99 0.03 -vn 0.15 -0.99 -0.08 -vn 0.13 -0.98 -0.17 -vn 0.47 -0.84 -0.26 -vn -0.94 0.33 0.07 -vn -0.99 -0.03 0.11 -vn -0.81 0.51 0.29 -vn -0.99 -0.10 -0.13 -vn -0.92 -0.35 -0.19 -vn -0.89 -0.45 -0.10 -vn -0.48 0.87 0.03 -vn -0.89 0.46 0.04 -vn 0.66 0.74 -0.13 -vn 0.01 0.98 -0.20 -vn 0.46 0.85 -0.26 -vn 0.01 0.99 -0.13 -vn -0.62 0.77 -0.14 -vn -0.62 0.77 -0.12 -vn -0.91 0.41 -0.10 -vn -0.90 0.42 -0.10 -vn -0.98 0.17 -0.09 -vn -0.98 0.19 -0.08 -vn -1.00 -0.00 -0.09 -vn -1.00 0.03 -0.09 -vn -0.94 -0.31 -0.14 -vn -0.56 -0.78 -0.29 -vn -0.50 -0.82 -0.28 -vn 0.01 0.99 -0.10 -vn -0.60 0.79 -0.11 -vn 0.89 -0.42 -0.16 -vn 0.52 -0.81 -0.27 -vn -0.01 -0.93 -0.36 -vn -0.01 -1.00 0.00 -vn -0.58 -0.81 -0.14 -vn -0.97 -0.19 -0.14 -vn -0.99 0.05 -0.10 -vn -0.98 0.16 -0.09 -vn -0.91 0.40 -0.09 -vn -0.63 0.77 -0.09 -vn -1.00 -0.02 -0.08 -vn -0.87 -0.47 -0.16 -vn -0.02 -0.99 -0.17 -vn 0.54 -0.83 -0.11 -vn 0.91 -0.39 -0.12 -vn 0.98 -0.19 -0.11 -vn 1.00 -0.06 -0.06 -vn 1.00 -0.02 -0.06 -vn 0.99 0.13 -0.06 -vn 1.00 0.08 -0.05 -vn 0.91 0.39 -0.13 -vn 0.96 0.25 -0.14 -vn -0.99 0.07 -0.07 -vn -1.00 -0.03 -0.07 -vn -0.99 0.11 -0.06 -vn -0.77 -0.62 -0.11 -vn -0.01 -0.99 -0.17 -vn 0.83 -0.54 -0.13 -vn 0.95 -0.28 -0.11 -vn 0.99 -0.09 -0.07 -vn 0.99 0.10 -0.06 -vn 0.94 0.34 -0.08 -vn 0.66 0.74 -0.11 -vn 0.99 0.08 -0.07 -vn 1.00 -0.04 -0.08 -vn -0.81 -0.58 -0.11 -vn -0.01 -0.99 -0.11 -vn 0.74 -0.67 -0.08 -vn 0.99 -0.11 -0.05 -vn 1.00 0.07 -0.07 -vn 0.93 0.35 -0.09 -vn 0.63 0.77 -0.10 -vn 0.94 0.32 -0.07 -vn 1.00 0.02 -0.03 -vn 0.99 -0.12 -0.04 -vn 0.78 -0.63 -0.08 -vn -0.01 -0.99 -0.10 -vn -0.81 -0.57 -0.12 -vn -1.00 0.01 -0.08 -vn -1.00 0.02 -0.09 -vn -0.99 0.07 -0.08 -vn -1.00 -0.02 -0.07 -vn -0.75 -0.65 -0.12 -vn -0.99 -0.05 -0.11 -vn -0.72 -0.67 -0.16 -vn -0.99 -0.06 -0.13 -vn -0.99 0.05 -0.13 -vn -0.98 0.14 -0.14 -vn -0.99 -0.03 -0.13 -vn -0.99 0.03 -0.10 -vn -0.99 -0.09 -0.09 -vn -1.00 0.02 -0.07 -vn -0.99 0.15 0.00 -vn -0.93 0.36 -0.04 -vn -0.84 0.53 0.04 -vn -0.98 -0.05 -0.18 -vn -0.91 0.39 -0.13 -vn -0.97 0.20 -0.11 -vn -0.71 0.70 -0.06 -vn -0.80 0.60 -0.04 -vn -0.49 0.87 0.01 -vn -0.72 0.69 0.04 -vn -0.70 0.71 -0.03 -vn -0.98 0.16 -0.12 -vn -0.97 0.22 -0.07 -vn -1.00 0.07 -0.05 -vn -0.99 0.05 -0.11 -vn -0.99 0.10 0.02 -vn -0.95 0.32 0.00 -vn -0.94 0.32 0.07 -vn -0.00 1.00 -0.06 -vn 0.67 0.73 -0.07 -vn 0.75 0.65 0.06 -vn 0.84 0.55 -0.03 -vn 0.88 0.48 0.07 -vn 1.00 0.06 0.03 -vn 1.00 -0.07 -0.05 -vn 1.00 -0.03 -0.05 -vn 0.99 -0.11 -0.04 -vn 1.00 -0.07 -0.06 -vn 0.99 -0.08 -0.07 -vn 0.80 -0.59 -0.09 -vn 0.71 -0.70 -0.10 -vn -0.01 -0.99 -0.12 -vn 1.00 -0.06 -0.07 -vn 0.98 -0.18 -0.06 -vn 0.99 -0.13 -0.09 -vn 0.94 0.33 -0.11 -vn 0.96 0.13 0.26 -vn 0.96 0.11 0.26 -vn 0.99 0.13 0.01 -vn 1.00 -0.03 0.02 -vn 1.00 -0.03 -0.01 -vn 1.00 0.01 0.06 -vn 1.00 -0.02 -0.02 -vn 0.97 0.25 0.04 -vn 0.99 0.14 -0.03 -vn 0.83 0.55 -0.02 -vn 0.98 0.16 -0.09 -vn 0.75 0.66 -0.04 -vn 0.99 -0.11 -0.11 -vn 0.99 -0.05 -0.09 -vn 0.99 -0.14 -0.08 -vn 0.52 0.85 0.02 -vn 0.96 0.26 0.10 -vn 0.02 0.97 0.22 -vn 0.99 0.08 0.14 -vn 0.03 0.82 0.57 -vn 0.01 0.55 0.84 -vn -0.95 0.20 0.23 -vn -0.95 0.22 0.24 -vn -0.98 0.19 -0.06 -vn -1.00 0.07 -0.02 -vn -0.63 0.76 -0.13 -vn -0.98 0.18 0.11 -vn -0.98 0.17 -0.08 -vn -0.83 0.53 0.15 -vn 0.01 0.57 0.82 -vn -0.86 0.50 -0.08 -vn 1.00 -0.03 -0.02 -vn 1.00 0.03 -0.03 -vn 0.90 0.44 -0.05 -vn 0.87 0.46 0.16 -vn -0.06 0.74 0.67 -vn -0.06 1.00 0.01 -vn 0.04 0.99 -0.10 -vn -1.00 0.05 -0.02 -vn 0.98 -0.15 -0.10 -vn 0.70 -0.71 -0.13 -vn 0.99 -0.05 -0.13 -vn 0.99 0.08 -0.11 -vn 0.99 0.08 -0.08 -vn 1.00 0.06 -0.02 -vn 1.00 0.03 -0.00 -vn 1.00 0.02 0.01 -vn 1.00 0.01 0.02 -vn 1.00 0.08 0.06 -vn 1.00 0.01 0.03 -vn 0.99 0.11 0.03 -vn 1.00 0.07 0.02 -vn 1.00 0.09 -0.00 -vn 1.00 -0.00 0.01 -vn 1.00 0.03 0.03 -vn 1.00 -0.03 0.03 -vn 1.00 -0.03 0.07 -vn 0.99 -0.14 0.07 -vn 0.89 -0.42 0.16 -vn 0.88 -0.44 0.17 -vn 0.49 -0.84 0.25 -vn 0.98 0.17 -0.05 -vn 0.99 0.14 -0.00 -vn 1.00 0.08 -0.01 -vn 1.00 0.03 -0.04 -vn 0.97 0.21 -0.13 -vn 0.98 0.19 -0.04 -vn 0.95 0.30 -0.03 -vn 0.96 0.27 -0.05 -vn 0.99 0.15 0.03 -vn 0.99 0.17 0.02 -vn 0.50 -0.83 0.25 -vn -0.01 -0.97 0.24 -vn -0.01 -0.97 0.26 -vn -0.53 -0.81 0.25 -vn -0.52 -0.82 0.24 -vn -0.92 -0.37 0.15 -vn -0.93 -0.35 0.14 -vn -1.00 -0.05 0.05 -vn -1.00 0.07 0.05 -vn -1.00 0.06 0.01 -vn -0.99 0.13 0.00 -vn -1.00 0.09 -0.02 -vn -0.99 0.11 -0.02 -vn -0.98 0.18 -0.03 -vn -0.99 0.16 -0.01 -vn -0.98 0.20 0.00 -vn -0.99 0.10 0.00 -vn -0.98 0.17 0.03 -vn -0.51 -0.84 0.20 -vn -0.01 -0.99 0.17 -vn -0.98 -0.10 0.14 -vn -0.73 -0.67 0.14 -vn -0.27 -0.95 0.15 -vn -0.01 -0.99 0.16 -vn 0.47 -0.86 0.20 -vn 0.69 -0.71 0.15 -vn 0.97 -0.18 0.16 -vn 0.25 -0.96 0.16 -vn -0.99 0.10 -0.01 -vn -0.99 0.12 -0.01 -vn -0.99 0.12 -0.03 -vn -0.99 0.15 -0.05 -vn -0.98 0.17 -0.07 -vn -0.93 0.33 -0.16 -vn -0.88 0.46 -0.15 -vn -0.66 0.56 -0.50 -vn -0.43 0.86 -0.26 -vn -0.97 0.22 -0.08 -vn -0.99 0.12 -0.06 -vn -0.98 0.17 -0.03 -vn -0.97 0.22 -0.02 -vn -0.96 0.25 -0.07 -vn -0.95 0.29 -0.15 -vn -0.96 0.28 -0.06 -vn -0.92 0.38 -0.05 -vn -0.94 0.35 -0.08 -vn -0.97 0.24 0.00 -vn -0.97 0.25 -0.00 -vn 0.98 0.16 0.10 -vn 0.98 0.19 0.05 -vn 0.97 0.25 -0.00 -vn 0.96 0.28 -0.03 -vn 1.00 0.06 -0.01 -vn 1.00 -0.02 0.01 -vn 0.99 -0.09 0.04 -vn 0.98 -0.20 0.08 -vn 0.78 -0.59 0.20 -vn 0.94 -0.29 0.20 -vn 0.79 -0.54 0.29 -vn 0.91 -0.25 0.32 -vn 0.98 -0.09 0.19 -vn 0.61 -0.75 0.26 -vn 0.91 -0.31 0.29 -vn 0.96 -0.12 0.25 -vn 0.97 0.19 0.14 -vn 0.96 0.21 0.20 -vn 0.85 0.50 0.16 -vn 0.78 0.58 0.22 -vn 0.63 0.76 0.15 -vn 0.56 0.80 0.21 -vn 0.30 0.94 0.13 -vn 0.30 0.94 0.15 -vn 0.01 0.99 0.12 -vn 0.01 0.99 0.11 -vn -0.28 0.95 0.14 -vn -0.28 0.95 0.12 -vn -0.52 0.83 0.19 -vn -0.60 0.79 0.13 -vn -0.75 0.63 0.20 -vn -0.83 0.54 0.13 -vn -0.28 0.96 0.08 -vn -0.27 0.96 0.04 -vn 0.01 1.00 0.05 -vn 0.01 1.00 0.07 -vn 0.31 0.95 0.09 -vn 0.61 0.79 0.09 -vn 0.87 0.48 0.09 -vn 0.98 0.16 0.06 -vn 0.87 0.48 0.05 -vn 0.55 0.83 0.07 -vn 0.61 0.79 0.03 -vn 0.29 0.96 0.05 -vn 0.28 0.96 0.03 -vn 0.33 0.95 -0.01 -vn 0.01 1.00 0.02 -vn 0.01 1.00 -0.01 -vn 0.01 1.00 -0.02 -vn -0.46 0.89 -0.04 -vn -0.99 0.14 -0.02 -vn -0.98 0.17 -0.01 -vn -0.90 0.44 -0.02 -vn -0.91 0.41 -0.08 -vn -0.69 0.72 -0.09 -vn -0.77 0.63 -0.10 -vn -0.84 0.54 0.01 -vn -0.58 0.82 0.03 -vn 0.49 0.87 -0.03 -vn 0.39 0.92 -0.04 -vn 0.67 0.75 -0.01 -vn 0.92 0.39 0.02 -vn 0.99 0.11 0.02 -vn -0.99 0.15 -0.04 -vn -0.93 0.36 -0.06 -vn -0.94 0.34 -0.02 -vn -1.00 0.00 0.01 -vn -0.96 0.27 0.02 -vn -0.97 0.24 0.08 -vn -0.95 0.28 0.14 -vn -0.95 0.29 0.09 -vn -0.98 -0.02 0.21 -vn -0.98 0.04 0.17 -vn -0.93 -0.23 0.27 -vn -0.94 -0.17 0.31 -vn -0.96 -0.21 0.18 -vn -0.83 -0.48 0.28 -vn -0.82 -0.54 0.19 -vn -0.64 -0.72 0.26 -vn -0.99 -0.11 0.06 -vn -1.00 0.08 -0.01 -vn -1.00 0.04 0.03 -vn -0.98 0.20 -0.01 -vn -0.89 0.46 -0.00 -vn -0.63 0.78 -0.03 -vn -0.36 0.93 -0.05 -vn -0.30 0.95 -0.02 -vn -0.26 0.97 0.03 -vn -0.84 0.54 0.03 -vn -0.58 0.82 0.02 -vn -0.52 0.85 0.05 -vn -0.84 0.54 0.07 -vn -0.97 0.25 0.04 -vn -0.57 0.82 0.07 -vn 1.00 -0.06 0.05 -vn 1.00 0.08 0.01 -vn 1.00 0.05 0.01 -vn 0.93 0.37 0.01 -vn 0.94 0.34 -0.06 -vn 0.73 0.68 -0.07 -vn 0.81 0.58 -0.08 -vn 0.88 0.47 0.03 -vn 0.62 0.78 0.04 -vn -0.02 0.99 0.14 -vn -0.01 0.99 0.11 -vn -0.01 1.00 -0.08 -vn -0.02 1.00 -0.08 -vn -0.02 0.99 -0.12 -vn -0.09 0.99 -0.12 -vn -0.15 0.99 0.00 -vn -0.18 0.98 -0.10 -vn -0.14 0.98 0.16 -vn -0.04 0.99 0.16 -vn -0.05 0.93 0.35 -vn -0.03 0.94 0.33 -vn -0.02 0.96 0.28 -vn -0.02 0.98 0.18 -vn 0.02 1.00 0.05 -vn -0.03 0.99 0.15 -vn -0.01 1.00 -0.02 -vn -0.08 0.99 -0.09 -vn -0.03 0.99 -0.10 -vn 0.00 1.00 -0.09 -vn -0.01 0.99 -0.12 -vn 0.01 0.99 -0.14 -vn -0.43 0.85 -0.29 -vn -0.14 0.94 -0.32 -vn 0.37 0.86 0.35 -vn 0.25 0.81 0.54 -vn 0.72 0.00 0.70 -vn 0.39 0.00 0.92 -vn 0.37 -0.86 0.35 -vn 0.24 -0.81 0.53 -vn -0.43 -0.84 -0.34 -vn -0.15 -0.93 -0.34 -vn -0.83 0.06 -0.55 -vn -0.44 -0.00 -0.90 -vn 0.13 -0.05 -0.99 -vn 0.04 0.86 -0.51 -vn 0.01 0.85 0.52 -vn 0.02 0.02 1.00 -vn -0.00 -0.86 0.51 -vn 0.04 -0.86 -0.51 -vn 0.03 1.00 -0.08 -vn 0.03 0.99 -0.11 -vn 0.02 1.00 -0.08 -vn 0.02 0.99 -0.11 -vn 0.01 1.00 -0.09 -vn 0.00 0.99 -0.13 -vn -0.00 1.00 0.05 -vn 0.09 0.99 -0.08 -vn 0.02 1.00 -0.02 -vn 0.04 0.99 0.15 -vn 0.04 0.98 0.18 -vn 0.02 0.99 0.11 -vn 0.04 0.96 0.28 -vn 0.04 0.99 0.14 -vn 0.05 0.94 0.33 -vn 0.06 0.98 0.16 -vn 0.08 0.93 0.36 -vn 0.16 0.97 0.17 -vn 0.17 0.99 0.01 -vn -0.01 0.99 -0.14 -vn 0.22 0.97 -0.09 -vn 0.12 0.99 -0.11 -vn 0.08 0.98 -0.15 -vn 0.04 0.98 -0.18 -vn 0.96 0.28 -0.02 -vn 1.00 -0.02 -0.04 -vn 1.00 -0.08 -0.05 -vn 0.78 -0.62 -0.10 -vn -0.84 -0.54 -0.12 -vn -0.99 0.01 -0.10 -vn 0.00 -0.86 0.51 -vn -0.00 0.04 1.00 -vn -0.26 -0.80 0.54 -vn 0.13 -0.94 -0.32 -vn 0.40 -0.86 -0.32 -vn 0.84 -0.02 -0.54 -vn 0.43 -0.04 -0.90 -vn 0.47 0.83 -0.30 -vn 0.15 0.93 -0.33 -vn -0.34 0.87 0.34 -vn -0.21 0.82 0.53 -vn -0.72 0.04 0.69 -vn -0.38 0.03 0.92 -vn -0.39 -0.85 0.35 -vn 0.01 0.87 0.50 -vn -0.04 0.86 -0.51 -vn -0.15 -0.02 -0.99 -vn -0.06 -0.85 -0.53 -vn -0.14 0.97 -0.18 -vn -0.17 0.97 -0.18 -vn -0.39 0.91 -0.13 -vn -0.41 0.90 -0.12 -vn -0.46 0.88 -0.07 -vn -0.47 0.88 -0.06 -vn -0.44 0.90 -0.04 -vn -0.44 0.90 0.01 -vn -0.41 0.91 0.05 -vn -0.58 0.81 0.10 -vn -0.59 0.80 0.11 -vn -0.63 0.72 0.30 -vn -0.67 0.62 0.41 -vn -0.71 0.49 0.51 -vn -0.71 0.49 0.50 -vn 0.07 0.99 -0.11 -vn 0.12 0.99 -0.10 -vn 0.08 0.99 -0.10 -vn 0.12 0.99 -0.08 -vn 0.11 0.99 -0.10 -vn 0.11 0.99 -0.04 -vn 0.10 0.99 -0.04 -vn 0.07 1.00 0.01 -vn 0.07 1.00 0.02 -vn 0.11 0.98 0.18 -vn 0.15 0.96 0.22 -vn 0.25 0.87 0.42 -vn 0.34 0.83 0.44 -vn 0.29 0.76 0.58 -vn 0.21 0.82 0.53 -vn 0.19 0.92 0.36 -vn 0.53 -0.83 0.18 -vn 0.31 -0.94 0.15 -vn 0.24 -0.96 0.13 -vn -0.00 -1.00 0.08 -vn -0.33 -0.93 0.14 -vn -0.27 -0.95 0.14 -vn -0.56 -0.81 0.18 -vn -0.97 0.22 0.05 -vn -0.91 0.42 0.01 -vn -0.01 -0.11 -0.99 -vn 0.99 0.13 0.07 -vn 0.94 0.34 0.03 -vn 0.73 0.43 0.53 -vn 0.70 0.56 0.44 -vn 0.65 0.69 0.32 -vn 0.58 0.80 0.14 -vn 0.57 0.81 0.13 -vn 0.46 0.89 0.02 -vn 0.44 0.90 0.05 -vn 0.46 0.89 -0.03 -vn 0.47 0.88 -0.03 -vn 0.50 0.87 -0.06 -vn 0.49 0.87 -0.06 -vn 0.44 0.89 -0.11 -vn 0.41 0.90 -0.12 -vn 0.19 0.97 -0.17 -vn 0.16 0.97 -0.18 -vn -0.67 0.00 -0.74 -vn 0.67 -0.06 -0.74 -vn -0.05 -0.99 -0.10 -vn -0.06 -0.99 -0.11 -vn -0.04 -0.99 -0.10 -vn -0.03 -0.99 -0.12 -vn -0.02 -0.99 -0.11 -vn -0.02 -0.99 -0.13 -vn -0.03 -0.99 -0.10 -vn -0.02 -0.99 -0.10 -vn -0.03 -1.00 -0.07 -vn -0.05 -1.00 -0.01 -vn -0.03 -1.00 0.02 -vn -0.04 -1.00 0.07 -vn -0.08 -1.00 -0.02 -vn -0.05 -1.00 0.07 -vn -0.08 -1.00 -0.03 -vn -0.09 -0.99 0.06 -vn 0.02 -1.00 -0.04 -vn -0.12 -0.99 0.01 -vn -0.01 -1.00 0.02 -vn -0.06 -0.99 -0.12 -vn -0.07 -0.99 -0.11 -vn -0.05 -0.99 -0.11 -vn -0.08 -0.99 -0.10 -vn -0.01 -1.00 -0.05 -vn -0.03 -1.00 -0.05 -vn 0.11 -0.99 0.02 -vn 0.07 -1.00 0.06 -vn 0.19 -0.97 0.14 -vn 0.10 -0.97 0.22 -vn 0.53 -0.80 0.29 -vn -0.01 -1.00 -0.03 -vn -0.11 -0.99 -0.10 -vn -0.08 -0.99 -0.07 -vn 0.07 -1.00 -0.07 -vn 0.01 -1.00 -0.09 -vn -0.18 -0.98 0.08 -vn -0.88 -0.16 0.45 -vn -0.86 -0.25 0.44 -vn -0.24 -0.94 0.22 -vn -0.01 -0.97 0.23 -vn 0.23 -0.95 0.22 -vn 0.16 -0.98 0.08 -vn 0.83 -0.32 0.45 -vn 0.86 -0.24 0.45 -vn 0.03 -1.00 -0.09 -vn 0.03 -0.99 -0.10 -vn 0.04 -0.99 -0.11 -vn 0.02 -0.99 -0.12 -vn 0.03 -0.99 -0.11 -vn 0.02 -0.99 -0.11 -vn 0.05 -0.99 -0.11 -vn 0.04 -0.99 -0.10 -vn 0.06 -1.00 -0.02 -vn 0.07 -1.00 -0.00 -vn 0.04 -1.00 0.07 -vn 0.09 -0.97 0.23 -vn 0.07 -1.00 -0.03 -vn 0.06 -0.99 -0.10 -vn 0.09 -0.99 -0.10 -vn -0.01 -1.00 -0.02 -vn 0.13 -0.99 0.00 -vn 0.61 -0.78 0.12 -vn 0.66 -0.70 0.29 -vn 0.23 -0.89 0.39 -vn 0.14 -0.91 0.40 -vn 0.14 -0.91 0.39 -vn -0.07 -0.98 0.20 -vn -0.10 -0.97 0.23 -vn -0.11 -0.97 0.22 -vn -0.21 -0.97 0.13 -vn -0.14 -0.99 0.00 -vn -0.01 -1.00 0.05 -vn 0.25 -0.97 0.02 -vn -0.56 -0.78 0.28 -vn -0.11 -0.93 0.35 -vn -0.14 -0.91 0.39 -vn -0.14 -0.90 0.40 -vn -0.25 -0.89 0.39 -vn -0.69 -0.67 0.28 -vn -0.66 -0.75 0.11 -vn -0.27 -0.96 0.01 -vn -0.08 -0.99 -0.09 -vn -0.18 -0.98 0.03 -vn -0.01 -1.00 -0.07 -vn -0.01 -1.00 -0.01 -vn 0.16 -0.99 0.03 -vn 0.06 -0.99 -0.09 -vn -0.11 -0.99 -0.09 -vn -0.46 -0.88 0.13 -vn -0.19 -0.98 0.07 -vn -0.46 -0.87 0.18 -vn 0.44 -0.88 0.19 -vn 0.18 -0.98 0.08 -vn 0.43 -0.89 0.14 -vn 0.09 -0.99 -0.09 -vn -0.09 0.99 -0.04 -vn -0.04 1.00 -0.04 -vn 0.00 1.00 -0.05 -vn -0.00 1.00 0.01 -vn -0.03 0.98 0.17 -vn -0.06 0.97 0.23 -vn -0.21 0.89 0.42 -vn -0.20 0.84 0.51 -vn -0.27 0.78 0.57 -vn -0.32 0.86 0.40 -vn -0.09 0.97 0.21 -vn -0.10 0.91 0.41 -vn -0.15 0.87 0.46 -vn -0.00 1.00 -0.08 -vn -0.04 0.99 -0.09 -vn -0.10 0.99 -0.08 -vn -0.05 0.99 -0.10 -vn -0.10 0.99 -0.10 -vn -0.04 1.00 -0.09 -vn -0.05 0.99 -0.11 -vn 0.01 0.99 -0.11 -vn 0.97 0.08 0.25 -vn -0.51 0.85 0.14 -vn -0.32 0.94 0.12 -vn -0.26 0.96 0.14 -vn 0.06 0.97 0.23 -vn 0.32 0.93 0.16 -vn 0.26 0.96 0.12 -vn 0.54 0.83 0.16 -vn -0.96 0.17 0.22 -vn 0.01 -0.93 0.36 -vn 0.00 -0.98 0.17 -vn 0.00 -0.98 0.18 -vn -0.02 -0.98 -0.21 -vn -0.02 -0.98 -0.20 -vn -0.02 -0.92 -0.39 -vn -0.01 0.93 -0.36 -vn -0.00 0.98 -0.17 -vn -0.00 0.98 -0.18 -vn 0.02 0.98 0.21 -vn 0.02 0.98 0.20 -vn 0.02 0.92 0.39 -vn 0.04 0.04 1.00 -vn -1.00 0.05 0.02 -vn -0.04 -0.04 -1.00 -vn -0.08 0.86 0.51 -vn 0.01 0.86 0.52 -vn -1.00 0.08 -0.05 -vn -0.99 -0.02 -0.11 -vn -0.99 -0.02 -0.12 -vn -0.01 -0.85 -0.52 -vn 0.08 -0.85 -0.52 -vn 0.09 -0.85 -0.52 -vn 0.99 -0.09 0.07 -vn 0.99 0.01 0.12 -vn 0.99 0.02 0.12 -vn 0.11 0.85 0.51 -vn 0.02 0.85 0.52 -vn 0.99 -0.11 -0.09 -vn -0.11 -0.85 -0.52 -vn -0.02 -0.85 -0.52 -vn -0.99 0.11 0.10 -vn -1.00 0.01 0.04 -vn -1.00 0.00 0.04 -vn -0.01 -0.10 -1.00 -vn -0.01 -0.79 -0.61 -vn -0.00 0.46 -0.89 -vn -0.01 -0.44 -0.90 -vn 0.01 0.36 0.93 -vn 0.00 -0.53 0.85 -vn -1.00 0.05 -0.01 -vn 1.00 -0.05 0.01 -vn -0.16 -0.97 -0.18 -vn -0.17 -0.98 -0.08 -vn -0.14 -0.99 0.02 -vn -0.01 -1.00 -0.08 -vn -0.01 -0.98 -0.21 -vn -0.01 -0.96 -0.29 -vn 0.01 0.95 0.30 -vn 0.74 -0.64 0.19 -vn 0.81 -0.47 -0.35 -vn 0.04 -0.94 0.35 -vn 0.03 -0.97 0.25 -vn 0.02 -0.93 0.37 -vn 0.27 -0.96 0.13 -vn 0.19 -0.98 0.08 -vn 0.48 -0.88 0.05 -vn 0.25 -0.97 0.05 -vn -0.00 -1.00 0.05 -vn 0.01 -1.00 0.05 -vn 0.01 -1.00 0.08 -vn 0.01 -1.00 0.04 -vn 0.08 -0.98 0.15 -vn 0.15 -0.99 0.04 -vn 0.10 -0.98 0.16 -vn 0.07 -0.94 0.34 -vn 0.04 -0.94 0.34 -vn 0.07 -0.85 0.53 -vn 0.01 -0.96 0.28 -vn 0.02 -0.95 0.31 -vn 0.04 -0.86 0.50 -vn 0.03 -0.89 0.45 -vn 0.14 0.98 -0.13 -vn -0.22 -0.92 0.32 -vn -0.01 -0.94 0.35 -vn -0.07 -0.92 0.39 -vn -0.00 -0.91 0.42 -vn 0.06 -0.92 0.39 -vn 0.21 -0.93 0.32 -vn 0.42 -0.10 -0.90 -vn 0.13 -0.53 -0.83 -vn -0.14 0.03 -0.99 -vn 0.17 0.25 -0.95 -vn -0.00 0.06 1.00 -vn 0.00 0.07 1.00 -vn 0.02 0.06 1.00 -vn 0.01 0.07 1.00 -vn -0.08 -1.00 0.03 -vn -0.04 -1.00 -0.02 -vn -0.10 -0.99 0.04 -vn -0.17 -0.99 0.04 -vn -0.12 -0.99 0.04 -vn -0.10 -0.98 0.15 -vn -0.03 -1.00 0.08 -vn -0.05 -0.94 0.34 -vn -0.03 -0.95 0.31 -vn -0.04 -0.86 0.50 -vn -0.03 -0.89 0.45 -vn -0.02 -0.96 0.28 -vn -0.03 -0.93 0.37 -vn -0.04 -0.97 0.25 -vn -0.05 -0.94 0.35 -vn -0.29 -0.95 0.12 -vn -0.20 -0.98 0.07 -vn -0.50 -0.86 0.04 -vn -0.29 -0.96 0.04 -vn -0.02 -1.00 0.08 -vn -0.02 -1.00 0.05 -vn -0.02 -1.00 0.04 -vn -0.07 -0.85 0.53 -vn -0.08 -0.94 0.34 -vn -0.11 -0.98 0.16 -vn -0.06 0.99 -0.14 -vn -0.02 0.99 -0.16 -vn -0.39 0.83 -0.40 -vn -0.84 -0.40 -0.38 -vn -0.78 -0.60 0.17 -vn -0.13 0.98 -0.14 -vn 0.01 0.05 1.00 -vn 0.01 0.06 1.00 -vn -0.12 -0.06 -0.99 -vn -0.15 -0.52 -0.84 -vn -0.43 -0.06 -0.90 -vn -0.19 -0.01 -0.98 -vn 0.00 0.12 -0.99 -vn 0.01 0.37 0.93 -vn -0.01 0.12 -0.99 -vn -0.01 0.10 -0.99 -vn -0.01 0.11 -0.99 -vn -0.01 0.09 -1.00 -vn 0.27 0.23 0.93 -vn 0.19 0.41 0.89 -vn 0.34 -0.13 0.93 -vn -0.16 0.43 0.89 -vn -0.25 0.25 0.93 -vn -0.31 -0.16 0.94 -vn -0.33 -0.11 0.94 -vn -0.11 -0.42 0.90 -vn -0.17 -0.38 0.91 -vn 0.12 -0.44 0.89 -vn 0.01 -0.61 0.79 -vn 0.17 -0.39 0.90 -vn 0.32 -0.19 0.93 -vn -0.95 0.22 0.21 -vn -0.01 -0.99 0.12 -vn 0.96 0.13 0.24 -vn -0.59 0.79 0.16 -vn -0.31 0.94 0.15 -vn -0.30 0.94 0.15 -vn 0.35 0.92 0.16 -vn 0.63 0.76 0.18 -vn 0.02 0.69 0.72 -vn 0.22 0.53 0.82 -vn -0.07 0.70 0.71 -vn -0.20 0.55 0.81 -vn -0.32 0.28 0.91 -vn -0.34 0.21 0.92 -vn -0.33 -0.24 0.91 -vn -0.35 -0.12 0.93 -vn -0.14 -0.63 0.77 -vn -0.24 -0.49 0.84 -vn -0.01 -0.48 0.88 -vn 0.16 -0.61 0.78 -vn 0.25 -0.50 0.83 -vn 0.34 -0.27 0.90 -vn 0.36 -0.14 0.92 -vn 0.34 0.25 0.91 -vn 0.35 0.19 0.92 -vn 0.09 0.71 0.70 -vn 0.00 -0.92 -0.39 -vn -0.00 -0.98 -0.21 -vn -0.00 -0.98 -0.20 -vn -0.01 -0.98 0.17 -vn -0.01 -0.98 0.18 -vn -0.02 -0.93 0.36 -vn -0.00 0.92 0.39 -vn 0.00 0.98 0.21 -vn 0.00 0.98 0.20 -vn 0.01 0.98 -0.17 -vn 0.01 0.98 -0.18 -vn 0.02 0.93 -0.36 -vn -0.03 0.04 1.00 -vn 1.00 -0.05 0.05 -vn 0.03 -0.04 -1.00 -vn 0.31 0.87 -0.39 -vn 0.37 0.92 0.09 -vn 0.68 0.61 -0.41 -vn 0.63 0.62 -0.46 -vn 0.55 0.72 -0.42 -vn 0.64 0.67 -0.37 -vn 0.24 0.96 -0.12 -vn 0.26 0.96 -0.12 -vn -0.11 0.92 0.39 -vn -0.23 0.89 0.39 -vn 0.47 0.10 -0.88 -vn 0.54 0.10 -0.84 -vn 0.16 0.98 0.09 -vn 0.08 0.99 0.10 -vn 0.24 0.97 0.08 -vn 0.31 0.95 0.05 -vn 0.23 0.97 0.07 -vn 0.51 0.86 0.06 -vn 0.45 0.88 0.13 -vn 0.34 0.94 -0.05 -vn 0.34 0.94 -0.00 -vn 0.10 0.99 -0.11 -vn 0.10 0.99 -0.09 -vn -0.08 0.99 -0.10 -vn -0.09 0.99 -0.11 -vn -0.34 0.94 -0.05 -vn -0.40 0.91 0.10 -vn -0.50 0.87 0.05 -vn -0.21 0.98 0.05 -vn -0.30 0.95 0.04 -vn -0.14 0.99 0.08 -vn -0.23 0.97 0.08 -vn -0.07 0.99 0.09 -vn -0.14 0.99 0.09 -vn -0.54 0.16 -0.83 -vn -0.47 0.13 -0.87 -vn 0.24 0.89 0.39 -vn 0.14 0.90 0.41 -vn -0.24 0.96 -0.12 -vn -0.23 0.97 -0.12 -vn -0.59 0.72 -0.36 -vn -0.54 0.73 -0.43 -vn -0.62 0.64 -0.46 -vn -0.64 0.66 -0.40 -vn -0.26 0.96 0.09 -vn -0.38 0.83 -0.41 -vn 0.40 0.85 -0.33 -vn 0.55 0.82 -0.18 -vn 0.74 0.63 -0.24 -vn -0.23 0.66 -0.71 -vn 0.90 0.23 -0.37 -vn -0.90 0.43 -0.07 -vn -0.98 0.21 0.05 -vn 0.02 0.10 -0.99 -vn -0.38 -0.03 -0.92 -vn -0.92 0.04 -0.38 -vn -0.99 0.13 0.02 -vn -0.99 0.13 0.01 -vn -0.83 0.17 0.53 -vn 0.10 0.89 0.44 -vn 0.02 0.90 0.44 -vn 0.03 0.90 0.44 -vn -0.00 0.90 0.43 -vn 0.00 0.90 0.43 -vn 0.01 0.90 0.44 -vn -0.07 0.90 0.44 -vn 0.78 0.61 0.15 -vn 1.00 0.04 0.04 -vn 1.00 0.03 0.04 -vn 1.00 0.03 0.01 -vn 0.74 -0.16 -0.65 -vn 0.85 -0.02 -0.52 -vn 0.93 0.33 0.17 -vn 0.95 -0.02 -0.30 -vn 0.93 0.36 -0.05 -vn -0.72 0.64 -0.26 -vn -0.71 0.28 -0.65 -vn -0.70 0.67 -0.25 -vn -0.38 0.91 -0.20 -vn -0.50 0.81 -0.31 -vn 0.01 0.99 0.10 -vn 0.01 1.00 0.10 -vn 0.01 0.34 0.94 -vn 0.01 0.12 0.99 -vn 0.00 0.91 -0.41 -vn -0.99 0.16 -0.06 -vn -0.99 0.14 -0.10 -vn -0.96 0.04 -0.28 -vn -0.96 0.04 -0.29 -vn 0.96 -0.05 -0.27 -vn 1.00 0.05 -0.08 -vn 0.96 -0.05 -0.26 -vn 1.00 0.07 -0.04 -vn -0.01 -0.18 -0.98 -vn 0.83 0.10 0.55 -vn -0.74 0.66 0.13 -vn 0.94 -0.32 -0.07 -vn 0.83 -0.56 0.01 -vn -0.09 -0.40 -0.91 -vn -0.12 0.12 -0.99 -vn -0.07 -0.68 -0.73 -vn -0.07 0.27 -0.96 -vn 0.02 1.00 -0.09 -vn -0.12 0.53 -0.84 -vn -0.10 -0.26 -0.96 -vn -0.12 -0.15 -0.98 -vn 0.05 -0.53 -0.85 -vn 0.03 -0.38 -0.93 -vn 0.03 -0.98 -0.21 -vn 0.09 -0.09 -0.99 -vn 0.07 0.04 -1.00 -vn 0.08 0.14 -0.99 -vn 0.05 0.26 -0.96 -vn -0.99 0.12 -0.09 -vn 0.96 0.29 0.00 -vn 0.58 0.81 0.00 -vn 0.61 0.79 0.00 -vn -0.53 0.85 -0.01 -vn -0.57 0.82 -0.01 -vn -0.92 0.38 -0.02 -vn -0.95 -0.30 -0.00 -vn -0.61 -0.80 -0.00 -vn -0.58 -0.82 -0.00 -vn 0.57 -0.82 0.01 -vn 0.52 -0.85 0.01 -vn 0.92 -0.40 0.02 -vn 0.99 -0.12 -0.07 -vn 1.00 -0.07 -0.01 -vn 1.00 -0.08 -0.01 -vn 0.99 -0.11 0.07 -vn 1.00 -0.07 0.04 -vn 1.00 -0.01 -0.00 -vn 0.98 -0.13 -0.12 -vn 1.00 0.03 -0.08 -vn 0.88 0.04 -0.48 -vn 0.96 0.13 -0.23 -vn -0.96 0.10 -0.27 -vn -0.99 0.04 -0.13 -vn -0.99 0.04 -0.12 -vn -0.91 0.02 -0.42 -vn -0.90 -0.01 -0.43 -vn -0.99 0.02 0.17 -vn -0.98 0.06 0.19 -vn -0.96 0.03 -0.29 -vn -0.91 0.15 -0.37 -vn -0.85 0.17 0.50 -vn -0.94 -0.03 0.33 -vn 0.71 0.05 0.71 -vn -0.02 0.12 0.99 -vn 0.02 0.12 0.99 -vn -0.70 0.12 0.70 -vn -0.71 -0.01 -0.71 -vn -0.02 -0.06 -1.00 -vn 0.02 -0.06 -1.00 -vn 0.71 -0.08 -0.70 -vn 0.01 1.00 -0.03 -vn 0.03 -1.00 -0.02 -vn 0.06 -1.00 0.04 -vn 0.08 -1.00 0.04 -# 1154 vertex normals - -vt 0.41 0.82 0.00 -vt 0.39 0.82 0.00 -vt 0.42 0.80 0.00 -vt 0.39 0.80 0.00 -vt 0.37 0.80 0.00 -vt 0.37 0.82 0.00 -vt 0.35 0.82 0.00 -vt 0.35 0.80 0.00 -vt 0.33 0.80 0.00 -vt 0.33 0.81 0.00 -vt 0.31 0.81 0.00 -vt 0.30 0.80 0.00 -vt 0.30 0.81 0.00 -vt 0.29 0.80 0.00 -vt 0.29 0.81 0.00 -vt 0.28 0.80 0.00 -vt 0.34 0.81 0.00 -vt 0.30 0.82 0.00 -vt 0.34 0.82 0.00 -vt 0.39 0.81 0.00 -vt 0.43 0.81 0.00 -vt 0.43 0.82 0.00 -vt 0.98 0.38 0.00 -vt 0.98 0.42 0.00 -vt 0.97 0.44 0.00 -vt 0.50 0.74 0.00 -vt 0.49 0.75 0.00 -vt 0.54 0.75 0.00 -vt 0.47 0.74 0.00 -vt 0.45 0.75 0.00 -vt 0.43 0.74 0.00 -vt 0.43 0.75 0.00 -vt 0.41 0.75 0.00 -vt 0.41 0.74 0.00 -vt 0.40 0.75 0.00 -vt 0.40 0.74 0.00 -vt 0.42 0.75 0.00 -vt 0.46 0.74 0.00 -vt 0.54 0.72 0.00 -vt 0.50 0.73 0.00 -vt 0.50 0.72 0.00 -vt 0.54 0.71 0.00 -vt 0.46 0.73 0.00 -vt 0.43 0.73 0.00 -vt 0.40 0.73 0.00 -vt 0.43 0.72 0.00 -vt 0.40 0.72 0.00 -vt 0.43 0.71 0.00 -vt 0.40 0.71 0.00 -vt 0.43 0.70 0.00 -vt 0.40 0.70 0.00 -vt 0.40 0.69 0.00 -vt 0.46 0.71 0.00 -vt 0.50 0.71 0.00 -vt 0.46 0.70 0.00 -vt 0.45 0.69 0.00 -vt 0.46 0.69 0.00 -vt 0.50 0.70 0.00 -vt 0.54 0.70 0.00 -vt 0.58 0.71 0.00 -vt 0.59 0.75 0.00 -vt 0.58 0.73 0.00 -vt 0.56 0.88 0.00 -vt 0.56 0.91 0.00 -vt 0.54 0.89 0.00 -vt 0.60 0.90 0.00 -vt 0.60 0.88 0.00 -vt 0.59 0.86 0.00 -vt 0.65 0.85 0.00 -vt 0.65 0.83 0.00 -vt 0.59 0.83 0.00 -vt 0.65 0.78 0.00 -vt 0.59 0.78 0.00 -vt 0.65 0.76 0.00 -vt 0.64 0.75 0.00 -vt 0.65 0.90 0.00 -vt 0.65 0.88 0.00 -vt 0.64 0.74 0.00 -vt 0.70 0.75 0.00 -vt 0.70 0.76 0.00 -vt 0.70 0.77 0.00 -vt 0.70 0.79 0.00 -vt 0.70 0.82 0.00 -vt 0.70 0.85 0.00 -vt 0.70 0.87 0.00 -vt 0.75 0.79 0.00 -vt 0.75 0.78 0.00 -vt 0.75 0.75 0.00 -vt 0.58 0.75 0.00 -vt 0.55 0.78 0.00 -vt 0.55 0.84 0.00 -vt 0.50 0.83 0.00 -vt 0.54 0.86 0.00 -vt 0.51 0.87 0.00 -vt 0.53 0.88 0.00 -vt 0.78 0.82 0.00 -vt 0.78 0.80 0.00 -vt 0.75 0.82 0.00 -vt 0.78 0.78 0.00 -vt 0.78 0.76 0.00 -vt 0.69 0.77 0.00 -vt 0.81 0.79 0.00 -vt 0.81 0.77 0.00 -vt 0.86 0.78 0.00 -vt 0.86 0.79 0.00 -vt 0.81 0.80 0.00 -vt 0.86 0.81 0.00 -vt 0.81 0.83 0.00 -vt 0.86 0.83 0.00 -vt 0.92 0.80 0.00 -vt 0.92 0.81 0.00 -vt 0.93 0.80 0.00 -vt 0.93 0.81 0.00 -vt 0.93 0.83 0.00 -vt 0.92 0.83 0.00 -vt 0.88 0.84 0.00 -vt 0.88 0.83 0.00 -vt 0.86 0.84 0.00 -vt 0.81 0.84 0.00 -vt 0.78 0.84 0.00 -vt 0.75 0.85 0.00 -vt 0.78 0.85 0.00 -vt 0.88 0.85 0.00 -vt 0.86 0.85 0.00 -vt 0.89 0.86 0.00 -vt 0.83 0.86 0.00 -vt 0.85 0.86 0.00 -vt 0.81 0.86 0.00 -vt 0.78 0.86 0.00 -vt 0.75 0.86 0.00 -vt 0.93 0.85 0.00 -vt 0.91 0.88 0.00 -vt 0.93 0.87 0.00 -vt 0.91 0.89 0.00 -vt 0.93 0.89 0.00 -vt 0.93 0.97 0.00 -vt 0.89 0.89 0.00 -vt 0.88 0.88 0.00 -vt 0.84 0.88 0.00 -vt 0.71 0.90 0.00 -vt 0.88 0.81 0.00 -vt 0.88 0.80 0.00 -vt 0.88 0.78 0.00 -vt 0.92 0.78 0.00 -vt 0.89 0.99 0.00 -vt 0.89 0.98 0.00 -vt 0.92 0.98 0.00 -vt 0.82 0.90 0.00 -vt 0.86 0.89 0.00 -vt 0.83 0.91 0.00 -vt 0.88 0.98 0.00 -vt 0.93 0.98 0.00 -vt 0.90 0.99 0.00 -vt 0.93 0.99 0.00 -vt 0.90 1.00 0.00 -vt 0.93 1.00 0.00 -vt 0.93 0.79 0.00 -vt 0.46 0.86 0.00 -vt 0.46 0.83 0.00 -vt 0.40 0.86 0.00 -vt 0.40 0.83 0.00 -vt 0.35 0.85 0.00 -vt 0.32 0.85 0.00 -vt 0.29 0.85 0.00 -vt 0.29 0.83 0.00 -vt 0.24 0.83 0.00 -vt 0.23 0.80 0.00 -vt 0.19 0.80 0.00 -vt 0.20 0.77 0.00 -vt 0.16 0.78 0.00 -vt 0.16 0.76 0.00 -vt 0.09 0.78 0.00 -vt 0.09 0.75 0.00 -vt 0.36 0.80 0.00 -vt 0.40 0.79 0.00 -vt 0.46 0.79 0.00 -vt 0.50 0.78 0.00 -vt 0.50 0.76 0.00 -vt 0.45 0.77 0.00 -vt 0.40 0.78 0.00 -vt 0.36 0.79 0.00 -vt 0.33 0.78 0.00 -vt 0.04 0.76 0.00 -vt 0.09 0.74 0.00 -vt 0.04 0.74 0.00 -vt 0.24 0.80 0.00 -vt 0.33 0.85 0.00 -vt 0.36 0.82 0.00 -vt 0.16 0.74 0.00 -vt 0.15 0.73 0.00 -vt 0.19 0.76 0.00 -vt 0.19 0.74 0.00 -vt 0.18 0.73 0.00 -vt 0.18 0.76 0.00 -vt 0.18 0.74 0.00 -vt 0.51 0.83 0.00 -vt 0.54 0.92 0.00 -vt 0.34 0.87 0.00 -vt 0.32 0.86 0.00 -vt 0.31 0.86 0.00 -vt 0.28 0.86 0.00 -vt 0.24 0.85 0.00 -vt 0.19 0.83 0.00 -vt 0.15 0.80 0.00 -vt 0.09 0.80 0.00 -vt 0.04 0.78 0.00 -vt 0.04 0.80 0.00 -vt 0.01 0.78 0.00 -vt 0.01 0.80 0.00 -vt 0.03 0.82 0.00 -vt 0.01 0.77 0.00 -vt 0.00 0.83 0.00 -vt 0.04 0.84 0.00 -vt 0.00 0.84 0.00 -vt 0.03 0.86 0.00 -vt 0.00 0.86 0.00 -vt 0.03 0.88 0.00 -vt 0.00 0.87 0.00 -vt 0.04 0.89 0.00 -vt 0.00 0.89 0.00 -vt 0.04 0.91 0.00 -vt 0.00 0.90 0.00 -vt 0.04 0.88 0.00 -vt 0.09 0.89 0.00 -vt 0.15 0.90 0.00 -vt 0.14 0.91 0.00 -vt 0.09 0.91 0.00 -vt 0.09 0.88 0.00 -vt 0.09 0.87 0.00 -vt 0.09 0.85 0.00 -vt 0.15 0.87 0.00 -vt 0.15 0.89 0.00 -vt 0.19 0.89 0.00 -vt 0.18 0.90 0.00 -vt 0.21 0.90 0.00 -vt 0.18 0.92 0.00 -vt 0.21 0.92 0.00 -vt 0.25 0.92 0.00 -vt 0.28 0.92 0.00 -vt 0.28 0.90 0.00 -vt 0.21 0.85 0.00 -vt 0.18 0.85 0.00 -vt 0.21 0.87 0.00 -vt 0.25 0.87 0.00 -vt 0.25 0.88 0.00 -vt 0.28 0.88 0.00 -vt 0.30 0.87 0.00 -vt 0.30 0.90 0.00 -vt 0.30 0.92 0.00 -vt 0.25 0.90 0.00 -vt 0.21 0.89 0.00 -vt 0.18 0.87 0.00 -vt 0.14 0.85 0.00 -vt 0.29 0.86 0.00 -vt 0.05 0.84 0.00 -vt 0.01 0.83 0.00 -vt 0.15 0.83 0.00 -vt 0.08 0.82 0.00 -vt 0.15 0.85 0.00 -vt 0.14 0.83 0.00 -vt 0.35 0.31 0.00 -vt 0.35 0.37 0.00 -vt 0.33 0.31 0.00 -vt 0.33 0.26 0.00 -vt 0.29 0.27 0.00 -vt 0.29 0.23 0.00 -vt 0.33 0.22 0.00 -vt 0.30 0.21 0.00 -vt 0.34 0.20 0.00 -vt 0.35 0.22 0.00 -vt 0.34 0.26 0.00 -vt 0.35 0.26 0.00 -vt 0.36 0.31 0.00 -vt 0.36 0.36 0.00 -vt 0.37 0.40 0.00 -vt 0.35 0.41 0.00 -vt 0.37 0.42 0.00 -vt 0.34 0.42 0.00 -vt 0.31 0.42 0.00 -vt 0.32 0.41 0.00 -vt 0.32 0.37 0.00 -vt 0.28 0.37 0.00 -vt 0.29 0.32 0.00 -vt 0.28 0.41 0.00 -vt 0.69 0.72 0.00 -vt 0.71 0.73 0.00 -vt 0.70 0.71 0.00 -vt 0.72 0.73 0.00 -vt 0.71 0.70 0.00 -vt 0.73 0.73 0.00 -vt 0.69 0.73 0.00 -vt 0.70 0.73 0.00 -vt 0.70 0.74 0.00 -vt 0.71 0.74 0.00 -vt 0.72 0.74 0.00 -vt 0.73 0.74 0.00 -vt 0.33 0.58 0.00 -vt 0.29 0.57 0.00 -vt 0.33 0.52 0.00 -vt 0.29 0.52 0.00 -vt 0.32 0.47 0.00 -vt 0.28 0.47 0.00 -vt 0.32 0.43 0.00 -vt 0.35 0.43 0.00 -vt 0.37 0.44 0.00 -vt 0.35 0.47 0.00 -vt 0.37 0.48 0.00 -vt 0.35 0.52 0.00 -vt 0.36 0.53 0.00 -vt 0.35 0.58 0.00 -vt 0.36 0.58 0.00 -vt 0.35 0.62 0.00 -vt 0.33 0.62 0.00 -vt 0.28 0.43 0.00 -vt 0.34 0.63 0.00 -vt 0.31 0.63 0.00 -vt 0.29 0.61 0.00 -vt 0.26 0.63 0.00 -vt 0.26 0.62 0.00 -vt 0.38 0.14 0.00 -vt 0.39 0.16 0.00 -vt 0.38 0.22 0.00 -vt 0.39 0.22 0.00 -vt 0.37 0.27 0.00 -vt 0.39 0.27 0.00 -vt 0.38 0.31 0.00 -vt 0.39 0.31 0.00 -vt 0.38 0.37 0.00 -vt 0.39 0.37 0.00 -vt 0.39 0.43 0.00 -vt 0.39 0.47 0.00 -vt 0.37 0.49 0.00 -vt 0.38 0.49 0.00 -vt 0.37 0.50 0.00 -vt 0.97 0.50 0.00 -vt 0.95 0.45 0.00 -vt 0.95 0.50 0.00 -vt 0.97 0.56 0.00 -vt 0.95 0.55 0.00 -vt 0.97 0.60 0.00 -vt 0.95 0.59 0.00 -vt 0.97 0.66 0.00 -vt 0.95 0.66 0.00 -vt 0.95 0.70 0.00 -vt 0.98 0.72 0.00 -vt 0.96 0.75 0.00 -vt 0.98 0.76 0.00 -vt 0.98 0.77 0.00 -vt 0.96 0.76 0.00 -vt 0.93 0.75 0.00 -vt 0.47 0.73 0.00 -vt 0.46 0.75 0.00 -vt 0.44 0.73 0.00 -vt 0.42 0.73 0.00 -vt 0.41 0.73 0.00 -vt 0.23 0.78 0.00 -vt 0.28 0.78 0.00 -vt 0.29 0.82 0.00 -vt 0.45 0.82 0.00 -vt 1.00 0.79 0.00 -vt 1.00 0.77 0.00 -vt 0.99 0.72 0.00 -vt 0.99 0.65 0.00 -vt 0.99 0.60 0.00 -vt 0.99 0.55 0.00 -vt 0.99 0.50 0.00 -vt 0.67 0.71 0.00 -vt 0.68 0.72 0.00 -vt 0.66 0.71 0.00 -vt 0.66 0.74 0.00 -vt 0.67 0.74 0.00 -vt 0.65 0.72 0.00 -vt 0.06 0.05 0.00 -vt 0.10 0.06 0.00 -vt 0.06 0.07 0.00 -vt 0.10 0.08 0.00 -vt 0.06 0.14 0.00 -vt 0.08 0.14 0.00 -vt 0.13 0.08 0.00 -vt 0.12 0.16 0.00 -vt 0.17 0.09 0.00 -vt 0.16 0.16 0.00 -vt 0.20 0.09 0.00 -vt 0.20 0.18 0.00 -vt 0.25 0.11 0.00 -vt 0.20 0.07 0.00 -vt 0.27 0.08 0.00 -vt 0.20 0.06 0.00 -vt 0.27 0.07 0.00 -vt 0.21 0.04 0.00 -vt 0.28 0.05 0.00 -vt 0.28 0.03 0.00 -vt 0.17 0.05 0.00 -vt 0.17 0.07 0.00 -vt 0.14 0.06 0.00 -vt 0.14 0.04 0.00 -vt 0.18 0.03 0.00 -vt 0.21 0.02 0.00 -vt 0.29 0.07 0.00 -vt 0.28 0.09 0.00 -vt 0.31 0.08 0.00 -vt 0.18 0.02 0.00 -vt 0.10 0.04 0.00 -vt 0.15 0.03 0.00 -vt 0.15 0.01 0.00 -vt 0.11 0.02 0.00 -vt 0.04 0.04 0.00 -vt 0.07 0.03 0.00 -vt 0.09 0.02 0.00 -vt 0.11 0.01 0.00 -vt 0.20 0.10 0.00 -vt 0.27 0.11 0.00 -vt 0.30 0.04 0.00 -vt 0.31 0.05 0.00 -vt 0.33 0.08 0.00 -vt 0.32 0.09 0.00 -vt 0.31 0.11 0.00 -vt 0.29 0.13 0.00 -vt 0.23 0.17 0.00 -vt 0.28 0.08 0.00 -vt 0.34 0.04 0.00 -vt 0.34 0.06 0.00 -vt 0.26 0.18 0.00 -vt 0.33 0.07 0.00 -vt 0.41 0.31 0.00 -vt 0.41 0.38 0.00 -vt 0.50 0.31 0.00 -vt 0.51 0.36 0.00 -vt 0.41 0.42 0.00 -vt 0.50 0.40 0.00 -vt 0.40 0.47 0.00 -vt 0.41 0.47 0.00 -vt 0.51 0.43 0.00 -vt 0.43 0.46 0.00 -vt 0.51 0.26 0.00 -vt 0.41 0.26 0.00 -vt 0.41 0.21 0.00 -vt 0.41 0.17 0.00 -vt 0.49 0.18 0.00 -vt 0.49 0.21 0.00 -vt 0.45 0.73 0.00 -vt 0.44 0.75 0.00 -vt 0.09 1.00 0.00 -vt 0.09 0.98 0.00 -vt 0.10 1.00 0.00 -vt 0.10 0.98 0.00 -vt 0.27 1.00 0.00 -vt 0.27 0.98 0.00 -vt 0.28 1.00 0.00 -vt 0.28 0.98 0.00 -vt 0.28 0.96 0.00 -vt 0.27 0.96 0.00 -vt 0.28 0.94 0.00 -vt 0.27 0.94 0.00 -vt 0.10 0.96 0.00 -vt 0.10 0.94 0.00 -vt 0.09 0.96 0.00 -vt 0.09 0.94 0.00 -vt 0.15 0.96 0.00 -vt 0.15 0.95 0.00 -vt 0.13 0.96 0.00 -vt 0.13 0.95 0.00 -vt 0.45 0.81 0.00 -vt 0.36 0.81 0.00 -vt 0.41 0.81 0.00 -vt 0.42 0.82 0.00 -vt 0.42 0.81 0.00 -vt 0.44 0.81 0.00 -vt 0.48 0.76 0.00 -vt 0.44 0.70 0.00 -vt 0.45 0.70 0.00 -vt 0.50 0.68 0.00 -vt 0.55 0.69 0.00 -vt 0.58 0.70 0.00 -vt 0.49 0.04 0.00 -vt 0.47 0.04 0.00 -vt 0.48 0.03 0.00 -vt 0.47 0.03 0.00 -vt 0.01 0.72 0.00 -vt 0.02 0.70 0.00 -vt 0.02 0.72 0.00 -vt 0.01 0.68 0.00 -vt 0.02 0.67 0.00 -vt 0.01 0.62 0.00 -vt 0.02 0.62 0.00 -vt 0.06 0.67 0.00 -vt 0.06 0.63 0.00 -vt 0.11 0.63 0.00 -vt 0.11 0.67 0.00 -vt 0.16 0.64 0.00 -vt 0.16 0.67 0.00 -vt 0.20 0.64 0.00 -vt 0.20 0.68 0.00 -vt 0.22 0.65 0.00 -vt 0.22 0.68 0.00 -vt 0.20 0.69 0.00 -vt 0.16 0.69 0.00 -vt 0.17 0.70 0.00 -vt 0.06 0.70 0.00 -vt 0.11 0.70 0.00 -vt 0.12 0.71 0.00 -vt 0.07 0.71 0.00 -vt 0.28 0.42 0.00 -vt 0.01 0.75 0.00 -vt 0.48 0.02 0.00 -vt 0.47 0.02 0.00 -vt 0.01 0.63 0.00 -vt 0.08 0.91 0.00 -vt 0.05 1.00 0.00 -vt 0.07 0.99 0.00 -vt 0.06 1.00 0.00 -vt 0.08 0.98 0.00 -vt 0.04 1.00 0.00 -vt 0.03 0.99 0.00 -vt 0.00 0.96 0.00 -vt 0.01 0.91 0.00 -vt 0.00 0.94 0.00 -vt 0.01 0.98 0.00 -vt 0.22 0.61 0.00 -vt 0.20 0.60 0.00 -vt 0.20 0.62 0.00 -vt 0.16 0.68 0.00 -vt 0.16 0.63 0.00 -vt 0.26 0.21 0.00 -vt 0.25 0.22 0.00 -vt 0.38 0.09 0.00 -vt 0.44 0.82 0.00 -vt 0.93 0.78 0.00 -vt 0.94 0.78 0.00 -vt 0.49 0.05 0.00 -vt 0.49 0.06 0.00 -vt 0.48 0.04 0.00 -vt 0.47 0.06 0.00 -vt 0.23 0.73 0.00 -vt 0.27 0.73 0.00 -vt 0.21 0.74 0.00 -vt 0.29 0.74 0.00 -vt 0.29 0.77 0.00 -vt 0.63 0.01 0.00 -vt 0.66 0.01 0.00 -vt 0.63 0.02 0.00 -vt 0.66 0.02 0.00 -vt 0.90 0.76 0.00 -vt 0.90 0.75 0.00 -vt 0.89 0.76 0.00 -vt 0.89 0.74 0.00 -vt 0.84 0.74 0.00 -vt 0.83 0.76 0.00 -vt 0.84 0.76 0.00 -vt 0.83 0.75 0.00 -vt 0.68 0.90 0.00 -vt 0.61 0.96 0.00 -vt 0.67 0.96 0.00 -vt 0.61 0.97 0.00 -vt 0.67 0.97 0.00 -vt 0.64 1.00 0.00 -vt 0.62 0.99 0.00 -vt 0.66 0.99 0.00 -vt 0.93 0.77 0.00 -vt 0.94 0.77 0.00 -vt 0.36 0.87 0.00 -vt 0.37 0.87 0.00 -vt 0.38 0.87 0.00 -vt 0.53 0.97 0.00 -vt 0.53 0.96 0.00 -vt 0.55 0.97 0.00 -vt 0.52 0.96 0.00 -vt 0.53 0.95 0.00 -vt 0.59 0.99 0.00 -vt 0.59 0.96 0.00 -vt 0.59 0.98 0.00 -vt 0.60 0.97 0.00 -vt 0.59 0.97 0.00 -vt 0.59 0.93 0.00 -vt 0.56 0.97 0.00 -vt 0.57 0.93 0.00 -vt 0.54 0.97 0.00 -vt 0.54 0.93 0.00 -vt 0.52 0.93 0.00 -vt 0.52 0.94 0.00 -vt 0.53 0.98 0.00 -vt 0.55 0.98 0.00 -vt 0.56 0.98 0.00 -vt 0.56 0.94 0.00 -vt 0.57 0.96 0.00 -vt 0.51 0.93 0.00 -vt 0.58 0.97 0.00 -vt 0.58 0.96 0.00 -vt 0.58 0.95 0.00 -vt 0.57 0.97 0.00 -vt 0.47 0.75 0.00 -vt 0.40 0.01 0.00 -vt 0.40 0.07 0.00 -vt 0.46 0.02 0.00 -vt 0.46 0.06 0.00 -vt 0.38 0.01 0.00 -vt 0.38 0.07 0.00 -vt 0.35 0.02 0.00 -vt 0.35 0.06 0.00 -vt 0.46 0.03 0.00 -vt 0.46 0.04 0.00 -vt 0.41 0.03 0.00 -vt 0.39 0.05 0.00 -vt 0.39 0.07 0.00 -vt 0.39 0.02 0.00 -vt 0.58 0.93 0.00 -vt 0.52 0.03 0.00 -vt 0.49 0.03 0.00 -vt 0.57 0.01 0.00 -vt 0.62 0.01 0.00 -vt 0.52 0.01 0.00 -vt 0.62 0.02 0.00 -vt 0.57 0.02 0.00 -vt 0.51 0.02 0.00 -vt 0.48 0.01 0.00 -vt 0.52 0.02 0.00 -vt 0.62 0.03 0.00 -vt 0.57 0.03 0.00 -vt 0.51 0.04 0.00 -vt 0.21 0.51 0.00 -vt 0.19 0.51 0.00 -vt 0.20 0.49 0.00 -vt 0.19 0.49 0.00 -vt 0.22 0.52 0.00 -vt 0.20 0.52 0.00 -vt 0.20 0.54 0.00 -vt 0.23 0.54 0.00 -vt 0.24 0.56 0.00 -vt 0.21 0.55 0.00 -vt 0.24 0.57 0.00 -vt 0.22 0.57 0.00 -vt 0.24 0.59 0.00 -vt 0.22 0.58 0.00 -vt 0.20 0.58 0.00 -vt 0.22 0.59 0.00 -vt 0.21 0.49 0.00 -vt 0.21 0.50 0.00 -vt 0.19 0.50 0.00 -vt 0.19 0.52 0.00 -vt 0.19 0.54 0.00 -vt 0.19 0.56 0.00 -vt 0.48 0.73 0.00 -# 642 texture coords - -g P_51_Mustang_Hull -f 609/373/545 610/374/545 611/373/545 -f 612/375/546 611/373/547 613/376/548 -f 614/374/548 613/376/548 611/373/547 -f 613/376/548 614/374/548 615/377/549 -f 616/378/550 615/377/549 614/374/548 -f 616/378/550 617/379/551 615/377/549 -f 618/380/552 615/377/549 617/379/551 -f 618/380/552 617/379/551 619/381/553 -f 620/382/554 619/381/553 617/379/551 -f 620/382/554 621/383/555 619/381/553 -f 622/384/556 619/381/553 621/383/555 -f 621/383/555 623/385/557 622/384/556 -f 624/386/558 622/384/556 623/385/557 -f 623/385/557 625/387/559 624/386/558 -f 626/388/560 624/386/558 625/387/559 -f 626/388/560 625/387/559 627/388/561 -f 628/387/562 627/388/561 625/387/559 -f 628/387/562 629/387/563 627/388/561 -f 630/388/564 627/388/561 629/387/563 -f 630/388/564 629/387/563 631/386/565 -f 632/385/566 631/386/565 629/387/563 -f 631/386/565 632/385/566 633/384/567 -f 634/383/568 633/384/567 632/385/566 -f 633/384/567 634/383/568 635/381/569 -f 636/382/570 635/381/569 634/383/568 -f 636/382/570 637/379/571 635/381/569 -f 638/380/572 635/381/569 637/379/571 -f 638/380/572 637/379/571 639/377/573 -f 640/378/574 639/377/573 637/379/571 -f 640/378/574 641/374/575 639/377/573 -f 642/376/575 639/377/573 641/374/575 -f 641/374/575 643/373/576 642/376/575 -f 644/375/577 642/376/575 643/373/576 -f 645/375/578 646/373/579 647/376/580 -f 648/374/581 647/376/580 646/373/579 -f 647/376/580 648/374/581 649/377/582 -f 650/378/583 649/377/582 648/374/581 -f 650/378/583 651/379/584 649/377/582 -f 652/380/585 649/377/582 651/379/584 -f 652/380/585 651/379/584 653/381/586 -f 654/382/587 653/381/586 651/379/584 -f 654/382/587 655/383/588 653/381/586 -f 656/384/589 653/381/586 655/383/588 -f 655/383/588 657/385/590 656/384/589 -f 658/386/591 656/384/589 657/385/590 -f 657/385/590 659/387/592 658/386/591 -f 660/388/593 658/386/591 659/387/592 -f 660/388/593 659/387/592 661/388/594 -f 662/387/595 661/388/594 659/387/592 -f 662/387/595 663/387/596 661/388/594 -f 664/388/597 661/388/594 663/387/596 -f 664/388/597 663/387/596 665/386/598 -f 666/385/599 665/386/598 663/387/596 -f 665/386/598 666/385/599 667/384/600 -f 668/383/601 667/384/600 666/385/599 -f 667/384/600 668/383/601 669/381/602 -f 670/382/603 669/381/602 668/383/601 -f 670/382/603 671/379/604 669/381/602 -f 672/380/605 669/381/602 671/379/604 -f 672/380/605 671/379/604 673/377/606 -f 674/378/607 673/377/606 671/379/604 -f 674/378/607 610/374/608 673/377/606 -f 675/376/608 673/377/606 610/374/608 -f 610/374/608 609/373/609 675/376/608 -f 676/375/610 675/376/608 609/373/609 -f 677/385/611 678/389/612 679/390/613 -f 680/391/612 679/390/613 678/389/612 -f 678/389/612 681/392/614 680/391/612 -f 682/374/614 680/391/612 681/392/614 -f 681/392/614 683/393/613 682/374/614 -f 684/394/613 682/374/614 683/393/613 -f 683/394/615 681/374/616 685/393/615 -f 686/392/617 685/393/615 681/374/616 -f 681/374/616 678/391/618 686/392/617 -f 687/389/619 686/392/617 678/391/618 -f 678/391/618 677/390/620 687/389/619 -f 688/385/621 687/389/619 677/390/620 -f 685/394/622 686/374/623 689/393/622 -f 690/392/623 689/393/622 686/374/623 -f 686/374/623 687/391/624 690/392/623 -f 691/389/624 690/392/623 687/391/624 -f 687/391/624 688/390/622 691/389/624 -f 692/385/622 691/389/624 688/390/622 -f 674/378/625 671/379/625 610/374/625 -f 668/383/626 621/383/626 670/382/626 -f 621/383/627 620/382/627 670/382/627 -f 670/382/628 620/382/628 671/379/628 -f 617/379/625 616/378/625 620/382/625 -f 620/382/629 616/378/629 671/379/629 -f 671/379/629 616/378/629 610/374/629 -f 610/374/630 616/378/630 611/373/630 -f 616/378/631 614/374/631 611/373/631 -f 655/383/632 654/382/632 634/383/632 -f 650/378/625 648/374/625 651/379/625 -f 646/373/633 643/373/633 648/374/633 -f 648/374/634 643/373/634 651/379/634 -f 641/374/635 640/378/635 643/373/635 -f 640/378/636 637/379/636 643/373/636 -f 643/373/637 637/379/637 651/379/637 -f 651/379/638 637/379/638 654/382/638 -f 654/382/639 637/379/639 634/383/639 -f 637/379/625 636/382/625 634/383/625 -f 629/387/640 628/387/640 632/385/640 -f 662/387/641 659/387/641 628/387/641 -f 628/387/642 659/387/642 632/385/642 -f 659/387/643 657/385/643 632/385/643 -f 632/385/644 657/385/644 634/383/644 -f 657/385/645 655/383/645 634/383/645 -f 625/387/646 623/385/646 628/387/646 -f 621/383/647 668/383/647 623/385/647 -f 668/383/648 666/385/648 623/385/648 -f 666/385/649 663/387/649 623/385/649 -f 623/385/650 663/387/650 628/387/650 -f 628/387/651 663/387/651 662/387/651 -f 630/388/652 631/386/652 627/388/652 -f 633/384/653 656/384/653 631/386/653 -f 656/384/654 658/386/654 631/386/654 -f 658/386/655 660/388/655 631/386/655 -f 631/386/656 660/388/656 627/388/656 -f 627/388/657 660/388/657 661/388/657 -f 661/388/658 664/388/658 627/388/658 -f 667/384/659 622/384/659 665/386/659 -f 622/384/660 624/386/660 665/386/660 -f 665/386/661 624/386/661 664/388/661 -f 664/388/662 624/386/662 627/388/662 -f 624/386/663 626/388/663 627/388/663 -f 667/384/664 669/381/664 622/384/664 -f 675/376/665 676/375/665 673/377/665 -f 612/375/666 613/376/666 676/375/666 -f 676/375/667 613/376/667 673/377/667 -f 673/377/668 613/376/668 672/380/668 -f 615/377/669 618/380/669 613/376/669 -f 613/376/666 618/380/666 672/380/666 -f 672/380/670 618/380/670 669/381/670 -f 669/381/671 618/380/671 622/384/671 -f 618/380/672 619/381/672 622/384/672 -f 647/376/673 649/377/673 645/375/673 -f 656/384/674 633/384/674 653/381/674 -f 653/381/675 633/384/675 652/380/675 -f 635/381/676 638/380/676 633/384/676 -f 633/384/677 638/380/677 652/380/677 -f 652/380/677 638/380/677 649/377/677 -f 639/377/669 642/376/669 638/380/669 -f 638/380/678 642/376/678 649/377/678 -f 649/377/678 642/376/678 645/375/678 -f 642/376/677 644/375/677 645/375/677 -f 689/394/679 690/374/680 684/393/679 -f 682/392/681 684/393/679 690/374/680 -f 690/374/680 691/391/682 682/392/681 -f 680/389/683 682/392/681 691/391/682 -f 691/391/682 692/390/684 680/389/683 -f 679/385/685 680/389/683 692/390/684 -f 693/395/686 694/396/686 695/397/686 -f 696/398/687 697/399/688 698/400/689 -f 696/398/687 699/401/690 697/399/688 -f 700/402/691 697/399/688 699/401/690 -f 699/401/690 701/403/692 700/402/691 -f 702/404/693 700/402/691 701/403/692 -f 702/404/693 701/403/692 703/405/694 -f 704/406/695 703/405/694 701/403/692 -f 703/405/694 704/406/695 705/407/696 -f 706/408/697 705/407/696 704/406/695 -f 706/408/697 707/406/698 705/407/696 -f 708/405/699 705/407/696 707/406/698 -f 707/406/698 709/403/700 708/405/699 -f 710/409/701 708/405/699 709/403/700 -f 710/409/701 709/403/700 711/402/702 -f 712/410/703 711/402/702 709/403/700 -f 711/402/702 712/410/703 693/399/704 -f 713/398/705 693/399/704 712/410/703 -f 693/399/704 713/398/705 714/400/706 -f 715/411/707 713/398/705 716/412/708 -f 713/398/705 712/410/703 716/412/708 -f 715/411/707 717/413/709 718/414/710 -f 715/411/707 716/412/708 717/413/709 -f 716/412/708 719/415/711 717/413/709 -f 719/415/711 716/412/708 712/410/703 -f 712/410/703 709/403/700 719/415/711 -f 720/416/712 719/415/711 709/403/700 -f 707/406/698 720/416/712 709/403/700 -f 707/406/698 721/417/713 720/416/712 -f 720/416/712 721/417/713 722/418/714 -f 723/419/715 722/418/714 721/417/713 -f 722/418/714 723/419/715 724/420/716 -f 725/421/717 724/420/716 723/419/715 -f 724/420/716 725/421/717 726/422/718 -f 727/423/719 726/422/718 725/421/717 -f 727/423/719 728/424/720 726/422/718 -f 720/416/712 722/418/714 719/415/711 -f 719/415/711 722/418/714 729/425/721 -f 729/425/721 717/413/709 719/415/711 -f 717/413/709 729/425/721 730/426/722 -f 730/426/722 718/414/710 717/413/709 -f 724/420/716 729/425/721 722/418/714 -f 729/425/721 724/420/716 731/427/723 -f 731/427/723 730/426/722 729/425/721 -f 726/422/718 731/427/723 724/420/716 -f 732/426/724 733/413/725 734/414/726 -f 733/413/725 732/426/724 735/425/727 -f 736/427/728 735/425/727 732/426/724 -f 735/425/727 736/427/728 737/420/729 -f 738/422/730 737/420/729 736/427/728 -f 737/420/729 738/422/730 739/421/731 -f 740/423/732 739/421/731 738/422/730 -f 740/423/732 738/422/730 728/424/720 -f 741/428/733 728/424/720 738/422/730 -f 741/428/733 726/422/718 728/424/720 -f 741/428/733 742/429/734 726/422/718 -f 731/427/723 726/422/718 742/429/734 -f 742/429/734 743/430/735 731/427/723 -f 730/426/722 731/427/723 743/430/735 -f 743/430/735 744/431/736 730/426/722 -f 718/414/710 730/426/722 744/431/736 -f 718/414/710 744/431/736 745/432/737 -f 718/414/710 745/432/737 715/411/707 -f 737/420/729 746/418/738 735/425/727 -f 735/425/727 747/415/739 733/413/725 -f 747/415/739 735/425/727 746/418/738 -f 746/418/738 748/416/740 747/415/739 -f 749/433/741 750/434/742 698/400/689 -f 751/411/743 698/400/689 750/434/742 -f 751/411/743 696/398/687 698/400/689 -f 696/398/687 751/411/743 733/413/725 -f 696/398/687 733/413/725 699/401/690 -f 747/415/739 699/401/690 733/413/725 -f 699/401/690 747/415/739 701/403/692 -f 748/416/740 701/403/692 747/415/739 -f 748/416/740 704/406/695 701/403/692 -f 752/417/744 704/406/695 748/416/740 -f 748/416/740 746/418/738 752/417/744 -f 753/419/745 752/417/744 746/418/738 -f 746/418/738 737/420/729 753/419/745 -f 739/421/731 753/419/745 737/420/729 -f 754/435/746 755/436/747 756/437/748 -f 755/436/747 754/435/746 757/438/749 -f 755/436/747 757/438/749 758/435/750 -f 759/439/751 758/435/750 757/438/749 -f 759/439/751 760/440/752 758/435/750 -f 760/440/752 759/439/751 761/441/753 -f 761/441/753 762/442/754 760/440/752 -f 763/443/755 760/440/752 762/442/754 -f 762/442/754 764/444/756 763/443/755 -f 765/445/757 763/443/755 764/444/756 -f 764/444/756 766/446/758 765/445/757 -f 749/433/741 765/445/757 766/446/758 -f 766/446/758 767/447/759 749/433/741 -f 750/434/742 749/433/741 767/447/759 -f 768/432/760 750/434/742 767/447/759 -f 750/434/742 768/432/760 751/411/743 -f 734/414/726 751/411/743 768/432/760 -f 751/411/743 734/414/726 733/413/725 -f 769/448/761 770/449/762 757/438/749 -f 759/439/751 757/438/749 770/449/762 -f 770/449/762 761/441/753 759/439/751 -f 713/398/705 715/411/707 714/400/706 -f 715/411/707 771/434/763 714/400/706 -f 771/434/763 715/411/707 745/432/737 -f 771/434/763 745/432/737 772/447/764 -f 772/447/764 745/432/737 773/450/765 -f 773/450/765 774/451/766 772/447/764 -f 773/450/765 767/447/759 774/451/766 -f 775/452/767 774/451/766 767/447/759 -f 767/447/759 766/446/758 775/452/767 -f 776/453/768 775/452/767 766/446/758 -f 766/446/758 764/444/756 776/453/768 -f 777/454/769 776/453/768 764/444/756 -f 764/444/756 762/442/754 777/454/769 -f 778/455/770 777/454/769 762/442/754 -f 762/442/754 761/441/753 778/455/770 -f 779/456/771 778/455/770 761/441/753 -f 761/441/753 770/449/762 779/456/771 -f 780/457/772 779/456/771 770/449/762 -f 781/458/773 782/459/774 777/454/769 -f 776/453/768 777/454/769 782/459/774 -f 776/453/768 782/459/774 775/452/767 -f 783/460/775 775/452/767 782/459/774 -f 775/452/767 783/460/775 774/451/766 -f 783/460/775 784/452/776 774/451/766 -f 784/452/776 772/447/764 774/451/766 -f 772/447/764 784/452/776 785/446/777 -f 785/446/777 786/461/778 772/447/764 -f 786/461/778 785/446/777 787/445/779 -f 787/445/779 788/462/780 786/461/778 -f 788/462/780 787/445/779 789/463/781 -f 789/463/781 790/464/782 788/462/780 -f 789/463/781 791/465/783 790/464/782 -f 792/466/784 790/464/782 791/465/783 -f 792/466/784 791/465/783 793/467/566 -f 793/467/566 791/465/783 756/437/748 -f 754/435/746 756/437/748 791/465/783 -f 794/468/785 795/469/786 796/470/787 -f 781/458/773 796/470/787 795/469/786 -f 795/469/786 797/471/788 781/458/773 -f 782/459/774 781/458/773 797/471/788 -f 797/471/788 798/472/789 782/459/774 -f 783/460/775 782/459/774 798/472/789 -f 783/460/775 798/472/789 799/459/790 -f 783/460/775 799/459/790 784/452/776 -f 800/473/791 784/452/776 799/459/790 -f 800/473/791 785/446/777 784/452/776 -f 785/446/777 800/473/791 801/444/792 -f 801/444/792 787/445/779 785/446/777 -f 787/445/779 801/444/792 802/443/793 -f 802/443/793 789/463/781 787/445/779 -f 802/443/793 803/440/794 789/463/781 -f 791/465/783 789/463/781 803/440/794 -f 791/465/783 803/440/794 754/435/746 -f 804/439/795 754/435/746 803/440/794 -f 802/443/793 805/442/796 803/440/794 -f 805/442/796 802/443/793 801/444/792 -f 801/444/792 806/454/797 805/442/796 -f 806/454/797 801/444/792 800/473/791 -f 800/473/791 799/459/790 806/454/797 -f 797/471/788 795/469/786 807/474/798 -f 807/474/798 808/475/799 797/471/788 -f 798/472/789 797/471/788 808/475/799 -f 798/472/789 808/475/799 809/471/800 -f 809/471/800 799/459/790 798/472/789 -f 799/459/790 809/471/800 810/458/801 -f 810/458/801 806/454/797 799/459/790 -f 806/454/797 810/458/801 811/455/802 -f 811/455/802 805/442/796 806/454/797 -f 805/442/796 811/455/802 812/441/803 -f 812/441/803 803/440/794 805/442/796 -f 803/440/794 812/441/803 804/439/795 -f 813/449/804 804/439/795 812/441/803 -f 812/441/803 814/456/805 813/449/804 -f 814/456/805 812/441/803 811/455/802 -f 811/455/802 815/470/806 814/456/805 -f 815/470/806 811/455/802 810/458/801 -f 810/458/801 816/469/807 815/470/806 -f 816/469/807 810/458/801 809/471/800 -f 809/471/800 817/474/808 816/469/807 -f 817/474/808 809/471/800 808/475/799 -f 808/475/799 818/476/809 817/474/808 -f 808/475/799 807/474/798 818/476/809 -f 819/477/810 818/476/809 807/474/798 -f 807/474/798 820/478/811 819/477/810 -f 821/479/812 819/477/810 820/478/811 -f 820/478/811 822/480/813 821/479/812 -f 823/481/814 821/479/812 822/480/813 -f 822/480/813 820/478/811 794/468/785 -f 795/469/786 794/468/785 820/478/811 -f 820/478/811 807/474/798 795/469/786 -f 824/482/815 825/483/816 826/484/817 -f 827/485/818 826/484/817 825/483/816 -f 827/485/818 825/483/816 828/486/819 -f 829/487/820 828/486/819 825/483/816 -f 829/487/820 830/488/821 828/486/819 -f 829/487/820 831/489/822 830/488/821 -f 830/488/821 831/489/822 832/490/823 -f 823/481/814 832/490/823 831/489/822 -f 832/490/823 823/481/814 833/491/824 -f 822/480/813 833/491/824 823/481/814 -f 833/491/824 822/480/813 834/492/825 -f 794/468/785 834/492/825 822/480/813 -f 834/492/825 794/468/785 835/493/826 -f 796/470/787 835/493/826 794/468/785 -f 835/493/826 796/470/787 779/456/771 -f 778/455/770 779/456/771 796/470/787 -f 796/470/787 781/458/773 778/455/770 -f 777/454/769 778/455/770 781/458/773 -f 836/494/827 833/491/824 834/492/825 -f 837/495/828 830/488/821 838/496/829 -f 837/495/828 838/496/829 839/497/830 -f 838/496/829 840/498/831 839/497/830 -f 840/498/831 841/499/832 839/497/830 -f 840/498/831 842/500/833 841/499/832 -f 842/500/833 843/501/834 841/499/832 -f 836/494/827 843/501/834 842/500/833 -f 836/494/827 844/502/835 843/501/834 -f 836/494/827 834/492/825 844/502/835 -f 835/493/826 844/502/835 834/492/825 -f 844/502/835 835/493/826 780/457/772 -f 779/456/771 780/457/772 835/493/826 -f 832/490/823 838/496/829 830/488/821 -f 837/495/828 839/497/830 830/488/821 -f 830/488/821 839/497/830 828/486/819 -f 839/497/830 845/503/836 828/486/819 -f 839/497/830 846/504/837 845/503/836 -f 847/505/836 845/503/836 846/504/837 -f 846/504/837 848/506/838 847/505/836 -f 849/507/839 847/505/836 848/506/838 -f 850/508/838 849/507/839 848/506/838 -f 848/506/838 851/509/840 850/508/838 -f 851/509/840 848/506/838 852/510/841 -f 852/510/841 853/511/842 851/509/840 -f 853/511/842 852/510/841 843/501/834 -f 841/499/832 843/501/834 852/510/841 -f 852/510/841 846/504/837 841/499/832 -f 839/497/830 841/499/832 846/504/837 -f 846/504/837 852/510/841 848/506/838 -f 770/449/762 769/448/761 780/457/772 -f 854/512/843 780/457/772 769/448/761 -f 854/512/843 769/448/761 855/457/844 -f 854/512/843 855/457/844 856/501/845 -f 857/502/846 856/501/845 855/457/844 -f 857/502/846 858/494/847 856/501/845 -f 858/494/847 857/502/846 859/492/848 -f 860/491/849 858/494/847 859/492/848 -f 860/491/849 859/492/848 861/480/850 -f 861/480/850 862/481/851 860/491/849 -f 862/481/851 861/480/850 863/479/852 -f 863/479/852 864/513/853 862/481/851 -f 864/513/853 863/479/852 865/514/854 -f 865/514/854 866/482/855 864/513/853 -f 865/514/854 867/515/669 866/482/855 -f 868/516/856 866/482/855 867/515/669 -f 868/516/856 867/515/669 824/482/815 -f 824/482/815 826/484/817 868/516/856 -f 869/489/857 862/481/851 864/513/853 -f 862/481/851 869/489/857 870/490/858 -f 870/490/858 860/491/849 862/481/851 -f 871/488/859 870/490/858 869/489/857 -f 870/490/858 871/488/859 872/496/860 -f 873/517/861 874/518/862 875/519/863 -f 876/519/864 875/519/863 874/518/862 -f 877/508/865 875/519/863 876/519/864 -f 876/519/864 878/509/866 877/508/865 -f 879/506/867 877/508/865 878/509/866 -f 878/509/866 880/510/868 879/506/867 -f 881/504/869 879/506/867 880/510/868 -f 880/510/868 882/499/870 881/504/869 -f 883/497/871 881/504/869 882/499/870 -f 882/499/870 884/498/872 883/497/871 -f 884/498/872 872/496/860 883/497/871 -f 872/496/860 885/495/873 883/497/871 -f 885/495/873 872/496/860 871/488/859 -f 885/495/873 871/488/859 886/487/874 -f 869/489/857 886/487/874 871/488/859 -f 886/487/874 869/489/857 887/483/875 -f 864/513/853 887/483/875 869/489/857 -f 887/483/875 864/513/853 866/482/855 -f 888/500/876 884/498/872 882/499/870 -f 858/494/847 888/500/876 856/501/845 -f 856/501/845 888/500/876 882/499/870 -f 882/499/870 880/510/868 856/501/845 -f 889/511/877 856/501/845 880/510/868 -f 880/510/868 878/509/866 889/511/877 -f 854/512/843 856/501/845 890/520/878 -f 889/511/877 890/520/878 856/501/845 -f 889/511/877 891/521/879 890/520/878 -f 891/521/879 889/511/877 878/509/866 -f 878/509/866 876/519/864 891/521/879 -f 874/518/862 891/521/879 876/519/864 -f 891/521/879 874/518/862 892/522/880 -f 893/523/881 892/522/880 874/518/862 -f 893/523/881 894/518/882 892/522/880 -f 894/518/882 893/523/881 895/517/883 -f 895/517/883 896/519/884 894/518/882 -f 897/519/885 894/518/882 896/519/884 -f 896/519/884 898/524/886 897/519/885 -f 892/522/880 890/520/878 891/521/879 -f 892/522/880 899/521/887 890/520/878 -f 899/521/887 892/522/880 894/518/882 -f 894/518/882 897/519/885 899/521/887 -f 780/457/772 854/512/843 844/502/835 -f 843/501/834 844/502/835 854/512/843 -f 854/512/843 890/520/878 843/501/834 -f 853/511/842 843/501/834 890/520/878 -f 853/511/842 890/520/878 899/521/887 -f 899/521/887 851/509/840 853/511/842 -f 851/509/840 899/521/887 897/519/885 -f 897/519/885 850/508/838 851/509/840 -f 850/508/838 897/519/885 898/524/886 -f 898/524/886 849/507/839 850/508/838 -f 898/524/888 849/507/839 898/524/886 -f 898/524/886 896/519/884 898/524/888 -f 898/524/888 896/519/884 900/525/889 -f 900/525/889 896/519/884 895/517/883 -f 895/517/883 901/517/890 900/525/889 -f 901/517/890 895/517/883 893/523/881 -f 901/517/890 893/523/881 873/517/861 -f 874/518/862 873/517/861 893/523/881 -f 902/526/891 898/524/888 900/525/889 -f 903/524/892 904/524/893 905/524/892 -f 905/524/892 904/524/893 877/508/865 -f 904/524/893 875/519/863 877/508/865 -f 904/524/893 906/526/894 875/519/863 -f 875/519/863 906/526/894 873/517/861 -f 906/526/894 907/525/895 873/517/861 -f 873/517/861 907/525/895 901/517/890 -f 908/517/896 901/517/890 907/525/895 -f 908/517/896 900/525/889 901/517/890 -f 900/525/889 908/517/896 909/527/897 -f 900/525/889 909/527/897 902/526/891 -f 910/528/898 902/526/891 909/527/897 -f 910/528/898 909/527/897 906/526/894 -f 907/525/895 906/526/894 909/527/897 -f 907/525/895 909/527/897 908/517/896 -f 909/527/897 908/517/896 911/527/899 -f 912/485/900 887/483/875 913/484/901 -f 887/483/875 912/485/900 886/487/874 -f 914/486/902 886/487/874 912/485/900 -f 914/486/902 915/503/903 886/487/874 -f 915/503/903 885/495/873 886/487/874 -f 883/497/871 885/495/873 915/503/903 -f 883/497/871 915/503/903 881/504/869 -f 916/505/904 881/504/869 915/503/903 -f 881/504/869 916/505/904 879/506/867 -f 917/507/797 879/506/867 916/505/904 -f 879/506/867 917/507/797 877/508/865 -f 905/524/892 877/508/865 917/507/797 -f 866/482/855 913/484/901 887/483/875 -f 866/482/855 868/516/856 913/484/901 -f 918/529/789 913/484/901 868/516/856 -f 918/529/789 868/516/856 826/484/817 -f 792/466/784 919/530/905 790/464/782 -f 920/531/906 790/464/782 919/530/905 -f 919/530/905 921/532/907 920/531/906 -f 922/533/908 920/531/906 921/532/907 -f 921/532/907 923/534/909 922/533/908 -f 924/379/910 922/533/908 923/534/909 -f 923/534/909 925/535/911 924/379/910 -f 926/382/912 924/379/910 925/535/911 -f 925/535/911 927/536/913 926/382/912 -f 928/537/907 926/382/912 927/536/913 -f 928/537/907 927/536/913 929/538/914 -f 929/538/914 930/539/915 928/537/907 -f 930/539/915 929/538/914 931/540/916 -f 931/540/916 932/541/917 930/539/915 -f 932/541/917 931/540/916 933/542/918 -f 933/542/918 934/543/919 932/541/917 -f 933/542/918 935/544/920 934/543/919 -f 936/545/921 934/543/919 935/544/920 -f 926/382/912 937/546/922 924/379/910 -f 937/546/922 938/547/923 924/379/910 -f 922/533/908 924/379/910 938/547/923 -f 938/547/923 939/548/924 922/533/908 -f 920/531/906 922/533/908 939/548/924 -f 939/548/924 940/549/925 920/531/906 -f 790/464/782 920/531/906 940/549/925 -f 940/549/925 788/462/780 790/464/782 -f 771/434/763 772/447/764 786/461/778 -f 786/461/778 714/400/706 771/434/763 -f 714/400/706 786/461/778 788/462/780 -f 788/462/780 940/549/925 714/400/706 -f 941/550/926 714/400/706 940/549/925 -f 940/549/925 939/548/924 941/550/926 -f 694/551/927 941/550/926 939/548/924 -f 939/548/924 938/547/923 694/551/927 -f 942/552/928 694/551/927 938/547/923 -f 938/547/923 937/546/922 942/552/928 -f 943/553/929 942/552/928 937/546/922 -f 937/546/922 926/382/912 943/553/929 -f 944/554/930 943/553/929 926/382/912 -f 926/382/912 945/388/931 944/554/930 -f 945/388/931 926/382/912 928/537/907 -f 945/388/931 928/537/907 930/539/915 -f 694/551/927 693/399/704 941/550/926 -f 941/550/926 693/399/704 714/400/706 -f 936/545/921 935/544/920 946/555/932 -f 936/545/921 946/555/932 947/556/933 -f 948/557/934 947/556/933 946/555/932 -f 948/557/934 949/555/935 947/556/933 -f 950/545/936 947/556/933 949/555/935 -f 950/545/936 949/555/935 951/544/937 -f 950/545/936 951/544/937 952/543/938 -f 953/542/939 952/543/938 951/544/937 -f 953/542/939 954/541/940 952/543/938 -f 954/541/940 953/542/939 955/540/941 -f 955/540/941 956/558/942 954/541/940 -f 956/558/942 955/540/941 957/538/943 -f 957/538/943 958/537/944 956/558/942 -f 958/537/944 957/538/943 959/536/945 -f 958/537/944 959/536/945 960/382/946 -f 961/559/947 960/382/946 959/536/945 -f 960/382/946 961/559/947 962/560/948 -f 963/534/949 962/560/948 961/559/947 -f 947/556/933 964/561/950 965/562/951 -f 947/556/933 950/545/936 964/561/950 -f 952/543/938 964/561/950 950/545/936 -f 966/563/952 952/543/938 954/541/940 -f 966/563/952 967/564/953 952/543/938 -f 964/561/950 952/543/938 967/564/953 -f 968/564/954 964/561/950 967/564/953 -f 968/564/954 969/565/955 964/561/950 -f 965/562/951 964/561/950 969/565/955 -f 965/562/951 969/565/955 970/561/956 -f 970/561/956 947/556/933 965/562/951 -f 947/556/933 970/561/956 936/545/921 -f 934/543/919 936/545/921 970/561/956 -f 970/561/956 971/564/957 934/543/919 -f 972/566/958 934/543/919 971/564/957 -f 972/566/958 932/541/917 934/543/919 -f 970/561/956 973/567/959 971/564/957 -f 973/567/959 970/561/956 969/565/955 -f 962/560/948 963/534/949 974/533/960 -f 975/532/961 974/533/960 963/534/949 -f 974/533/960 975/532/961 976/531/962 -f 977/530/963 976/531/962 975/532/961 -f 976/531/962 977/530/963 978/568/964 -f 979/466/965 978/568/964 977/530/963 -f 979/466/965 980/465/966 978/568/964 -f 980/465/966 979/466/965 981/467/967 -f 981/467/967 982/437/968 980/465/966 -f 758/435/750 980/465/966 982/437/968 -f 758/435/750 982/437/968 755/436/747 -f 983/569/747 755/436/747 982/437/968 -f 983/569/747 756/437/748 755/436/747 -f 984/463/969 978/568/964 980/465/966 -f 984/463/969 985/462/813 978/568/964 -f 986/549/970 978/568/964 985/462/813 -f 978/568/964 986/549/970 976/531/962 -f 987/548/971 976/531/962 986/549/970 -f 976/531/962 987/548/971 974/533/960 -f 988/547/972 974/533/960 987/548/971 -f 974/533/960 988/547/972 962/560/948 -f 989/546/973 962/560/948 988/547/972 -f 989/546/973 960/382/946 962/560/948 -f 980/465/966 758/435/750 760/440/752 -f 980/465/966 760/440/752 984/463/969 -f 763/443/755 984/463/969 760/440/752 -f 763/443/755 765/445/757 984/463/969 -f 985/462/813 984/463/969 765/445/757 -f 765/445/757 749/433/741 985/462/813 -f 698/400/689 985/462/813 749/433/741 -f 985/462/813 698/400/689 986/549/970 -f 990/550/974 986/549/970 698/400/689 -f 986/549/970 990/550/974 987/548/971 -f 991/551/975 987/548/971 990/550/974 -f 987/548/971 991/551/975 988/547/972 -f 992/552/976 988/547/972 991/551/975 -f 988/547/972 992/552/976 989/546/973 -f 993/553/977 989/546/973 992/552/976 -f 989/546/973 993/553/977 960/382/946 -f 994/554/978 960/382/946 993/553/977 -f 960/382/946 994/554/978 995/388/979 -f 697/399/688 990/550/974 698/400/689 -f 697/399/688 991/551/975 990/550/974 -f 996/570/980 997/571/981 923/534/909 -f 925/535/911 923/534/909 997/571/981 -f 925/535/911 997/571/981 998/572/982 -f 999/573/983 925/535/911 998/572/982 -f 927/536/913 925/535/911 999/573/983 -f 927/536/913 999/573/983 1000/574/984 -f 1000/574/984 929/538/914 927/536/913 -f 1000/574/984 1001/575/985 929/538/914 -f 1001/575/985 931/540/916 929/538/914 -f 931/540/916 1001/575/985 1002/576/986 -f 1002/576/986 933/542/918 931/540/916 -f 933/542/918 1002/576/986 935/544/920 -f 1003/577/987 935/544/920 1002/576/986 -f 935/544/920 1003/577/987 1004/578/988 -f 1005/579/989 1004/578/988 1003/577/987 -f 1004/578/988 1005/579/989 1006/580/990 -f 1007/581/991 1006/580/990 1005/579/989 -f 1008/582/992 1007/581/991 1005/579/989 -f 1006/580/990 1009/583/993 1004/578/988 -f 946/555/932 1004/578/988 1009/583/993 -f 1004/578/988 946/555/932 935/544/920 -f 1010/581/994 1007/581/991 1008/582/992 -f 1011/584/995 1010/581/994 1008/582/992 -f 1008/582/992 1012/585/996 1011/584/995 -f 1013/586/997 1011/584/995 1012/585/996 -f 1012/585/996 1014/587/998 1013/586/997 -f 1015/588/999 1013/586/997 1014/587/998 -f 1014/587/998 1016/589/1000 1015/588/999 -f 1017/590/1001 1015/588/999 1016/589/1000 -f 1016/589/1000 1018/591/1002 1017/590/1001 -f 1019/592/1003 1017/590/1001 1018/591/1002 -f 1018/591/1002 1020/593/1004 1019/592/1003 -f 1021/594/1005 1019/592/1003 1020/593/1004 -f 1021/594/1005 1020/593/1004 1022/592/1006 -f 1023/591/1007 1022/592/1006 1020/593/1004 -f 1022/592/1006 1023/591/1007 1024/590/1008 -f 1025/595/1009 1024/590/1008 1023/591/1007 -f 1024/590/1008 1025/595/1009 1026/588/1010 -f 1027/587/1011 1026/588/1010 1025/595/1009 -f 1023/591/1007 1028/596/1012 1025/595/1009 -f 1029/597/1013 1028/596/1012 1030/598/1014 -f 1031/599/1015 1030/598/1014 1028/596/1012 -f 1028/596/1012 1023/591/1007 1031/599/1015 -f 1020/593/1004 1031/599/1015 1023/591/1007 -f 1020/593/1004 1018/591/1002 1031/599/1015 -f 1032/596/1016 1031/599/1015 1018/591/1002 -f 1018/591/1002 1016/589/1000 1032/596/1016 -f 1033/600/1017 1032/596/1016 1016/589/1000 -f 1016/589/1000 1014/587/998 1033/600/1017 -f 1034/601/1018 1033/600/1017 1014/587/998 -f 1014/587/998 1012/585/996 1034/601/1018 -f 1035/602/1019 1034/601/1018 1012/585/996 -f 1012/585/996 1008/582/992 1035/602/1019 -f 1034/601/1018 1035/602/1019 1036/603/1020 -f 1033/600/1017 1034/601/1018 1037/604/1021 -f 1036/603/1020 1037/604/1021 1034/601/1018 -f 1037/604/1021 1036/603/1020 1038/605/1022 -f 1032/596/1016 1033/600/1017 1039/597/1023 -f 1037/604/1021 1039/597/1023 1033/600/1017 -f 1039/597/1023 1037/604/1021 1040/606/1024 -f 1038/605/1022 1040/606/1024 1037/604/1021 -f 1040/606/1024 1038/605/1022 1041/607/1025 -f 1031/599/1015 1032/596/1016 1030/598/1014 -f 1039/597/1023 1030/598/1014 1032/596/1016 -f 1030/598/1014 1039/597/1023 1042/608/1026 -f 1040/606/1024 1042/608/1026 1039/597/1023 -f 1042/608/1026 1040/606/1024 1043/609/1027 -f 1041/607/1025 1043/609/1027 1040/606/1024 -f 1043/609/1027 1041/607/1025 1044/610/1028 -f 1045/611/1026 1046/612/1029 1044/610/1028 -f 1047/613/1030 1048/614/1031 1049/615/1032 -f 1049/615/1032 1050/616/1033 1047/613/1030 -f 1050/616/1033 1049/615/1032 1051/617/1034 -f 1051/617/1034 1052/618/1035 1050/616/1033 -f 1052/618/1035 1051/617/1034 1046/612/1029 -f 1052/618/1035 1046/612/1029 1053/619/1036 -f 1054/620/1037 1053/619/1036 1046/612/1029 -f 1054/620/1037 1046/612/1029 1055/621/1027 -f 1045/611/1026 1055/621/1027 1046/612/1029 -f 1045/611/1026 1056/612/1038 1055/621/1027 -f 1045/611/1026 1044/610/1028 1056/612/1038 -f 1057/622/1039 1056/612/1038 1044/610/1028 -f 1057/622/1039 1044/610/1028 1041/607/1025 -f 1041/607/1025 1058/623/1040 1057/622/1039 -f 1058/623/1040 1041/607/1025 1038/605/1022 -f 1038/605/1022 1059/624/1041 1058/623/1040 -f 1059/624/1041 1038/605/1022 1036/603/1020 -f 1036/603/1020 1060/625/1042 1059/624/1041 -f 1047/613/1030 1061/574/1043 1062/575/885 -f 1061/574/1043 1047/613/1030 1050/616/1033 -f 1050/616/1033 1063/626/1044 1061/574/1043 -f 1063/626/1044 1050/616/1033 1052/618/1035 -f 1063/626/1044 1052/618/1035 1064/572/1045 -f 1053/619/1036 1064/572/1045 1052/618/1035 -f 953/542/939 951/544/937 1065/576/1046 -f 1065/576/1046 955/540/941 953/542/939 -f 955/540/941 1065/576/1046 1062/575/885 -f 1062/575/885 957/538/943 955/540/941 -f 1062/575/885 1061/574/1043 957/538/943 -f 1061/574/1043 959/536/945 957/538/943 -f 959/536/945 1061/574/1043 1063/626/1044 -f 959/536/945 1063/626/1044 961/559/947 -f 961/559/947 1063/626/1044 1064/572/1045 -f 1066/571/1047 961/559/947 1064/572/1045 -f 961/559/947 1066/571/1047 963/534/949 -f 1067/570/1048 963/534/949 1066/571/1047 -f 1026/588/1010 1027/587/1011 1068/586/1049 -f 1069/627/1050 1068/586/1049 1027/587/1011 -f 1068/586/1049 1069/627/1050 1070/628/1051 -f 1071/582/1052 1070/628/1051 1069/627/1050 -f 1070/628/1051 1071/582/1052 1072/581/1053 -f 1072/581/1053 1071/582/1052 1073/581/1054 -f 1073/581/1054 1071/582/1052 1074/579/1055 -f 1073/581/1054 1074/579/1055 1075/580/1056 -f 1076/578/1057 1075/580/1056 1074/579/1055 -f 1075/580/1056 1076/578/1057 1077/583/1058 -f 949/555/935 1077/583/1058 1076/578/1057 -f 1076/578/1057 951/544/937 949/555/935 -f 951/544/937 1076/578/1057 1078/577/1059 -f 1078/577/1059 1065/576/1046 951/544/937 -f 1065/576/1046 1078/577/1059 1079/629/1060 -f 1079/629/1060 1062/575/885 1065/576/1046 -f 1062/575/885 1079/629/1060 1048/614/1031 -f 1048/614/1031 1047/613/1030 1062/575/885 -f 1074/579/1055 1078/577/1059 1076/578/1057 -f 1078/577/1059 1074/579/1055 1080/630/1061 -f 1080/630/1061 1079/629/1060 1078/577/1059 -f 1079/629/1060 1080/630/1061 1081/631/1062 -f 1081/631/1062 1048/614/1031 1079/629/1060 -f 1081/631/1062 1082/624/1063 1048/614/1031 -f 1082/624/1063 1049/615/1032 1048/614/1031 -f 1049/615/1032 1082/624/1063 1083/623/1064 -f 1083/623/1064 1051/617/1034 1049/615/1032 -f 1051/617/1034 1083/623/1064 1084/622/1065 -f 1084/622/1065 1046/612/1029 1051/617/1034 -f 1084/622/1065 1044/610/1028 1046/612/1029 -f 1084/622/1065 1085/607/1066 1044/610/1028 -f 1043/609/1027 1044/610/1028 1085/607/1066 -f 1085/607/1066 1086/606/1067 1043/609/1027 -f 1042/608/1026 1043/609/1027 1086/606/1067 -f 1086/606/1067 1029/597/1013 1042/608/1026 -f 1030/598/1014 1042/608/1026 1029/597/1013 -f 1087/603/1068 1082/624/1063 1081/631/1062 -f 1088/605/1069 1083/623/1064 1082/624/1063 -f 1082/624/1063 1087/603/1068 1088/605/1069 -f 1089/604/1070 1088/605/1069 1087/603/1068 -f 1087/603/1068 1090/601/1071 1089/604/1070 -f 1090/601/1071 1087/603/1068 1091/602/1072 -f 1091/602/1072 1087/603/1068 1081/631/1062 -f 1091/602/1072 1081/631/1062 1080/630/1061 -f 1092/600/1073 1089/604/1070 1090/601/1071 -f 1085/607/1066 1084/622/1065 1083/623/1064 -f 1083/623/1064 1088/605/1069 1085/607/1066 -f 1086/606/1067 1085/607/1066 1088/605/1069 -f 1088/605/1069 1089/604/1070 1086/606/1067 -f 1029/597/1013 1086/606/1067 1089/604/1070 -f 1089/604/1070 1092/600/1073 1029/597/1013 -f 1028/596/1012 1029/597/1013 1092/600/1073 -f 1092/600/1073 1025/595/1009 1028/596/1012 -f 1025/595/1009 1092/600/1073 1027/587/1011 -f 1090/601/1071 1027/587/1011 1092/600/1073 -f 1027/587/1011 1090/601/1071 1069/627/1050 -f 1091/602/1072 1069/627/1050 1090/601/1071 -f 1069/627/1050 1091/602/1072 1071/582/1052 -f 1080/630/1061 1071/582/1052 1091/602/1072 -f 1071/582/1052 1080/630/1061 1074/579/1055 -f 1035/602/1019 1060/625/1042 1036/603/1020 -f 1035/602/1019 1093/630/1074 1060/625/1042 -f 1093/630/1074 1035/602/1019 1008/582/992 -f 1008/582/992 1005/579/989 1093/630/1074 -f 1003/577/987 1093/630/1074 1005/579/989 -f 1093/630/1074 1003/577/987 1094/632/985 -f 1002/576/986 1094/632/985 1003/577/987 -f 1094/632/985 1002/576/986 1001/575/985 -f 1001/575/985 1095/614/1075 1094/632/985 -f 1095/614/1075 1001/575/985 1096/613/1076 -f 1096/613/1076 1097/615/1077 1095/614/1075 -f 1097/615/1077 1096/613/1076 1098/616/1078 -f 1098/616/1078 1099/617/1079 1097/615/1077 -f 1099/617/1079 1098/616/1078 1100/618/1080 -f 1100/618/1080 1056/612/1038 1099/617/1079 -f 1100/618/1080 1101/619/1081 1056/612/1038 -f 1102/620/1082 1056/612/1038 1101/619/1081 -f 1102/620/1082 1055/621/1027 1056/612/1038 -f 1094/632/985 1060/625/1042 1093/630/1074 -f 1060/625/1042 1094/632/985 1095/614/1075 -f 1059/624/1041 1060/625/1042 1095/614/1075 -f 1059/624/1041 1095/614/1075 1097/615/1077 -f 1097/615/1077 1058/623/1040 1059/624/1041 -f 1058/623/1040 1097/615/1077 1099/617/1079 -f 1099/617/1079 1057/622/1039 1058/623/1040 -f 1057/622/1039 1099/617/1079 1056/612/1038 -f 1103/633/1083 1104/634/1084 1105/635/1085 -f 1105/635/1085 1106/636/1086 1103/633/1083 -f 1106/636/1086 1105/635/1085 1107/637/1087 -f 1107/637/1087 1108/638/1088 1106/636/1086 -f 1109/639/1089 1106/636/1086 1108/638/1088 -f 1108/638/1088 1110/640/1090 1109/639/1089 -f 1111/641/1013 1109/639/1089 1110/640/1090 -f 1111/641/1013 1112/642/1091 1109/639/1089 -f 1112/642/1091 1113/643/1092 1109/639/1089 -f 1112/642/1091 1114/644/1093 1113/643/1092 -f 1114/644/1093 1115/645/1094 1113/643/1092 -f 1103/633/1083 1113/643/1092 1115/645/1094 -f 1115/645/1094 1116/646/1095 1103/633/1083 -f 1104/634/1084 1103/633/1083 1116/646/1095 -f 1116/646/1095 1117/647/1096 1104/634/1084 -f 1118/648/1097 1104/634/1084 1117/647/1096 -f 1117/647/1096 836/649/1098 1118/648/1097 -f 842/650/1099 1118/648/1097 836/649/1098 -f 1113/643/1092 1103/633/1083 1106/636/1086 -f 1106/636/1086 1109/639/1089 1113/643/1092 -f 842/650/1099 840/651/1100 1118/648/1097 -f 1119/652/1101 1118/648/1097 840/651/1100 -f 1119/652/1101 1120/653/1102 1118/648/1097 -f 1120/653/1102 1119/652/1101 1121/654/749 -f 1121/654/749 1122/655/1103 1120/653/1102 -f 1105/635/1085 1120/653/1102 1122/655/1103 -f 1122/655/1103 1107/637/1087 1105/635/1085 -f 1123/656/1104 1121/654/749 1119/652/1101 -f 1124/657/1105 1125/658/1106 1126/659/1107 -f 1127/660/1108 1126/659/1107 1125/658/1106 -f 1126/659/1107 1127/660/1108 1128/661/1109 -f 1129/662/1110 1128/661/1109 1127/660/1108 -f 1128/661/1109 1129/662/1110 1130/659/1111 -f 1131/660/1112 1130/659/1111 1129/662/1110 -f 1130/659/1111 1131/660/1112 1132/657/1113 -f 1133/658/1114 1132/657/1113 1131/660/1112 -f 1132/657/1113 1133/658/1114 1134/663/1115 -f 1135/664/1116 1134/663/1115 1133/658/1114 -f 1134/663/1115 1135/664/1116 1124/657/1105 -f 1125/658/1106 1124/657/1105 1135/664/1116 -f 1135/664/1116 1136/665/1117 1125/658/1106 -f 1137/666/1118 1125/658/1106 1136/665/1117 -f 1125/658/1106 1137/666/1118 1127/660/1108 -f 1138/667/1119 1127/660/1108 1137/666/1118 -f 1127/660/1108 1138/667/1119 1129/662/1110 -f 1139/668/1120 1129/662/1110 1138/667/1119 -f 1129/662/1110 1139/668/1120 1131/660/1112 -f 1140/667/1121 1131/660/1112 1139/668/1120 -f 1131/660/1112 1140/667/1121 1133/658/1114 -f 1141/666/1122 1133/658/1114 1140/667/1121 -f 1133/658/1114 1141/666/1122 1135/664/1116 -f 1136/665/1117 1135/664/1116 1141/666/1122 -f 1142/669/1123 1143/670/1124 1144/671/1125 -f 1145/672/1126 1144/671/1125 1143/670/1124 -f 1144/671/1125 1145/672/1126 1146/673/1127 -f 1147/674/1128 1146/673/1127 1145/672/1126 -f 1146/673/1127 1147/674/1128 1148/675/898 -f 1148/675/898 1149/676/1129 1146/673/1127 -f 1148/675/898 884/651/1130 1149/676/1129 -f 888/650/1131 1149/676/1129 884/651/1130 -f 888/650/1131 858/649/1132 1149/676/1129 -f 1150/677/1133 1149/676/1129 858/649/1132 -f 1149/676/1129 1150/677/1133 1151/678/1134 -f 1152/679/1135 1151/678/1134 1150/677/1133 -f 1151/678/1134 1152/679/1135 1153/680/1136 -f 1154/681/1137 1153/680/1136 1152/679/1135 -f 1153/680/1136 1154/681/1137 1155/682/1138 -f 1156/683/1139 1155/682/1138 1154/681/1137 -f 1156/683/1139 1157/684/1140 1155/682/1138 -f 1157/684/1140 1158/685/1141 1155/682/1138 -f 1159/686/1142 1148/675/898 1147/674/1128 -f 1157/684/1140 1160/687/1023 1158/685/1141 -f 1160/687/1023 1161/688/1143 1158/685/1141 -f 1162/689/1144 1158/685/1141 1161/688/1143 -f 1161/688/1143 1163/690/1145 1162/689/1144 -f 1164/691/1146 1162/689/1144 1163/690/1145 -f 1151/678/1134 1146/673/1127 1149/676/1129 -f 1146/673/1127 1151/678/1134 1144/671/1125 -f 1153/680/1136 1144/671/1125 1151/678/1134 -f 1144/671/1125 1153/680/1136 1142/669/1123 -f 1155/682/1138 1142/669/1123 1153/680/1136 -f 1142/669/1123 1155/682/1138 1158/685/1141 -f 1158/685/1141 1162/689/1144 1142/669/1123 -f 1143/670/1124 1142/669/1123 1162/689/1144 -f 804/439/795 757/438/749 754/435/746 -f 804/439/795 813/449/804 757/438/749 -f 769/448/761 757/438/749 813/449/804 -f 813/449/804 855/457/844 769/448/761 -f 855/457/844 813/449/804 814/456/805 -f 814/456/805 1165/493/1147 855/457/844 -f 1165/493/1147 814/456/805 815/470/806 -f 815/470/806 1166/468/1148 1165/493/1147 -f 1166/468/1148 815/470/806 816/469/807 -f 816/469/807 1167/478/1149 1166/468/1148 -f 1167/478/1149 816/469/807 817/474/808 -f 817/474/808 1168/477/1150 1167/478/1149 -f 1168/477/1150 817/474/808 818/476/809 -f 818/476/809 867/515/669 1168/477/1150 -f 818/476/809 819/477/810 867/515/669 -f 1169/514/1151 867/515/669 819/477/810 -f 819/477/810 821/479/812 1169/514/1151 -f 1170/513/1152 1169/514/1151 821/479/812 -f 1169/514/1151 824/482/815 867/515/669 -f 1169/514/1151 1170/513/1152 824/482/815 -f 825/483/816 824/482/815 1170/513/1152 -f 821/479/812 823/481/814 1170/513/1152 -f 831/489/822 1170/513/1152 823/481/814 -f 1170/513/1152 831/489/822 825/483/816 -f 829/487/820 825/483/816 831/489/822 -f 1171/667/1153 1172/668/1154 1173/660/1155 -f 1173/660/1155 1174/658/1156 1171/667/1153 -f 1174/658/1156 1173/660/1155 1175/657/1157 -f 1175/657/1157 1176/663/1158 1174/658/1156 -f 1177/664/1159 1174/658/1156 1176/663/1158 -f 1176/663/1158 1178/657/1160 1177/664/1159 -f 1179/658/1161 1177/664/1159 1178/657/1160 -f 1178/657/1160 1180/659/1162 1179/658/1161 -f 1181/660/1163 1179/658/1161 1180/659/1162 -f 1180/659/1162 1182/661/1164 1181/660/1163 -f 1183/662/1165 1181/660/1163 1182/661/1164 -f 1182/661/1164 1184/659/1166 1183/662/1165 -f 1173/660/1155 1183/662/1165 1184/659/1166 -f 1184/659/1166 1175/657/1157 1173/660/1155 -f 1183/662/1165 1173/660/1155 1172/668/1154 -f 1172/668/1154 1185/667/1167 1183/662/1165 -f 1181/660/1163 1183/662/1165 1185/667/1167 -f 1185/667/1167 1186/666/1168 1181/660/1163 -f 1179/658/1161 1181/660/1163 1186/666/1168 -f 1186/666/1168 1187/665/1169 1179/658/1161 -f 1177/664/1159 1179/658/1161 1187/665/1169 -f 1187/665/1169 1188/666/1170 1177/664/1159 -f 1174/658/1156 1177/664/1159 1188/666/1170 -f 1188/666/1170 1171/667/1153 1174/658/1156 -f 991/692/1171 1189/693/1172 992/694/1173 -f 1190/695/1174 992/694/1173 1189/693/1172 -f 992/694/1173 1190/695/1174 993/696/1175 -f 1191/697/1176 993/696/1175 1190/695/1174 -f 993/696/1175 1191/697/1176 994/698/1177 -f 1192/699/1177 994/698/1177 1191/697/1176 -f 994/698/1177 1192/699/1177 1193/700/1178 -f 1194/701/1179 1193/700/1178 1192/699/1177 -f 1194/701/1179 1195/702/1180 1193/700/1178 -f 1196/677/1181 1193/700/1178 1195/702/1180 -f 1195/702/1180 1197/703/1182 1196/677/1181 -f 954/704/1183 1196/677/1181 1197/703/1182 -f 1197/703/1182 1198/705/1184 954/704/1183 -f 966/706/1185 954/704/1183 1198/705/1184 -f 695/397/1186 1199/707/1187 1200/708/1188 -f 1201/709/1187 1200/708/1188 1199/707/1187 -f 1199/707/1187 1202/710/1189 1201/709/1187 -f 1203/711/1190 1201/709/1187 1202/710/1189 -f 1202/710/1189 1204/712/1191 1203/711/1190 -f 1205/713/1192 1203/711/1190 1204/712/1191 -f 1204/712/1191 1206/714/1193 1205/713/1192 -f 1207/715/1194 1205/713/1192 1206/714/1193 -f 1207/715/1194 1206/714/1193 1208/716/1195 -f 1209/717/1196 1208/716/1195 1206/714/1193 -f 1208/716/1195 1209/717/1196 1210/718/1197 -f 1211/719/1198 1210/718/1197 1209/717/1196 -f 1211/719/1198 1212/720/1199 1210/718/1197 -f 1213/721/1200 1210/718/1197 1212/720/1199 -f 1213/721/1200 1214/722/1201 1210/718/1197 -f 1208/716/1195 1210/718/1197 1214/722/1201 -f 1215/723/1202 1216/724/1202 1217/415/1203 -f 1218/724/1204 1217/415/1203 1216/724/1202 -f 1217/415/1203 1218/724/1204 1219/725/1205 -f 1219/725/1205 1218/724/1204 1220/726/1206 -f 1218/724/1204 1221/409/1207 1220/726/1206 -f 1220/726/1206 1221/409/1207 1222/727/1208 -f 1223/405/1208 1222/727/1208 1221/409/1207 -f 960/382/946 995/388/979 958/537/944 -f 995/388/979 956/558/942 958/537/944 -f 956/558/942 995/388/979 1196/728/1209 -f 1196/728/1209 954/541/940 956/558/942 -f 1193/729/1210 995/388/979 994/554/978 -f 1193/729/1210 1196/728/1209 995/388/979 -f 1224/730/1211 1225/391/624 1226/730/1211 -f 1227/391/624 1226/730/1211 1225/391/624 -f 1225/391/624 1228/374/623 1227/391/624 -f 1229/374/623 1227/391/624 1228/374/623 -f 1228/374/623 1230/731/1211 1229/374/623 -f 1231/731/1211 1229/374/623 1230/731/1211 -f 1232/728/1212 930/539/915 932/541/917 -f 930/539/915 1232/728/1212 945/388/931 -f 1233/729/1213 945/388/931 1232/728/1212 -f 1233/729/1213 944/554/930 945/388/931 -f 972/732/1214 1212/720/1214 932/733/1215 -f 1211/719/1216 932/733/1215 1212/720/1214 -f 932/733/1215 1211/719/1216 1232/734/1217 -f 1209/717/1218 1232/734/1217 1211/719/1216 -f 1232/734/1217 1209/717/1218 1233/735/1219 -f 1206/714/1220 1233/735/1219 1209/717/1218 -f 1206/714/1220 1204/712/1221 1233/735/1219 -f 944/736/1222 1233/735/1219 1204/712/1221 -f 1204/712/1221 1202/710/1223 944/736/1222 -f 943/737/1224 944/736/1222 1202/710/1223 -f 1202/710/1223 1199/707/1225 943/737/1224 -f 942/738/1226 943/737/1224 1199/707/1225 -f 1199/707/1225 695/397/1227 942/738/1226 -f 694/396/1228 942/738/1226 695/397/1227 -f 1096/613/1076 1001/575/985 1000/574/984 -f 1000/574/984 1098/616/1078 1096/613/1076 -f 1098/616/1078 1000/574/984 999/573/983 -f 999/573/983 1100/618/1080 1098/616/1078 -f 999/573/983 998/572/982 1100/618/1080 -f 1101/619/1081 1100/618/1080 998/572/982 -f 1178/739/1229 1176/740/1229 1180/741/1229 -f 1176/740/1229 1184/742/1229 1180/741/1229 -f 1175/743/1229 1184/742/1229 1176/740/1229 -f 1180/741/1229 1184/742/1229 1182/744/1229 -f 1132/743/1230 1134/740/1230 1130/742/1230 -f 1134/740/1230 1126/741/1230 1130/742/1230 -f 1124/739/1230 1126/741/1230 1134/740/1230 -f 1130/742/1230 1126/741/1230 1128/744/1230 -f 857/502/846 855/457/844 1165/493/1147 -f 1165/493/1147 859/492/848 857/502/846 -f 859/492/848 1165/493/1147 1166/468/1148 -f 1166/468/1148 861/480/850 859/492/848 -f 861/480/850 1166/468/1148 1167/478/1149 -f 1167/478/1149 863/479/852 861/480/850 -f 863/479/852 1167/478/1149 1168/477/1150 -f 1168/477/1150 865/514/854 863/479/852 -f 865/514/854 1168/477/1150 867/515/669 -f 1234/745/1231 1235/746/1232 1236/747/1233 -f 1237/748/1234 1236/747/1233 1235/746/1232 -f 1236/747/1233 1237/748/1234 1238/749/1235 -f 1239/750/1236 1238/749/1235 1237/748/1234 -f 1237/748/1234 1240/751/1237 1239/750/1236 -f 1241/752/1238 1239/750/1236 1240/751/1237 -f 1240/751/1237 1242/753/670 1241/752/1238 -f 1243/754/1239 1241/752/1238 1242/753/670 -f 1242/753/670 1244/755/1240 1243/754/1239 -f 1245/756/1241 1243/754/1239 1244/755/1240 -f 1244/755/1240 1246/757/1242 1245/756/1241 -f 1244/755/1240 1247/758/1243 1246/757/1242 -f 1248/759/1244 1246/757/1242 1247/758/1243 -f 1247/758/1243 1249/760/1245 1248/759/1244 -f 1250/761/1246 1248/759/1244 1249/760/1245 -f 1249/760/1245 1251/762/1247 1250/761/1246 -f 1252/763/1248 1250/761/1246 1251/762/1247 -f 1252/763/1248 1251/762/1247 1253/764/1249 -f 1249/760/1245 1254/765/1250 1251/762/1247 -f 1247/758/1243 1255/766/1251 1249/760/1245 -f 1254/765/1250 1249/760/1245 1255/766/1251 -f 1255/766/1251 1256/767/1252 1254/765/1250 -f 1244/755/1240 1242/753/670 1247/758/1243 -f 1255/766/1251 1247/758/1243 1242/753/670 -f 1242/753/670 1240/751/1237 1255/766/1251 -f 1256/767/1252 1255/766/1251 1240/751/1237 -f 1240/751/1237 1237/748/1234 1256/767/1252 -f 1235/746/1232 1256/767/1252 1237/748/1234 -f 1256/767/1252 1235/746/1232 1257/768/1253 -f 1257/768/1253 1254/765/1250 1256/767/1252 -f 1254/765/1250 1257/768/1253 1258/769/672 -f 1258/769/672 1251/762/1247 1254/765/1250 -f 1251/762/1247 1258/769/672 1259/770/1254 -f 1259/770/1254 1253/764/1249 1251/762/1247 -f 1259/770/1254 1260/762/1255 1253/764/1249 -f 1261/763/1256 1253/764/1249 1260/762/1255 -f 1261/763/1256 1260/762/1255 1262/761/1257 -f 1262/761/1257 1263/771/1258 1261/763/1256 -f 1263/771/1258 1262/761/1257 1264/772/1259 -f 1264/772/1259 1265/773/1260 1263/771/1258 -f 1266/774/1261 1259/770/1254 1258/769/672 -f 1267/775/1262 1257/768/1253 1235/746/1232 -f 1257/768/1253 1267/775/1262 1268/776/1263 -f 1268/776/1263 1258/769/672 1257/768/1253 -f 1258/769/672 1268/776/1263 1266/774/1261 -f 1269/777/1254 1266/774/1261 1268/776/1263 -f 1269/777/1254 1270/776/1264 1266/774/1261 -f 1271/769/1265 1266/774/1261 1270/776/1264 -f 1266/774/1261 1271/769/1265 1259/770/1254 -f 1260/762/1255 1259/770/1254 1271/769/1265 -f 1272/778/1266 1268/776/1263 1267/775/1262 -f 700/779/1267 702/780/1268 1272/778/1266 -f 703/781/1269 1272/778/1266 702/780/1268 -f 703/781/1269 705/782/1270 1272/778/1266 -f 705/782/1270 708/781/1271 1273/778/1272 -f 708/781/1271 710/780/1273 1273/778/1272 -f 711/779/1274 1273/778/1272 710/780/1273 -f 1274/745/1275 1275/747/1276 1276/746/1277 -f 1277/748/1278 1276/746/1277 1275/747/1276 -f 1276/746/1277 1277/748/1278 1278/767/1279 -f 1279/751/1280 1278/767/1279 1277/748/1278 -f 1278/767/1279 1279/751/1280 1280/766/1281 -f 1281/753/1282 1280/766/1281 1279/751/1280 -f 1280/766/1281 1281/753/1282 1282/758/1283 -f 1283/783/1284 1282/758/1283 1281/753/1282 -f 1283/783/1284 1284/757/1285 1282/758/1283 -f 1285/759/1285 1282/758/1283 1284/757/1285 -f 1284/757/1285 1286/784/1286 1285/759/1285 -f 1264/772/1259 1285/759/1285 1286/784/1286 -f 1285/759/1285 1264/772/1259 1262/761/1257 -f 1262/761/1257 1287/760/1287 1285/759/1285 -f 1287/760/1287 1262/761/1257 1260/762/1255 -f 1287/760/1287 1260/762/1255 1288/765/1277 -f 1271/769/1265 1288/765/1277 1260/762/1255 -f 1288/765/1277 1271/769/1265 1289/768/1288 -f 1270/776/1264 1289/768/1288 1271/769/1265 -f 1289/768/1288 1270/776/1264 1290/775/1289 -f 1273/778/1272 1290/775/1289 1270/776/1264 -f 1290/775/1289 1276/746/1277 1289/768/1288 -f 1278/767/1279 1289/768/1288 1276/746/1277 -f 1289/768/1288 1278/767/1279 1288/765/1277 -f 1280/766/1281 1288/765/1277 1278/767/1279 -f 1288/765/1277 1280/766/1281 1287/760/1287 -f 1282/758/1283 1287/760/1287 1280/766/1281 -f 1282/758/1283 1285/759/1285 1287/760/1287 -f 1253/764/1249 1291/785/1290 1252/763/1248 -f 1253/764/1249 1261/763/1256 1291/785/1290 -f 1292/786/1291 1291/785/1290 1261/763/1256 -f 1292/786/1291 1261/763/1256 1263/771/1258 -f 1292/786/1291 1263/771/1258 971/787/1292 -f 1265/773/1260 971/787/1292 1263/771/1258 -f 971/787/1292 1265/773/1260 972/787/1293 -f 1212/788/1294 972/787/1293 1265/773/1260 -f 1264/772/1259 1212/788/1294 1265/773/1260 -f 1212/788/1294 1264/772/1259 1213/789/1295 -f 1264/772/1259 1286/784/1286 1213/789/1295 -f 1214/790/1296 1213/789/1295 1286/784/1286 -f 1293/791/1297 1245/756/1241 1246/757/1242 -f 1293/791/1297 1246/757/1242 1294/784/1298 -f 1246/757/1242 1248/759/1244 1294/784/1298 -f 1295/792/1299 1294/784/1298 1248/759/1244 -f 1248/759/1244 1250/761/1246 1295/792/1299 -f 1296/771/1300 1295/792/1299 1250/761/1246 -f 1250/761/1246 1252/763/1248 1296/771/1300 -f 1297/786/1301 1296/771/1300 1252/763/1248 -f 1297/786/1301 1252/763/1248 1291/785/1290 -f 1291/785/1290 969/793/1302 1297/786/1301 -f 1291/785/1290 1292/786/1291 969/793/1302 -f 973/794/1303 969/793/1302 1292/786/1291 -f 1292/786/1291 971/787/1292 973/794/1303 -f 1298/773/1304 1295/792/1299 1296/771/1300 -f 1299/795/1305 1293/791/1297 1300/790/1306 -f 1294/784/1298 1300/790/1306 1293/791/1297 -f 1300/790/1306 1294/784/1298 1301/789/1307 -f 1295/792/1299 1301/789/1307 1294/784/1298 -f 1295/792/1299 1198/788/1308 1301/789/1307 -f 1198/788/1308 1295/792/1299 1298/773/1304 -f 1198/788/1308 1298/773/1304 966/787/1309 -f 967/796/1310 966/787/1309 1298/773/1304 -f 1298/773/1304 1296/771/1300 967/796/1310 -f 1297/786/1301 967/796/1310 1296/771/1300 -f 967/796/1310 1297/786/1301 968/794/1311 -f 968/794/1311 1297/786/1301 969/793/1302 -f 1268/776/1312 1272/778/1313 1269/777/1314 -f 705/782/1315 1269/777/1314 1272/778/1313 -f 705/782/1315 1273/778/1316 1269/777/1314 -f 1270/776/1317 1269/777/1314 1273/778/1316 -f 1235/746/1318 1234/745/1319 1267/775/1320 -f 700/779/1321 1267/775/1320 1234/745/1319 -f 700/779/1321 1272/778/1313 1267/775/1320 -f 1273/778/1316 711/779/1322 1290/775/1323 -f 711/779/1322 1274/745/1324 1290/775/1323 -f 1276/746/1325 1290/775/1323 1274/745/1324 -f 1120/653/1102 1105/635/1085 1104/634/1084 -f 1104/634/1084 1118/648/1097 1120/653/1102 -f 1192/699/1326 1302/797/1327 1194/701/897 -f 1303/798/649 1194/701/897 1302/797/1327 -f 1302/797/1327 1304/799/1328 1303/798/649 -f 1305/800/1329 1303/798/649 1304/799/1328 -f 1303/798/649 1305/800/1329 1306/801/1330 -f 1307/802/1331 1306/801/1330 1305/800/1329 -f 1306/801/1330 1307/802/1331 1308/803/1332 -f 1308/803/1332 1307/802/1331 1301/804/1333 -f 1301/804/1333 1198/705/1334 1308/803/1332 -f 1197/703/1335 1308/803/1332 1198/705/1334 -f 1197/703/1335 1195/702/1336 1308/803/1332 -f 1306/801/1330 1308/803/1332 1195/702/1336 -f 1195/702/1336 1194/701/897 1306/801/1330 -f 1303/798/649 1306/801/1330 1194/701/897 -f 1299/805/1337 1300/806/1338 1307/802/1331 -f 1307/802/1331 1300/806/1338 1301/804/1333 -f 1304/799/1328 1302/797/1327 1309/807/1339 -f 1310/808/1340 1309/807/1339 1302/797/1327 -f 1302/797/1327 1192/699/1326 1310/808/1340 -f 1191/697/1341 1310/808/1340 1192/699/1326 -f 1310/808/1340 1191/697/1341 1311/809/1342 -f 1190/695/1343 1311/809/1342 1191/697/1341 -f 1311/809/1342 1190/695/1343 1312/810/1344 -f 1189/693/1345 1312/810/1344 1190/695/1343 -f 1312/810/1344 1313/811/1346 1311/809/1342 -f 1314/812/1346 1311/809/1342 1313/811/1346 -f 1311/809/1342 1314/812/1346 1310/808/1340 -f 1309/807/1339 1310/808/1340 1314/812/1346 -f 1315/813/1347 1316/402/1347 1215/725/1347 -f 1216/814/1347 1215/725/1347 1316/402/1347 -f 1317/723/1348 1318/724/1348 1319/415/1349 -f 1320/724/1350 1319/415/1349 1318/724/1348 -f 1319/415/1349 1320/724/1350 1321/725/1351 -f 1321/725/1351 1320/724/1350 1322/726/1352 -f 1320/724/1350 1323/409/1353 1322/726/1352 -f 1322/726/1352 1323/409/1353 1315/727/1354 -f 1316/405/1354 1315/727/1354 1323/409/1353 -f 1222/404/1355 1223/416/1355 1317/814/1355 -f 1318/725/1355 1317/814/1355 1223/416/1355 -f 1324/815/1356 1325/816/1356 1326/817/1357 -f 1327/818/1358 1326/817/1357 1325/816/1356 -f 1326/817/1357 1327/818/1358 1328/819/1359 -f 1329/820/1360 1328/819/1359 1327/818/1358 -f 1328/819/1359 1329/820/1360 1330/821/1361 -f 1331/822/1361 1330/821/1361 1329/820/1360 -f 1332/823/1362 1333/824/1363 1334/825/1362 -f 1335/826/1364 1334/825/1362 1333/824/1363 -f 1333/824/1363 1336/827/1365 1335/826/1364 -f 1337/828/1366 1335/826/1364 1336/827/1365 -f 1336/827/1365 1338/829/1367 1337/828/1366 -f 1339/830/1367 1337/828/1366 1338/829/1367 -f 1339/831/1368 1338/832/1368 1324/833/1368 -f 1325/834/1368 1324/833/1368 1338/832/1368 -f 1338/829/1369 1336/827/1369 1325/816/1369 -f 1327/818/1369 1325/816/1369 1336/827/1369 -f 1336/827/1369 1333/824/1369 1327/818/1369 -f 1329/820/1369 1327/818/1369 1333/824/1369 -f 1333/824/1369 1332/823/1369 1329/820/1369 -f 1331/822/1369 1329/820/1369 1332/823/1369 -f 1332/832/1370 1334/831/1370 1331/834/1370 -f 1330/833/1370 1331/834/1370 1334/831/1370 -f 1340/668/1154 1341/667/1167 1342/662/1165 -f 1342/662/1165 1343/660/1155 1340/668/1154 -f 1343/660/1155 1342/662/1165 1344/659/1166 -f 1344/659/1166 1345/657/1157 1343/660/1155 -f 1346/658/1156 1343/660/1155 1345/657/1157 -f 1345/657/1157 1347/663/1158 1346/658/1156 -f 1348/664/1159 1346/658/1156 1347/663/1158 -f 1347/663/1158 1349/657/1160 1348/664/1159 -f 1350/658/1161 1348/664/1159 1349/657/1160 -f 1349/657/1160 1351/659/1162 1350/658/1161 -f 1352/660/1163 1350/658/1161 1351/659/1162 -f 1351/659/1162 1353/661/1164 1352/660/1163 -f 1342/662/1165 1352/660/1163 1353/661/1164 -f 1353/661/1164 1344/659/1166 1342/662/1165 -f 1352/660/1163 1342/662/1165 1341/667/1167 -f 1341/667/1167 1354/666/1168 1352/660/1163 -f 1350/658/1161 1352/660/1163 1354/666/1168 -f 1354/666/1168 1355/665/1169 1350/658/1161 -f 1348/664/1159 1350/658/1161 1355/665/1169 -f 1355/665/1169 1356/666/1170 1348/664/1159 -f 1346/658/1156 1348/664/1159 1356/666/1170 -f 1356/666/1170 1357/667/1153 1346/658/1156 -f 1343/660/1155 1346/658/1156 1357/667/1153 -f 1357/667/1153 1340/668/1154 1343/660/1155 -f 1349/739/1229 1347/740/1229 1351/741/1229 -f 1347/740/1229 1344/742/1229 1351/741/1229 -f 1345/743/1229 1344/742/1229 1347/740/1229 -f 1351/741/1229 1344/742/1229 1353/744/1229 -f 1358/731/1119 1359/374/1371 1360/835/1372 -f 1361/392/1371 1360/835/1372 1359/374/1371 -f 1360/731/1373 1361/374/1374 1362/835/838 -f 1363/392/1375 1362/835/838 1361/374/1374 -f 1362/731/1376 1363/374/1377 1364/835/1376 -f 1365/392/1378 1364/835/1376 1363/374/1377 -f 1364/731/1379 1365/374/1380 1358/835/1379 -f 1359/392/1381 1358/835/1379 1365/374/1380 -f 1366/392/1382 1367/374/1382 1368/835/1383 -f 1369/731/1119 1368/835/1383 1367/374/1382 -f 1370/392/1384 1366/374/1384 1371/835/867 -f 1368/731/867 1371/835/867 1366/374/1384 -f 1372/392/1385 1370/374/1385 1373/835/1386 -f 1371/731/1376 1373/835/1386 1370/374/1385 -f 1367/392/1387 1372/374/1387 1369/835/1388 -f 1373/731/1389 1369/835/1388 1372/374/1387 -f 904/836/1390 917/837/1390 906/836/1390 -f 917/837/1390 898/836/1390 906/836/1390 -f 898/836/1390 902/836/1390 906/836/1390 -f 906/836/1390 902/836/1390 910/836/1390 -f 918/835/1390 826/731/1390 913/835/1390 -f 913/835/1390 826/731/1390 914/393/1390 -f 914/393/1390 826/731/1390 845/838/1390 -f 916/837/1390 914/393/1390 845/838/1390 -f 847/837/1390 916/837/1390 845/838/1390 -f 916/837/1390 847/837/1390 917/837/1390 -f 847/837/1390 898/836/1390 917/837/1390 -f 849/837/1390 898/836/1390 847/837/1390 -f 915/839/1390 914/393/1390 916/837/1390 -f 912/840/1390 913/835/1390 914/393/1390 -f 1374/550/1391 1375/841/1391 1376/550/1391 -f 1377/841/1391 1376/550/1391 1375/841/1391 -f 1376/415/1392 1377/724/1392 1378/416/1392 -f 1379/404/1392 1378/416/1392 1377/724/1392 -f 1378/416/1393 1379/404/1393 1380/727/1393 -f 1381/405/1393 1380/727/1393 1379/404/1393 -f 1382/415/1394 1383/724/1394 1384/725/1394 -f 1385/814/1394 1384/725/1394 1383/724/1394 -f 1384/725/1395 1385/814/1395 1374/727/1395 -f 1375/405/1395 1374/727/1395 1385/814/1395 -f 1377/842/1396 1375/842/1396 1379/726/1396 -f 1385/727/1396 1379/726/1396 1375/842/1396 -f 1385/727/1396 1383/405/1396 1379/726/1396 -f 1381/404/1396 1379/726/1396 1383/405/1396 -f 1380/404/1397 1382/405/1397 1378/726/1397 -f 1384/727/1397 1378/726/1397 1382/405/1397 -f 1384/727/1397 1374/842/1397 1378/726/1397 -f 1376/843/1397 1378/726/1397 1374/842/1397 -f 734/414/726 1386/431/1398 732/426/724 -f 1387/430/1399 732/426/724 1386/431/1398 -f 732/426/724 1387/430/1399 736/427/728 -f 1388/429/1400 736/427/728 1387/430/1399 -f 736/427/728 1388/429/1400 738/422/730 -f 741/428/733 738/422/730 1388/429/1400 -f 741/428/733 1388/429/1400 1389/844/1401 -f 741/428/733 1389/844/1401 742/429/734 -f 743/430/735 742/429/734 1389/844/1401 -f 1389/844/1401 1390/845/1402 743/430/735 -f 744/431/736 743/430/735 1390/845/1402 -f 744/431/736 1390/845/1402 745/432/737 -f 1391/846/1403 745/432/737 1390/845/1402 -f 1391/846/1403 773/450/765 745/432/737 -f 1391/846/1403 768/432/760 773/450/765 -f 767/447/759 773/450/765 768/432/760 -f 1387/430/1399 1389/844/1401 1388/429/1400 -f 1389/844/1401 1387/430/1399 1390/845/1402 -f 1386/431/1398 1390/845/1402 1387/430/1399 -f 1386/431/1398 768/432/760 1390/845/1402 -f 1386/431/1398 734/414/726 768/432/760 -f 1391/846/1403 1390/845/1402 768/432/760 -f 706/408/1404 721/417/1404 707/406/1404 -f 752/417/1404 706/408/1404 704/406/1404 -f 693/847/1405 695/848/1405 711/849/1405 -f 1274/850/1406 711/849/1406 695/848/1406 -f 858/851/1407 1392/852/1408 1150/853/1409 -f 858/851/1407 860/854/1410 1392/852/1408 -f 1393/855/1411 1392/852/1408 860/854/1410 -f 860/854/1410 870/856/1412 1393/855/1411 -f 1394/857/1413 1393/855/1411 870/856/1412 -f 1393/855/1411 1394/857/1413 1395/858/1205 -f 1396/859/1414 1395/858/1205 1394/857/1413 -f 1396/859/1414 1397/860/1415 1395/858/1205 -f 1398/861/1416 1395/858/1205 1397/860/1415 -f 1397/860/1415 1399/862/1417 1398/861/1416 -f 1400/863/1416 1398/861/1416 1399/862/1417 -f 1399/862/1417 1401/864/658 1400/863/1416 -f 1402/865/1418 1400/863/1416 1401/864/658 -f 1401/864/658 1161/866/1419 1402/865/1418 -f 1160/867/1420 1402/865/1418 1161/866/1419 -f 1402/865/1418 1160/867/1420 1157/868/1421 -f 1157/868/1421 1403/869/1422 1402/865/1418 -f 1403/869/1422 1157/868/1421 1156/870/1423 -f 1395/858/1205 1398/861/1416 1404/871/1424 -f 1405/872/1425 1404/871/1424 1398/861/1416 -f 1398/861/1416 1400/863/1416 1405/872/1425 -f 1403/869/1422 1405/872/1425 1400/863/1416 -f 1400/863/1416 1402/865/1418 1403/869/1422 -f 1156/870/1423 1154/873/1426 1403/869/1422 -f 1405/872/1425 1403/869/1422 1154/873/1426 -f 1154/873/1426 1152/874/1427 1405/872/1425 -f 1404/871/1424 1405/872/1425 1152/874/1427 -f 1152/874/1427 1150/853/1409 1404/871/1424 -f 1392/852/1408 1404/871/1424 1150/853/1409 -f 1404/871/1424 1392/852/1408 1395/858/1205 -f 1393/855/1411 1395/858/1205 1392/852/1408 -f 884/651/1428 1148/675/1428 872/875/1428 -f 1159/686/1428 872/875/1428 1148/675/1428 -f 949/555/1429 948/557/1430 1077/583/1431 -f 1406/876/1432 1077/583/1431 948/557/1430 -f 1406/876/1432 948/557/1430 1009/583/1433 -f 946/555/1434 1009/583/1433 948/557/1430 -f 1200/877/1435 1275/877/1435 695/878/1435 -f 1274/878/1436 695/878/1436 1275/877/1436 -f 870/856/1437 872/879/1437 1394/857/1437 -f 1159/857/1438 1394/857/1438 872/879/1438 -f 1011/830/1439 1013/829/1439 1010/880/1439 -f 1013/829/1439 1021/881/1439 1010/880/1439 -f 1017/882/1439 1021/881/1439 1013/829/1439 -f 1019/883/1439 1021/881/1439 1017/882/1439 -f 1015/884/1440 1017/882/1440 1013/829/1440 -f 1022/885/1441 1024/886/1441 1021/881/1441 -f 1024/886/1441 1068/887/1441 1021/881/1441 -f 1068/887/1441 1072/888/1441 1021/881/1441 -f 1070/889/1441 1072/888/1441 1068/887/1441 -f 1026/890/1441 1068/887/1441 1024/886/1441 -f 1021/881/1442 1072/888/1442 1010/880/1442 -f 1407/891/1443 1408/892/1444 1409/893/1445 -f 1407/891/1443 1409/893/1445 1110/866/1446 -f 1410/864/1447 1110/866/1446 1409/893/1445 -f 1410/864/1447 1411/865/1448 1110/866/1446 -f 1411/865/1448 1410/864/1447 1412/894/1449 -f 1412/894/1449 1413/869/1450 1411/865/1448 -f 1413/869/1450 1412/894/1449 1414/872/1451 -f 1414/872/1451 1115/873/1452 1413/869/1450 -f 1115/873/1452 1414/872/1451 1116/874/1453 -f 1415/871/1454 1116/874/1453 1414/872/1451 -f 1116/874/1453 1415/871/1454 1117/853/1455 -f 1416/852/1456 1117/853/1455 1415/871/1454 -f 1416/852/1456 836/851/1457 1117/853/1455 -f 836/851/1457 1416/852/1456 833/854/1458 -f 1417/855/1459 833/854/1458 1416/852/1456 -f 833/854/1458 1417/855/1459 832/856/1460 -f 1418/857/1461 832/856/1460 1417/855/1459 -f 1417/855/1459 1419/858/733 1418/857/1461 -f 1420/861/1462 1414/872/1451 1412/894/1449 -f 1414/872/1451 1420/861/1462 1415/871/1454 -f 1419/858/733 1415/871/1454 1420/861/1462 -f 1415/871/1454 1419/858/733 1416/852/1456 -f 1417/855/1459 1416/852/1456 1419/858/733 -f 1421/859/1302 1418/857/1461 1419/858/733 -f 1421/859/1302 1419/858/733 1422/860/1463 -f 1420/861/1462 1422/860/1463 1419/858/733 -f 1422/860/1463 1420/861/1462 1423/895/1464 -f 1412/894/1449 1423/895/1464 1420/861/1462 -f 1423/895/1464 1412/894/1449 1410/864/1447 -f 1114/870/1465 1413/869/1450 1115/873/1452 -f 1112/868/1466 1413/869/1450 1114/870/1465 -f 1112/868/1466 1411/865/1448 1413/869/1450 -f 1111/867/1467 1411/865/1448 1112/868/1466 -f 1111/867/1467 1110/866/1446 1411/865/1448 -f 1110/640/1090 1108/638/1088 1407/896/1468 -f 1408/897/1469 1407/896/1468 1108/638/1088 -f 991/692/1470 697/898/1470 1189/693/1470 -f 845/838/1390 826/731/1390 828/394/1390 -f 826/731/1390 827/899/1390 828/394/1390 -f 1007/900/766 1010/900/766 1073/901/766 -f 1072/901/766 1073/901/766 1010/900/766 -f 1234/902/1471 1189/903/1471 700/904/1471 -f 697/905/1472 700/904/1472 1189/903/1472 -f 1123/656/1473 1119/652/1473 838/875/1473 -f 840/651/1473 838/875/1473 1119/652/1473 -f 1424/906/1474 1425/907/1474 1426/908/1474 -f 1426/908/1475 1425/907/1475 1427/541/1475 -f 1425/907/1474 1428/909/1474 1427/541/1474 -f 1428/909/1475 1429/910/1475 1427/541/1475 -f 1313/911/1476 1312/912/1476 1238/913/1476 -f 1236/914/1476 1238/913/1476 1312/912/1476 -f 1234/914/1477 1236/914/1477 1189/912/1477 -f 1312/912/1478 1189/912/1478 1236/914/1478 -f 838/879/1479 832/856/1479 1123/857/1479 -f 1418/857/1480 1123/857/1480 832/856/1480 -f 1216/915/1442 1316/916/1442 1218/917/1442 -f 1323/918/1474 1320/919/1474 1316/916/1474 -f 1316/916/1475 1320/919/1475 1218/917/1475 -f 1223/920/1442 1221/921/1442 1318/922/1442 -f 1318/922/1439 1221/921/1439 1320/919/1439 -f 1320/919/1475 1221/921/1475 1218/917/1475 -f 1430/814/1481 1431/405/1481 1432/725/1481 -f 1433/406/1481 1432/725/1481 1431/405/1481 -f 1434/438/1482 1435/923/1482 1436/924/1482 -f 1437/925/1482 1436/924/1482 1435/923/1482 -f 1438/926/1483 1436/924/1483 1439/927/1483 -f 1437/925/1483 1439/927/1483 1436/924/1483 -f 1440/928/1484 1441/929/1484 1442/930/1484 -f 1441/929/1485 1438/926/1485 1442/930/1485 -f 1442/930/1485 1438/926/1485 1439/927/1485 -f 1007/931/1486 1443/931/1487 1006/931/1488 -f 1443/931/1487 1007/931/1486 1444/932/1489 -f 1073/932/1490 1444/932/1489 1007/931/1486 -f 1444/932/1489 1073/932/1490 1445/901/1491 -f 1075/901/1492 1445/901/1491 1073/932/1490 -f 1445/901/1491 1075/901/1492 1446/901/1493 -f 1077/901/1494 1446/901/1493 1075/901/1492 -f 1447/901/1495 1446/901/1493 1077/901/1494 -f 1406/901/1496 1447/901/1495 1077/901/1494 -f 1009/901/1497 1447/901/1495 1406/901/1496 -f 1447/901/1495 1009/901/1497 1448/931/1498 -f 1006/931/1488 1448/931/1498 1009/901/1497 -f 1448/931/1498 1006/931/1488 1443/931/1487 -f 1443/814/1499 1429/725/1499 1448/724/1499 -f 1428/415/1499 1448/724/1499 1429/725/1499 -f 1444/723/1500 1427/724/1500 1443/727/1500 -f 1429/405/1500 1443/727/1500 1427/724/1500 -f 1445/813/1501 1426/402/1501 1444/416/1501 -f 1427/404/1501 1444/416/1501 1426/402/1501 -f 1448/723/1502 1428/724/1502 1447/813/1503 -f 1425/402/1504 1447/813/1503 1428/724/1502 -f 1447/813/1503 1425/402/1504 1446/726/1505 -f 1424/404/1352 1446/726/1505 1425/402/1504 -f 1446/726/1505 1424/404/1352 1445/727/1506 -f 1426/409/1506 1445/727/1506 1424/404/1352 -f 706/408/1507 1219/417/1507 721/417/1508 -f 1219/417/1507 706/408/1507 1217/417/1509 -f 752/417/1510 1217/417/1509 706/408/1507 -f 1217/417/1509 752/417/1510 1215/419/1511 -f 753/419/1512 1215/419/1511 752/417/1510 -f 1215/419/1511 753/419/1512 1315/421/1513 -f 739/421/1514 1315/421/1513 753/419/1512 -f 1315/421/1513 739/421/1514 1322/423/1515 -f 740/423/1516 1322/423/1515 739/421/1514 -f 1322/423/1515 740/423/1516 1321/423/1517 -f 728/424/1517 1321/423/1517 740/423/1516 -f 1321/423/1517 728/424/1517 1319/423/1518 -f 727/423/1519 1319/423/1518 728/424/1517 -f 1319/423/1518 727/423/1519 1317/421/1520 -f 725/421/1521 1317/421/1520 727/423/1519 -f 1317/421/1520 725/421/1521 1222/419/1522 -f 723/419/1523 1222/419/1522 725/421/1521 -f 1222/419/1522 723/419/1523 1220/417/1524 -f 721/417/1508 1220/417/1524 723/419/1523 -f 1220/417/1524 721/417/1508 1219/417/1507 -f 1449/668/1154 1450/667/1167 1451/662/1165 -f 1451/662/1165 1452/660/1155 1449/668/1154 -f 1452/660/1155 1451/662/1165 1453/659/1166 -f 1453/659/1166 1454/657/1157 1452/660/1155 -f 1455/658/1156 1452/660/1155 1454/657/1157 -f 1454/657/1157 1456/663/1158 1455/658/1156 -f 1457/664/1159 1455/658/1156 1456/663/1158 -f 1456/663/1158 1458/657/1160 1457/664/1159 -f 1459/658/1161 1457/664/1159 1458/657/1160 -f 1458/657/1160 1460/659/1162 1459/658/1161 -f 1461/660/1163 1459/658/1161 1460/659/1162 -f 1460/659/1162 1462/661/1164 1461/660/1163 -f 1451/662/1165 1461/660/1163 1462/661/1164 -f 1462/661/1164 1453/659/1166 1451/662/1165 -f 1461/660/1163 1451/662/1165 1450/667/1167 -f 1450/667/1167 1463/666/1168 1461/660/1163 -f 1459/658/1161 1461/660/1163 1463/666/1168 -f 1463/666/1168 1464/665/1169 1459/658/1161 -f 1457/664/1159 1459/658/1161 1464/665/1169 -f 1464/665/1169 1465/666/1170 1457/664/1159 -f 1455/658/1156 1457/664/1159 1465/666/1170 -f 1465/666/1170 1466/667/1153 1455/658/1156 -f 1452/660/1155 1455/658/1156 1466/667/1153 -f 1466/667/1153 1449/668/1154 1452/660/1155 -f 1458/739/1229 1456/740/1229 1460/741/1229 -f 1456/740/1229 1453/742/1229 1460/741/1229 -f 1454/743/1229 1453/742/1229 1456/740/1229 -f 1460/741/1229 1453/742/1229 1462/744/1229 -f 1467/668/1154 1468/667/1167 1469/662/1165 -f 1469/662/1165 1470/660/1155 1467/668/1154 -f 1470/660/1155 1469/662/1165 1471/659/1166 -f 1471/659/1166 1472/657/1157 1470/660/1155 -f 1473/658/1156 1470/660/1155 1472/657/1157 -f 1472/657/1157 1474/663/1158 1473/658/1156 -f 1475/664/1159 1473/658/1156 1474/663/1158 -f 1474/663/1158 1476/657/1160 1475/664/1159 -f 1477/658/1161 1475/664/1159 1476/657/1160 -f 1476/657/1160 1478/659/1162 1477/658/1161 -f 1479/660/1163 1477/658/1161 1478/659/1162 -f 1478/659/1162 1480/661/1164 1479/660/1163 -f 1469/662/1165 1479/660/1163 1480/661/1164 -f 1480/661/1164 1471/659/1166 1469/662/1165 -f 1479/660/1163 1469/662/1165 1468/667/1167 -f 1468/667/1167 1481/666/1168 1479/660/1163 -f 1477/658/1161 1479/660/1163 1481/666/1168 -f 1481/666/1168 1482/665/1169 1477/658/1161 -f 1475/664/1159 1477/658/1161 1482/665/1169 -f 1482/665/1169 1483/666/1170 1475/664/1159 -f 1473/658/1156 1475/664/1159 1483/666/1170 -f 1483/666/1170 1484/667/1153 1473/658/1156 -f 1470/660/1155 1473/658/1156 1484/667/1153 -f 1484/667/1153 1467/668/1154 1470/660/1155 -f 1476/739/1229 1474/740/1229 1478/741/1229 -f 1474/740/1229 1471/742/1229 1478/741/1229 -f 1472/743/1229 1471/742/1229 1474/740/1229 -f 1478/741/1229 1471/742/1229 1480/744/1229 -f 1485/668/1154 1486/667/1167 1487/662/1165 -f 1487/662/1165 1488/660/1155 1485/668/1154 -f 1488/660/1155 1487/662/1165 1489/659/1166 -f 1489/659/1166 1490/657/1157 1488/660/1155 -f 1491/658/1156 1488/660/1155 1490/657/1157 -f 1490/657/1157 1492/663/1158 1491/658/1156 -f 1493/664/1159 1491/658/1156 1492/663/1158 -f 1492/663/1158 1494/657/1160 1493/664/1159 -f 1495/658/1161 1493/664/1159 1494/657/1160 -f 1494/657/1160 1496/659/1162 1495/658/1161 -f 1497/660/1163 1495/658/1161 1496/659/1162 -f 1496/659/1162 1498/661/1164 1497/660/1163 -f 1487/662/1165 1497/660/1163 1498/661/1164 -f 1498/661/1164 1489/659/1166 1487/662/1165 -f 1497/660/1163 1487/662/1165 1486/667/1167 -f 1486/667/1167 1499/666/1168 1497/660/1163 -f 1495/658/1161 1497/660/1163 1499/666/1168 -f 1499/666/1168 1500/665/1169 1495/658/1161 -f 1493/664/1159 1495/658/1161 1500/665/1169 -f 1500/665/1169 1501/666/1170 1493/664/1159 -f 1491/658/1156 1493/664/1159 1501/666/1170 -f 1501/666/1170 1502/667/1153 1491/658/1156 -f 1488/660/1155 1491/658/1156 1502/667/1153 -f 1502/667/1153 1485/668/1154 1488/660/1155 -f 1494/739/1229 1492/740/1229 1496/741/1229 -f 1492/740/1229 1489/742/1229 1496/741/1229 -f 1490/743/1229 1489/742/1229 1492/740/1229 -f 1496/741/1229 1489/742/1229 1498/744/1229 -f 1503/668/1154 1504/667/1167 1505/662/1165 -f 1505/662/1165 1506/660/1155 1503/668/1154 -f 1506/660/1155 1505/662/1165 1507/659/1166 -f 1507/659/1166 1508/657/1157 1506/660/1155 -f 1509/658/1156 1506/660/1155 1508/657/1157 -f 1508/657/1157 1510/663/1158 1509/658/1156 -f 1511/664/1159 1509/658/1156 1510/663/1158 -f 1510/663/1158 1512/657/1160 1511/664/1159 -f 1513/658/1161 1511/664/1159 1512/657/1160 -f 1512/657/1160 1514/659/1162 1513/658/1161 -f 1515/660/1163 1513/658/1161 1514/659/1162 -f 1514/659/1162 1516/661/1164 1515/660/1163 -f 1505/662/1165 1515/660/1163 1516/661/1164 -f 1516/661/1164 1507/659/1166 1505/662/1165 -f 1515/660/1163 1505/662/1165 1504/667/1167 -f 1504/667/1167 1517/666/1168 1515/660/1163 -f 1513/658/1161 1515/660/1163 1517/666/1168 -f 1517/666/1168 1518/665/1169 1513/658/1161 -f 1511/664/1159 1513/658/1161 1518/665/1169 -f 1518/665/1169 1519/666/1170 1511/664/1159 -f 1509/658/1156 1511/664/1159 1519/666/1170 -f 1519/666/1170 1520/667/1153 1509/658/1156 -f 1506/660/1155 1509/658/1156 1520/667/1153 -f 1520/667/1153 1503/668/1154 1506/660/1155 -f 1512/739/1229 1510/740/1229 1514/741/1229 -f 1510/740/1229 1507/742/1229 1514/741/1229 -f 1508/743/1229 1507/742/1229 1510/740/1229 -f 1514/741/1229 1507/742/1229 1516/744/1229 -f 1521/822/1525 1522/820/1526 1523/821/1525 -f 1524/819/1527 1523/821/1525 1522/820/1526 -f 1522/820/1526 1525/818/1528 1524/819/1527 -f 1526/817/1529 1524/819/1527 1525/818/1528 -f 1525/818/1528 1527/816/1530 1526/817/1529 -f 1528/815/1530 1526/817/1529 1527/816/1530 -f 1529/830/1531 1530/829/1531 1531/828/1532 -f 1532/827/1533 1531/828/1532 1530/829/1531 -f 1531/828/1532 1532/827/1533 1533/826/1534 -f 1534/824/1535 1533/826/1534 1532/827/1533 -f 1533/826/1534 1534/824/1535 1535/825/1536 -f 1536/823/1536 1535/825/1536 1534/824/1535 -f 1527/833/1537 1530/831/1537 1528/834/1537 -f 1529/832/1537 1528/834/1537 1530/831/1537 -f 1521/822/1538 1536/823/1538 1522/820/1538 -f 1534/824/1538 1522/820/1538 1536/823/1538 -f 1522/820/1538 1534/824/1538 1525/818/1538 -f 1532/827/1538 1525/818/1538 1534/824/1538 -f 1525/818/1538 1532/827/1538 1527/816/1538 -f 1530/829/1538 1527/816/1538 1532/827/1538 -f 1523/834/1539 1535/832/1539 1521/833/1539 -f 1536/831/1539 1521/833/1539 1535/832/1539 -f 1537/667/1121 1538/660/1112 1539/668/1120 -f 1540/662/1110 1539/668/1120 1538/660/1112 -f 1539/668/1120 1540/662/1110 1541/667/1119 -f 1542/660/1108 1541/667/1119 1540/662/1110 -f 1541/667/1119 1542/660/1108 1543/666/1118 -f 1544/658/1106 1543/666/1118 1542/660/1108 -f 1543/666/1118 1544/658/1106 1545/665/1117 -f 1546/664/1116 1545/665/1117 1544/658/1106 -f 1545/665/1117 1546/664/1116 1547/666/1122 -f 1548/658/1114 1547/666/1122 1546/664/1116 -f 1547/666/1122 1548/658/1114 1537/667/1121 -f 1538/660/1112 1537/667/1121 1548/658/1114 -f 1548/658/1114 1549/657/1113 1538/660/1112 -f 1550/659/1111 1538/660/1112 1549/657/1113 -f 1538/660/1112 1550/659/1111 1540/662/1110 -f 1551/661/1109 1540/662/1110 1550/659/1111 -f 1540/662/1110 1551/661/1109 1542/660/1108 -f 1552/659/1107 1542/660/1108 1551/661/1109 -f 1542/660/1108 1552/659/1107 1544/658/1106 -f 1553/657/1105 1544/658/1106 1552/659/1107 -f 1544/658/1106 1553/657/1105 1546/664/1116 -f 1554/663/1115 1546/664/1116 1553/657/1105 -f 1546/664/1116 1554/663/1115 1548/658/1114 -f 1549/657/1113 1548/658/1114 1554/663/1115 -f 1549/743/1230 1554/740/1230 1550/742/1230 -f 1554/740/1230 1552/741/1230 1550/742/1230 -f 1553/739/1230 1552/741/1230 1554/740/1230 -f 1550/742/1230 1552/741/1230 1551/744/1230 -f 1555/667/1121 1556/660/1112 1557/668/1120 -f 1558/662/1110 1557/668/1120 1556/660/1112 -f 1557/668/1120 1558/662/1110 1559/667/1119 -f 1560/660/1108 1559/667/1119 1558/662/1110 -f 1559/667/1119 1560/660/1108 1561/666/1118 -f 1562/658/1106 1561/666/1118 1560/660/1108 -f 1561/666/1118 1562/658/1106 1563/665/1117 -f 1564/664/1116 1563/665/1117 1562/658/1106 -f 1563/665/1117 1564/664/1116 1565/666/1122 -f 1566/658/1114 1565/666/1122 1564/664/1116 -f 1565/666/1122 1566/658/1114 1555/667/1121 -f 1556/660/1112 1555/667/1121 1566/658/1114 -f 1566/658/1114 1567/657/1113 1556/660/1112 -f 1568/659/1111 1556/660/1112 1567/657/1113 -f 1556/660/1112 1568/659/1111 1558/662/1110 -f 1569/661/1109 1558/662/1110 1568/659/1111 -f 1558/662/1110 1569/661/1109 1560/660/1108 -f 1570/659/1107 1560/660/1108 1569/661/1109 -f 1560/660/1108 1570/659/1107 1562/658/1106 -f 1571/657/1105 1562/658/1106 1570/659/1107 -f 1562/658/1106 1571/657/1105 1564/664/1116 -f 1572/663/1115 1564/664/1116 1571/657/1105 -f 1564/664/1116 1572/663/1115 1566/658/1114 -f 1567/657/1113 1566/658/1114 1572/663/1115 -f 1567/743/1230 1572/740/1230 1568/742/1230 -f 1572/740/1230 1570/741/1230 1568/742/1230 -f 1571/739/1230 1570/741/1230 1572/740/1230 -f 1568/742/1230 1570/741/1230 1569/744/1230 -f 1573/667/1121 1574/660/1112 1575/668/1120 -f 1576/662/1110 1575/668/1120 1574/660/1112 -f 1575/668/1120 1576/662/1110 1577/667/1119 -f 1578/660/1108 1577/667/1119 1576/662/1110 -f 1577/667/1119 1578/660/1108 1579/666/1118 -f 1580/658/1106 1579/666/1118 1578/660/1108 -f 1579/666/1118 1580/658/1106 1581/665/1117 -f 1582/664/1116 1581/665/1117 1580/658/1106 -f 1581/665/1117 1582/664/1116 1583/666/1122 -f 1584/658/1114 1583/666/1122 1582/664/1116 -f 1583/666/1122 1584/658/1114 1573/667/1121 -f 1574/660/1112 1573/667/1121 1584/658/1114 -f 1584/658/1114 1585/657/1113 1574/660/1112 -f 1586/659/1111 1574/660/1112 1585/657/1113 -f 1574/660/1112 1586/659/1111 1576/662/1110 -f 1587/661/1109 1576/662/1110 1586/659/1111 -f 1576/662/1110 1587/661/1109 1578/660/1108 -f 1588/659/1107 1578/660/1108 1587/661/1109 -f 1578/660/1108 1588/659/1107 1580/658/1106 -f 1589/657/1105 1580/658/1106 1588/659/1107 -f 1580/658/1106 1589/657/1105 1582/664/1116 -f 1590/663/1115 1582/664/1116 1589/657/1105 -f 1582/664/1116 1590/663/1115 1584/658/1114 -f 1585/657/1113 1584/658/1114 1590/663/1115 -f 1585/743/1230 1590/740/1230 1586/742/1230 -f 1590/740/1230 1588/741/1230 1586/742/1230 -f 1589/739/1230 1588/741/1230 1590/740/1230 -f 1586/742/1230 1588/741/1230 1587/744/1230 -f 1591/667/1121 1592/660/1112 1593/668/1120 -f 1594/662/1110 1593/668/1120 1592/660/1112 -f 1593/668/1120 1594/662/1110 1595/667/1119 -f 1596/660/1108 1595/667/1119 1594/662/1110 -f 1595/667/1119 1596/660/1108 1597/666/1118 -f 1598/658/1106 1597/666/1118 1596/660/1108 -f 1597/666/1118 1598/658/1106 1599/665/1117 -f 1600/664/1116 1599/665/1117 1598/658/1106 -f 1599/665/1117 1600/664/1116 1601/666/1122 -f 1602/658/1114 1601/666/1122 1600/664/1116 -f 1601/666/1122 1602/658/1114 1591/667/1121 -f 1592/660/1112 1591/667/1121 1602/658/1114 -f 1602/658/1114 1603/657/1113 1592/660/1112 -f 1604/659/1111 1592/660/1112 1603/657/1113 -f 1592/660/1112 1604/659/1111 1594/662/1110 -f 1605/661/1109 1594/662/1110 1604/659/1111 -f 1594/662/1110 1605/661/1109 1596/660/1108 -f 1606/659/1107 1596/660/1108 1605/661/1109 -f 1596/660/1108 1606/659/1107 1598/658/1106 -f 1607/657/1105 1598/658/1106 1606/659/1107 -f 1598/658/1106 1607/657/1105 1600/664/1116 -f 1608/663/1115 1600/664/1116 1607/657/1105 -f 1600/664/1116 1608/663/1115 1602/658/1114 -f 1603/657/1113 1602/658/1114 1608/663/1115 -f 1603/743/1230 1608/740/1230 1604/742/1230 -f 1608/740/1230 1606/741/1230 1604/742/1230 -f 1607/739/1230 1606/741/1230 1608/740/1230 -f 1604/742/1230 1606/741/1230 1605/744/1230 -f 1609/667/1121 1610/660/1112 1611/668/1120 -f 1612/662/1110 1611/668/1120 1610/660/1112 -f 1611/668/1120 1612/662/1110 1613/667/1119 -f 1614/660/1108 1613/667/1119 1612/662/1110 -f 1613/667/1119 1614/660/1108 1615/666/1118 -f 1616/658/1106 1615/666/1118 1614/660/1108 -f 1615/666/1118 1616/658/1106 1617/665/1117 -f 1618/664/1116 1617/665/1117 1616/658/1106 -f 1617/665/1117 1618/664/1116 1619/666/1122 -f 1620/658/1114 1619/666/1122 1618/664/1116 -f 1619/666/1122 1620/658/1114 1609/667/1121 -f 1610/660/1112 1609/667/1121 1620/658/1114 -f 1620/658/1114 1621/657/1113 1610/660/1112 -f 1622/659/1111 1610/660/1112 1621/657/1113 -f 1610/660/1112 1622/659/1111 1612/662/1110 -f 1623/661/1109 1612/662/1110 1622/659/1111 -f 1612/662/1110 1623/661/1109 1614/660/1108 -f 1624/659/1107 1614/660/1108 1623/661/1109 -f 1614/660/1108 1624/659/1107 1616/658/1106 -f 1625/657/1105 1616/658/1106 1624/659/1107 -f 1616/658/1106 1625/657/1105 1618/664/1116 -f 1626/663/1115 1618/664/1116 1625/657/1105 -f 1618/664/1116 1626/663/1115 1620/658/1114 -f 1621/657/1113 1620/658/1114 1626/663/1115 -f 1621/743/1230 1626/740/1230 1622/742/1230 -f 1626/740/1230 1624/741/1230 1622/742/1230 -f 1625/739/1230 1624/741/1230 1626/740/1230 -f 1622/742/1230 1624/741/1230 1623/744/1230 -f 1102/620/1540 1627/933/1540 1055/621/1540 -f 1628/933/1541 1055/621/1541 1627/933/1541 -f 1101/619/1542 1629/933/1542 1102/620/1542 -f 1627/933/1543 1102/620/1543 1629/933/1543 -f 998/572/1544 1630/933/1544 1101/619/1544 -f 1629/933/1545 1101/619/1545 1630/933/1545 -f 997/571/1546 1631/933/1546 998/572/1546 -f 1630/933/1547 998/572/1547 1631/933/1547 -f 996/570/1548 1632/934/1548 997/571/1548 -f 1631/933/1549 997/571/1549 1632/934/1549 -f 923/534/1550 1633/934/1550 996/570/1550 -f 1632/934/1551 996/570/1551 1633/934/1551 -f 921/532/1552 1634/934/1552 923/534/1552 -f 1633/934/1553 923/534/1553 1634/934/1553 -f 919/530/1554 1635/935/1554 921/532/1554 -f 1634/934/1552 921/532/1552 1635/935/1552 -f 792/466/1555 1636/935/1555 919/530/1555 -f 1635/935/1556 919/530/1556 1636/935/1556 -f 793/467/1557 1637/935/1557 792/466/1557 -f 1636/935/1558 792/466/1558 1637/935/1558 -f 756/437/1559 1638/935/1559 793/467/1559 -f 1637/935/1560 793/467/1560 1638/935/1560 -f 983/569/1561 1639/935/1561 756/437/1561 -f 1638/935/1562 756/437/1562 1639/935/1562 -f 982/437/1563 1640/935/1563 983/569/1563 -f 1639/935/1564 983/569/1564 1640/935/1564 -f 981/467/1066 1641/935/1066 982/437/1066 -f 1640/935/1565 982/437/1565 1641/935/1565 -f 979/466/1566 1642/935/1566 981/467/1566 -f 1641/935/1567 981/467/1567 1642/935/1567 -f 977/530/1568 1643/935/1568 979/466/1568 -f 1642/935/1569 979/466/1569 1643/935/1569 -f 975/532/1570 1644/934/1570 977/530/1570 -f 1643/935/1571 977/530/1571 1644/934/1571 -f 963/534/1572 1645/934/1572 975/532/1572 -f 1644/934/1573 975/532/1573 1645/934/1573 -f 1067/570/1574 1646/934/1574 963/534/1574 -f 1645/934/1575 963/534/1575 1646/934/1575 -f 1066/571/1576 1647/933/1576 1067/570/1576 -f 1646/934/1577 1067/570/1577 1647/933/1577 -f 1064/572/1578 1648/933/1578 1066/571/1578 -f 1647/933/1579 1066/571/1579 1648/933/1579 -f 1053/619/1580 1649/933/1580 1064/572/1580 -f 1648/933/1581 1064/572/1581 1649/933/1581 -f 1054/620/1582 1650/933/1582 1053/619/1582 -f 1649/933/1583 1053/619/1583 1650/933/1583 -f 1055/621/1584 1628/933/1584 1054/620/1584 -f 1650/933/1585 1054/620/1585 1628/933/1585 -f 1627/936/1586 1441/937/1586 1628/938/1586 -f 1440/938/1587 1628/938/1587 1441/937/1587 -f 1629/937/1588 1441/937/1588 1627/936/1588 -f 1630/939/1589 1438/940/1589 1629/937/1589 -f 1441/937/1590 1629/937/1590 1438/940/1590 -f 1631/939/1591 1438/940/1591 1630/939/1591 -f 1632/941/1592 1436/942/1592 1631/943/1592 -f 1438/944/1593 1631/943/1593 1436/942/1593 -f 1633/945/1594 1434/946/1594 1632/941/1594 -f 1436/942/1595 1632/941/1595 1434/946/1595 -f 1634/947/961 1651/948/961 1633/945/961 -f 1434/946/961 1633/945/961 1651/948/961 -f 1635/949/1596 1430/950/1596 1634/947/1596 -f 1651/948/1597 1634/947/1597 1430/950/1597 -f 1431/951/1598 1430/950/1598 1635/949/1598 -f 1642/939/1599 1433/952/1599 1641/936/1599 -f 1641/936/1600 1433/952/1600 1640/953/1600 -f 1640/953/1601 1433/952/1601 1639/954/1601 -f 1639/954/1602 1433/952/1602 1638/955/1602 -f 1638/955/1603 1433/952/1603 1637/947/1603 -f 1433/952/1604 1431/956/1604 1637/947/1604 -f 1637/947/1605 1431/956/1605 1636/957/1605 -f 1643/958/1606 1433/952/1606 1642/939/1606 -f 1644/947/1607 1652/948/1607 1643/949/1607 -f 1432/950/1608 1643/949/1608 1652/948/1608 -f 1645/959/1609 1435/946/1609 1644/947/1609 -f 1652/948/1609 1644/947/1609 1435/946/1609 -f 1646/941/1610 1437/942/1610 1645/959/1610 -f 1435/946/1611 1645/959/1611 1437/942/1611 -f 1647/943/1612 1439/944/1612 1646/941/1612 -f 1437/942/1613 1646/941/1613 1439/944/1613 -f 1648/960/1614 1439/961/1614 1647/960/1614 -f 1649/960/1615 1442/957/1615 1648/960/1615 -f 1439/961/1616 1648/960/1616 1442/957/1616 -f 1650/962/1617 1442/957/1617 1649/960/1617 -f 1628/938/1618 1440/938/1618 1650/962/1618 -f 1442/957/1619 1650/962/1619 1440/938/1619 -f 1435/723/1620 1434/963/1620 1652/415/1620 -f 1434/963/1620 1651/724/1620 1652/415/1620 -f 1651/724/1621 1430/814/1621 1652/415/1621 -f 1652/415/1621 1430/814/1621 1432/725/1621 -f 1653/964/1622 1654/965/1622 1655/966/1622 -f 1656/967/1622 1655/966/1622 1654/965/1622 -f 1657/968/1028 1658/969/1028 1653/964/1028 -f 1654/965/1028 1653/964/1028 1658/969/1028 -f 1659/970/1623 1660/971/1623 1657/968/1623 -f 1658/969/1623 1657/968/1623 1660/971/1623 -f 1655/966/1624 1656/967/1624 1661/878/1624 -f 1662/905/1624 1661/878/1624 1656/967/1624 -f 1655/972/1625 1661/973/1626 1653/974/1627 -f 1663/975/1628 1653/974/1627 1661/973/1626 -f 1664/975/1629 1662/973/1630 1654/974/1631 -f 1656/972/1632 1654/974/1631 1662/973/1630 -f 1664/976/1633 1663/977/1633 1662/967/1633 -f 1661/966/1633 1662/967/1633 1663/977/1633 -f 1432/950/1634 1433/958/1634 1643/949/1634 -f 1636/957/1635 1431/956/1635 1635/978/1635 -f 1410/979/1636 1409/980/1636 1108/979/1636 -f 1408/850/1637 1108/979/1637 1409/980/1637 -f 1122/981/1638 1121/982/1638 1107/983/1638 -f 1123/912/1639 1418/914/1639 1121/982/1639 -f 1421/984/1640 1422/985/1640 1418/914/1640 -f 1418/914/1641 1422/985/1641 1121/982/1641 -f 1423/986/1642 1410/878/1642 1422/985/1642 -f 1422/985/1643 1410/878/1643 1121/982/1643 -f 1121/982/1644 1410/878/1644 1107/983/1644 -f 1107/983/1645 1410/878/1645 1108/987/1645 -f 1145/985/1646 1143/984/1646 1147/988/1646 -f 1162/914/1647 1401/914/1647 1143/984/1647 -f 1399/989/1648 1397/990/1648 1401/914/1648 -f 1401/914/1649 1397/990/1649 1143/984/1649 -f 1143/984/1650 1397/990/1650 1147/988/1650 -f 1397/990/1651 1394/850/1651 1147/988/1651 -f 1147/988/1652 1394/850/1652 1159/877/1652 -f 1162/849/1653 1164/991/1653 1401/848/1653 -f 1230/731/1654 1228/374/1655 1665/731/1654 -f 1666/374/1656 1665/731/1654 1228/374/1655 -f 1228/374/1655 1225/391/1657 1666/374/1656 -f 1667/391/1658 1666/374/1656 1225/391/1657 -f 1225/391/1657 1224/730/1659 1667/391/1658 -f 1668/730/1659 1667/391/1658 1224/730/1659 -f 1665/731/611 1666/374/614 1669/731/611 -f 1670/374/614 1669/731/611 1666/374/614 -f 1666/374/614 1667/391/612 1670/374/614 -f 1671/391/612 1670/374/614 1667/391/612 -f 1667/391/612 1668/730/611 1671/391/612 -f 1672/730/611 1671/391/612 1668/730/611 -f 1669/731/1660 1670/374/1661 1231/731/1660 -f 1229/374/1662 1231/731/1660 1670/374/1661 -f 1670/374/1661 1671/391/1663 1229/374/1662 -f 1227/391/1664 1229/374/1662 1671/391/1663 -f 1671/391/1663 1672/730/1665 1227/391/1664 -f 1226/730/1665 1227/391/1664 1672/730/1665 -f 1201/992/1149 1277/993/1149 1200/994/1149 -f 1275/995/1666 1200/994/1666 1277/993/1666 -f 1203/996/1667 1279/997/1667 1201/992/1667 -f 1277/993/1668 1201/992/1668 1279/997/1668 -f 1281/998/1669 1279/997/1669 1205/999/1669 -f 1203/996/1670 1205/999/1670 1279/997/1670 -f 1207/1000/1671 1283/1001/1671 1205/999/1671 -f 1281/998/1672 1205/999/1672 1283/1001/1672 -f 1208/1002/913 1284/1003/913 1207/1000/913 -f 1283/1001/1673 1207/1000/1673 1284/1003/1673 -f 1214/1004/1674 1286/1005/1674 1208/1002/1674 -f 1286/1005/1675 1284/1003/1675 1208/1002/1675 -f 1307/1006/1676 1293/1002/1676 1299/1007/1676 -f 1238/1008/1677 1239/1009/1677 1313/994/1677 -f 1314/1010/1678 1313/994/1678 1239/1009/1678 -f 1239/1009/1679 1241/996/1679 1314/1010/1679 -f 1309/1011/1680 1314/1010/1680 1241/996/1680 -f 1241/996/1681 1243/999/1681 1309/1011/1681 -f 1304/1012/1682 1309/1011/1682 1243/999/1682 -f 1304/1012/1683 1243/999/1683 1305/1013/1683 -f 1245/1000/1684 1305/1013/1684 1243/999/1684 -f 1245/1000/1685 1293/1002/1685 1305/1013/1685 -f 1307/1006/1686 1305/1013/1686 1293/1002/1686 -f 1673/417/1687 1674/1014/1687 1675/417/1688 -f 1676/1014/1689 1675/417/1688 1674/1014/1687 -f 1675/417/1688 1676/1014/1689 1677/417/1690 -f 1678/1014/1690 1677/417/1690 1676/1014/1689 -f 1677/417/1691 1678/1014/1691 1679/417/1692 -f 1680/1014/1693 1679/417/1692 1678/1014/1691 -f 1679/417/1692 1680/1014/1693 1673/417/1694 -f 1674/1014/1694 1673/417/1694 1680/1014/1693 -f 1674/726/1695 1680/726/1695 1676/727/1695 -f 1678/727/1695 1676/727/1695 1680/726/1695 -f 1164/892/1696 1163/891/1697 1681/893/1698 -f 1163/891/1697 1161/866/1419 1681/893/1698 -f 1401/864/658 1681/893/1698 1161/866/1419 -# 1961 faces - -# -# object P_51_Mustang_Right_Wing_Flap -# - -v -4.86 -0.53 -0.60 -v -4.41 -0.27 3.38 -v -4.43 -0.76 3.40 -v -29.11 -0.39 3.17 -v -28.77 -0.08 6.47 -v -28.79 -0.68 6.50 -# 6 vertices - -vn 0.99 -0.05 -0.11 -vn -0.01 1.00 -0.09 -vn -0.00 1.00 -0.07 -vn -0.00 1.00 -0.06 -vn 0.13 0.05 0.99 -vn 0.13 0.03 0.99 -vn -0.01 -1.00 -0.09 -vn -0.01 -1.00 -0.08 -vn -0.01 -1.00 -0.06 -vn -0.99 0.05 0.10 -# 10 vertex normals - -vt 0.29 0.02 0.00 -vt 0.23 0.01 0.00 -vt 0.23 0.02 0.00 -vt 0.71 0.15 0.00 -vt 0.71 0.21 0.00 -vt 0.39 0.10 0.00 -vt 0.38 0.16 0.00 -vt 0.23 0.00 0.00 -vt 0.46 0.00 0.00 -vt 0.46 0.01 0.00 -vt 0.05 0.31 0.00 -vt 0.01 0.31 0.00 -vt 0.06 0.05 0.00 -vt 0.01 0.04 0.00 -vt 0.33 0.02 0.00 -vt 0.28 0.01 0.00 -vt 0.33 0.01 0.00 -# 17 texture coords - -g P_51_Mustang_Right_Wing_Flap -f 1682/1015/1699 1683/1016/1699 1684/1017/1699 -f 1685/1018/1700 1686/1019/1700 1682/1020/1701 -f 1683/1021/1702 1682/1020/1701 1686/1019/1700 -f 1686/1022/1703 1687/1016/1703 1683/1023/1704 -f 1684/1024/1704 1683/1023/1704 1687/1016/1703 -f 1687/1025/1705 1685/1026/1706 1684/1027/1707 -f 1682/1028/1707 1684/1027/1707 1685/1026/1706 -f 1686/1029/1708 1685/1030/1708 1687/1031/1708 -# 8 faces - -# -# object P_51_Mustang_Left_Wing -# - -v 21.73 -0.34 5.07 -v 29.47 -0.26 5.88 -v 29.43 -1.11 5.94 -v 13.89 -0.70 20.02 -v 13.32 0.44 17.79 -v 8.22 -0.70 21.64 -v 6.69 0.53 18.92 -v 13.59 0.59 15.01 -v 6.67 0.70 16.38 -v 13.51 0.45 11.97 -v 6.64 0.56 12.08 -v 12.99 0.26 8.88 -v 6.75 0.38 9.22 -v 12.85 -0.11 6.05 -v 18.46 -0.07 6.17 -v 18.38 -0.30 4.71 -v 18.77 0.27 8.57 -v 22.48 0.10 8.18 -v 18.54 0.45 12.11 -v 22.26 0.41 12.21 -v 18.69 0.44 14.67 -v 22.30 0.37 14.75 -v 19.28 -0.74 18.90 -v 18.83 0.28 17.17 -v 22.46 0.18 16.71 -v 23.13 -0.75 18.50 -v 30.30 -0.03 16.07 -v 30.77 -0.79 17.69 -v 29.80 0.01 8.15 -v 29.00 0.22 12.29 -v 29.20 0.27 14.36 -v 6.63 -2.09 14.77 -v 13.47 -1.97 15.15 -v 6.91 -1.78 18.50 -v 13.40 -1.81 12.10 -v 18.43 -1.86 12.23 -v 18.67 -1.64 8.68 -v 22.40 -1.51 8.27 -v 21.69 -1.11 5.12 -v 29.73 -1.49 8.23 -v 28.90 -1.73 12.40 -v 22.15 -1.85 12.34 -v 22.20 -1.84 14.87 -v 18.58 -1.87 14.79 -v 18.75 -1.79 16.77 -v 13.22 -1.77 17.34 -v 7.17 -1.73 19.64 -v 22.37 -1.71 16.82 -v 30.16 -1.61 16.17 -v 29.10 -1.79 14.47 -v 18.09 -0.19 18.03 -v 18.07 -0.12 19.96 -v 18.47 -0.42 18.05 -v 17.66 -0.35 19.98 -v 17.68 -0.41 18.05 -v 17.64 -0.81 20.03 -v 17.66 -0.87 18.10 -v 18.02 -1.05 20.04 -v 18.04 -1.11 18.11 -v 18.43 -0.82 20.02 -v 18.45 -0.88 18.09 -v 18.45 -0.36 19.98 -v 19.42 -0.43 17.94 -v 19.40 -0.37 19.87 -v 19.82 -0.20 17.92 -v 19.37 -0.83 19.91 -v 19.40 -0.89 17.98 -v 19.76 -1.06 19.93 -v 19.78 -1.12 18.00 -v 20.16 -0.83 19.90 -v 20.18 -0.90 17.98 -v 20.18 -0.37 19.86 -v 20.20 -0.44 17.93 -v 19.80 -0.14 19.84 -v 21.31 -0.91 17.79 -v 21.29 -0.85 19.72 -v 21.33 -0.45 17.75 -v 21.67 -1.08 19.74 -v 21.69 -1.15 17.81 -v 22.07 -0.85 19.71 -v 22.09 -0.92 17.79 -v 22.09 -0.39 19.67 -v 22.12 -0.46 17.74 -v 21.71 -0.16 19.65 -v 21.73 -0.22 17.73 -v 21.31 -0.39 19.68 -v 6.36 -1.85 12.28 -v 12.90 -1.58 8.99 -v 18.40 -1.29 6.24 -v 18.34 -1.03 4.76 -v 12.79 -1.19 6.11 -v 12.60 -0.96 4.14 -v 6.61 -1.24 6.37 -v 6.45 -0.95 3.49 -v 6.61 -1.63 9.28 -v 6.54 -0.19 3.45 -v 12.64 -0.25 4.10 -v 6.70 0.02 6.36 -v 25.72 -2.97 15.17 -v 26.04 -2.97 15.16 -v 25.78 -1.70 14.94 -v 26.10 -1.70 14.93 -v 25.71 -3.12 14.67 -v 26.03 -3.12 14.66 -v 26.02 -3.16 10.99 -v 25.71 -3.16 10.99 -v 25.78 -1.72 9.85 -v 26.09 -1.72 9.85 -v 49.14 -0.79 5.08 -v 48.24 -0.91 6.93 -v 48.25 -0.61 6.89 -v 48.48 -0.39 13.06 -v 45.09 -0.22 13.27 -v 48.37 -0.52 14.30 -v 49.79 -0.70 13.22 -v 49.65 -0.81 14.45 -v 50.18 -0.86 13.17 -v 49.94 -0.86 14.46 -v 49.46 -0.86 15.18 -v 48.14 -0.86 15.82 -v 45.11 -0.50 14.61 -v 44.86 -0.85 16.21 -v 37.77 -0.27 15.37 -v 37.66 -0.83 16.94 -v 37.87 0.03 13.78 -v 37.92 0.07 11.77 -v 37.54 -0.12 8.23 -v 44.74 -0.34 7.95 -v 44.69 -0.53 6.74 -v 47.69 -0.50 8.05 -v 49.33 -0.63 7.63 -v 49.65 -0.83 7.70 -v 49.74 -0.63 11.09 -v 50.12 -0.85 11.07 -v 48.01 -0.49 11.12 -v 44.83 -0.18 11.19 -v 37.83 -1.66 11.86 -v 44.77 -1.59 11.25 -v 37.86 -1.64 13.87 -v 37.71 -1.53 15.44 -v 44.80 -1.48 14.64 -v 48.34 -1.08 14.45 -v 44.94 -1.58 13.33 -v 48.44 -1.09 13.22 -v 47.98 -1.08 11.27 -v 49.72 -0.95 11.28 -v 49.21 -0.88 7.78 -v 47.66 -0.96 8.19 -v 44.69 -1.31 7.98 -v 44.66 -1.07 6.82 -v 37.47 -1.43 8.30 -v 37.60 -1.17 6.48 -v 49.77 -1.00 13.41 -v 49.64 -0.94 14.48 -v 37.65 -0.33 6.41 -v 29.53 -2.84 10.92 -v 29.47 -2.71 15.01 -v 29.60 -1.55 9.80 -v 29.51 -1.73 14.90 -v 29.69 -1.73 14.90 -v 29.64 -2.71 15.01 -v 29.78 -1.55 9.80 -v 29.70 -2.84 10.92 -v 32.08 -2.73 14.99 -v 32.26 -2.73 14.99 -v 32.13 -1.70 14.87 -v 32.31 -1.70 14.87 -v 32.14 -2.86 10.90 -v 32.32 -2.87 10.90 -v 32.22 -1.51 9.77 -v 32.40 -1.51 9.77 -v 34.83 -2.75 14.96 -v 35.01 -2.75 14.96 -v 34.88 -1.62 14.83 -v 35.06 -1.62 14.83 -v 34.89 -2.89 10.87 -v 35.07 -2.89 10.87 -v 34.97 -1.51 9.74 -v 35.15 -1.51 9.74 -v 25.90 -3.10 16.05 -v 25.99 -3.13 9.38 -v 24.57 -3.45 16.08 -v 27.29 -3.50 9.39 -v 27.20 -3.47 16.06 -v 28.21 -4.49 9.44 -v 28.12 -4.46 16.11 -v 28.50 -5.83 9.52 -v 28.41 -5.80 16.19 -v 28.08 -7.16 9.61 -v 28.00 -7.14 16.28 -v 27.07 -8.14 9.68 -v 26.98 -8.11 16.36 -v 25.73 -8.49 9.72 -v 25.65 -8.46 16.39 -v 24.43 -8.12 9.71 -v 24.35 -8.09 16.38 -v 23.51 -7.13 9.66 -v 23.43 -7.10 16.33 -v 23.22 -5.79 9.57 -v 23.14 -5.76 16.24 -v 23.64 -4.45 9.48 -v 23.56 -4.42 16.15 -v 24.65 -3.48 9.41 -v 25.98 -4.22 6.21 -v 25.18 -4.43 6.23 -v 24.57 -5.01 6.27 -v 24.32 -5.81 6.33 -v 24.50 -6.61 6.37 -v 25.04 -7.20 6.41 -v 25.82 -7.42 6.41 -v 26.62 -7.21 6.39 -v 27.23 -6.63 6.35 -v 27.48 -5.83 6.30 -v 25.96 -5.24 3.65 -v 25.66 -5.32 3.66 -v 27.30 -5.03 6.25 -v 26.75 -4.44 6.21 -v 26.25 -5.32 3.65 -v 25.93 -5.83 3.43 -v 25.44 -5.53 3.68 -v 25.35 -5.83 3.70 -v 25.41 -6.12 3.71 -v 25.62 -6.34 3.73 -v 25.90 -6.42 3.73 -v 26.20 -6.35 3.72 -v 26.42 -6.13 3.70 -v 26.52 -5.84 3.68 -v 26.45 -5.54 3.67 -v 23.60 -6.99 17.58 -v 23.33 -5.76 17.50 -v 23.72 -4.53 17.42 -v 24.65 -3.63 17.35 -v 25.88 -3.31 17.32 -v 27.08 -3.65 17.33 -v 27.92 -4.56 17.38 -v 28.19 -5.79 17.46 -v 27.80 -7.03 17.54 -v 26.87 -7.92 17.61 -v 23.89 -5.75 19.06 -v 24.18 -4.81 19.00 -v 24.72 -5.76 20.24 -v 24.83 -6.27 20.28 -v 24.09 -6.70 19.12 -v 25.64 -8.24 17.64 -v 24.44 -7.90 17.63 -v 24.74 -7.39 19.16 -v 25.18 -6.64 20.30 -v 25.72 -5.76 20.57 -v 24.88 -5.25 20.21 -v 24.89 -4.13 18.95 -v 25.83 -3.88 18.92 -v 26.75 -4.14 18.93 -v 27.39 -4.84 18.97 -v 27.60 -5.78 19.03 -v 27.30 -6.72 19.09 -v 26.59 -7.41 19.14 -v 25.65 -7.65 19.16 -v 25.68 -6.78 20.30 -v 26.19 -6.65 20.29 -v 26.57 -6.28 20.26 -v 26.73 -5.77 20.22 -v 26.62 -5.26 20.19 -v 26.27 -4.89 20.17 -v 25.77 -4.74 20.17 -v 25.27 -4.88 20.18 -v 29.89 -0.71 2.47 -# 266 vertices - -vn 0.10 -0.07 -0.99 -vn 0.10 0.89 0.44 -vn 0.06 0.97 0.24 -vn 0.09 0.92 0.39 -vn 0.05 0.98 0.21 -vn 0.02 1.00 0.01 -vn 0.02 1.00 0.02 -vn 0.01 1.00 -0.05 -vn 0.02 1.00 -0.05 -vn 0.00 1.00 -0.10 -vn 0.02 1.00 -0.09 -vn 0.01 0.99 -0.10 -vn 0.01 0.99 -0.15 -vn 0.02 0.99 -0.15 -vn 0.02 1.00 -0.10 -vn 0.02 0.99 -0.10 -vn 0.01 1.00 -0.03 -vn 0.02 1.00 -0.03 -vn 0.02 1.00 0.03 -vn 0.03 1.00 0.05 -vn 0.09 0.87 0.48 -vn 0.06 0.96 0.28 -vn 0.05 0.96 0.28 -vn 0.06 0.89 0.44 -vn 0.04 0.95 0.31 -vn 0.05 0.91 0.41 -vn 0.01 0.99 -0.12 -vn 0.01 1.00 -0.09 -vn 0.02 1.00 -0.04 -vn 0.02 1.00 0.08 -vn 0.01 -1.00 -0.01 -vn 0.01 -1.00 0.02 -vn 0.01 -1.00 0.07 -vn -0.00 -1.00 -0.06 -vn 0.01 -1.00 -0.04 -vn 0.00 -0.99 -0.10 -vn 0.02 -0.99 -0.10 -vn 0.01 -0.99 -0.14 -vn 0.00 -0.99 -0.16 -vn 0.00 -0.99 -0.11 -vn 0.01 -1.00 0.03 -vn 0.03 -0.97 0.23 -vn 0.04 -0.98 0.22 -vn 0.08 -0.97 0.23 -vn 0.13 -0.92 0.38 -vn 0.07 -0.93 0.36 -vn 0.05 -0.90 0.44 -vn 0.03 -0.96 0.28 -vn 0.05 -0.88 0.48 -vn 0.03 -0.94 0.33 -vn 0.04 -0.89 0.46 -vn 0.01 -1.00 0.04 -vn 0.88 0.48 -0.01 -vn -0.86 0.51 -0.03 -vn -0.84 0.54 -0.03 -vn -0.88 -0.48 0.01 -vn -0.89 -0.46 0.01 -vn -0.02 -1.00 0.03 -vn -0.01 -1.00 0.03 -vn 0.84 -0.54 0.03 -vn 0.86 -0.51 0.03 -vn 0.89 0.46 -0.01 -vn 0.00 -1.00 -0.09 -vn -0.01 -0.99 -0.10 -vn -0.01 -0.99 -0.16 -vn -0.01 -0.99 -0.17 -vn -0.00 -0.99 -0.13 -vn 0.01 -0.99 -0.12 -vn 0.01 -0.99 -0.10 -vn 0.11 -0.07 -0.99 -vn 0.02 1.00 -0.07 -vn 0.01 0.09 1.00 -vn 0.02 0.18 0.98 -vn 0.00 -0.96 0.29 -vn -0.00 -1.00 0.01 -vn -0.02 -0.62 -0.78 -vn -1.00 0.05 0.00 -vn 1.00 -0.05 -0.00 -vn 0.99 -0.06 -0.14 -vn 0.99 -0.06 -0.10 -vn 0.99 -0.05 -0.10 -vn 0.98 -0.04 0.19 -vn 0.85 -0.11 -0.52 -vn 0.83 -0.07 -0.55 -vn 0.94 -0.10 -0.32 -vn -1.00 0.08 0.01 -vn -1.00 0.07 0.01 -vn -0.99 0.12 0.05 -vn -1.00 0.08 0.06 -vn -1.00 0.01 0.00 -vn -0.98 0.13 0.12 -vn -0.99 0.11 -0.07 -vn -1.00 0.07 -0.04 -vn -0.88 -0.04 0.48 -vn -0.99 -0.11 0.08 -vn -1.00 0.01 0.01 -vn -0.96 -0.13 0.23 -vn -0.90 -0.01 -0.44 -vn 0.13 0.99 0.04 -vn 0.05 0.99 0.10 -vn 0.11 0.98 0.16 -vn 0.30 0.95 0.08 -vn 0.20 0.97 0.10 -vn 0.37 0.93 0.06 -vn 0.18 0.98 0.07 -vn 0.16 0.97 0.17 -vn 0.06 0.97 0.22 -vn 0.04 0.98 0.21 -vn 0.04 0.97 0.23 -vn 0.04 0.96 0.26 -vn 0.04 0.94 0.34 -vn 0.06 0.92 0.40 -vn 0.05 0.97 0.25 -vn 0.04 0.99 0.10 -vn 0.03 1.00 -0.02 -vn 0.02 1.00 -0.08 -vn 0.04 0.99 -0.11 -vn 0.04 0.99 -0.15 -vn 0.06 1.00 -0.05 -vn 0.05 1.00 -0.07 -vn 0.31 0.95 -0.06 -vn 0.17 0.98 -0.07 -vn 0.54 0.84 -0.08 -vn 0.31 0.95 -0.03 -vn 0.50 0.86 -0.04 -vn 0.08 1.00 -0.03 -vn 0.06 1.00 -0.02 -vn 0.01 -1.00 -0.03 -vn 0.08 -1.00 -0.04 -vn 0.02 -1.00 0.04 -vn 0.03 -0.97 0.25 -vn 0.03 -0.97 0.24 -vn 0.05 -0.89 0.45 -vn 0.04 -0.91 0.42 -vn 0.04 -0.93 0.38 -vn 0.06 -0.98 0.21 -vn 0.10 -0.97 0.22 -vn 0.11 -0.99 0.08 -vn 0.08 -1.00 0.03 -vn 0.10 -1.00 -0.01 -vn 0.11 -0.99 -0.03 -vn 0.07 -1.00 -0.03 -vn 0.05 -1.00 -0.03 -vn 0.09 -1.00 -0.03 -vn 0.05 -0.99 -0.13 -vn 0.06 -1.00 -0.04 -vn 0.03 -0.98 -0.20 -vn 0.01 -0.99 -0.11 -vn 0.00 -0.99 -0.17 -vn 0.11 -0.99 -0.04 -vn 0.24 -0.97 -0.02 -vn 0.24 -0.97 -0.03 -vn 0.31 -0.95 0.01 -vn 0.35 -0.94 0.05 -vn 0.22 -0.97 0.13 -vn 0.26 -0.96 0.09 -vn 0.11 -0.98 0.15 -vn 0.08 -0.98 0.15 -vn 0.08 -0.98 0.16 -vn 0.03 0.99 -0.11 -vn 0.02 0.99 -0.12 -vn 0.08 -1.00 0.01 -vn 0.10 -0.99 0.06 -vn -1.00 0.05 -0.02 -vn 1.00 -0.05 0.02 -vn 0.00 0.12 0.99 -vn -0.00 -1.00 0.03 -vn -0.00 -0.64 -0.77 -vn 0.00 0.11 0.99 -vn 0.05 -0.47 -0.88 -vn 0.07 -0.07 -1.00 -vn 0.05 0.63 -0.77 -vn 0.05 -0.19 -0.98 -vn 0.04 -0.08 -1.00 -vn 0.04 -0.11 -0.99 -vn -0.34 -0.94 0.05 -vn -0.19 0.98 -0.09 -vn -0.32 -0.95 0.05 -vn -0.99 0.06 0.14 -vn -1.00 -0.05 0.08 -vn -0.10 0.99 0.04 -vn -0.80 0.60 -0.05 -vn -0.85 0.11 0.52 -vn -0.94 0.10 0.32 -vn -0.00 -0.66 -0.75 -vn 0.01 1.00 -0.00 -vn -0.50 0.87 -0.01 -vn 0.52 0.85 0.00 -vn 0.88 0.47 0.01 -vn 0.89 0.46 0.01 -vn 1.00 -0.03 0.01 -vn 1.00 -0.05 0.01 -vn 0.86 -0.52 0.01 -vn 0.85 -0.53 0.01 -vn 0.50 -0.87 0.01 -vn 0.48 -0.88 0.01 -vn -0.01 -1.00 0.00 -vn -0.52 -0.85 -0.00 -vn -0.89 -0.46 -0.01 -vn -0.88 -0.47 -0.01 -vn -1.00 0.05 -0.01 -vn -1.00 0.03 -0.01 -vn -0.85 0.53 -0.01 -vn -0.86 0.52 -0.01 -vn -0.48 0.88 -0.01 -vn 0.01 0.95 -0.33 -vn 0.01 0.94 -0.35 -vn -0.48 0.82 -0.32 -vn -0.47 0.81 -0.34 -vn -0.82 0.47 -0.32 -vn -0.81 0.48 -0.34 -vn -0.95 0.01 -0.32 -vn -0.94 0.02 -0.34 -vn -0.83 -0.46 -0.32 -vn -0.83 -0.45 -0.34 -vn -0.49 -0.81 -0.32 -vn -0.48 -0.81 -0.34 -vn -0.02 -0.95 -0.31 -vn -0.01 -0.95 -0.33 -vn 0.45 -0.84 -0.30 -vn 0.45 -0.83 -0.32 -vn 0.80 -0.52 -0.29 -vn 0.80 -0.51 -0.31 -vn 0.95 -0.07 -0.30 -vn 0.94 -0.06 -0.32 -vn 0.00 0.73 -0.69 -vn -0.38 0.63 -0.68 -vn 0.85 0.42 -0.31 -vn 0.84 0.42 -0.33 -vn 0.50 0.80 -0.32 -vn 0.50 0.80 -0.34 -vn 0.39 0.61 -0.68 -vn -0.01 -0.05 -1.00 -vn -0.65 0.36 -0.67 -vn -0.75 -0.00 -0.66 -vn -0.66 -0.38 -0.65 -vn -0.39 -0.66 -0.64 -vn -0.01 -0.77 -0.64 -vn 0.36 -0.68 -0.63 -vn 0.64 -0.43 -0.64 -vn 0.75 -0.07 -0.65 -vn 0.67 0.31 -0.67 -vn -0.88 -0.44 0.16 -vn -0.86 -0.44 0.25 -vn -0.99 0.06 0.15 -vn -0.97 0.06 0.24 -vn -0.83 0.54 0.15 -vn -0.82 0.52 0.23 -vn -0.47 0.87 0.15 -vn -0.47 0.85 0.24 -vn 0.02 0.99 0.16 -vn 0.01 0.97 0.25 -vn 0.51 0.84 0.17 -vn 0.50 0.83 0.26 -vn 0.87 0.47 0.17 -vn 0.85 0.46 0.26 -vn 0.98 -0.02 0.17 -vn 0.96 -0.03 0.26 -vn 0.85 -0.50 0.17 -vn 0.83 -0.50 0.26 -vn 0.49 -0.85 0.17 -vn 0.48 -0.84 0.26 -vn -0.89 0.07 0.45 -vn -0.75 0.49 0.44 -vn -0.62 0.08 0.78 -vn -0.55 -0.24 0.80 -vn -0.79 -0.39 0.47 -vn -0.01 -0.99 0.17 -vn -0.01 -0.96 0.26 -vn -0.52 -0.84 0.17 -vn -0.51 -0.82 0.26 -vn -0.47 -0.74 0.48 -vn -0.32 -0.49 0.81 -vn 0.01 0.06 1.00 -vn -0.53 0.37 0.76 -vn -0.43 0.79 0.44 -vn 0.01 0.89 0.45 -vn 0.45 0.76 0.46 -vn 0.78 0.43 0.46 -vn 0.89 -0.01 0.46 -vn 0.76 -0.44 0.47 -vn 0.45 -0.76 0.47 -vn -0.01 -0.88 0.48 -vn 0.00 -0.59 0.81 -vn 0.32 -0.51 0.80 -vn 0.54 -0.29 0.79 -vn 0.63 0.02 0.78 -vn 0.55 0.33 0.77 -vn 0.32 0.56 0.76 -vn 0.01 0.65 0.76 -vn -0.30 0.58 0.76 -vn -0.99 0.04 -0.13 -vn 0.02 0.99 -0.13 -vn 0.03 0.99 -0.13 -vn 0.01 -1.00 -0.07 -vn 0.01 -1.00 -0.06 -vn 0.90 0.01 0.44 -vn -0.05 0.07 1.00 -vn -0.05 0.11 0.99 -# 299 vertex normals - -vt 0.55 0.02 0.00 -vt 0.58 0.02 0.00 -vt 0.86 0.72 0.00 -vt 0.86 0.69 0.00 -vt 0.93 0.75 0.00 -vt 0.95 0.70 0.00 -vt 0.86 0.64 0.00 -vt 0.95 0.66 0.00 -vt 0.86 0.59 0.00 -vt 0.95 0.59 0.00 -vt 0.87 0.54 0.00 -vt 0.95 0.55 0.00 -vt 0.87 0.50 0.00 -vt 0.80 0.50 0.00 -vt 0.80 0.48 0.00 -vt 0.75 0.48 0.00 -vt 0.79 0.54 0.00 -vt 0.74 0.54 0.00 -vt 0.79 0.60 0.00 -vt 0.75 0.60 0.00 -vt 0.79 0.64 0.00 -vt 0.74 0.64 0.00 -vt 0.78 0.71 0.00 -vt 0.79 0.68 0.00 -vt 0.74 0.67 0.00 -vt 0.73 0.70 0.00 -vt 0.64 0.67 0.00 -vt 0.63 0.69 0.00 -vt 0.65 0.50 0.00 -vt 0.64 0.54 0.00 -vt 0.66 0.60 0.00 -vt 0.65 0.64 0.00 -vt 0.20 0.10 0.00 -vt 0.20 0.17 0.00 -vt 0.25 0.11 0.00 -vt 0.16 0.16 0.00 -vt 0.15 0.22 0.00 -vt 0.11 0.21 0.00 -vt 0.10 0.25 0.00 -vt 0.06 0.24 0.00 -vt 0.05 0.32 0.00 -vt 0.08 0.33 0.00 -vt 0.14 0.33 0.00 -vt 0.15 0.26 0.00 -vt 0.18 0.26 0.00 -vt 0.19 0.22 0.00 -vt 0.21 0.23 0.00 -vt 0.23 0.17 0.00 -vt 0.27 0.11 0.00 -vt 0.29 0.13 0.00 -vt 0.26 0.19 0.00 -vt 0.24 0.24 0.00 -vt 0.21 0.27 0.00 -vt 0.23 0.28 0.00 -vt 0.19 0.35 0.00 -vt 0.21 0.36 0.00 -vt 0.16 0.34 0.00 -vt 0.39 0.68 0.00 -vt 0.25 0.68 0.00 -vt 0.39 0.69 0.00 -vt 0.25 0.69 0.00 -vt 0.25 0.70 0.00 -vt 0.39 0.70 0.00 -vt 0.25 0.71 0.00 -vt 0.39 0.71 0.00 -vt 0.17 0.09 0.00 -vt 0.12 0.15 0.00 -vt 0.08 0.20 0.00 -vt 0.06 0.20 0.00 -vt 0.08 0.14 0.00 -vt 0.06 0.14 0.00 -vt 0.10 0.08 0.00 -vt 0.06 0.07 0.00 -vt 0.13 0.08 0.00 -vt 0.48 0.02 0.00 -vt 0.51 0.02 0.00 -vt 0.53 0.02 0.00 -vt 0.55 0.03 0.00 -vt 0.87 0.46 0.00 -vt 0.95 0.50 0.00 -vt 0.95 0.45 0.00 -vt 0.37 0.72 0.00 -vt 0.38 0.71 0.00 -vt 0.37 0.73 0.00 -vt 0.39 0.73 0.00 -vt 0.39 0.72 0.00 -vt 0.38 0.74 0.00 -vt 0.01 0.74 0.00 -vt 0.02 0.73 0.00 -vt 0.04 0.73 0.00 -vt 0.03 0.73 0.00 -vt 0.77 0.13 0.00 -vt 0.87 0.13 0.00 -vt 0.77 0.11 0.00 -vt 0.78 0.11 0.00 -vt 0.85 0.11 0.00 -vt 0.20 0.52 0.00 -vt 0.20 0.50 0.00 -vt 0.22 0.51 0.00 -vt 0.21 0.50 0.00 -vt 0.21 0.57 0.00 -vt 0.20 0.55 0.00 -vt 0.23 0.56 0.00 -vt 0.23 0.55 0.00 -vt 0.21 0.58 0.00 -vt 0.23 0.57 0.00 -vt 0.23 0.59 0.00 -vt 0.21 0.51 0.00 -vt 0.21 0.53 0.00 -vt 0.20 0.53 0.00 -vt 0.21 0.56 0.00 -vt 0.21 0.54 0.00 -vt 0.22 0.54 0.00 -vt 0.22 0.58 0.00 -vt 0.23 0.58 0.00 -vt 0.48 0.06 0.00 -vt 0.47 0.06 0.00 -vt 0.39 0.62 0.00 -vt 0.44 0.63 0.00 -vt 0.40 0.64 0.00 -vt 0.38 0.63 0.00 -vt 0.38 0.65 0.00 -vt 0.37 0.63 0.00 -vt 0.38 0.66 0.00 -vt 0.40 0.67 0.00 -vt 0.44 0.65 0.00 -vt 0.44 0.67 0.00 -vt 0.54 0.66 0.00 -vt 0.54 0.68 0.00 -vt 0.54 0.63 0.00 -vt 0.54 0.60 0.00 -vt 0.54 0.54 0.00 -vt 0.44 0.54 0.00 -vt 0.45 0.52 0.00 -vt 0.40 0.54 0.00 -vt 0.40 0.53 0.00 -vt 0.38 0.54 0.00 -vt 0.39 0.49 0.00 -vt 0.38 0.59 0.00 -vt 0.37 0.59 0.00 -vt 0.40 0.59 0.00 -vt 0.44 0.59 0.00 -vt 0.12 0.42 0.00 -vt 0.10 0.50 0.00 -vt 0.14 0.43 0.00 -vt 0.16 0.43 0.00 -vt 0.18 0.43 0.00 -vt 0.16 0.51 0.00 -vt 0.14 0.51 0.00 -vt 0.15 0.54 0.00 -vt 0.13 0.54 0.00 -vt 0.13 0.50 0.00 -vt 0.12 0.54 0.00 -vt 0.09 0.53 0.00 -vt 0.09 0.55 0.00 -vt 0.05 0.54 0.00 -vt 0.05 0.52 0.00 -vt 0.04 0.52 0.00 -vt 0.06 0.49 0.00 -vt 0.01 0.53 0.00 -vt 0.04 0.49 0.00 -vt 0.07 0.41 0.00 -vt 0.05 0.41 0.00 -vt 0.12 0.56 0.00 -vt 0.13 0.56 0.00 -vt 0.14 0.56 0.00 -vt 0.54 0.51 0.00 -vt 0.65 0.01 0.00 -vt 0.65 0.02 0.00 -vt 0.52 0.01 0.00 -vt 0.52 0.02 0.00 -vt 0.62 0.03 0.00 -vt 0.66 0.02 0.00 -vt 0.62 0.02 0.00 -vt 0.22 0.56 0.00 -vt 0.20 0.49 0.00 -vt 0.21 0.49 0.00 -vt 0.23 0.54 0.00 -vt 0.24 0.56 0.00 -vt 0.24 0.57 0.00 -vt 0.75 0.10 0.00 -vt 0.88 0.11 0.00 -vt 0.75 0.09 0.00 -vt 0.88 0.10 0.00 -vt 0.88 0.08 0.00 -vt 0.75 0.08 0.00 -vt 0.88 0.06 0.00 -vt 0.75 0.05 0.00 -vt 0.88 0.03 0.00 -vt 0.75 0.03 0.00 -vt 0.88 0.02 0.00 -vt 0.75 0.01 0.00 -vt 0.88 0.01 0.00 -vt 0.75 0.00 0.00 -vt 0.94 0.09 0.00 -vt 0.94 0.08 0.00 -vt 0.94 0.07 0.00 -vt 0.94 0.06 0.00 -vt 0.94 0.04 0.00 -vt 0.94 0.03 0.00 -vt 0.99 0.07 0.00 -vt 0.99 0.06 0.00 -vt 0.99 0.05 0.00 -vt 0.73 0.03 0.00 -vt 0.73 0.05 0.00 -vt 0.73 0.08 0.00 -vt 0.73 0.09 0.00 -vt 0.73 0.10 0.00 -vt 0.73 0.02 0.00 -vt 0.70 0.05 0.00 -vt 0.70 0.07 0.00 -vt 0.68 0.05 0.00 -vt 0.68 0.04 0.00 -vt 0.70 0.03 0.00 -vt 0.73 0.01 0.00 -vt 0.70 0.02 0.00 -vt 0.67 0.05 0.00 -vt 0.67 0.06 0.00 -vt 0.70 0.08 0.00 -vt 0.70 0.09 0.00 -vt 0.68 0.03 0.00 -vt 0.67 0.07 0.00 -vt 0.48 0.03 0.00 -vt 0.64 0.44 0.00 -vt 0.40 0.52 0.00 -vt 0.01 0.32 0.00 -vt 0.49 0.03 0.00 -vt 0.48 0.01 0.00 -vt 0.66 0.01 0.00 -# 229 texture coords - -g P_51_Mustang_Left_Wing -f 1688/1032/1709 1689/1033/1709 1690/1033/1709 -f 1691/1034/1710 1692/1035/1711 1693/1036/1712 -f 1694/1037/1713 1693/1036/1712 1692/1035/1711 -f 1692/1035/1711 1695/1038/1714 1694/1037/1713 -f 1696/1039/1715 1694/1037/1713 1695/1038/1714 -f 1695/1038/1714 1697/1040/1716 1696/1039/1715 -f 1698/1041/1717 1696/1039/1715 1697/1040/1716 -f 1697/1040/1716 1699/1042/1718 1698/1041/1717 -f 1700/1043/1719 1698/1041/1717 1699/1042/1718 -f 1699/1042/1718 1701/1044/1720 1700/1043/1719 -f 1701/1044/1720 1699/1042/1718 1702/1045/1721 -f 1702/1045/1721 1703/1046/1721 1701/1044/1720 -f 1688/1047/1722 1703/1046/1721 1702/1045/1721 -f 1702/1045/1721 1704/1048/1723 1688/1047/1722 -f 1705/1049/1724 1688/1047/1722 1704/1048/1723 -f 1704/1048/1723 1706/1050/1725 1705/1049/1724 -f 1707/1051/1726 1705/1049/1724 1706/1050/1725 -f 1706/1050/1725 1708/1052/1727 1707/1051/1726 -f 1709/1053/1728 1707/1051/1726 1708/1052/1727 -f 1710/1054/1729 1711/1055/1730 1691/1034/1710 -f 1692/1035/1711 1691/1034/1710 1711/1055/1730 -f 1692/1035/1711 1711/1055/1730 1695/1038/1714 -f 1708/1052/1727 1695/1038/1714 1711/1055/1730 -f 1708/1052/1727 1706/1050/1725 1695/1038/1714 -f 1697/1040/1716 1695/1038/1714 1706/1050/1725 -f 1706/1050/1725 1704/1048/1723 1697/1040/1716 -f 1699/1042/1718 1697/1040/1716 1704/1048/1723 -f 1704/1048/1723 1702/1045/1721 1699/1042/1718 -f 1708/1052/1727 1711/1055/1730 1709/1053/1728 -f 1712/1056/1731 1709/1053/1728 1711/1055/1730 -f 1711/1055/1730 1710/1054/1729 1712/1056/1731 -f 1713/1057/1732 1712/1056/1731 1710/1054/1729 -f 1712/1056/1731 1713/1057/1732 1714/1058/1733 -f 1715/1059/1734 1714/1058/1733 1713/1057/1732 -f 1688/1047/1722 1705/1049/1724 1689/1060/1735 -f 1716/1061/1736 1689/1060/1735 1705/1049/1724 -f 1716/1061/1736 1705/1049/1724 1717/1062/1737 -f 1707/1051/1726 1717/1062/1737 1705/1049/1724 -f 1707/1051/1726 1709/1053/1728 1717/1062/1737 -f 1718/1063/1738 1717/1062/1737 1709/1053/1728 -f 1718/1063/1738 1709/1053/1728 1714/1058/1733 -f 1712/1056/1731 1714/1058/1733 1709/1053/1728 -f 1719/1064/1739 1720/1065/1740 1721/1066/1741 -f 1720/1065/1740 1719/1064/1739 1722/1067/1742 -f 1722/1067/1742 1723/1068/1743 1720/1065/1740 -f 1723/1068/1743 1722/1067/1742 1724/1069/1744 -f 1724/1069/1744 1725/1070/1745 1723/1068/1743 -f 1725/1070/1745 1724/1069/1744 1726/1071/1746 -f 1726/1071/1746 1690/1072/1747 1725/1070/1745 -f 1727/1073/1748 1725/1070/1745 1690/1072/1747 -f 1727/1073/1748 1728/1074/1743 1725/1070/1745 -f 1729/1075/1743 1725/1070/1745 1728/1074/1743 -f 1729/1075/1743 1728/1074/1743 1730/1076/1749 -f 1730/1076/1749 1731/1077/1740 1729/1075/1743 -f 1731/1077/1740 1730/1076/1749 1732/1078/1750 -f 1731/1077/1740 1732/1078/1750 1720/1065/1740 -f 1733/1079/1751 1720/1065/1740 1732/1078/1750 -f 1733/1079/1751 1721/1066/1741 1720/1065/1740 -f 1721/1066/1741 1733/1079/1751 1734/1080/1752 -f 1734/1080/1752 1733/1079/1751 1693/1081/1753 -f 1729/1075/1743 1723/1068/1743 1725/1070/1745 -f 1723/1068/1743 1729/1075/1743 1731/1077/1740 -f 1731/1077/1740 1720/1065/1740 1723/1068/1743 -f 1691/1082/1754 1693/1081/1753 1733/1079/1751 -f 1733/1079/1751 1732/1078/1750 1691/1082/1754 -f 1710/1083/1755 1691/1082/1754 1732/1078/1750 -f 1732/1078/1750 1735/1084/1756 1710/1083/1755 -f 1713/1085/1757 1710/1083/1755 1735/1084/1756 -f 1735/1084/1756 1736/1086/1758 1713/1085/1757 -f 1715/1087/1759 1713/1085/1757 1736/1086/1758 -f 1737/1088/1760 1730/1076/1749 1728/1074/1743 -f 1737/1088/1760 1736/1086/1758 1730/1076/1749 -f 1735/1084/1756 1730/1076/1749 1736/1086/1758 -f 1735/1084/1756 1732/1078/1750 1730/1076/1749 -f 1738/1089/1726 1739/1090/1725 1740/1091/1761 -f 1739/1090/1725 1738/1089/1726 1741/1092/1762 -f 1742/1091/1763 1741/1092/1762 1738/1089/1726 -f 1741/1092/1762 1742/1091/1763 1743/1093/1764 -f 1744/1094/1765 1743/1093/1764 1742/1091/1763 -f 1743/1093/1764 1744/1094/1765 1745/1095/1766 -f 1746/1096/1767 1745/1095/1766 1744/1094/1765 -f 1745/1095/1766 1746/1096/1767 1747/1093/1768 -f 1748/1094/1769 1747/1093/1768 1746/1096/1767 -f 1747/1093/1768 1748/1094/1769 1749/1092/1770 -f 1740/1091/1761 1749/1092/1770 1748/1094/1769 -f 1749/1092/1770 1740/1091/1761 1739/1090/1725 -f 1750/1091/1763 1751/1092/1762 1752/1089/1726 -f 1751/1092/1762 1750/1091/1763 1753/1093/1764 -f 1754/1094/1765 1753/1093/1764 1750/1091/1763 -f 1753/1093/1764 1754/1094/1765 1755/1095/1766 -f 1756/1096/1767 1755/1095/1766 1754/1094/1765 -f 1755/1095/1766 1756/1096/1767 1757/1093/1768 -f 1758/1094/1769 1757/1093/1768 1756/1096/1767 -f 1757/1093/1768 1758/1094/1769 1759/1092/1770 -f 1760/1091/1761 1759/1092/1770 1758/1094/1769 -f 1759/1092/1770 1760/1091/1761 1761/1090/1725 -f 1752/1089/1726 1761/1090/1725 1760/1091/1761 -f 1761/1090/1725 1752/1089/1726 1751/1092/1762 -f 1762/1094/1765 1763/1093/1764 1764/1091/1763 -f 1763/1093/1764 1762/1094/1765 1765/1095/1766 -f 1766/1096/1767 1765/1095/1766 1762/1094/1765 -f 1765/1095/1766 1766/1096/1767 1767/1093/1768 -f 1768/1094/1769 1767/1093/1768 1766/1096/1767 -f 1767/1093/1768 1768/1094/1769 1769/1092/1770 -f 1770/1091/1761 1769/1092/1770 1768/1094/1769 -f 1769/1092/1770 1770/1091/1761 1771/1090/1725 -f 1772/1089/1726 1771/1090/1725 1770/1091/1761 -f 1771/1090/1725 1772/1089/1726 1773/1092/1762 -f 1764/1091/1763 1773/1092/1762 1772/1089/1726 -f 1773/1092/1762 1764/1091/1763 1763/1093/1764 -f 1774/1097/1771 1722/1067/1742 1719/1064/1739 -f 1722/1067/1742 1774/1097/1771 1775/1098/1772 -f 1775/1098/1772 1724/1069/1744 1722/1067/1742 -f 1724/1069/1744 1775/1098/1772 1776/1099/1773 -f 1776/1099/1773 1726/1071/1746 1724/1069/1744 -f 1776/1099/1773 1777/1100/1774 1726/1071/1746 -f 1776/1099/1773 1778/1101/1775 1777/1100/1774 -f 1779/1102/1748 1777/1100/1774 1778/1101/1775 -f 1778/1101/1775 1780/1103/1776 1779/1102/1748 -f 1781/1104/1777 1779/1102/1748 1780/1103/1776 -f 1782/1105/1744 1775/1098/1772 1774/1097/1771 -f 1775/1098/1772 1782/1105/1744 1778/1101/1775 -f 1778/1101/1775 1776/1099/1773 1775/1098/1772 -f 1780/1103/1776 1778/1101/1775 1782/1105/1744 -f 1783/1106/1778 1779/1107/1778 1781/1106/1778 -f 1784/1107/1778 1779/1107/1778 1783/1106/1778 -f 1777/1108/1778 1779/1107/1778 1784/1107/1778 -f 1703/1108/1778 1777/1108/1778 1784/1107/1778 -f 1777/1108/1778 1703/1108/1778 1726/1109/1778 -f 1703/1108/1778 1688/1032/1778 1726/1109/1778 -f 1726/1109/1778 1688/1032/1778 1690/1033/1778 -f 1784/1110/1779 1701/1044/1720 1703/1046/1721 -f 1701/1044/1720 1784/1110/1779 1785/1111/1723 -f 1785/1111/1723 1700/1043/1719 1701/1044/1720 -f 1783/1112/1779 1785/1111/1723 1784/1110/1779 -f 1749/1113/1780 1739/1114/1780 1747/1115/1780 -f 1739/1114/1780 1743/1116/1780 1747/1115/1780 -f 1741/1117/1780 1743/1116/1780 1739/1114/1780 -f 1747/1115/1780 1743/1116/1780 1745/1118/1780 -f 1759/1113/1780 1761/1114/1780 1757/1115/1780 -f 1761/1114/1780 1753/1116/1780 1757/1115/1780 -f 1751/1117/1780 1753/1116/1780 1761/1114/1780 -f 1757/1115/1780 1753/1116/1780 1755/1118/1780 -f 1769/1113/1780 1771/1114/1780 1767/1115/1780 -f 1771/1114/1780 1763/1116/1780 1767/1115/1780 -f 1773/1117/1780 1763/1116/1780 1771/1114/1780 -f 1767/1115/1780 1763/1116/1780 1765/1118/1780 -f 1786/1119/1781 1787/1119/1781 1788/1119/1781 -f 1789/1119/1781 1788/1119/1781 1787/1119/1781 -f 1790/1120/1782 1791/1120/1782 1786/1120/1782 -f 1787/1120/1782 1786/1120/1782 1791/1120/1782 -f 1791/1120/1783 1790/1120/1783 1792/1121/1783 -f 1793/1121/1783 1792/1121/1783 1790/1120/1783 -f 1794/1121/1784 1795/1121/1784 1793/1122/1784 -f 1792/1122/1784 1793/1122/1784 1795/1121/1784 -f 1788/1123/1785 1794/1124/1785 1786/1125/1785 -f 1790/1126/1785 1794/1124/1785 1793/1127/1785 -f 1786/1125/1785 1794/1124/1785 1790/1126/1785 -f 1789/1123/1786 1787/1125/1786 1795/1124/1786 -f 1795/1124/1786 1787/1125/1786 1792/1127/1786 -f 1792/1127/1786 1787/1125/1786 1791/1126/1786 -f 1727/1128/1787 1690/1129/1787 1716/1130/1787 -f 1689/1131/1787 1716/1130/1787 1690/1129/1787 -f 1737/1132/1788 1728/1133/1789 1718/1134/1789 -f 1717/1135/1789 1718/1134/1789 1728/1133/1789 -f 1717/1135/1790 1728/1133/1790 1716/1130/1790 -f 1727/1128/1790 1716/1130/1790 1728/1133/1790 -f 1736/1136/1791 1737/1132/1791 1714/1137/1791 -f 1718/1134/1792 1714/1137/1792 1737/1132/1792 -f 1715/1138/1793 1736/1136/1793 1714/1137/1793 -f 1780/1139/1794 1782/1140/1794 1785/1128/1794 -f 1700/1141/1795 1785/1128/1795 1782/1140/1795 -f 1783/1129/1796 1781/1129/1796 1785/1128/1796 -f 1780/1139/1797 1785/1128/1797 1781/1129/1797 -f 1696/1142/1798 1698/1143/1798 1719/1135/1798 -f 1774/1144/1799 1719/1135/1799 1698/1143/1799 -f 1774/1144/1800 1698/1143/1800 1782/1140/1800 -f 1700/1141/1801 1782/1140/1801 1698/1143/1801 -f 1693/1138/1802 1694/1145/1802 1734/1146/1802 -f 1721/1137/1803 1694/1145/1803 1719/1135/1803 -f 1696/1142/1804 1719/1135/1804 1694/1145/1804 -f 1734/1146/1805 1694/1145/1805 1721/1137/1805 -f 1796/1147/1806 1797/1148/1806 1798/1148/1806 -f 1799/1149/1807 1800/1150/1808 1801/1151/1809 -f 1799/1149/1807 1801/1151/1809 1802/1152/1810 -f 1803/1153/1811 1802/1152/1810 1801/1151/1809 -f 1802/1152/1810 1803/1153/1811 1804/1154/1812 -f 1805/1153/1813 1804/1154/1812 1803/1153/1811 -f 1805/1153/1813 1803/1153/1811 1806/1155/1814 -f 1803/1153/1811 1801/1151/1809 1806/1155/1814 -f 1807/1156/1815 1806/1155/1814 1801/1151/1809 -f 1801/1151/1809 1808/1157/1816 1807/1156/1815 -f 1809/1158/1817 1807/1156/1815 1808/1157/1816 -f 1808/1157/1816 1810/1159/1818 1809/1158/1817 -f 1811/1160/1819 1809/1158/1817 1810/1159/1818 -f 1811/1160/1819 1810/1159/1818 1715/1059/1820 -f 1714/1058/1821 1715/1059/1820 1810/1159/1818 -f 1714/1058/1821 1810/1159/1818 1718/1063/1728 -f 1812/1161/1822 1718/1063/1728 1810/1159/1818 -f 1718/1063/1728 1812/1161/1822 1717/1062/1726 -f 1813/1162/1823 1717/1062/1726 1812/1161/1822 -f 1810/1159/1818 1808/1157/1816 1812/1161/1822 -f 1800/1150/1808 1812/1161/1822 1808/1157/1816 -f 1808/1157/1816 1801/1151/1809 1800/1150/1808 -f 1813/1162/1823 1814/1163/1824 1717/1062/1726 -f 1814/1163/1824 1813/1162/1823 1815/1164/1825 -f 1815/1164/1825 1816/1165/1826 1814/1163/1824 -f 1815/1164/1825 1817/1166/1827 1816/1165/1826 -f 1798/1167/1828 1816/1165/1826 1817/1166/1827 -f 1817/1166/1827 1818/1168/1829 1798/1167/1828 -f 1796/1169/1830 1798/1167/1828 1818/1168/1829 -f 1819/1168/1831 1796/1169/1830 1818/1168/1829 -f 1818/1168/1829 1820/1170/1832 1819/1168/1831 -f 1821/1171/1833 1819/1168/1831 1820/1170/1832 -f 1821/1171/1833 1820/1170/1832 1804/1154/1812 -f 1802/1152/1810 1804/1154/1812 1820/1170/1832 -f 1802/1152/1810 1820/1170/1832 1799/1149/1807 -f 1822/1172/1834 1799/1149/1807 1820/1170/1832 -f 1799/1149/1807 1822/1172/1834 1800/1150/1808 -f 1823/1173/1835 1800/1150/1808 1822/1172/1834 -f 1800/1150/1808 1823/1173/1835 1812/1161/1822 -f 1813/1162/1823 1812/1161/1822 1823/1173/1835 -f 1823/1173/1835 1815/1164/1825 1813/1162/1823 -f 1815/1164/1825 1823/1173/1835 1817/1166/1827 -f 1822/1172/1834 1817/1166/1827 1823/1173/1835 -f 1817/1166/1827 1822/1172/1834 1818/1168/1829 -f 1820/1170/1832 1818/1168/1829 1822/1172/1834 -f 1824/1174/1836 1825/1175/1837 1826/1176/1838 -f 1826/1176/1838 1737/1088/1740 1824/1174/1836 -f 1826/1176/1838 1827/1177/1839 1737/1088/1740 -f 1736/1086/1840 1737/1088/1740 1827/1177/1839 -f 1736/1086/1840 1827/1177/1839 1715/1087/1841 -f 1811/1178/1842 1715/1087/1841 1827/1177/1839 -f 1811/1178/1842 1827/1177/1839 1809/1179/1843 -f 1828/1180/1844 1809/1179/1843 1827/1177/1839 -f 1809/1179/1843 1828/1180/1844 1807/1181/1845 -f 1829/1182/1846 1807/1181/1845 1828/1180/1844 -f 1828/1180/1844 1830/1183/1847 1829/1182/1846 -f 1831/1184/1848 1829/1182/1846 1830/1183/1847 -f 1831/1184/1848 1830/1183/1847 1832/1185/1849 -f 1832/1185/1849 1833/1186/1850 1831/1184/1848 -f 1833/1186/1850 1832/1185/1849 1834/1187/1851 -f 1835/1188/1852 1834/1187/1851 1832/1185/1849 -f 1835/1188/1852 1797/1189/1850 1834/1187/1851 -f 1835/1188/1852 1836/1190/1853 1797/1189/1850 -f 1797/1189/1850 1796/1191/1854 1834/1187/1851 -f 1837/1192/1855 1797/1189/1850 1836/1190/1853 -f 1836/1190/1853 1838/1193/1777 1837/1192/1855 -f 1839/1194/1746 1837/1192/1855 1838/1193/1777 -f 1838/1193/1777 1727/1073/1856 1839/1194/1746 -f 1690/1072/1857 1839/1194/1746 1727/1073/1856 -f 1727/1073/1856 1838/1193/1777 1728/1074/1743 -f 1824/1174/1836 1728/1074/1743 1838/1193/1777 -f 1838/1193/1777 1836/1190/1853 1824/1174/1836 -f 1825/1175/1837 1824/1174/1836 1836/1190/1853 -f 1836/1190/1853 1835/1188/1852 1825/1175/1837 -f 1832/1185/1849 1825/1175/1837 1835/1188/1852 -f 1825/1175/1837 1832/1185/1849 1830/1183/1847 -f 1830/1183/1847 1826/1176/1838 1825/1175/1837 -f 1830/1183/1847 1828/1180/1844 1826/1176/1838 -f 1827/1177/1839 1826/1176/1838 1828/1180/1844 -f 1728/1074/1743 1824/1174/1836 1737/1088/1740 -f 1834/1187/1858 1796/1191/1858 1819/1187/1858 -f 1834/1187/1858 1819/1187/1858 1833/1186/1859 -f 1821/1186/1860 1833/1186/1859 1819/1187/1858 -f 1821/1186/1860 1804/1195/1861 1833/1186/1859 -f 1840/1195/1862 1833/1186/1859 1804/1195/1861 -f 1840/1195/1862 1804/1195/1861 1841/1196/1863 -f 1805/1196/1864 1841/1196/1863 1804/1195/1861 -f 1841/1196/1863 1805/1196/1864 1806/1197/1865 -f 1841/1196/1863 1806/1197/1865 1829/1182/1866 -f 1807/1181/1867 1829/1182/1866 1806/1197/1865 -f 1842/1198/1868 1814/1163/1824 1816/1165/1826 -f 1814/1163/1824 1842/1198/1868 1716/1061/1824 -f 1716/1061/1824 1717/1062/1726 1814/1163/1824 -f 1689/1060/1869 1716/1061/1824 1842/1198/1868 -f 1840/1195/1870 1831/1184/1848 1833/1186/1850 -f 1831/1184/1848 1840/1195/1870 1829/1182/1846 -f 1841/1196/1871 1829/1182/1846 1840/1195/1870 -f 1843/1127/1872 1844/1125/1872 1845/1124/1872 -f 1846/1123/1872 1845/1124/1872 1844/1125/1872 -f 1847/1123/1873 1848/1125/1873 1849/1124/1873 -f 1850/1127/1873 1849/1124/1873 1848/1125/1873 -f 1851/1119/1874 1852/1119/1874 1853/1119/1874 -f 1854/1119/1874 1853/1119/1874 1852/1119/1874 -f 1855/1199/1875 1856/1200/1875 1851/1201/1875 -f 1852/1202/1875 1851/1201/1875 1856/1200/1875 -f 1857/1121/1876 1858/1121/1876 1855/1122/1876 -f 1856/1122/1876 1855/1122/1876 1858/1121/1876 -f 1853/1123/1872 1857/1124/1872 1851/1125/1872 -f 1855/1127/1872 1851/1125/1872 1857/1124/1872 -f 1854/1123/1873 1852/1125/1873 1858/1124/1873 -f 1856/1127/1873 1858/1124/1873 1852/1125/1873 -f 1859/1119/1877 1860/1119/1877 1861/1119/1877 -f 1862/1119/1877 1861/1119/1877 1860/1119/1877 -f 1863/1199/1875 1864/1200/1875 1859/1201/1875 -f 1860/1202/1875 1859/1201/1875 1864/1200/1875 -f 1865/1121/1876 1866/1121/1876 1863/1122/1876 -f 1864/1122/1876 1863/1122/1876 1866/1121/1876 -f 1861/1123/1872 1865/1124/1872 1859/1125/1872 -f 1863/1127/1872 1859/1125/1872 1865/1124/1872 -f 1862/1123/1873 1860/1125/1873 1866/1124/1873 -f 1864/1127/1873 1866/1124/1873 1860/1125/1873 -f 1837/1200/1878 1839/1203/1878 1797/1204/1878 -f 1690/1033/1879 1689/1033/1879 1839/1203/1879 -f 1842/1205/1880 1816/1200/1880 1689/1033/1880 -f 1689/1033/1881 1816/1200/1881 1839/1203/1881 -f 1839/1203/1882 1816/1200/1882 1797/1204/1882 -f 1816/1200/1883 1798/1204/1883 1797/1204/1883 -f 1718/1206/1884 1717/1143/1884 1714/1145/1884 -f 1716/1139/1885 1689/1207/1885 1717/1143/1885 -f 1717/1143/1886 1689/1207/1886 1714/1145/1886 -f 1690/1208/1887 1727/1130/1887 1689/1207/1887 -f 1689/1207/1888 1727/1130/1888 1714/1145/1888 -f 1728/1209/1889 1737/1210/1889 1727/1130/1889 -f 1727/1130/1890 1737/1210/1890 1714/1145/1890 -f 1737/1210/1891 1736/1211/1891 1714/1145/1891 -f 1714/1145/1892 1736/1211/1892 1715/1138/1892 -f 1844/1119/1874 1848/1119/1874 1846/1119/1874 -f 1847/1119/1874 1846/1119/1874 1848/1119/1874 -f 1843/1199/1875 1850/1200/1875 1844/1201/1875 -f 1848/1202/1875 1844/1201/1875 1850/1200/1875 -f 1845/1121/1893 1849/1121/1893 1843/1122/1893 -f 1850/1122/1893 1843/1122/1893 1849/1121/1893 -f 1867/1212/1894 1868/1213/1894 1869/1214/1895 -f 1868/1213/1894 1867/1212/1894 1870/1215/1896 -f 1871/1214/1896 1870/1215/1896 1867/1212/1894 -f 1870/1215/1896 1871/1214/1896 1872/1216/1897 -f 1873/1217/1898 1872/1216/1897 1871/1214/1896 -f 1872/1216/1897 1873/1217/1898 1874/1218/1899 -f 1875/1219/1900 1874/1218/1899 1873/1217/1898 -f 1874/1218/1899 1875/1219/1900 1876/1220/1901 -f 1877/1221/1902 1876/1220/1901 1875/1219/1900 -f 1876/1220/1901 1877/1221/1902 1878/1222/1903 -f 1879/1223/1904 1878/1222/1903 1877/1221/1902 -f 1878/1222/1903 1879/1223/1904 1880/1224/1905 -f 1881/1225/1905 1880/1224/1905 1879/1223/1904 -f 1880/1224/1905 1881/1225/1905 1882/1222/1906 -f 1883/1223/1906 1882/1222/1906 1881/1225/1905 -f 1882/1222/1906 1883/1223/1906 1884/1220/1907 -f 1885/1221/1908 1884/1220/1907 1883/1223/1906 -f 1884/1220/1907 1885/1221/1908 1886/1218/1909 -f 1887/1219/1910 1886/1218/1909 1885/1221/1908 -f 1886/1218/1909 1887/1219/1910 1888/1216/1911 -f 1889/1217/1912 1888/1216/1911 1887/1219/1910 -f 1888/1216/1911 1889/1217/1912 1890/1215/1913 -f 1869/1214/1895 1890/1215/1913 1889/1217/1912 -f 1890/1215/1913 1869/1214/1895 1868/1213/1894 -f 1868/1213/1914 1891/1226/1915 1890/1215/1916 -f 1892/1227/1917 1890/1215/1916 1891/1226/1915 -f 1890/1215/1916 1892/1227/1917 1888/1216/1918 -f 1893/1228/1919 1888/1216/1918 1892/1227/1917 -f 1888/1216/1918 1893/1228/1919 1886/1218/1920 -f 1894/1229/1921 1886/1218/1920 1893/1228/1919 -f 1886/1218/1920 1894/1229/1921 1884/1220/1922 -f 1895/1230/1923 1884/1220/1922 1894/1229/1921 -f 1884/1220/1922 1895/1230/1923 1882/1222/1924 -f 1896/1231/1925 1882/1222/1924 1895/1230/1923 -f 1882/1222/1924 1896/1231/1925 1880/1224/1926 -f 1897/1231/1927 1880/1224/1926 1896/1231/1925 -f 1880/1224/1926 1897/1231/1927 1878/1222/1928 -f 1898/1231/1929 1878/1222/1928 1897/1231/1927 -f 1878/1222/1928 1898/1231/1929 1876/1220/1930 -f 1899/1230/1931 1876/1220/1930 1898/1231/1929 -f 1876/1220/1930 1899/1230/1931 1874/1218/1932 -f 1900/1229/1933 1874/1218/1932 1899/1230/1931 -f 1891/1226/1915 1901/1232/1934 1892/1227/1917 -f 1902/1232/1935 1892/1227/1917 1901/1232/1934 -f 1892/1227/1917 1902/1232/1935 1893/1228/1919 -f 1874/1218/1932 1900/1229/1933 1872/1216/1936 -f 1903/1228/1937 1872/1216/1936 1900/1229/1933 -f 1872/1216/1936 1903/1228/1937 1870/1215/1938 -f 1904/1227/1939 1870/1215/1938 1903/1228/1937 -f 1870/1215/1938 1904/1227/1939 1868/1213/1914 -f 1891/1226/1915 1868/1213/1914 1904/1227/1939 -f 1904/1227/1939 1905/1232/1940 1891/1226/1915 -f 1901/1232/1934 1891/1226/1915 1905/1232/1940 -f 1901/1232/1934 1905/1232/1940 1906/1233/1941 -f 1902/1232/1935 1901/1232/1934 1906/1233/1941 -f 1907/1233/1942 1902/1232/1935 1906/1233/1941 -f 1907/1233/1942 1893/1228/1919 1902/1232/1935 -f 1893/1228/1919 1907/1233/1942 1894/1229/1921 -f 1908/1233/1943 1894/1229/1921 1907/1233/1942 -f 1894/1229/1921 1908/1233/1943 1895/1230/1923 -f 1909/1234/1944 1895/1230/1923 1908/1233/1943 -f 1895/1230/1923 1909/1234/1944 1896/1231/1925 -f 1910/1234/1945 1896/1231/1925 1909/1234/1944 -f 1896/1231/1925 1910/1234/1945 1897/1231/1927 -f 1911/1234/1946 1897/1231/1927 1910/1234/1945 -f 1897/1231/1927 1911/1234/1946 1898/1231/1929 -f 1912/1234/1947 1898/1231/1929 1911/1234/1946 -f 1898/1231/1929 1912/1234/1947 1899/1230/1931 -f 1913/1234/1948 1899/1230/1931 1912/1234/1947 -f 1899/1230/1931 1913/1234/1948 1900/1229/1933 -f 1914/1233/1949 1900/1229/1933 1913/1234/1948 -f 1900/1229/1933 1914/1233/1949 1903/1228/1937 -f 1915/1233/1950 1903/1228/1937 1914/1233/1949 -f 1903/1228/1937 1915/1233/1950 1904/1227/1939 -f 1905/1232/1940 1904/1227/1939 1915/1233/1950 -f 1905/1232/1940 1915/1233/1950 1906/1233/1941 -f 1915/1233/1950 1914/1233/1949 1906/1233/1941 -f 1914/1233/1949 1913/1234/1948 1906/1233/1941 -f 1913/1234/1948 1912/1234/1947 1906/1233/1941 -f 1912/1234/1947 1911/1234/1946 1906/1233/1941 -f 1911/1234/1946 1910/1234/1945 1906/1233/1941 -f 1910/1234/1945 1909/1234/1944 1906/1233/1941 -f 1909/1234/1944 1908/1233/1943 1906/1233/1941 -f 1908/1233/1943 1907/1233/1942 1906/1233/1941 -f 1885/1221/1951 1916/1235/1952 1887/1219/1953 -f 1917/1236/1954 1887/1219/1953 1916/1235/1952 -f 1887/1219/1953 1917/1236/1954 1889/1217/1955 -f 1918/1237/1956 1889/1217/1955 1917/1236/1954 -f 1889/1217/1955 1918/1237/1956 1869/1214/1957 -f 1919/1238/1958 1869/1214/1957 1918/1237/1956 -f 1869/1214/1957 1919/1238/1958 1867/1212/1959 -f 1920/1239/1960 1867/1212/1959 1919/1238/1958 -f 1867/1212/1959 1920/1239/1960 1871/1214/1961 -f 1921/1238/1962 1871/1214/1961 1920/1239/1960 -f 1871/1214/1961 1921/1238/1962 1873/1217/1963 -f 1922/1237/1964 1873/1217/1963 1921/1238/1962 -f 1873/1217/1963 1922/1237/1964 1875/1219/1965 -f 1923/1236/1966 1875/1219/1965 1922/1237/1964 -f 1875/1219/1965 1923/1236/1966 1877/1221/1967 -f 1924/1235/1968 1877/1221/1967 1923/1236/1966 -f 1877/1221/1967 1924/1235/1968 1879/1223/1969 -f 1925/1240/1970 1879/1223/1969 1924/1235/1968 -f 1917/1236/1954 1926/1241/1971 1918/1237/1956 -f 1918/1237/1956 1927/1242/1972 1919/1238/1958 -f 1927/1242/1972 1918/1237/1956 1926/1241/1971 -f 1926/1241/1971 1928/1243/1973 1927/1242/1972 -f 1928/1243/1973 1926/1241/1971 1929/1244/1974 -f 1930/1245/1975 1929/1244/1974 1926/1241/1971 -f 1926/1241/1971 1917/1236/1954 1930/1245/1975 -f 1916/1235/1952 1930/1245/1975 1917/1236/1954 -f 1879/1223/1969 1925/1240/1970 1881/1225/1976 -f 1931/1246/1977 1881/1225/1976 1925/1240/1970 -f 1881/1225/1976 1931/1246/1977 1883/1223/1978 -f 1932/1240/1979 1883/1223/1978 1931/1246/1977 -f 1883/1223/1978 1932/1240/1979 1885/1221/1951 -f 1916/1235/1952 1885/1221/1951 1932/1240/1979 -f 1932/1240/1979 1933/1247/1980 1916/1235/1952 -f 1930/1245/1975 1916/1235/1952 1933/1247/1980 -f 1933/1247/1980 1934/1244/1981 1930/1245/1975 -f 1929/1244/1974 1930/1245/1975 1934/1244/1981 -f 1934/1244/1981 1935/1248/1982 1929/1244/1974 -f 1929/1244/1974 1935/1248/1982 1928/1243/1973 -f 1928/1243/1973 1935/1248/1982 1936/1249/1983 -f 1936/1249/1983 1927/1242/1972 1928/1243/1973 -f 1927/1242/1972 1936/1249/1983 1937/1250/1984 -f 1937/1250/1984 1919/1238/1958 1927/1242/1972 -f 1919/1238/1958 1937/1250/1984 1920/1239/1960 -f 1938/1251/1985 1920/1239/1960 1937/1250/1984 -f 1920/1239/1960 1938/1251/1985 1921/1238/1962 -f 1939/1250/1986 1921/1238/1962 1938/1251/1985 -f 1921/1238/1962 1939/1250/1986 1922/1237/1964 -f 1940/1242/1987 1922/1237/1964 1939/1250/1986 -f 1922/1237/1964 1940/1242/1987 1923/1236/1966 -f 1941/1241/1988 1923/1236/1966 1940/1242/1987 -f 1923/1236/1966 1941/1241/1988 1924/1235/1968 -f 1942/1245/1989 1924/1235/1968 1941/1241/1988 -f 1924/1235/1968 1942/1245/1989 1925/1240/1970 -f 1943/1247/1990 1925/1240/1970 1942/1245/1989 -f 1925/1240/1970 1943/1247/1990 1931/1246/1977 -f 1944/1247/1991 1931/1246/1977 1943/1247/1990 -f 1931/1246/1977 1944/1247/1991 1932/1240/1979 -f 1933/1247/1980 1932/1240/1979 1944/1247/1991 -f 1944/1247/1991 1945/1252/1992 1933/1247/1980 -f 1934/1244/1981 1933/1247/1980 1945/1252/1992 -f 1945/1252/1992 1935/1248/1982 1934/1244/1981 -f 1946/1244/1993 1935/1248/1982 1945/1252/1992 -f 1945/1252/1992 1944/1247/1991 1946/1244/1993 -f 1943/1247/1990 1946/1244/1993 1944/1247/1991 -f 1947/1244/1994 1935/1248/1982 1946/1244/1993 -f 1946/1244/1993 1943/1247/1990 1947/1244/1994 -f 1942/1245/1989 1947/1244/1994 1943/1247/1990 -f 1947/1244/1994 1942/1245/1989 1948/1243/1995 -f 1941/1241/1988 1948/1243/1995 1942/1245/1989 -f 1948/1243/1995 1941/1241/1988 1949/1249/1996 -f 1940/1242/1987 1949/1249/1996 1941/1241/1988 -f 1949/1249/1996 1940/1242/1987 1950/1253/1997 -f 1939/1250/1986 1950/1253/1997 1940/1242/1987 -f 1950/1253/1997 1939/1250/1986 1951/1253/1998 -f 1938/1251/1985 1951/1253/1998 1939/1250/1986 -f 1951/1253/1998 1938/1251/1985 1952/1253/1999 -f 1937/1250/1984 1952/1253/1999 1938/1251/1985 -f 1952/1253/1999 1937/1250/1984 1936/1249/1983 -f 1936/1249/1983 1935/1248/1982 1952/1253/1999 -f 1952/1253/1999 1935/1248/1982 1951/1253/1998 -f 1951/1253/1998 1935/1248/1982 1950/1253/1997 -f 1950/1253/1997 1935/1248/1982 1949/1249/1996 -f 1949/1249/1996 1935/1248/1982 1948/1243/1995 -f 1948/1243/1995 1935/1248/1982 1947/1244/1994 -f 1689/1106/2000 1953/1107/2000 1690/1254/2000 -f 1796/1169/1719 1953/1255/2001 1798/1256/1719 -f 1689/1060/2002 1798/1256/1719 1953/1255/2001 -f 1953/1257/1856 1796/1191/2003 1690/1072/1856 -f 1797/1189/2004 1690/1072/1856 1796/1191/2003 -f 1798/1258/2005 1797/1258/2005 1796/1254/2005 -f 1690/1204/2006 1797/1259/2006 1689/1260/2006 -f 1798/1259/2007 1689/1260/2007 1797/1259/2007 -# 500 faces - -# -# object P_51_Mustang_Left_Landing_Wheel -# - -v 19.25 -7.41 18.44 -v 19.26 -7.41 18.30 -v 20.79 -7.36 18.42 -v 20.79 -7.36 18.28 -v 20.30 -0.82 17.29 -v 19.89 -9.61 17.84 -v 20.06 -0.82 17.28 -v 20.05 -9.61 18.01 -v 20.47 -0.82 17.47 -v 20.04 -9.61 18.26 -v 20.45 -0.82 17.71 -v 19.86 -9.61 18.43 -v 20.27 -0.82 17.88 -v 19.61 -9.61 18.42 -v 20.03 -0.82 17.87 -v 19.45 -9.60 18.24 -v 19.87 -0.82 17.69 -v 19.46 -9.61 18.00 -v 19.88 -0.82 17.45 -v 19.64 -9.61 17.83 -v 18.91 -13.24 18.10 -v 18.69 -13.22 18.10 -v 19.03 -10.60 17.93 -v 18.70 -10.57 17.94 -v 19.21 -9.83 17.89 -v 19.03 -9.31 17.85 -v 19.56 -9.60 17.87 -v 19.59 -9.04 17.83 -v 19.58 -9.04 18.33 -v 19.02 -9.31 18.35 -v 19.56 -9.59 18.36 -v 19.20 -9.83 18.38 -v 18.70 -10.57 18.43 -v 19.03 -10.60 18.43 -v 18.59 -13.22 18.60 -v 18.90 -13.24 18.60 -v 23.32 -9.94 15.18 -v 21.57 -3.85 17.12 -v 23.08 -10.00 18.57 -v 20.86 -1.44 18.08 -v 20.94 -1.41 16.97 -v 20.73 -1.48 16.97 -v 21.36 -3.92 17.12 -v 20.65 -1.50 18.08 -v 22.86 -10.07 18.58 -v 23.11 -10.00 15.18 -v 20.80 -7.18 18.41 -v 20.80 -7.18 18.27 -v 19.27 -7.10 18.42 -v 19.27 -7.10 18.28 -v 20.80 -7.36 17.54 -v 19.27 -7.42 17.55 -v 20.81 -7.18 17.52 -v 19.28 -7.10 17.53 -v 19.28 -7.10 17.68 -v 19.26 -7.41 17.70 -v 20.81 -7.18 17.67 -v 20.80 -7.36 17.68 -v 18.93 -10.59 17.88 -v 18.90 -10.98 16.68 -v 18.93 -10.87 19.15 -v 18.91 -11.75 20.15 -v 18.87 -12.99 20.61 -v 18.74 -15.33 17.13 -v 18.80 -13.21 15.67 -v 18.76 -14.45 16.14 -v 18.85 -11.94 15.88 -v 19.50 -14.55 15.96 -v 19.55 -13.22 15.47 -v 19.60 -11.86 15.68 -v 19.65 -10.83 16.55 -v 19.68 -10.41 17.84 -v 19.68 -10.71 19.20 -v 19.66 -11.65 20.27 -v 19.62 -12.98 20.77 -v 18.82 -14.26 20.41 -v 19.57 -14.34 20.55 -v 18.78 -15.22 19.60 -v 19.52 -15.37 19.68 -v 20.42 -10.87 19.10 -v 20.40 -11.74 20.10 -v 20.36 -12.98 20.56 -v 20.31 -14.25 20.36 -v 20.27 -15.21 19.55 -v 19.49 -15.79 18.40 -v 20.24 -15.60 18.35 -v 19.48 -15.49 17.04 -v 20.23 -15.32 17.08 -v 18.75 -15.61 18.40 -v 20.25 -14.44 16.08 -v 20.29 -13.21 15.62 -v 20.34 -11.94 15.82 -v 20.39 -10.98 16.63 -v 20.42 -10.59 17.83 -# 94 vertices - -vn 0.04 -1.00 0.00 -vn 0.41 -0.08 -0.91 -vn -0.34 -0.04 -0.94 -vn 0.94 -0.07 -0.33 -vn 0.93 -0.07 -0.35 -vn 0.90 -0.02 0.44 -vn 0.91 -0.02 0.40 -vn 0.34 0.04 0.94 -vn 0.37 0.04 0.93 -vn -0.41 0.08 0.91 -vn -0.93 0.07 0.35 -vn -0.94 0.07 0.33 -vn -0.91 0.02 -0.40 -vn -0.90 0.02 -0.44 -vn -0.37 -0.04 -0.93 -vn -0.01 -0.06 -1.00 -vn 0.01 0.06 1.00 -vn -0.01 -1.00 0.00 -vn 0.01 1.00 -0.00 -vn 0.96 0.25 0.07 -vn -0.96 -0.25 -0.07 -vn 1.00 -0.05 0.01 -vn 0.05 1.00 -0.00 -vn -1.00 0.05 -0.01 -vn -0.43 0.90 -0.01 -vn -0.97 0.25 -0.01 -vn -1.00 0.04 -0.01 -vn -1.00 0.03 -0.04 -vn -0.98 -0.00 -0.18 -vn -0.98 -0.01 -0.20 -vn -0.06 -1.00 -0.01 -vn -0.08 -1.00 -0.00 -vn -0.07 -1.00 -0.01 -vn -0.09 -1.00 0.00 -vn 0.98 -0.22 0.01 -vn 0.55 -0.83 0.01 -vn -0.29 0.96 -0.00 -vn -0.01 0.05 1.00 -vn 0.29 -0.96 0.00 -vn -0.09 0.28 -0.96 -vn 0.02 -0.06 -1.00 -vn -1.00 0.04 0.01 -vn -0.26 -0.55 -0.79 -vn -0.27 -0.10 -0.96 -vn -0.03 -0.57 -0.82 -vn -0.03 -0.10 -0.99 -vn -0.27 0.40 -0.87 -vn -0.03 0.42 -0.91 -vn -0.26 0.80 -0.53 -vn -0.02 0.83 -0.56 -vn -0.24 0.97 -0.04 -vn -0.00 1.00 -0.05 -vn -0.22 0.87 0.45 -vn 0.01 0.89 0.45 -vn -0.20 0.55 0.81 -vn 0.03 0.57 0.82 -vn -0.20 0.10 0.97 -vn 0.03 0.10 0.99 -vn -0.21 -0.40 0.89 -vn 0.03 -0.42 0.91 -vn -0.22 -0.81 0.55 -vn 0.02 -0.83 0.56 -vn 0.25 0.87 0.44 -vn 0.26 0.55 0.79 -vn 0.27 0.10 0.96 -vn 0.27 -0.40 0.87 -vn 0.26 -0.80 0.53 -vn 0.00 -1.00 0.05 -vn 0.24 -0.97 0.04 -vn -0.01 -0.89 -0.45 -vn 0.22 -0.87 -0.45 -vn -0.24 -0.97 0.05 -vn -0.25 -0.87 -0.44 -vn 0.20 -0.55 -0.81 -vn 0.20 -0.10 -0.97 -vn 0.21 0.40 -0.89 -vn 0.22 0.81 -0.55 -vn 0.24 0.97 -0.05 -vn 1.00 -0.04 -0.01 -# 79 vertex normals - -vt 0.07 0.76 0.00 -vt 0.09 0.92 0.00 -vt 0.30 0.92 0.00 -vt 0.30 0.93 0.00 -vt 0.09 0.93 0.00 -vt 0.30 0.94 0.00 -vt 0.09 0.94 0.00 -vt 0.44 0.70 0.00 -vt 0.44 0.73 0.00 -vt 0.44 0.74 0.00 -vt 0.43 0.74 0.00 -vt 0.43 0.75 0.00 -vt 0.31 0.99 0.00 -vt 0.31 0.98 0.00 -vt 0.32 1.00 0.00 -vt 0.33 0.99 0.00 -vt 0.33 0.98 0.00 -vt 0.33 1.00 0.00 -vt 0.32 0.98 0.00 -vt 0.66 0.03 0.00 -vt 0.53 0.08 0.00 -vt 0.67 0.11 0.00 -vt 0.47 0.11 0.00 -vt 0.47 0.08 0.00 -vt 0.61 0.03 0.00 -vt 0.66 0.00 0.00 -vt 0.47 0.00 0.00 -vt 0.08 0.75 0.00 -vt 0.09 0.75 0.00 -vt 0.07 0.75 0.00 -vt 0.03 0.85 0.00 -vt 0.04 0.85 0.00 -vt 0.03 0.84 0.00 -vt 0.04 0.84 0.00 -vt 0.08 0.76 0.00 -vt 0.09 0.74 0.00 -vt 0.42 0.74 0.00 -vt 0.42 0.73 0.00 -vt 0.43 0.73 0.00 -vt 0.42 0.72 0.00 -vt 0.43 0.72 0.00 -vt 0.46 0.73 0.00 -vt 0.46 0.72 0.00 -vt 0.45 0.73 0.00 -vt 0.05 0.68 0.00 -vt 0.03 0.68 0.00 -vt 0.03 0.67 0.00 -vt 0.16 0.67 0.00 -vt 0.08 0.68 0.00 -vt 0.08 0.67 0.00 -vt 0.16 0.66 0.00 -vt 0.07 0.66 0.00 -vt 0.07 0.67 0.00 -vt 0.03 0.66 0.00 -vt 0.82 0.92 0.00 -vt 0.80 0.92 0.00 -vt 0.84 0.93 0.00 -vt 0.85 0.94 0.00 -vt 0.85 0.96 0.00 -vt 0.78 0.98 0.00 -vt 0.77 0.94 0.00 -vt 0.77 0.96 0.00 -vt 0.78 0.93 0.00 -vt 0.31 0.77 0.00 -vt 0.29 0.77 0.00 -vt 0.31 0.76 0.00 -vt 0.29 0.76 0.00 -vt 0.32 0.77 0.00 -vt 0.33 0.76 0.00 -vt 0.34 0.77 0.00 -vt 0.34 0.76 0.00 -vt 0.36 0.77 0.00 -vt 0.36 0.76 0.00 -vt 0.38 0.77 0.00 -vt 0.38 0.76 0.00 -vt 0.39 0.77 0.00 -vt 0.39 0.76 0.00 -vt 0.36 0.75 0.00 -vt 0.38 0.75 0.00 -vt 0.39 0.75 0.00 -vt 0.34 0.75 0.00 -vt 0.32 0.75 0.00 -vt 0.31 0.75 0.00 -vt 0.29 0.75 0.00 -vt 0.84 0.98 0.00 -vt 0.82 0.99 0.00 -vt 0.80 0.99 0.00 -# 87 texture coords - -g P_51_Mustang_Left_Landing_Wheel -f 1954/1261/2008 1955/1261/2008 1956/1261/2008 -f 1957/1261/2008 1956/1261/2008 1955/1261/2008 -f 1958/1262/2009 1959/1263/2009 1960/1262/2010 -f 1959/1263/2009 1958/1262/2009 1961/1264/2011 -f 1962/1265/2012 1961/1264/2011 1958/1262/2009 -f 1961/1264/2011 1962/1265/2012 1963/1266/2013 -f 1964/1267/2014 1963/1266/2013 1962/1265/2012 -f 1963/1266/2013 1964/1267/2014 1965/1266/2015 -f 1966/1267/2016 1965/1266/2015 1964/1267/2014 -f 1965/1266/2015 1966/1267/2016 1967/1266/2017 -f 1968/1267/2017 1967/1266/2017 1966/1267/2016 -f 1967/1266/2017 1968/1267/2017 1969/1266/2018 -f 1970/1267/2019 1969/1266/2018 1968/1267/2017 -f 1969/1266/2018 1970/1267/2019 1971/1264/2020 -f 1972/1265/2021 1971/1264/2020 1970/1267/2019 -f 1971/1264/2020 1972/1265/2021 1973/1263/2022 -f 1960/1262/2010 1973/1263/2022 1972/1265/2021 -f 1973/1263/2022 1960/1262/2010 1959/1263/2009 -f 1974/1268/2023 1975/1268/2023 1976/1269/2023 -f 1975/1268/2023 1977/1269/2023 1976/1269/2023 -f 1976/1269/2023 1977/1269/2023 1978/1270/2023 -f 1977/1269/2023 1979/1270/2023 1978/1270/2023 -f 1978/1270/2023 1979/1270/2023 1980/1271/2023 -f 1979/1270/2023 1981/1272/2023 1980/1271/2023 -f 1982/1272/2024 1983/1270/2024 1984/1271/2024 -f 1983/1270/2024 1985/1270/2024 1984/1271/2024 -f 1986/1269/2024 1985/1270/2024 1983/1270/2024 -f 1987/1269/2024 1985/1270/2024 1986/1269/2024 -f 1988/1268/2024 1987/1269/2024 1986/1269/2024 -f 1989/1268/2024 1987/1269/2024 1988/1268/2024 -f 1967/1273/2025 1969/1274/2025 1965/1275/2025 -f 1969/1274/2025 1961/1276/2025 1965/1275/2025 -f 1973/1277/2025 1961/1276/2025 1969/1274/2025 -f 1959/1277/2025 1961/1276/2025 1973/1277/2025 -f 1965/1275/2025 1961/1276/2025 1963/1278/2025 -f 1958/1279/2026 1960/1277/2026 1962/1274/2026 -f 1960/1277/2026 1966/1275/2026 1962/1274/2026 -f 1970/1276/2026 1966/1275/2026 1960/1277/2026 -f 1968/1278/2026 1966/1275/2026 1970/1276/2026 -f 1972/1277/2026 1970/1276/2026 1960/1277/2026 -f 1990/1280/2027 1991/1281/2027 1992/1282/2027 -f 1992/1282/2027 1991/1281/2027 1993/1283/2027 -f 1991/1281/2027 1994/1284/2027 1993/1283/2027 -f 1995/1280/2028 1996/1285/2028 1997/1286/2028 -f 1996/1285/2028 1998/1287/2028 1997/1286/2028 -f 1999/1284/2028 1998/1287/2028 1996/1285/2028 -f 1956/1288/2029 1957/1288/2029 2000/1288/2029 -f 2001/1288/2029 2000/1288/2029 1957/1288/2029 -f 2000/1288/2030 2001/1288/2030 2002/1289/2030 -f 2003/1289/2030 2002/1289/2030 2001/1288/2030 -f 2002/1290/2031 2003/1290/2031 1954/1290/2031 -f 1955/1290/2031 1954/1290/2031 2003/1290/2031 -f 2004/1291/2023 2005/1292/2023 2006/1293/2023 -f 2007/1294/2023 2006/1293/2023 2005/1292/2023 -f 2008/1293/2024 2009/1291/2024 2010/1294/2024 -f 2011/1292/2024 2010/1294/2024 2009/1291/2024 -f 2009/1290/2008 2005/1261/2008 2011/1288/2008 -f 2004/1295/2008 2011/1288/2008 2005/1261/2008 -f 2011/1289/2029 2004/1289/2029 2010/1289/2029 -f 2006/1289/2029 2010/1289/2029 2004/1289/2029 -f 2010/1288/2030 2006/1288/2030 2008/1288/2030 -f 2007/1288/2030 2008/1288/2030 2006/1288/2030 -f 2008/1296/2031 2007/1296/2031 2009/1296/2031 -f 2005/1296/2031 2009/1296/2031 2007/1296/2031 -f 1982/1297/2032 1981/1298/2032 1983/1271/2032 -f 1979/1299/2032 1983/1271/2032 1981/1298/2032 -f 1983/1298/2033 1979/1300/2033 1986/1299/2033 -f 1977/1301/2033 1986/1299/2033 1979/1300/2033 -f 1986/1299/2034 1977/1301/2035 1988/1302/2036 -f 1975/1303/2037 1988/1302/2036 1977/1301/2035 -f 1988/1299/2038 1975/1299/2039 1989/1271/2040 -f 1974/1271/2041 1989/1271/2040 1975/1299/2039 -f 1989/1298/2029 1974/1298/2029 1987/1304/2029 -f 1976/1304/2029 1987/1304/2029 1974/1298/2029 -f 1987/1304/2042 1976/1304/2042 1985/1302/2042 -f 1978/1302/2042 1985/1302/2042 1976/1304/2042 -f 1985/1297/2043 1978/1271/2043 1984/1297/2043 -f 1980/1271/2043 1984/1297/2043 1978/1271/2043 -f 1994/1305/2044 1995/1305/2044 1993/1306/2044 -f 1997/1306/2044 1993/1306/2044 1995/1305/2044 -f 1998/1307/2045 1992/1307/2045 1997/1308/2045 -f 1993/1308/2045 1997/1308/2045 1992/1307/2045 -f 1999/1306/2046 1990/1307/2046 1998/1309/2046 -f 1992/1310/2046 1998/1309/2046 1990/1307/2046 -f 1990/1311/2047 1999/1308/2047 1991/1312/2047 -f 1996/1313/2047 1991/1312/2047 1999/1308/2047 -f 1995/1307/2048 1994/1314/2048 1996/1313/2048 -f 1991/1312/2048 1996/1313/2048 1994/1314/2048 -f 1962/1274/2026 1966/1275/2026 1964/1273/2026 -f 1957/1291/2023 1955/1292/2023 2001/1293/2023 -f 2003/1294/2023 2001/1293/2023 1955/1292/2023 -f 2002/1293/2024 1954/1291/2024 2000/1294/2024 -f 1956/1292/2024 2000/1294/2024 1954/1291/2024 -f 1971/1279/2025 1973/1277/2025 1969/1274/2025 -f 2012/1315/2049 2013/1316/2049 2014/1317/2049 -f 2015/1318/2049 2014/1317/2049 2016/1319/2049 -f 2014/1317/2049 2013/1316/2049 2016/1319/2049 -f 2013/1316/2049 2017/1320/2049 2016/1319/2049 -f 2018/1321/2049 2017/1320/2049 2013/1316/2049 -f 2019/1322/2049 2017/1320/2049 2018/1321/2049 -f 2020/1323/2049 2018/1321/2049 2013/1316/2049 -f 2019/1324/2050 2018/1325/2051 2021/1326/2052 -f 2022/1327/2053 2021/1326/2052 2018/1325/2051 -f 2018/1325/2051 2020/1324/2054 2022/1327/2053 -f 2023/1326/2055 2022/1327/2053 2020/1324/2054 -f 2020/1324/2054 2013/1328/2056 2023/1326/2055 -f 2024/1329/2057 2023/1326/2055 2013/1328/2056 -f 2013/1328/2056 2012/1330/2058 2024/1329/2057 -f 2025/1331/2059 2024/1329/2057 2012/1330/2058 -f 2012/1330/2058 2014/1332/2060 2025/1331/2059 -f 2026/1333/2061 2025/1331/2059 2014/1332/2060 -f 2014/1332/2060 2015/1334/2062 2026/1333/2061 -f 2027/1335/2063 2026/1333/2061 2015/1334/2062 -f 2015/1334/2062 2016/1336/2064 2027/1335/2063 -f 2028/1337/2065 2027/1335/2063 2016/1336/2064 -f 2016/1336/2064 2029/1334/2066 2028/1337/2065 -f 2030/1335/2067 2028/1337/2065 2029/1334/2066 -f 2029/1334/2066 2031/1332/2068 2030/1335/2067 -f 2032/1333/2069 2030/1335/2067 2031/1332/2068 -f 2026/1333/2061 2027/1335/2063 2033/1338/2070 -f 2034/1339/2071 2033/1338/2070 2027/1335/2063 -f 2027/1335/2063 2028/1337/2065 2034/1339/2071 -f 2035/1340/2072 2034/1339/2071 2028/1337/2065 -f 2028/1337/2065 2030/1335/2067 2035/1340/2072 -f 2036/1339/2073 2035/1340/2072 2030/1335/2067 -f 2030/1335/2067 2032/1333/2069 2036/1339/2073 -f 2037/1338/2074 2036/1339/2073 2032/1333/2069 -f 2032/1333/2069 2038/1331/2075 2037/1338/2074 -f 2039/1341/2076 2037/1338/2074 2038/1331/2075 -f 2038/1331/2075 2040/1329/2077 2039/1341/2076 -f 2041/1342/2078 2039/1341/2076 2040/1329/2077 -f 2031/1332/2068 2042/1330/2079 2032/1333/2069 -f 2038/1331/2075 2032/1333/2069 2042/1330/2079 -f 2042/1330/2079 2017/1328/2080 2038/1331/2075 -f 2040/1329/2077 2038/1331/2075 2017/1328/2080 -f 2017/1328/2080 2019/1324/2050 2040/1329/2077 -f 2021/1326/2052 2040/1329/2077 2019/1324/2050 -f 2040/1329/2077 2021/1326/2052 2041/1342/2078 -f 2043/1343/2081 2041/1342/2078 2021/1326/2052 -f 2021/1326/2052 2022/1327/2053 2043/1343/2081 -f 2044/1344/2082 2043/1343/2081 2022/1327/2053 -f 2022/1327/2053 2023/1326/2055 2044/1344/2082 -f 2045/1343/2083 2044/1344/2082 2023/1326/2055 -f 2023/1326/2055 2024/1329/2057 2045/1343/2083 -f 2046/1342/2084 2045/1343/2083 2024/1329/2057 -f 2024/1329/2057 2025/1331/2059 2046/1342/2084 -f 2047/1341/2085 2046/1342/2084 2025/1331/2059 -f 2025/1331/2059 2026/1333/2061 2047/1341/2085 -f 2033/1338/2070 2047/1341/2085 2026/1333/2061 -f 2044/1319/2086 2045/1318/2086 2043/1345/2086 -f 2045/1318/2086 2047/1315/2086 2043/1345/2086 -f 2043/1345/2086 2047/1315/2086 2036/1322/2086 -f 2047/1315/2086 2034/1323/2086 2036/1322/2086 -f 2036/1322/2086 2034/1323/2086 2035/1321/2086 -f 2033/1316/2086 2034/1323/2086 2047/1315/2086 -f 2046/1317/2086 2047/1315/2086 2045/1318/2086 -f 2041/1346/2086 2043/1345/2086 2039/1347/2086 -f 2039/1347/2086 2043/1345/2086 2036/1322/2086 -f 2037/1320/2086 2039/1347/2086 2036/1322/2086 -f 2042/1347/2049 2031/1346/2049 2017/1320/2049 -f 2017/1320/2049 2031/1346/2049 2016/1319/2049 -f 2016/1319/2049 2031/1346/2049 2029/1345/2049 -# 162 faces - -# -# object P_51_Mustang_Left_Rockets -# - -v 28.30 -4.77 8.29 -v 28.33 -4.86 5.62 -v 28.36 -4.84 8.30 -v 28.39 -4.93 5.63 -v 30.30 -3.78 17.72 -v 30.11 -3.64 18.78 -v 29.93 -4.14 17.76 -v 29.98 -4.36 6.27 -v 29.58 -4.47 6.28 -v 29.44 -4.27 17.78 -v 29.18 -4.36 6.28 -v 28.96 -4.13 17.77 -v 28.90 -4.06 6.25 -v 28.63 -3.77 17.74 -v 28.82 -3.65 6.22 -v 28.52 -3.28 17.70 -v 28.94 -3.25 6.18 -v 28.67 -2.78 17.65 -v 29.25 -2.95 6.15 -v 29.04 -2.43 17.61 -v 29.65 -2.85 6.14 -v 29.53 -2.30 17.60 -v 30.05 -2.96 6.14 -v 30.01 -2.44 17.60 -v 28.80 -3.63 18.79 -v 29.07 -3.91 18.82 -v 29.44 -4.02 18.82 -v 29.82 -3.92 18.81 -v 29.46 -3.20 20.36 -v 30.23 -3.25 18.75 -v 30.46 -3.29 17.68 -v 30.29 -4.07 6.24 -v 30.41 -3.66 6.20 -v 29.13 -2.58 18.69 -v 28.84 -2.86 18.72 -v 28.72 -3.24 18.76 -v 29.51 -2.48 18.68 -v 30.32 -3.26 6.17 -v 30.35 -2.80 17.63 -v 30.15 -2.87 18.71 -v 29.89 -2.58 18.69 -v 29.57 -3.63 6.19 -v 29.64 -3.70 6.20 -v 30.92 -2.50 5.38 -v 30.85 -2.43 5.38 -v 29.61 -3.61 8.86 -v 29.55 -3.54 8.86 -v 30.89 -2.41 8.05 -v 30.82 -2.34 8.04 -v 30.77 -4.79 8.27 -v 29.63 -3.54 8.86 -v 30.70 -4.86 8.27 -v 29.56 -3.61 8.86 -v 28.48 -2.33 8.06 -v 28.41 -2.40 8.07 -v 30.73 -4.94 5.61 -v 29.59 -3.70 6.20 -v 28.44 -2.48 5.41 -v 28.51 -2.41 5.40 -v 29.66 -3.63 6.19 -v 30.80 -4.88 5.60 -v 30.94 -4.79 8.27 -v 30.97 -4.88 5.60 -v 31.00 -4.86 8.27 -v 31.03 -4.95 5.60 -v 32.94 -3.80 17.70 -v 32.75 -3.66 18.76 -v 32.57 -4.16 17.74 -v 32.62 -4.38 6.25 -v 32.21 -4.49 6.26 -v 32.08 -4.29 17.75 -v 31.82 -4.38 6.25 -v 31.60 -4.15 17.74 -v 31.54 -4.08 6.23 -v 31.26 -3.79 17.71 -v 31.45 -3.67 6.19 -v 31.16 -3.30 17.67 -v 31.58 -3.27 6.15 -v 31.31 -2.81 17.62 -v 31.89 -2.97 6.12 -v 31.68 -2.45 17.59 -v 32.29 -2.87 6.11 -v 32.17 -2.32 17.57 -v 32.68 -2.98 6.12 -v 32.65 -2.46 17.58 -v 31.44 -3.65 18.77 -v 31.70 -3.93 18.79 -v 32.08 -4.04 18.80 -v 32.46 -3.94 18.79 -v 32.09 -3.22 20.34 -v 32.87 -3.27 18.72 -v 33.09 -3.31 17.65 -v 32.92 -4.09 6.22 -v 33.05 -3.68 6.18 -v 31.77 -2.60 18.67 -v 31.48 -2.88 18.70 -v 31.36 -3.26 18.73 -v 32.15 -2.50 18.66 -v 32.96 -3.28 6.14 -v 32.99 -2.82 17.61 -v 32.79 -2.89 18.69 -v 32.52 -2.61 18.66 -v 32.21 -3.65 6.17 -v 32.28 -3.72 6.17 -v 33.55 -2.52 5.36 -v 33.49 -2.45 5.35 -v 32.25 -3.63 8.84 -v 32.18 -3.56 8.83 -v 33.52 -2.43 8.02 -v 33.46 -2.36 8.02 -v 33.41 -4.81 8.24 -v 32.27 -3.56 8.83 -v 33.34 -4.88 8.25 -v 32.19 -3.63 8.84 -v 31.12 -2.35 8.04 -v 31.05 -2.42 8.05 -v 33.37 -4.96 5.58 -v 32.22 -3.72 6.17 -v 31.08 -2.50 5.38 -v 31.15 -2.43 5.37 -v 32.29 -3.65 6.16 -v 33.44 -4.90 5.58 -v 33.69 -4.81 8.24 -v 33.72 -4.90 5.57 -v 33.75 -4.88 8.25 -v 33.78 -4.97 5.58 -v 35.69 -3.82 17.67 -v 35.50 -3.68 18.73 -v 35.32 -4.18 17.71 -v 35.37 -4.40 6.22 -v 34.96 -4.51 6.23 -v 34.83 -4.31 17.73 -v 34.57 -4.40 6.23 -v 34.35 -4.17 17.72 -v 34.29 -4.10 6.20 -v 34.01 -3.81 17.69 -v 34.21 -3.69 6.17 -v 33.91 -3.32 17.64 -v 34.33 -3.29 6.13 -v 34.06 -2.83 17.60 -v 34.64 -2.99 6.10 -v 34.43 -2.47 17.56 -v 35.04 -2.89 6.08 -v 34.92 -2.34 17.54 -v 35.44 -3.00 6.09 -v 35.40 -2.48 17.55 -v 34.19 -3.67 18.74 -v 34.45 -3.95 18.77 -v 34.83 -4.06 18.77 -v 35.21 -3.96 18.76 -v 34.85 -3.24 20.31 -v 35.62 -3.30 18.69 -v 35.84 -3.33 17.63 -v 35.67 -4.11 6.19 -v 35.80 -3.71 6.15 -v 34.52 -2.62 18.64 -v 34.23 -2.90 18.67 -v 34.11 -3.28 18.71 -v 34.90 -2.52 18.63 -v 35.71 -3.30 6.12 -v 35.74 -2.84 17.58 -v 35.54 -2.91 18.66 -v 35.27 -2.63 18.64 -v 34.96 -3.67 6.14 -v 35.03 -3.74 6.15 -v 36.31 -2.54 5.33 -v 36.24 -2.47 5.32 -v 35.00 -3.65 8.81 -v 34.93 -3.58 8.81 -v 36.28 -2.46 8.00 -v 36.21 -2.39 7.99 -v 36.16 -4.83 8.22 -v 35.02 -3.58 8.81 -v 36.09 -4.90 8.22 -v 34.94 -3.65 8.81 -v 33.87 -2.37 8.01 -v 33.80 -2.44 8.02 -v 36.12 -4.99 5.56 -v 34.97 -3.74 6.15 -v 33.83 -2.52 5.35 -v 33.90 -2.45 5.35 -v 35.05 -3.67 6.14 -v 36.19 -4.92 5.55 -# 183 vertices - -vn -0.73 -0.68 0.01 -vn 0.85 -0.51 0.11 -vn 0.82 -0.47 0.33 -vn 0.49 -0.86 0.12 -vn 0.50 -0.87 0.02 -vn -0.01 -1.00 0.02 -vn -0.01 -0.99 0.12 -vn -0.52 -0.85 0.01 -vn -0.52 -0.85 0.12 -vn -0.89 -0.46 -0.01 -vn -0.89 -0.45 0.10 -vn -1.00 0.05 -0.03 -vn -1.00 0.05 0.08 -vn -0.85 0.53 -0.04 -vn -0.85 0.53 0.06 -vn -0.48 0.87 -0.05 -vn -0.49 0.87 0.05 -vn 0.01 1.00 -0.05 -vn 0.01 1.00 0.06 -vn 0.52 0.85 -0.04 -vn 0.52 0.85 0.07 -vn -0.85 -0.42 0.32 -vn -0.50 -0.79 0.34 -vn -0.01 -0.94 0.35 -vn 0.47 -0.81 0.34 -vn -0.35 -0.53 0.78 -vn 0.92 -0.26 0.31 -vn 0.95 -0.29 0.10 -vn 0.86 -0.52 0.01 -vn 0.95 -0.30 0.01 -vn -0.46 0.85 0.27 -vn -0.81 0.52 0.28 -vn -0.95 0.07 0.30 -vn 0.01 0.96 0.27 -vn 0.45 0.77 0.46 -vn 0.88 0.47 -0.02 -vn 0.88 0.47 0.08 -vn 0.98 0.21 -0.01 -vn 0.97 0.22 0.09 -vn 0.84 0.46 0.30 -vn 0.93 0.23 0.30 -vn 0.49 0.82 0.29 -vn -0.01 -0.09 -1.00 -vn 0.27 0.17 -0.95 -vn 0.00 -0.08 -1.00 -vn -0.27 -0.33 -0.91 -vn -0.27 -0.17 0.95 -vn -0.00 0.08 1.00 -vn 0.01 0.09 1.00 -vn 0.27 0.33 0.91 -vn -0.69 0.72 -0.03 -vn 0.28 -0.19 0.94 -vn 0.02 0.08 1.00 -vn -0.25 0.35 0.90 -vn 0.25 -0.35 -0.90 -vn -0.02 -0.08 -1.00 -vn -0.28 0.19 -0.94 -vn 0.73 0.68 -0.01 -vn 0.69 -0.72 0.03 -# 59 vertex normals - -vt 0.81 0.65 0.00 -vt 0.71 0.65 0.00 -vt 0.83 0.57 0.00 -vt 0.85 0.57 0.00 -vt 0.64 0.57 0.00 -vt 0.64 0.58 0.00 -vt 0.83 0.58 0.00 -vt 0.64 0.59 0.00 -vt 0.83 0.59 0.00 -vt 0.64 0.60 0.00 -vt 0.83 0.60 0.00 -vt 0.85 0.58 0.00 -vt 0.89 0.58 0.00 -vt 0.85 0.59 0.00 -vt 0.85 0.60 0.00 -vt 0.89 0.60 0.00 -vt 0.64 0.61 0.00 -vt 0.83 0.61 0.00 -vt 0.85 0.61 0.00 -vt 0.37 0.73 0.00 -vt 0.37 0.74 0.00 -vt 0.39 0.74 0.00 -vt 0.39 0.72 0.00 -vt 0.39 0.73 0.00 -vt 0.38 0.74 0.00 -vt 0.69 0.65 0.00 -vt 0.75 0.65 0.00 -vt 0.91 0.70 0.00 -vt 0.91 0.66 0.00 -vt 0.98 0.70 0.00 -vt 0.98 0.66 0.00 -vt 0.91 0.63 0.00 -vt 0.98 0.63 0.00 -vt 0.37 0.72 0.00 -vt 0.38 0.71 0.00 -# 35 texture coords - -g P_51_Mustang_Left_Rockets -f 2048/1348/2087 2049/1349/2087 2050/1348/2087 -f 2051/1349/2087 2050/1348/2087 2049/1349/2087 -f 2052/1350/2088 2053/1351/2089 2054/1350/2090 -f 2054/1350/2090 2055/1352/2091 2052/1350/2088 -f 2055/1352/2091 2054/1350/2090 2056/1353/2092 -f 2057/1354/2093 2056/1353/2092 2054/1350/2090 -f 2056/1353/2092 2057/1354/2093 2058/1353/2094 -f 2059/1354/2095 2058/1353/2094 2057/1354/2093 -f 2058/1353/2094 2059/1354/2095 2060/1353/2096 -f 2061/1354/2097 2060/1353/2096 2059/1354/2095 -f 2060/1353/2096 2061/1354/2097 2062/1355/2098 -f 2063/1356/2099 2062/1355/2098 2061/1354/2097 -f 2062/1355/2098 2063/1356/2099 2064/1355/2100 -f 2065/1356/2101 2064/1355/2100 2063/1356/2099 -f 2064/1355/2100 2065/1356/2101 2066/1355/2102 -f 2067/1356/2103 2066/1355/2102 2065/1356/2101 -f 2066/1355/2102 2067/1356/2103 2068/1357/2104 -f 2069/1358/2105 2068/1357/2104 2067/1356/2103 -f 2068/1357/2104 2069/1358/2105 2070/1357/2106 -f 2071/1358/2107 2070/1357/2106 2069/1358/2105 -f 2061/1354/2097 2072/1359/2108 2063/1356/2099 -f 2072/1359/2108 2061/1354/2097 2073/1359/2109 -f 2059/1354/2095 2073/1359/2109 2061/1354/2097 -f 2073/1359/2109 2059/1354/2095 2074/1359/2110 -f 2057/1354/2093 2074/1359/2110 2059/1354/2095 -f 2074/1359/2110 2057/1354/2093 2075/1351/2111 -f 2054/1350/2090 2075/1351/2111 2057/1354/2093 -f 2075/1351/2111 2054/1350/2090 2053/1351/2089 -f 2075/1351/2111 2053/1351/2089 2076/1360/2112 -f 2053/1351/2089 2077/1351/2113 2076/1360/2112 -f 2053/1351/2089 2052/1350/2088 2077/1351/2113 -f 2078/1350/2114 2077/1351/2113 2052/1350/2088 -f 2052/1350/2088 2079/1352/2115 2078/1350/2114 -f 2080/1352/2116 2078/1350/2114 2079/1352/2115 -f 2081/1361/2117 2082/1361/2118 2076/1360/2112 -f 2082/1361/2118 2083/1361/2119 2076/1360/2112 -f 2083/1361/2119 2072/1359/2108 2076/1360/2112 -f 2072/1359/2108 2073/1359/2109 2076/1360/2112 -f 2073/1359/2109 2074/1359/2110 2076/1360/2112 -f 2074/1359/2110 2075/1351/2111 2076/1360/2112 -f 2084/1362/2120 2081/1361/2117 2076/1363/2121 -f 2070/1357/2106 2071/1358/2107 2085/1357/2122 -f 2086/1358/2123 2085/1357/2122 2071/1358/2107 -f 2085/1357/2122 2086/1358/2123 2080/1364/2124 -f 2078/1365/2125 2080/1364/2124 2086/1358/2123 -f 2086/1358/2123 2087/1362/2126 2078/1365/2125 -f 2077/1366/2127 2078/1365/2125 2087/1362/2126 -f 2077/1366/2127 2087/1362/2126 2076/1363/2121 -f 2087/1362/2126 2088/1362/2128 2076/1363/2121 -f 2088/1362/2128 2084/1362/2120 2076/1363/2121 -f 2088/1362/2128 2071/1358/2107 2084/1362/2120 -f 2069/1358/2105 2084/1362/2120 2071/1358/2107 -f 2084/1362/2120 2069/1358/2105 2081/1361/2117 -f 2067/1356/2103 2081/1361/2117 2069/1358/2105 -f 2081/1361/2117 2067/1356/2103 2082/1361/2118 -f 2065/1356/2101 2082/1361/2118 2067/1356/2103 -f 2082/1361/2118 2065/1356/2101 2083/1361/2119 -f 2063/1356/2099 2083/1361/2119 2065/1356/2101 -f 2083/1361/2119 2063/1356/2099 2072/1359/2108 -f 2087/1362/2126 2086/1358/2123 2088/1362/2128 -f 2071/1358/2107 2088/1362/2128 2086/1358/2123 -f 2085/1367/2129 2080/1367/2129 2070/1368/2129 -f 2080/1367/2129 2066/1369/2129 2070/1368/2129 -f 2058/1370/2129 2066/1369/2129 2080/1367/2129 -f 2062/1371/2129 2066/1369/2129 2058/1370/2129 -f 2060/1370/2129 2062/1371/2129 2058/1370/2129 -f 2070/1368/2129 2066/1369/2129 2068/1372/2129 -f 2064/1371/2129 2066/1369/2129 2062/1371/2129 -f 2049/1373/2130 2089/1374/2129 2051/1373/2130 -f 2090/1374/2131 2051/1373/2130 2089/1374/2129 -f 2090/1374/2131 2089/1374/2129 2091/1348/2132 -f 2092/1348/2132 2091/1348/2132 2089/1374/2129 -f 2050/1373/2133 2093/1374/2134 2048/1373/2133 -f 2094/1374/2135 2048/1373/2133 2093/1374/2134 -f 2093/1374/2134 2095/1348/2136 2094/1374/2135 -f 2096/1348/2136 2094/1374/2135 2095/1348/2136 -f 2048/1375/2137 2094/1376/2137 2049/1377/2137 -f 2089/1378/2137 2049/1377/2137 2094/1376/2137 -f 2094/1376/2137 2096/1379/2137 2089/1378/2137 -f 2092/1380/2137 2089/1378/2137 2096/1379/2137 -f 2097/1373/2138 2098/1374/2135 2099/1373/2138 -f 2100/1374/2139 2099/1373/2138 2098/1374/2135 -f 2098/1374/2135 2101/1348/2140 2100/1374/2139 -f 2102/1348/2140 2100/1374/2139 2101/1348/2140 -f 2099/1375/2087 2100/1376/2087 2103/1377/2087 -f 2104/1378/2087 2103/1377/2087 2100/1376/2087 -f 2100/1376/2087 2102/1379/2087 2104/1378/2087 -f 2105/1380/2087 2104/1378/2087 2102/1379/2087 -f 2105/1348/2141 2106/1348/2141 2104/1374/2142 -f 2107/1374/2129 2104/1374/2142 2106/1348/2141 -f 2107/1374/2129 2108/1373/2143 2104/1374/2142 -f 2103/1373/2143 2104/1374/2142 2108/1373/2143 -f 2101/1375/2144 2098/1376/2144 2106/1377/2144 -f 2107/1378/2144 2106/1377/2144 2098/1376/2144 -f 2098/1376/2144 2097/1379/2144 2107/1378/2144 -f 2108/1380/2144 2107/1378/2144 2097/1379/2144 -f 2079/1381/2129 2055/1381/2129 2080/1367/2129 -f 2055/1381/2129 2058/1370/2129 2080/1367/2129 -f 2056/1382/2129 2058/1370/2129 2055/1381/2129 -f 2095/1375/2145 2093/1376/2145 2091/1377/2145 -f 2090/1378/2145 2091/1377/2145 2093/1376/2145 -f 2093/1376/2145 2050/1379/2145 2090/1378/2145 -f 2051/1380/2145 2090/1378/2145 2050/1379/2145 -f 2095/1348/2144 2091/1349/2144 2096/1348/2144 -f 2092/1349/2144 2096/1348/2144 2091/1349/2144 -f 2099/1348/2145 2103/1349/2145 2097/1348/2145 -f 2108/1349/2145 2097/1348/2145 2103/1349/2145 -f 2101/1348/2137 2106/1349/2137 2102/1348/2137 -f 2105/1349/2137 2102/1348/2137 2106/1349/2137 -f 2079/1352/2115 2052/1350/2088 2055/1352/2091 -f 2109/1348/2087 2110/1349/2087 2111/1348/2087 -f 2112/1349/2087 2111/1348/2087 2110/1349/2087 -f 2113/1350/2088 2114/1351/2089 2115/1350/2090 -f 2115/1350/2090 2116/1352/2091 2113/1350/2088 -f 2116/1352/2091 2115/1350/2090 2117/1353/2092 -f 2118/1354/2093 2117/1353/2092 2115/1350/2090 -f 2117/1353/2092 2118/1354/2093 2119/1353/2094 -f 2120/1354/2095 2119/1353/2094 2118/1354/2093 -f 2119/1353/2094 2120/1354/2095 2121/1353/2096 -f 2122/1354/2097 2121/1353/2096 2120/1354/2095 -f 2121/1353/2096 2122/1354/2097 2123/1355/2098 -f 2124/1356/2099 2123/1355/2098 2122/1354/2097 -f 2123/1355/2098 2124/1356/2099 2125/1355/2100 -f 2126/1356/2101 2125/1355/2100 2124/1356/2099 -f 2125/1355/2100 2126/1356/2101 2127/1355/2102 -f 2128/1356/2103 2127/1355/2102 2126/1356/2101 -f 2127/1355/2102 2128/1356/2103 2129/1357/2104 -f 2130/1358/2105 2129/1357/2104 2128/1356/2103 -f 2129/1357/2104 2130/1358/2105 2131/1357/2106 -f 2132/1358/2107 2131/1357/2106 2130/1358/2105 -f 2122/1354/2097 2133/1359/2108 2124/1356/2099 -f 2133/1359/2108 2122/1354/2097 2134/1359/2109 -f 2120/1354/2095 2134/1359/2109 2122/1354/2097 -f 2134/1359/2109 2120/1354/2095 2135/1359/2110 -f 2118/1354/2093 2135/1359/2110 2120/1354/2095 -f 2135/1359/2110 2118/1354/2093 2136/1351/2111 -f 2115/1350/2090 2136/1351/2111 2118/1354/2093 -f 2136/1351/2111 2115/1350/2090 2114/1351/2089 -f 2136/1351/2111 2114/1351/2089 2137/1360/2112 -f 2114/1351/2089 2138/1351/2113 2137/1360/2112 -f 2114/1351/2089 2113/1350/2088 2138/1351/2113 -f 2139/1350/2114 2138/1351/2113 2113/1350/2088 -f 2113/1350/2088 2140/1352/2115 2139/1350/2114 -f 2141/1352/2116 2139/1350/2114 2140/1352/2115 -f 2142/1361/2117 2143/1361/2118 2137/1360/2112 -f 2143/1361/2118 2144/1361/2119 2137/1360/2112 -f 2144/1361/2119 2133/1359/2108 2137/1360/2112 -f 2133/1359/2108 2134/1359/2109 2137/1360/2112 -f 2134/1359/2109 2135/1359/2110 2137/1360/2112 -f 2135/1359/2110 2136/1351/2111 2137/1360/2112 -f 2145/1362/2120 2142/1361/2117 2137/1363/2121 -f 2131/1357/2106 2132/1358/2107 2146/1357/2122 -f 2147/1358/2123 2146/1357/2122 2132/1358/2107 -f 2146/1357/2122 2147/1358/2123 2141/1364/2124 -f 2139/1365/2125 2141/1364/2124 2147/1358/2123 -f 2147/1358/2123 2148/1362/2126 2139/1365/2125 -f 2138/1366/2127 2139/1365/2125 2148/1362/2126 -f 2138/1366/2127 2148/1362/2126 2137/1363/2121 -f 2148/1362/2126 2149/1362/2128 2137/1363/2121 -f 2149/1362/2128 2145/1362/2120 2137/1363/2121 -f 2149/1362/2128 2132/1358/2107 2145/1362/2120 -f 2130/1358/2105 2145/1362/2120 2132/1358/2107 -f 2145/1362/2120 2130/1358/2105 2142/1361/2117 -f 2128/1356/2103 2142/1361/2117 2130/1358/2105 -f 2142/1361/2117 2128/1356/2103 2143/1361/2118 -f 2126/1356/2101 2143/1361/2118 2128/1356/2103 -f 2143/1361/2118 2126/1356/2101 2144/1361/2119 -f 2124/1356/2099 2144/1361/2119 2126/1356/2101 -f 2144/1361/2119 2124/1356/2099 2133/1359/2108 -f 2148/1362/2126 2147/1358/2123 2149/1362/2128 -f 2132/1358/2107 2149/1362/2128 2147/1358/2123 -f 2146/1367/2129 2141/1367/2129 2131/1368/2129 -f 2141/1367/2129 2127/1369/2129 2131/1368/2129 -f 2119/1370/2129 2127/1369/2129 2141/1367/2129 -f 2123/1371/2129 2127/1369/2129 2119/1370/2129 -f 2121/1370/2129 2123/1371/2129 2119/1370/2129 -f 2131/1368/2129 2127/1369/2129 2129/1372/2129 -f 2125/1371/2129 2127/1369/2129 2123/1371/2129 -f 2110/1373/2130 2150/1374/2129 2112/1373/2130 -f 2151/1374/2131 2112/1373/2130 2150/1374/2129 -f 2151/1374/2131 2150/1374/2129 2152/1348/2132 -f 2153/1348/2132 2152/1348/2132 2150/1374/2129 -f 2111/1373/2133 2154/1374/2134 2109/1373/2133 -f 2155/1374/2135 2109/1373/2133 2154/1374/2134 -f 2154/1374/2134 2156/1348/2136 2155/1374/2135 -f 2157/1348/2136 2155/1374/2135 2156/1348/2136 -f 2109/1375/2137 2155/1376/2137 2110/1377/2137 -f 2150/1378/2137 2110/1377/2137 2155/1376/2137 -f 2155/1376/2137 2157/1379/2137 2150/1378/2137 -f 2153/1380/2137 2150/1378/2137 2157/1379/2137 -f 2158/1373/2138 2159/1374/2135 2160/1373/2138 -f 2161/1374/2139 2160/1373/2138 2159/1374/2135 -f 2159/1374/2135 2162/1348/2140 2161/1374/2139 -f 2163/1348/2140 2161/1374/2139 2162/1348/2140 -f 2160/1375/2087 2161/1376/2087 2164/1377/2087 -f 2165/1378/2087 2164/1377/2087 2161/1376/2087 -f 2161/1376/2087 2163/1379/2087 2165/1378/2087 -f 2166/1380/2087 2165/1378/2087 2163/1379/2087 -f 2166/1348/2141 2167/1348/2141 2165/1374/2142 -f 2168/1374/2129 2165/1374/2142 2167/1348/2141 -f 2168/1374/2129 2169/1373/2143 2165/1374/2142 -f 2164/1373/2143 2165/1374/2142 2169/1373/2143 -f 2162/1375/2144 2159/1376/2144 2167/1377/2144 -f 2168/1378/2144 2167/1377/2144 2159/1376/2144 -f 2159/1376/2144 2158/1379/2144 2168/1378/2144 -f 2169/1380/2144 2168/1378/2144 2158/1379/2144 -f 2140/1381/2129 2116/1381/2129 2141/1367/2129 -f 2116/1381/2129 2119/1370/2129 2141/1367/2129 -f 2117/1382/2129 2119/1370/2129 2116/1381/2129 -f 2156/1375/2145 2154/1376/2145 2152/1377/2145 -f 2151/1378/2145 2152/1377/2145 2154/1376/2145 -f 2154/1376/2145 2111/1379/2145 2151/1378/2145 -f 2112/1380/2145 2151/1378/2145 2111/1379/2145 -f 2156/1348/2144 2152/1349/2144 2157/1348/2144 -f 2153/1349/2144 2157/1348/2144 2152/1349/2144 -f 2160/1348/2145 2164/1349/2145 2158/1348/2145 -f 2169/1349/2145 2158/1348/2145 2164/1349/2145 -f 2162/1348/2137 2167/1349/2137 2163/1348/2137 -f 2166/1349/2137 2163/1348/2137 2167/1349/2137 -f 2140/1352/2115 2113/1350/2088 2116/1352/2091 -f 2170/1348/2087 2171/1349/2087 2172/1348/2087 -f 2173/1349/2087 2172/1348/2087 2171/1349/2087 -f 2174/1350/2088 2175/1351/2089 2176/1350/2090 -f 2176/1350/2090 2177/1352/2091 2174/1350/2088 -f 2177/1352/2091 2176/1350/2090 2178/1353/2092 -f 2179/1354/2093 2178/1353/2092 2176/1350/2090 -f 2178/1353/2092 2179/1354/2093 2180/1353/2094 -f 2181/1354/2095 2180/1353/2094 2179/1354/2093 -f 2180/1353/2094 2181/1354/2095 2182/1353/2096 -f 2183/1354/2097 2182/1353/2096 2181/1354/2095 -f 2182/1353/2096 2183/1354/2097 2184/1355/2098 -f 2185/1356/2099 2184/1355/2098 2183/1354/2097 -f 2184/1355/2098 2185/1356/2099 2186/1355/2100 -f 2187/1356/2101 2186/1355/2100 2185/1356/2099 -f 2186/1355/2100 2187/1356/2101 2188/1355/2102 -f 2189/1356/2103 2188/1355/2102 2187/1356/2101 -f 2188/1355/2102 2189/1356/2103 2190/1357/2104 -f 2191/1358/2105 2190/1357/2104 2189/1356/2103 -f 2190/1357/2104 2191/1358/2105 2192/1357/2106 -f 2193/1358/2107 2192/1357/2106 2191/1358/2105 -f 2183/1354/2097 2194/1359/2108 2185/1356/2099 -f 2194/1359/2108 2183/1354/2097 2195/1359/2109 -f 2181/1354/2095 2195/1359/2109 2183/1354/2097 -f 2195/1359/2109 2181/1354/2095 2196/1359/2110 -f 2179/1354/2093 2196/1359/2110 2181/1354/2095 -f 2196/1359/2110 2179/1354/2093 2197/1351/2111 -f 2176/1350/2090 2197/1351/2111 2179/1354/2093 -f 2197/1351/2111 2176/1350/2090 2175/1351/2089 -f 2197/1351/2111 2175/1351/2089 2198/1360/2112 -f 2175/1351/2089 2199/1351/2113 2198/1360/2112 -f 2175/1351/2089 2174/1350/2088 2199/1351/2113 -f 2200/1350/2114 2199/1351/2113 2174/1350/2088 -f 2174/1350/2088 2201/1352/2115 2200/1350/2114 -f 2202/1352/2116 2200/1350/2114 2201/1352/2115 -f 2203/1361/2117 2204/1361/2118 2198/1360/2112 -f 2204/1361/2118 2205/1361/2119 2198/1360/2112 -f 2205/1361/2119 2194/1359/2108 2198/1360/2112 -f 2194/1359/2108 2195/1359/2109 2198/1360/2112 -f 2195/1359/2109 2196/1359/2110 2198/1360/2112 -f 2196/1359/2110 2197/1351/2111 2198/1360/2112 -f 2206/1362/2120 2203/1361/2117 2198/1363/2121 -f 2192/1357/2106 2193/1358/2107 2207/1357/2122 -f 2208/1358/2123 2207/1357/2122 2193/1358/2107 -f 2207/1357/2122 2208/1358/2123 2202/1364/2124 -f 2200/1365/2125 2202/1364/2124 2208/1358/2123 -f 2208/1358/2123 2209/1362/2126 2200/1365/2125 -f 2199/1366/2127 2200/1365/2125 2209/1362/2126 -f 2199/1366/2127 2209/1362/2126 2198/1363/2121 -f 2209/1362/2126 2210/1362/2128 2198/1363/2121 -f 2210/1362/2128 2206/1362/2120 2198/1363/2121 -f 2210/1362/2128 2193/1358/2107 2206/1362/2120 -f 2191/1358/2105 2206/1362/2120 2193/1358/2107 -f 2206/1362/2120 2191/1358/2105 2203/1361/2117 -f 2189/1356/2103 2203/1361/2117 2191/1358/2105 -f 2203/1361/2117 2189/1356/2103 2204/1361/2118 -f 2187/1356/2101 2204/1361/2118 2189/1356/2103 -f 2204/1361/2118 2187/1356/2101 2205/1361/2119 -f 2185/1356/2099 2205/1361/2119 2187/1356/2101 -f 2205/1361/2119 2185/1356/2099 2194/1359/2108 -f 2209/1362/2126 2208/1358/2123 2210/1362/2128 -f 2193/1358/2107 2210/1362/2128 2208/1358/2123 -f 2207/1367/2129 2202/1367/2129 2192/1368/2129 -f 2202/1367/2129 2188/1369/2129 2192/1368/2129 -f 2180/1370/2129 2188/1369/2129 2202/1367/2129 -f 2184/1371/2129 2188/1369/2129 2180/1370/2129 -f 2182/1370/2129 2184/1371/2129 2180/1370/2129 -f 2192/1368/2129 2188/1369/2129 2190/1372/2129 -f 2186/1371/2129 2188/1369/2129 2184/1371/2129 -f 2171/1373/2130 2211/1374/2129 2173/1373/2130 -f 2212/1374/2131 2173/1373/2130 2211/1374/2129 -f 2212/1374/2131 2211/1374/2129 2213/1348/2132 -f 2214/1348/2132 2213/1348/2132 2211/1374/2129 -f 2172/1373/2133 2215/1374/2134 2170/1373/2133 -f 2216/1374/2135 2170/1373/2133 2215/1374/2134 -f 2215/1374/2134 2217/1348/2136 2216/1374/2135 -f 2218/1348/2136 2216/1374/2135 2217/1348/2136 -f 2170/1375/2137 2216/1376/2137 2171/1377/2137 -f 2211/1378/2137 2171/1377/2137 2216/1376/2137 -f 2216/1376/2137 2218/1379/2137 2211/1378/2137 -f 2214/1380/2137 2211/1378/2137 2218/1379/2137 -f 2219/1373/2138 2220/1374/2135 2221/1373/2138 -f 2222/1374/2139 2221/1373/2138 2220/1374/2135 -f 2220/1374/2135 2223/1348/2140 2222/1374/2139 -f 2224/1348/2140 2222/1374/2139 2223/1348/2140 -f 2221/1375/2087 2222/1376/2087 2225/1377/2087 -f 2226/1378/2087 2225/1377/2087 2222/1376/2087 -f 2222/1376/2087 2224/1379/2087 2226/1378/2087 -f 2227/1380/2087 2226/1378/2087 2224/1379/2087 -f 2227/1348/2141 2228/1348/2141 2226/1374/2142 -f 2229/1374/2129 2226/1374/2142 2228/1348/2141 -f 2229/1374/2129 2230/1373/2143 2226/1374/2142 -f 2225/1373/2143 2226/1374/2142 2230/1373/2143 -f 2223/1375/2144 2220/1376/2144 2228/1377/2144 -f 2229/1378/2144 2228/1377/2144 2220/1376/2144 -f 2220/1376/2144 2219/1379/2144 2229/1378/2144 -f 2230/1380/2144 2229/1378/2144 2219/1379/2144 -f 2201/1381/2129 2177/1381/2129 2202/1367/2129 -f 2177/1381/2129 2180/1370/2129 2202/1367/2129 -f 2178/1382/2129 2180/1370/2129 2177/1381/2129 -f 2217/1375/2145 2215/1376/2145 2213/1377/2145 -f 2212/1378/2145 2213/1377/2145 2215/1376/2145 -f 2215/1376/2145 2172/1379/2145 2212/1378/2145 -f 2173/1380/2145 2212/1378/2145 2172/1379/2145 -f 2217/1348/2144 2213/1349/2144 2218/1348/2144 -f 2214/1349/2144 2218/1348/2144 2213/1349/2144 -f 2221/1348/2145 2225/1349/2145 2219/1348/2145 -f 2230/1349/2145 2219/1348/2145 2225/1349/2145 -f 2223/1348/2137 2228/1349/2137 2224/1348/2137 -f 2227/1349/2137 2224/1348/2137 2228/1349/2137 -f 2201/1352/2115 2174/1350/2088 2177/1352/2091 -# 330 faces - -# -# object P_51_Mustang_Left_Wing_Flap -# - -v 4.70 -0.34 3.26 -v 5.20 -0.60 -0.73 -v 4.68 -0.83 3.28 -v 29.00 -0.53 5.74 -v 29.38 -0.84 2.43 -v 28.97 -1.13 5.77 -# 6 vertices - -vn -0.99 0.04 -0.13 -vn 0.01 1.00 -0.06 -vn 0.02 1.00 -0.09 -vn 0.01 1.00 -0.07 -vn -0.10 0.04 0.99 -vn -0.10 0.06 0.99 -vn -0.00 -1.00 -0.06 -vn -0.00 -1.00 -0.08 -vn -0.00 -1.00 -0.09 -vn 0.99 -0.04 0.12 -# 10 vertex normals - -vt 0.23 0.01 0.00 -vt 0.29 0.02 0.00 -vt 0.23 0.02 0.00 -vt 0.98 0.45 0.00 -vt 0.65 0.50 0.00 -vt 0.97 0.38 0.00 -vt 0.65 0.44 0.00 -vt 0.46 0.01 0.00 -vt 0.46 0.00 0.00 -vt 0.23 0.00 0.00 -vt 0.01 0.04 0.00 -vt 0.01 0.31 0.00 -vt 0.06 0.05 0.00 -vt 0.05 0.32 0.00 -vt 0.28 0.01 0.00 -vt 0.33 0.02 0.00 -vt 0.33 0.01 0.00 -# 17 texture coords - -g P_51_Mustang_Left_Wing_Flap -f 2231/1383/2146 2232/1384/2146 2233/1385/2146 -f 2231/1386/2147 2234/1387/2148 2232/1388/2149 -f 2235/1389/2148 2232/1388/2149 2234/1387/2148 -f 2233/1390/2150 2236/1383/2151 2231/1391/2150 -f 2234/1392/2151 2231/1391/2150 2236/1383/2151 -f 2232/1393/2152 2235/1394/2153 2233/1395/2152 -f 2236/1396/2154 2233/1395/2152 2235/1394/2153 -f 2235/1397/2155 2234/1398/2155 2236/1399/2155 -# 8 faces - -# -# object P_51_Mustang_Right_Elevator -# - -v -1.73 4.93 -32.15 -v -1.43 4.98 -35.87 -v -1.80 5.11 -32.31 -v -4.44 4.96 -31.91 -v -4.06 5.00 -35.35 -v -7.81 5.09 -34.62 -v -7.82 5.05 -31.65 -v -11.23 5.16 -33.95 -v -11.33 5.14 -31.30 -v -14.07 5.22 -33.39 -v -14.38 5.21 -32.45 -v -13.95 5.24 -30.69 -v -13.81 5.66 -30.77 -v -11.12 5.68 -31.09 -v -7.79 5.68 -31.43 -v -4.42 5.63 -31.75 -v -1.74 5.55 -32.08 -# 17 vertices - -vn 0.91 0.41 0.08 -vn -0.01 -1.00 -0.01 -vn -0.02 -1.00 -0.01 -vn -0.03 -1.00 -0.01 -vn -0.03 -1.00 -0.00 -vn -0.02 -1.00 -0.02 -vn -0.02 -1.00 -0.00 -vn -0.03 -1.00 0.03 -vn -0.03 0.99 -0.16 -vn -0.02 0.98 -0.17 -vn -0.02 0.99 -0.17 -vn -0.02 0.98 -0.18 -vn -0.01 0.98 -0.18 -vn -0.01 0.98 -0.17 -vn -0.03 0.98 -0.18 -vn -0.00 0.99 -0.16 -vn -0.01 0.99 -0.16 -vn 0.01 0.99 -0.15 -vn 0.98 -0.18 0.11 -# 19 vertex normals - -vt 0.96 0.79 0.00 -vt 0.96 0.78 0.00 -vt 0.02 0.62 0.00 -vt 0.06 0.63 0.00 -vt 0.01 0.57 0.00 -vt 0.05 0.58 0.00 -vt 0.11 0.59 0.00 -vt 0.11 0.63 0.00 -vt 0.16 0.60 0.00 -vt 0.16 0.63 0.00 -vt 0.20 0.60 0.00 -vt 0.20 0.62 0.00 -vt 0.20 0.64 0.00 -vt 0.29 0.23 0.00 -vt 0.29 0.27 0.00 -vt 0.25 0.22 0.00 -vt 0.25 0.27 0.00 -vt 0.29 0.32 0.00 -vt 0.24 0.32 0.00 -vt 0.28 0.37 0.00 -vt 0.23 0.37 0.00 -vt 0.22 0.41 0.00 -vt 0.28 0.41 0.00 -# 23 texture coords - -g P_51_Mustang_Right_Elevator -f 2237/1400/2156 2238/1401/2156 2239/1400/2156 -f 2237/1402/2157 2240/1403/2158 2238/1404/2157 -f 2241/1405/2158 2238/1404/2157 2240/1403/2158 -f 2241/1405/2158 2240/1403/2158 2242/1406/2159 -f 2243/1407/2159 2242/1406/2159 2240/1403/2158 -f 2242/1406/2159 2243/1407/2159 2244/1408/2158 -f 2245/1409/2160 2244/1408/2158 2243/1407/2159 -f 2246/1410/2161 2244/1408/2158 2245/1409/2160 -f 2247/1411/2162 2246/1410/2161 2245/1409/2160 -f 2248/1412/2163 2247/1411/2162 2245/1409/2160 -f 2249/1413/2164 2250/1414/2165 2246/1415/2166 -f 2244/1416/2167 2246/1415/2166 2250/1414/2165 -f 2250/1414/2165 2251/1417/2168 2244/1416/2167 -f 2242/1418/2168 2244/1416/2167 2251/1417/2168 -f 2251/1417/2168 2252/1419/2168 2242/1418/2168 -f 2241/1420/2169 2242/1418/2168 2252/1419/2168 -f 2241/1420/2170 2252/1419/2171 2238/1421/2172 -f 2253/1422/2173 2238/1421/2172 2252/1419/2171 -f 2253/1400/2174 2239/1400/2174 2238/1401/2174 -# 19 faces - -# -# object P_51_Mustang_Back_Wheel -# - -v 0.75 -3.90 -21.82 -v 0.72 -4.53 -21.59 -v 0.78 -3.45 -22.32 -v 0.67 -5.83 -22.72 -v 0.69 -5.68 -23.36 -v 0.67 -5.64 -22.12 -v 0.79 -3.49 -23.56 -v 0.79 -3.30 -22.96 -v 0.69 -5.17 -21.70 -v 0.29 -3.41 -23.61 -v 0.29 -3.21 -22.96 -v 0.27 -3.37 -22.27 -v 0.24 -3.85 -21.74 -v 0.21 -4.52 -21.50 -v 0.18 -5.20 -21.61 -v 0.16 -5.72 -22.06 -v 0.16 -5.92 -22.71 -v 0.17 -5.76 -23.40 -v 0.72 -5.24 -23.86 -v 0.20 -5.28 -23.93 -v 0.75 -4.61 -24.09 -v 0.24 -4.61 -24.17 -v 0.78 -3.97 -23.98 -v 0.27 -3.92 -24.06 -v -0.25 -3.96 -23.97 -v -0.23 -3.49 -23.55 -v -0.23 -3.30 -22.95 -v -0.24 -3.45 -22.31 -v -0.27 -3.89 -21.81 -v -0.30 -4.52 -21.58 -v -0.33 -5.16 -21.69 -v -0.35 -5.63 -22.11 -v -0.35 -5.82 -22.71 -v -0.33 -5.68 -23.35 -v -0.31 -5.23 -23.85 -v -0.28 -4.60 -24.08 -# 36 vertices - -vn 1.00 -0.05 0.01 -vn 0.18 0.82 -0.54 -vn 0.00 0.84 -0.55 -vn 0.19 0.98 -0.04 -vn 0.01 1.00 -0.04 -vn 0.18 0.87 0.46 -vn 0.01 0.89 0.46 -vn 0.18 0.55 0.82 -vn 0.01 0.56 0.83 -vn 0.18 0.09 0.98 -vn 0.01 0.09 1.00 -vn 0.18 -0.42 0.89 -vn 0.00 -0.43 0.90 -vn 0.18 -0.82 0.54 -vn -0.00 -0.84 0.55 -vn 0.17 -0.99 0.03 -vn -0.01 -1.00 0.04 -vn 0.16 -0.87 -0.46 -vn -0.01 -0.89 -0.46 -vn 0.16 -0.55 -0.82 -vn -0.01 -0.56 -0.83 -vn 0.17 -0.09 -0.98 -vn -0.01 -0.09 -1.00 -vn 0.18 0.42 -0.89 -vn -0.00 0.43 -0.90 -vn -0.18 0.42 -0.89 -vn -0.18 0.82 -0.54 -vn -0.17 0.99 -0.03 -vn -0.16 0.87 0.46 -vn -0.16 0.55 0.82 -vn -0.17 0.09 0.98 -vn -0.18 -0.42 0.89 -vn -0.18 -0.82 0.54 -vn -0.19 -0.98 0.04 -vn -0.18 -0.87 -0.46 -vn -0.18 -0.55 -0.82 -vn -0.18 -0.09 -0.98 -vn -1.00 0.05 -0.01 -# 38 vertex normals - -vt 0.79 0.99 0.00 -vt 0.81 0.99 0.00 -vt 0.78 0.97 0.00 -vt 0.85 0.95 0.00 -vt 0.85 0.93 0.00 -vt 0.85 0.97 0.00 -vt 0.78 0.93 0.00 -vt 0.77 0.95 0.00 -vt 0.83 0.99 0.00 -vt 0.31 0.75 0.00 -vt 0.31 0.76 0.00 -vt 0.30 0.75 0.00 -vt 0.30 0.76 0.00 -vt 0.33 0.75 0.00 -vt 0.32 0.76 0.00 -vt 0.34 0.75 0.00 -vt 0.34 0.76 0.00 -vt 0.36 0.75 0.00 -vt 0.36 0.76 0.00 -vt 0.37 0.75 0.00 -vt 0.37 0.76 0.00 -vt 0.38 0.75 0.00 -vt 0.39 0.76 0.00 -vt 0.33 0.77 0.00 -vt 0.31 0.77 0.00 -vt 0.30 0.77 0.00 -vt 0.34 0.77 0.00 -vt 0.36 0.77 0.00 -vt 0.37 0.77 0.00 -vt 0.38 0.77 0.00 -vt 0.83 0.92 0.00 -vt 0.79 0.92 0.00 -vt 0.81 0.91 0.00 -# 33 texture coords - -g P_51_Mustang_Back_Wheel -f 2254/1423/2175 2255/1424/2175 2256/1425/2175 -f 2257/1426/2175 2258/1427/2175 2259/1428/2175 -f 2258/1427/2175 2255/1424/2175 2259/1428/2175 -f 2260/1429/2175 2255/1424/2175 2258/1427/2175 -f 2256/1425/2175 2255/1424/2175 2260/1429/2175 -f 2261/1430/2175 2256/1425/2175 2260/1429/2175 -f 2259/1428/2175 2255/1424/2175 2262/1431/2175 -f 2260/1432/2176 2263/1433/2177 2261/1434/2178 -f 2264/1435/2179 2261/1434/2178 2263/1433/2177 -f 2261/1434/2178 2264/1435/2179 2256/1432/2180 -f 2265/1433/2181 2256/1432/2180 2264/1435/2179 -f 2256/1432/2180 2265/1433/2181 2254/1436/2182 -f 2266/1437/2183 2254/1436/2182 2265/1433/2181 -f 2254/1436/2182 2266/1437/2183 2255/1438/2184 -f 2267/1439/2185 2255/1438/2184 2266/1437/2183 -f 2255/1438/2184 2267/1439/2185 2262/1440/2186 -f 2268/1441/2187 2262/1440/2186 2267/1439/2185 -f 2262/1440/2186 2268/1441/2187 2259/1442/2188 -f 2269/1443/2189 2259/1442/2188 2268/1441/2187 -f 2259/1442/2188 2269/1443/2189 2257/1444/2190 -f 2270/1445/2191 2257/1444/2190 2269/1443/2189 -f 2257/1444/2190 2270/1445/2191 2258/1442/2192 -f 2271/1443/2193 2258/1442/2192 2270/1445/2191 -f 2258/1442/2192 2271/1443/2193 2272/1440/2194 -f 2273/1441/2195 2272/1440/2194 2271/1443/2193 -f 2272/1440/2194 2273/1441/2195 2274/1438/2196 -f 2275/1439/2197 2274/1438/2196 2273/1441/2195 -f 2274/1438/2196 2275/1439/2197 2276/1436/2198 -f 2277/1437/2199 2276/1436/2198 2275/1439/2197 -f 2276/1436/2198 2277/1437/2199 2260/1432/2176 -f 2263/1433/2177 2260/1432/2176 2277/1437/2199 -f 2277/1437/2199 2278/1446/2200 2263/1433/2177 -f 2279/1447/2201 2263/1433/2177 2278/1446/2200 -f 2263/1433/2177 2279/1447/2201 2264/1435/2179 -f 2280/1448/2202 2264/1435/2179 2279/1447/2201 -f 2264/1435/2179 2280/1448/2202 2265/1433/2181 -f 2281/1447/2203 2265/1433/2181 2280/1448/2202 -f 2265/1433/2181 2281/1447/2203 2266/1437/2183 -f 2282/1446/2204 2266/1437/2183 2281/1447/2203 -f 2266/1437/2183 2282/1446/2204 2267/1439/2185 -f 2283/1449/2205 2267/1439/2185 2282/1446/2204 -f 2267/1439/2185 2283/1449/2205 2268/1441/2187 -f 2284/1450/2206 2268/1441/2187 2283/1449/2205 -f 2268/1441/2187 2284/1450/2206 2269/1443/2189 -f 2285/1451/2207 2269/1443/2189 2284/1450/2206 -f 2269/1443/2189 2285/1451/2207 2270/1445/2191 -f 2286/1452/2208 2270/1445/2191 2285/1451/2207 -f 2270/1445/2191 2286/1452/2208 2271/1443/2193 -f 2287/1451/2209 2271/1443/2193 2286/1452/2208 -f 2271/1443/2193 2287/1451/2209 2273/1441/2195 -f 2288/1450/2210 2273/1441/2195 2287/1451/2209 -f 2273/1441/2195 2288/1450/2210 2275/1439/2197 -f 2289/1449/2211 2275/1439/2197 2288/1450/2210 -f 2275/1439/2197 2289/1449/2211 2277/1437/2199 -f 2278/1446/2200 2277/1437/2199 2289/1449/2211 -f 2285/1428/2212 2284/1431/2212 2286/1426/2212 -f 2286/1426/2212 2284/1431/2212 2288/1453/2212 -f 2288/1453/2212 2284/1431/2212 2280/1430/2212 -f 2278/1454/2212 2288/1453/2212 2280/1430/2212 -f 2279/1429/2212 2278/1454/2212 2280/1430/2212 -f 2289/1455/2212 2288/1453/2212 2278/1454/2212 -f 2287/1427/2212 2286/1426/2212 2288/1453/2212 -f 2272/1453/2175 2274/1455/2175 2258/1427/2175 -f 2274/1455/2175 2260/1429/2175 2258/1427/2175 -f 2276/1454/2175 2260/1429/2175 2274/1455/2175 -f 2281/1425/2212 2280/1430/2212 2282/1423/2212 -f 2280/1430/2212 2284/1431/2212 2282/1423/2212 -f 2282/1423/2212 2284/1431/2212 2283/1424/2212 -# 68 faces - -# -# object P_51_Mustang_Left_Elevator -# - -v 3.14 4.95 -35.92 -v 3.33 4.89 -32.33 -v 3.39 5.51 -32.16 -v 5.75 4.92 -35.46 -v 6.03 4.88 -32.03 -v 9.49 4.95 -34.81 -v 9.40 4.92 -31.81 -v 12.89 4.98 -34.22 -v 12.73 4.96 -31.49 -v 15.72 4.99 -33.73 -v 15.64 4.97 -32.81 -v 15.50 5.01 -31.28 -v 15.57 5.42 -31.45 -v 12.75 5.49 -31.56 -v 9.43 5.54 -31.80 -v 6.06 5.54 -32.00 -v 3.41 5.07 -32.37 -# 17 vertices - -vn -1.00 0.08 0.05 -vn -0.01 -1.00 -0.01 -vn 0.00 -1.00 -0.01 -vn -0.00 -1.00 -0.01 -vn 0.01 -1.00 -0.01 -vn 0.01 -1.00 -0.00 -vn 0.02 -1.00 0.02 -vn 0.03 0.98 -0.18 -vn 0.03 0.98 -0.19 -vn 0.02 0.98 -0.19 -vn 0.02 0.98 -0.18 -vn -0.00 0.98 -0.18 -vn 0.02 0.99 -0.16 -vn 0.01 0.99 -0.17 -vn 0.04 0.99 -0.15 -vn 0.78 -0.24 0.58 -# 16 vertex normals - -vt 0.94 0.79 0.00 -vt 0.93 0.78 0.00 -vt 0.01 0.57 0.00 -vt 0.05 0.58 0.00 -vt 0.02 0.62 0.00 -vt 0.06 0.63 0.00 -vt 0.11 0.59 0.00 -vt 0.11 0.63 0.00 -vt 0.16 0.59 0.00 -vt 0.16 0.64 0.00 -vt 0.20 0.60 0.00 -vt 0.20 0.62 0.00 -vt 0.20 0.64 0.00 -vt 0.29 0.61 0.00 -vt 0.26 0.62 0.00 -vt 0.29 0.57 0.00 -vt 0.25 0.57 0.00 -vt 0.29 0.52 0.00 -vt 0.24 0.52 0.00 -vt 0.28 0.47 0.00 -vt 0.23 0.47 0.00 -vt 0.28 0.43 0.00 -vt 0.22 0.43 0.00 -# 23 texture coords - -g P_51_Mustang_Left_Elevator -f 2290/1456/2213 2291/1457/2213 2292/1457/2213 -f 2290/1458/2214 2293/1459/2215 2291/1460/2216 -f 2294/1461/2217 2291/1460/2216 2293/1459/2215 -f 2293/1459/2215 2295/1462/2217 2294/1461/2217 -f 2296/1463/2217 2294/1461/2217 2295/1462/2217 -f 2295/1462/2217 2297/1464/2217 2296/1463/2217 -f 2298/1465/2218 2296/1463/2217 2297/1464/2217 -f 2299/1466/2215 2298/1465/2218 2297/1464/2217 -f 2300/1467/2215 2298/1465/2218 2299/1466/2215 -f 2301/1468/2219 2298/1465/2218 2300/1467/2215 -f 2302/1469/2220 2299/1470/2220 2303/1471/2221 -f 2297/1472/2221 2303/1471/2221 2299/1470/2220 -f 2303/1471/2221 2297/1472/2221 2304/1473/2222 -f 2295/1474/2222 2304/1473/2222 2297/1472/2221 -f 2304/1473/2222 2295/1474/2222 2305/1475/2223 -f 2293/1476/2223 2305/1475/2223 2295/1474/2222 -f 2305/1475/2224 2293/1476/2225 2292/1477/2226 -f 2290/1478/2227 2292/1477/2226 2293/1476/2225 -f 2306/1457/2228 2292/1457/2228 2291/1457/2228 -# 19 faces - -# -# object P_51_Mustang_Rudder -# - -v 1.94 16.37 -39.44 -v 1.85 16.90 -39.49 -v 1.94 16.37 -39.43 -v -0.40 3.34 -38.12 -v -0.34 5.20 -38.31 -v 0.05 2.94 -41.04 -v 0.27 4.65 -42.12 -v 0.29 7.13 -38.50 -v 0.58 6.72 -42.03 -v 0.67 6.59 -43.07 -v 0.75 7.71 -43.00 -v 1.10 7.67 -43.30 -v 1.43 15.17 -42.50 -v 1.44 7.70 -43.02 -v 1.76 15.18 -42.35 -v 1.50 7.81 -42.12 -v 1.78 15.24 -41.86 -v 1.75 8.22 -38.63 -v 1.92 15.54 -39.35 -v 1.82 16.10 -41.76 -v 1.82 16.67 -41.61 -v 0.34 8.23 -38.61 -v 0.87 15.54 -39.34 -v 0.67 7.82 -42.09 -v 0.92 16.38 -39.42 -v 1.07 15.25 -41.84 -v 1.10 15.19 -42.33 -v 1.49 17.19 -40.75 -v 1.48 17.32 -39.52 -v 1.06 16.91 -39.48 -v 1.15 16.68 -41.59 -v 1.10 16.10 -41.74 -v 1.14 16.05 -42.19 -v 1.47 16.03 -42.34 -v 1.80 16.05 -42.20 -v 1.81 16.63 -42.01 -v 1.82 16.83 -41.81 -v 1.17 16.83 -41.79 -v 1.50 16.81 -41.93 -v 1.17 16.63 -41.99 -v 1.49 16.61 -42.13 -v 0.94 4.41 -43.65 -v 0.48 4.74 -43.09 -v 1.05 6.55 -43.43 -v 1.41 4.73 -43.10 -v 1.44 3.03 -42.87 -v 1.58 4.64 -42.14 -v 1.61 2.93 -41.06 -v 2.02 3.32 -38.14 -v 1.63 1.73 -40.70 -v 1.99 1.54 -37.97 -v 1.44 1.15 -40.85 -v 1.75 0.67 -37.88 -v 0.74 0.99 -40.75 -v 0.67 0.46 -37.85 -v 0.05 1.17 -40.84 -v -0.39 0.69 -37.86 -v -0.54 1.56 -37.94 -v -0.09 1.74 -40.68 -v 0.78 1.47 -42.17 -v 0.24 1.84 -42.10 -v 1.35 1.83 -42.11 -v 0.84 2.58 -43.11 -v 0.29 3.04 -42.85 -v 2.09 4.08 -38.22 -v 2.14 5.18 -38.33 -v 1.49 6.71 -42.05 -v 1.69 7.13 -38.52 -v 1.41 6.58 -43.09 -# 69 vertices - -vn 1.00 0.09 -0.04 -vn 0.91 0.42 -0.05 -vn 0.99 0.16 -0.05 -vn -0.99 0.04 -0.16 -vn -0.97 0.15 -0.18 -vn -0.99 0.03 -0.16 -vn -0.98 0.10 -0.16 -vn -0.98 0.14 -0.13 -vn -0.99 0.11 -0.10 -vn -0.89 0.11 -0.45 -vn -0.88 0.09 -0.47 -vn -0.01 0.10 -1.00 -vn -0.01 0.13 -0.99 -vn 0.89 0.01 -0.46 -vn 0.83 0.04 -0.56 -vn 1.00 -0.03 -0.06 -vn 1.00 -0.04 -0.05 -vn 1.00 -0.04 -0.06 -vn 1.00 -0.03 -0.05 -vn 1.00 -0.02 -0.05 -vn 0.99 0.15 0.03 -vn -0.99 0.05 -0.10 -vn -0.99 0.06 -0.09 -vn -0.99 0.07 -0.10 -vn -0.99 0.14 -0.08 -vn -1.00 0.05 -0.08 -vn -0.82 0.12 -0.56 -vn 0.03 0.99 -0.13 -vn 0.02 0.99 -0.10 -vn -0.87 0.48 -0.08 -vn -0.97 0.24 -0.01 -vn -0.99 0.07 -0.08 -vn -0.79 0.19 -0.58 -vn -0.01 0.25 -0.97 -vn 0.80 0.12 -0.59 -vn 0.75 0.35 -0.55 -vn 0.71 0.64 -0.29 -vn -0.68 0.67 -0.30 -vn -0.00 0.83 -0.56 -vn -0.74 0.40 -0.55 -vn -0.01 0.51 -0.86 -vn 0.00 -0.04 -1.00 -vn -0.89 0.08 -0.45 -vn 0.00 0.09 -1.00 -vn 0.90 -0.01 -0.44 -vn 0.84 -0.22 -0.49 -vn 0.99 -0.01 -0.14 -vn 0.99 -0.06 -0.13 -vn 0.99 -0.05 -0.14 -vn 0.97 -0.15 -0.17 -vn 0.98 -0.17 -0.14 -vn 0.65 -0.71 -0.26 -vn 0.64 -0.75 -0.19 -vn -0.01 -0.97 -0.24 -vn -0.02 -0.98 -0.18 -vn -0.68 -0.67 -0.28 -vn -0.68 -0.70 -0.21 -vn -0.98 -0.08 -0.17 -vn -0.98 -0.06 -0.19 -vn -0.02 -0.80 -0.60 -vn -0.80 -0.39 -0.45 -vn 0.78 -0.46 -0.43 -vn -0.01 -0.46 -0.89 -vn -0.85 -0.14 -0.51 -vn -0.01 -0.10 -1.00 -vn 0.99 0.04 -0.13 -vn 1.00 0.03 -0.09 -vn 0.99 0.08 -0.07 -vn 0.90 0.02 -0.44 -vn 0.01 0.10 1.00 -# 70 vertex normals - -vt 0.93 0.98 0.00 -vt 0.93 0.99 0.00 -vt 0.93 0.83 0.00 -vt 0.93 0.85 0.00 -vt 0.96 0.83 0.00 -vt 0.98 0.85 0.00 -vt 0.93 0.87 0.00 -vt 0.97 0.87 0.00 -vt 0.98 0.87 0.00 -vt 0.98 0.88 0.00 -vt 0.99 0.88 0.00 -vt 0.97 0.97 0.00 -vt 0.97 0.88 0.00 -vt 0.96 0.97 0.00 -vt 0.93 0.89 0.00 -vt 0.93 0.97 0.00 -vt 0.96 0.98 0.00 -vt 0.96 0.99 0.00 -vt 0.95 0.99 0.00 -vt 0.93 1.00 0.00 -vt 0.97 0.98 0.00 -vt 0.97 0.99 0.00 -vt 1.00 0.84 0.00 -vt 0.99 0.85 0.00 -vt 0.99 0.87 0.00 -vt 0.99 0.83 0.00 -vt 0.96 0.81 0.00 -vt 0.93 0.81 0.00 -vt 0.96 0.80 0.00 -vt 0.93 0.80 0.00 -vt 0.96 0.79 0.00 -vt 0.93 0.79 0.00 -vt 0.98 0.80 0.00 -vt 0.98 0.81 0.00 -vt 0.99 0.82 0.00 -vt 0.93 0.84 0.00 -vt 0.65 0.02 0.00 -vt 0.65 0.03 0.00 -vt 0.66 0.02 0.00 -vt 0.64 0.03 0.00 -vt 0.56 0.01 0.00 -vt 0.55 0.03 0.00 -vt 0.55 0.01 0.00 -vt 0.53 0.03 0.00 -vt 0.52 0.01 0.00 -vt 0.48 0.03 0.00 -vt 0.48 0.01 0.00 -vt 0.48 0.02 0.00 -vt 0.56 0.03 0.00 -vt 0.49 0.03 0.00 -vt 0.51 0.03 0.00 -vt 0.49 0.01 0.00 -vt 0.53 0.01 0.00 -vt 0.64 0.01 0.00 -vt 0.65 0.01 0.00 -# 55 texture coords - -g P_51_Mustang_Rudder -f 2307/1479/2229 2308/1480/2230 2309/1479/2231 -f 2310/1481/2232 2311/1482/2233 2312/1483/2234 -f 2313/1484/2235 2312/1483/2234 2311/1482/2233 -f 2311/1482/2233 2314/1485/2236 2313/1484/2235 -f 2315/1486/2237 2313/1484/2235 2314/1485/2236 -f 2315/1486/2237 2316/1487/2238 2313/1484/2235 -f 2316/1487/2238 2315/1486/2237 2317/1488/2239 -f 2317/1488/2239 2318/1489/2240 2316/1487/2238 -f 2318/1489/2240 2317/1488/2239 2319/1490/2241 -f 2318/1489/2240 2319/1490/2241 2320/1488/2242 -f 2321/1490/2243 2320/1488/2242 2319/1490/2241 -f 2320/1488/2242 2321/1490/2243 2322/1491/2244 -f 2323/1492/2245 2322/1491/2244 2321/1490/2243 -f 2322/1491/2244 2323/1492/2245 2324/1493/2246 -f 2325/1494/2247 2324/1493/2246 2323/1492/2245 -f 2323/1492/2245 2326/1495/2248 2325/1494/2247 -f 2307/1479/2229 2325/1494/2247 2326/1495/2248 -f 2326/1495/2248 2327/1496/2249 2307/1479/2229 -f 2327/1496/2249 2308/1480/2230 2307/1479/2229 -f 2314/1485/2236 2328/1493/2250 2315/1486/2237 -f 2328/1493/2250 2329/1494/2251 2330/1491/2252 -f 2330/1491/2252 2315/1486/2237 2328/1493/2250 -f 2330/1491/2252 2317/1488/2239 2315/1486/2237 -f 2329/1494/2251 2331/1479/2253 2332/1492/2254 -f 2332/1492/2254 2330/1491/2252 2329/1494/2251 -f 2332/1492/2254 2333/1490/2255 2330/1491/2252 -f 2317/1488/2239 2330/1491/2252 2333/1490/2255 -f 2333/1490/2255 2319/1490/2241 2317/1488/2239 -f 2327/1496/2249 2334/1497/2256 2308/1480/2230 -f 2335/1498/2257 2308/1480/2230 2334/1497/2256 -f 2335/1498/2257 2334/1497/2256 2336/1480/2258 -f 2337/1496/2259 2336/1480/2258 2334/1497/2256 -f 2336/1480/2258 2337/1496/2259 2331/1479/2253 -f 2338/1495/2260 2331/1479/2253 2337/1496/2259 -f 2338/1495/2260 2332/1492/2254 2331/1479/2253 -f 2338/1495/2260 2339/1495/2261 2332/1492/2254 -f 2333/1490/2255 2332/1492/2254 2339/1495/2261 -f 2339/1495/2261 2340/1499/2262 2333/1490/2255 -f 2319/1490/2241 2333/1490/2255 2340/1499/2262 -f 2319/1490/2241 2340/1499/2262 2321/1490/2243 -f 2341/1495/2263 2321/1490/2243 2340/1499/2262 -f 2321/1490/2243 2341/1495/2263 2323/1492/2245 -f 2326/1495/2248 2323/1492/2245 2341/1495/2263 -f 2341/1495/2263 2342/1496/2264 2326/1495/2248 -f 2327/1496/2249 2326/1495/2248 2342/1496/2264 -f 2342/1496/2264 2343/1496/2265 2327/1496/2249 -f 2337/1496/2259 2334/1497/2256 2344/1496/2266 -f 2327/1496/2249 2343/1496/2265 2334/1497/2256 -f 2345/1496/2267 2334/1497/2256 2343/1496/2265 -f 2345/1496/2267 2344/1496/2266 2334/1497/2256 -f 2344/1496/2266 2345/1496/2267 2346/1496/2268 -f 2344/1496/2266 2346/1496/2268 2337/1496/2259 -f 2337/1496/2259 2346/1496/2268 2338/1495/2260 -f 2339/1495/2261 2338/1495/2260 2346/1496/2268 -f 2346/1496/2268 2347/1500/2269 2339/1495/2261 -f 2340/1499/2262 2339/1495/2261 2347/1500/2269 -f 2340/1499/2262 2347/1500/2269 2341/1495/2263 -f 2342/1496/2264 2341/1495/2263 2347/1500/2269 -f 2347/1500/2269 2345/1496/2267 2342/1496/2264 -f 2343/1496/2265 2342/1496/2264 2345/1496/2267 -f 2347/1500/2269 2346/1496/2268 2345/1496/2267 -f 2348/1501/2270 2349/1502/2271 2350/1503/2272 -f 2348/1501/2270 2350/1503/2272 2351/1502/2273 -f 2351/1502/2273 2352/1504/2274 2348/1501/2270 -f 2351/1502/2273 2353/1484/2275 2352/1504/2274 -f 2354/1483/2276 2352/1504/2274 2353/1484/2275 -f 2355/1481/2277 2354/1483/2276 2353/1484/2275 -f 2354/1483/2276 2355/1481/2277 2356/1505/2278 -f 2357/1506/2279 2356/1505/2278 2355/1481/2277 -f 2356/1505/2278 2357/1506/2279 2358/1507/2280 -f 2359/1508/2281 2358/1507/2280 2357/1506/2279 -f 2358/1507/2280 2359/1508/2281 2360/1509/2282 -f 2361/1510/2283 2360/1509/2282 2359/1508/2281 -f 2360/1509/2282 2361/1510/2283 2362/1507/2284 -f 2363/1508/2285 2362/1507/2284 2361/1510/2283 -f 2363/1508/2285 2364/1506/2286 2362/1507/2284 -f 2365/1505/2287 2362/1507/2284 2364/1506/2286 -f 2364/1506/2286 2310/1481/2232 2365/1505/2287 -f 2312/1483/2234 2365/1505/2287 2310/1481/2232 -f 2366/1511/2288 2362/1507/2284 2367/1512/2289 -f 2362/1507/2284 2366/1511/2288 2360/1509/2282 -f 2366/1511/2288 2358/1507/2280 2360/1509/2282 -f 2366/1511/2288 2368/1512/2290 2358/1507/2280 -f 2356/1505/2278 2358/1507/2280 2368/1512/2290 -f 2356/1505/2278 2368/1512/2290 2354/1483/2276 -f 2352/1504/2274 2354/1483/2276 2368/1512/2290 -f 2352/1504/2274 2368/1512/2290 2369/1513/2291 -f 2369/1513/2291 2348/1501/2270 2352/1504/2274 -f 2369/1513/2291 2370/1504/2292 2348/1501/2270 -f 2349/1502/2271 2348/1501/2270 2370/1504/2292 -f 2366/1511/2288 2369/1513/2291 2368/1512/2290 -f 2366/1511/2288 2367/1512/2289 2369/1513/2291 -f 2370/1504/2292 2369/1513/2291 2367/1512/2289 -f 2371/1514/2293 2355/1481/2277 2372/1482/2294 -f 2372/1482/2294 2355/1481/2277 2353/1484/2275 -f 2353/1484/2275 2373/1486/2295 2372/1482/2294 -f 2374/1485/2296 2372/1482/2294 2373/1486/2295 -f 2374/1485/2296 2373/1486/2295 2324/1493/2246 -f 2322/1491/2244 2324/1493/2246 2373/1486/2295 -f 2322/1491/2244 2373/1486/2295 2320/1488/2242 -f 2375/1487/2297 2320/1488/2242 2373/1486/2295 -f 2320/1488/2242 2375/1487/2297 2318/1489/2240 -f 2350/1503/2272 2318/1489/2240 2375/1487/2297 -f 2350/1503/2272 2316/1487/2238 2318/1489/2240 -f 2316/1487/2238 2350/1503/2272 2349/1502/2271 -f 2349/1502/2271 2313/1484/2235 2316/1487/2238 -f 2349/1502/2271 2370/1504/2292 2313/1484/2235 -f 2312/1483/2234 2313/1484/2235 2370/1504/2292 -f 2370/1504/2292 2367/1512/2289 2312/1483/2234 -f 2365/1505/2287 2312/1483/2234 2367/1512/2289 -f 2365/1505/2287 2367/1512/2289 2362/1507/2284 -f 2373/1486/2295 2353/1484/2275 2375/1487/2297 -f 2351/1502/2273 2375/1487/2297 2353/1484/2275 -f 2375/1487/2297 2351/1502/2273 2350/1503/2272 -f 2336/1515/2298 2331/1516/2298 2335/1517/2298 -f 2331/1516/2298 2329/1518/2298 2335/1517/2298 -f 2329/1518/2298 2324/1519/2298 2335/1517/2298 -f 2314/1520/2298 2324/1519/2298 2329/1518/2298 -f 2374/1521/2298 2324/1519/2298 2314/1520/2298 -f 2314/1520/2298 2311/1522/2298 2374/1521/2298 -f 2311/1522/2298 2371/1523/2298 2374/1521/2298 -f 2363/1524/2298 2371/1523/2298 2311/1522/2298 -f 2359/1525/2298 2371/1523/2298 2363/1524/2298 -f 2361/1526/2298 2359/1525/2298 2363/1524/2298 -f 2328/1527/2298 2314/1520/2298 2329/1518/2298 -f 2364/1528/2298 2363/1524/2298 2310/1529/2298 -f 2310/1529/2298 2363/1524/2298 2311/1522/2298 -f 2357/1530/2298 2371/1523/2298 2359/1525/2298 -f 2371/1523/2298 2372/1531/2298 2374/1521/2298 -f 2324/1519/2298 2325/1532/2298 2335/1517/2298 -f 2325/1532/2298 2309/1533/2298 2335/1517/2298 -f 2309/1533/2298 2308/1515/2298 2335/1517/2298 -# 132 faces - diff --git a/examples/web/models/resources/plane.png b/examples/web/models/resources/plane.png Binary files differdeleted file mode 100644 index b415138..0000000 --- a/examples/web/models/resources/plane.png +++ /dev/null diff --git a/examples/web/models/resources/plane/LICENSE b/examples/web/models/resources/plane/LICENSE new file mode 100644 index 0000000..57333b2 --- /dev/null +++ b/examples/web/models/resources/plane/LICENSE @@ -0,0 +1,9 @@ +WWI Plane Model created by GiaHanLam (https://sketchfab.com/GiaHanLam) +This model is free to use, licensed as Creative Commons Attribution (CC-BY 4.0) + +License details: https://creativecommons.org/licenses/by/4.0/ + +As per the license, author must be credited and commercial use is allowed. + +This model was donwload from author Sketchfab account: https://sketchfab.com/3d-models/wwi-plane-model-f0d39a6daacd4925a8922db193886715 + diff --git a/examples/web/models/resources/plane/plane.bin b/examples/web/models/resources/plane/plane.bin Binary files differnew file mode 100644 index 0000000..4e5ee53 --- /dev/null +++ b/examples/web/models/resources/plane/plane.bin diff --git a/examples/web/models/resources/plane/plane.gltf b/examples/web/models/resources/plane/plane.gltf new file mode 100644 index 0000000..928b172 --- /dev/null +++ b/examples/web/models/resources/plane/plane.gltf @@ -0,0 +1,327 @@ +{ + "accessors": [ + { + "bufferView": 2, + "componentType": 5126, + "count": 3446, + "max": [ + 143.99604797363281, + 168.74668884277344, + 75.31597900390625 + ], + "min": [ + -143.99604797363281, + -43.94732666015625, + -49.556678771972656 + ], + "type": "VEC3" + }, + { + "bufferView": 2, + "byteOffset": 41352, + "componentType": 5126, + "count": 3446, + "max": [ + 1, + 0.99916732311248779, + 0.99978786706924438 + ], + "min": [ + -1, + -0.99928808212280273, + -0.99977350234985352 + ], + "type": "VEC3" + }, + { + "bufferView": 3, + "componentType": 5126, + "count": 3446, + "max": [ + 1, + 1, + 1, + 1 + ], + "min": [ + 0, + 0, + 0, + 0 + ], + "type": "VEC4" + }, + { + "bufferView": 1, + "componentType": 5126, + "count": 3446, + "max": [ + 4.8965663909912109, + 0.99786919355392456 + ], + "min": [ + 0.0036561768501996994, + 0.0083234198391437531 + ], + "type": "VEC2" + }, + { + "bufferView": 0, + "componentType": 5125, + "count": 7692, + "max": [ + 3445 + ], + "min": [ + 0 + ], + "type": "SCALAR" + } + ], + "asset": { + "extras": { + "author": "GiaHanLam (https://sketchfab.com/GiaHanLam)", + "license": "CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)", + "source": "https://sketchfab.com/3d-models/wwi-plane-model-f0d39a6daacd4925a8922db193886715", + "title": "WWI Plane Model" + }, + "generator": "Sketchfab-8.25.0", + "version": "2.0" + }, + "bufferViews": [ + { + "buffer": 0, + "byteLength": 30768, + "byteOffset": 0, + "name": "floatBufferViews", + "target": 34963 + }, + { + "buffer": 0, + "byteLength": 27568, + "byteOffset": 30768, + "byteStride": 8, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 82704, + "byteOffset": 58336, + "byteStride": 12, + "name": "floatBufferViews", + "target": 34962 + }, + { + "buffer": 0, + "byteLength": 55136, + "byteOffset": 141040, + "byteStride": 16, + "name": "floatBufferViews", + "target": 34962 + } + ], + "buffers": [ + { + "byteLength": 196176, + "uri": "plane.bin" + } + ], + "images": [ + { + "uri": "plane_diffuse.png" + } + ], + "materials": [ + { + "doubleSided": true, + "name": "Material_24", + "pbrMetallicRoughness": { + "baseColorFactor": [ + 1, + 1, + 1, + 1 + ], + "baseColorTexture": { + "index": 0, + "texCoord": 0 + }, + "metallicFactor": 0, + "roughnessFactor": 0.59999999999999998 + } + } + ], + "meshes": [ + { + "name": "BODY_Material #24_0", + "primitives": [ + { + "attributes": { + "COLOR_0": 2, + "NORMAL": 1, + "POSITION": 0, + "TEXCOORD_0": 3 + }, + "indices": 4, + "material": 0, + "mode": 4 + } + ] + } + ], + "nodes": [ + { + "children": [ + 1 + ], + "name": "RootNode (gltf orientation matrix)", + "rotation": [ + -0.70710678118654746, + -0, + -0, + 0.70710678118654757 + ] + }, + { + "children": [ + 2 + ], + "name": "RootNode (model correction matrix)" + }, + { + "children": [ + 3 + ], + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + -1, + 0, + 0, + 0, + 0, + 0, + 1 + ], + "name": "base" + }, + { + "children": [ + 4, + 6 + ], + "name": "RootNode" + }, + { + "children": [ + 5 + ], + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 2.2204460492503131e-16, + -1, + 0, + 0, + 1, + 2.2204460492503131e-16, + 0, + 0, + 0, + 0, + 1 + ], + "name": "BODY" + }, + { + "mesh": 0, + "name": "BODY_Material #24_0" + }, + { + "children": [ + 7 + ], + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + 0, + -680, + 0, + 90, + 1 + ], + "name": "Sky001" + }, + { + "children": [ + 8 + ], + "matrix": [ + 1, + 0, + 0, + 0, + 0, + 2.2204460492503131e-16, + 1, + 0, + 0, + -1, + 2.2204460492503131e-16, + 0, + 0, + 0, + 0, + 1 + ], + "name": "" + }, + { + "name": "" + } + ], + "samplers": [ + { + "magFilter": 9729, + "minFilter": 9987, + "wrapS": 10497, + "wrapT": 10497 + } + ], + "scene": 0, + "scenes": [ + { + "name": "OSG_Scene", + "nodes": [ + 0 + ] + } + ], + "textures": [ + { + "sampler": 0, + "source": 0 + } + ] +} + diff --git a/examples/web/models/resources/plane/plane_diffuse.png b/examples/web/models/resources/plane/plane_diffuse.png Binary files differnew file mode 100644 index 0000000..07371c0 --- /dev/null +++ b/examples/web/models/resources/plane/plane_diffuse.png diff --git a/examples/web/models/resources/plane_diffuse.png b/examples/web/models/resources/plane_diffuse.png Binary files differdeleted file mode 100644 index c02a9e2..0000000 --- a/examples/web/models/resources/plane_diffuse.png +++ /dev/null diff --git a/examples/web/shaders/shaders_basic_lighting.c b/examples/web/shaders/shaders_basic_lighting.c index e21ee14..b290a19 100644 --- a/examples/web/shaders/shaders_basic_lighting.c +++ b/examples/web/shaders/shaders_basic_lighting.c @@ -83,7 +83,7 @@ int main(void) camera.target = (Vector3){ 0.0f, 0.5f, 0.0f }; // Camera looking at point camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) camera.fovy = 45.0f; // Camera field-of-view Y - camera.type = CAMERA_PERSPECTIVE; // Camera mode type + camera.projection = CAMERA_PERSPECTIVE; // Camera mode type // Load models modelA = LoadModelFromMesh(GenMeshTorus(0.4f, 1.0f, 16, 32)); diff --git a/examples/web/shaders/shaders_custom_uniform.c b/examples/web/shaders/shaders_custom_uniform.c index e574dc4..27fae05 100644 --- a/examples/web/shaders/shaders_custom_uniform.c +++ b/examples/web/shaders/shaders_custom_uniform.c @@ -68,7 +68,7 @@ int main(void) camera.target = (Vector3){ 0.0f, 1.5f, 0.0f }; camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; camera.fovy = 45.0f; - camera.type = CAMERA_PERSPECTIVE; + camera.projection = CAMERA_PERSPECTIVE; model = LoadModel("resources/models/barracks.obj"); // Load OBJ model texture = LoadTexture("resources/models/barracks_diffuse.png"); // Load model texture diff --git a/examples/web/shaders/shaders_fog.c b/examples/web/shaders/shaders_fog.c index 0b36bcf..0e0b000 100644 --- a/examples/web/shaders/shaders_fog.c +++ b/examples/web/shaders/shaders_fog.c @@ -84,7 +84,7 @@ int main(void) camera.target = (Vector3){ 0.0f, 0.5f, 0.0f }; camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; camera.fovy = 45.0f; - camera.type = CAMERA_PERSPECTIVE; + camera.projection = CAMERA_PERSPECTIVE; // Load models and texture modelA = LoadModelFromMesh(GenMeshTorus(0.4f, 1.0f, 16, 32)); diff --git a/examples/web/shaders/shaders_model_shader.c b/examples/web/shaders/shaders_model_shader.c index 18abea5..e69ab8d 100644 --- a/examples/web/shaders/shaders_model_shader.c +++ b/examples/web/shaders/shaders_model_shader.c @@ -63,7 +63,7 @@ int main(void) camera.target = (Vector3){ 0.0f, 1.0f, -1.0f }; camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; camera.fovy = 45.0f; - camera.type = CAMERA_PERSPECTIVE; + camera.projection = CAMERA_PERSPECTIVE; model = LoadModel("resources/models/watermill.obj"); // Load OBJ model texture = LoadTexture("resources/models/watermill_diffuse.png"); // Load model texture diff --git a/examples/web/shaders/shaders_rlgl_mesh_instanced.c b/examples/web/shaders/shaders_rlgl_mesh_instanced.c index a42882b..b4105d1 100644 --- a/examples/web/shaders/shaders_rlgl_mesh_instanced.c +++ b/examples/web/shaders/shaders_rlgl_mesh_instanced.c @@ -77,7 +77,7 @@ int main(void) camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; camera.fovy = 45.0f; - camera.type = CAMERA_PERSPECTIVE; + camera.projection = CAMERA_PERSPECTIVE; cube = GenMeshCube(1.0f, 1.0f, 1.0f); diff --git a/examples/web/shaders/shaders_simple_mask.c b/examples/web/shaders/shaders_simple_mask.c index 79effab..390d602 100644 --- a/examples/web/shaders/shaders_simple_mask.c +++ b/examples/web/shaders/shaders_simple_mask.c @@ -76,7 +76,7 @@ int main(void) camera.target = (Vector3){ 0.0f, 0.0f, 0.0f }; camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; camera.fovy = 45.0f; - camera.type = CAMERA_PERSPECTIVE; + camera.projection = CAMERA_PERSPECTIVE; // Define our three models to show the shader on torus = GenMeshTorus(.3, 1, 16, 32); |
