# HG changeset patch # User Charlie Stockman # Date 1123571423 0 # Node ID ed017b9c532d8ca27717bd8e6df25c09b64bed31 # Parent f854402837ba8237c5c5dbb036fe82c1313e094b [gaim-migrate @ 13350] crazychat commit, first one. committer: Tailor Script diff -r f854402837ba -r ed017b9c532d plugins/crazychat/Makefile.am --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/Makefile.am Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,43 @@ +plugindir = $(libdir)/gaim + +if ENABLE_DEBUG +DEBUG_CPPFLAGS = -g -pg +# DEBUG_CPPFLAGS = -D_DEBUG_ -g -pg +DEBUG_LDFLAGS = -pg +else +DEBUG_CPPFLAGS = -O2 +DEBUG_LDFLAGS = +endif + +plugin_LTLIBRARIES = crazychat.la +if DISABLE_QT +crazychat_la_LDFLAGS = -module -avoid-version $(DEBUG_LDFLAGS) +crazychat_la_SOURCES = cc_gaim_plugin.c cc_gtk_gl.c cc_gtk_gl.h \ + cc_interface.h crazychat.c crazychat.h util.h \ + cc_network.c cc_network.h filter.c filter.h\ + cc_output.c face.c face.h doggy.c doggy.h glm.h glm.c sharky.h sharky.c models.h models.c + +QT_CPPFLAGS = -D_DISABLE_QT_ +else +crazychat_la_LDFLAGS = -module -avoid-version $(DEBUG_LDFLAGS) \ + -XCClinker -framework -XCClinker Carbon -XCClinker -framework \ + -XCClinker QuickTime + +crazychat_la_SOURCES = cc_features.c cc_gaim_plugin.c cc_gtk_gl.c cc_gtk_gl.h \ + cc_interface.h crazychat.c crazychat.h util.h \ + cc_network.c cc_network.h filter.c filter.h\ + cc_output.c face.c face.h doggy.c doggy.h glm.h glm.c sharky.h sharky.c models.h models.c\ + QTUtilities.c Utilities.c camdata.c camproc.c Utilities.h + +QT_CPPFLAGS = +endif + +crazychat_la_LIBADD = $(PTHREAD_LIB) $(GTKGLEXT_LIBS) + +AM_CFLAGS = $(GTK_CFLAGS) \ + $(GTKGLEXT_CFLAGS) \ + -I$(top_srcdir)/include + +AM_CPPFLAGS = -DGAIM_PLUGINS \ + $(DEBUG_CPPFLAGS) \ + $(QT_CPPFLAGS) diff -r f854402837ba -r ed017b9c532d plugins/crazychat/QTUtilities.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/QTUtilities.c Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,306 @@ +/* + File: QTUtilities.c + + Description: Miscellaneous QuickTime utility routines. + + Copyright: © Copyright 2003 Apple Computer, Inc. All rights reserved. + + Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. + ("Apple") in consideration of your agreement to the following terms, and your + use, installation, modification or redistribution of this Apple software + constitutes acceptance of these terms. If you do not agree with these terms, + please do not use, install, modify or redistribute this Apple software. + + In consideration of your agreement to abide by the following terms, and subject + to these terms, Apple grants you a personal, non-exclusive license, under Apple’s + copyrights in this original Apple software (the "Apple Software"), to use, + reproduce, modify and redistribute the Apple Software, with or without + modifications, in source and/or binary forms; provided that if you redistribute + the Apple Software in its entirety and without modifications, you must retain + this notice and the following text and disclaimers in all such redistributions of + the Apple Software. Neither the name, trademarks, service marks or logos of + Apple Computer, Inc. may be used to endorse or promote products derived from the + Apple Software without specific prior written permission from Apple. Except as + expressly stated in this notice, no other rights or licenses, express or implied, + are granted by Apple herein, including but not limited to any patent rights that + may be infringed by your derivative works or by other works in which the Apple + Software may be incorporated. + + The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO + WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN + COMBINATION WITH YOUR PRODUCTS. + + IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION + OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT + (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Change History (most recent first): + +*/ + +#include "QTUtilities.h" +#include "Utilities.h" + +#define BailErr(x) {if (x != noErr) goto bail;} + +////////// +// +// GetMovieFromFile +// Opens a movie file, then creates a new movie for the file +// +////////// + +OSErr GetMovieFromFile(FSSpec *fsspecPtr, Movie *theMovie) +{ + short resRefNum = -1; + OSErr result; + + *theMovie = NULL; + + result = OpenMovieFile(fsspecPtr, &resRefNum, 0); + if (result == noErr) + { + short actualResId = DoTheRightThing; + + result = NewMovieFromFile(theMovie, + resRefNum, + &actualResId, + (unsigned char *) 0, + 0, + (Boolean *) 0); + CloseMovieFile(resRefNum); + } + + return result; +} + +////////// +// +// GetAMovieFile +// Prompt the user for a movie file, then open +// the file and create a movie for it. +// +////////// + +OSErr GetAMovieFile(Movie *theMovie) +{ + OSType myTypeList[2] = {kQTFileTypeMovie, kQTFileTypeQuickTimeImage}; + FSSpec theFSSpec; + OSErr result = noErr; + + *theMovie = nil; + + result = GetOneFileWithPreview(2, myTypeList, &theFSSpec, NULL); + if (result != userCanceledErr) + { + result = GetMovieFromFile(&theFSSpec, theMovie); + } + + return result; +} + +////////// +// +// NormalizeMovieRect +// +////////// + +void NormalizeMovieRect(Movie theMovie) +{ + Rect movieBounds; + + GetMovieBox(theMovie, &movieBounds); + OffsetRect(&movieBounds, -movieBounds.left, -movieBounds.top); + movieBounds.right = movieBounds.left + 640; + movieBounds.bottom = movieBounds.top + 480; + SetMovieBox(theMovie, &movieBounds); +} + +////////// +// +// EraseRectAndAlpha +// Zeros out a section of the GWorld, including alpha. +// +////////// + +void EraseRectAndAlpha(GWorldPtr gWorld, Rect *pRect) +{ + PixMapHandle pixMap = GetGWorldPixMap(gWorld); + long rows; + Ptr rowBaseAddr; + + + LockPixels(pixMap); + rows = pRect->bottom - pRect->top; + + rowBaseAddr = GetPixBaseAddr(pixMap) + (GetPixRowBytes(pixMap) & 0x3fff) * pRect->top + pRect->left * GetPixDepth(pixMap) / 8; + do + { + long cols; + UInt32 *baseAddr; + + cols = pRect->right - pRect->left; + baseAddr = (UInt32*)rowBaseAddr; + rowBaseAddr += (**pixMap).rowBytes & 0x3fff; + do + { + *baseAddr++ = 0; + } while (--cols); + } while (--rows); + + UnlockPixels(pixMap); + +} // EraseRectAndAlpha + +////////// +// +// CreateDecompSeqForSGChannelData +// Create a decompression sequence for the passed +// Sequence Grabber channel data +// +////////// + +OSErr CreateDecompSeqForSGChannelData(SGChannel sgChannel, Rect *srcBounds, GWorldPtr imageDestination, ImageSequence *imageSeqID) +{ + OSErr err = noErr; + + ImageDescriptionHandle imageDesc = (ImageDescriptionHandle)NewHandle(sizeof(ImageDescription)); + if (imageDesc) + { + + err = SGGetChannelSampleDescription(sgChannel,(Handle)imageDesc); + // The original version of this code had a bug - it passed in a Crop Rect to DecompressSequenceBegin instead of a scaling matrix + // This only worked because of another bug inside QT that reated the crop Rect as a destination rect for DV + // the following code does the right thing in all cases. + + if (err == noErr) + { + MatrixRecord mr; + Rect fromR; + + fromR.left = 0; + fromR.top = 0; + fromR.right = (**imageDesc).width; + fromR.bottom = (**imageDesc).height; + RectMatrix(&mr, &fromR, srcBounds); + + err = DecompressSequenceBegin(imageSeqID, imageDesc, imageDestination, 0, nil, &mr,srcCopy,nil,0, codecNormalQuality, bestSpeedCodec); + } + + DisposeHandle((Handle)imageDesc); + } + else + { + err = MemError(); + } + + return err; +} + + +////////// +// +// CreateDecompSeqForGWorldData +// Create a decompression sequence for the specified gworld data +// +////////// + +OSErr CreateDecompSeqForGWorldData(GWorldPtr srcGWorld, Rect *srcBounds, MatrixRecordPtr mr, GWorldPtr imageDestination, ImageSequence *imageSeqID) +{ + OSErr err; + + ImageDescriptionHandle imageDesc = (ImageDescriptionHandle)NewHandle(sizeof(ImageDescription)); + if (imageDesc) + { + err = MakeImageDescriptionForPixMap (GetGWorldPixMap(srcGWorld), &imageDesc); + err = DecompressSequenceBegin( imageSeqID, + imageDesc, + imageDestination, + 0, + srcBounds, + mr, + srcCopy, + nil, + 0, + codecNormalQuality, + bestSpeedCodec); + DisposeHandle((Handle)imageDesc); + } + else + { + err = MemError(); + } + + return err; +} + +////////// +// +// CreateNewSGChannelForRecording +// - create a new Sequence Grabber video channel +// - let the use configure the channel +// - set the channel bounds, usage +// - set a data proc for the channel +// - start recording data +// +////////// + +OSErr CreateNewSGChannelForRecording(ComponentInstance seqGrab, SGDataUPP dataProc, CGrafPtr drawPort, Rect *theRect, SGChannel *sgChannel, long refCon) +{ + OSErr err = noErr; + + BailErr((err = SGInitialize(seqGrab))); + + // tell it we're not making a movie + BailErr((err = SGSetDataRef(seqGrab,0,0,seqGrabDontMakeMovie))); + // It wants a port, even if its not drawing to it + BailErr((err = SGSetGWorld(seqGrab, drawPort, GetMainDevice()))); + BailErr((err = SGNewChannel(seqGrab, VideoMediaType, sgChannel))); + + // let the user configure the video channel + //BailErr((err = SGSettingsDialog(seqGrab, *sgChannel, 0, nil, 0, nil, 0))); // ************************ +// ************************************************************ + + + + BailErr((err = SGSetChannelBounds(*sgChannel, theRect))); + // set usage for new video channel to avoid playthrough + BailErr((err = SGSetChannelUsage(*sgChannel, seqGrabRecord ))); //note we don't set seqGrabPlayDuringRecord + BailErr((err = SGSetDataProc(seqGrab, dataProc, refCon))); + BailErr((err = SGStartRecord(seqGrab))); + +bail: + return err; +} + +////////// +// +// DoCloseSG +// Terminate recording for our SG channel - dispose of the channel and +// the associated SG component instance +// +////////// + +void DoCloseSG(ComponentInstance seqGrab, SGChannel sgChannel, SGDataUPP dataProc) +{ + if(seqGrab) + { + SGStop(seqGrab); + SGSetDataProc(seqGrab, NULL ,NULL); + if (dataProc) + { + DisposeSGDataUPP(dataProc); + } + + SGDisposeChannel(seqGrab, sgChannel); + CloseComponent(seqGrab); + } +} + + diff -r f854402837ba -r ed017b9c532d plugins/crazychat/QTUtilities.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/QTUtilities.h Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,65 @@ +/* + File: QTUtilities.h + + Description: Interface file for QTUtilities.c source code. + + Copyright: © Copyright 2003 Apple Computer, Inc. All rights reserved. + + Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. + ("Apple") in consideration of your agreement to the following terms, and your + use, installation, modification or redistribution of this Apple software + constitutes acceptance of these terms. If you do not agree with these terms, + please do not use, install, modify or redistribute this Apple software. + + In consideration of your agreement to abide by the following terms, and subject + to these terms, Apple grants you a personal, non-exclusive license, under Apple’s + copyrights in this original Apple software (the "Apple Software"), to use, + reproduce, modify and redistribute the Apple Software, with or without + modifications, in source and/or binary forms; provided that if you redistribute + the Apple Software in its entirety and without modifications, you must retain + this notice and the following text and disclaimers in all such redistributions of + the Apple Software. Neither the name, trademarks, service marks or logos of + Apple Computer, Inc. may be used to endorse or promote products derived from the + Apple Software without specific prior written permission from Apple. Except as + expressly stated in this notice, no other rights or licenses, express or implied, + are granted by Apple herein, including but not limited to any patent rights that + may be infringed by your derivative works or by other works in which the Apple + Software may be incorporated. + + The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO + WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN + COMBINATION WITH YOUR PRODUCTS. + + IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION + OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT + (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Change History (most recent first): + +*/ + +#ifdef __APPLE_CC__ +// #include + #include +#else +// #include + #include +#endif + +#define kSourceNoneName FOUR_CHAR_CODE('srcZ') + + +OSErr GetMovieFromFile(FSSpec *fsspecPtr, Movie *theMovie); +void NormalizeMovieRect(Movie theMovie); +void EraseRectAndAlpha(GWorldPtr gWorld, Rect *pRect); +OSErr GetAMovieFile(Movie *theMovie); +OSErr CreateDecompSeqForSGChannelData(SGChannel sgChannel, Rect *srcBounds, GWorldPtr imageDestination, ImageSequence *imageSeqID); +OSErr CreateDecompSeqForGWorldData(GWorldPtr srcGWorld, Rect *srcBounds, MatrixRecordPtr mr, GWorldPtr imageDestination, ImageSequence *imageSeqID); +OSErr CreateNewSGChannelForRecording(ComponentInstance seqGrab, SGDataUPP dataProc, CGrafPtr drawPort, Rect *theRect, SGChannel *sgChannel, long refCon); +void DoCloseSG(ComponentInstance seqGrab, SGChannel sgChannel, SGDataUPP dataProc); diff -r f854402837ba -r ed017b9c532d plugins/crazychat/Utilities.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/Utilities.c Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,283 @@ +/* + File: Utilities.c + + Description: Miscellaneous Utility routines. + + Copyright: © Copyright 2003 Apple Computer, Inc. All rights reserved. + + Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. + ("Apple") in consideration of your agreement to the following terms, and your + use, installation, modification or redistribution of this Apple software + constitutes acceptance of these terms. If you do not agree with these terms, + please do not use, install, modify or redistribute this Apple software. + + In consideration of your agreement to abide by the following terms, and subject + to these terms, Apple grants you a personal, non-exclusive license, under Apple’s + copyrights in this original Apple software (the "Apple Software"), to use, + reproduce, modify and redistribute the Apple Software, with or without + modifications, in source and/or binary forms; provided that if you redistribute + the Apple Software in its entirety and without modifications, you must retain + this notice and the following text and disclaimers in all such redistributions of + the Apple Software. Neither the name, trademarks, service marks or logos of + Apple Computer, Inc. may be used to endorse or promote products derived from the + Apple Software without specific prior written permission from Apple. Except as + expressly stated in this notice, no other rights or licenses, express or implied, + are granted by Apple herein, including but not limited to any patent rights that + may be infringed by your derivative works or by other works in which the Apple + Software may be incorporated. + + The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO + WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN + COMBINATION WITH YOUR PRODUCTS. + + IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION + OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT + (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Change History (most recent first): + +*/ + +#ifndef __UTILITIES__ + #include "Utilities.h" +#endif + +const OSType kApplicationSignature = FOUR_CHAR_CODE('cvmj'); +const ResType kOpenResourceType = FOUR_CHAR_CODE('open'); +const StringPtr kApplicationName = "\pYourAppNameHere"; + +////////// +// +// GetOneFileWithPreview +// Display the appropriate file-opening dialog box, with an optional QuickTime preview pane. If the user +// selects a file, return information about it using the theFSSpecPtr parameter. +// +// Note that both StandardGetFilePreview and NavGetFile use the function specified by theFilterProc as a +// file filter. This framework always passes NULL in the theFilterProc parameter. If you use this function +// in your own code, keep in mind that on Windows the function specifier must be of type FileFilterUPP and +// on Macintosh it must be of type NavObjectFilterUPP. (You can use the QTFrame_GetFileFilterUPP to create +// a function specifier of the appropriate type.) Also keep in mind that Navigation Services expects a file +// filter function to return true if a file is to be displayed, while the Standard File Package expects the +// filter to return false if a file is to be displayed. +// +////////// + +OSErr GetOneFileWithPreview (short theNumTypes, TypeListPtr theTypeList, FSSpecPtr theFSSpecPtr, void *theFilterProc) +{ + +#if TARGET_OS_WIN32 + StandardFileReply myReply; +#endif +#if TARGET_OS_MAC + NavReplyRecord myReply; + NavDialogOptions myDialogOptions; + NavTypeListHandle myOpenList = NULL; + NavEventUPP myEventUPP = NewNavEventUPP(HandleNavEvent); +#endif + OSErr myErr = noErr; + + if (theFSSpecPtr == NULL) + return(paramErr); + +#if TARGET_OS_WIN32 + // prompt the user for a file + StandardGetFilePreview((FileFilterUPP)theFilterProc, theNumTypes, (ConstSFTypeListPtr)theTypeList, &myReply); + if (!myReply.sfGood) + return(userCanceledErr); + + // make an FSSpec record + myErr = FSMakeFSSpec(myReply.sfFile.vRefNum, myReply.sfFile.parID, myReply.sfFile.name, theFSSpecPtr); +#endif + +#if TARGET_OS_MAC + // specify the options for the dialog box + NavGetDefaultDialogOptions(&myDialogOptions); + myDialogOptions.dialogOptionFlags -= kNavNoTypePopup; + myDialogOptions.dialogOptionFlags -= kNavAllowMultipleFiles; + BlockMoveData(kApplicationName, myDialogOptions.clientName, kApplicationName[0] + 1); + + // create a handle to an 'open' resource + myOpenList = (NavTypeListHandle)CreateOpenHandle(kApplicationSignature, theNumTypes, theTypeList); + if (myOpenList != NULL) + HLock((Handle)myOpenList); + + // prompt the user for a file + myErr = NavGetFile(NULL, &myReply, &myDialogOptions, myEventUPP, NULL, (NavObjectFilterUPP)theFilterProc, myOpenList, NULL); + if ((myErr == noErr) && myReply.validRecord) { + AEKeyword myKeyword; + DescType myActualType; + Size myActualSize = 0; + + // get the FSSpec for the selected file + if (theFSSpecPtr != NULL) + myErr = AEGetNthPtr(&(myReply.selection), 1, typeFSS, &myKeyword, &myActualType, theFSSpecPtr, sizeof(FSSpec), &myActualSize); + + NavDisposeReply(&myReply); + } + + if (myOpenList != NULL) { + HUnlock((Handle)myOpenList); + DisposeHandle((Handle)myOpenList); + } + + DisposeNavEventUPP(myEventUPP); +#endif + + return(myErr); +} + +////////// +// +// CreateOpenHandle +// Get the 'open' resource or dynamically create a NavTypeListHandle. +// +////////// + +Handle CreateOpenHandle (OSType theApplicationSignature, short theNumTypes, TypeListPtr theTypeList) +{ + Handle myHandle = NULL; + + // see if we have an 'open' resource... + myHandle = Get1Resource('open', 128); + if ( myHandle != NULL && ResError() == noErr ) { + DetachResource( myHandle ); + return myHandle; + } else { + myHandle = NULL; + } + + // nope, use the passed in types and dynamically create the NavTypeList + if (theTypeList == NULL) + return myHandle; + + if (theNumTypes > 0) { + myHandle = NewHandle(sizeof(NavTypeList) + (theNumTypes * sizeof(OSType))); + if (myHandle != NULL) { + NavTypeListHandle myOpenResHandle = (NavTypeListHandle)myHandle; + + (*myOpenResHandle)->componentSignature = theApplicationSignature; + (*myOpenResHandle)->osTypeCount = theNumTypes; + BlockMoveData(theTypeList, (*myOpenResHandle)->osType, theNumTypes * sizeof(OSType)); + } + } + + return myHandle; +} + +////////// +// +// HandleNavEvent +// A callback procedure that handles events while a Navigation Service dialog box is displayed. +// +////////// + +PASCAL_RTN void HandleNavEvent(NavEventCallbackMessage theCallBackSelector, NavCBRecPtr theCallBackParms, void *theCallBackUD) +{ +#pragma unused(theCallBackUD) + + if (theCallBackSelector == kNavCBEvent) { + switch (theCallBackParms->eventData.eventDataParms.event->what) { + case updateEvt: +#if TARGET_OS_MAC + // Handle Update Event +#endif + break; + case nullEvent: + // Handle Null Event + break; + } + } +} + +////////// +// +// PutFile +// Save a file under the specified name. Return Boolean values indicating whether the user selected a file +// and whether the selected file is replacing an existing file. +// +////////// + +OSErr PutFile (ConstStr255Param thePrompt, ConstStr255Param theFileName, FSSpecPtr theFSSpecPtr, Boolean *theIsSelected, Boolean *theIsReplacing) +{ + NavReplyRecord myReply; + NavDialogOptions myDialogOptions; + NavEventUPP myEventUPP = NewNavEventUPP(HandleNavEvent); + OSErr myErr = noErr; + + if ((theFSSpecPtr == NULL) || (theIsSelected == NULL) || (theIsReplacing == NULL)) + return(paramErr); + + // assume we are not replacing an existing file + *theIsReplacing = false; + + *theIsSelected = false; + + // specify the options for the dialog box + NavGetDefaultDialogOptions(&myDialogOptions); + myDialogOptions.dialogOptionFlags += kNavNoTypePopup; + myDialogOptions.dialogOptionFlags += kNavDontAutoTranslate; + BlockMoveData(theFileName, myDialogOptions.savedFileName, theFileName[0] + 1); + BlockMoveData(thePrompt, myDialogOptions.message, thePrompt[0] + 1); + + // prompt the user for a file + myErr = NavPutFile(NULL, &myReply, &myDialogOptions, myEventUPP, MovieFileType, sigMoviePlayer, NULL); + if ((myErr == noErr) && myReply.validRecord) + { + AEKeyword myKeyword; + DescType myActualType; + Size myActualSize = 0; + + // get the FSSpec for the selected file + if (theFSSpecPtr != NULL) + myErr = AEGetNthPtr(&(myReply.selection), 1, typeFSS, &myKeyword, &myActualType, theFSSpecPtr, sizeof(FSSpec), &myActualSize); + + *theIsSelected = myReply.validRecord; + if (myReply.validRecord) + { + *theIsReplacing = myReply.replacing; + } + + NavDisposeReply(&myReply); + } + + + DisposeNavEventUPP(myEventUPP); + + return(myErr); +} + +////////// +// +// DrawLobsterPICTtoGWorld +// Draws our lobster image to the specified gworld +// +////////// + +void DrawLobsterPICTtoGWorld(CGrafPtr destGWorld, Rect *srcRect) +{ + // put the overlay into the GWorld, move the picture to the bottom right of the movie + PicHandle pict = GetPicture(129); + if (pict) + { + CGrafPtr oldPort; + GDHandle oldDevice; + Rect frame = (**pict).picFrame; + + GetGWorld(&oldPort, &oldDevice); + SetGWorld(destGWorld, nil); + // normalize coordinates + OffsetRect(&frame, -frame.left, -frame.left); + // grow frame to be as big as source rect + OffsetRect(&frame, srcRect->right - frame.right, srcRect->bottom - frame.bottom); + DrawPicture(pict, &frame); + SetGWorld(oldPort, oldDevice); + ReleaseResource((Handle)pict); + } +} + diff -r f854402837ba -r ed017b9c532d plugins/crazychat/Utilities.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/Utilities.h Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,83 @@ +/* + File: Utilities.h + + Description: Interface file for Utilities.c source code. + + Copyright: © Copyright 2003 Apple Computer, Inc. All rights reserved. + + Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Computer, Inc. + ("Apple") in consideration of your agreement to the following terms, and your + use, installation, modification or redistribution of this Apple software + constitutes acceptance of these terms. If you do not agree with these terms, + please do not use, install, modify or redistribute this Apple software. + + In consideration of your agreement to abide by the following terms, and subject + to these terms, Apple grants you a personal, non-exclusive license, under Apple’s + copyrights in this original Apple software (the "Apple Software"), to use, + reproduce, modify and redistribute the Apple Software, with or without + modifications, in source and/or binary forms; provided that if you redistribute + the Apple Software in its entirety and without modifications, you must retain + this notice and the following text and disclaimers in all such redistributions of + the Apple Software. Neither the name, trademarks, service marks or logos of + Apple Computer, Inc. may be used to endorse or promote products derived from the + Apple Software without specific prior written permission from Apple. Except as + expressly stated in this notice, no other rights or licenses, express or implied, + are granted by Apple herein, including but not limited to any patent rights that + may be infringed by your derivative works or by other works in which the Apple + Software may be incorporated. + + The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO + WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED + WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN + COMBINATION WITH YOUR PRODUCTS. + + IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION + OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT + (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Change History (most recent first): + +*/ + +#ifdef __APPLE_CC__ +// #include + #include +#else +// #include + #include +#endif + + +#define kTypeListCount 2 +#if TARGET_OS_MAC + #define PASCAL_RTN pascal +#endif + +#ifdef __APPLE_CC__ + #define sigMoviePlayer FOUR_CHAR_CODE('TVOD') +#else + #include +#endif + + +// +// Typedefs +// +typedef const OSTypePtr TypeListPtr; + + +// +// Prototypes +// +OSErr GetOneFileWithPreview (short theNumTypes, TypeListPtr theTypeList, FSSpecPtr theFSSpecPtr, void *theFilterProc); +Handle CreateOpenHandle (OSType theApplicationSignature, short theNumTypes, TypeListPtr theTypeList); +PASCAL_RTN void HandleNavEvent(NavEventCallbackMessage theCallBackSelector, NavCBRecPtr theCallBackParms, void *theCallBackUD); +OSErr PutFile (ConstStr255Param thePrompt, ConstStr255Param theFileName, FSSpecPtr theFSSpecPtr, Boolean *theIsSelected, Boolean *theIsReplacing); +void DrawLobsterPICTtoGWorld(CGrafPtr destGWorld, Rect *srcRect); + + diff -r f854402837ba -r ed017b9c532d plugins/crazychat/camdata.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/camdata.c Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,213 @@ +/* + * camdata.c + * basecame + * + * Created by CS194 on Mon Apr 26 2004. + * Copyright (c) 2004 __MyCompanyName__. All rights reserved. + * + */ + +#include "camdata.h" +//#include "AppBlit_Component.h" +#include "QTUtilities.h" +#include "Utilities.h" + + +#define BailNULL(n) if (!n) goto bail; +#define BailError(n) if (n) goto bail; +#define BailNil(n) if (!n) goto bail; +#define BailErr(x) {if (x != noErr) goto bail;} +#define bitdepth 32 + +mungDataPtr myMungData = NULL; +long mWorlds[20]; +UInt32 mRedCount[256], mGreenCound[256], mBlueCount[256]; + +static void DecompressSequencePreflight(GWorldPtr srcGWorld, + ImageSequence *imageSeq, + GWorldPtr destGWorld, + Rect *srcRect); +//static void DrawRGBHistogram(mungDataRecord *theMungData); +//static void CreateEffectDescription(mungDataRecord *theMungData); +//static void CreateEffectDecompSequence(mungDataRecord *theMungData); +//static void AddGWorldDataSourceToEffectDecompSeq(mungDataRecord *theMungData); +//static void MakeEffectTimeBaseForEffect(mungDataRecord *theMungData); +//static void DrawUsingEffect(mungDataRecord *theMungData); + + +OSErr InitializeMungData(Rect bounds) +{ + OSErr err = noErr; + + if(myMungData) + { + DisposeMungData(); + } + + myMungData = (mungDataPtr)NewPtrClear(sizeof(mungDataRecord)); + if (myMungData == nil) + { + err = MemError(); + goto bail; + } + + myMungData->effect = 0; // always + + + BailErr(QTNewGWorld(&(myMungData->gw),bitdepth,&bounds,0,0,0)); + LockPixels(GetGWorldPixMap(myMungData->gw)); + + SetMungDataColorDefaults(); + + + + myMungData->selectedIndex = 0; + myMungData->overlay = NULL; + + SetCurrentClamp(-1); + + + + myMungData->bounds = bounds; + + SetRect(&bounds, 0, 0, 256*2+4, 128*3 + 20); + BailErr(QTNewGWorld(&(myMungData->histoWorld),bitdepth,&bounds,0,0,0)); + LockPixels(GetGWorldPixMap(myMungData->histoWorld)); + +bail: + return err; +} + +OSErr DisposeMungData(void) +{ // check this out + OSErr err = noErr; + + if(myMungData) + { + //if(myMungData->drawSeq) + //{ + // CDSequenceEnd(myMungData->drawSeq); + //} + + if(myMungData->gw) + { + DisposeGWorld(myMungData->gw); + myMungData->gw = nil; + } + + if(myMungData->overlay) + { + DisposeGWorld(myMungData->overlay); + myMungData->overlay = nil; + } + + if(myMungData->histoWorld) + { + DisposeGWorld(myMungData->histoWorld); + myMungData->histoWorld = nil; + } + + if (myMungData->effectTimeBase) + { + DisposeTimeBase(myMungData->effectTimeBase); + } + if (myMungData->effectParams) + { + QTDisposeAtomContainer(myMungData->effectParams); + } + if (myMungData->effectDesc) + { + DisposeHandle((Handle)myMungData->effectDesc); + } + + DisposePtr((Ptr)myMungData); + myMungData = nil; + } + return err; +} + +static void DecompressSequencePreflight(GWorldPtr srcGWorld, + ImageSequence *imageSeq, + GWorldPtr destGWorld, + Rect *srcRect) +// might not need this one + +{ + ImageDescriptionHandle imageDesc = nil; + + BailErr(MakeImageDescriptionForPixMap (GetGWorldPixMap(srcGWorld), &imageDesc)); + + // use our built-in decompressor to draw + // (**imageDesc).cType = kCustomDecompressorType; + +// *********** MIGHT BE MAKING A BIG MISTAKE ****************** + // pass a compressed sample so a codec can perform preflighting before the first DecompressSequenceFrameWhen call + + BailErr(DecompressSequenceBegin(imageSeq, + imageDesc, + destGWorld, + 0, + srcRect, + nil, + srcCopy, + nil, + 0, + codecNormalQuality, + bestSpeedCodec)); + +bail: + if (imageDesc) + { + DisposeHandle((Handle)imageDesc); + } +} + +ImageSequence GetMungDataDrawSeq() +{ + return myMungData->drawSeq; +} + +void SetMungDataColorDefaults() +{ + if(myMungData) + { + myMungData->redMin = 2; + myMungData->redMax = 254; + myMungData->greenMin = 2; + myMungData->greenMax = 254; + myMungData->blueMin = 2; + myMungData->blueMax = 254; + } +} + +void GetMungDataBoundsRect(Rect *boundsRect) +// might not need this one +{ + MacSetRect (boundsRect, + myMungData->bounds.left, + myMungData->bounds.top, + myMungData->bounds.right, + myMungData->bounds.bottom + ); +} + +void SetCurrentClamp(short index) // :crazy:20040426 +{ + myMungData->selectedIndex = index; +} + +GWorldPtr GetMungDataOffscreen() +{ + return (myMungData->gw); +} + +void SetMungDataDrawSeq(ImageSequence theDrawSeq) +{ + myMungData->drawSeq = theDrawSeq; +} + + +CGrafPtr GetMungDataWindowPort() +{ + return GetWindowPort(myMungData->window); +} diff -r f854402837ba -r ed017b9c532d plugins/crazychat/camdata.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/camdata.h Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,63 @@ +/* + * camdata.h + * basecame + * + * Created by CS194 on Mon Apr 26 2004. + * Copyright (c) 2004 __MyCompanyName__. All rights reserved. + * + */ + +#pragma once + +#ifdef __APPLE_CC__ +// #include + #include +#else +// #include + #include +#endif + +typedef struct +{ + GWorldPtr gw; + GWorldPtr overlay; + GWorldPtr histoWorld; + + Rect bounds; + WindowPtr window; + ImageSequence drawSeq; + UInt32 redMin, redMax; + UInt32 greenMin, greenMax; + UInt32 blueMin, blueMax; + + long selectedIndex; + OSType effect; + TimeBase effectTimeBase; + QTAtomContainer effectParams; + ImageDescriptionHandle effectDesc, effectDesc2; +} mungDataRecord; +typedef mungDataRecord *mungDataPtr; + +OSErr DisposeMungData(void); +OSErr InitializeMungData(Rect bounds); +void SetCurrentClamp(short index); + +//void BlitOneMungData(mungDataRecord *theMungData); + +//void AdjustColorClampEndpoints(short hMouseCoord); +//void IncrementCurrentClamp(); +//void DecrementCurrentClamp(); +void SetMungDataColorDefaults(); +CGrafPtr GetMungDataWindowPort(); + +GWorldPtr GetMungDataOffscreen(void); +//OSType GetMungDataEffectType(); + +//long GetCurrentClamp(); +//void SetCurrentClamp(short index); + +void GetMungDataBoundsRect(Rect *movieRect); +//CGrafPtr GetMungDataWindowPort(); + +void SetMungDataDrawSeq(ImageSequence theDrawSeq); +//ImageSequence GetMungDataDrawSeq(); diff -r f854402837ba -r ed017b9c532d plugins/crazychat/camproc.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/camproc.c Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,812 @@ +/* + * camproc.c + * basecame + * + * Created by CS194 on Mon Apr 26 2004. + * Copyright (c) 2004 __MyCompanyName__. All rights reserved. + * + */ + + +#include "camdata.h" +#include "Utilities.h" +#include "QTUtilities.h" +#include "stdio.h" +#include "math.h" +#include +#include "cc_interface.h" +#include "filter.h" + + +extern int detection_mode; +extern mungDataPtr myMungData; +extern int x_click; +extern int y_click; + + +#define kMinimumIdleDurationInMillis kEventDurationMillisecond +#define BailErr(x) {if (x != noErr) goto bail;} +#define PRE_CALIBRATE_MODE 0 +#define CALIBRATE_MODE 1 +#define SCAN_MODE 2 + +#define CALIB_TOP 190 +#define CALIB_BOTTOM 200 +#define CALIB_LEFT 200 +#define CALIB_RIGHT 210 + +#define CALIB_RADIUS 5 + +#define NUM_FRAMES_EYE_SEARCH 50 +#define EYE_UNCONFIDENCE_LIMIT 7 + +#define BLINK_THRESHOLD 75 +#define BLINK_LENGTH 10 +#define WHITE_THRESH 25 +#define WHITE_COUNT_MAX 200 + + +struct input_instance* instance; +int scan_region_left; +int scan_region_right; +int scan_region_top; +int scan_region_bottom; + +int lum_thresh=150; +int face_left; +int face_right; +int face_top; +int face_bottom; +int old_left_eye_x=50; +int old_left_eye_y=50; +int old_right_eye_x=50; +int old_right_eye_y=50; +int left_eye_x; +int left_eye_y; +int right_eye_x; +int right_eye_y; +int eye_search_frame_count=0; +int bozo_bit=0; +int eye_unconfidence=0; +int last_eye_count_left=0; +int last_eye_count_right=0; +int mouth_ctr_x; +int mouth_ctr_y; +int mouth_size, mouth_left, mouth_right, mouth_top, mouth_bottom; +int white_count; +guint8 head_size_old; +int left_eye_blink_count; +int right_eye_blink_count; + +int left_eye_top, left_eye_bottom, left_eye_right, left_eye_left; +int right_eye_top, right_eye_bottom, right_eye_right, right_eye_left; + +filter_bank *bank; + +static SeqGrabComponent mSeqGrab = NULL; +static SGChannel mSGChanVideo = NULL; +static SGDataUPP mMyDataProcPtr = NULL; +static EventLoopTimerRef mSGTimerRef = 0; +static ImageSequence mDecomSeq = 0; +static EventLoopTimerUPP mSGTimerUPP = nil; +static Rect mMungRect = {0, 0, 480, 640}; +int lower_left_corner_x = 200; +int lower_left_corner_y = 200; +int upper_right_corner_x = 210; +int upper_right_corner_y = 190; + + +static pascal OSErr MiniMungDataProc(SGChannel c, Ptr p, long len, long *offset, long chRefCon, TimeValue time, short writeType, long refCon); +static pascal void SGIdlingTimer(EventLoopTimerRef inTimer, void *inUserData); +static void DetectLobster(GWorldPtr mungDataOffscreen); +int SkinDetect(double Y, double E, double S); +void ScanSkin(PixMapHandle p); +void drawbox(int top, int bottom, int left, int right, int color); +void SkinStats (PixMapHandle p, int top, int bottom, int left, int right); +void SetEyeSearchRegions(void); + + +typedef enum {RED, GREEN, BLUE} color; +color saved_best=-1; + +int filenum=0; + + +OSErr CamProc(struct input_instance *inst, filter_bank *f) +{ + OSStatus error; + OSErr err = noErr; + + BailErr(err = InitializeMungData(mMungRect)); + + bank = f; + + instance=inst; + mMyDataProcPtr = NewSGDataUPP(MiniMungDataProc); + mSeqGrab = OpenDefaultComponent(SeqGrabComponentType, 0); + BailErr((err = CreateNewSGChannelForRecording( mSeqGrab, + mMyDataProcPtr, + GetMungDataOffscreen(), // drawing destination + &mMungRect, + &mSGChanVideo, + NULL))); + +bail: + return err; +} + +void QueryCam (void) +{ + SGIdle(mSeqGrab); +} + +static pascal void SGIdlingTimer(EventLoopTimerRef inTimer, void *inUserData) +{ +#pragma unused(inUserData) + + if (mSeqGrab) + { + SGIdle(mSeqGrab); + } + + // Reschedule the event loop timer + SetEventLoopTimerNextFireTime(inTimer, kMinimumIdleDurationInMillis); +} + +static pascal OSErr MiniMungDataProc(SGChannel c, Ptr p, long len, long *offset, long chRefCon, TimeValue time, short writeType, long refCon) +{ + + +#pragma unused(offset,chRefCon,time,writeType,refCon) + ComponentResult err = noErr; + CodecFlags ignore; + GWorldPtr gWorld; + + + + + if (!myMungData) goto bail; + + gWorld = GetMungDataOffscreen(); + if(gWorld) + { + if (mDecomSeq == 0) // init a decompression sequence + { + Rect bounds; + + GetMungDataBoundsRect(&bounds); + + BailErr( CreateDecompSeqForSGChannelData(c, &bounds, gWorld, &mDecomSeq)); + + if(1) + //if ((!mUseOverlay) && (GetCurrentClamp() == -1) && (!mUseEffect)) + { + ImageSequence drawSeq; + + err = CreateDecompSeqForGWorldData( gWorld, + &bounds, + nil, + GetMungDataWindowPort(), + &drawSeq); + SetMungDataDrawSeq(drawSeq); + } + } + + // decompress data to our offscreen gworld + BailErr(DecompressSequenceFrameS(mDecomSeq,p,len,0,&ignore,nil)); + + // image is now in the GWorld - manipulate it at will! + //if ((mUseOverlay) || (GetCurrentClamp() != -1) || (mUseEffect)) + //{ + // use our custom decompressor to "decompress" the data + // to the screen with overlays or color clamping + // BlitOneMungData(myMungData); + //} + //else + //{ + // we are doing a motion detect grab, so + // search for lobsters in our image data + DetectLobster(gWorld); + //} + + } + +bail: + return err; +} + +void Die() +{ + //RemoveEventLoopTimer(mSGTimerRef); + // mSGTimerRef = nil; + // DisposeEventLoopTimerUPP(mSGTimerUPP); + DoCloseSG(mSeqGrab, mSGChanVideo, mMyDataProcPtr); + +} + + +float Y_mean=-1; +float Y_dev,E_mean,E_dev,S_mean,S_dev; +/* + extern colorBuf[480][640]; +*/ +extern unsigned int (*colorBuf)[644]; +extern struct input_instance input_data; + +static void DetectLobster(GWorldPtr mungDataOffscreen) +{ + CGrafPtr oldPort; + GDHandle oldDevice; + int x, y; + Rect bounds; + PixMapHandle pix = GetGWorldPixMap(mungDataOffscreen); + UInt32 * baseAddr; + UInt32 reds = 0; + Str255 tempString; + int minX = 10000, maxX = -10000; + int minY = 10000, maxY = -10000; + Rect tempRect; + float percent; + OSErr err; + CodecFlags ignore; + color best; + long R_total=0; + long G_total=0; + long B_total=0; + + + + //fprintf(stderr, "Starting to find some lobsters...\n"); + + + GetPortBounds(mungDataOffscreen, &bounds); + OffsetRect(&bounds, -bounds.left, -bounds.top); + + + UInt32 color; + + + int sum_x,sum_y=0; + int count=0; + int k,j; + long R; + long G; + long B; + int search_width=200; + int search_height=200; + + + colorBuf = GetPixBaseAddr(pix); + + switch (detection_mode) { + + case PRE_CALIBRATE_MODE: + //drawbox(CALIB_TOP, CALIB_BOTTOM, CALIB_LEFT, CALIB_RIGHT); + break; + + case CALIBRATE_MODE: + SkinStats(pix, y_click-CALIB_RADIUS, y_click+CALIB_RADIUS, x_click-CALIB_RADIUS, x_click+CALIB_RADIUS); + scan_region_left=x_click-CALIB_RADIUS;//10; + scan_region_right=x_click+CALIB_RADIUS;//630; + scan_region_top=y_click-CALIB_RADIUS;//10; + scan_region_bottom=y_click+CALIB_RADIUS;//470; + ScanSkin(pix); + detection_mode=SCAN_MODE; + //fprintf(stderr, "scan left: %d scan right: %d \n",scan_region_left,scan_region_right); + head_size_old=50; + break; + + case SCAN_MODE: + ScanSkin(pix); + drawbox(face_top, face_bottom, face_left, face_right,1); + //drawbox(scan_region_top, scan_region_bottom, scan_region_left, scan_region_right); + drawbox((left_eye_y-5),(left_eye_y+5),(left_eye_x-5),(left_eye_x+5),0); + drawbox((right_eye_y-5),(right_eye_y+5),(right_eye_x-5),(right_eye_x+5),0); + int face_scale=instance->face.head_size; + int mouth_width=face_scale; + int mouth_height=face_scale; + // if (bozo_bit==1) drawbax((mouth_ctr_y-mouth_height),(mouth_ctr_y+mouth_height),(mouth_ctr_x-mouth_width),(mouth_ctr_x+mouth_width)); + filter(&instance->face, bank); + break; + } + + //fprintf(stderr, "Lobsters found...\n"); + + +} + + + + +void ScanSkin(PixMapHandle p) +{ + int y,x,j,k; + int right_eye_x_sum,right_eye_y_sum,left_eye_x_sum,left_eye_y_sum,right_eye_pt_count,left_eye_pt_count; + right_eye_x_sum=right_eye_y_sum=left_eye_x_sum=left_eye_y_sum=right_eye_pt_count=left_eye_pt_count=0; + long R,G,B,sum_x,sum_y; + int count; + double Y,E,S,lum; + double min_lum_mouth=766; + double min_lum_left=766; + double min_lum_right=766; + UInt32 color; + UInt32 * baseAddr; + int max_horz=0; + int max_vert=0; + sum_x=sum_y=count=0; + int horz_count[480]; + int vert_count[640]; + + + + memset(horz_count,0,480*sizeof(int)); + memset(vert_count,0,640*sizeof(int)); + + if (eye_search_frame_count> 16; + G = (color & 0x0000FF00) >> 8; + B = (color & 0x000000FF) >> 0; + Y=.253*R+.684*G+.063*B; + E=.5*R-.5*G; + S=.25*R+.25*G-.5*B; + lum=R+G+B; + + if (y>left_eye_top && y left_eye_left && xright_eye_top && y right_eye_left && x < right_eye_right) + { + if (lum < lum_thresh) { + right_eye_x_sum+=x; + right_eye_y_sum+=y; + right_eye_pt_count++; + //colorBuf[y][x]=0x0000FF00; + } + } + } + + if(SkinDetect(Y,E,S)) + { + sum_x+=x; + sum_y+=y; + count++; + + ++horz_count[y]; + ++vert_count[x]; + + if (horz_count[y]>max_horz) max_horz=horz_count[y]; + if (vert_count[x]>max_vert) max_vert=vert_count[x]; + + //colorBuf[y][x]=0x00FF0000; + } + + } + } + + + left_eye_x=left_eye_x_sum/left_eye_pt_count; + left_eye_y=left_eye_y_sum/left_eye_pt_count; + right_eye_x=right_eye_x_sum/right_eye_pt_count; + right_eye_y=right_eye_y_sum/right_eye_pt_count; + + + + int width=right_eye_x-left_eye_x; + int height=right_eye_y-left_eye_y; + double face_ang; + if (width!=0) face_ang=atan((double)height/width); + else face_ang=0; + face_ang=face_ang*180/pi; + //fprintf(stderr,"face angle: %f \n",face_ang); + + if ((left_eye_pt_count<5 || right_eye_pt_count<5 || width==0 || face_ang > 30 || face_ang < -30 + || left_eye_y < (face_top+.15*(face_bottom-face_top)) + || right_eye_y < (face_top+.15*(face_bottom-face_top))) + && bozo_bit==1){ + eye_unconfidence++; + left_eye_x=old_left_eye_x; + left_eye_y=old_left_eye_y; + right_eye_x=old_right_eye_x; + right_eye_y=old_right_eye_y; + } + else { + eye_unconfidence=0; + old_left_eye_x=left_eye_x; + old_left_eye_y=left_eye_y; + old_right_eye_x=right_eye_x; + old_right_eye_y=right_eye_y; + } + + + if (eye_unconfidence==EYE_UNCONFIDENCE_LIMIT){ + bozo_bit=0; + eye_search_frame_count=0; + //fprintf(stderr, "Recalibrating eyes\n"); + } + + if ((last_eye_count_left-left_eye_pt_count> BLINK_THRESHOLD) && eye_unconfidence==0) + { + left_eye_blink_count=BLINK_LENGTH; + } + if (left_eye_blink_count>0){ + instance->face.left_eye_open=0; + left_eye_blink_count--; + } + else instance->face.left_eye_open=1; + + if ((last_eye_count_right-right_eye_pt_count> BLINK_THRESHOLD) && eye_unconfidence==0) + { + right_eye_blink_count=BLINK_LENGTH; + } + if (right_eye_blink_count>0){ + instance->face.right_eye_open=0; + right_eye_blink_count--; + } + else instance->face.right_eye_open=1; + + if (instance->face.right_eye_open==0) instance->face.left_eye_open=0; + if (instance->face.left_eye_open==0) instance->face.right_eye_open=0; + + last_eye_count_left=left_eye_pt_count; + last_eye_count_right=right_eye_pt_count; + + float x_shift=0; + if (width!=0) x_shift= (float)height/(float)width; // --> note dependence on earlier data here + + +if (bozo_bit==1){ + int mouth_search_start_y=face_top+(.6*(face_bottom-face_top)); + int mouth_search_end_y=face_bottom; + int mouth_search_start_x=(left_eye_x+right_eye_x)/2 + (-x_shift*(mouth_search_start_y-((right_eye_y+left_eye_y)/2))) ; + +for (y=mouth_search_start_y; y < mouth_search_end_y; y++) +{ + x=mouth_search_start_x+((y - mouth_search_start_y)*(-x_shift)); + baseAddr = (UInt32*)(GetPixBaseAddr(p) + y * GetPixRowBytes(p)); + //colorBuf[y][x] = 0x0000FF00; + color=baseAddr[x]; + R = (color & 0x00FF0000) >> 16; + G = (color & 0x0000FF00) >> 8; + B = (color & 0x000000FF) >> 0; + lum=R+G+B; + + if (lum face_right) mouth_right=face_right; + mouth_top=mouth_ctr_y-mouth_size; + if (mouth_top < face_top) mouth_top=face_top; + mouth_bottom=mouth_ctr_y+mouth_size; + if (mouth_bottom > face_bottom) mouth_bottom=face_bottom; + + white_count=0; + + for (y=mouth_top; y< mouth_bottom; y++){ + baseAddr = (UInt32*)(GetPixBaseAddr(p) + y * GetPixRowBytes(p)); + for (x=mouth_left; x< mouth_right; x++){ + color=baseAddr[x]; + R = (color & 0x00FF0000) >> 16; + G = (color & 0x0000FF00) >> 8; + B = (color & 0x000000FF) >> 0; + if ((abs(R-G) < WHITE_THRESH) && (abs(G-B) < WHITE_THRESH) && (abs(R-B) < WHITE_THRESH)) + { + white_count++; + //colorBuf[y][x]=0x0000FF00; + } + } + } + + } +else white_count=10; + +// This next section finds the face region and sets the face_* parameters. + + int scan; + float thresh=.3; + scan=scan_region_left+1; + if (scan<0) scan=0; + //fprintf(stderr,"threshold value: %d boxtop value: %d \n", (max_horz), horz_count[scan_region_top]); + while(1) + { + if (vert_count[scan]>=(thresh*max_vert)) + { + face_left=scan; + break; + } + scan++; + } + + scan=scan_region_right-1; + if (scan>=640) scan=639; + while(1) + { + if (vert_count[scan]>=(thresh*max_vert)) + { + face_right=scan; + break; + } + scan--; + } + + scan=scan_region_top+1; + if (scan<0) scan=0; + while(1) + { + if (horz_count[scan]>=(thresh*max_horz)) + { + face_top=scan; + break; + } + scan++; + } + + + scan=scan_region_bottom-1; + if (scan>=480) scan=479; + while(1) + { + if (horz_count[scan]>=(thresh*max_horz)) + { + face_bottom=scan; + break; + } + scan--; + } + + // Base scan region on face region here + scan_region_left=face_left-10; + if (scan_region_left <= 0) scan_region_left=1; + scan_region_right=face_right+10; + if (scan_region_right >= 640) scan_region_right=639; + scan_region_top=face_top-10; + if (scan_region_top <= 0) scan_region_top=1; + scan_region_bottom=face_bottom+10; + if (scan_region_bottom >= 480) scan_region_bottom=479; + + + // Calculate some stats + + // face size + width=face_right-face_left; + guint8 temp=width*100/640; + instance->face.head_size=temp; + + // face location + temp=((double)100/(double)640)*(double)(face_right+face_left)/2; + instance->face.x=temp; + temp=((double)100/(double)480)*(double)(face_top+face_bottom)/2; + instance->face.y=temp; + + // face angle-Z + instance->face.head_z_rot=face_ang+50; + + // face angle-Y + int center=(face_right+face_left)/2; + int right_eye_strad=right_eye_x-center; + int left_eye_strad=center-left_eye_x; + double y_ang; + if (right_eye_strad > left_eye_strad) y_ang= (double)right_eye_strad/(double)left_eye_strad; + else y_ang=(double)left_eye_strad/(double)right_eye_strad; + y_ang=y_ang*5; + if (y_ang >= 10) y_ang=30; + if (y_ang <= 1) y_ang=1; + + if (right_eye_strad > left_eye_strad) y_ang=-y_ang; + temp = (guint8) 50 + y_ang; + instance->face.head_y_rot=temp; + + if (abs (temp-50) > 15) instance->face.head_size=head_size_old; + else head_size_old=instance->face.head_size; + + temp = (guint8) 100 * white_count / WHITE_COUNT_MAX; + if (temp > 100) temp=100; + instance->face.mouth_open = temp; + +} + + + + + + + // draw bounding box for either calibration or face + + +void SetEyeSearchRegions(void) +{ + if (bozo_bit==0) + { + left_eye_top=face_top+(.25*(face_bottom-face_top)); + left_eye_bottom=face_top+(.6*(face_bottom-face_top)); + left_eye_right=((face_left+face_right)/2); + left_eye_left=face_left+.15*(face_right-face_left); + + right_eye_top=face_top+(.25*(face_bottom-face_top)); + right_eye_bottom=face_top+(.6*(face_bottom-face_top)); + right_eye_right=face_right-.15*(face_right-face_left); + right_eye_left=((face_left+face_right)/2); + } + + if (bozo_bit==1) + { + left_eye_top=left_eye_y-20; + left_eye_bottom=left_eye_y+20; + left_eye_left=left_eye_x-20; + left_eye_right=left_eye_x+20; + + right_eye_top=right_eye_y-20; + right_eye_bottom=right_eye_y+20; + right_eye_left=right_eye_x-20; + right_eye_right=right_eye_x+20; + } +} + + +void drawbox(int top, int bottom, int left, int right, int color) +{ + int y, x, j; + + unsigned int col; + + + if (color==1) + col=0x00FFFF00; + else + col=0x00FF00FF; + + if (top<0) top =0; + if (top>=480) top=479; + if (bottom<0) bottom =0; + if (bottom>=480) bottom=479; + if (left<0) left =0; + if (left>=640) left=639; + if (right<0) right =0; + if (right>=640) right=639; + + if (color==1){ + + for (y=top; y> 16; + G = (color & 0x0000FF00) >> 8; + B = (color & 0x000000FF) >> 0; + Y=.253*R+.684*G+.063*B; + E=.5*R-.5*G; + S=.25*R+.25*G-.5*B; + Y_sum+=Y; + E_sum+=E; + S_sum+=S; + } + } + + Y_mean=Y_sum/count; + E_mean=E_sum/count; + S_mean=S_sum/count; + + Y_sum=E_sum=S_sum=0; + + for (y=top; y> 16; + G = (color & 0x0000FF00) >> 8; + B = (color & 0x000000FF) >> 0; + Y=.253*R+.684*G+.063*B; + E=.5*R-.5*G; + S=.25*R+.25*G-.5*B; + + Y_sum+=(Y-Y_mean)*(Y-Y_mean); + E_sum+=(E-E_mean)*(E-E_mean); + S_sum+=(S-S_mean)*(S-S_mean); + + } + } + + Y_dev=sqrt(Y_sum/(count-1)); + E_dev=sqrt(E_sum/(count-1)); + S_dev=sqrt(S_sum/(count-1)); + + //fprintf(stderr,"Y: %f, %f\n E: %f, %f\nS: %f, %f\n",Y_mean,E_mean,S_mean,Y_dev,E_dev,S_dev); + +} + +int SkinDetect(double Y, double E, double S) +{ + if (E>(E_mean-(2*E_dev)) && E<(E_mean+(2*E_dev))) return 1; + else return 0; +} + diff -r f854402837ba -r ed017b9c532d plugins/crazychat/camproc.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/camproc.h Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,29 @@ +/* + * camproc.h + * basecame + * + * Created by CS194 on Mon Apr 26 2004. + * Copyright (c) 2004 __MyCompanyName__. All rights reserved. + * + */ + + + +//#pragma once + +#ifdef __APPLE_CC__ + #include + +#else + #include + +#endif + +#include "cc_interface.h" +#include "filter.h" + +void Die(); +OSErr CamProc(struct input_instance *inst, filter_bank *bank); +void QueryCam (void); + + diff -r f854402837ba -r ed017b9c532d plugins/crazychat/cc_features.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/cc_features.c Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,522 @@ +#include +#include +#include +#include "cc_interface.h" +#include "crazychat.h" + +#include "Utilities.h" +#include "QTUtilities.h" +#include "camdata.h" +#include "camproc.h" +#include "util.h" +#include + + +#ifdef __APPLE_CC__ +#include +#else +#include +#endif + +/* temporarily including for development testing */ +#include "cc_gtk_gl.h" + +/* hard coding the webcam dimensions: BAD, but we're not probing hardware yet */ + +#define WEBCAM_X 644 /* webcam's x dim */ +#define WEBCAM_Y 480 /* webcam's y dim */ + +/* default webcam timer callback delay */ +#define WEBCAM_CALLBACK_DELAY 40 /* in ms */ + +int x_click, y_click; +int mode_change=0; + +struct input_instance input_data; + +/* move this to input_instance eventually */ +/* +UInt32 colorBuf[WEBCAM_Y][WEBCAM_X]; +*/ +unsigned int (*colorBuf)[640]; +int detection_mode=0; +int draw_mode=0; //0=pixels, 1=face +int easter_count; +static void *kickstart(void *data); +static void *facefind(void *data); + +/** + * Resets the OpenGL viewport stuff on widget reconfiguration (resize, + * reposition) + * @param widget widget that got reconfigured + * @param event the configuration event + * @param data unused + * @return TRUE ( i don't know what FALSE would do ) + */ +static gboolean config_wrapper(GtkWidget *widget, GdkEventConfigure *event, + void *data); + +/** + * Debug features test. Draws pixels directly to the frame buffer. + * @param widget widget that we're drawing + * @param event the draw event + * @param data array of pixels + * @return DUNNO + */ +static gboolean mydraw(GtkWidget *widget, GdkEventExpose *event, + void *data); + +/** + * Periodically querys the webcam for more data. + * @param instance webcam input instance data + * @return TRUE to stop other handler, FALSE to continue + */ +static gboolean webcam_cb(struct input_instance *instance); + +/** + * Init window code, adding our click callback. + * @param widget the window we clicked in + * @param instance webcam input instance data + */ +static void init_cb(GtkWidget *widget, struct input_instance *instance); + +/** + * Click callback + * @param widget the window we clicked in + * @param event the button click event structure + * @param instance input instance data + * @return TRUE to stop other handler, FALSE to continue + */ +static gboolean click_cb(GtkWidget *widget, GdkEventButton *event, + struct input_instance *instance); + +/** + * Button callback + * @param button the button we clicked on + * @param instance input instance data + */ +static void button_cb(GtkWidget *button, struct input_instance *instance); + +/** + * Destroy callback. Called when the input processing window is destroyed. + * @param widget the window we clicked in + * @param cc crazychat global data structure + */ +static void destroy_cb(GtkWidget *widget, struct crazychat *cc); + +/** + * Set feature material. + * @param entry model selector combo box entry + * @param material pointer to material we're setting + */ +static void material_set(GtkWidget *entry, guint8 *material); + +struct input_instance *init_input(struct crazychat *cc) +{ + + pthread_t userinput_t; // should we put this in a nicer wrapper? + struct draw_info *info; + struct input_instance *instance; + info = (struct draw_info*)malloc(sizeof(*info)); + assert(info); + memset(info, 0, sizeof(*info)); + info->timeout = TRUE; + info->delay_ms = DEFAULT_FRAME_DELAY; + info->data = &input_data; + instance = (struct input_instance*)info->data; + memset(instance, 0, sizeof(*instance)); + instance->output.features = &instance->face; + EnterMovies(); + filter_bank *bank; + bank = Filter_Initialize(); + assert(CamProc(instance, bank) == noErr); // change this prototype-> no windows + instance->timer_id = g_timeout_add(WEBCAM_CALLBACK_DELAY, + (GSourceFunc)webcam_cb, instance); +// THREAD_CREATE(&userinput_t, facefind, instance); // is this being created correctly? + struct window_box ret; + cc_new_gl_window(init_cb, config_wrapper, mydraw, + info, &ret); + instance->widget = ret.window; + gtk_window_set_title(GTK_WINDOW(ret.window), "Local User"); + instance->box = ret.vbox; + GtkWidget *label = gtk_label_new("Click your face"); + instance->label = label; + gtk_box_pack_start(GTK_BOX(ret.vbox), label, FALSE, FALSE, 0); + gtk_box_reorder_child(GTK_BOX(ret.vbox), label, 0); + gtk_widget_show(label); + GtkWidget *button = gtk_button_new_with_label("Confirm"); + gtk_box_pack_start(GTK_BOX(ret.vbox), button, FALSE, FALSE, 0); + g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(button_cb), + instance); + instance->button = button; + gtk_widget_show(button); + + GtkWidget *hbox = gtk_hbox_new(TRUE, 0); + gtk_box_pack_start(GTK_BOX(ret.vbox), hbox, FALSE, FALSE, 0); + gtk_widget_show(hbox); + + GtkWidget *model_combo = gtk_combo_new(); + GList *glist = NULL; + + glist = g_list_append(glist, "Dog"); + glist = g_list_append(glist, "Shark"); + gtk_combo_set_popdown_strings(GTK_COMBO(model_combo), glist); + g_list_free(glist); + //gtk_combo_box_set_column_span_column(GTK_COMBO(model_combo), + // 10); + gtk_box_pack_start(GTK_BOX(hbox), model_combo, TRUE, TRUE, 0); + gtk_widget_show(model_combo); + instance->model = model_combo; + + GtkWidget *head_material_combo = gtk_combo_new(); + glist = NULL; + glist = g_list_append(glist, "Red"); + glist = g_list_append(glist, "Dark Brown"); + glist = g_list_append(glist, "Light Brown"); + glist = g_list_append(glist, "White"); + glist = g_list_append(glist, "Green"); + glist = g_list_append(glist, "Black"); + gtk_combo_set_popdown_strings(GTK_COMBO(head_material_combo), glist); + g_list_free(glist); + //gtk_combo_box_set_column_span_column(GTK_COMBO(head_material_combo), + // 10); + gtk_box_pack_start(GTK_BOX(hbox), head_material_combo, TRUE, TRUE, 0); + gtk_widget_show(head_material_combo); + instance->head = head_material_combo; + + GtkWidget *appendage_material_combo = gtk_combo_new(); + glist = NULL; + glist = g_list_append(glist, "Red"); + glist = g_list_append(glist, "Dark Brown"); + glist = g_list_append(glist, "Light Brown"); + glist = g_list_append(glist, "White"); + glist = g_list_append(glist, "Green"); + glist = g_list_append(glist, "Black"); + gtk_combo_set_popdown_strings(GTK_COMBO(appendage_material_combo), + glist); + g_list_free(glist); + //gtk_combo_box_set_column_span_column(GTK_COMBO(appendage_material_combo), 10); + gtk_box_pack_start(GTK_BOX(hbox), appendage_material_combo, + TRUE, TRUE, 0); + gtk_widget_show(appendage_material_combo); + instance->appendage = appendage_material_combo; + + hbox = gtk_hbox_new(TRUE, 0); + gtk_box_pack_start(GTK_BOX(ret.vbox), hbox, FALSE, FALSE, 0); + gtk_widget_show(hbox); + + GtkWidget *lids_material_combo = gtk_combo_new(); + glist = NULL; + glist = g_list_append(glist, "Red"); + glist = g_list_append(glist, "Dark Brown"); + glist = g_list_append(glist, "Light Brown"); + glist = g_list_append(glist, "White"); + glist = g_list_append(glist, "Green"); + glist = g_list_append(glist, "Black"); + gtk_combo_set_popdown_strings(GTK_COMBO(lids_material_combo), glist); + g_list_free(glist); + //gtk_combo_box_set_column_span_column(GTK_COMBO(lids_material_combo), 10); + gtk_box_pack_start(GTK_BOX(hbox), lids_material_combo, TRUE, TRUE, 0); + gtk_widget_show(lids_material_combo); + instance->lid = lids_material_combo; + + GtkWidget *left_iris_material_combo = gtk_combo_new(); + glist = NULL; + glist = g_list_append(glist, "Red"); + glist = g_list_append(glist, "Dark Brown"); + glist = g_list_append(glist, "Light Brown"); + glist = g_list_append(glist, "White"); + glist = g_list_append(glist, "Green"); + glist = g_list_append(glist, "Black"); + gtk_combo_set_popdown_strings(GTK_COMBO(left_iris_material_combo), + glist); + g_list_free(glist); + //gtk_combo_box_set_column_span_column(GTK_COMBO(left_iris_material_combo), 10); + gtk_box_pack_start(GTK_BOX(hbox), left_iris_material_combo, + TRUE, TRUE, 0); + gtk_widget_show(left_iris_material_combo); + instance->left_iris = left_iris_material_combo; + + /* + GtkWidget *right_iris_material_combo = gtk_combo_new(); + glist = NULL; + glist = g_list_append(glist, "Red"); + glist = g_list_append(glist, "Dark Brown"); + glist = g_list_append(glist, "Light Brown"); + glist = g_list_append(glist, "White"); + glist = g_list_append(glist, "Green"); + glist = g_list_append(glist, "Black"); + gtk_combo_set_popdown_strings(GTK_COMBO(right_iris_material_combo), + glist); + g_list_free(glist); + //gtk_combo_box_set_column_span_column(GTK_COMBO(right_iris_material_combo), 10); + gtk_box_pack_start(GTK_BOX(hbox), right_iris_material_combo, + TRUE, TRUE, 0); + gtk_widget_show(right_iris_material_combo); + instance->right_iris = right_iris_material_combo; +*/ + gtk_widget_add_events(ret.draw_area, GDK_BUTTON_PRESS_MASK); + g_signal_connect(G_OBJECT(ret.draw_area), "button_press_event", + G_CALLBACK(click_cb), instance); + g_signal_connect(G_OBJECT(ret.window), "destroy", + G_CALLBACK(destroy_cb), cc); +// gtk_widget_set_size_request(window, 640, 480); + gtk_window_set_default_size(GTK_WINDOW(ret.window),320,300); + + + GdkGeometry hints; + hints.max_width = 640; + hints.max_height = 480; + + gtk_window_set_geometry_hints (GTK_WINDOW(ret.window), + NULL, + &hints, + GDK_HINT_MAX_SIZE); + gtk_widget_show(ret.window); + return instance; +} + +static gboolean webcam_cb(struct input_instance *instance) +{ + assert(instance); + QueryCam(); + return TRUE; +} + +static void *facefind(void *data) +{ + fprintf(stderr, "waiting\n"); + getchar(); + fprintf(stderr,"got you"); + detection_mode=1; + return; +} + +void destroy_input(struct input_instance *instance) +{ + extern filter_bank *bank; + assert(instance); + Filter_Destroy(bank); + g_source_remove(instance->timer_id); + Die(); + ExitMovies(); +} + +static gboolean config_wrapper(GtkWidget *widget, GdkEventConfigure *event, + void *data) +{ + + + GdkGLContext *glcontext = gtk_widget_get_gl_context(widget); + GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable(widget); + + GLfloat w = widget->allocation.width; + GLfloat h = widget->allocation.height; + GLfloat aspect; + +// fprintf(stderr,"Homicide %f %f %d\n", w,h,draw_mode); + + if (draw_mode==1){ +// fprintf(stderr, "Bad place to be- actually not so bad\n"); + return configure(widget, event, data); + } + + /*** OpenGL BEGIN ***/ + if (!gdk_gl_drawable_gl_begin(gldrawable, glcontext)) + return FALSE; + + +/* Undo all of the Model lighting here*/ + +// glDisable(GL_LIGHTING); + glDisable(GL_DEPTH_TEST); +// glDisable(GL_CULL_FACE); +// glDisable(GL_LIGHT0); +// glClearColor(1.0f, 1.0f, 1.0f, 1.0f); +/* */ + + + glViewport(0,-(h/14),w*2,h*2); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluOrtho2D(0,0,640,640); + glRasterPos2i(0,0); + glPixelZoom(-w/(1*640),(-h/(1*480))); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + + + + gdk_gl_drawable_gl_end(gldrawable); + /*** OpenGL END ***/ + + return TRUE; +} + +static gboolean mydraw(GtkWidget *widget, GdkEventExpose *event, + void *data) +{ + GdkGLContext *glcontext = gtk_widget_get_gl_context (widget); + GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable (widget); + struct input_instance *instance = (struct input_instance*)data; + unsigned int *boo; + struct cc_features *features = &instance->face; + + char *string = gtk_entry_get_text(GTK_COMBO(instance->model)->entry); + if (!strcmp(string, "Dog")) { + features->kind = 0; + } else if (!strcmp(string, "Shark")) { + features->kind = 1; + } + + material_set(GTK_ENTRY(GTK_COMBO(instance->head)->entry), + &features->head_color); + material_set(GTK_ENTRY(GTK_COMBO(instance->appendage)->entry), + &features->appendage_color); + material_set(GTK_ENTRY(GTK_COMBO(instance->lid)->entry), + &features->lid_color); + material_set(GTK_ENTRY(GTK_COMBO(instance->left_iris)->entry), + &features->left_iris_color); + material_set(GTK_ENTRY(GTK_COMBO(instance->left_iris)->entry), + &features->right_iris_color); + + if (easter_count>0) { + easter_count--; + } else { + instance->face.mode = 0; + } + + if (mode_change>0){ + mode_change--; + config_wrapper(widget, event, data); + } + + if (draw_mode==1){ + instance->output.my_output=LOCAL; + return draw(widget,event,&instance->output); + } + + + boo = (unsigned int*)colorBuf; + + assert(instance); + assert(gtk_widget_is_gl_capable(widget)); + + /*** OpenGL BEGIN ***/ + + if (!gdk_gl_drawable_gl_begin(gldrawable, glcontext)) { + // fprintf(stderr, "We're fucked this time.\n"); + return FALSE; + } + + glClearColor(0.0, 0.0, 0.0, 0.0); + glClear(GL_COLOR_BUFFER_BIT); + + glDrawPixels(WEBCAM_X, WEBCAM_Y-70, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, boo); + + if (gdk_gl_drawable_is_double_buffered(gldrawable)) + gdk_gl_drawable_swap_buffers(gldrawable); + else + glFlush(); + + gdk_gl_drawable_gl_end(gldrawable); + + /*** OpenGL END ***/ + + return TRUE; +} + +static void init_cb(GtkWidget *widget, struct input_instance *instance) +{ + setupDrawlists(LOCAL); +// fprintf(stderr,"init_cb\n"); +} + +static gboolean click_cb(GtkWidget *widget, GdkEventButton *event, + struct input_instance *instance) +{ + + GLfloat w = widget->allocation.width; + GLfloat h = widget->allocation.height; + GLfloat aspect; + + if (draw_mode==1) { + switch (event->button) { + case 1: + Debug("F U!\n"); + instance->face.mode = 1; + easter_count = 5; + break; + case 3: + Debug("should never get here\n"); + instance->face.mode = 2; + easter_count = 5; + break; + default: + instance->face.mode = 0; + break; + } + return FALSE; + } + + x_click=(event->x*(640/w)); + x_click=640-x_click; + y_click=(event->y-(h/14))*(480/(h-(h/14))); + detection_mode=1; + //Debug("@@@ x:%d y:%d\n", x_click, y_click); + + gtk_label_set_text(instance->label, + "Put on the box, then press confirm."); + if (x_click <= 10) x_click=10; + if (x_click >= WEBCAM_X-10) x_click=WEBCAM_X-60; + if (y_click <= 10) y_click=10; + if (y_click >= WEBCAM_Y-10) y_click=WEBCAM_Y-60; + + return FALSE; +} + +static void button_cb(GtkWidget *button, struct input_instance *instance) +{ + if (!draw_mode) { /* transition to face mode */ + if (detection_mode == 0) { /* ignore confirm if no calibrate */ + return; + } + setupLighting(instance->widget); + mode_change = 1; + gtk_button_set_label(GTK_BUTTON(button), "Calibrate"); + gtk_label_set_label(instance->label, + "If things get too crazy, click Calibrate."); + } else { /* transition to calibration mode */ + gtk_label_set_label(instance->label, "Click your face"); + mode_change = 2; + gtk_button_set_label(GTK_BUTTON(button), "Confirm"); + } + draw_mode = !draw_mode; +} + +static void destroy_cb(GtkWidget *widget, struct crazychat *cc) +{ + cc->features_state = 0; + destroy_input(cc->input_data); + cc->input_data = NULL; +} + +static void material_set(GtkWidget *entry, guint8 *material) +{ + char *string = gtk_entry_get_text(GTK_ENTRY(entry)); + if (!strcmp(string, "Red")) { + *material = 0; + } else if (!strcmp(string, "Dark Brown")) { + *material = 1; + } else if (!strcmp(string, "Light Brown")) { + *material = 2; + } else if (!strcmp(string, "White")) { + *material = 3; + } else if (!strcmp(string, "Green")) { + *material = 4; + } else if (!strcmp(string, "Black")) { + *material = 5; + } +} diff -r f854402837ba -r ed017b9c532d plugins/crazychat/cc_gaim_plugin.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/cc_gaim_plugin.c Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,482 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "crazychat.h" +#include "cc_network.h" +#include "cc_interface.h" +#include "cc_gtk_gl.h" +#include "util.h" + +/* --- begin type and global variable definitions --- */ + +static struct crazychat cc_info; + +/* --- begin function declarations --- */ + +/** + * Called by gaim plugin to start CrazyChat + * @param cc the crazychat struct + */ +static void cc_init(struct crazychat *cc); + +/** + * Called by gaim plugin to destroy CrazyChat + * @param cc the crazychat struct + */ +static void cc_destroy(struct crazychat *cc); + + +/** + * Buddy menu drawing callback. Adds a CrazyChat menuitem. + * @param menu the buddy menu widget + * @param b the buddy whose menu this is + */ +static gboolean cc_buddy_menu(GtkWidget *menu, GaimBuddy *b); + +/** + * Buddy menu callback. Initiates the CrazyChat session. + * @param item the gtk buddy menu item + * @param b the buddy whose menu the item was in + */ +static void cc_menu_cb(GtkMenuItem *item, GaimBuddy *b); + +/** + * IM callback. Handles receiving a CrazyChat session request. + * @param account the account we received the IM on + * @param sender the buddy who we received the message from + * @param message the message we received + * @param flags IM flags + * @param data user data + */ +static gboolean receive_im_cb(GaimAccount *account, char **sender, + char **message, int *flags, void *data); + +/** + * Displaying IM callback. Drops CrazyChat messages from IM window. + * @param account the account we are displaying the IM on + * @param conv the conversation we are displaying the IM on + * @param message the message we are displaying + * @param data user data + */ +static gboolean display_im_cb(GaimAccount *account, GaimConversation *conv, + char **message, void *data); + +/** + * Callback for CrazyChat plugin configuration frame + * @param plugin the plugin data + * @return the configuration frame + */ +static GtkWidget *get_config_frame(GaimPlugin *plugin); + +/** + * TCP port callback. Changes the port used to listen for new CC sessions + * @param spin the spinner button whose value changed + * @param data user data + */ +static void tcp_port_cb(GtkSpinButton *spin, struct crazychat *cc); + +/** + * UDP port callback. Changes the port used to send/recv CC session frames + * @param spin the spinner button whose value changed + * @param data user data + */ +static void udp_port_cb(GtkSpinButton *spin, struct crazychat *cc); + +/** + * Features enabling/disabling callback. Initializes the input processing + * or shuts it down. + * @param data user data + */ +static void features_enable_cb(struct crazychat *cc); + +/** + * User signed on callback. Now we have a buddy list to connect a signal + * handler to. + * @param gc the gaim connection we are signed on + * @param plugin our plugin struct + */ +static gboolean cc_signed_on(GaimConnection *gc, void *plugin); + +/** + * Plugin loading callback. If a buddy list exists, connect our buddy menu + * drawing callback to the signal handler, otherwise, connect a signed on + * signal handler so we know when we get a buddy list. + * @param plugin our plugin struct + */ +static gboolean plugin_load(GaimPlugin *plugin); + +/** + * Plugin unloading callback. Disconnect all handlers and free data. + * @param plugin our plugin struct + */ +static gboolean plugin_unload(GaimPlugin *plugin); + + +/* --- end function declarations --- */ + + +#define CRAZYCHAT_PLUGIN_ID "gtk-crazychat" + +static GaimGtkPluginUiInfo ui_info = { + get_config_frame /**< get_config_frame */ +}; + +static GaimPluginInfo info = { + 2, /**< api_version */ + GAIM_PLUGIN_STANDARD, /**< type */ + GAIM_GTK_PLUGIN_TYPE, /**< ui_requirement */ + 0, /**< flags */ + NULL, /**< dependencies */ + GAIM_PRIORITY_DEFAULT, /**< priority */ + + CRAZYCHAT_PLUGIN_ID, /**< id */ + N_("Crazychat"), /**< name */ + VERSION, /**< version */ + /** summary */ + N_("Plugin to establish a Crazychat session."), + /** description */ + N_("Uses Gaim to obtain buddy ips to connect for a Crazychat session"), + "\n" + "William Chan \n" + "Ian Spiro \n" + "Charlie Stockman\n" + "Steve Yelderman", /**< author */ + GAIM_WEBSITE, /**< homepage */ + + plugin_load, /**< load */ + plugin_unload, /**< unload */ + NULL, /**< destroy */ + + &ui_info, /**< ui_info */ + &cc_info /**< extra_info */ +}; + +/* --- end plugin struct definition --- */ + +static void cc_init(struct crazychat *cc) +{ + /* initialize main crazychat thread */ + + assert(cc); + memset(cc, 0, sizeof(*cc)); + + /* initialize network configuration */ + cc->tcp_port = DEFAULT_CC_PORT; + cc->udp_port = DEFAULT_CC_PORT; + + /* disable input subsystem */ + //cc->features_state = 0; + + /* initialize input subsystem */ + cc->features_state = 1; + cc->input_data = init_input(cc); +} + +static void cc_destroy(struct crazychat *cc) +{ + assert(cc); + + if (cc->features_state) { + destroy_input(cc->input_data); + } + memset(cc, 0, sizeof(*cc)); +} + +static gboolean cc_buddy_menu(GtkWidget *menu, GaimBuddy *b) +{ + GtkWidget *menuitem; + + menuitem = gtk_menu_item_new_with_mnemonic("CrazyChat"); + g_signal_connect(G_OBJECT(menuitem), "activate", + G_CALLBACK(cc_menu_cb), b); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); + return FALSE; +} + +static void cc_menu_cb(GtkMenuItem *item, GaimBuddy *b) +{ + assert(item); + assert(b); + + /* send the invite */ + cc_net_send_invite(&cc_info, b->name, b->account); +} + +static gboolean receive_im_cb(GaimAccount *account, char **sender, + char **message, int *flags, void *data) +{ + struct crazychat *cc; + + cc = (struct crazychat*)data; + assert(cc); + if (!strncmp(*message, CRAZYCHAT_INVITE_CODE, + strlen(CRAZYCHAT_INVITE_CODE))) { + Debug(*message); + char *split = strchr(*message, '!'); + assert(split); + *split = 0; + split++; + cc_net_recv_invite(account, cc, *sender, + &(*message)[strlen(CRAZYCHAT_INVITE_CODE)], + split); + return TRUE; + } else if (!strncmp(*message, CRAZYCHAT_ACCEPT_CODE, + strlen(CRAZYCHAT_ACCEPT_CODE))) { + cc_net_recv_accept(account, cc, *sender, + &(*message)[strlen(CRAZYCHAT_ACCEPT_CODE)]); + return TRUE; + } else if (!strncmp(*message, CRAZYCHAT_READY_CODE, + strlen(CRAZYCHAT_READY_CODE))) { + cc_net_recv_ready(account, cc, *sender); + return TRUE; + } + + return FALSE; +} + +static gboolean display_im_cb(GaimAccount *account, GaimConversation *conv, + char **message, void *data) +{ + struct crazychat *cc; + + cc = (struct crazychat*)data; + assert(cc); + if (!strncmp(*message, CRAZYCHAT_INVITE_CODE, + strlen(CRAZYCHAT_INVITE_CODE))) { + return TRUE; + } else if (!strncmp(*message, CRAZYCHAT_ACCEPT_CODE, + strlen(CRAZYCHAT_ACCEPT_CODE))) { + return TRUE; + } else if (!strncmp(*message, CRAZYCHAT_READY_CODE, + strlen(CRAZYCHAT_READY_CODE))) { + return TRUE; + } + + return FALSE; +} + +static GtkWidget *get_config_frame(GaimPlugin *plugin) +{ + GtkWidget *ret; + GtkWidget *frame; + GtkWidget *vbox, *hbox; + GtkWidget *drawing_area; + GtkWidget *label; + GtkAdjustment *adj; + GtkWidget *spinner; + GtkWidget *button, *button1, *button2; + GSList *group; + struct draw_info *info; + struct crazychat *cc; + + cc = (struct crazychat*)plugin->info->extra_info; + assert(cc); + + /* create widgets */ + + /* creating the config frame */ + ret = gtk_vbox_new(FALSE, 18); + gtk_container_set_border_width(GTK_CONTAINER(ret), 12); + + /* make the network configuration frame */ + frame = gaim_gtk_make_frame(ret, _("Network Configuration")); + gtk_widget_show(frame); + + /* add boxes for packing purposes */ + vbox = gtk_vbox_new(FALSE, 0); + gtk_box_pack_start(GTK_BOX(frame), vbox, TRUE, TRUE, 0); + gtk_widget_show(vbox); + + /* add widgets to row 1 */ + hbox = gtk_hbox_new(FALSE, 0); + gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); + gtk_widget_show(hbox); + label = gtk_label_new(_("TCP port")); + gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 15); + gtk_widget_show(label); + adj = (GtkAdjustment*)gtk_adjustment_new(DEFAULT_CC_PORT, 1, + G_MAXUSHORT, 1, 1000, 0); + spinner = gtk_spin_button_new(adj, 1, 0); + g_signal_connect(G_OBJECT(spinner), "value_changed", + G_CALLBACK(tcp_port_cb), cc); + gtk_box_pack_start(GTK_BOX(hbox), spinner, FALSE, FALSE, 0); + gtk_widget_show(spinner); + label = gtk_label_new(_("UDP port")); + gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 15); + gtk_widget_show(label); + adj = (GtkAdjustment*)gtk_adjustment_new(DEFAULT_CC_PORT, 1, + G_MAXUSHORT, 1, 1000, 0); + spinner = gtk_spin_button_new(adj, 1, 0); + g_signal_connect(G_OBJECT(spinner), "value_changed", + G_CALLBACK(udp_port_cb), cc); + gtk_box_pack_start(GTK_BOX(hbox), spinner, FALSE, FALSE, 0); + gtk_widget_show(spinner); + + /* make the feature configuration frame */ + frame = gaim_gtk_make_frame(ret, _("Feature Calibration")); + gtk_widget_show(frame); + + /* add hbox for packing purposes */ + hbox = gtk_hbox_new(TRUE, 40); + gtk_box_pack_start(GTK_BOX(frame), hbox, TRUE, TRUE, 0); + gtk_widget_show(hbox); + + /* add feature calibration options */ + + /* add vbox for packing purposes */ + vbox = gtk_vbox_new(TRUE, 0); + gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 0); + gtk_widget_show(vbox); + + /* add enabled / disabled */ + button1 = gtk_radio_button_new_with_label(NULL, _("Enabled")); + gtk_box_pack_start(GTK_BOX(vbox), button1, TRUE, TRUE, 0); + gtk_widget_show(button1); + + group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(button1)); + button2 = gtk_radio_button_new_with_label(group, _("Disabled")); + gtk_box_pack_start(GTK_BOX(vbox), button2, TRUE, TRUE, 0); + gtk_widget_show(button2); + + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button1), + cc->features_state); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button2), + !cc->features_state); + g_signal_connect_swapped(G_OBJECT(button1), "toggled", + G_CALLBACK(features_enable_cb), cc); + + /* add vbox for packing purposes */ + vbox = gtk_vbox_new(TRUE, 0); + gtk_box_pack_end(GTK_BOX(hbox), vbox, TRUE, TRUE, 0); + gtk_widget_show(vbox); + + /* add calibrate button */ + button = gtk_button_new_with_label("Calibrate"); + gtk_box_pack_start(GTK_BOX(vbox), button, TRUE, FALSE, 0); + gtk_widget_show(button); + + gtk_widget_show(ret); + + return ret; +} + +static void tcp_port_cb(GtkSpinButton *spin, struct crazychat *cc) +{ + assert(spin); + assert(cc); + cc->tcp_port = gtk_spin_button_get_value_as_int(spin); + Debug("New tcp port: %d\n", cc->tcp_port); +} + +static void udp_port_cb(GtkSpinButton *spin, struct crazychat *cc) +{ + assert(spin); + assert(cc); + cc->udp_port = gtk_spin_button_get_value_as_int(spin); + Debug("New udp port: %d\n", cc->udp_port); +} + +static void features_enable_cb(struct crazychat *cc) +{ + Debug("Changing features state\n"); + cc->features_state = !cc->features_state; + if (cc->features_state) { + cc->input_data = init_input(cc); + } else { + if (cc->input_data) { + gtk_widget_destroy(cc->input_data->widget); + } + } +} + +static gboolean cc_signed_on(GaimConnection *gc, void *plugin) +{ + struct crazychat *extra; + void *conv_handle; + + assert(plugin); + extra = (struct crazychat*)((GaimPlugin*)plugin)->info->extra_info; + gaim_signal_disconnect + (gaim_connections_get_handle(), "signed-on", + plugin, GAIM_CALLBACK(cc_signed_on)); + gaim_signal_connect(GAIM_GTK_BLIST + (gaim_get_blist()), + "drawing-menu", plugin, + GAIM_CALLBACK(cc_buddy_menu), NULL); + conv_handle = gaim_conversations_get_handle(); + gaim_signal_connect(conv_handle, "received-im-msg", plugin, + GAIM_CALLBACK(receive_im_cb), extra); + gaim_signal_connect(conv_handle, "displaying-im-msg", plugin, + GAIM_CALLBACK(display_im_cb), extra); + return FALSE; +} + +static gboolean plugin_load(GaimPlugin *plugin) +{ + GaimBuddyList *buddy_list; + void *conv_handle; + + if (cc_init_gtk_gl()) + return FALSE; + + cc_init(&cc_info); + buddy_list = gaim_get_blist(); + if (buddy_list) { + gaim_signal_connect(GAIM_GTK_BLIST + (buddy_list), + "drawing-menu", plugin, + GAIM_CALLBACK(cc_buddy_menu), NULL); + conv_handle = gaim_conversations_get_handle(); + gaim_signal_connect(conv_handle, "received-im-msg", plugin, + GAIM_CALLBACK(receive_im_cb), &cc_info); + gaim_signal_connect(conv_handle, "displaying-im-msg", plugin, + GAIM_CALLBACK(display_im_cb), &cc_info); + } else { + gaim_signal_connect + (gaim_connections_get_handle(), "signed-on", + plugin, GAIM_CALLBACK(cc_signed_on), plugin); + } + + Debug("CrazyChat plugin loaded.\n"); + + return TRUE; +} + +static gboolean plugin_unload(GaimPlugin *plugin) +{ + void *conv_handle; + struct crazychat *extra; + assert(plugin); + extra = (struct crazychat*) plugin->info->extra_info; + cc_destroy(extra); + conv_handle = gaim_conversations_get_handle(); + gaim_signal_disconnect(GAIM_GTK_BLIST + (gaim_get_blist()), + "drawing-menu", plugin, + GAIM_CALLBACK(cc_buddy_menu)); + gaim_signal_disconnect(conv_handle, "received-im", plugin, + GAIM_CALLBACK(receive_im_cb)); + gaim_signal_disconnect(conv_handle, "displaying-im-msg", plugin, + GAIM_CALLBACK(display_im_cb)); + Debug("CrazyChat plugin unloaded.\n"); + return TRUE; +} + +static void init_plugin(GaimPlugin *plugin) +{ + gtk_gl_init(NULL, NULL); + memset(&cc_info, 0, sizeof(cc_info)); + Debug("CrazyChat plugin initialized\n"); +} + +GAIM_INIT_PLUGIN(crazychat, init_plugin, info) diff -r f854402837ba -r ed017b9c532d plugins/crazychat/cc_gtk_gl.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/cc_gtk_gl.c Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,288 @@ +#include +#include +#include +#include +#include "cc_gtk_gl.h" +#include "util.h" + +static GdkGLConfig *glconfig = NULL; + +/** + * Resets the OpenGL viewport stuff on widget reconfiguration (resize, + * reposition) + * @param widget widget that got reconfigured + * @param event the configuration event + * @param data unused + * @return FALSE to propagate other handlers + */ +static gboolean configure_event(GtkWidget *widget, GdkEventConfigure *event, + void *data); + +/** + * Maps the widget to the screen. + * @param widget widget that got mapped + * @param event the map event + * @param data draw info struct + * @return FALSE to propagate other handlers + */ +static gboolean map_event(GtkWidget *widget, GdkEventAny *event, void *data); + +/** + * Unmaps the widget from the screen. + * @param widget widget that got unmapped + * @param event the configuration event + * @param data draw info struct + * @return FALSE to propagate other handlers + */ +static gboolean unmap_event(GtkWidget *widget, GdkEventAny *event, void *data); + +/** + * Respond to widget visibility change. + * @param widget widget whose visibility changed + * @param event the visibility event + * @param data draw info struct + * @return FALSE to propagate other handlers + */ +static gboolean visibility_notify_event(GtkWidget *widget, + GdkEventVisibility *event, void *data); + +/** + * Add a glib timer to periodically draw the widget. + * @param widget widget we're drawing + * @param info draw info struct + */ +static void widget_draw_timer_add(GtkWidget *widget, struct draw_info *info); + +/** + * Remove glib timer that was drawing this widget. + * @param widget widget we're drawing + * @param info draw info struct + */ +static void widget_draw_timer_remove(GtkWidget *widget, struct draw_info *info); + +/** + * Periodically invalidates gtk gl widget and tells GTK to redraw + * @param widget widget we're drawing + */ +static gboolean widget_draw_timer(GtkWidget *widget); + +/** + * Cleanup widget stuff when it's getting destroyed. + * @param widget widget that got destroyed + * @param data draw info struct + */ +static void destroy_event(GtkWidget *widget, struct draw_info *data); + +int cc_init_gtk_gl() +{ + if (glconfig) + return 0; + + /* configure OpenGL */ + + glconfig = gdk_gl_config_new_by_mode(GDK_GL_MODE_RGB | + GDK_GL_MODE_DEPTH | + GDK_GL_MODE_DOUBLE); + + if (glconfig == NULL) { + Debug("*** Cannot find the double-buffered visual.\n"); + Debug("*** Trying single-buffered visual.\n"); + + /* Try single-buffered visual */ + glconfig = gdk_gl_config_new_by_mode(GDK_GL_MODE_RGB | + GDK_GL_MODE_DEPTH); + if (glconfig == NULL) { + Debug("*** No appropriate OpenGL-capable visual " + "found.\n"); + return 1; + } + } + + return 0; +} + +void cc_new_gl_window(gl_init_func init, gl_config_func config, + gl_draw_func draw, struct draw_info *data, + struct window_box *ret) +{ + GtkWidget *window; + GtkWidget *vbox; + GtkWidget *drawing_area; + + window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_container_set_reallocate_redraws(GTK_CONTAINER(window), TRUE); + + vbox = gtk_vbox_new(FALSE, 0); + gtk_container_add(GTK_CONTAINER(window), vbox); + gtk_widget_show(vbox); + + if (!data) { + data = (struct draw_info*)malloc(sizeof(*data)); + assert(data); + memset(data, 0, sizeof(*data)); + data->timeout = TRUE; + data->delay_ms = DEFAULT_FRAME_DELAY; + } + drawing_area = cc_new_gl_area(init, config, draw, data); + gtk_box_pack_start(GTK_BOX(vbox), drawing_area, TRUE, TRUE, 0); + gtk_widget_show(drawing_area); + ret->window = window; + ret->vbox = vbox; + ret->draw_area = drawing_area; +} + +GtkWidget *cc_new_gl_area(gl_init_func init, gl_config_func config, + gl_draw_func draw, struct draw_info *data) +{ + GtkWidget *drawing_area; + + assert(data); + + drawing_area = gtk_drawing_area_new(); + assert(drawing_area); + + assert(gtk_widget_set_gl_capability(drawing_area, glconfig, NULL, FALSE, + GDK_GL_RGBA_TYPE)); + gtk_widget_add_events (drawing_area, GDK_VISIBILITY_NOTIFY_MASK); + if (init) { + g_signal_connect_after(G_OBJECT(drawing_area), "realize", + G_CALLBACK(init), data->data); + } + if (config) { + g_signal_connect(G_OBJECT(drawing_area), "configure_event", + G_CALLBACK(config), NULL); + } else { + g_signal_connect(G_OBJECT(drawing_area), "configure_event", + G_CALLBACK(configure_event), NULL); + } + if (draw) { + g_signal_connect(G_OBJECT(drawing_area), "expose_event", + G_CALLBACK(draw), data->data); + } + g_signal_connect(G_OBJECT(drawing_area), "map_event", + G_CALLBACK(map_event), data); + g_signal_connect(G_OBJECT(drawing_area), "unmap_event", + G_CALLBACK(unmap_event), data); + g_signal_connect(G_OBJECT(drawing_area), "visibility_notify_event", + G_CALLBACK(visibility_notify_event), data); + g_signal_connect(G_OBJECT(drawing_area), "destroy", + G_CALLBACK(destroy_event), data); + + return drawing_area; +} + + +static gboolean configure_event(GtkWidget *widget, + GdkEventConfigure *event, void *data) +{ + GdkGLContext *glcontext = gtk_widget_get_gl_context(widget); + GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable(widget); + + GLfloat w = widget->allocation.width; + GLfloat h = widget->allocation.height; + GLfloat aspect; + +// Debug("configuring\n"); + + /*** OpenGL BEGIN ***/ + if (!gdk_gl_drawable_gl_begin(gldrawable, glcontext)) + return FALSE; + + glViewport(0, 0, w, h); + glMatrixMode(GL_PROJECTION); + + glLoadIdentity(); + if (w > h) { + aspect = w / h; + glFrustum(-aspect, aspect, -1.0, 1.0, 2.0, 60.0); + } else { + aspect = h / w; + glFrustum(-1.0, 1.0, -aspect, aspect, 2.0, 60.0); + } + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + gdk_gl_drawable_gl_end(gldrawable); + /*** OpenGL END ***/ + + return FALSE; +} + +static int map_event(GtkWidget *widget, GdkEventAny *event, void *data) +{ + struct draw_info *info = (struct draw_info*)data; + Debug("map\n"); + + if (info->timeout) { + widget_draw_timer_add(widget, info); + } + return FALSE; +} + +static int unmap_event(GtkWidget *widget, GdkEventAny *event, void *data) +{ + struct draw_info *info = (struct draw_info*)data; + Debug("unmap\n"); + + if (info->timeout) { + widget_draw_timer_remove(widget, info); + } + return FALSE; +} + +static int visibility_notify_event(GtkWidget *widget, GdkEventVisibility *event, + void *data) +{ + struct draw_info *info = (struct draw_info*)data; + Debug("visibility\n"); + + if (event->state == GDK_VISIBILITY_FULLY_OBSCURED) { + Debug("obscured\n"); + if (info->timeout) { + widget_draw_timer_remove(widget, info); + } + } else { + Debug("visible\n"); + if (info->timeout) { + widget_draw_timer_add(widget, info); + } + } + return FALSE; +} + +static void widget_draw_timer_add(GtkWidget *widget, struct draw_info *info) +{ + if (!info->timer_id) { + info->timer_id = g_timeout_add(info->delay_ms, + (GSourceFunc)widget_draw_timer, widget); + } +} + +static void widget_draw_timer_remove(GtkWidget *widget, struct draw_info *info) +{ + if (info->timer_id) { + g_source_remove(info->timer_id); + info->timer_id = 0; + } +} + +static gboolean widget_draw_timer(GtkWidget *widget) +{ + /* invalidate the window */ + gdk_window_invalidate_rect (widget->window, &widget->allocation, FALSE); + + /* tell gtk to update it _now_ */ + gdk_window_process_updates (widget->window, FALSE); + + return TRUE; +} + +static void destroy_event(GtkWidget *widget, struct draw_info *data) +{ + Debug("destroying widget\n"); + + if (data) { + widget_draw_timer_remove(widget, data); + free(data); + } +} diff -r f854402837ba -r ed017b9c532d plugins/crazychat/cc_gtk_gl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/cc_gtk_gl.h Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,50 @@ +#include +#include + +#define DEFAULT_FRAME_DELAY 40 + +typedef void (gl_init_func) (GtkWidget *widget, void *data); +typedef gboolean (*gl_config_func) (GtkWidget *widget, GdkEventConfigure *event, + void *data); +typedef gboolean (*gl_draw_func) (GtkWidget *widget, GdkEventExpose *event, + void *data); + +struct draw_info { + gboolean timeout; /* use/not use a timer callback */ + int timer_id; /* glib timer callback id */ + guint delay_ms; /* timer callback delay in ms */ + void *data; /* drawing data */ +}; + +struct window_box { + GtkWidget *window; + GtkWidget *vbox; + GtkWidget *draw_area; +}; + +/** + * Initialize the gtkglext framework for all our widgets. + * @return 0 on success, non-zero on failure + */ +int cc_init_gtk_gl(); + +/** + * Create a new OpenGL enabled window + * @param init the initialize callback function + * @param draw the drawing callback function + * @param data drawing metadata + * @param ret struct with returned window and vbox + */ +void cc_new_gl_window(gl_init_func init, gl_config_func config, + gl_draw_func draw, struct draw_info *data, + struct window_box *ret); + +/** + * Create a new OpenGL enabled drawing area widget. + * @param init the initialize callback function + * @param draw the drawing callback function + * @param data drawing metadata + * @return the drawing widget + */ +GtkWidget *cc_new_gl_area(gl_init_func init, gl_config_func config, + gl_draw_func draw, struct draw_info *data); diff -r f854402837ba -r ed017b9c532d plugins/crazychat/cc_interface.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/cc_interface.h Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,124 @@ +#ifndef __CC_INTERFACE_H__ +#define __CC_INTERFACE_H__ + +#include +#include "crazychat.h" + +/* XXX feature encapsulation: still in flux, not stable XXX */ + +//charlie +typedef enum {REMOTE, LOCAL} OUTPUT; + +gboolean configure(GtkWidget *widget, + GdkEventConfigure *event, void *data); + +gboolean draw(GtkWidget *widget, GdkEventExpose *event, + void *data); + +void init (GtkWidget *widget, void *data); + +void setupLighting(GtkWidget *widget); + +void setupDrawlists(OUTPUT output); + +struct cc_features { + guint8 head_size; + guint8 left_eye_open, right_eye_open; /*booleans*/ + guint8 mouth_open; /*percentage*/ + guint8 head_x_rot, head_y_rot, head_z_rot; /* head rotation */ + guint8 x, y; /*center of head*/ + guint8 head_color, appendage_color, lid_color, right_iris_color, left_iris_color; //colors + guint8 mode, kind; +}; + +struct output_instance { + struct cc_features *features; + struct cc_session *session; + float past_y; + OUTPUT my_output; + GtkWidget *widget; + GtkWidget *box; +}; + +struct input_instance { + int timer_id; + struct cc_features face; + GtkWidget *widget; + GtkWidget *box; + GtkWidget *button; + GtkWidget *label; + GtkWidget *model; + GtkWidget *head, *appendage, *lid, *right_iris, *left_iris; + struct output_instance output; +}; + +struct output_handlers { + int (*configure)(GtkWidget *widget, GdkEventConfigure *event, + void *data); + void (*init) (GtkWidget *widget, void *data); + gboolean (*draw) (GtkWidget *widget, GdkEventExpose *event, void *data); +}; + +struct cc_session { + struct crazychat *cc; /**< crazychat global data */ + char *name; /**< session peer */ + guint32 peer_ip; /**< peer's ip addr, nbo */ + guint16 peer_port; /**< peer's port hbo */ + struct sockaddr_in peer; /**< peer udp sock addr */ + CC_STATE state; /**< connection state */ + int timer_id; /**< glib timer callback id */ + int tcp_sock; /**< tcp socket connection */ + int udp_sock; /**< udp socket connection */ + struct cc_features features; /**< network peer features */ + struct output_instance *output; /**< output instance data */ + filter_bank *filter; /**< filter instance */ +}; + +struct crazychat { + guint16 tcp_port; /**< tcp port to bind on */ + guint16 udp_port; /**< udp session data port */ + struct cc_session_node *sessions; /**< list of sessions */ + struct input_instance *input_data; /**< input instance data */ + gboolean features_state; /**< features state on/off */ +}; + +/* --- input feature interface --- */ + +#ifdef _DISABLE_QT_ +#define init_input(a) NULL +#define destroy_input(a) +#else + +/** + * Initializes the input subsystem. + * @param cc global crazychat data structure + * @return pointer to an input instance + */ +struct input_instance *init_input(struct crazychat *cc); + +/** + * Destroys the input subsystem. + * @param instance input instance + */ +void destroy_input(struct input_instance *instance); + +#endif /* _DISABLE_QT_ */ + +/* --- output feature interface --- */ + +/** + * Initializes an output instance. + * @param features pointer to features + * @param session pointer to the crazychat session + * @return pointer to the output instance + */ +struct output_instance *init_output(struct cc_features *features, + struct cc_session *session); + +/** + * Destroys an output instance. + * @param instance output instance + */ +void destroy_output(struct output_instance *instance); + +#endif diff -r f854402837ba -r ed017b9c532d plugins/crazychat/cc_network.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/cc_network.c Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,540 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "cc_network.h" +#include "cc_interface.h" +#include "util.h" + +/* --- begin constant definitions --- */ + +#define NETWORK_TIMEOUT_DELAY 40 /* in ms */ +#define MAX_ACCEPT_CHECKS 1000 + +/* --- begin type declarations --- */ + +struct accept_args { + GaimAccount *account; + struct crazychat *cc; + char *name; + guint32 peer_ip; + guint16 peer_port; +}; + +struct sock_accept_args { + GaimAccount *account; + struct cc_session *session; +}; + +/* --- begin function prototypes --- */ + +/** + * Creates a server socket and sends a response to the peer. + * @param account the gaim account sending the ready msg + * @param session the peer CrazyChat session + */ +static void cc_net_send_ready(GaimAccount *account, struct cc_session *session); + +/** + * Handles responses from the CrazyChat session invite dialog box. + * @param dialog the dialog box + * @param response the dialog box button response + * @param args account, crazychat global data, peer name + */ +static void invite_handler(GtkDialog *dialog, gint response, + struct accept_args *args); + +/** + * Periodically checks the server socket for peer's connection. Gives up + * after a set number of checks. + * @param args peer session and account + * @return TRUE to continue checking, FALSE to stop + */ +static gboolean accept_cb(struct sock_accept_args *args); + +/** + * Initialize CrazyChat network session. Sets up the UDP socket and port. + * @param account the account the session is part of + * @param session the CrazyChat network session + */ +static void init_cc_net_session(GaimAccount *account, + struct cc_session *session); + +/** + * Handles checking the network for new feature data and sending out the + * latest features. + * @param session the session we're checking for network traffic + */ +static gboolean network_cb(struct cc_session *session); + +/** + * Generates random bytes in the user specified byte buffer. + * @param buf the byte buffer + * @param len length of the byte buffer + */ +static void generate_randomness(uint8_t buf[], unsigned int len); + +/** + * Sends data over a socket. + * @param s socket file descriptor + * @param buf data buffer + * @param len data buffer length + * @return number of bytes sent or -1 if an error occurred + */ +static int __send(int s, char *buf, int len); + +/* --- begin function definitions --- */ + +void cc_net_send_invite(struct crazychat *cc, char *name, GaimAccount *account) +{ + struct cc_session *session; + GaimConversation *conv; + GaimConvIm *im; + char buf[BUFSIZ]; + + session = cc_find_session(cc, name); + if (session) return; /* already have a session with this guy */ + session = cc_add_session(cc, name); + session->state = INVITE; + conv = gaim_find_conversation_with_account(name, account); + if (!conv) { + conv = gaim_conversation_new(GAIM_CONV_IM, account, name); + } + im = gaim_conversation_get_im_data(conv); + snprintf(buf, BUFSIZ, "%s%s!%d", CRAZYCHAT_INVITE_CODE, + gaim_network_get_ip_for_account(account, -1), cc->tcp_port); + Debug("Sent invite to %s for port: %d\n", name, cc->tcp_port); + gaim_conv_im_send(im, buf); +} + +void cc_net_recv_invite(GaimAccount *account, struct crazychat *cc, char *name, + const char *peer_ip, const char *peer_port) +{ + struct cc_session *session; + GaimConversation *conv; + GaimConvWindow *convwin; + char buf[BUFSIZ]; + struct accept_args *args; + + assert(cc); + assert(name); + Debug("Received a CrazyChat session invite from %s on port %s!\n", + name, peer_port); + session = cc_find_session(cc, name); + if (!session) { + Debug("Creating a CrazyChat session invite dialog box!\n"); + conv = gaim_find_conversation_with_account(name, account); + if (conv) convwin = gaim_conversation_get_window(conv); + else convwin = NULL; + /* pop gtk window asking if want to accept */ + GtkWidget *dialog = + gtk_dialog_new_with_buttons("CrazyChat Session Invite", + GTK_WINDOW(convwin), + GTK_DIALOG_MODAL | + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_STOCK_OK, + GTK_RESPONSE_ACCEPT, + GTK_STOCK_CANCEL, + GTK_RESPONSE_REJECT, + NULL); + snprintf(buf, BUFSIZ, "Would you like to CRaZYchAT with %s?", name); + GtkWidget *label = gtk_label_new(buf); + gtk_container_add(GTK_CONTAINER (GTK_DIALOG(dialog)->vbox), + label); + args = (struct accept_args*)malloc(sizeof(*args)); + args->account = account; + args->cc = cc; + args->name = strdup(name); + assert(inet_aton(peer_ip, (struct in_addr*)&args->peer_ip)); + args->peer_port = atoi(peer_port); + + g_signal_connect(GTK_OBJECT(dialog), "response", + G_CALLBACK(invite_handler), args); + + gtk_widget_show_all(dialog); + } +} + +void cc_net_recv_accept(GaimAccount *account, struct crazychat *cc, char *name, + const char *peer_ip) +{ + struct cc_session *session; + struct in_addr peer_addr; + + assert(cc); + assert(name); + Debug("Received a CrazyChat session accept!\n"); + session = cc_find_session(cc, name); + if (session && session->state == INVITE) { + session->state = ACCEPTED; + assert(inet_aton(peer_ip, &peer_addr)); + session->peer_ip = peer_addr.s_addr; + cc_net_send_ready(account, session); + } +} + +static void cc_net_send_ready(GaimAccount *account, struct cc_session *session) +{ + struct sock_accept_args *args; + + assert(session); + Debug("Initializing the server socket and sending ready message\n"); + /* create the server socket */ + session->tcp_sock = socket(AF_INET, SOCK_STREAM, 0); + assert(session->tcp_sock != -1); + int reuse = 1; + assert(setsockopt(session->tcp_sock, SOL_SOCKET, SO_REUSEADDR, + &reuse, sizeof(int)) != -1); + struct sockaddr_in my_addr; + my_addr.sin_family = AF_INET; + my_addr.sin_port = htons(session->cc->tcp_port); + assert(inet_aton(gaim_network_get_ip_for_account(account, -1), + &my_addr.sin_addr)); + memset(&my_addr.sin_zero, 0, sizeof(my_addr.sin_zero)); + assert(bind(session->tcp_sock, (struct sockaddr*)&my_addr, + sizeof(my_addr)) != -1); + Debug("Listening on port: %d\n", my_addr.sin_port); + assert(listen(session->tcp_sock, 1) != -1); + + /* socket created, send the ready message */ + GaimConversation *conv; + GaimConvIm *im; + + conv = gaim_find_conversation_with_account(session->name, account); + if (!conv) { + conv = gaim_conversation_new(GAIM_CONV_IM, account, + session->name); + } + im = gaim_conversation_get_im_data(conv); + gaim_conv_im_send(im, CRAZYCHAT_READY_CODE); + + /* register timer callback for checking socket connection */ + args = (struct sock_accept_args*)malloc(sizeof(*args)); + args->session = session; + args->account = account; + session->udp_sock = MAX_ACCEPT_CHECKS; + session->timer_id = g_timeout_add(NETWORK_TIMEOUT_DELAY, + (GSourceFunc)accept_cb, args); +} + +void cc_net_recv_ready(GaimAccount *account, struct crazychat *cc, char *name) +{ + struct cc_session *session; + struct sockaddr_in server_addr, my_addr; + int sock; + + assert(cc); + assert(name); + Debug("Received a CrazyChat session ready!\n"); + session = cc_find_session(cc, name); + if (session && session->state == ACCEPTED) { + /* connect to peer */ + session->tcp_sock = socket(AF_INET, SOCK_STREAM, 0); + assert(session->tcp_sock != -1); + server_addr.sin_family = AF_INET; + server_addr.sin_port = session->peer_port; + server_addr.sin_addr.s_addr = session->peer_ip; + memset(&(server_addr.sin_zero), 0, + sizeof(server_addr.sin_zero)); + assert(connect(session->tcp_sock, + (struct sockaddr*)&server_addr, + sizeof(server_addr)) != -1); + Debug("Connecting to peer on port %d\n", session->peer_port); + + /* now set state */ + session->state = CONNECTED; + init_cc_net_session(account, session); + } +} + +static void invite_handler(GtkDialog *dialog, gint response, struct accept_args *args) +{ + struct cc_session *session; + char buf[BUFSIZ]; + GaimConversation *conv; + GaimConvIm *im; + + if (response == GTK_RESPONSE_ACCEPT) { + assert(args); + session = cc_find_session(args->cc, args->name); + assert(!session); + session = cc_add_session(args->cc, args->name); + session->state = ACCEPTED; + session->peer_ip = args->peer_ip; + session->peer_port = args->peer_port; + snprintf(buf, BUFSIZ, "%s%s", CRAZYCHAT_ACCEPT_CODE, + gaim_network_get_ip_for_account(args->account, -1)); + conv = gaim_find_conversation_with_account(args->name, + args->account); + if (!conv) { + conv = gaim_conversation_new(GAIM_CONV_IM, + args->account, args->name); + } + im = gaim_conversation_get_im_data(conv); + gaim_conv_im_send(im, buf); + } + free(args->name); + free(args); + gtk_widget_destroy(GTK_WIDGET(dialog)); +} + +static gboolean accept_cb(struct sock_accept_args *args) +{ + fd_set fds; + struct timeval zero; + int ret; + GaimAccount *account; + struct cc_session *session; + + assert(args); + account = args->account; + session = args->session; + assert(account); + assert(session); + + /* set select to check on our tcp socket */ + FD_ZERO(&fds); + FD_SET(session->tcp_sock, &fds); + memset(&zero, 0, sizeof(zero)); + + /* check socket */ + ret = select(session->tcp_sock+1,&fds, NULL, NULL, &zero); + assert(ret != -1); + + if (ret) { /* got something to check */ + Debug("Checking pending connection\n"); + int sock; + struct sockaddr_in client_addr; + socklen_t sin_size; + + sin_size = sizeof(client_addr); + sock = accept(session->tcp_sock, + (struct sockaddr*)&client_addr, &sin_size); + assert(sock != -1); + + /* check if it's a match */ + if (client_addr.sin_addr.s_addr == session->peer_ip) { + /* cool, we're set */ + Debug("Accepted tcp connect from %s\n", session->name); + close(session->tcp_sock); + session->tcp_sock = sock; + session->state = CONNECTED; + session->timer_id = 0; + init_cc_net_session(account, session); + Debug("Will start sending to port %d\n", + session->peer_port); + free(args); + return FALSE; + } + } + + session->udp_sock--; + + if (!session->udp_sock) { /* timed out */ + /* remove session from session list */ + cc_remove_session(session->cc, session); + free(args); + return FALSE; + } + + return TRUE; +} + +static void init_cc_net_session(GaimAccount *account, + struct cc_session *session) +{ + struct sockaddr_in my_addr; + struct sockaddr_in peer_addr; + int reuse; + + /* send/obtain the udp port information */ + + assert(__send(session->tcp_sock, (char*)&session->cc->udp_port, + sizeof(session->cc->udp_port)) == + sizeof(session->cc->udp_port)); + assert(recv(session->tcp_sock, (char*)&session->peer_port, + sizeof(session->peer_port), 0) == + sizeof(session->peer_port)); + + Debug("Established a CrazyChat session with %s!\n", session->name); + + /* connect the udp sockets */ + + session->udp_sock = socket(AF_INET, SOCK_DGRAM, 0); + + assert(!setsockopt(session->udp_sock, SOL_SOCKET, SO_REUSEADDR, + &reuse, sizeof(reuse))); + + my_addr.sin_family = AF_INET; + my_addr.sin_port = htons(session->cc->udp_port); + assert(inet_aton(gaim_network_get_ip_for_account(account, -1), + &my_addr.sin_addr)); + memset(my_addr.sin_zero, 0, sizeof(my_addr.sin_zero)); + assert(!bind(session->udp_sock, (struct sockaddr*)&my_addr, + sizeof(my_addr))); + session->peer.sin_family = AF_INET; + session->peer.sin_port = htons(session->peer_port); + session->peer.sin_addr.s_addr = session->peer_ip; + memset(&session->peer.sin_zero, 0, sizeof(session->peer.sin_zero)); + + Debug("Bound udp sock to port %d, connecting to port %d\n", + session->cc->udp_port, session->peer_port); + + memset(&session->features, 0, sizeof(session->features)); + + session->output = init_output(&session->features, session); + + session->filter = Filter_Initialize(); + + /* initialize timer callback */ + session->timer_id = g_timeout_add(NETWORK_TIMEOUT_DELAY, + (GSourceFunc)network_cb, session); + + /* initialize input subsystem if not initialized */ + if (!session->cc->features_state) { + session->cc->input_data = init_input(session->cc); + session->cc->features_state = 1; + } +} + +static gboolean network_cb(struct cc_session *session) +{ + fd_set fds; + struct timeval zero; + int ret; + int command; + struct cc_features *features; + + assert(session); + + Debug("Checking for data\n"); + + /* set select to check on our tcp socket */ + FD_ZERO(&fds); + FD_SET(session->tcp_sock, &fds); + memset(&zero, 0, sizeof(zero)); + + /* check tcp socket */ + ret = select(session->tcp_sock+1, &fds, NULL, NULL, &zero); + assert(ret != -1); + + while (ret) { + ret = recv(session->tcp_sock, &command, sizeof(command), 0); + assert(ret != -1); + if (!ret) { + /* tcp connection closed, destroy connection */ + gtk_widget_destroy(session->output->widget); + return FALSE; + } + assert(ret == sizeof(command)); + + FD_ZERO(&fds); + FD_SET(session->tcp_sock, &fds); + ret = select(session->tcp_sock+1, &fds, NULL, NULL, &zero); + assert(ret != -1); + } + + /* set select to check on our udp socket */ + FD_ZERO(&fds); + FD_SET(session->udp_sock, &fds); + memset(&zero, 0, sizeof(zero)); + + /* check udp socket */ + ret = select(session->udp_sock+1, &fds, NULL, NULL, &zero); + assert(ret != -1); + + features = &session->features; + + while (ret) { /* have data, let's copy it for output */ + struct sockaddr_in from; + int fromlen; + ret = recvfrom(session->udp_sock, &session->features, + sizeof(session->features), + 0, (struct sockaddr*)&from, &fromlen); + Debug("Received %d bytes from port %d\n", ret, + ntohs(from.sin_port)); + filter(features, session->filter); + Debug("\thead size: %d\n", features->head_size); + Debug("\topen: left(%s), right(%s), mouth(%s)\n", + features->left_eye_open ? "yes" : "no", + features->right_eye_open ? "yes" : "no", + features->mouth_open ? "yes" : "no"); + Debug("\thead rotation: x(%d), y(%d), z(%d)\n", + features->head_x_rot, features->head_y_rot, + features->head_z_rot); + Debug("\tx(%d), y(%d)\n", features->x, features->y); + if (ret == -1) { + perror("wtf:"); + } + assert(ret != -1); + + FD_ZERO(&fds); + FD_SET(session->udp_sock, &fds); + ret = select(session->udp_sock+1, &fds, NULL, NULL, &zero); + assert(ret != -1); + } + +#ifdef _DISABLE_QT_ + struct cc_features bogus; + features = &bogus; + generate_randomness((uint8_t*)features, sizeof(*features)); +#else + features = &session->cc->input_data->face; +#endif + assert(sendto(session->udp_sock, (char*)features, + sizeof(*features), 0, (struct sockaddr*)&session->peer, + sizeof(session->peer)) == sizeof(*features)); + Debug("Sent %d bytes\n", sizeof(*features)); + Debug("\thead size: %d\n", features->head_size); + Debug("\topen: left(%s), right(%s), mouth(%s)\n", + features->left_eye_open ? "yes" : "no", + features->right_eye_open ? "yes" : "no", + features->mouth_open ? "yes" : "no"); + Debug("\thead rotation: x(%d), y(%d), z(%d)\n", + features->head_x_rot, features->head_y_rot, + features->head_z_rot); + Debug("\tx(%d), y(%d)\n", features->x, features->y); + + /* clear easter egg */ + features->mode = 0; + + return TRUE; +} + +static void generate_randomness(uint8_t buf[], unsigned int len) +{ + int fd; + + fd = open("/dev/random", O_RDONLY); + assert(fd != -1); + + assert(read(fd, buf, len) == len); + close(fd); +} + +static int __send(int s, char *buf, int len) +{ + int total = 0; /* how many bytes we've sent */ + int bytesleft = len; /* how many we have left to send */ + int n; + + while (total < len) { + n = send(s, buf + total, bytesleft, 0); + if (n == -1) { + Debug("ERROR: %s\n", strerror(errno)); + return -1; + } + total += n; + bytesleft -= n; + } + + return total; +} diff -r f854402837ba -r ed017b9c532d plugins/crazychat/cc_network.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/cc_network.h Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,78 @@ +#ifndef __CC_NETWORK_H__ +#define __CC_NETWORK_H__ + +#include +#include +#include "crazychat.h" + +/* --- begin constant definition --- */ + +#define DEFAULT_CC_PORT 6543 + +#define CRAZYCHAT_INVITE_CODE "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" \ + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" \ + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" \ + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" \ + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" \ + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" +#define CRAZYCHAT_ACCEPT_CODE "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" \ + "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" \ + "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" \ + "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" \ + "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" \ + "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" +#define CRAZYCHAT_READY_CODE "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC" \ + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC" \ + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC" \ + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC" \ + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC" \ + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC" + +/* --- begin function declarations --- */ + +/** + * Creates a new CrazyChat session if one doesn't exist and sends the invite. + * @param cc global crazychat data structure + * @param name the peer name + * @param account the gaim account + */ +void cc_net_send_invite(struct crazychat *cc, char *name, GaimAccount *account); + +/** + * Pops up the CrazyChat invitation accept window if a CrazyChat session does + * not exist yet for this peer. + * @param account gaim account + * @param cc global crazychat data structure + * @param name the peer name + * @param peer_ip the peer's ip address + * @param peer_port the peer's tcp port + */ +void cc_net_recv_invite(GaimAccount *account, struct crazychat *cc, char *name, + const char *peer_ip, const char *peer_port); + +/** + * Accepts the CrazyChat invitation and sends the response. + * @param session the CrazyChat session + */ +void cc_net_send_accept(struct cc_session *session); + +/** + * Receives a CrazyChat accept message, and if appropriate, creates a server + * socket and sends the ready message. + * @param account the gaim account which received the message + * @param cc global crazychat data structure + * @param name the peer name + * @param peer_ip the peer's ip address + */ +void cc_net_recv_accept(GaimAccount *account, struct crazychat *cc, char *name, + const char *peer_ip); + +/** + * Receives a CrazyChat ready message, and if appropriate, connects to peer + * @param account the gaim account which received the message + * @param cc global crazychat data structure + * @param name the peer name + */ +void cc_net_recv_ready(GaimAccount *account, struct crazychat *cc, char *name); + +#endif diff -r f854402837ba -r ed017b9c532d plugins/crazychat/cc_output.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/cc_output.c Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,353 @@ +#include +#include +#include +#include +#include +#include +#include "util.h" +#include "cc_interface.h" +#include "crazychat.h" +#include + +#include "cc_gtk_gl.h" + +#include "face.h" +#include "glm.h" + + +#define TAN_30 0.577 +#define ROOT_3 1.73 +//this will be the width of all heads +#define HEAD_WIDTH 2.5 +#define HEAD_HEIGHT 2.5 //same for now, this will actually vary from head +#define PERSONS_HEAD 1 +#define MOVEMENT .33 + +GLfloat ambient[] = {1.0, 1.0, 1.0, 1.0}; +GLfloat diffuse[] = {.7, .7, .7, 1}; +GLfloat specular[] = {1, 1, 1, 1}; +GLfloat lightpos[] = {0.0, 0.0, 20, 1}; +GLfloat specref[] = {1.0, 1, 1, 1,}; + +GLfloat xrot, yrot, zrot; +GLfloat x, y, z, mouth_open; +GLint left_eye_frame, right_eye_frame; //between 0 - 8 +GLint mouth_type; +GLint mouth_frame; +DIRECTION dir; +BOOL left_open, right_open; +GLfloat window_aspect; + +FACE remote_shark_face, remote_dog_face, local_shark_face, local_dog_face; +int count = 0; +int curr_materials[DOG_SHARK_CHANGE]; //these are the materials from output_instance +OUTPUT_MODE curr_mode; +KIND which_face; + +static void destroy_cb(GtkWidget *widget, struct output_instance *data); + +void Interpolate(struct output_instance* instance){ + GLfloat rangeX, rangeY, minZ, adj, angle, temp; + count++; +/* yrot=90; + zrot=0; + z=5; + x=0; + y=0; + left_open = right_open = TRUE; + mouth_open = (float)(count%10)/10; + dir = CONST; + curr_mode = NORMAL; + return; +*/ + + //find z plane from percentage of face + if(instance->features->head_size==0){ + z = 5; + } + + temp = (GLfloat)instance->features->head_size/40.0; + //printf("head size %d\n", instance->features->head_size); + + minZ = ROOT_3; + z = ROOT_3*(PERSONS_HEAD/temp); + if(z < minZ) + z = minZ; + + //these calculations are based on a 90 degree viewing angle + rangeX = z*(TAN_30)*2; + rangeY = window_aspect*rangeX; + temp = (GLfloat)instance->features->x; + if(temp>50) { //then its on the left + temp = (temp - 50.0)/50.0; + x = 0 - temp*rangeX/1.0; + } + else { + temp = (50.0-temp)/50.0; + x = 0 + temp*rangeX/1.0; + } + + temp = (GLfloat)instance->features->y; + + if(temp>50){ + temp = (temp-50.0)/50.0; + y = 0 - temp*rangeY/1.0; + } + else { + temp = (50.0-temp)/50.0; + y = 0 + temp*rangeY/1.0; + } + + temp = (GLfloat)instance->features->head_y_rot; + yrot = temp - 50; + temp = (GLfloat)instance->features->head_z_rot; + zrot = temp-50; + + if(y-instance->past_y < -MOVEMENT) + dir = DOWN; + else if(y-instance->past_y > MOVEMENT) + dir = UP; + else + dir = CONST; + instance->past_y=y; + + mouth_open = (float)instance->features->mouth_open/105; + count++; + //mouth_open = (count%10)/(10); + + if(instance->features->left_eye_open==0){ + left_open = FALSE; + } + else{ + left_open = TRUE; + } + + if(instance->features->right_eye_open==0) + right_open = FALSE; + else + right_open = TRUE; + //right_open =1 - (count%5)/4; + + //set the materials + curr_materials[APPENDAGE]=instance->features->appendage_color; + curr_materials[HEAD]=instance->features->head_color; + curr_materials[LIDS]=instance->features->lid_color; + curr_materials[LEFT_IRIS]=instance->features->left_iris_color; + curr_materials[RIGHT_IRIS]=instance->features->right_iris_color; + // we don't get an x rotation + xrot = 0; + curr_mode=instance->features->mode; + if(instance->features->kind==0) + which_face=DOG; + else + which_face=SHARK; + +} + + + +gboolean configure(GtkWidget *widget, + GdkEventConfigure *event, void *data) +{ + GdkGLContext *glcontext = gtk_widget_get_gl_context(widget); + GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable(widget); + + GLfloat w = widget->allocation.width; + GLfloat h = widget->allocation.height; + GLfloat aspect; + + Debug("configuring\n"); + + + /*** OpenGL BEGIN ***/ + if (!gdk_gl_drawable_gl_begin(gldrawable, glcontext)) + return FALSE; + + glEnable(GL_DEPTH_TEST); + glViewport(0, 0, w, h); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + if (w > h) { + window_aspect = w / h; + } else { + window_aspect = h / w; + } + + //glOrtho(-10, 10, -10,10, 0.0001, 1000); + gluPerspective(90.0, window_aspect, 0.0001, 1000.0); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + gdk_gl_drawable_gl_end(gldrawable); + /*** OpenGL END ***/ + + return TRUE; +} + +gboolean draw(GtkWidget *widget, GdkEventExpose *event, + void *data) +{ + struct output_instance *instance = (struct output_instance*)data; + if(!data) { + fprintf(stderr,"null\n"); + } + assert(instance); + Interpolate(instance); + + GdkGLContext *glcontext = gtk_widget_get_gl_context (widget); + GdkGLDrawable *gldrawable = gtk_widget_get_gl_drawable (widget); + + //return TRUE; + + assert(gtk_widget_is_gl_capable(widget)); + + if (!gdk_gl_drawable_gl_begin (gldrawable, glcontext)) { + fprintf(stderr, "We're fucked this time.\n"); + return FALSE; + } + + + glClearColor(1.0, 1.0, 1.0, 0.0); + //glDisable(GL_CULL_FACE); + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glColor3f(1.0, 1.0, 1.0); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + glTranslatef(x, y, -z); + if(instance->my_output==LOCAL){ + if(which_face==DOG){ + change_materials(local_dog_face, curr_materials, DOG_SHARK_CHANGE); + draw_face(local_dog_face, zrot, yrot, left_open, right_open, mouth_open, dir, curr_mode); + } + else { + change_materials(local_shark_face, curr_materials, DOG_SHARK_CHANGE); + draw_face(local_shark_face, zrot, yrot, left_open, right_open, mouth_open, dir, curr_mode); + } + } + else{ + if(which_face==DOG){ + change_materials(remote_dog_face, curr_materials, DOG_SHARK_CHANGE); + draw_face(remote_dog_face, zrot, yrot, left_open, right_open, mouth_open, dir, curr_mode); + } + else{ + change_materials(remote_shark_face, curr_materials, DOG_SHARK_CHANGE); + draw_face(remote_shark_face, zrot, yrot, left_open, right_open, mouth_open, dir, curr_mode); + } + } + if (gdk_gl_drawable_is_double_buffered (gldrawable)) + gdk_gl_drawable_swap_buffers (gldrawable); + else + glFlush (); + return TRUE; +} + +void init (GtkWidget *widget, void *data) +{ + setupDrawlists(REMOTE); + setupLighting(widget); +} + + +void setupDrawlists(OUTPUT output) +{ + if(output==REMOTE){ + remote_shark_face = init_face(SHARK); + remote_dog_face = init_face(DOG); + } + if(output==LOCAL){ + local_shark_face = init_face(SHARK); + local_dog_face = init_face(DOG); + } +} + + +void setupLighting(GtkWidget *widget) +{ + + GLfloat w = widget->allocation.width; + GLfloat h = widget->allocation.height; + glClearColor(1.0f, 1.0f, 1.0f, 1.0f); + glEnable(GL_DEPTH_TEST); + glEnable(GL_LIGHTING); + //glLightfv(GL_LIGHT0, GL_AMBIENT, ambient); + glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT0, GL_SPECULAR, specular); + glLightfv(GL_LIGHT0, GL_POSITION, lightpos); + glEnable(GL_LIGHT0); + //glEnable(GL_COLOR_MATERIAL); + //glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE); + glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuse); + glMateriali(GL_FRONT, GL_SHININESS, 128); + + //glEnable(GL_CULL_FACE); + + glClear(GL_COLOR_BUFFER_BIT); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + //glOrtho(-2, 2, -2, 2, 0.0001, 1000); + + if (w > h) { + window_aspect = w / h; + } else { + window_aspect = h / w; + } + + gluPerspective(90.0, window_aspect, 0.0001, 1000.0); + //glFrustum(-100.0, 100.0, -100.0, 100.0, 0, 10); + glMatrixMode(GL_MODELVIEW); + //gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); +} + +struct output_instance *init_output(struct cc_features *features, + struct cc_session *session) +{ + struct draw_info *info; + struct output_instance *instance; + struct window_box ret; + + instance = (struct output_instance*)malloc(sizeof(*instance)); + assert(instance); + memset(instance, 0, sizeof(*instance)); + instance->features = features; + instance->session = session; + + info = (struct draw_info*)malloc(sizeof(*info)); + memset(info, 0, sizeof(*info)); + info->timeout = TRUE; + info->delay_ms = 40; + info->data = instance; + + + cc_new_gl_window(init, configure, draw, info, &ret); + g_signal_connect(GTK_OBJECT(ret.window), "destroy", + G_CALLBACK(destroy_cb), instance); + gtk_window_set_default_size(ret.window,640,480); + if (session) { + gtk_window_set_title(ret.window, session->name); + } + gtk_widget_show(ret.window); + instance->widget = ret.window; + instance->box = ret.vbox; + return instance; +} + +static void destroy_cb(GtkWidget *widget, struct output_instance *data) +{ + Debug("Closing output window\n"); + if (data->session) { + cc_remove_session(data->session->cc, data->session); + close(data->session->tcp_sock); + close(data->session->udp_sock); + Filter_Destroy(data->session->filter); + destroy_output(data->session->output); + } +} + +void destroy_output(struct output_instance *instance) +{ + free(instance); +} diff -r f854402837ba -r ed017b9c532d plugins/crazychat/configure.ac --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/configure.ac Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,93 @@ +# -*- Autoconf -*- +# Process this file with autoconf to produce a configure script. + +AC_PREREQ(2.57) +AC_INIT(src/crazychat.c) +AM_INIT_AUTOMAKE(CrazyChat, 0.0.1) +AC_CONFIG_HEADER([config.h]) + +# Checks for programs. +AC_PROG_CXX +AC_PROG_CC +AC_PROG_CPP +AM_PROG_CC_STDC +AC_HEADER_STDC +AC_PROG_INSTALL +AC_DISABLE_STATIC +AC_PROG_LIBTOOL + +# Check for debug +AC_ARG_ENABLE(debug, +[AC_HELP_STRING([--enable-debug], [enable debugging])], +[case "${enableval}" in + yes) debug=true ;; + no) debug=false ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;; +esac +test -z "${enableval}" || debug=false],[debug=true]) +AM_CONDITIONAL(ENABLE_DEBUG, test x$debug = xtrue) + +# Check for disabling Quicktime +AC_ARG_ENABLE(qt, +[AC_HELP_STRING([--disable-qt], [disable Quicktime])], +[case "${enableval}" in + yes) qt=true ;; + no) qt=false ;; + *) AC_MSG_ERROR(bad value ${enableval} for --disable-qt) ;; +esac +test -z "${enableval}" || qt=true],[qt=false]) +AM_CONDITIONAL(DISABLE_QT, test x$qt = xtrue) + +# before gettexting, in case iconv matters +case "$host_os" in +darwin*) + AC_MSG_CHECKING([for fink]) + if test -d /sw; then + AC_MSG_RESULT([found, adding /sw to search paths]) + CFLAGS="$CFLAGS -I/sw/include" + else + AC_MSG_RESULT([not found]) + fi + ;; +*) + ;; +esac + +# Checks for libraries. +AC_PATH_X + +AM_PATH_GLIB_2_0(2.0.0,,AC_MSG_ERROR([ +*** GLib 2.0 is required to build CrazyChat; please make sure you have the GLib +*** development headers installed. The latest version of GLib is +*** always available at http://www.gtk.org/.])) +AM_PATH_GTK_2_0(2.0.0,,AC_MSG_ERROR([ +*** GTK+ 2.0 is required to build CrazyChat; please make sure you have the GTK+ +*** development headers installed. The latest version of GTK+ is +*** always available at http://www.gtk.org/.])) +AM_PATH_GTKGLEXT_1_0(1.0.0,,AC_MSG_ERROR([ +*** gtkglext is required to build CrazyChat; please make sure you have the +*** gtkglext development headers installed.])) + +AC_CHECK_LIB([pthread], [pthread_create]) + +# Checks for header files. +AC_HEADER_STDC +AC_HEADER_SYS_WAIT +AC_CHECK_HEADERS([assert.h arpa/inet.h fcntl.h langinfo.h libintl.h netdb.h netinet/in.h stdlib.h string.h sys/socket.h sys/time.h unistd.h]) + +# Checks for typedefs, structures, and compiler characteristics. +AC_C_CONST +AC_TYPE_SIZE_T +AC_HEADER_TIME +AC_STRUCT_TM +AC_C_VOLATILE + +# Checks for library functions. +AC_CHECK_FUNCS([gettimeofday memset]) +AC_CHECK_FUNC(inet_aton, , [AC_CHECK_LIB(resolv, inet_aton, , + [AC_ERROR(inet_aton not found)])]) + +# Output to Makefile +AC_OUTPUT([Makefile + src/Makefile + ]) diff -r f854402837ba -r ed017b9c532d plugins/crazychat/crazychat.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/crazychat.c Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,96 @@ +#include +#include +#include +#include "cc_interface.h" + +struct cc_session_node { + struct cc_session session; + struct cc_session_node *next; +}; + +struct cc_session *cc_find_session(struct crazychat *cc, char *handle) +{ + struct cc_session_node *curr; + + assert(cc); + assert(handle); + + curr = cc->sessions; + while (curr) { + struct cc_session *session = &curr->session; + if (!strncmp(session->name, handle, strlen(session->name))) { + return session; + } + curr = curr->next; + } + return NULL; +} + +struct cc_session *cc_add_session(struct crazychat *cc, char *handle) +{ + struct cc_session_node *curr; + + assert(cc); + assert(handle); + + if (!cc->sessions) { + cc->sessions = (struct cc_session_node*) + malloc(sizeof(*cc->sessions)); + memset(cc->sessions, 0, sizeof(*cc->sessions)); + cc->sessions->session.cc = cc; + cc->sessions->session.name = strdup(handle); + return &cc->sessions->session; + } else { + if (!strncmp(cc->sessions->session.name, handle, + strlen(cc->sessions->session.name))) { + return &cc->sessions->session; + } + } + + curr = cc->sessions; + while (curr->next) { + struct cc_session *session = &curr->next->session; + if (!strncmp(session->name, handle, strlen(session->name))) { + return session; + } + curr = curr->next; + } + curr->next = (struct cc_session_node*)malloc(sizeof(*curr->next)); + memset(curr->next, 0, sizeof(*curr->next)); + curr->next->session.cc = cc; + curr->next->session.name = strdup(handle); + return &curr->next->session; +} + +void cc_remove_session(struct crazychat *cc, struct cc_session *session) +{ + struct cc_session_node *curr, *prev; + + assert(cc); + assert(session); + + assert(cc->sessions); + + curr = cc->sessions; + prev = NULL; + + while (curr) { + if (&curr->session == session) { + if (prev) { + prev->next = curr->next; + } else { + cc->sessions = curr->next; + } + /* destroy curr */ + free(curr); + g_source_remove(session->timer_id); + free(session->name); + free(session); + return; + } + prev = curr; + curr = curr->next; + } + + assert(0); +} diff -r f854402837ba -r ed017b9c532d plugins/crazychat/crazychat.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/crazychat.h Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,41 @@ +#ifndef __CRAZYCHAT_H__ +#define __CRAZYCHAT_H__ + +#include +#include +#include +#include +#include +#include "filter.h" + +struct crazychat; + +/* --- type definitions --- */ + +typedef enum { INVITE = 0, ACCEPT, ACCEPTED, CONNECTED } CC_STATE; + +/** + * Finds the CrazyChat session with the handle. + * @param cc global crazychat data structure + * @param handle the peer name + * @return the cc_session if found, or NULL + */ +struct cc_session *cc_find_session(struct crazychat *cc, char *handle); + +/** + * Adds a new session with a peer, unless a peer session already exists. + * Makes a deep copy of the handle. + * @param cc global crazychat data structure + * @param handle the peer name + * @return the new/old cc_session + */ +struct cc_session *cc_add_session(struct crazychat *cc, char *handle); + +/** + * Removes a crazychat session with a peer. + * @param cc global crazychat data structure + * @param session the cc_session to remove + */ +void cc_remove_session(struct crazychat *cc, struct cc_session *session); + +#endif /* __CRAZYCHAT_H__ */ diff -r f854402837ba -r ed017b9c532d plugins/crazychat/dog_lids.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/dog_lids.c Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,48 @@ +#include + +#include "lid1.h" +#include "lid2.h" +#include "lid3.h" +#include "lid4.h" +#include "lid5.h" +#include "lid6.h" +#include "lid8.h" +#include "lid9.h" +#include "lid10.h" + +#define NUM_LIDS 9 + +GLint lidLists[NUM_LIDS]; + +void initLids(){ + GLint test; + int i; + + GLint[0]=Gen3DObjectListLid1(); + GLint[1]=Gen3DObjectListLid2(); + GLint[2]=Gen3DObjectListLid3(); + GLint[3]=Gen3DObjectListLid4(); + GLint[4]=Gen3DObjectListLid5(); + GLint[5]=Gen3DObjectListLid6(); + GLint[6]=Gen3DObjectListLid8(); + GLint[7]=Gen3DObjectListLid9(); + GLint[8]=Gen3DObjectListLid10(); + +}; + +void drawLids(int left, right) { + //draw left + GLfloat offset = .5; + + glPushMatrix(); + glTranslatef(offset, 0, 0); + glCallList(lidLists[left]); + glPopMatrix(); + + //draw right + glPushMatrix(); + glTranslatef(-offset, 0, 0); + glScalef(-1, 1, 1); + glCallList(lidLists[right]); + glPopMatrix(); +} \ No newline at end of file diff -r f854402837ba -r ed017b9c532d plugins/crazychat/dog_lids.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/dog_lids.h Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,3 @@ +void initLids(); + +void drawLids(int left, int right); \ No newline at end of file diff -r f854402837ba -r ed017b9c532d plugins/crazychat/doggy.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/doggy.c Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,227 @@ +#include "face.h" +#include "doggy.h" +#include +#include +#include "models.h" + +#define NUM_DOGS 11 +#define NUM_DOG_LIDS 10 +#define NUM_EARS 3 +#define NUM_EYES 1 +#define NUM_PUPILS 1 +#define NUM_IRIS 1 +#define SCALE .020 +#define EYES_Y 32.78*SCALE // .295 +#define EYES_X 28.89*SCALE // .26 +#define EYES_Z 42.22*SCALE // .38 +#define EARS_X 60*SCALE //.65 +#define EARS_Y 20*SCALE//.18 +#define EARS_Z -5.56*SCALE //.05 +#define IRIS_X 0*SCALE +#define IRIS_Y 1.67*SCALE//.015 +#define IRIS_Z 7*SCALE//.08 +#define PUP_X 0*SCALE +#define PUP_Y 0*SCALE +#define PUP_Z 1.2*SCALE //.028 +#define IRIS_SCALE .12*SCALE +#define PUP_SCALE .11*SCALE +#define EAR_SCALE .7*SCALE +#define EYE_SCALE .7*SCALE +#define LID_SCALE .77*SCALE +#define DOG_SCALE .58*SCALE +#define MAX_FILE_LEN 64 +#define MAX_EAR_ANGLE 90.0 +#define MIN_EAR_ANGLE -20.0 + + +char dog_mtl_file[MAX_FILE_LEN] = "dog.mtl"; +// the initial dog materials +GLint init_dog_mats[NUM_PARTS] = {1, 2, 2, 4, 0, 3, 5, 0, 0, 0}; + +void draw_pupil(FACE f, PART p) { + struct doggy_struct* dog=(struct doggy_struct*)f->char_struct; + glPushMatrix(); + glTranslatef(IRIS_X, -IRIS_Z, IRIS_Y); + if(p==LEFT_IRIS) + glmSetMat(f->materials, f->mat_indeces[LEFT_IRIS]); + else + glmSetMat(f->materials, f->mat_indeces[RIGHT_IRIS]); + glCallList(dog->iris[0]); + glTranslatef(PUP_X, -PUP_Z, PUP_Y); + glmSetMat(f->materials, f->mat_indeces[PUPIL]); + glCallList(dog->pupil[0]); + glPopMatrix(); +} + +void draw_left_eye(FACE f, BOOL open, int max) { + struct doggy_struct* dog=(struct doggy_struct*)f->char_struct; + if(f->my_mode==CRAZY2) + dog->curr_left_lid=NUM_DOG_LIDS-1; + else + dog->curr_left_lid = compute_lid(open, dog->curr_left_lid, max); + glPushMatrix(); + glTranslatef(-EYES_X, 0.0, 0.0); + glPushMatrix(); + glTranslatef(0.0, -f->curr_eye_pop, 0.0); + draw_pupil(f, LEFT_IRIS); + glmSetMat(f->materials, f->mat_indeces[EYES]); + glCallList(dog->eyes[dog->curr_left_eye]); + glPopMatrix(); + glmSetMat(f->materials, f->mat_indeces[LIDS]); + glCallList(dog->lids[dog->curr_left_lid]); + glPopMatrix(); +} + +void draw_right_eye(FACE f, BOOL open, int max) { + struct doggy_struct* dog=(struct doggy_struct*)f->char_struct; + if(f->my_mode==CRAZY2) + dog->curr_right_lid=NUM_DOG_LIDS-1; + else + dog->curr_right_lid = compute_lid(open, dog->curr_right_lid, max); + glPushMatrix(); + glTranslatef(EYES_X, 0.0, 0.0); + glScalef(-1, 1, 1); + glPushMatrix(); + glTranslatef(0.0, -f->curr_eye_pop, 0.0); + draw_pupil(f, RIGHT_IRIS); + glmSetMat(f->materials, f->mat_indeces[EYES]); + glCallList(dog->eyes[dog->curr_right_eye]); + glPopMatrix(); + glmSetMat(f->materials, f->mat_indeces[LIDS]); + glCallList(dog->lids[dog->curr_right_lid]); + glPopMatrix(); +} + +void dog_eyes(FACE f, GLfloat angle, GLfloat yangle, BOOL left_open, BOOL right_open, DIRECTION dir) +{ + struct doggy_struct* dog=(struct doggy_struct*)f->char_struct; + int max_eye; + if(dir==CONST) { //then not moving, eyes are gettin sleepy + f->eye_count--; + } + else{ + f->eye_count=EYE_TIME*NUM_DOG_LIDS-1; + } + max_eye=f->eye_count/EYE_TIME; + if(max_eye<0) + max_eye=0; + if(f->my_mode==CRAZY2) + f->curr_eye_pop=f->curr_eye_pop + (MAX_EYE_POP - f->curr_eye_pop)/2; + else + f->curr_eye_pop=f->curr_eye_pop - (f->curr_eye_pop-0)/2; + glPushMatrix(); + glTranslatef(0, 0, EYES_Y); + glTranslatef(0, -EYES_Z,0); + draw_left_eye(f, left_open, max_eye); + draw_right_eye(f, right_open, max_eye); + glPopMatrix(); +} + +void dog_ears(FACE f, DIRECTION dir){ + struct doggy_struct* dog=(struct doggy_struct*)f->char_struct; + //printf("ears %f\n", ears); + if(dir==DOWN){ + if(dog->curr_ear < (NUM_EARS-1)) + dog->curr_ear++; + dog->curr_ear_angle = dog->curr_ear_angle+(MAX_EAR_ANGLE-dog->curr_ear_angle)/2; + } + if(dir==UP){ + if(dog->curr_ear > 0) + dog->curr_ear--; + dog->curr_ear_angle = dog->curr_ear_angle+(MIN_EAR_ANGLE-dog->curr_ear_angle)/2; + } + else if(dir==CONST){ + dog->curr_ear=1; + dog->curr_ear_angle = dog->curr_ear_angle+(0-dog->curr_ear_angle)/3; + } + + glPushMatrix(); + glTranslatef(-EARS_X, -EARS_Z, EARS_Y); + if(f->my_mode==CRAZY1) + glRotatef(MAX_EAR_ANGLE, 0.0, 1.0, 0.0); + else + glRotatef(dog->curr_ear_angle, 0.0, 1.0, 0.0); + glmSetMat(f->materials, f->mat_indeces[APPENDAGE]); + glCallList(dog->ears[dog->curr_ear]); + glPopMatrix(); + glPushMatrix(); + glTranslatef(EARS_X, -EARS_Z, EARS_Y); + glScalef(-1, 1, 1); + if(f->my_mode==CRAZY1) + glRotatef(MIN_EAR_ANGLE, 0.0, 1.0, 0.0); + else + glRotatef(dog->curr_ear_angle, 0.0, 1.0, 0.0); + glCallList(dog->ears[dog->curr_ear]); + glPopMatrix(); +} + +void draw_dog(FACE f, GLfloat angle, GLfloat yangle, BOOL left_open, BOOL right_open, GLfloat open, DIRECTION dir, OUTPUT_MODE mode){ + int next_face; + struct doggy_struct* dog; + f->crazy_count--; + if(f->crazy_count==0){ + f->my_mode = mode; + if(mode!=NORMAL) + f->crazy_count = CRAZY_COUNT; + else + f->crazy_count = 1; + } + apply_output_mode(f, &angle, &yangle, &left_open, &right_open, &open, &dir); + next_face = NUM_DOGS - open*NUM_DOGS - 1; + dog = (struct doggy_struct*)f->char_struct; + if(next_face > dog->curr_face) + dog->curr_face++; + else if(next_face < dog->curr_face) + dog->curr_face--; + + glPushMatrix(); + glRotatef(-90, 1.0, 0.0, 0.0); + glRotatef(-yangle, 0.0, 0.0, -1.0); + glRotatef(-angle, 0, 1, 0); + dog_eyes(f, angle, yangle, left_open, right_open, dir); + dog_ears(f, dir); + glmSetMat(f->materials, f->mat_indeces[HEAD]); + glCallList(dog->faces[dog->curr_face]); + glPopMatrix(); +} + +void init_dog(FACE f){ + int i; + struct doggy_struct* dog; + f->char_struct = (struct doggy_struct*)malloc(sizeof(struct doggy_struct)); + f->materials = glmMTL(dog_mtl_file); + f->mat_indeces=(GLint*)malloc(sizeof(GLint)*NUM_PARTS); + //initialize all of the parts to some colors + change_materials(f, init_dog_mats, NUM_PARTS); + f->my_mode = NORMAL; + f->eye_count = EYE_TIME*NUM_DOG_LIDS-1; + f->crazy_count = 1; + f->curr_z_angle = 0; + f->curr_eye_pop = 0; + f->name = strdup("dog"); + f->draw_func = draw_dog; + dog = (struct doggy_struct*)f->char_struct; + + printf("\nReading models: "); + fflush(0); + + //initialize the draw lists + init_lists(&dog->faces, &dog->m_faces, NUM_DOGS, f->name, DOG_SCALE); + init_lists(&dog->lids, &dog->m_lids, NUM_DOG_LIDS, "lid", LID_SCALE); + init_lists(&dog->ears, &dog->m_ears, NUM_EARS, "ear", EAR_SCALE); + init_lists(&dog->eyes, &dog->m_eyes, NUM_EYES, "dogeye", EYE_SCALE); + init_lists(&dog->pupil, &dog->m_pupil, NUM_PUPILS, "dogpupil", PUP_SCALE); + init_lists(&dog->iris, &dog->m_iris, NUM_IRIS, "dogiris", IRIS_SCALE); + + printf("\n"); + fflush(0); + + dog->curr_face = 0; + dog->curr_ear = 1; + dog->curr_left_lid = 9; + dog->curr_right_lid = 0; + dog->curr_left_eye = 0; + dog->curr_right_eye = 0; + dog->curr_pupil = 0; + dog->curr_ear_angle = 0; +} diff -r f854402837ba -r ed017b9c532d plugins/crazychat/doggy.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/doggy.h Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,10 @@ +#include "glm.h" + +struct doggy_struct{ + GLint* faces, *lids, *ears, *eyes, *iris, *pupil; + GLMmodel** m_faces, **m_lids, **m_ears, **m_eyes, **m_iris, **m_pupil; + int curr_face, curr_ear, curr_left_lid, curr_right_lid, curr_right_eye, curr_left_eye, curr_pupil, eye_count; + float curr_ear_angle; +}; + +void init_dog(FACE f); \ No newline at end of file diff -r f854402837ba -r ed017b9c532d plugins/crazychat/draw.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/draw.c Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,107 @@ +#include "righteye10.h" + +typedef struct _point{ + GLshort x; + GLshort y; +} Point; + +typedef struct Packet{ + Point mouthLeft; + Point mouthRight; + Point mouthTop; + Point mouthBottom; + Point eyeLeft; + Point eyeRight; +} Packet; + +#define NUM_EYE_FRAMES 10 + +GLint rightEyes[NUM_EYE_FRAMES]; + +void CalculateMouthPoints(GLshort[][][] ctrlpoints, struct Packet* p) +{ + GLshort points[4][3]; + points[0][0]=p->mouthLeft.x; + points[0][1]=p->mouthLeft.y; + points[0][2]=front; + + points[1][0]=p->mouthBottom.x; + points[1][1]=p->mouthTop.y; + points[1][2]=front; + + points[2][0]=p->mouthRight.x; + points[2][1]=p->mouthRight.y; + points[2][2]=front; + + points[3][0]=p->mouthTop.x; + points[3][1]=p->mouthTop.y; + points[3][2]=front; + + ctrlpoints[0][0][0]=points[0][0]; + ctrlpoints[0][0][1]=points[0][1]; + ctrlpoints[0][0][2]=points[0][2]; + + ctrlpoints[0][1][0]=points[1][0]; + ctrlpoints[0][1][1]=points[1][1]; + ctrlpoints[0][1][2]=points[1][2]; + + ctrlpoints[0][2][0]=points[2][0]; + ctrlpoints[0][2][1]=points[2][1]; + ctrlpoints[0][2][2]=points[2][2]; + + ctrlpoints[1][0][0]=points[0][0]; + ctrlpoints[1][0][1]=points[0][1]; + ctrlpoints[1][0][2]=points[0][2]; + + ctrlpoints[1][1][0]=0; + ctrlpoints[1][1][1]=0; + ctrlpoints[1][1][2]=back; + + ctrlpoints[1][2][0]=points[2][0]; + ctrlpoints[1][2][1]=points[2][1]; + ctrlpoints[1][2][2]=points[2][2]; + + ctrlpoints[2][0][0]=points[0][0]; + ctrlpoints[2][0][1]=points[0][1]; + ctrlpoints[2][0][2]=points[0][2]; + + ctrlpoints[2][1][0]=points[3][0]; + ctrlpoints[2][1][1]=points[3][1]; + ctrlpoints[2][1][2]=points[3][2]; + + ctrlpoints[2][2][0]=points[2][0]; + ctrlpoints[2][2][1]=points[2][1]; + ctrlpoints[2][2][2]=points[2][2]; +} + +void drawMouth(struct Packet* p) +{ + GLshort[4][3][3] ctrlpoints; + CalculateMouthPoints(ctrlpoints, p); + + glMap2f(GL_MAP2_VERTEX_3, 0, 10, 3, 3, 0.0, 10.0, 9, 3, &ctrlpoints[0][0][0]); + glEnable(GL_MAP2_VERTEX_3); + glMapGrid2f(10, 0, 10, 10, 0, 10); + glEnable(GL_AUTO_NORMAL); + glEvalMesh2(GL_FILL, 0, 10, 0, 10); +} + +void initEyes(){ + + +void drawEyes(struct Packet* p){ + GLshort eye[3][3][3]; + CalculateEyePoints(eye, p, LEFT); + glMap2f(GL_MAP2_VERTEX_3, 0, 10, 3, 3, 0.0, 10.0, 9, 3, &eyep[0][0][0]); + glMapGrid2f(10, 0, 10, 10, 0, 10); + glEvalMesh2(GL_FILL, 0, 10, 0, 10); + + CalculateEyePoints(eye, p, RIGHT); + glMap2f(GL_MAP2_VERTEX_3, 0, 10, 3, 3, 0.0, 10.0, 9, 3, &eyep[0][0][0]); + glMapGrid2f(10, 0, 10, 10, 0, 10); + glEvalMesh2(GL_FILL, 0, 10, 0, 10); + +} + +void drawHead(struct Packet* p){ +} diff -r f854402837ba -r ed017b9c532d plugins/crazychat/eye.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/eye.c Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,812 @@ +/* +This file was produced by Deep Exploration Plugin: CPP Export filter. + +Deep Exploration + +Copyright (c) 1999-2003 Right Hemisphere, Inc + +WWW http://www.righthemisphere.com/dexp.htm +eMail support@righthemisphere.com +*/ +//#include +#include +#include + +#include + +typedef struct sample_MATERIAL{ + GLfloat ambient[3]; + GLfloat diffuse[3]; + GLfloat specular[3]; + GLfloat emission[3]; + GLfloat alpha; + GLfloat phExp; + int texture; +} sample_MATERIAL; + +typedef struct sample_TEXTURE{ + char * name; + GLint id; +} sample_TEXTURE; + +static sample_MATERIAL materials [2] = { + {{0.117647f,0.117647f,0.117647f}, {0.752941f,0.752941f,0.752941f}, {0.752941f,0.752941f,0.752941f}, {0.0f,0.0f,0.0f}, 1.0f,8.0f,-1}, //Explorer Default + {{1.0f,1.0f,1.0f}, {1.0f,1.0f,1.0f}, {1.0f,1.0f,1.0f}, {1.0f,1.0f,1.0f}, 1.0f,32.0f,0} //Material #5 +}; + +static sample_TEXTURE texture_maps [1] = { +{"eye10.bmp_0.bmp",0} +}; + +// 244 Verticies +// 152 Texture Coordinates +// 328 Normals +// 448 Triangles + +static short face_indicies[448][9] = { +// Object #-1 + {0,1,2 ,0,1,2 ,0,1,2 }, {0,2,3 ,3,2,4 ,3,2,4 }, {0,3,4 ,5,4,6 ,5,4,6 }, + {0,4,5 ,7,6,8 ,7,6,8 }, {0,5,6 ,9,8,10 ,9,8,10 }, {0,6,7 ,11,10,12 ,11,10,12 }, + {0,7,8 ,13,12,14 ,13,12,14 }, {0,8,9 ,15,14,16 ,15,14,16 }, {0,9,10 ,17,16,18 ,17,16,18 }, + {0,10,11 ,19,18,20 ,19,18,20 }, {0,11,12 ,21,20,22 ,21,20,22 }, + {0,12,13 ,23,22,24 ,23,22,24 }, {0,13,14 ,25,24,26 ,25,24,26 }, + {0,14,15 ,27,26,28 ,27,26,28 }, {0,15,16 ,29,28,30 ,29,28,30 }, + {0,16,1 ,31,30,31 ,31,30,32 }, {1,17,18 ,1,32,33 ,1,33,34 }, + {1,18,2 ,1,33,2 ,1,34,2 }, {2,18,19 ,2,33,34 ,2,34,35 }, {2,19,3 ,2,34,4 ,2,35,4 }, + {3,19,20 ,4,34,35 ,4,35,36 }, {3,20,4 ,4,35,6 ,4,36,6 }, {4,20,21 ,6,35,36 ,6,36,37 }, + {4,21,5 ,6,36,8 ,6,37,8 }, {5,21,22 ,8,36,37 ,8,37,38 }, {5,22,6 ,8,37,10 ,8,38,10 }, + {6,22,23 ,10,37,38 ,10,38,39 }, {6,23,7 ,10,38,12 ,10,39,12 }, + {7,23,24 ,12,38,39 ,12,39,40 }, {7,24,8 ,12,39,14 ,12,40,14 }, + {8,24,25 ,14,39,40 ,14,40,41 }, {8,25,9 ,14,40,16 ,14,41,16 }, + {9,25,26 ,16,40,41 ,16,41,42 }, {9,26,10 ,16,41,18 ,16,42,18 }, + {10,26,27 ,18,41,42 ,18,42,43 }, {10,27,11 ,18,42,20 ,18,43,20 }, + {11,27,28 ,20,42,43 ,20,43,44 }, {11,28,12 ,20,43,22 ,20,44,22 }, + {12,28,29 ,22,43,44 ,22,44,45 }, {12,29,13 ,22,44,24 ,22,45,24 }, + {13,29,30 ,24,44,45 ,24,45,46 }, {13,30,14 ,24,45,26 ,24,46,26 }, + {14,30,31 ,26,45,46 ,26,46,47 }, {14,31,15 ,26,46,28 ,26,47,28 }, + {15,31,32 ,28,46,47 ,28,47,48 }, {15,32,16 ,28,47,30 ,28,48,30 }, + {16,32,17 ,30,47,48 ,30,48,49 }, {16,17,1 ,30,49,49 ,30,49,32 }, + {17,33,34 ,32,50,51 ,33,50,51 }, {17,34,18 ,32,51,33 ,33,51,34 }, + {18,34,35 ,33,51,52 ,34,51,52 }, {18,35,19 ,33,52,34 ,34,52,35 }, + {19,35,36 ,34,52,53 ,35,52,53 }, {19,36,20 ,34,53,35 ,35,53,36 }, + {20,36,37 ,35,53,54 ,36,53,54 }, {20,37,21 ,35,54,36 ,36,54,37 }, + {21,37,38 ,36,54,55 ,37,54,55 }, {21,38,22 ,36,55,37 ,37,55,38 }, + {22,38,39 ,37,55,56 ,38,55,56 }, {22,39,23 ,37,56,38 ,38,56,39 }, + {23,39,40 ,38,56,57 ,39,56,57 }, {23,40,24 ,38,57,39 ,39,57,40 }, + {24,40,41 ,39,57,58 ,40,57,58 }, {24,41,25 ,39,58,40 ,40,58,41 }, + {25,41,42 ,40,58,59 ,41,58,59 }, {25,42,26 ,40,59,41 ,41,59,42 }, + {26,42,43 ,41,59,60 ,42,59,60 }, {26,43,27 ,41,60,42 ,42,60,43 }, + {27,43,44 ,42,60,61 ,43,60,61 }, {27,44,28 ,42,61,43 ,43,61,44 }, + {28,44,45 ,43,61,62 ,44,61,62 }, {28,45,29 ,43,62,44 ,44,62,45 }, + {29,45,46 ,44,62,63 ,45,62,63 }, {29,46,30 ,44,63,45 ,45,63,46 }, + {30,46,47 ,45,63,64 ,46,63,64 }, {30,47,31 ,45,64,46 ,46,64,47 }, + {31,47,48 ,46,64,65 ,47,64,65 }, {31,48,32 ,46,65,47 ,47,65,48 }, + {32,48,33 ,47,65,66 ,48,65,66 }, {32,33,17 ,47,67,67 ,48,66,49 }, + {33,49,50 ,50,68,69 ,50,67,68 }, {33,50,34 ,50,69,51 ,50,68,51 }, + {34,50,51 ,51,69,70 ,51,68,69 }, {34,51,35 ,51,70,52 ,51,69,52 }, + {35,51,52 ,52,70,71 ,52,69,70 }, {35,52,36 ,52,71,53 ,52,70,53 }, + {36,52,53 ,53,71,72 ,53,70,71 }, {36,53,37 ,53,72,54 ,53,71,54 }, + {37,53,54 ,54,72,73 ,54,71,72 }, {37,54,38 ,54,73,55 ,54,72,55 }, + {38,54,55 ,55,73,74 ,55,72,73 }, {38,55,39 ,55,74,56 ,55,73,56 }, + {39,55,56 ,56,74,75 ,56,73,74 }, {39,56,40 ,56,75,57 ,56,74,57 }, + {40,56,57 ,57,75,76 ,57,74,75 }, {40,57,41 ,57,76,58 ,57,75,58 }, + {41,57,58 ,58,76,77 ,58,75,76 }, {41,58,42 ,58,77,59 ,58,76,59 }, + {42,58,59 ,59,77,78 ,59,76,77 }, {42,59,43 ,59,78,60 ,59,77,60 }, + {43,59,60 ,60,78,79 ,60,77,78 }, {43,60,44 ,60,79,61 ,60,78,61 }, + {44,60,61 ,61,79,80 ,61,78,79 }, {44,61,45 ,61,80,62 ,61,79,62 }, + {45,61,62 ,62,80,81 ,62,79,80 }, {45,62,46 ,62,81,63 ,62,80,63 }, + {46,62,63 ,63,81,82 ,63,80,81 }, {46,63,47 ,63,82,64 ,63,81,64 }, + {47,63,64 ,64,82,83 ,64,81,82 }, {47,64,48 ,64,83,65 ,64,82,65 }, + {48,64,49 ,65,83,84 ,65,82,83 }, {48,49,33 ,65,85,85 ,65,83,66 } +// Object #-1 + , {65,66,67 ,86,87,88 ,0,1,2 }, {65,67,68 ,89,88,90 ,3,2,4 }, + {65,68,69 ,91,90,92 ,5,4,6 }, {65,69,70 ,93,92,94 ,7,6,8 }, {65,70,71 ,95,94,96 ,9,8,10 }, + {65,71,72 ,97,96,98 ,11,10,12 }, {65,72,73 ,99,98,100 ,13,12,14 }, + {65,73,74 ,101,100,102 ,15,14,16 }, {65,74,75 ,103,102,104 ,17,16,18 }, + {65,75,76 ,105,104,106 ,19,18,20 }, {65,76,77 ,107,106,108 ,21,20,22 }, + {65,77,78 ,109,108,110 ,23,22,24 }, {65,78,79 ,111,110,112 ,25,24,26 }, + {65,79,80 ,113,112,114 ,27,26,28 }, {65,80,81 ,115,114,116 ,29,28,30 }, + {65,81,66 ,117,116,117 ,31,30,32 }, {66,82,83 ,87,118,119 ,1,33,34 }, + {66,83,67 ,87,119,88 ,1,34,2 }, {67,83,84 ,88,119,120 ,2,34,35 }, + {67,84,68 ,88,120,90 ,2,35,4 }, {68,84,85 ,90,120,121 ,4,35,36 }, + {68,85,69 ,90,121,92 ,4,36,6 }, {69,85,86 ,92,121,122 ,6,36,37 }, + {69,86,70 ,92,122,94 ,6,37,8 }, {70,86,87 ,94,122,123 ,8,37,38 }, + {70,87,71 ,94,123,96 ,8,38,10 }, {71,87,88 ,96,123,124 ,10,38,39 }, + {71,88,72 ,96,124,98 ,10,39,12 }, {72,88,89 ,98,124,125 ,12,39,40 }, + {72,89,73 ,98,125,100 ,12,40,14 }, {73,89,90 ,100,125,126 ,14,40,41 }, + {73,90,74 ,100,126,102 ,14,41,16 }, {74,90,91 ,102,126,127 ,16,41,42 }, + {74,91,75 ,102,127,104 ,16,42,18 }, {75,91,92 ,104,127,128 ,18,42,43 }, + {75,92,76 ,104,128,106 ,18,43,20 }, {76,92,93 ,106,128,129 ,20,43,44 }, + {76,93,77 ,106,129,108 ,20,44,22 }, {77,93,94 ,108,129,130 ,22,44,45 }, + {77,94,78 ,108,130,110 ,22,45,24 }, {78,94,95 ,110,130,131 ,24,45,46 }, + {78,95,79 ,110,131,112 ,24,46,26 }, {79,95,96 ,112,131,132 ,26,46,47 }, + {79,96,80 ,112,132,114 ,26,47,28 }, {80,96,97 ,114,132,133 ,28,47,48 }, + {80,97,81 ,114,133,116 ,28,48,30 }, {81,97,82 ,116,133,134 ,30,48,49 }, + {81,82,66 ,116,135,135 ,30,49,32 }, {82,98,99 ,118,136,137 ,33,50,51 }, + {82,99,83 ,118,137,119 ,33,51,34 }, {83,99,100 ,119,137,138 ,34,51,52 }, + {83,100,84 ,119,138,120 ,34,52,35 }, {84,100,101 ,120,138,139 ,35,52,53 }, + {84,101,85 ,120,139,121 ,35,53,36 }, {85,101,102 ,121,139,140 ,36,53,54 }, + {85,102,86 ,121,140,122 ,36,54,37 }, {86,102,103 ,122,140,141 ,37,54,55 }, + {86,103,87 ,122,141,123 ,37,55,38 }, {87,103,104 ,123,141,142 ,38,55,56 }, + {87,104,88 ,123,142,124 ,38,56,39 }, {88,104,105 ,124,142,143 ,39,56,57 }, + {88,105,89 ,124,143,125 ,39,57,40 }, {89,105,106 ,125,143,144 ,40,57,58 }, + {89,106,90 ,125,144,126 ,40,58,41 }, {90,106,107 ,126,144,145 ,41,58,59 }, + {90,107,91 ,126,145,127 ,41,59,42 }, {91,107,108 ,127,145,146 ,42,59,60 }, + {91,108,92 ,127,146,128 ,42,60,43 }, {92,108,109 ,128,146,147 ,43,60,61 }, + {92,109,93 ,128,147,129 ,43,61,44 }, {93,109,110 ,129,147,148 ,44,61,62 }, + {93,110,94 ,129,148,130 ,44,62,45 }, {94,110,111 ,130,148,149 ,45,62,63 }, + {94,111,95 ,130,149,131 ,45,63,46 }, {95,111,112 ,131,149,150 ,46,63,64 }, + {95,112,96 ,131,150,132 ,46,64,47 }, {96,112,113 ,132,150,151 ,47,64,65 }, + {96,113,97 ,132,151,133 ,47,65,48 }, {97,113,98 ,133,151,152 ,48,65,66 }, + {97,98,82 ,133,153,153 ,48,66,49 }, {98,114,115 ,136,154,155 ,50,67,68 }, + {98,115,99 ,136,155,137 ,50,68,51 }, {99,115,116 ,137,155,156 ,51,68,69 }, + {99,116,100 ,137,156,138 ,51,69,52 }, {100,116,117 ,138,156,157 ,52,69,70 }, + {100,117,101 ,138,157,139 ,52,70,53 }, {101,117,118 ,139,157,158 ,53,70,71 }, + {101,118,102 ,139,158,140 ,53,71,54 }, {102,118,119 ,140,158,159 ,54,71,72 }, + {102,119,103 ,140,159,141 ,54,72,55 }, {103,119,120 ,141,159,160 ,55,72,73 }, + {103,120,104 ,141,160,142 ,55,73,56 }, {104,120,121 ,142,160,161 ,56,73,74 }, + {104,121,105 ,142,161,143 ,56,74,57 }, {105,121,122 ,143,161,162 ,57,74,75 }, + {105,122,106 ,143,162,144 ,57,75,58 }, {106,122,123 ,144,162,163 ,58,75,76 }, + {106,123,107 ,144,163,145 ,58,76,59 }, {107,123,124 ,145,163,164 ,59,76,77 }, + {107,124,108 ,145,164,146 ,59,77,60 }, {108,124,125 ,146,164,165 ,60,77,78 }, + {108,125,109 ,146,165,147 ,60,78,61 }, {109,125,126 ,147,165,166 ,61,78,79 }, + {109,126,110 ,147,166,148 ,61,79,62 }, {110,126,127 ,148,166,167 ,62,79,80 }, + {110,127,111 ,148,167,149 ,62,80,63 }, {111,127,128 ,149,167,168 ,63,80,81 }, + {111,128,112 ,149,168,150 ,63,81,64 }, {112,128,129 ,150,168,169 ,64,81,82 }, + {112,129,113 ,150,169,151 ,64,82,65 }, {113,129,114 ,151,169,170 ,65,82,83 }, + {113,114,98 ,151,171,171 ,65,83,66 }, {114,130,131 ,154,172,173 ,67,84,85 }, + {114,131,115 ,154,173,155 ,67,85,68 }, {115,131,132 ,155,173,174 ,68,85,86 }, + {115,132,116 ,155,174,156 ,68,86,69 }, {116,132,133 ,156,174,175 ,69,86,87 }, + {116,133,117 ,156,175,157 ,69,87,70 }, {117,133,134 ,157,175,176 ,70,87,88 }, + {117,134,118 ,157,176,158 ,70,88,71 }, {118,134,135 ,158,176,177 ,71,88,89 }, + {118,135,119 ,158,177,159 ,71,89,72 }, {119,135,136 ,159,177,178 ,72,89,90 }, + {119,136,120 ,159,178,160 ,72,90,73 }, {120,136,137 ,160,178,179 ,73,90,91 }, + {120,137,121 ,160,179,161 ,73,91,74 }, {121,137,138 ,161,179,180 ,74,91,92 }, + {121,138,122 ,161,180,162 ,74,92,75 }, {122,138,139 ,162,180,181 ,75,92,93 }, + {122,139,123 ,162,181,163 ,75,93,76 }, {123,139,140 ,163,181,182 ,76,93,94 }, + {123,140,124 ,163,182,164 ,76,94,77 }, {124,140,141 ,164,182,183 ,77,94,95 }, + {124,141,125 ,164,183,165 ,77,95,78 }, {125,141,142 ,165,183,184 ,78,95,96 }, + {125,142,126 ,165,184,166 ,78,96,79 }, {126,142,143 ,166,184,185 ,79,96,97 }, + {126,143,127 ,166,185,167 ,79,97,80 }, {127,143,144 ,167,185,186 ,80,97,98 }, + {127,144,128 ,167,186,168 ,80,98,81 }, {128,144,145 ,168,186,187 ,81,98,99 }, + {128,145,129 ,168,187,169 ,81,99,82 }, {129,145,130 ,169,187,188 ,82,99,100 }, + {129,130,114 ,169,189,189 ,82,100,83 }, {130,146,147 ,172,190,191 ,84,101,102 }, + {130,147,131 ,172,191,173 ,84,102,85 }, {131,147,148 ,173,191,192 ,85,102,103 }, + {131,148,132 ,173,192,174 ,85,103,86 }, {132,148,149 ,174,192,193 ,86,103,104 }, + {132,149,133 ,174,193,175 ,86,104,87 }, {133,149,150 ,175,193,194 ,87,104,105 }, + {133,150,134 ,175,194,176 ,87,105,88 }, {134,150,151 ,176,194,195 ,88,105,106 }, + {134,151,135 ,176,195,177 ,88,106,89 }, {135,151,152 ,177,195,196 ,89,106,107 }, + {135,152,136 ,177,196,178 ,89,107,90 }, {136,152,153 ,178,196,197 ,90,107,108 }, + {136,153,137 ,178,197,179 ,90,108,91 }, {137,153,154 ,179,197,198 ,91,108,109 }, + {137,154,138 ,179,198,180 ,91,109,92 }, {138,154,155 ,180,198,199 ,92,109,110 }, + {138,155,139 ,180,199,181 ,92,110,93 }, {139,155,156 ,181,199,200 ,93,110,111 }, + {139,156,140 ,181,200,182 ,93,111,94 }, {140,156,157 ,182,200,201 ,94,111,112 }, + {140,157,141 ,182,201,183 ,94,112,95 }, {141,157,158 ,183,201,202 ,95,112,113 }, + {141,158,142 ,183,202,184 ,95,113,96 }, {142,158,159 ,184,202,203 ,96,113,114 }, + {142,159,143 ,184,203,185 ,96,114,97 }, {143,159,160 ,185,203,204 ,97,114,115 }, + {143,160,144 ,185,204,186 ,97,115,98 }, {144,160,161 ,186,204,205 ,98,115,116 }, + {144,161,145 ,186,205,187 ,98,116,99 }, {145,161,146 ,187,205,206 ,99,116,117 }, + {145,146,130 ,187,207,207 ,99,117,100 }, {146,162,163 ,190,208,209 ,101,118,119 }, + {146,163,147 ,190,209,191 ,101,119,102 }, {147,163,164 ,191,209,210 ,102,119,120 }, + {147,164,148 ,191,210,192 ,102,120,103 }, {148,164,165 ,192,210,211 ,103,120,121 }, + {148,165,149 ,192,211,193 ,103,121,104 }, {149,165,166 ,193,211,212 ,104,121,122 }, + {149,166,150 ,193,212,194 ,104,122,105 }, {150,166,167 ,194,212,213 ,105,122,123 }, + {150,167,151 ,194,213,195 ,105,123,106 }, {151,167,168 ,195,213,214 ,106,123,124 }, + {151,168,152 ,195,214,196 ,106,124,107 }, {152,168,169 ,196,214,215 ,107,124,125 }, + {152,169,153 ,196,215,197 ,107,125,108 }, {153,169,170 ,197,215,216 ,108,125,126 }, + {153,170,154 ,197,216,198 ,108,126,109 }, {154,170,171 ,198,216,217 ,109,126,127 }, + {154,171,155 ,198,217,199 ,109,127,110 }, {155,171,172 ,199,217,218 ,110,127,128 }, + {155,172,156 ,199,218,200 ,110,128,111 }, {156,172,173 ,200,218,219 ,111,128,129 }, + {156,173,157 ,200,219,201 ,111,129,112 }, {157,173,174 ,201,219,220 ,112,129,130 }, + {157,174,158 ,201,220,202 ,112,130,113 }, {158,174,175 ,202,220,221 ,113,130,131 }, + {158,175,159 ,202,221,203 ,113,131,114 }, {159,175,176 ,203,221,222 ,114,131,132 }, + {159,176,160 ,203,222,204 ,114,132,115 }, {160,176,177 ,204,222,223 ,115,132,133 }, + {160,177,161 ,204,223,205 ,115,133,116 }, {161,177,162 ,205,223,224 ,116,133,134 }, + {161,162,146 ,205,225,225 ,116,134,117 }, {178,163,162 ,226,209,208 ,135,119,118 }, + {178,164,163 ,227,210,209 ,136,120,119 }, {178,165,164 ,228,211,210 ,137,121,120 }, + {178,166,165 ,229,212,211 ,138,122,121 }, {178,167,166 ,230,213,212 ,139,123,122 }, + {178,168,167 ,231,214,213 ,140,124,123 }, {178,169,168 ,232,215,214 ,141,125,124 }, + {178,170,169 ,233,216,215 ,142,126,125 }, {178,171,170 ,234,217,216 ,143,127,126 }, + {178,172,171 ,235,218,217 ,144,128,127 }, {178,173,172 ,236,219,218 ,145,129,128 }, + {178,174,173 ,237,220,219 ,146,130,129 }, {178,175,174 ,238,221,220 ,147,131,130 }, + {178,176,175 ,239,222,221 ,148,132,131 }, {178,177,176 ,240,223,222 ,149,133,132 }, + {178,162,177 ,241,241,223 ,150,151,133 } +// Object #-1 + , {179,180,181 ,242,243,244 ,0,1,2 }, {179,181,182 ,245,244,246 ,3,2,4 }, + {179,182,183 ,247,246,248 ,5,4,6 }, {179,183,184 ,249,248,250 ,7,6,8 }, + {179,184,185 ,251,250,252 ,9,8,10 }, {179,185,186 ,253,252,254 ,11,10,12 }, + {179,186,187 ,255,254,256 ,13,12,14 }, {179,187,188 ,257,256,258 ,15,14,16 }, + {179,188,189 ,259,258,260 ,17,16,18 }, {179,189,190 ,261,260,262 ,19,18,20 }, + {179,190,191 ,263,262,264 ,21,20,22 }, {179,191,192 ,265,264,266 ,23,22,24 }, + {179,192,193 ,267,266,268 ,25,24,26 }, {179,193,194 ,269,268,270 ,27,26,28 }, + {179,194,195 ,271,270,272 ,29,28,30 }, {179,195,180 ,273,272,273 ,31,30,32 }, + {180,196,197 ,243,274,275 ,1,33,34 }, {180,197,181 ,243,275,244 ,1,34,2 }, + {181,197,198 ,244,275,276 ,2,34,35 }, {181,198,182 ,244,276,246 ,2,35,4 }, + {182,198,199 ,246,276,277 ,4,35,36 }, {182,199,183 ,246,277,248 ,4,36,6 }, + {183,199,200 ,248,277,278 ,6,36,37 }, {183,200,184 ,248,278,250 ,6,37,8 }, + {184,200,201 ,250,278,279 ,8,37,38 }, {184,201,185 ,250,279,252 ,8,38,10 }, + {185,201,202 ,252,279,280 ,10,38,39 }, {185,202,186 ,252,280,254 ,10,39,12 }, + {186,202,203 ,254,280,281 ,12,39,40 }, {186,203,187 ,254,281,256 ,12,40,14 }, + {187,203,204 ,256,281,282 ,14,40,41 }, {187,204,188 ,256,282,258 ,14,41,16 }, + {188,204,205 ,258,282,283 ,16,41,42 }, {188,205,189 ,258,283,260 ,16,42,18 }, + {189,205,206 ,260,283,284 ,18,42,43 }, {189,206,190 ,260,284,262 ,18,43,20 }, + {190,206,207 ,262,284,285 ,20,43,44 }, {190,207,191 ,262,285,264 ,20,44,22 }, + {191,207,208 ,264,285,286 ,22,44,45 }, {191,208,192 ,264,286,266 ,22,45,24 }, + {192,208,209 ,266,286,287 ,24,45,46 }, {192,209,193 ,266,287,268 ,24,46,26 }, + {193,209,210 ,268,287,288 ,26,46,47 }, {193,210,194 ,268,288,270 ,26,47,28 }, + {194,210,211 ,270,288,289 ,28,47,48 }, {194,211,195 ,270,289,272 ,28,48,30 }, + {195,211,196 ,272,289,290 ,30,48,49 }, {195,196,180 ,272,291,291 ,30,49,32 }, + {196,212,213 ,274,292,293 ,33,50,51 }, {196,213,197 ,274,293,275 ,33,51,34 }, + {197,213,214 ,275,293,294 ,34,51,52 }, {197,214,198 ,275,294,276 ,34,52,35 }, + {198,214,215 ,276,294,295 ,35,52,53 }, {198,215,199 ,276,295,277 ,35,53,36 }, + {199,215,216 ,277,295,296 ,36,53,54 }, {199,216,200 ,277,296,278 ,36,54,37 }, + {200,216,217 ,278,296,297 ,37,54,55 }, {200,217,201 ,278,297,279 ,37,55,38 }, + {201,217,218 ,279,297,298 ,38,55,56 }, {201,218,202 ,279,298,280 ,38,56,39 }, + {202,218,219 ,280,298,299 ,39,56,57 }, {202,219,203 ,280,299,281 ,39,57,40 }, + {203,219,220 ,281,299,300 ,40,57,58 }, {203,220,204 ,281,300,282 ,40,58,41 }, + {204,220,221 ,282,300,301 ,41,58,59 }, {204,221,205 ,282,301,283 ,41,59,42 }, + {205,221,222 ,283,301,302 ,42,59,60 }, {205,222,206 ,283,302,284 ,42,60,43 }, + {206,222,223 ,284,302,303 ,43,60,61 }, {206,223,207 ,284,303,285 ,43,61,44 }, + {207,223,224 ,285,303,304 ,44,61,62 }, {207,224,208 ,285,304,286 ,44,62,45 }, + {208,224,225 ,286,304,305 ,45,62,63 }, {208,225,209 ,286,305,287 ,45,63,46 }, + {209,225,226 ,287,305,306 ,46,63,64 }, {209,226,210 ,287,306,288 ,46,64,47 }, + {210,226,227 ,288,306,307 ,47,64,65 }, {210,227,211 ,288,307,289 ,47,65,48 }, + {211,227,212 ,289,307,308 ,48,65,66 }, {211,212,196 ,289,309,309 ,48,66,49 }, + {212,228,229 ,292,310,311 ,50,67,68 }, {212,229,213 ,292,311,293 ,50,68,51 }, + {213,229,230 ,293,311,312 ,51,68,69 }, {213,230,214 ,293,312,294 ,51,69,52 }, + {214,230,231 ,294,312,313 ,52,69,70 }, {214,231,215 ,294,313,295 ,52,70,53 }, + {215,231,232 ,295,313,314 ,53,70,71 }, {215,232,216 ,295,314,296 ,53,71,54 }, + {216,232,233 ,296,314,315 ,54,71,72 }, {216,233,217 ,296,315,297 ,54,72,55 }, + {217,233,234 ,297,315,316 ,55,72,73 }, {217,234,218 ,297,316,298 ,55,73,56 }, + {218,234,235 ,298,316,317 ,56,73,74 }, {218,235,219 ,298,317,299 ,56,74,57 }, + {219,235,236 ,299,317,318 ,57,74,75 }, {219,236,220 ,299,318,300 ,57,75,58 }, + {220,236,237 ,300,318,319 ,58,75,76 }, {220,237,221 ,300,319,301 ,58,76,59 }, + {221,237,238 ,301,319,320 ,59,76,77 }, {221,238,222 ,301,320,302 ,59,77,60 }, + {222,238,239 ,302,320,321 ,60,77,78 }, {222,239,223 ,302,321,303 ,60,78,61 }, + {223,239,240 ,303,321,322 ,61,78,79 }, {223,240,224 ,303,322,304 ,61,79,62 }, + {224,240,241 ,304,322,323 ,62,79,80 }, {224,241,225 ,304,323,305 ,62,80,63 }, + {225,241,242 ,305,323,324 ,63,80,81 }, {225,242,226 ,305,324,306 ,63,81,64 }, + {226,242,243 ,306,324,325 ,64,81,82 }, {226,243,227 ,306,325,307 ,64,82,65 }, + {227,243,228 ,307,325,326 ,65,82,83 }, {227,228,212 ,307,327,327 ,65,83,66 } +}; +static GLfloat vertices [244][3] = { +{-0.0594632f,0.340244f,-0.227837f},{-0.0839977f,0.221099f,-0.344899f},{-0.162438f,0.228128f,-0.353657f}, +{-0.225394f,0.248142f,-0.339163f},{-0.260027f,0.278097f,-0.302629f},{-0.260012f,0.31343f,-0.250458f}, +{-0.227263f,0.348764f,-0.192603f},{-0.169721f,0.378718f,-0.139431f},{-0.0976165f,0.398733f,-0.0989695f}, +{-0.0212892f,0.405761f,-0.0760573f},{0.0490029f,0.398733f,-0.07301f},{0.103337f,0.378718f,-0.0900053f}, +{0.133847f,0.348764f,-0.124503f},{0.136676f,0.31343f,-0.171127f},{0.11215f,0.278097f,-0.223036f}, +{0.0633403f,0.248142f,-0.273514f},{-0.00471581f,0.228128f,-0.316247f},{-0.088416f,0.0664659f,-0.404402f}, +{-0.236654f,0.0794526f,-0.421905f},{-0.358018f,0.116435f,-0.394699f},{-0.421142f,0.171783f,-0.323727f}, +{-0.413035f,0.237071f,-0.223224f},{-0.344259f,0.302359f,-0.116005f},{-0.237289f,0.357707f,-0.0234628f}, +{-0.111046f,0.39469f,0.0427706f},{0.0221782f,0.407676f,0.079975f},{0.148264f,0.39469f,0.0859734f}, +{0.246652f,0.357707f,0.0561923f},{0.29851f,0.302359f,-0.00828875f},{0.29812f,0.237071f,-0.0951606f}, +{0.252434f,0.171783f,-0.188204f},{0.169761f,0.116435f,-0.27625f},{0.0538453f,0.0794525f,-0.351645f}, +{-0.0747728f,-0.100115f,-0.397927f},{-0.265094f,-0.083147f,-0.413132f},{-0.421072f,-0.0348269f,-0.371959f}, +{-0.498119f,0.0374891f,-0.276676f},{-0.479955f,0.122792f,-0.147509f},{-0.38696f,0.208094f,-0.0154702f}, +{-0.253427f,0.28041f,0.0930117f},{-0.0998485f,0.328731f,0.16876f},{0.0671615f,0.345698f,0.215499f}, +{0.23274f,0.32873f,0.230046f},{0.363571f,0.28041f,0.196764f},{0.42705f,0.208094f,0.1102f}, +{0.416969f,0.122792f,-0.00920004f},{0.351655f,0.0374891f,-0.13296f},{0.247216f,-0.034827f,-0.245038f}, +{0.104266f,-0.083147f,-0.337127f},{-0.0513718f,-0.253282f,-0.328305f},{-0.247586f,-0.234916f,-0.330761f}, +{-0.405745f,-0.182615f,-0.278113f},{-0.481724f,-0.104341f,-0.176241f},{-0.460848f,-0.01201f,-0.0465844f}, +{-0.365803f,0.0803208f,0.0816631f},{-0.230648f,0.158595f,0.186497f},{-0.0716892f,0.210896f,0.263634f}, +{0.107899f,0.229262f,0.318551f},{0.29045f,0.210896f,0.342957f},{0.434324f,0.158595f,0.311819f}, +{0.5f,0.0803207f,0.215496f},{0.481891f,-0.0120101f,0.079437f},{0.404727f,-0.104341f,-0.060354f}, +{0.289283f,-0.182615f,-0.182709f},{0.136409f,-0.234917f,-0.275803f},{0.117563f,-0.01201f,0.375843f}, +{0.114291f,0.139643f,0.336151f},{0.0508502f,0.128099f,0.322581f},{-0.00136173f,0.0952246f,0.31399f}, +{-0.0363813f,0.0460249f,0.311237f},{-0.0508667f,-0.01201f,0.314621f},{-0.0436149f,-0.0700451f,0.323833f}, +{-0.0152835f,-0.119245f,0.337453f},{0.0315462f,-0.152119f,0.352954f},{0.0919289f,-0.163663f,0.367573f}, +{0.158049f,-0.152119f,0.379363f},{0.219457f,-0.119245f,0.387409f},{0.264776f,-0.070045f,0.391145f}, +{0.284658f,-0.01201f,0.389721f},{0.274768f,0.046025f,0.382324f},{0.237279f,0.0952247f,0.369285f}, +{0.180111f,0.128099f,0.352767f},{0.0852956f,0.268208f,0.257515f},{-0.0287871f,0.246877f,0.236747f}, +{-0.11952f,0.186134f,0.224289f},{-0.178349f,0.0952246f,0.219546f},{-0.201037f,-0.0120101f,0.223154f}, +{-0.186517f,-0.119245f,0.236486f},{-0.136378f,-0.210154f,0.258079f},{-0.0543631f,-0.270898f,0.282448f}, +{0.0529195f,-0.292228f,0.30343f},{0.173518f,-0.270898f,0.318397f},{0.288544f,-0.210154f,0.328679f}, +{0.374946f,-0.119245f,0.335885f},{0.412602f,-0.01201f,0.338198f},{0.391946f,0.0952246f,0.331038f}, +{0.317893f,0.186134f,0.31199f},{0.207926f,0.246877f,0.284788f},{0.0448437f,0.354112f,0.145691f}, +{-0.105491f,0.326243f,0.122505f},{-0.226023f,0.246877f,0.108312f},{-0.303201f,0.128099f,0.1019f}, +{-0.329682f,-0.0120101f,0.10436f},{-0.30443f,-0.152119f,0.118065f},{-0.232051f,-0.270898f,0.141232f}, +{-0.120388f,-0.350263f,0.166539f},{0.0202984f,-0.378132f,0.186412f},{0.174378f,-0.350263f,0.198924f}, +{0.318361f,-0.270898f,0.207861f},{0.424351f,-0.152119f,0.216955f},{0.468735f,-0.01201f,0.224104f}, +{0.440595f,0.128099f,0.221864f},{0.345624f,0.246877f,0.204744f},{0.204291f,0.326243f,0.175963f}, +{0.00299471f,0.384278f,0.00834511f},{-0.168323f,0.354112f,-0.0183378f},{-0.310292f,0.268208f,-0.037007f}, +{-0.400615f,0.139643f,-0.0453738f},{-0.426773f,-0.0120101f,-0.0417815f},{-0.388287f,-0.163663f,-0.0263951f}, +{-0.294627f,-0.292228f,-0.00363743f},{-0.159976f,-0.378132f,0.0188579f},{-0.000457861f,-0.408298f,0.0352872f}, +{0.16409f,-0.378132f,0.0457485f},{0.309093f,-0.292228f,0.0547918f},{0.409769f,-0.163663f,0.0655529f}, +{0.448241f,-0.01201f,0.0751867f},{0.417527f,0.139643f,0.0763255f},{0.321835f,0.268208f,0.063497f}, +{0.17583f,0.354112f,0.038304f},{-0.0360629f,0.354112f,-0.137422f},{-0.205101f,0.326243f,-0.16811f}, +{-0.349242f,0.246877f,-0.191968f},{-0.440435f,0.128099f,-0.202512f},{-0.462794f,-0.0120101f,-0.19744f}, +{-0.416476f,-0.152119f,-0.179929f},{-0.314265f,-0.270898f,-0.157067f},{-0.17459f,-0.350263f,-0.136191f}, +{-0.0174526f,-0.378132f,-0.120891f},{0.135495f,-0.350263f,-0.109443f},{0.261894f,-0.270898f,-0.097771f}, +{0.343535f,-0.152119f,-0.084796f},{0.37068f,-0.01201f,-0.0746691f},{0.341234f,0.128099f,-0.0735399f}, +{0.257546f,0.246877f,-0.0848152f},{0.126641f,0.326243f,-0.107522f},{-0.0665829f,0.268208f,-0.265518f}, +{-0.201637f,0.246877f,-0.29431f},{-0.317741f,0.186134f,-0.317323f},{-0.391187f,0.0952246f,-0.328168f}, +{-0.408078f,-0.0120101f,-0.324621f},{-0.36797f,-0.119245f,-0.309713f},{-0.281561f,-0.210154f,-0.289619f}, +{-0.165397f,-0.270898f,-0.270117f},{-0.0379277f,-0.292228f,-0.253812f},{0.0821894f,-0.270898f,-0.239781f}, +{0.178018f,-0.210154f,-0.226133f},{0.237495f,-0.119245f,-0.213409f},{0.255139f,-0.01201f,-0.205296f}, +{0.2303f,0.0952247f,-0.205955f},{0.164496f,0.186134f,-0.217195f},{0.0619701f,0.246877f,-0.238064f}, +{-0.0811905f,0.139643f,-0.350506f},{-0.154437f,0.128099f,-0.367526f},{-0.216526f,0.0952246f,-0.381076f}, +{-0.25596f,0.0460249f,-0.38821f},{-0.2656f,-0.0120101f,-0.387748f},{-0.244385f,-0.0700451f,-0.380633f}, +{-0.196993f,-0.119245f,-0.369252f},{-0.132114f,-0.152119f,-0.356197f},{-0.0603973f,-0.163663f,-0.343273f}, +{0.00732452f,-0.152119f,-0.331343f},{0.0615615f,-0.119245f,-0.320972f},{0.0953903f,-0.070045f,-0.313197f}, +{0.104981f,-0.01201f,-0.309621f},{0.0893241f,0.046025f,-0.311711f},{0.0498191f,0.0952246f,-0.319978f}, +{-0.00948911f,0.128099f,-0.333609f},{-0.0775452f,-0.01201f,-0.377355f},{0.0662412f,0.347573f,0.213013f}, +{0.0212595f,0.408298f,0.0769026f},{-0.0451443f,0.401592f,0.0751623f},{-0.0935056f,0.382495f,0.0933802f}, +{-0.116134f,0.353914f,0.12753f},{-0.110884f,0.320201f,0.170755f},{-0.080312f,0.286488f,0.216042f}, +{-0.0293751f,0.257908f,0.258144f},{0.03577f,0.238811f,0.293126f},{0.107193f,0.232105f,0.316787f}, +{0.174518f,0.238811f,0.324478f},{0.226144f,0.257908f,0.312906f},{0.252486f,0.286488f,0.282327f}, +{0.249094f,0.320201f,0.237371f},{0.217421f,0.353914f,0.185944f},{0.163196f,0.382495f,0.13702f}, +{0.094519f,0.401592f,0.0986572f},{-0.0221509f,0.405034f,-0.0793323f},{-0.152293f,0.392643f,-0.0835134f}, +{-0.245868f,0.357357f,-0.0457555f},{-0.283508f,0.304547f,0.0260588f},{-0.265498f,0.242254f,0.112987f}, +{-0.205055f,0.17996f,0.197406f},{-0.114628f,0.12715f,0.272443f},{-0.00092518f,0.0918637f,0.336653f}, +{0.128716f,0.0794728f,0.383462f},{0.257523f,0.0918637f,0.400483f},{0.359249f,0.12715f,0.377982f}, +{0.40988f,0.17996f,0.316212f},{0.400654f,0.242254f,0.226581f},{0.339502f,0.304547f,0.127003f}, +{0.240755f,0.357357f,0.0348431f},{0.116104f,0.392644f,-0.0370932f},{-0.0601391f,0.33828f,-0.2307f}, +{-0.242846f,0.32209f,-0.243002f},{-0.375234f,0.275986f,-0.193027f},{-0.422369f,0.206987f,-0.0888319f}, +{-0.388625f,0.125596f,0.037377f},{-0.302564f,0.0442061f,0.155468f},{-0.18679f,-0.0247935f,0.257432f}, +{-0.0468511f,-0.0708974f,0.344428f},{0.116548f,-0.087087f,0.405712f},{0.28691f,-0.0708974f,0.421904f}, +{0.426097f,-0.0247934f,0.382089f},{0.495355f,0.0442061f,0.291519f},{0.482076f,0.125596f,0.169311f}, +{0.402609f,0.206987f,0.0401854f},{0.279861f,0.275986f,-0.0764741f},{0.123549f,0.32209f,-0.169952f}, +{-0.0843006f,0.218197f,-0.34676f},{-0.291441f,0.200673f,-0.367557f},{-0.445002f,0.150771f,-0.314761f}, +{-0.5f,0.0760863f,-0.194992f},{-0.460848f,-0.01201f,-0.0465844f},{-0.363663f,-0.100106f,0.0934045f}, +{-0.238408f,-0.174791f,0.213396f},{-0.0925815f,-0.224693f,0.31132f},{0.0771405f,-0.242217f,0.372066f}, +{0.258422f,-0.224693f,0.375976f},{0.411136f,-0.174791f,0.318319f},{0.49075f,-0.100106f,0.211715f}, +{0.481891f,-0.0120101f,0.0794369f},{0.402881f,0.0760863f,-0.0539284f},{0.278634f,0.150771f,-0.173653f}, +{0.115875f,0.200673f,-0.27448f} +}; +static GLfloat normals [328][3] = { +{0.14128f,0.678859f,-0.720549f},{0.141183f,0.470342f,-0.871117f},{0.0436259f,0.538027f,-0.841798f}, +{0.0679973f,0.716579f,-0.694184f},{-0.119311f,0.639257f,-0.759681f},{-0.00235058f,0.772214f,-0.635358f}, +{-0.255136f,0.759046f,-0.598962f},{-0.0474012f,0.827055f,-0.560118f},{-0.314039f,0.853304f,-0.416235f}, +{-0.0600024f,0.866637f,-0.495318f},{-0.292773f,0.915841f,-0.274809f},{-0.049072f,0.891986f,-0.449392f}, +{-0.212481f,0.95807f,-0.192231f},{-0.0178326f,0.908456f,-0.417599f},{-0.0920599f,0.982527f,-0.161757f}, +{0.0370726f,0.914058f,-0.403886f},{0.0521203f,0.982077f,-0.18113f},{0.108309f,0.902514f,-0.416819f}, +{0.201428f,0.946854f,-0.250789f},{0.179027f,0.872331f,-0.45496f},{0.331459f,0.872109f,-0.359945f}, +{0.23599f,0.827361f,-0.509688f},{0.418216f,0.768374f,-0.484455f},{0.271011f,0.775009f,-0.570888f}, +{0.450676f,0.660369f,-0.60067f},{0.28066f,0.726565f,-0.627163f},{0.433824f,0.571637f,-0.69644f}, +{0.269128f,0.691375f,-0.670501f},{0.379646f,0.512038f,-0.77051f},{0.242614f,0.670979f,-0.70066f}, +{0.296688f,0.482442f,-0.824152f},{0.20092f,0.665188f,-0.719135f},{0.111321f,0.0838976f,-0.990237f}, +{-0.029379f,0.177399f,-0.983701f},{-0.36291f,0.315654f,-0.876732f},{-0.636533f,0.537885f,-0.552726f}, +{-0.692297f,0.698565f,-0.180919f},{-0.609692f,0.790176f,0.0624294f},{-0.463645f,0.864983f,0.191929f}, +{-0.266794f,0.932768f,0.242413f},{-0.0294763f,0.976851f,0.211879f},{0.23276f,0.968844f,0.0846355f}, +{0.473096f,0.871906f,-0.126332f},{0.622688f,0.697126f,-0.355352f},{0.663374f,0.512375f,-0.54535f}, +{0.624155f,0.368076f,-0.689167f},{0.531327f,0.266649f,-0.804108f},{0.396108f,0.19478f,-0.897307f}, +{0.301284f,0.331535f,-0.894043f},{0.293635f,0.335978f,-0.894929f},{0.0262531f,-0.314782f,-0.948801f}, +{-0.145065f,-0.279238f,-0.949201f},{-0.600169f,-0.204803f,-0.773209f},{-0.94784f,0.0687263f,-0.311249f}, +{-0.931339f,0.326478f,0.161309f},{-0.775903f,0.471621f,0.418986f},{-0.595717f,0.581008f,0.554573f}, +{-0.378996f,0.685218f,0.621963f},{-0.1154f,0.782225f,0.612215f},{0.228237f,0.846899f,0.480282f}, +{0.608238f,0.775101f,0.17107f},{0.820052f,0.537806f,-0.19565f},{0.837034f,0.294875f,-0.460893f}, +{0.762505f,0.126921f,-0.634411f},{0.630338f,0.00231725f,-0.776317f},{0.436413f,-0.113109f,-0.892609f}, +{0.320267f,0.0147375f,-0.947213f},{0.348327f,-0.00790562f,-0.93734f},{-0.0276759f,-0.417145f,-0.908418f}, +{-0.141207f,-0.463983f,-0.874517f},{-0.573196f,-0.464631f,-0.674955f},{-0.943646f,-0.249543f,-0.217397f}, +{-0.961507f,0.0693531f,0.265886f},{-0.808033f,0.269491f,0.523886f},{-0.636184f,0.393708f,0.663524f}, +{-0.43775f,0.497816f,0.748702f},{-0.202579f,0.60248f,0.771997f},{0.122768f,0.708696f,0.694751f}, +{0.564416f,0.712283f,0.417239f},{0.875302f,0.482711f,-0.0289185f},{0.906907f,0.205191f,-0.367988f}, +{0.825239f,0.0254238f,-0.564212f},{0.68962f,-0.103674f,-0.716712f},{0.478163f,-0.232147f,-0.847035f}, +{0.283993f,-0.306895f,-0.908385f},{0.330854f,-0.348141f,-0.877117f},{-0.24469f,0.240557f,0.939286f}, +{-0.251704f,0.385303f,0.887799f},{-0.308507f,0.32877f,0.892599f},{-0.289709f,0.216471f,0.932314f}, +{-0.380036f,0.257873f,0.888298f},{-0.323023f,0.177913f,0.929518f},{-0.428302f,0.18168f,0.885183f}, +{-0.338313f,0.138727f,0.930752f},{-0.452208f,0.105373f,0.885666f},{-0.339696f,0.105884f,0.934556f}, +{-0.448119f,0.0223869f,0.893694f},{-0.329378f,0.0709806f,0.941526f},{-0.403498f,-0.0769257f,0.911741f}, +{-0.29726f,0.026574f,0.954427f},{-0.305208f,-0.184313f,0.934279f},{-0.23761f,-0.0127996f,0.971276f}, +{-0.164885f,-0.266084f,0.949743f},{-0.171302f,-0.0247511f,0.984908f},{-0.0181081f,-0.289546f,0.956993f}, +{-0.124133f,-0.0109379f,0.992205f},{0.104381f,-0.239271f,0.965326f},{-0.0977336f,0.0144596f,0.995108f}, +{0.181061f,-0.110489f,0.977246f},{-0.0826528f,0.0527337f,0.995182f},{0.187283f,0.0757574f,0.97938f}, +{-0.0822454f,0.112191f,0.990277f},{0.118036f,0.252508f,0.960368f},{-0.106176f,0.17836f,0.97822f}, +{0.00684446f,0.362199f,0.932075f},{-0.148821f,0.225033f,0.962919f},{-0.110459f,0.398641f,0.910431f}, +{-0.196851f,0.244267f,0.949517f},{-0.245786f,0.641112f,0.727025f},{-0.343754f,0.521981f,0.780621f}, +{-0.477819f,0.373685f,0.795015f},{-0.560849f,0.220352f,0.798056f},{-0.604243f,0.0766681f,0.793103f}, +{-0.610293f,-0.0768122f,0.788443f},{-0.549029f,-0.268252f,0.791586f},{-0.376462f,-0.476467f,0.794516f}, +{-0.114499f,-0.619894f,0.776287f},{0.154797f,-0.653379f,0.741036f},{0.39318f,-0.579683f,0.713707f}, +{0.593512f,-0.372979f,0.713183f},{0.677704f,-0.00981577f,0.735269f},{0.551652f,0.373004f,0.746021f}, +{0.301968f,0.598489f,0.742041f},{0.0536017f,0.664757f,0.745134f},{-0.100712f,0.511852f,0.85315f}, +{-0.129771f,0.495908f,0.858624f},{-0.224077f,0.885635f,0.406743f},{-0.377848f,0.760571f,0.52798f}, +{-0.594967f,0.529479f,0.604703f},{-0.714454f,0.270365f,0.645336f},{-0.764684f,0.0271108f,0.643835f}, +{-0.762621f,-0.221975f,0.607566f},{-0.664936f,-0.506592f,0.548839f},{-0.41186f,-0.772743f,0.482949f}, +{-0.051096f,-0.907492f,0.41695f},{0.296775f,-0.888489f,0.350018f},{0.596061f,-0.754371f,0.275021f}, +{0.85112f,-0.486344f,0.197646f},{0.98554f,-0.0575001f,0.159391f},{0.884713f,0.423397f,0.194983f}, +{0.588143f,0.759515f,0.277894f},{0.243699f,0.899532f,0.362565f},{0.0295394f,0.808074f,0.588339f}, +{0.00266324f,0.793476f,0.608596f},{-0.166151f,0.985993f,-0.0145344f},{-0.359567f,0.924003f,0.130114f}, +{-0.671899f,0.688429f,0.273162f},{-0.862314f,0.339548f,0.375661f},{-0.920945f,-0.0299612f,0.38854f}, +{-0.869365f,-0.38079f,0.314966f},{-0.692245f,-0.695493f,0.192579f},{-0.384078f,-0.919936f,0.0787546f}, +{-0.0074353f,-0.999946f,0.00727214f},{0.355557f,-0.933553f,-0.0453544f},{0.663383f,-0.738106f,-0.122974f}, +{0.877978f,-0.422365f,-0.225307f},{0.955101f,-0.0281345f,-0.294941f},{0.883327f,0.374643f,-0.281737f}, +{0.66969f,0.716173f,-0.196498f},{0.354359f,0.930543f,-0.0922975f},{0.141093f,0.97558f,0.168336f}, +{0.137781f,0.975371f,0.172241f},{-0.0634033f,0.902267f,-0.426491f},{-0.254884f,0.910829f,-0.324692f}, +{-0.616918f,0.75457f,-0.223688f},{-0.913479f,0.387278f,-0.12479f},{-0.991529f,-0.0944241f,-0.0891887f}, +{-0.854436f,-0.500204f,-0.140481f},{-0.601812f,-0.762834f,-0.236446f},{-0.297768f,-0.898656f,-0.322104f}, +{0.0285855f,-0.925596f,-0.377432f},{0.355549f,-0.835223f,-0.419508f},{0.633205f,-0.614776f,-0.470215f}, +{0.79464f,-0.30479f,-0.525023f},{0.829099f,0.0136054f,-0.558937f},{0.771688f,0.307959f,-0.55647f}, +{0.624717f,0.582898f,-0.519575f},{0.382273f,0.799786f,-0.462828f},{0.208037f,0.945407f,-0.250852f}, +{0.208547f,0.945131f,-0.251467f},{0.0633847f,0.652646f,-0.755007f},{-0.0776665f,0.694041f,-0.715734f}, +{-0.348809f,0.594039f,-0.724879f},{-0.609141f,0.313102f,-0.728639f},{-0.706685f,-0.109053f,-0.699073f}, +{-0.589105f,-0.460862f,-0.663748f},{-0.380198f,-0.649568f,-0.658416f},{-0.154288f,-0.721326f,-0.675192f}, +{0.0801603f,-0.709847f,-0.69978f},{0.317168f,-0.612361f,-0.724167f},{0.519448f,-0.425555f,-0.740997f}, +{0.638214f,-0.189666f,-0.74613f},{0.666605f,0.0358181f,-0.74455f},{0.628162f,0.235219f,-0.741677f}, +{0.529309f,0.420798f,-0.736723f},{0.367696f,0.579372f,-0.727412f},{0.253299f,0.765813f,-0.591076f}, +{0.239904f,0.778869f,-0.57949f},{0.155817f,0.364748f,-0.917976f},{0.0934699f,0.390725f,-0.91575f}, +{-0.0428585f,0.321547f,-0.945923f},{-0.16274f,0.162966f,-0.973118f},{-0.222045f,-0.0578604f,-0.973318f}, +{-0.196312f,-0.258955f,-0.945729f},{-0.111267f,-0.384068f,-0.916576f},{0.00190306f,-0.435736f,-0.900072f}, +{0.130312f,-0.42732f,-0.89466f},{0.263266f,-0.362605f,-0.893985f},{0.379493f,-0.249171f,-0.89101f}, +{0.455659f,-0.111402f,-0.883156f},{0.483731f,0.022104f,-0.874938f},{0.469613f,0.140137f,-0.871679f}, +{0.418676f,0.244517f,-0.874598f},{0.333936f,0.331632f,-0.88233f},{0.274051f,0.497279f,-0.823171f}, +{0.259802f,0.511801f,-0.818879f},{0.196491f,0.175512f,-0.964669f},{0.137502f,0.144211f,-0.979947f}, +{0.0851134f,0.0758425f,-0.993481f},{0.0551697f,-0.0171193f,-0.99833f},{0.0548916f,-0.101711f,-0.993298f}, +{0.0738492f,-0.156685f,-0.984884f},{0.101758f,-0.187181f,-0.977041f},{0.142158f,-0.201712f,-0.969073f}, +{0.202039f,-0.192944f,-0.960184f},{0.271485f,-0.147866f,-0.951016f},{0.324833f,-0.0743643f,-0.942843f}, +{0.347908f,0.000269599f,-0.937529f},{0.347281f,0.0599932f,-0.93584f},{0.33107f,0.108334f,-0.937367f}, +{0.299181f,0.148955f,-0.942498f},{0.252396f,0.174568f,-0.951747f},{-0.101791f,0.89554f,0.433181f}, +{-0.10134f,0.982935f,0.153519f},{-0.198237f,0.947331f,0.251529f},{-0.164187f,0.866134f,0.472075f}, +{-0.328502f,0.861858f,0.386377f},{-0.22236f,0.81515f,0.534871f},{-0.407264f,0.738985f,0.53669f}, +{-0.261475f,0.745438f,0.61315f},{-0.423584f,0.613071f,0.666874f},{-0.268118f,0.677242f,0.685169f}, +{-0.392497f,0.519335f,0.759103f},{-0.24919f,0.634149f,0.731956f},{-0.338078f,0.471162f,0.814684f}, +{-0.22364f,0.617892f,0.753787f},{-0.270615f,0.460525f,0.84539f},{-0.194833f,0.616506f,0.762863f}, +{-0.183681f,0.479089f,0.858333f},{-0.149814f,0.630977f,0.761199f},{-0.0646262f,0.532383f,0.844033f}, +{-0.0833697f,0.671555f,0.736249f},{0.0858598f,0.628864f,0.77276f},{-0.0110594f,0.735267f,0.677687f}, +{0.225661f,0.746376f,0.626099f},{0.0402802f,0.800838f,0.597525f},{0.297614f,0.844032f,0.446135f}, +{0.0578062f,0.850871f,0.522185f},{0.287181f,0.911623f,0.294058f},{0.0462129f,0.884f,0.465197f}, +{0.212292f,0.957645f,0.194545f},{0.0112676f,0.903058f,0.429371f},{0.0946535f,0.984007f,0.1509f}, +{-0.0411956f,0.907323f,0.418412f},{-0.0768357f,0.963819f,-0.255243f},{-0.231191f,0.968651f,-0.0909206f}, +{-0.478011f,0.865024f,0.152442f},{-0.613761f,0.668302f,0.420321f},{-0.621661f,0.468695f,0.627584f}, +{-0.555999f,0.333983f,0.761131f},{-0.465216f,0.269773f,0.843087f},{-0.358395f,0.248428f,0.899909f}, +{-0.215945f,0.246155f,0.944868f},{-0.00160027f,0.275933f,0.961176f},{0.307449f,0.391756f,0.867181f}, +{0.57879f,0.576987f,0.57627f},{0.658558f,0.716536f,0.229952f},{0.597679f,0.801598f,-0.0148259f}, +{0.460401f,0.872625f,-0.162965f},{0.266984f,0.934523f,-0.235344f},{0.103983f,0.993374f,-0.048947f}, +{0.105796f,0.993123f,-0.0501399f},{-0.0197862f,0.790362f,-0.61232f},{-0.242279f,0.852503f,-0.463184f}, +{-0.632416f,0.763443f,-0.131166f},{-0.817379f,0.505342f,0.276625f},{-0.788174f,0.265216f,0.555375f}, +{-0.687043f,0.131972f,0.714531f},{-0.56985f,0.0751975f,0.818301f},{-0.421735f,0.0372272f,0.905954f}, +{-0.203784f,-0.0289837f,0.978587f},{0.124815f,-0.104369f,0.986675f},{0.577569f,-0.0689256f,0.813427f}, +{0.917184f,0.152931f,0.367949f},{0.924202f,0.373489f,-0.0797226f},{0.792991f,0.508953f,-0.334863f}, +{0.620113f,0.617825f,-0.483478f},{0.394039f,0.719565f,-0.571804f},{0.224221f,0.865854f,-0.447239f}, +{0.212217f,0.873358f,-0.438418f},{0.0136589f,0.693472f,-0.720354f},{-0.145306f,0.729801f,-0.668039f}, +{-0.601517f,0.69868f,-0.387329f},{-0.891335f,0.442876f,0.0968627f},{-0.872552f,0.175056f,0.45608f}, +{-0.763231f,0.0371769f,0.645055f},{-0.642575f,-0.0180662f,0.76601f},{-0.48495f,-0.0563598f,0.872724f}, +{-0.238167f,-0.142315f,0.960741f},{0.123424f,-0.279803f,0.952091f},{0.574493f,-0.347868f,0.740908f}, +{0.939284f,-0.188771f,0.28655f},{0.979786f,0.0995065f,-0.173547f},{0.850407f,0.302179f,-0.430692f}, +{0.68788f,0.4362f,-0.580131f},{0.478047f,0.550419f,-0.684478f},{0.3163f,0.607377f,-0.72873f}, +{0.292721f,0.633415f,-0.71631f} +}; +static GLfloat textures [152][2] = { +{0.0f,1.0f},{0.0f,0.875f},{0.0625f,0.875f}, +{0.0625f,1.0f},{0.125f,0.875f},{0.125f,1.0f}, +{0.1875f,0.875f},{0.1875f,1.0f},{0.25f,0.875f}, +{0.25f,1.0f},{0.3125f,0.875f},{0.3125f,1.0f}, +{0.375f,0.875f},{0.375f,1.0f},{0.4375f,0.875f}, +{0.4375f,1.0f},{0.5f,0.875f},{0.5f,1.0f}, +{0.5625f,0.875f},{0.5625f,1.0f},{0.625f,0.875f}, +{0.625f,1.0f},{0.6875f,0.875f},{0.6875f,1.0f}, +{0.75f,0.875f},{0.75f,1.0f},{0.8125f,0.875f}, +{0.8125f,1.0f},{0.875f,0.875f},{0.875f,1.0f}, +{0.9375f,0.875f},{0.9375f,1.0f},{1.0f,0.875f}, +{0.0f,0.75f},{0.0625f,0.75f},{0.125f,0.75f}, +{0.1875f,0.75f},{0.25f,0.75f},{0.3125f,0.75f}, +{0.375f,0.75f},{0.4375f,0.75f},{0.5f,0.75f}, +{0.5625f,0.75f},{0.625f,0.75f},{0.6875f,0.75f}, +{0.75f,0.75f},{0.8125f,0.75f},{0.875f,0.75f}, +{0.9375f,0.75f},{1.0f,0.75f},{0.0f,0.625f}, +{0.0625f,0.625f},{0.125f,0.625f},{0.1875f,0.625f}, +{0.25f,0.625f},{0.3125f,0.625f},{0.375f,0.625f}, +{0.4375f,0.625f},{0.5f,0.625f},{0.5625f,0.625f}, +{0.625f,0.625f},{0.6875f,0.625f},{0.75f,0.625f}, +{0.8125f,0.625f},{0.875f,0.625f},{0.9375f,0.625f}, +{1.0f,0.625f},{0.0f,0.5f},{0.0625f,0.5f}, +{0.125f,0.5f},{0.1875f,0.5f},{0.25f,0.5f}, +{0.3125f,0.5f},{0.375f,0.5f},{0.4375f,0.5f}, +{0.5f,0.5f},{0.5625f,0.5f},{0.625f,0.5f}, +{0.6875f,0.5f},{0.75f,0.5f},{0.8125f,0.5f}, +{0.875f,0.5f},{0.9375f,0.5f},{1.0f,0.5f}, +{0.0f,0.375f},{0.0625f,0.375f},{0.125f,0.375f}, +{0.1875f,0.375f},{0.25f,0.375f},{0.3125f,0.375f}, +{0.375f,0.375f},{0.4375f,0.375f},{0.5f,0.375f}, +{0.5625f,0.375f},{0.625f,0.375f},{0.6875f,0.375f}, +{0.75f,0.375f},{0.8125f,0.375f},{0.875f,0.375f}, +{0.9375f,0.375f},{1.0f,0.375f},{0.0f,0.25f}, +{0.0625f,0.25f},{0.125f,0.25f},{0.1875f,0.25f}, +{0.25f,0.25f},{0.3125f,0.25f},{0.375f,0.25f}, +{0.4375f,0.25f},{0.5f,0.25f},{0.5625f,0.25f}, +{0.625f,0.25f},{0.6875f,0.25f},{0.75f,0.25f}, +{0.8125f,0.25f},{0.875f,0.25f},{0.9375f,0.25f}, +{1.0f,0.25f},{0.0f,0.125f},{0.0625f,0.125f}, +{0.125f,0.125f},{0.1875f,0.125f},{0.25f,0.125f}, +{0.3125f,0.125f},{0.375f,0.125f},{0.4375f,0.125f}, +{0.5f,0.125f},{0.5625f,0.125f},{0.625f,0.125f}, +{0.6875f,0.125f},{0.75f,0.125f},{0.8125f,0.125f}, +{0.875f,0.125f},{0.9375f,0.125f},{1.0f,0.125f}, +{0.0f,1.25145e-008f},{0.0625f,1.25145e-008f},{0.125f,1.25145e-008f}, +{0.1875f,1.25145e-008f},{0.25f,1.25145e-008f},{0.3125f,1.25145e-008f}, +{0.375f,1.25145e-008f},{0.4375f,1.25145e-008f},{0.5f,1.25145e-008f}, +{0.5625f,1.25145e-008f},{0.625f,1.25145e-008f},{0.6875f,1.25145e-008f}, +{0.75f,1.25145e-008f},{0.8125f,1.25145e-008f},{0.875f,1.25145e-008f}, +{0.9375f,1.25145e-008f},{1.0f,0.125f} +}; +/*Material indicies*/ +/*{material index,face count}*/ +static int material_ref [3][2] = { +{0,112}, +{1,224}, +{0,112} +}; +//comment out +/* +struct DIB2D{ + BITMAPINFOHEADER *Info; + RGBQUAD *palette; + BYTE *bits; +}; +struct GLTXTLOAD{ + GLint format; + GLint perpixel; + GLint Width; + GLint Height; + BYTE* bits; +}; +*/ + +/* +BOOL LoadDIB(char*file,DIB2D*dib) +Only trueColor and 256 color ucompressed bitmaps supported +*/ + +//comment out +/* + +BOOL LoadDIB(char*file,DIB2D*dib) + { + BOOL result=FALSE; + HANDLE hfile=CreateFile(file,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING ,FILE_ATTRIBUTE_NORMAL,0); + if(hfile!=INVALID_HANDLE_VALUE) + { + DWORD readed; + int size=GetFileSize(hfile,0); + if(size>sizeof(BITMAPFILEHEADER)) + { + BITMAPFILEHEADER bmfh; + ReadFile(hfile,&bmfh,sizeof(BITMAPFILEHEADER),&readed,0); + if((readed==sizeof(BITMAPFILEHEADER)) && (bmfh.bfType==0x4d42)) + { + dib->Info=(BITMAPINFOHEADER*)(new BYTE[size-sizeof(BITMAPFILEHEADER)]); + ReadFile(hfile,dib->Info,size-sizeof(BITMAPFILEHEADER),&readed,0); + dib->bits=(BYTE*)(dib->Info+1); + + if(dib->Info->biBitCount==8) + { + dib->palette=(RGBQUAD*)dib->bits; + if(dib->Info->biClrUsed)dib->bits+=dib->Info->biClrUsed*4;else dib->bits+=1024; + }else{ + dib->palette=NULL; + } + result=TRUE; + } + } + CloseHandle(hfile); + } + return result; + }; + +long ScanBytes(int pixWidth, int bitsPixel) { + return (((long)pixWidth*bitsPixel+31) / 32) * 4; +} + +BOOL ScaleImage(DIB2D&dib,GLTXTLOAD&p) + { + GLint glMaxTexDim; // OpenGL maximum texture dimension + GLint XDMaxTexDim=512; // user maximum texture dimension + GLint minsize =2; + double xPow2, yPow2; + int ixPow2, iyPow2; + int xSize2, ySize2; + GLint m_iWidth=dib.Info->biWidth; + GLint m_iHeight=dib.Info->biHeight; + glGetIntegerv(GL_MAX_TEXTURE_SIZE, &glMaxTexDim); + + glMaxTexDim = min(XDMaxTexDim, glMaxTexDim); + + if (m_iWidth <= glMaxTexDim) + xPow2 = log((double)m_iWidth) / log(2.0); + else + xPow2 = log((double)glMaxTexDim) / log(2.0); + + if (m_iHeight <= glMaxTexDim) + yPow2 = log((double)m_iHeight) / log(2.0); + else + yPow2 = log((double)glMaxTexDim) / log(2.0); + + ixPow2 = (int)xPow2; + iyPow2 = (int)yPow2; + + if (xPow2 != (double)ixPow2) + ixPow2++; + if (yPow2 != (double)iyPow2) + iyPow2++; + + xSize2 = 1 << ixPow2; + ySize2 = 1 << iyPow2; + + if(xSize2biBitCount==24){ + p.format=GL_BGR_EXT; + p.perpixel=3; + return FALSE; + } + if(dib.Info->biBitCount==32) + { + p.format=GL_BGRA_EXT; + p.perpixel=4; + return FALSE; + } + } + + BYTE *bits=(BYTE *)dib.bits; + if(dib.Info->biBitCount==8){ + + // convert to TRUECOLOR + int _perline=ScanBytes(8,m_iWidth); + int perline=ScanBytes(24,m_iWidth); + bits= new BYTE[perline*m_iHeight * sizeof(BYTE)]; + for(int y=0;ybiBitCount==32); + int _mem_size=xSize2 * ySize2 * sizeof(BYTE); + if(isAlpha){ + _mem_size*=4; + p.perpixel=4; + p.format=GL_BGRA_EXT; + }else { + _mem_size*=3; + p.perpixel=3; + p.format=GL_BGR_EXT; + } + BYTE *pData = (BYTE*)new BYTE[_mem_size]; + if (!pData) return FALSE; + + if(isAlpha){ + gluScaleImage(GL_BGRA_EXT, m_iWidth, m_iHeight, + GL_UNSIGNED_BYTE, bits, + xSize2, ySize2, GL_UNSIGNED_BYTE, pData); + } + else + gluScaleImage(GL_RGB, m_iWidth, m_iHeight, + GL_UNSIGNED_BYTE, bits, + xSize2, ySize2, GL_UNSIGNED_BYTE, pData); + + + if(bits!=dib.bits)delete bits; +// m_pBits = pData; + m_iWidth = xSize2 ; + m_iHeight = ySize2 ; + p.Width=m_iWidth; + p.Height=m_iHeight; + p.bits=pData; + + return TRUE ; + } +void LoadTexture(char*filename) + { + DIB2D dib; + GLTXTLOAD load; + if(LoadDIB(filename,&dib)) + { + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + + if(ScaleImage(dib,load)) + { + glTexImage2D(GL_TEXTURE_2D,0,load.perpixel, + load.Width,load.Height,0, + load.format,GL_UNSIGNED_BYTE, + load.bits); + delete load.bits; + }else{ + + glTexImage2D(GL_TEXTURE_2D,0,load.perpixel, + dib.Info->biWidth,dib.Info->biHeight, + 0,load.format,GL_UNSIGNED_BYTE,dib.bits); + } + delete dib.Info; + } + + //DeleteObject(hbitmap); + }; +*/ + +void MyMaterial(GLenum mode,GLfloat *f,GLfloat alpha) +{ + GLfloat d[4]; + d[0]=f[0]; + d[1]=f[1]; + d[2]=f[2]; + d[3]=alpha; + glMaterialfv (GL_FRONT_AND_BACK,mode,d); +} +/* + * SelectMaterial uses OpenGL commands to define facet colors. + * + * Returns: + * Nothing + */ + +void SelectMaterial(int i) +{ + // + // Define the reflective properties of the 3D Object faces. + // + glEnd(); + GLfloat alpha=materials[i].alpha; + MyMaterial (GL_AMBIENT, materials[i].ambient,alpha); + MyMaterial (GL_DIFFUSE, materials[i].diffuse,alpha); + MyMaterial (GL_SPECULAR, materials[i].specular,alpha); + MyMaterial (GL_EMISSION, materials[i].emission,alpha); + glMaterialf (GL_FRONT_AND_BACK,GL_SHININESS,materials[i].phExp); + glEnd(); + if(materials[i].texture>-1) + { + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D,texture_maps[materials[i].texture].id); + } + else + glDisable(GL_TEXTURE_2D); + glBegin(GL_TRIANGLES); + + glBegin(GL_TRIANGLES); + +}; + +GLint Gen3DObjectList() +{ + int i; + int j; + + GLuint texture_name; + +for(i=0;i<244;i++){ + vertices[i][2]-=5; +} + + glGenTextures(1,&texture_name); + texture_maps[0].id=texture_name; + glBindTexture(GL_TEXTURE_2D,texture_name); + //LoadTexture(texture_maps[0].name); + GLint lid=glGenLists(1); + int mcount=0; + int mindex=0; + glNewList(lid, GL_COMPILE); + + glBegin (GL_TRIANGLES); + for(i=0;i +#include +#include +#include "mat_struct.h" +#include "eyes.h" +#include "lids.h" + +GLint eyes; + + +static sample_MATERIAL materials [2] = { + {{0.160784f,0.2f,0.32549f}, {0.952941f,0.964706f,1.0f}, {0.044902f,0.044902f,0.044902f}, {0.0f,0.0f,0.0f}, 1.0f,6.96441f,-1}, //Material #532 + {{0.2f,0.34902f,0.2f}, {0.0f,0.0f,0.0f}, {0.179608f,0.179608f,0.179608f}, {0.0f,0.0f,0.0f}, 1.0f,14.9285f,-1} //Material #2 +}; + +// 228 Verticies +// 152 Texture Coordinates +// 312 Normals +// 448 Triangles + +static short face_indicies[448][9] = { +// Object #-1 + {0,1,2 ,0,1,2 ,0,1,2 }, {0,2,3 ,3,2,4 ,3,2,4 }, {0,3,4 ,5,4,6 ,5,4,6 }, + {0,4,5 ,7,6,8 ,7,6,8 }, {0,5,6 ,9,8,10 ,9,8,10 }, {0,6,7 ,11,10,12 ,11,10,12 }, + {0,7,8 ,13,12,14 ,13,12,14 }, {0,8,9 ,15,14,16 ,15,14,16 }, {0,9,10 ,17,16,18 ,17,16,18 }, + {0,10,11 ,19,18,20 ,19,18,20 }, {0,11,12 ,21,20,22 ,21,20,22 }, + {0,12,13 ,23,22,24 ,23,22,24 }, {0,13,14 ,25,24,26 ,25,24,26 }, + {0,14,15 ,27,26,28 ,27,26,28 }, {0,15,16 ,29,28,30 ,29,28,30 }, + {0,16,1 ,31,30,31 ,31,30,32 }, {18,2,1 ,32,2,1 ,33,2,1 }, {1,17,18 ,1,33,32 ,1,34,33 }, + {19,3,2 ,34,4,2 ,35,4,2 }, {2,18,19 ,2,32,34 ,2,33,35 }, {20,4,3 ,35,6,4 ,36,6,4 }, + {3,19,20 ,4,34,35 ,4,35,36 }, {21,5,4 ,36,8,6 ,37,8,6 }, {4,20,21 ,6,35,36 ,6,36,37 }, + {22,6,5 ,37,10,8 ,38,10,8 }, {5,21,22 ,8,36,37 ,8,37,38 }, {23,7,6 ,38,12,10 ,39,12,10 }, + {6,22,23 ,10,37,38 ,10,38,39 }, {24,8,7 ,39,14,12 ,40,14,12 }, + {7,23,24 ,12,38,39 ,12,39,40 }, {25,9,8 ,40,16,14 ,41,16,14 }, + {8,24,25 ,14,39,40 ,14,40,41 }, {26,10,9 ,41,18,16 ,42,18,16 }, + {9,25,26 ,16,40,41 ,16,41,42 }, {27,11,10 ,42,20,18 ,43,20,18 }, + {10,26,27 ,18,41,42 ,18,42,43 }, {28,12,11 ,43,22,20 ,44,22,20 }, + {11,27,28 ,20,42,43 ,20,43,44 }, {29,13,12 ,44,24,22 ,45,24,22 }, + {12,28,29 ,22,43,44 ,22,44,45 }, {30,14,13 ,45,26,24 ,46,26,24 }, + {13,29,30 ,24,44,45 ,24,45,46 }, {31,15,14 ,46,28,26 ,47,28,26 }, + {14,30,31 ,26,45,46 ,26,46,47 }, {32,16,15 ,47,30,28 ,48,30,28 }, + {15,31,32 ,28,46,47 ,28,47,48 }, {17,1,16 ,48,48,30 ,49,32,30 }, + {16,32,17 ,30,47,49 ,30,48,49 }, {34,18,17 ,50,32,33 ,50,33,34 }, + {17,33,34 ,33,51,50 ,34,51,50 }, {35,19,18 ,52,34,32 ,52,35,33 }, + {18,34,35 ,32,50,52 ,33,50,52 }, {36,20,19 ,53,35,34 ,53,36,35 }, + {19,35,36 ,34,52,53 ,35,52,53 }, {37,21,20 ,54,36,35 ,54,37,36 }, + {20,36,37 ,35,53,54 ,36,53,54 }, {38,22,21 ,55,37,36 ,55,38,37 }, + {21,37,38 ,36,54,55 ,37,54,55 }, {39,23,22 ,56,38,37 ,56,39,38 }, + {22,38,39 ,37,55,56 ,38,55,56 }, {40,24,23 ,57,39,38 ,57,40,39 }, + {23,39,40 ,38,56,57 ,39,56,57 }, {41,25,24 ,58,40,39 ,58,41,40 }, + {24,40,41 ,39,57,58 ,40,57,58 }, {42,26,25 ,59,41,40 ,59,42,41 }, + {25,41,42 ,40,58,59 ,41,58,59 }, {43,27,26 ,60,42,41 ,60,43,42 }, + {26,42,43 ,41,59,60 ,42,59,60 }, {44,28,27 ,61,43,42 ,61,44,43 }, + {27,43,44 ,42,60,61 ,43,60,61 }, {45,29,28 ,62,44,43 ,62,45,44 }, + {28,44,45 ,43,61,62 ,44,61,62 }, {46,30,29 ,63,45,44 ,63,46,45 }, + {29,45,46 ,44,62,63 ,45,62,63 }, {47,31,30 ,64,46,45 ,64,47,46 }, + {30,46,47 ,45,63,64 ,46,63,64 }, {48,32,31 ,65,47,46 ,65,48,47 }, + {31,47,48 ,46,64,65 ,47,64,65 }, {33,17,32 ,66,66,47 ,66,49,48 }, + {32,48,33 ,47,65,67 ,48,65,66 }, {50,34,33 ,68,50,51 ,67,50,51 }, + {33,49,50 ,51,69,68 ,51,68,67 }, {51,35,34 ,70,52,50 ,69,52,50 }, + {34,50,51 ,50,68,70 ,50,67,69 }, {52,36,35 ,71,53,52 ,70,53,52 }, + {35,51,52 ,52,70,71 ,52,69,70 }, {53,37,36 ,72,54,53 ,71,54,53 }, + {36,52,53 ,53,71,72 ,53,70,71 }, {54,38,37 ,73,55,54 ,72,55,54 }, + {37,53,54 ,54,72,73 ,54,71,72 }, {55,39,38 ,74,56,55 ,73,56,55 }, + {38,54,55 ,55,73,74 ,55,72,73 }, {56,40,39 ,75,57,56 ,74,57,56 }, + {39,55,56 ,56,74,75 ,56,73,74 }, {57,41,40 ,76,58,57 ,75,58,57 }, + {40,56,57 ,57,75,76 ,57,74,75 }, {58,42,41 ,77,59,58 ,76,59,58 }, + {41,57,58 ,58,76,77 ,58,75,76 }, {59,43,42 ,78,60,59 ,77,60,59 }, + {42,58,59 ,59,77,78 ,59,76,77 }, {60,44,43 ,79,61,60 ,78,61,60 }, + {43,59,60 ,60,78,79 ,60,77,78 }, {61,45,44 ,80,62,61 ,79,62,61 }, + {44,60,61 ,61,79,80 ,61,78,79 }, {62,46,45 ,81,63,62 ,80,63,62 }, + {45,61,62 ,62,80,81 ,62,79,80 }, {63,47,46 ,82,64,63 ,81,64,63 }, + {46,62,63 ,63,81,82 ,63,80,81 }, {64,48,47 ,83,65,64 ,82,65,64 }, + {47,63,64 ,64,82,83 ,64,81,82 }, {49,33,48 ,84,84,65 ,83,66,65 }, + {48,64,49 ,65,83,85 ,65,82,83 }, {66,50,49 ,86,68,69 ,84,67,68 }, + {49,65,66 ,69,87,86 ,68,85,84 }, {67,51,50 ,88,70,68 ,86,69,67 }, + {50,66,67 ,68,86,88 ,67,84,86 }, {68,52,51 ,89,71,70 ,87,70,69 }, + {51,67,68 ,70,88,89 ,69,86,87 }, {69,53,52 ,90,72,71 ,88,71,70 }, + {52,68,69 ,71,89,90 ,70,87,88 }, {70,54,53 ,91,73,72 ,89,72,71 }, + {53,69,70 ,72,90,91 ,71,88,89 }, {71,55,54 ,92,74,73 ,90,73,72 }, + {54,70,71 ,73,91,92 ,72,89,90 }, {72,56,55 ,93,75,74 ,91,74,73 }, + {55,71,72 ,74,92,93 ,73,90,91 }, {73,57,56 ,94,76,75 ,92,75,74 }, + {56,72,73 ,75,93,94 ,74,91,92 }, {74,58,57 ,95,77,76 ,93,76,75 }, + {57,73,74 ,76,94,95 ,75,92,93 }, {75,59,58 ,96,78,77 ,94,77,76 }, + {58,74,75 ,77,95,96 ,76,93,94 }, {76,60,59 ,97,79,78 ,95,78,77 }, + {59,75,76 ,78,96,97 ,77,94,95 }, {77,61,60 ,98,80,79 ,96,79,78 }, + {60,76,77 ,79,97,98 ,78,95,96 }, {78,62,61 ,99,81,80 ,97,80,79 }, + {61,77,78 ,80,98,99 ,79,96,97 }, {79,63,62 ,100,82,81 ,98,81,80 }, + {62,78,79 ,81,99,100 ,80,97,98 }, {80,64,63 ,101,83,82 ,99,82,81 }, + {63,79,80 ,82,100,101 ,81,98,99 }, {65,49,64 ,102,102,83 ,100,83,82 }, + {64,80,65 ,83,101,103 ,82,99,100 }, {82,66,65 ,104,86,87 ,101,84,85 }, + {65,81,82 ,87,105,104 ,85,102,101 }, {83,67,66 ,106,88,86 ,103,86,84 }, + {66,82,83 ,86,104,106 ,84,101,103 }, {84,68,67 ,107,89,88 ,104,87,86 }, + {67,83,84 ,88,106,107 ,86,103,104 }, {85,69,68 ,108,90,89 ,105,88,87 }, + {68,84,85 ,89,107,108 ,87,104,105 }, {86,70,69 ,109,91,90 ,106,89,88 }, + {69,85,86 ,90,108,109 ,88,105,106 }, {87,71,70 ,110,92,91 ,107,90,89 }, + {70,86,87 ,91,109,110 ,89,106,107 }, {88,72,71 ,111,93,92 ,108,91,90 }, + {71,87,88 ,92,110,111 ,90,107,108 }, {89,73,72 ,112,94,93 ,109,92,91 }, + {72,88,89 ,93,111,112 ,91,108,109 }, {90,74,73 ,113,95,94 ,110,93,92 }, + {73,89,90 ,94,112,113 ,92,109,110 }, {91,75,74 ,114,96,95 ,111,94,93 }, + {74,90,91 ,95,113,114 ,93,110,111 }, {92,76,75 ,115,97,96 ,112,95,94 }, + {75,91,92 ,96,114,115 ,94,111,112 }, {93,77,76 ,116,98,97 ,113,96,95 }, + {76,92,93 ,97,115,116 ,95,112,113 }, {94,78,77 ,117,99,98 ,114,97,96 }, + {77,93,94 ,98,116,117 ,96,113,114 }, {95,79,78 ,118,100,99 ,115,98,97 }, + {78,94,95 ,99,117,118 ,97,114,115 }, {96,80,79 ,119,101,100 ,116,99,98 }, + {79,95,96 ,100,118,119 ,98,115,116 }, {81,65,80 ,120,120,101 ,117,100,99 }, + {80,96,81 ,101,119,121 ,99,116,117 }, {98,82,81 ,122,104,105 ,118,101,102 }, + {81,97,98 ,105,123,122 ,102,119,118 }, {99,83,82 ,124,106,104 ,120,103,101 }, + {82,98,99 ,104,122,124 ,101,118,120 }, {100,84,83 ,125,107,106 ,121,104,103 }, + {83,99,100 ,106,124,125 ,103,120,121 }, {101,85,84 ,126,108,107 ,122,105,104 }, + {84,100,101 ,107,125,126 ,104,121,122 }, {102,86,85 ,127,109,108 ,123,106,105 }, + {85,101,102 ,108,126,127 ,105,122,123 }, {103,87,86 ,128,110,109 ,124,107,106 }, + {86,102,103 ,109,127,128 ,106,123,124 }, {104,88,87 ,129,111,110 ,125,108,107 }, + {87,103,104 ,110,128,129 ,107,124,125 }, {105,89,88 ,130,112,111 ,126,109,108 }, + {88,104,105 ,111,129,130 ,108,125,126 }, {106,90,89 ,131,113,112 ,127,110,109 }, + {89,105,106 ,112,130,131 ,109,126,127 }, {107,91,90 ,132,114,113 ,128,111,110 }, + {90,106,107 ,113,131,132 ,110,127,128 }, {108,92,91 ,133,115,114 ,129,112,111 }, + {91,107,108 ,114,132,133 ,111,128,129 }, {109,93,92 ,134,116,115 ,130,113,112 }, + {92,108,109 ,115,133,134 ,112,129,130 }, {110,94,93 ,135,117,116 ,131,114,113 }, + {93,109,110 ,116,134,135 ,113,130,131 }, {111,95,94 ,136,118,117 ,132,115,114 }, + {94,110,111 ,117,135,136 ,114,131,132 }, {112,96,95 ,137,119,118 ,133,116,115 }, + {95,111,112 ,118,136,137 ,115,132,133 }, {97,81,96 ,138,138,119 ,134,117,116 }, + {96,112,97 ,119,137,139 ,116,133,134 }, {113,98,97 ,140,122,123 ,135,118,119 }, + {113,99,98 ,141,124,122 ,136,120,118 }, {113,100,99 ,142,125,124 ,137,121,120 }, + {113,101,100 ,143,126,125 ,138,122,121 }, {113,102,101 ,144,127,126 ,139,123,122 }, + {113,103,102 ,145,128,127 ,140,124,123 }, {113,104,103 ,146,129,128 ,141,125,124 }, + {113,105,104 ,147,130,129 ,142,126,125 }, {113,106,105 ,148,131,130 ,143,127,126 }, + {113,107,106 ,149,132,131 ,144,128,127 }, {113,108,107 ,150,133,132 ,145,129,128 }, + {113,109,108 ,151,134,133 ,146,130,129 }, {113,110,109 ,152,135,134 ,147,131,130 }, + {113,111,110 ,153,136,135 ,148,132,131 }, {113,112,111 ,154,137,136 ,149,133,132 }, + {113,97,112 ,155,155,137 ,150,134,133 }, {115,114,116 ,156,157,158 ,1,0,2 }, + {116,114,117 ,158,159,160 ,2,3,4 }, {117,114,118 ,160,161,162 ,4,5,6 }, + {118,114,119 ,162,163,164 ,6,7,8 }, {119,114,120 ,164,165,166 ,8,9,10 }, + {120,114,121 ,166,167,168 ,10,11,12 }, {121,114,122 ,168,169,170 ,12,13,14 }, + {122,114,123 ,170,171,172 ,14,15,16 }, {123,114,124 ,172,173,174 ,16,17,18 }, + {124,114,125 ,174,175,176 ,18,19,20 }, {125,114,126 ,176,177,178 ,20,21,22 }, + {126,114,127 ,178,179,180 ,22,23,24 }, {127,114,128 ,180,181,182 ,24,25,26 }, + {128,114,129 ,182,183,184 ,26,27,28 }, {129,114,130 ,184,185,186 ,28,29,30 }, + {130,114,115 ,186,187,187 ,30,31,32 }, {115,116,132 ,156,158,188 ,1,2,33 }, + {132,131,115 ,188,189,156 ,33,34,1 }, {116,117,133 ,158,160,190 ,2,4,35 }, + {133,132,116 ,190,188,158 ,35,33,2 }, {117,118,134 ,160,162,191 ,4,6,36 }, + {134,133,117 ,191,190,160 ,36,35,4 }, {118,119,135 ,162,164,192 ,6,8,37 }, + {135,134,118 ,192,191,162 ,37,36,6 }, {119,120,136 ,164,166,193 ,8,10,38 }, + {136,135,119 ,193,192,164 ,38,37,8 }, {120,121,137 ,166,168,194 ,10,12,39 }, + {137,136,120 ,194,193,166 ,39,38,10 }, {121,122,138 ,168,170,195 ,12,14,40 }, + {138,137,121 ,195,194,168 ,40,39,12 }, {122,123,139 ,170,172,196 ,14,16,41 }, + {139,138,122 ,196,195,170 ,41,40,14 }, {123,124,140 ,172,174,197 ,16,18,42 }, + {140,139,123 ,197,196,172 ,42,41,16 }, {124,125,141 ,174,176,198 ,18,20,43 }, + {141,140,124 ,198,197,174 ,43,42,18 }, {125,126,142 ,176,178,199 ,20,22,44 }, + {142,141,125 ,199,198,176 ,44,43,20 }, {126,127,143 ,178,180,200 ,22,24,45 }, + {143,142,126 ,200,199,178 ,45,44,22 }, {127,128,144 ,180,182,201 ,24,26,46 }, + {144,143,127 ,201,200,180 ,46,45,24 }, {128,129,145 ,182,184,202 ,26,28,47 }, + {145,144,128 ,202,201,182 ,47,46,26 }, {129,130,146 ,184,186,203 ,28,30,48 }, + {146,145,129 ,203,202,184 ,48,47,28 }, {130,115,131 ,186,204,204 ,30,32,49 }, + {131,146,130 ,205,203,186 ,49,48,30 }, {131,132,148 ,189,188,206 ,34,33,50 }, + {148,147,131 ,206,207,189 ,50,51,34 }, {132,133,149 ,188,190,208 ,33,35,52 }, + {149,148,132 ,208,206,188 ,52,50,33 }, {133,134,150 ,190,191,209 ,35,36,53 }, + {150,149,133 ,209,208,190 ,53,52,35 }, {134,135,151 ,191,192,210 ,36,37,54 }, + {151,150,134 ,210,209,191 ,54,53,36 }, {135,136,152 ,192,193,211 ,37,38,55 }, + {152,151,135 ,211,210,192 ,55,54,37 }, {136,137,153 ,193,194,212 ,38,39,56 }, + {153,152,136 ,212,211,193 ,56,55,38 }, {137,138,154 ,194,195,213 ,39,40,57 }, + {154,153,137 ,213,212,194 ,57,56,39 }, {138,139,155 ,195,196,214 ,40,41,58 }, + {155,154,138 ,214,213,195 ,58,57,40 }, {139,140,156 ,196,197,215 ,41,42,59 }, + {156,155,139 ,215,214,196 ,59,58,41 }, {140,141,157 ,197,198,216 ,42,43,60 }, + {157,156,140 ,216,215,197 ,60,59,42 }, {141,142,158 ,198,199,217 ,43,44,61 }, + {158,157,141 ,217,216,198 ,61,60,43 }, {142,143,159 ,199,200,218 ,44,45,62 }, + {159,158,142 ,218,217,199 ,62,61,44 }, {143,144,160 ,200,201,219 ,45,46,63 }, + {160,159,143 ,219,218,200 ,63,62,45 }, {144,145,161 ,201,202,220 ,46,47,64 }, + {161,160,144 ,220,219,201 ,64,63,46 }, {145,146,162 ,202,203,221 ,47,48,65 }, + {162,161,145 ,221,220,202 ,65,64,47 }, {146,131,147 ,203,222,222 ,48,49,66 }, + {147,162,146 ,223,221,203 ,66,65,48 }, {147,148,164 ,207,206,224 ,51,50,67 }, + {164,163,147 ,224,225,207 ,67,68,51 }, {148,149,165 ,206,208,226 ,50,52,69 }, + {165,164,148 ,226,224,206 ,69,67,50 }, {149,150,166 ,208,209,227 ,52,53,70 }, + {166,165,149 ,227,226,208 ,70,69,52 }, {150,151,167 ,209,210,228 ,53,54,71 }, + {167,166,150 ,228,227,209 ,71,70,53 }, {151,152,168 ,210,211,229 ,54,55,72 }, + {168,167,151 ,229,228,210 ,72,71,54 }, {152,153,169 ,211,212,230 ,55,56,73 }, + {169,168,152 ,230,229,211 ,73,72,55 }, {153,154,170 ,212,213,231 ,56,57,74 }, + {170,169,153 ,231,230,212 ,74,73,56 }, {154,155,171 ,213,214,232 ,57,58,75 }, + {171,170,154 ,232,231,213 ,75,74,57 }, {155,156,172 ,214,215,233 ,58,59,76 }, + {172,171,155 ,233,232,214 ,76,75,58 }, {156,157,173 ,215,216,234 ,59,60,77 }, + {173,172,156 ,234,233,215 ,77,76,59 }, {157,158,174 ,216,217,235 ,60,61,78 }, + {174,173,157 ,235,234,216 ,78,77,60 }, {158,159,175 ,217,218,236 ,61,62,79 }, + {175,174,158 ,236,235,217 ,79,78,61 }, {159,160,176 ,218,219,237 ,62,63,80 }, + {176,175,159 ,237,236,218 ,80,79,62 }, {160,161,177 ,219,220,238 ,63,64,81 }, + {177,176,160 ,238,237,219 ,81,80,63 }, {161,162,178 ,220,221,239 ,64,65,82 }, + {178,177,161 ,239,238,220 ,82,81,64 }, {162,147,163 ,221,240,240 ,65,66,83 }, + {163,178,162 ,241,239,221 ,83,82,65 }, {163,164,180 ,225,224,242 ,68,67,84 }, + {180,179,163 ,242,243,225 ,84,85,68 }, {164,165,181 ,224,226,244 ,67,69,86 }, + {181,180,164 ,244,242,224 ,86,84,67 }, {165,166,182 ,226,227,245 ,69,70,87 }, + {182,181,165 ,245,244,226 ,87,86,69 }, {166,167,183 ,227,228,246 ,70,71,88 }, + {183,182,166 ,246,245,227 ,88,87,70 }, {167,168,184 ,228,229,247 ,71,72,89 }, + {184,183,167 ,247,246,228 ,89,88,71 }, {168,169,185 ,229,230,248 ,72,73,90 }, + {185,184,168 ,248,247,229 ,90,89,72 }, {169,170,186 ,230,231,249 ,73,74,91 }, + {186,185,169 ,249,248,230 ,91,90,73 }, {170,171,187 ,231,232,250 ,74,75,92 }, + {187,186,170 ,250,249,231 ,92,91,74 }, {171,172,188 ,232,233,251 ,75,76,93 }, + {188,187,171 ,251,250,232 ,93,92,75 }, {172,173,189 ,233,234,252 ,76,77,94 }, + {189,188,172 ,252,251,233 ,94,93,76 }, {173,174,190 ,234,235,253 ,77,78,95 }, + {190,189,173 ,253,252,234 ,95,94,77 }, {174,175,191 ,235,236,254 ,78,79,96 }, + {191,190,174 ,254,253,235 ,96,95,78 }, {175,176,192 ,236,237,255 ,79,80,97 }, + {192,191,175 ,255,254,236 ,97,96,79 }, {176,177,193 ,237,238,256 ,80,81,98 }, + {193,192,176 ,256,255,237 ,98,97,80 }, {177,178,194 ,238,239,257 ,81,82,99 }, + {194,193,177 ,257,256,238 ,99,98,81 }, {178,163,179 ,239,258,258 ,82,83,100 }, + {179,194,178 ,259,257,239 ,100,99,82 }, {179,180,196 ,243,242,260 ,85,84,101 }, + {196,195,179 ,260,261,243 ,101,102,85 }, {180,181,197 ,242,244,262 ,84,86,103 }, + {197,196,180 ,262,260,242 ,103,101,84 }, {181,182,198 ,244,245,263 ,86,87,104 }, + {198,197,181 ,263,262,244 ,104,103,86 }, {182,183,199 ,245,246,264 ,87,88,105 }, + {199,198,182 ,264,263,245 ,105,104,87 }, {183,184,200 ,246,247,265 ,88,89,106 }, + {200,199,183 ,265,264,246 ,106,105,88 }, {184,185,201 ,247,248,266 ,89,90,107 }, + {201,200,184 ,266,265,247 ,107,106,89 }, {185,186,202 ,248,249,267 ,90,91,108 }, + {202,201,185 ,267,266,248 ,108,107,90 }, {186,187,203 ,249,250,268 ,91,92,109 }, + {203,202,186 ,268,267,249 ,109,108,91 }, {187,188,204 ,250,251,269 ,92,93,110 }, + {204,203,187 ,269,268,250 ,110,109,92 }, {188,189,205 ,251,252,270 ,93,94,111 }, + {205,204,188 ,270,269,251 ,111,110,93 }, {189,190,206 ,252,253,271 ,94,95,112 }, + {206,205,189 ,271,270,252 ,112,111,94 }, {190,191,207 ,253,254,272 ,95,96,113 }, + {207,206,190 ,272,271,253 ,113,112,95 }, {191,192,208 ,254,255,273 ,96,97,114 }, + {208,207,191 ,273,272,254 ,114,113,96 }, {192,193,209 ,255,256,274 ,97,98,115 }, + {209,208,192 ,274,273,255 ,115,114,97 }, {193,194,210 ,256,257,275 ,98,99,116 }, + {210,209,193 ,275,274,256 ,116,115,98 }, {194,179,195 ,257,276,276 ,99,100,117 }, + {195,210,194 ,277,275,257 ,117,116,99 }, {195,196,212 ,261,260,278 ,102,101,118 }, + {212,211,195 ,278,279,261 ,118,119,102 }, {196,197,213 ,260,262,280 ,101,103,120 }, + {213,212,196 ,280,278,260 ,120,118,101 }, {197,198,214 ,262,263,281 ,103,104,121 }, + {214,213,197 ,281,280,262 ,121,120,103 }, {198,199,215 ,263,264,282 ,104,105,122 }, + {215,214,198 ,282,281,263 ,122,121,104 }, {199,200,216 ,264,265,283 ,105,106,123 }, + {216,215,199 ,283,282,264 ,123,122,105 }, {200,201,217 ,265,266,284 ,106,107,124 }, + {217,216,200 ,284,283,265 ,124,123,106 }, {201,202,218 ,266,267,285 ,107,108,125 }, + {218,217,201 ,285,284,266 ,125,124,107 }, {202,203,219 ,267,268,286 ,108,109,126 }, + {219,218,202 ,286,285,267 ,126,125,108 }, {203,204,220 ,268,269,287 ,109,110,127 }, + {220,219,203 ,287,286,268 ,127,126,109 }, {204,205,221 ,269,270,288 ,110,111,128 }, + {221,220,204 ,288,287,269 ,128,127,110 }, {205,206,222 ,270,271,289 ,111,112,129 }, + {222,221,205 ,289,288,270 ,129,128,111 }, {206,207,223 ,271,272,290 ,112,113,130 }, + {223,222,206 ,290,289,271 ,130,129,112 }, {207,208,224 ,272,273,291 ,113,114,131 }, + {224,223,207 ,291,290,272 ,131,130,113 }, {208,209,225 ,273,274,292 ,114,115,132 }, + {225,224,208 ,292,291,273 ,132,131,114 }, {209,210,226 ,274,275,293 ,115,116,133 }, + {226,225,209 ,293,292,274 ,133,132,115 }, {210,195,211 ,275,294,294 ,116,117,134 }, + {211,226,210 ,295,293,275 ,134,133,116 }, {212,227,211 ,278,296,279 ,118,135,119 }, + {213,227,212 ,280,297,278 ,120,136,118 }, {214,227,213 ,281,298,280 ,121,137,120 }, + {215,227,214 ,282,299,281 ,122,138,121 }, {216,227,215 ,283,300,282 ,123,139,122 }, + {217,227,216 ,284,301,283 ,124,140,123 }, {218,227,217 ,285,302,284 ,125,141,124 }, + {219,227,218 ,286,303,285 ,126,142,125 }, {220,227,219 ,287,304,286 ,127,143,126 }, + {221,227,220 ,288,305,287 ,128,144,127 }, {222,227,221 ,289,306,288 ,129,145,128 }, + {223,227,222 ,290,307,289 ,130,146,129 }, {224,227,223 ,291,308,290 ,131,147,130 }, + {225,227,224 ,292,309,291 ,132,148,131 }, {226,227,225 ,293,310,292 ,133,149,132 }, + {211,227,226 ,311,311,293 ,134,151,133 } +}; +static GLfloat vertices [228][3] = { +{-0.287907f,-1.86815e-008f,0.135757f},{-0.289347f,0.0556207f,0.121101f},{-0.312648f,0.0513869f,0.1159f}, +{-0.331758f,0.0393298f,0.112605f},{-0.344539f,0.0212851f,0.111531f},{-0.34981f,7.94957e-010f,0.11279f}, +{-0.347143f,-0.0212852f,0.116277f},{-0.336764f,-0.0393298f,0.121467f},{-0.319578f,-0.0513869f,0.127407f}, +{-0.297367f,-0.0556208f,0.133044f},{-0.272989f,-0.0513869f,0.137622f},{-0.250313f,-0.0393298f,0.140771f}, +{-0.233576f,-0.0212851f,0.142252f},{-0.226267f,7.94957e-010f,0.141723f},{-0.229995f,0.0212851f,0.138873f}, +{-0.243926f,0.0393298f,0.133842f},{-0.265082f,0.0513869f,0.127482f},{-0.300289f,0.102774f,0.0924289f}, +{-0.342041f,0.0949506f,0.0845643f},{-0.375065f,0.072672f,0.0798777f},{-0.396413f,0.0393298f,0.0780705f}, +{-0.404666f,7.94957e-010f,0.0793717f},{-0.399455f,-0.0393298f,0.0843554f},{-0.381285f,-0.072672f,0.0925327f}, +{-0.351389f,-0.0949506f,0.101848f},{-0.312053f,-0.102774f,0.109943f},{-0.267595f,-0.0949506f,0.115783f}, +{-0.225019f,-0.072672f,0.119839f},{-0.19297f,-0.0393298f,0.122681f},{-0.179034f,2.02714e-008f,0.123571f}, +{-0.186805f,0.0393298f,0.120751f},{-0.214382f,0.072672f,0.113343f},{-0.255124f,0.0949506f,0.102855f}, +{-0.315272f,0.13428f,0.0518029f},{-0.370101f,0.124059f,0.0432229f},{-0.413796f,0.0949505f,0.0380668f}, +{-0.441728f,0.0513869f,0.0356961f},{-0.451415f,1.03344e-008f,0.0364943f},{-0.44247f,-0.0513869f,0.0414899f}, +{-0.416425f,-0.0949506f,0.0501588f},{-0.375928f,-0.124059f,0.0597781f},{-0.324519f,-0.13428f,0.0674267f}, +{-0.267803f,-0.124059f,0.0722981f},{-0.214464f,-0.0949506f,0.0757843f},{-0.175013f,-0.0513869f,0.0792818f}, +{-0.158449f,1.03344e-008f,0.0819671f},{-0.168957f,0.0513869f,0.0809906f},{-0.204319f,0.0949506f,0.0743026f}, +{-0.25666f,0.124059f,0.0632456f},{-0.330578f,0.145344f,0.00190503f},{-0.392924f,0.13428f,-0.0077162f}, +{-0.444336f,0.102774f,-0.0143289f},{-0.47705f,0.0556207f,-0.0173406f},{-0.486706f,7.94957e-010f,-0.0161772f}, +{-0.47308f,-0.0556208f,-0.01071f},{-0.439422f,-0.102774f,-0.00237543f},{-0.390673f,-0.13428f,0.00604182f}, +{-0.332519f,-0.145344f,0.0122922f},{-0.272094f,-0.13428f,0.0162857f},{-0.218439f,-0.102774f,0.0196546f}, +{-0.180892f,-0.0556207f,0.0235965f},{-0.166384f,2.02714e-008f,0.0271024f},{-0.177718f,0.0556208f,0.0274186f}, +{-0.213249f,0.102774f,0.0224836f},{-0.267201f,0.13428f,0.0129805f},{-0.34483f,0.13428f,-0.0511393f}, +{-0.40631f,0.124059f,-0.0620485f},{-0.45857f,0.0949506f,-0.0704639f},{-0.491678f,0.0513869f,-0.0742125f}, +{-0.5f,7.94957e-010f,-0.0724902f},{-0.483529f,-0.0513869f,-0.0663162f},{-0.446732f,-0.0949506f,-0.0581115f}, +{-0.396141f,-0.124059f,-0.0504919f},{-0.338919f,-0.13428f,-0.0448254f},{-0.282899f,-0.124059f,-0.0405999f}, +{-0.236267f,-0.0949505f,-0.0364056f},{-0.205857f,-0.0513869f,-0.0318189f},{-0.195525f,1.03344e-008f,-0.0282588f}, +{-0.206257f,0.0513869f,-0.0279247f},{-0.237146f,0.0949506f,-0.0320837f},{-0.285319f,0.124059f,-0.040366f}, +{-0.356086f,0.102774f,-0.097854f},{-0.405227f,0.0949505f,-0.10804f},{-0.447411f,0.072672f,-0.116169f}, +{-0.474149f,0.0393298f,-0.120015f},{-0.480452f,-1.86815e-008f,-0.11879f},{-0.466119f,-0.0393298f,-0.113531f}, +{-0.434932f,-0.072672f,-0.106385f},{-0.392811f,-0.0949506f,-0.0993913f},{-0.346413f,-0.102774f,-0.093506f}, +{-0.302508f,-0.0949506f,-0.0884557f},{-0.26729f,-0.072672f,-0.0836092f},{-0.245251f,-0.0393298f,-0.079151f}, +{-0.238544f,1.03344e-008f,-0.0763464f},{-0.247524f,0.0393298f,-0.0766391f},{-0.271628f,0.072672f,-0.0806712f}, +{-0.309166f,0.0949505f,-0.0881082f},{-0.361659f,0.0556207f,-0.128917f},{-0.388335f,0.0513868f,-0.134934f}, +{-0.410948f,0.0393298f,-0.139725f},{-0.425343f,0.0212852f,-0.142252f},{-0.428934f,7.94957e-010f,-0.142093f}, +{-0.421321f,-0.0212851f,-0.139576f},{-0.404175f,-0.0393298f,-0.135536f},{-0.380624f,-0.0513869f,-0.130889f}, +{-0.354521f,-0.0556208f,-0.126284f},{-0.329804f,-0.0513869f,-0.122039f},{-0.309941f,-0.0393298f,-0.118368f}, +{-0.297488f,-0.0212851f,-0.115637f},{-0.293883f,1.03344e-008f,-0.114402f},{-0.299525f,0.0212852f,-0.115169f}, +{-0.313908f,0.0393298f,-0.118111f},{-0.33553f,0.0513869f,-0.12294f},{-0.36059f,-9.142e-009f,-0.138758f}, +{0.287907f,-1.86815e-008f,0.135757f},{0.289347f,0.0556207f,0.121101f},{0.312648f,0.0513869f,0.1159f}, +{0.331758f,0.0393298f,0.112605f},{0.344539f,0.0212851f,0.111531f},{0.34981f,7.94957e-010f,0.11279f}, +{0.347143f,-0.0212852f,0.116277f},{0.336763f,-0.0393298f,0.121467f},{0.319578f,-0.0513869f,0.127407f}, +{0.297367f,-0.0556208f,0.133044f},{0.272989f,-0.0513869f,0.137622f},{0.250313f,-0.0393298f,0.140771f}, +{0.233576f,-0.0212851f,0.142252f},{0.226267f,7.94957e-010f,0.141723f},{0.229996f,0.0212851f,0.138873f}, +{0.243926f,0.0393298f,0.133842f},{0.265082f,0.0513869f,0.127482f},{0.300289f,0.102774f,0.0924289f}, +{0.342041f,0.0949506f,0.0845643f},{0.375065f,0.072672f,0.0798777f},{0.396413f,0.0393298f,0.0780705f}, +{0.404666f,7.94957e-010f,0.0793717f},{0.399455f,-0.0393298f,0.0843554f},{0.381285f,-0.072672f,0.0925327f}, +{0.351389f,-0.0949506f,0.101848f},{0.312053f,-0.102774f,0.109943f},{0.267595f,-0.0949506f,0.115783f}, +{0.225019f,-0.072672f,0.119839f},{0.19297f,-0.0393298f,0.122681f},{0.179034f,2.02714e-008f,0.123571f}, +{0.186805f,0.0393298f,0.120751f},{0.214382f,0.072672f,0.113343f},{0.255124f,0.0949506f,0.102855f}, +{0.315272f,0.13428f,0.0518029f},{0.370101f,0.124059f,0.0432229f},{0.413796f,0.0949505f,0.0380668f}, +{0.441728f,0.0513869f,0.0356961f},{0.451415f,1.03344e-008f,0.0364943f},{0.44247f,-0.0513869f,0.0414899f}, +{0.416425f,-0.0949506f,0.0501588f},{0.375928f,-0.124059f,0.0597781f},{0.324519f,-0.13428f,0.0674267f}, +{0.267803f,-0.124059f,0.0722981f},{0.214464f,-0.0949506f,0.0757843f},{0.175013f,-0.0513869f,0.0792818f}, +{0.158449f,1.03344e-008f,0.0819671f},{0.168957f,0.0513869f,0.0809906f},{0.204319f,0.0949506f,0.0743026f}, +{0.25666f,0.124059f,0.0632456f},{0.330578f,0.145344f,0.00190503f},{0.392924f,0.13428f,-0.0077162f}, +{0.444336f,0.102774f,-0.0143289f},{0.47705f,0.0556207f,-0.0173406f},{0.486706f,7.94957e-010f,-0.0161772f}, +{0.47308f,-0.0556208f,-0.01071f},{0.439422f,-0.102774f,-0.00237543f},{0.390673f,-0.13428f,0.00604182f}, +{0.332519f,-0.145344f,0.0122922f},{0.272094f,-0.13428f,0.0162857f},{0.218439f,-0.102774f,0.0196546f}, +{0.180892f,-0.0556207f,0.0235965f},{0.166384f,2.02714e-008f,0.0271024f},{0.177718f,0.0556208f,0.0274186f}, +{0.213249f,0.102774f,0.0224836f},{0.267201f,0.13428f,0.0129805f},{0.34483f,0.13428f,-0.0511393f}, +{0.40631f,0.124059f,-0.0620485f},{0.45857f,0.0949506f,-0.0704639f},{0.491678f,0.0513869f,-0.0742125f}, +{0.5f,7.94957e-010f,-0.0724902f},{0.483529f,-0.0513869f,-0.0663162f},{0.446732f,-0.0949506f,-0.0581115f}, +{0.396141f,-0.124059f,-0.0504919f},{0.338919f,-0.13428f,-0.0448254f},{0.282899f,-0.124059f,-0.0405999f}, +{0.236267f,-0.0949505f,-0.0364056f},{0.205857f,-0.0513869f,-0.0318189f},{0.195525f,1.03344e-008f,-0.0282588f}, +{0.206257f,0.0513869f,-0.0279247f},{0.237146f,0.0949506f,-0.0320837f},{0.285319f,0.124059f,-0.040366f}, +{0.356086f,0.102774f,-0.097854f},{0.405227f,0.0949505f,-0.10804f},{0.447411f,0.072672f,-0.116169f}, +{0.474149f,0.0393298f,-0.120015f},{0.480452f,-1.86815e-008f,-0.11879f},{0.466119f,-0.0393298f,-0.113531f}, +{0.434932f,-0.072672f,-0.106385f},{0.392811f,-0.0949506f,-0.0993913f},{0.346413f,-0.102774f,-0.093506f}, +{0.302508f,-0.0949506f,-0.0884557f},{0.26729f,-0.072672f,-0.0836092f},{0.245251f,-0.0393298f,-0.079151f}, +{0.238544f,1.03344e-008f,-0.0763464f},{0.247524f,0.0393298f,-0.0766391f},{0.271628f,0.072672f,-0.0806712f}, +{0.309166f,0.0949505f,-0.0881082f},{0.361659f,0.0556207f,-0.128917f},{0.388335f,0.0513868f,-0.134934f}, +{0.410948f,0.0393298f,-0.139725f},{0.425343f,0.0212852f,-0.142252f},{0.428934f,7.94957e-010f,-0.142093f}, +{0.421321f,-0.0212851f,-0.139576f},{0.404175f,-0.0393298f,-0.135536f},{0.380624f,-0.0513869f,-0.130889f}, +{0.354521f,-0.0556208f,-0.126284f},{0.329804f,-0.0513869f,-0.122039f},{0.309941f,-0.0393298f,-0.118368f}, +{0.297488f,-0.0212851f,-0.115637f},{0.293883f,1.03344e-008f,-0.114402f},{0.299525f,0.0212852f,-0.115169f}, +{0.313908f,0.0393298f,-0.118111f},{0.33553f,0.0513869f,-0.12294f},{0.36059f,-9.142e-009f,-0.138758f} +}; +static GLfloat normals [312][3] = { +{-0.252871f,0.2404f,0.937157f},{-0.258307f,0.38096f,0.887777f},{-0.313991f,0.324677f,0.892185f}, +{-0.296928f,0.216441f,0.930047f},{-0.383648f,0.254797f,0.887633f},{-0.329607f,0.178289f,0.927131f}, +{-0.430851f,0.18085f,0.884116f},{-0.34441f,0.140222f,0.928289f},{-0.454555f,0.107789f,0.884173f}, +{-0.345761f,0.109338f,0.931931f},{-0.451254f,0.0285079f,0.89194f},{-0.336206f,0.076578f,0.93867f}, +{-0.408498f,-0.0677304f,0.910243f},{-0.305382f,0.0335758f,0.951638f},{-0.312714f,-0.173985f,0.933777f}, +{-0.246924f,-0.00527786f,0.969021f},{-0.174674f,-0.256876f,0.950528f},{-0.18167f,-0.0170678f,0.983211f}, +{-0.0295312f,-0.282552f,0.958797f},{-0.135737f,-0.00345962f,0.990739f},{0.091734f,-0.234033f,0.967891f}, +{-0.110558f,0.0209796f,0.993648f},{0.167189f,-0.105758f,0.980236f},{-0.0961792f,0.0576956f,0.99369f}, +{0.172186f,0.0803976f,0.981778f},{-0.0956933f,0.115643f,0.988671f},{0.102757f,0.255574f,0.961313f}, +{-0.118853f,0.180455f,0.976376f},{-0.00684392f,0.362472f,0.93197f},{-0.16015f,0.225882f,0.9609f}, +{-0.121457f,0.396353f,0.910029f},{-0.20652f,0.244312f,0.94745f},{-0.347082f,0.515074f,0.78373f}, +{-0.249506f,0.635312f,0.730839f},{-0.478643f,0.367304f,0.797489f},{-0.559961f,0.216863f,0.799634f}, +{-0.602861f,0.0780879f,0.794015f},{-0.610046f,-0.0696832f,0.789296f},{-0.551611f,-0.257101f,0.793489f}, +{-0.38207f,-0.465686f,0.798223f},{-0.121673f,-0.612952f,0.780695f},{0.146927f,-0.650919f,0.744793f}, +{0.385172f,-0.58077f,0.717181f},{0.58668f,-0.374453f,0.718047f},{0.670596f,-0.00636283f,0.741796f}, +{0.540433f,0.379137f,0.751124f},{0.289465f,0.600903f,0.745067f},{0.0436793f,0.662498f,0.747789f}, +{-0.140618f,0.490361f,0.8601f},{-0.109243f,0.507979f,0.854414f},{-0.380531f,0.755905f,0.532733f}, +{-0.225858f,0.883504f,0.410377f},{-0.59605f,0.523204f,0.609083f},{-0.713032f,0.266278f,0.6486f}, +{-0.762247f,0.0288195f,0.646645f},{-0.762093f,-0.214058f,0.61106f},{-0.668216f,-0.496763f,0.553817f}, +{-0.416626f,-0.766605f,0.48861f},{-0.0545419f,-0.90563f,0.420547f},{0.29318f,-0.889718f,0.349925f}, +{0.591552f,-0.758995f,0.272017f},{0.848551f,-0.492341f,0.193807f},{0.985865f,-0.05828f,0.157078f}, +{0.881972f,0.429135f,0.194856f},{0.581894f,0.76394f,0.278916f},{0.238697f,0.899997f,0.364733f}, +{-0.00501219f,0.789307f,0.613979f},{0.0251126f,0.806017f,0.59136f},{-0.362683f,0.922533f,0.131889f}, +{-0.167637f,0.985742f,-0.0145074f},{-0.675042f,0.684053f,0.276386f},{-0.861957f,0.33668f,0.379047f}, +{-0.919481f,-0.0263853f,0.392249f},{-0.871276f,-0.372611f,0.319436f},{-0.697519f,-0.689005f,0.196823f}, +{-0.38794f,-0.918076f,0.0814794f},{-0.00830919f,-0.999934f,0.00788595f},{0.353657f,-0.934174f,-0.0473814f}, +{0.658559f,-0.741582f,-0.127893f},{0.873379f,-0.428149f,-0.232159f},{0.952936f,-0.0310618f,-0.301577f}, +{0.881119f,0.37659f,-0.286025f},{0.666622f,0.718532f,-0.198309f},{0.352833f,0.93106f,-0.0929322f}, +{0.135999f,0.975217f,0.174515f},{0.140791f,0.975534f,0.16885f},{-0.258662f,0.909417f,-0.32566f}, +{-0.0662442f,0.901289f,-0.428124f},{-0.621608f,0.751307f,-0.221679f},{-0.914602f,0.386148f,-0.119974f}, +{-0.992511f,-0.0884879f,-0.084218f},{-0.859627f,-0.492181f,-0.137109f},{-0.607892f,-0.758345f,-0.235332f}, +{-0.300655f,-0.897575f,-0.322437f},{0.0284315f,-0.925422f,-0.37787f},{0.354203f,-0.835474f,-0.420148f}, +{0.628523f,-0.617805f,-0.47252f},{0.789277f,-0.310692f,-0.529634f},{0.825511f,0.00904431f,-0.564314f}, +{0.769059f,0.307146f,-0.560545f},{0.622245f,0.583594f,-0.521757f},{0.380717f,0.799662f,-0.464323f}, +{0.209136f,0.944539f,-0.253197f},{0.207914f,0.945204f,-0.251717f},{-0.0829051f,0.69251f,-0.716628f}, +{0.0583377f,0.651534f,-0.756373f},{-0.355182f,0.592306f,-0.723201f},{-0.614659f,0.31377f,-0.723701f}, +{-0.712098f,-0.103352f,-0.694432f},{-0.595913f,-0.454188f,-0.66227f},{-0.38585f,-0.645546f,-0.659083f}, +{-0.157323f,-0.719684f,-0.676243f},{0.0788719f,-0.709682f,-0.700093f},{0.315478f,-0.613671f,-0.723796f}, +{0.515947f,-0.42928f,-0.741294f},{0.633864f,-0.195427f,-0.748348f},{0.66279f,0.0306839f,-0.748176f}, +{0.624867f,0.232632f,-0.745267f},{0.526051f,0.42017f,-0.73941f},{0.364351f,0.57901f,-0.72938f}, +{0.238862f,0.777411f,-0.581874f},{0.250693f,0.765838f,-0.592153f},{0.0872439f,0.389795f,-0.916759f}, +{0.149617f,0.363837f,-0.919368f},{-0.0497727f,0.321156f,-0.945718f},{-0.170031f,0.164068f,-0.971685f}, +{-0.229274f,-0.0548793f,-0.971814f},{-0.203035f,-0.255423f,-0.94527f},{-0.116827f,-0.381483f,-0.916963f}, +{-0.00225283f,-0.43449f,-0.900674f},{0.127092f,-0.427409f,-0.89508f},{0.260125f,-0.364224f,-0.894246f}, +{0.375837f,-0.25252f,-0.891617f},{0.451585f,-0.11593f,-0.884664f},{0.479573f,0.0177851f,-0.877322f}, +{0.465354f,0.137133f,-0.874437f},{0.414091f,0.242881f,-0.877233f},{0.328899f,0.330658f,-0.884585f}, +{0.255655f,0.510592f,-0.820937f},{0.269217f,0.496777f,-0.825067f},{0.190196f,0.174579f,-0.966099f}, +{0.131151f,0.1438f,-0.980878f},{0.0787381f,0.0763682f,-0.993966f},{0.0487437f,-0.0156549f,-0.998689f}, +{0.0485044f,-0.100192f,-0.993785f},{0.0679649f,-0.15604f,-0.98541f},{0.0968914f,-0.187447f,-0.977484f}, +{0.138234f,-0.202344f,-0.969509f},{0.198197f,-0.193848f,-0.960802f},{0.266924f,-0.14981f,-0.952002f}, +{0.319768f,-0.0777643f,-0.944299f},{0.342966f,-0.00360353f,-0.939341f},{0.342411f,0.0569724f,-0.937821f}, +{0.325776f,0.106482f,-0.939432f},{0.293316f,0.147691f,-0.944539f},{0.246219f,0.173439f,-0.95357f}, +{0.258307f,0.38096f,0.887776f},{0.252871f,0.2404f,0.937157f},{0.313992f,0.324677f,0.892185f}, +{0.296928f,0.216441f,0.930047f},{0.383648f,0.254797f,0.887633f},{0.329608f,0.178289f,0.927131f}, +{0.430851f,0.18085f,0.884116f},{0.34441f,0.140222f,0.928288f},{0.454555f,0.107789f,0.884173f}, +{0.345761f,0.109338f,0.93193f},{0.451254f,0.028508f,0.89194f},{0.336206f,0.076578f,0.93867f}, +{0.408498f,-0.0677303f,0.910243f},{0.305382f,0.0335756f,0.951638f},{0.312714f,-0.173985f,0.933777f}, +{0.246924f,-0.00527788f,0.96902f},{0.174674f,-0.256876f,0.950528f},{0.18167f,-0.0170678f,0.983211f}, +{0.0295312f,-0.282552f,0.958797f},{0.135737f,-0.00345967f,0.990739f},{-0.0917341f,-0.234033f,0.967891f}, +{0.110558f,0.0209796f,0.993648f},{-0.167189f,-0.105758f,0.980236f},{0.0961791f,0.0576956f,0.99369f}, +{-0.172185f,0.0803977f,0.981778f},{0.0956933f,0.115643f,0.988671f},{-0.102757f,0.255574f,0.961313f}, +{0.118853f,0.180455f,0.976376f},{0.00684396f,0.362472f,0.93197f},{0.16015f,0.225882f,0.9609f}, +{0.121457f,0.396353f,0.910029f},{0.20652f,0.244312f,0.94745f},{0.347082f,0.515074f,0.78373f}, +{0.249506f,0.635311f,0.730839f},{0.478643f,0.367304f,0.797489f},{0.559961f,0.216863f,0.799634f}, +{0.602861f,0.078088f,0.794015f},{0.610046f,-0.069683f,0.789296f},{0.551611f,-0.257101f,0.793489f}, +{0.38207f,-0.465685f,0.798223f},{0.121673f,-0.612952f,0.780695f},{-0.146927f,-0.650919f,0.744793f}, +{-0.385172f,-0.58077f,0.717181f},{-0.58668f,-0.374453f,0.718047f},{-0.670595f,-0.00636265f,0.741796f}, +{-0.540432f,0.379137f,0.751124f},{-0.289466f,0.600903f,0.745067f},{-0.0436793f,0.662498f,0.747789f}, +{0.140618f,0.490361f,0.8601f},{0.109243f,0.507979f,0.854414f},{0.380531f,0.755905f,0.532733f}, +{0.225859f,0.883504f,0.410377f},{0.59605f,0.523204f,0.609083f},{0.713032f,0.266278f,0.6486f}, +{0.762247f,0.0288195f,0.646645f},{0.762093f,-0.214057f,0.61106f},{0.668216f,-0.496763f,0.553817f}, +{0.416626f,-0.766605f,0.48861f},{0.0545419f,-0.90563f,0.420547f},{-0.29318f,-0.889718f,0.349925f}, +{-0.591552f,-0.758995f,0.272017f},{-0.848551f,-0.492341f,0.193807f},{-0.985865f,-0.0582799f,0.157078f}, +{-0.881971f,0.429136f,0.194856f},{-0.581895f,0.76394f,0.278916f},{-0.238697f,0.899997f,0.364733f}, +{0.00501218f,0.789307f,0.613979f},{-0.0251125f,0.806017f,0.59136f},{0.362682f,0.922533f,0.131889f}, +{0.167637f,0.985742f,-0.0145074f},{0.675042f,0.684053f,0.276386f},{0.861957f,0.33668f,0.379047f}, +{0.919481f,-0.0263853f,0.392249f},{0.871276f,-0.372611f,0.319436f},{0.697519f,-0.689005f,0.196823f}, +{0.38794f,-0.918076f,0.0814794f},{0.00830921f,-0.999934f,0.00788592f},{-0.353657f,-0.934174f,-0.0473814f}, +{-0.658559f,-0.741582f,-0.127893f},{-0.873379f,-0.428149f,-0.232159f},{-0.952936f,-0.0310616f,-0.301577f}, +{-0.881119f,0.37659f,-0.286025f},{-0.666622f,0.718532f,-0.198309f},{-0.352833f,0.93106f,-0.0929322f}, +{-0.135999f,0.975217f,0.174515f},{-0.140791f,0.975534f,0.16885f},{0.258662f,0.909417f,-0.32566f}, +{0.0662442f,0.901289f,-0.428124f},{0.621608f,0.751307f,-0.221679f},{0.914602f,0.386148f,-0.119974f}, +{0.992511f,-0.088488f,-0.084218f},{0.859627f,-0.492181f,-0.137109f},{0.607892f,-0.758345f,-0.235333f}, +{0.300655f,-0.897575f,-0.322437f},{-0.0284315f,-0.925422f,-0.37787f},{-0.354203f,-0.835474f,-0.420148f}, +{-0.628523f,-0.617805f,-0.47252f},{-0.789277f,-0.310692f,-0.529634f},{-0.825511f,0.0090443f,-0.564314f}, +{-0.769059f,0.307146f,-0.560545f},{-0.622245f,0.583594f,-0.521756f},{-0.380717f,0.799662f,-0.464322f}, +{-0.209136f,0.944539f,-0.253197f},{-0.207913f,0.945204f,-0.251717f},{0.0829051f,0.69251f,-0.716628f}, +{-0.0583377f,0.651534f,-0.756373f},{0.355182f,0.592306f,-0.723201f},{0.614659f,0.31377f,-0.7237f}, +{0.712098f,-0.103352f,-0.694431f},{0.595913f,-0.454188f,-0.66227f},{0.38585f,-0.645546f,-0.659083f}, +{0.157323f,-0.719684f,-0.676243f},{-0.0788719f,-0.709682f,-0.700093f},{-0.315478f,-0.613671f,-0.723796f}, +{-0.515947f,-0.42928f,-0.741294f},{-0.633864f,-0.195427f,-0.748348f},{-0.66279f,0.0306839f,-0.748176f}, +{-0.624867f,0.232632f,-0.745268f},{-0.526051f,0.42017f,-0.73941f},{-0.364352f,0.57901f,-0.72938f}, +{-0.238862f,0.777411f,-0.581874f},{-0.250693f,0.765838f,-0.592153f},{-0.0872439f,0.389796f,-0.916759f}, +{-0.149617f,0.363837f,-0.919368f},{0.0497727f,0.321156f,-0.945718f},{0.170031f,0.164068f,-0.971685f}, +{0.229274f,-0.0548795f,-0.971813f},{0.203035f,-0.255423f,-0.94527f},{0.116827f,-0.381483f,-0.916964f}, +{0.00225283f,-0.43449f,-0.900674f},{-0.127092f,-0.427409f,-0.89508f},{-0.260125f,-0.364224f,-0.894246f}, +{-0.375837f,-0.25252f,-0.891617f},{-0.451585f,-0.11593f,-0.884664f},{-0.479573f,0.0177852f,-0.877322f}, +{-0.465354f,0.137133f,-0.874437f},{-0.414091f,0.242881f,-0.877233f},{-0.328899f,0.330658f,-0.884585f}, +{-0.255655f,0.510592f,-0.820937f},{-0.269217f,0.496777f,-0.825067f},{-0.190196f,0.174579f,-0.966099f}, +{-0.13115f,0.1438f,-0.980878f},{-0.0787381f,0.0763682f,-0.993966f},{-0.0487437f,-0.0156549f,-0.998689f}, +{-0.0485044f,-0.100192f,-0.993785f},{-0.0679649f,-0.15604f,-0.98541f},{-0.0968914f,-0.187447f,-0.977484f}, +{-0.138234f,-0.202344f,-0.969509f},{-0.198197f,-0.193848f,-0.960802f},{-0.266924f,-0.14981f,-0.952002f}, +{-0.319768f,-0.0777645f,-0.944299f},{-0.342966f,-0.00360326f,-0.939341f},{-0.342412f,0.0569721f,-0.937821f}, +{-0.325776f,0.106482f,-0.939432f},{-0.293316f,0.147691f,-0.944539f},{-0.246219f,0.173439f,-0.95357f} +}; +static GLfloat textures [152][2] = { +{0.0f,1.0f},{0.0f,0.875f},{0.0625f,0.875f}, +{0.0625f,1.0f},{0.125f,0.875f},{0.125f,1.0f}, +{0.1875f,0.875f},{0.1875f,1.0f},{0.25f,0.875f}, +{0.25f,1.0f},{0.3125f,0.875f},{0.3125f,1.0f}, +{0.375f,0.875f},{0.375f,1.0f},{0.4375f,0.875f}, +{0.4375f,1.0f},{0.5f,0.875f},{0.5f,1.0f}, +{0.5625f,0.875f},{0.5625f,1.0f},{0.625f,0.875f}, +{0.625f,1.0f},{0.6875f,0.875f},{0.6875f,1.0f}, +{0.75f,0.875f},{0.75f,1.0f},{0.8125f,0.875f}, +{0.8125f,1.0f},{0.875f,0.875f},{0.875f,1.0f}, +{0.9375f,0.875f},{0.9375f,1.0f},{1.0f,0.875f}, +{0.0625f,0.75f},{0.0f,0.75f},{0.125f,0.75f}, +{0.1875f,0.75f},{0.25f,0.75f},{0.3125f,0.75f}, +{0.375f,0.75f},{0.4375f,0.75f},{0.5f,0.75f}, +{0.5625f,0.75f},{0.625f,0.75f},{0.6875f,0.75f}, +{0.75f,0.75f},{0.8125f,0.75f},{0.875f,0.75f}, +{0.9375f,0.75f},{1.0f,0.75f},{0.0625f,0.625f}, +{0.0f,0.625f},{0.125f,0.625f},{0.1875f,0.625f}, +{0.25f,0.625f},{0.3125f,0.625f},{0.375f,0.625f}, +{0.4375f,0.625f},{0.5f,0.625f},{0.5625f,0.625f}, +{0.625f,0.625f},{0.6875f,0.625f},{0.75f,0.625f}, +{0.8125f,0.625f},{0.875f,0.625f},{0.9375f,0.625f}, +{1.0f,0.625f},{0.0625f,0.5f},{0.0f,0.5f}, +{0.125f,0.5f},{0.1875f,0.5f},{0.25f,0.5f}, +{0.3125f,0.5f},{0.375f,0.5f},{0.4375f,0.5f}, +{0.5f,0.5f},{0.5625f,0.5f},{0.625f,0.5f}, +{0.6875f,0.5f},{0.75f,0.5f},{0.8125f,0.5f}, +{0.875f,0.5f},{0.9375f,0.5f},{1.0f,0.5f}, +{0.0625f,0.375f},{0.0f,0.375f},{0.125f,0.375f}, +{0.1875f,0.375f},{0.25f,0.375f},{0.3125f,0.375f}, +{0.375f,0.375f},{0.4375f,0.375f},{0.5f,0.375f}, +{0.5625f,0.375f},{0.625f,0.375f},{0.6875f,0.375f}, +{0.75f,0.375f},{0.8125f,0.375f},{0.875f,0.375f}, +{0.9375f,0.375f},{1.0f,0.375f},{0.0625f,0.25f}, +{0.0f,0.25f},{0.125f,0.25f},{0.1875f,0.25f}, +{0.25f,0.25f},{0.3125f,0.25f},{0.375f,0.25f}, +{0.4375f,0.25f},{0.5f,0.25f},{0.5625f,0.25f}, +{0.625f,0.25f},{0.6875f,0.25f},{0.75f,0.25f}, +{0.8125f,0.25f},{0.875f,0.25f},{0.9375f,0.25f}, +{1.0f,0.25f},{0.0625f,0.125f},{0.0f,0.125f}, +{0.125f,0.125f},{0.1875f,0.125f},{0.25f,0.125f}, +{0.3125f,0.125f},{0.375f,0.125f},{0.4375f,0.125f}, +{0.5f,0.125f},{0.5625f,0.125f},{0.625f,0.125f}, +{0.6875f,0.125f},{0.75f,0.125f},{0.8125f,0.125f}, +{0.875f,0.125f},{0.9375f,0.125f},{1.0f,0.125f}, +{0.0f,1.25145e-008f},{0.0625f,1.25145e-008f},{0.125f,1.25145e-008f}, +{0.1875f,1.25145e-008f},{0.25f,1.25145e-008f},{0.3125f,1.25145e-008f}, +{0.375f,1.25145e-008f},{0.4375f,1.25145e-008f},{0.5f,1.25145e-008f}, +{0.5625f,1.25145e-008f},{0.625f,1.25145e-008f},{0.6875f,1.25145e-008f}, +{0.75f,1.25145e-008f},{0.8125f,1.25145e-008f},{0.875f,1.25145e-008f}, +{0.9375f,1.25145e-008f},{0.9375f,1.25145e-008f} +}; +/*Material indicies*/ +/*{material index,face count}*/ +static int material_ref [9][2] = { +{0,94}, +{1,4}, +{0,28}, +{1,4}, +{0,188}, +{1,4}, +{0,28}, +{1,4}, +{0,94} +}; +static void MyMaterial(GLenum mode,GLfloat *f,GLfloat alpha) +{ + GLfloat d[4]; + d[0]=f[0]; + d[1]=f[1]; + d[2]=f[2]; + d[3]=alpha; + glMaterialfv (GL_FRONT_AND_BACK,mode,d); +} +/* + * SelectMaterial uses OpenGL commands to define facet colors. + * + * Returns: + * Nothing + */ + +static void SelectMaterial(int i) +{ + // + // Define the reflective properties of the 3D Object faces. + // + glEnd(); + GLfloat alpha=materials[i].alpha; + MyMaterial (GL_AMBIENT, materials[i].ambient,alpha); + MyMaterial (GL_DIFFUSE, materials[i].diffuse,alpha); + MyMaterial (GL_SPECULAR, materials[i].specular,alpha); + MyMaterial (GL_EMISSION, materials[i].emission,alpha); + glMaterialf (GL_FRONT_AND_BACK,GL_SHININESS,materials[i].phExp); + glBegin(GL_TRIANGLES); + +}; + +static GLint Gen3DObjectList() +{ + int i; + int j; + + GLint lid=glGenLists(1); + int mcount=0; + int mindex=0; + glNewList(lid, GL_COMPILE); + + glBegin (GL_TRIANGLES); + for(i=0;i + +FACE init_face(KIND kind) +{ + FACE face; + face = (FACE)malloc(sizeof(*face)); + + switch(kind){ + case DOG: + init_dog(face); + break; + case SHARK: + init_shark(face); + break; + default: + printf("default face\n"); + init_dog(face); + break; + } + return face; +} + +void draw_face(FACE face, GLfloat zrot, GLfloat yrot, BOOL left_eye, BOOL right_eye, GLfloat mouth_open, DIRECTION dir, OUTPUT_MODE mode){ + face->draw_func(face, zrot, yrot, left_eye, right_eye, mouth_open, dir, mode); +} + +void change_materials(FACE f, int* mats, int num_change){ + int i; + assert(!(num_change<0 || num_change>NUM_PARTS)); + for(i=0;imat_indeces[i]=mats[i]; + } +} + +void free_face(FACE f){} diff -r f854402837ba -r ed017b9c532d plugins/crazychat/face.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/face.h Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,44 @@ +#ifndef __FACE_H__ +#define __FACE_H__ + +#include +#include +#include "glm.h" + +#define NUM_PARTS 10 +#define DOG_SHARK_CHANGE 5 +#define CRAZY_COUNT 12 +#define MAX_EYE_POP 1.3 +#define EYE_TIME 120 +#define MAX_FILE_LEN 64 +#define ANGLE_INC 60 + +typedef enum {DOG, SHARK} KIND; +typedef int BOOL; +typedef enum {UP, DOWN, CONST} DIRECTION; +typedef enum {NORMAL, CRAZY1, CRAZY2, CRAZY3} OUTPUT_MODE; + +struct face_struct { + char* name; + KIND my_kind; + void* char_struct; + GLint* mat_indeces; + GLMmat_str* materials; + OUTPUT_MODE my_mode; + int eye_count, crazy_count; + void (*draw_func)(struct face_struct*, GLfloat, GLfloat, BOOL, BOOL, GLfloat, DIRECTION, OUTPUT_MODE); + float curr_z_angle, curr_eye_pop; +}; + +typedef struct face_struct* FACE; +typedef enum {APPENDAGE, HEAD, LIDS, LEFT_IRIS, RIGHT_IRIS, EYES, PUPIL, EXTRA1, EXTRA2, EXTRA3} PART; + +FACE init_face(KIND kind); + +FACE copy_face(FACE f); + +void draw_face(FACE face, GLfloat zrot, GLfloat yrot, BOOL left_eye, BOOL right_eye, GLfloat mouth_open, DIRECTION dir, OUTPUT_MODE mode); + +void change_materials(FACE face, int* mats, int num_change); + +#endif diff -r f854402837ba -r ed017b9c532d plugins/crazychat/filter.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/filter.c Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,124 @@ +#include "cc_interface.h" +#include "filter.h" +#include "stdio.h" + +#define coef_0 .0022 +#define coef_1 .0174 +#define coef_2 .0737 +#define coef_3 .1662 +#define coef_4 .2405 + +filter_bank* Filter_Initialize (void) +{ + filter_bank* new_filter; + new_filter=(filter_bank*)malloc(sizeof(filter_bank)); + memset(new_filter,0,sizeof(filter_bank)); +// fprintf(stderr,"RESETTING FILTER BANK *******************\n"); + return new_filter; +} + +void Filter_Destroy (filter_bank *f) +{ + free(f); +} + +void filter(struct cc_features *features, filter_bank *f) +{ + +f->head_size[9]=f->head_size[8]; +f->head_size[8]=f->head_size[7]; +f->head_size[7]=f->head_size[6]; +f->head_size[6]=f->head_size[5]; +f->head_size[5]=f->head_size[4]; +f->head_size[4]=f->head_size[3]; +f->head_size[3]=f->head_size[2]; +f->head_size[2]=f->head_size[1]; +f->head_size[1]=f->head_size[0]; +f->head_size[0]=features->head_size; + +features->head_size=(guint8) ( (coef_0*(f->head_size[0]+f->head_size[9]))+(coef_1*(f->head_size[1]+f->head_size[8])) + + (coef_2*(f->head_size[2]+f->head_size[7])) + (coef_3*(f->head_size[3]+f->head_size[6])) + + (coef_4*(f->head_size[4]+f->head_size[5]))); + + + +f->head_z_rot[9]=f->head_z_rot[8]; +f->head_z_rot[8]=f->head_z_rot[7]; +f->head_z_rot[7]=f->head_z_rot[6]; +f->head_z_rot[6]=f->head_z_rot[5]; +f->head_z_rot[5]=f->head_z_rot[4]; +f->head_z_rot[4]=f->head_z_rot[3]; +f->head_z_rot[3]=f->head_z_rot[2]; +f->head_z_rot[2]=f->head_z_rot[1]; +f->head_z_rot[1]=f->head_z_rot[0]; +f->head_z_rot[0]=features->head_z_rot; + +features->head_z_rot=(guint8) ( (coef_0*(f->head_z_rot[0]+f->head_z_rot[9]))+(coef_1*(f->head_z_rot[1]+f->head_z_rot[8])) + + (coef_2*(f->head_z_rot[2]+f->head_z_rot[7])) + (coef_3*(f->head_z_rot[3]+f->head_z_rot[6])) + + (coef_4*(f->head_z_rot[4]+f->head_z_rot[5]))); + + +f->head_y_rot[9]=f->head_y_rot[8]; +f->head_y_rot[8]=f->head_y_rot[7]; +f->head_y_rot[7]=f->head_y_rot[6]; +f->head_y_rot[6]=f->head_y_rot[5]; +f->head_y_rot[5]=f->head_y_rot[4]; +f->head_y_rot[4]=f->head_y_rot[3]; +f->head_y_rot[3]=f->head_y_rot[2]; +f->head_y_rot[2]=f->head_y_rot[1]; +f->head_y_rot[1]=f->head_y_rot[0]; +f->head_y_rot[0]=features->head_y_rot; + +features->head_y_rot=(guint8) ( (coef_0*(f->head_y_rot[0]+f->head_y_rot[9]))+(coef_1*(f->head_y_rot[1]+f->head_y_rot[8])) + + (coef_2*(f->head_y_rot[2]+f->head_y_rot[7])) + (coef_3*(f->head_y_rot[3]+f->head_y_rot[6])) + + (coef_4*(f->head_y_rot[4]+f->head_y_rot[5]))); + + +f->xfilt[9]=f->xfilt[8]; +f->xfilt[8]=f->xfilt[7]; +f->xfilt[7]=f->xfilt[6]; +f->xfilt[6]=f->xfilt[5]; +f->xfilt[5]=f->xfilt[4]; +f->xfilt[4]=f->xfilt[3]; +f->xfilt[3]=f->xfilt[2]; +f->xfilt[2]=f->xfilt[1]; +f->xfilt[1]=f->xfilt[0]; +f->xfilt[0]=features->x; + +features->x=(guint8) ( (coef_0*(f->xfilt[0]+f->xfilt[9]))+(coef_1*(f->xfilt[1]+f->xfilt[8])) + + (coef_2*(f->xfilt[2]+f->xfilt[7])) + (coef_3*(f->xfilt[3]+f->xfilt[6])) + + (coef_4*(f->xfilt[4]+f->xfilt[5]))); + + +f->yfilt[9]=f->yfilt[8]; +f->yfilt[8]=f->yfilt[7]; +f->yfilt[7]=f->yfilt[6]; +f->yfilt[6]=f->yfilt[5]; +f->yfilt[5]=f->yfilt[4]; +f->yfilt[4]=f->yfilt[3]; +f->yfilt[3]=f->yfilt[2]; +f->yfilt[2]=f->yfilt[1]; +f->yfilt[1]=f->yfilt[0]; +f->yfilt[0]=features->y; + +features->y=(guint8) ( (coef_0*(f->yfilt[0]+f->yfilt[9]))+(coef_1*(f->yfilt[1]+f->yfilt[8])) + + (coef_2*(f->yfilt[2]+f->yfilt[7])) + (coef_3*(f->yfilt[3]+f->yfilt[6])) + + (coef_4*(f->yfilt[4]+f->yfilt[5]))); + + +f->mouth_open[9]=f->mouth_open[8]; +f->mouth_open[8]=f->mouth_open[7]; +f->mouth_open[7]=f->mouth_open[6]; +f->mouth_open[6]=f->mouth_open[5]; +f->mouth_open[5]=f->mouth_open[4]; +f->mouth_open[4]=f->mouth_open[3]; +f->mouth_open[3]=f->mouth_open[2]; +f->mouth_open[2]=f->mouth_open[1]; +f->mouth_open[1]=f->mouth_open[0]; +f->mouth_open[0]=features->mouth_open; + +features->mouth_open=(guint8) ( (coef_0*(f->mouth_open[0]+f->mouth_open[9]))+(coef_1*(f->mouth_open[1]+f->mouth_open[8])) + + (coef_2*(f->mouth_open[2]+f->mouth_open[7])) + (coef_3*(f->mouth_open[3]+f->mouth_open[6])) + + (coef_4*(f->mouth_open[4]+f->mouth_open[5]))); + +} diff -r f854402837ba -r ed017b9c532d plugins/crazychat/filter.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/filter.h Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,19 @@ +#ifndef __FILTER_H__ +#define __FILTER_H__ + +struct cc_features; + +typedef struct filter_bank { + float head_size[10]; + float head_z_rot[10]; + float head_y_rot[10]; + float mouth_open[10]; + float xfilt[10]; + float yfilt[10]; +} filter_bank; + +filter_bank* Filter_Initialize (void); +void Filter_Destroy (filter_bank *f); +void filter(struct cc_features *instance, filter_bank *f); + +#endif /* __FILTER_H__ */ diff -r f854402837ba -r ed017b9c532d plugins/crazychat/glm.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/glm.c Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,1971 @@ +/* + glm.c + Nate Robins, 1997 + ndr@pobox.com, http://www.pobox.com/~ndr/ + + Wavefront OBJ model file format reader/writer/manipulator. + + Includes routines for generating smooth normals with + preservation of edges, welding redundant vertices & texture + coordinate generation (spheremap and planar projections) + more. + + */ + + +#include +#include +#include +#include +#include +#include "glm.h" + + +#define T(x) (model->triangles[(x)]) + + +/* _GLMnode: general purpose node + */ +typedef struct _GLMnode { + GLuint index; + GLboolean averaged; + struct _GLMnode* next; +} GLMnode; + + +/* glmMax: returns the maximum of two floats */ +static GLfloat +glmMax(GLfloat a, GLfloat b) +{ + if (b > a) + return b; + return a; +} + +/* glmAbs: returns the absolute value of a float */ +static GLfloat +glmAbs(GLfloat f) +{ + if (f < 0) + return -f; + return f; +} + +/* glmDot: compute the dot product of two vectors + * + * u - array of 3 GLfloats (GLfloat u[3]) + * v - array of 3 GLfloats (GLfloat v[3]) + */ +static GLfloat +glmDot(GLfloat* u, GLfloat* v) +{ + assert(u); assert(v); + + return u[0]*v[0] + u[1]*v[1] + u[2]*v[2]; +} + +/* glmCross: compute the cross product of two vectors + * + * u - array of 3 GLfloats (GLfloat u[3]) + * v - array of 3 GLfloats (GLfloat v[3]) + * n - array of 3 GLfloats (GLfloat n[3]) to return the cross product in + */ +static GLvoid +glmCross(GLfloat* u, GLfloat* v, GLfloat* n) +{ + assert(u); assert(v); assert(n); + + n[0] = u[1]*v[2] - u[2]*v[1]; + n[1] = u[2]*v[0] - u[0]*v[2]; + n[2] = u[0]*v[1] - u[1]*v[0]; +} + +/* glmNormalize: normalize a vector + * + * v - array of 3 GLfloats (GLfloat v[3]) to be normalized + */ +static GLvoid +glmNormalize(GLfloat* v) +{ + GLfloat l; + + assert(v); + + l = (GLfloat)sqrt(v[0]*v[0] + v[1]*v[1] + v[2]*v[2]); + v[0] /= l; + v[1] /= l; + v[2] /= l; +} + +/* glmEqual: compares two vectors and returns GL_TRUE if they are + * equal (within a certain threshold) or GL_FALSE if not. An epsilon + * that works fairly well is 0.000001. + * + * u - array of 3 GLfloats (GLfloat u[3]) + * v - array of 3 GLfloats (GLfloat v[3]) + */ +static GLboolean +glmEqual(GLfloat* u, GLfloat* v, GLfloat epsilon) +{ + if (glmAbs(u[0] - v[0]) < epsilon && + glmAbs(u[1] - v[1]) < epsilon && + glmAbs(u[2] - v[2]) < epsilon) + { + return GL_TRUE; + } + return GL_FALSE; +} + +/* glmWeldVectors: eliminate (weld) vectors that are within an + * epsilon of each other. + * + * vectors - array of GLfloat[3]'s to be welded + * numvectors - number of GLfloat[3]'s in vectors + * epsilon - maximum difference between vectors + * + */ +GLfloat* +glmWeldVectors(GLfloat* vectors, GLuint* numvectors, GLfloat epsilon) +{ + GLfloat* copies; + GLuint copied; + GLuint i, j; + + copies = (GLfloat*)malloc(sizeof(GLfloat) * 3 * (*numvectors + 1)); + memcpy(copies, vectors, (sizeof(GLfloat) * 3 * (*numvectors + 1))); + + copied = 1; + for (i = 1; i <= *numvectors; i++) { + for (j = 1; j <= copied; j++) { + if (glmEqual(&vectors[3 * i], &copies[3 * j], epsilon)) { + goto duplicate; + } + } + + /* must not be any duplicates -- add to the copies array */ + copies[3 * copied + 0] = vectors[3 * i + 0]; + copies[3 * copied + 1] = vectors[3 * i + 1]; + copies[3 * copied + 2] = vectors[3 * i + 2]; + j = copied; /* pass this along for below */ + copied++; + + duplicate: + /* set the first component of this vector to point at the correct + index into the new copies array */ + vectors[3 * i + 0] = (GLfloat)j; + } + + *numvectors = copied-1; + return copies; +} + +/* glmFindGroup: Find a group in the model + */ +GLMgroup* +glmFindGroup(GLMmodel* model, char* name) +{ + GLMgroup* group; + + assert(model); + + group = model->groups; + while(group) { + if (!strcmp(name, group->name)) + break; + group = group->next; + } + + return group; +} + +/* glmAddGroup: Add a group to the model + */ +GLMgroup* +glmAddGroup(GLMmodel* model, char* name) +{ + GLMgroup* group; + + group = glmFindGroup(model, name); + if (!group) { + group = (GLMgroup*)malloc(sizeof(GLMgroup)); + group->name = strdup(name); + group->material = 0; + group->numtriangles = 0; + group->triangles = NULL; + group->next = model->groups; + model->groups = group; + model->numgroups++; + } + + return group; +} + +/* glmFindGroup: Find a material in the model + */ +GLuint +glmFindMaterial(GLMmodel* model, char* name) +{ + GLuint i; + + /* XXX doing a linear search on a string key'd list is pretty lame, + but it works and is fast enough for now. */ + for (i = 0; i < model->nummaterials; i++) { + if (!strcmp(model->materials[i].name, name)) + goto found; + } + + /* didn't find the name, so print a warning and return the default + material (0). */ + //fprintf(stderr, "glmFindMaterial(): can't find material \"%s\".\n", name); + i = 0; + +found: + return i; +} + + +/* glmDirName: return the directory given a path + * + * path - filesystem path + * + * NOTE: the return value should be free'd. + */ +static char* +glmDirName(char* path) +{ + char* dir; + char* s; + + dir = strdup(path); + + s = strrchr(dir, '/'); + if (s) + s[1] = '\0'; + else + dir[0] = '\0'; + + return dir; +} + + +void glmSetMat(GLMmat_str* mats, GLint index){ + GLMmaterial* material; + assert(!(index<0 || index >=mats->num_materials)); + material = &mats->materials[index]; + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, material->ambient); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, material->diffuse); + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, material->specular); + glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, material->shininess); +} + + +GLMmat_str* glmMTL(char* name){ + FILE* file; + char* dir; + char* filename; + char buf[128]; + GLuint nummaterials, i; + GLMmat_str* ret; + + file = fopen(name, "r"); + if (!file) { + fprintf(stderr, "glmReadMTL() failed: can't open material file \"%s\".\n", + name); + exit(1); + } + + /* count the number of materials in the file */ + nummaterials = 1; + while(fscanf(file, "%s", buf) != EOF) { + switch(buf[0]) { + case '#': /* comment */ + /* eat up rest of line */ + fgets(buf, sizeof(buf), file); + break; + case 'n': /* newmtl */ + fgets(buf, sizeof(buf), file); + nummaterials++; + sscanf(buf, "%s %s", buf, buf); + break; + default: + /* eat up rest of line */ + fgets(buf, sizeof(buf), file); + break; + } + } + + rewind(file); + + ret = (GLMmat_str*)malloc(sizeof(GLMmat_str)); + ret->materials = (GLMmaterial*)malloc(sizeof(GLMmaterial) * nummaterials); + ret->num_materials = nummaterials; + + /* set the default material */ + for (i = 0; i < nummaterials; i++) { + ret->materials[i].name = NULL; + ret->materials[i].shininess = 65.0; + ret->materials[i].diffuse[0] = 0.8; + ret->materials[i].diffuse[1] = 0.1; + ret->materials[i].diffuse[2] = 0.1; + ret->materials[i].diffuse[3] = 1.0; + ret->materials[i].ambient[0] = 0.2; + ret->materials[i].ambient[1] = 0.2; + ret->materials[i].ambient[2] = 0.2; + ret->materials[i].ambient[3] = 1.0; + ret->materials[i].specular[0] = 0.0; + ret->materials[i].specular[1] = 0.0; + ret->materials[i].specular[2] = 0.0; + ret->materials[i].specular[3] = 1.0; + } + ret->materials[0].name = strdup("default"); + + /* now, read in the data */ + nummaterials = 0; + while(fscanf(file, "%s", buf) != EOF) { + switch(buf[0]) { + case '#': /* comment */ + /* eat up rest of line */ + fgets(buf, sizeof(buf), file); + break; + case 'n': /* newmtl */ + fgets(buf, sizeof(buf), file); + sscanf(buf, "%s %s", buf, buf); + nummaterials++; + ret->materials[nummaterials].name = strdup(buf); + break; + case 'N': + fscanf(file, "%f", &ret->materials[nummaterials].shininess); + /* wavefront shininess is from [0, 1000], so scale for OpenGL */ + ret->materials[nummaterials].shininess /= 1000.0; + ret->materials[nummaterials].shininess *= 128.0; + break; + case 'K': + switch(buf[1]) { + case 'd': + fscanf(file, "%f %f %f", + &ret->materials[nummaterials].diffuse[0], + &ret->materials[nummaterials].diffuse[1], + &ret->materials[nummaterials].diffuse[2]); + break; + case 's': + fscanf(file, "%f %f %f", + &ret->materials[nummaterials].specular[0], + &ret->materials[nummaterials].specular[1], + &ret->materials[nummaterials].specular[2]); + break; + case 'a': + fscanf(file, "%f %f %f", + &ret->materials[nummaterials].ambient[0], + &ret->materials[nummaterials].ambient[1], + &ret->materials[nummaterials].ambient[2]); + break; + default: + /* eat up rest of line */ + fgets(buf, sizeof(buf), file); + break; + } + break; + default: + /* eat up rest of line */ + fgets(buf, sizeof(buf), file); + break; + } + } + return ret; +} + +//^^^^charlie^^^^^ + +/* glmReadMTL: read a wavefront material library file + * + * model - properly initialized GLMmodel structure + * name - name of the material library + */ +static GLvoid +glmReadMTL(GLMmodel* model, char* name) +{ + FILE* file; + char* dir; + char* filename; + char buf[128]; + GLuint nummaterials, i; + + dir = glmDirName(model->pathname); + filename = (char*)malloc(sizeof(char) * (strlen(dir) + strlen(name) + 1)); + strcpy(filename, dir); + strcat(filename, name); + free(dir); + + file = fopen(filename, "r"); + if (!file) { + fprintf(stderr, "glmReadMTL() failed: can't open material file \"%s\".\n", + filename); + exit(1); + } + free(filename); + + /* count the number of materials in the file */ + nummaterials = 1; + while(fscanf(file, "%s", buf) != EOF) { + switch(buf[0]) { + case '#': /* comment */ + /* eat up rest of line */ + fgets(buf, sizeof(buf), file); + break; + case 'n': /* newmtl */ + fgets(buf, sizeof(buf), file); + nummaterials++; + sscanf(buf, "%s %s", buf, buf); + break; + default: + /* eat up rest of line */ + fgets(buf, sizeof(buf), file); + break; + } + } + + rewind(file); + model->materials = (GLMmaterial*)malloc(sizeof(GLMmaterial) * nummaterials); + model->nummaterials = nummaterials; + + /* set the default material */ + for (i = 0; i < nummaterials; i++) { + model->materials[i].name = NULL; + model->materials[i].shininess = 65.0; + model->materials[i].diffuse[0] = 0.8; + model->materials[i].diffuse[1] = 0.1; + model->materials[i].diffuse[2] = 0.1; + model->materials[i].diffuse[3] = 1.0; + model->materials[i].ambient[0] = 0.2; + model->materials[i].ambient[1] = 0.2; + model->materials[i].ambient[2] = 0.2; + model->materials[i].ambient[3] = 1.0; + model->materials[i].specular[0] = 0.0; + model->materials[i].specular[1] = 0.0; + model->materials[i].specular[2] = 0.0; + model->materials[i].specular[3] = 1.0; + } + model->materials[0].name = strdup("default"); + + /* now, read in the data */ + nummaterials = 0; + while(fscanf(file, "%s", buf) != EOF) { + switch(buf[0]) { + case '#': /* comment */ + /* eat up rest of line */ + fgets(buf, sizeof(buf), file); + break; + case 'n': /* newmtl */ + fgets(buf, sizeof(buf), file); + sscanf(buf, "%s %s", buf, buf); + nummaterials++; + model->materials[nummaterials].name = strdup(buf); + break; + case 'N': + fscanf(file, "%f", &model->materials[nummaterials].shininess); + /* wavefront shininess is from [0, 1000], so scale for OpenGL */ + model->materials[nummaterials].shininess /= 1000.0; + model->materials[nummaterials].shininess *= 128.0; + break; + case 'K': + switch(buf[1]) { + case 'd': + fscanf(file, "%f %f %f", + &model->materials[nummaterials].diffuse[0], + &model->materials[nummaterials].diffuse[1], + &model->materials[nummaterials].diffuse[2]); + break; + case 's': + fscanf(file, "%f %f %f", + &model->materials[nummaterials].specular[0], + &model->materials[nummaterials].specular[1], + &model->materials[nummaterials].specular[2]); + break; + case 'a': + fscanf(file, "%f %f %f", + &model->materials[nummaterials].ambient[0], + &model->materials[nummaterials].ambient[1], + &model->materials[nummaterials].ambient[2]); + break; + default: + /* eat up rest of line */ + fgets(buf, sizeof(buf), file); + break; + } + break; + default: + /* eat up rest of line */ + fgets(buf, sizeof(buf), file); + break; + } + } +} + +/* glmWriteMTL: write a wavefront material library file + * + * model - properly initialized GLMmodel structure + * modelpath - pathname of the model being written + * mtllibname - name of the material library to be written + */ +static GLvoid +glmWriteMTL(GLMmodel* model, char* modelpath, char* mtllibname) +{ + FILE* file; + char* dir; + char* filename; + GLMmaterial* material; + GLuint i; + + dir = glmDirName(modelpath); + filename = (char*)malloc(sizeof(char) * (strlen(dir)+strlen(mtllibname))); + strcpy(filename, dir); + strcat(filename, mtllibname); + free(dir); + + /* open the file */ + file = fopen(filename, "w"); + if (!file) { + fprintf(stderr, "glmWriteMTL() failed: can't open file \"%s\".\n", + filename); + exit(1); + } + free(filename); + + /* spit out a header */ + fprintf(file, "# \n"); + fprintf(file, "# Wavefront MTL generated by GLM library\n"); + fprintf(file, "# \n"); + fprintf(file, "# GLM library\n"); + fprintf(file, "# Nate Robins\n"); + fprintf(file, "# ndr@pobox.com\n"); + fprintf(file, "# http://www.pobox.com/~ndr\n"); + fprintf(file, "# \n\n"); + + for (i = 0; i < model->nummaterials; i++) { + material = &model->materials[i]; + fprintf(file, "newmtl %s\n", material->name); + fprintf(file, "Ka %f %f %f\n", + material->ambient[0], material->ambient[1], material->ambient[2]); + fprintf(file, "Kd %f %f %f\n", + material->diffuse[0], material->diffuse[1], material->diffuse[2]); + fprintf(file, "Ks %f %f %f\n", + material->specular[0],material->specular[1],material->specular[2]); + fprintf(file, "Ns %f\n", material->shininess / 128.0 * 1000.0); + fprintf(file, "\n"); + } +} + + +/* glmFirstPass: first pass at a Wavefront OBJ file that gets all the + * statistics of the model (such as #vertices, #normals, etc) + * + * model - properly initialized GLMmodel structure + * file - (fopen'd) file descriptor + */ +static GLvoid +glmFirstPass(GLMmodel* model, FILE* file) +{ + GLuint numvertices; /* number of vertices in model */ + GLuint numnormals; /* number of normals in model */ + GLuint numtexcoords; /* number of texcoords in model */ + GLuint numtriangles; /* number of triangles in model */ + GLMgroup* group; /* current group */ + unsigned v, n, t; + char buf[128]; + + /* make a default group */ + group = glmAddGroup(model, "default"); + + numvertices = numnormals = numtexcoords = numtriangles = 0; + while(fscanf(file, "%s", buf) != EOF) { + switch(buf[0]) { + case '#': /* comment */ + /* eat up rest of line */ + fgets(buf, sizeof(buf), file); + break; + case 'v': /* v, vn, vt */ + switch(buf[1]) { + case '\0': /* vertex */ + /* eat up rest of line */ + fgets(buf, sizeof(buf), file); + numvertices++; + break; + case 'n': /* normal */ + /* eat up rest of line */ + fgets(buf, sizeof(buf), file); + numnormals++; + break; + case 't': /* texcoord */ + /* eat up rest of line */ + fgets(buf, sizeof(buf), file); + numtexcoords++; + break; + default: + printf("glmFirstPass(): Unknown token \"%s\".\n", buf); + exit(1); + break; + } + break; + case 'm': + fgets(buf, sizeof(buf), file); + sscanf(buf, "%s %s", buf, buf); + model->mtllibname = strdup(buf); + //glmReadMTL(model, buf); + break; + case 'u': + /* eat up rest of line */ + fgets(buf, sizeof(buf), file); + break; + case 'g': /* group */ + /* eat up rest of line */ + fgets(buf, sizeof(buf), file); +#if SINGLE_STRING_GROUP_NAMES + sscanf(buf, "%s", buf); +#else + buf[strlen(buf)-1] = '\0'; /* nuke '\n' */ +#endif + group = glmAddGroup(model, buf); + break; + case 'f': /* face */ + v = n = t = 0; + fscanf(file, "%s", buf); + /* can be one of %d, %d//%d, %d/%d, %d/%d/%d %d//%d */ + if (strstr(buf, "//")) { + /* v//n */ + sscanf(buf, "%d//%d", &v, &n); + fscanf(file, "%d//%d", &v, &n); + fscanf(file, "%d//%d", &v, &n); + numtriangles++; + group->numtriangles++; + while(fscanf(file, "%d//%d", &v, &n) > 0) { + numtriangles++; + group->numtriangles++; + } + } else if (sscanf(buf, "%d/%d/%d", &v, &t, &n) == 3) { + /* v/t/n */ + fscanf(file, "%d/%d/%d", &v, &t, &n); + fscanf(file, "%d/%d/%d", &v, &t, &n); + numtriangles++; + group->numtriangles++; + while(fscanf(file, "%d/%d/%d", &v, &t, &n) > 0) { + numtriangles++; + group->numtriangles++; + } + } else if (sscanf(buf, "%d/%d", &v, &t) == 2) { + /* v/t */ + fscanf(file, "%d/%d", &v, &t); + fscanf(file, "%d/%d", &v, &t); + numtriangles++; + group->numtriangles++; + while(fscanf(file, "%d/%d", &v, &t) > 0) { + numtriangles++; + group->numtriangles++; + } + } else { + /* v */ + fscanf(file, "%d", &v); + fscanf(file, "%d", &v); + numtriangles++; + group->numtriangles++; + while(fscanf(file, "%d", &v) > 0) { + numtriangles++; + group->numtriangles++; + } + } + break; + + default: + /* eat up rest of line */ + fgets(buf, sizeof(buf), file); + break; + } + } + + /* set the stats in the model structure */ + model->numvertices = numvertices; + model->numnormals = numnormals; + model->numtexcoords = numtexcoords; + model->numtriangles = numtriangles; + + /* allocate memory for the triangles in each group */ + group = model->groups; + while(group) { + group->triangles = (GLuint*)malloc(sizeof(GLuint) * group->numtriangles); + group->numtriangles = 0; + group = group->next; + } +} + +/* glmSecondPass: second pass at a Wavefront OBJ file that gets all + * the data. + * + * model - properly initialized GLMmodel structure + * file - (fopen'd) file descriptor + */ +static GLvoid +glmSecondPass(GLMmodel* model, FILE* file) +{ + GLuint numvertices; /* number of vertices in model */ + GLuint numnormals; /* number of normals in model */ + GLuint numtexcoords; /* number of texcoords in model */ + GLuint numtriangles; /* number of triangles in model */ + GLfloat* vertices; /* array of vertices */ + GLfloat* normals; /* array of normals */ + GLfloat* texcoords; /* array of texture coordinates */ + GLMgroup* group; /* current group pointer */ + GLuint material; /* current material */ + GLuint v, n, t; + char buf[128]; + + /* set the pointer shortcuts */ + vertices = model->vertices; + normals = model->normals; + texcoords = model->texcoords; + group = model->groups; + + /* on the second pass through the file, read all the data into the + allocated arrays */ + numvertices = numnormals = numtexcoords = 1; + numtriangles = 0; + material = 0; + while(fscanf(file, "%s", buf) != EOF) { + switch(buf[0]) { + case '#': /* comment */ + /* eat up rest of line */ + fgets(buf, sizeof(buf), file); + break; + case 'v': /* v, vn, vt */ + switch(buf[1]) { + case '\0': /* vertex */ + fscanf(file, "%f %f %f", + &vertices[3 * numvertices + 0], + &vertices[3 * numvertices + 1], + &vertices[3 * numvertices + 2]); + numvertices++; + break; + case 'n': /* normal */ + fscanf(file, "%f %f %f", + &normals[3 * numnormals + 0], + &normals[3 * numnormals + 1], + &normals[3 * numnormals + 2]); + numnormals++; + break; + case 't': /* texcoord */ + fscanf(file, "%f %f", + &texcoords[2 * numtexcoords + 0], + &texcoords[2 * numtexcoords + 1]); + numtexcoords++; + break; + } + break; + case 'u': + fgets(buf, sizeof(buf), file); + sscanf(buf, "%s %s", buf, buf); + group->material = material = glmFindMaterial(model, buf); + break; + case 'g': /* group */ + /* eat up rest of line */ + fgets(buf, sizeof(buf), file); +#if SINGLE_STRING_GROUP_NAMES + sscanf(buf, "%s", buf); +#else + buf[strlen(buf)-1] = '\0'; /* nuke '\n' */ +#endif + group = glmFindGroup(model, buf); + group->material = material; + break; + case 'f': /* face */ + v = n = t = 0; + fscanf(file, "%s", buf); + /* can be one of %d, %d//%d, %d/%d, %d/%d/%d %d//%d */ + if (strstr(buf, "//")) { + /* v//n */ + sscanf(buf, "%d//%d", &v, &n); + T(numtriangles).vindices[0] = v; + T(numtriangles).nindices[0] = n; + fscanf(file, "%d//%d", &v, &n); + T(numtriangles).vindices[1] = v; + T(numtriangles).nindices[1] = n; + fscanf(file, "%d//%d", &v, &n); + T(numtriangles).vindices[2] = v; + T(numtriangles).nindices[2] = n; + group->triangles[group->numtriangles++] = numtriangles; + numtriangles++; + while(fscanf(file, "%d//%d", &v, &n) > 0) { + T(numtriangles).vindices[0] = T(numtriangles-1).vindices[0]; + T(numtriangles).nindices[0] = T(numtriangles-1).nindices[0]; + T(numtriangles).vindices[1] = T(numtriangles-1).vindices[2]; + T(numtriangles).nindices[1] = T(numtriangles-1).nindices[2]; + T(numtriangles).vindices[2] = v; + T(numtriangles).nindices[2] = n; + group->triangles[group->numtriangles++] = numtriangles; + numtriangles++; + } + } else if (sscanf(buf, "%d/%d/%d", &v, &t, &n) == 3) { + /* v/t/n */ + T(numtriangles).vindices[0] = v; + T(numtriangles).tindices[0] = t; + T(numtriangles).nindices[0] = n; + fscanf(file, "%d/%d/%d", &v, &t, &n); + T(numtriangles).vindices[1] = v; + T(numtriangles).tindices[1] = t; + T(numtriangles).nindices[1] = n; + fscanf(file, "%d/%d/%d", &v, &t, &n); + T(numtriangles).vindices[2] = v; + T(numtriangles).tindices[2] = t; + T(numtriangles).nindices[2] = n; + group->triangles[group->numtriangles++] = numtriangles; + numtriangles++; + while(fscanf(file, "%d/%d/%d", &v, &t, &n) > 0) { + T(numtriangles).vindices[0] = T(numtriangles-1).vindices[0]; + T(numtriangles).tindices[0] = T(numtriangles-1).tindices[0]; + T(numtriangles).nindices[0] = T(numtriangles-1).nindices[0]; + T(numtriangles).vindices[1] = T(numtriangles-1).vindices[2]; + T(numtriangles).tindices[1] = T(numtriangles-1).tindices[2]; + T(numtriangles).nindices[1] = T(numtriangles-1).nindices[2]; + T(numtriangles).vindices[2] = v; + T(numtriangles).tindices[2] = t; + T(numtriangles).nindices[2] = n; + group->triangles[group->numtriangles++] = numtriangles; + numtriangles++; + } + } else if (sscanf(buf, "%d/%d", &v, &t) == 2) { + /* v/t */ + T(numtriangles).vindices[0] = v; + T(numtriangles).tindices[0] = t; + fscanf(file, "%d/%d", &v, &t); + T(numtriangles).vindices[1] = v; + T(numtriangles).tindices[1] = t; + fscanf(file, "%d/%d", &v, &t); + T(numtriangles).vindices[2] = v; + T(numtriangles).tindices[2] = t; + group->triangles[group->numtriangles++] = numtriangles; + numtriangles++; + while(fscanf(file, "%d/%d", &v, &t) > 0) { + T(numtriangles).vindices[0] = T(numtriangles-1).vindices[0]; + T(numtriangles).tindices[0] = T(numtriangles-1).tindices[0]; + T(numtriangles).vindices[1] = T(numtriangles-1).vindices[2]; + T(numtriangles).tindices[1] = T(numtriangles-1).tindices[2]; + T(numtriangles).vindices[2] = v; + T(numtriangles).tindices[2] = t; + group->triangles[group->numtriangles++] = numtriangles; + numtriangles++; + } + } else { + /* v */ + sscanf(buf, "%d", &v); + T(numtriangles).vindices[0] = v; + fscanf(file, "%d", &v); + T(numtriangles).vindices[1] = v; + fscanf(file, "%d", &v); + T(numtriangles).vindices[2] = v; + group->triangles[group->numtriangles++] = numtriangles; + numtriangles++; + while(fscanf(file, "%d", &v) > 0) { + T(numtriangles).vindices[0] = T(numtriangles-1).vindices[0]; + T(numtriangles).vindices[1] = T(numtriangles-1).vindices[2]; + T(numtriangles).vindices[2] = v; + group->triangles[group->numtriangles++] = numtriangles; + numtriangles++; + } + } + break; + + default: + /* eat up rest of line */ + fgets(buf, sizeof(buf), file); + break; + } + } + +#if 0 + /* announce the memory requirements */ + printf(" Memory: %d bytes\n", + numvertices * 3*sizeof(GLfloat) + + numnormals * 3*sizeof(GLfloat) * (numnormals ? 1 : 0) + + numtexcoords * 3*sizeof(GLfloat) * (numtexcoords ? 1 : 0) + + numtriangles * sizeof(GLMtriangle)); +#endif +} + + +/* public functions */ + + +/* glmUnitize: "unitize" a model by translating it to the origin and + * scaling it to fit in a unit cube around the origin. Modelurns the + * scalefactor used. + * + * model - properly initialized GLMmodel structure + */ +GLfloat +glmUnitize(GLMmodel* model) +{ + GLuint i; + GLfloat maxx, minx, maxy, miny, maxz, minz; + GLfloat cx, cy, cz, w, h, d; + GLfloat scale; + + assert(model); + assert(model->vertices); + + /* get the max/mins */ + maxx = minx = model->vertices[3 + 0]; + maxy = miny = model->vertices[3 + 1]; + maxz = minz = model->vertices[3 + 2]; + for (i = 1; i <= model->numvertices; i++) { + if (maxx < model->vertices[3 * i + 0]) + maxx = model->vertices[3 * i + 0]; + if (minx > model->vertices[3 * i + 0]) + minx = model->vertices[3 * i + 0]; + + if (maxy < model->vertices[3 * i + 1]) + maxy = model->vertices[3 * i + 1]; + if (miny > model->vertices[3 * i + 1]) + miny = model->vertices[3 * i + 1]; + + if (maxz < model->vertices[3 * i + 2]) + maxz = model->vertices[3 * i + 2]; + if (minz > model->vertices[3 * i + 2]) + minz = model->vertices[3 * i + 2]; + } + + /* calculate model width, height, and depth */ + w = glmAbs(maxx) + glmAbs(minx); + h = glmAbs(maxy) + glmAbs(miny); + d = glmAbs(maxz) + glmAbs(minz); + + /* calculate center of the model */ + cx = (maxx + minx) / 2.0; + cy = (maxy + miny) / 2.0; + cz = (maxz + minz) / 2.0; + + /* calculate unitizing scale factor */ + scale = 2.0 / glmMax(glmMax(w, h), d); + + /* translate around center then scale */ + for (i = 1; i <= model->numvertices; i++) { + model->vertices[3 * i + 0] -= cx; + model->vertices[3 * i + 1] -= cy; + model->vertices[3 * i + 2] -= cz; + //charlie, i took this out, i just want to center +/* + model->vertices[3 * i + 0] *= scale; + model->vertices[3 * i + 1] *= scale; + model->vertices[3 * i + 2] *= scale; +*/ + } + + return scale; +} + +/* glmDimensions: Calculates the dimensions (width, height, depth) of + * a model. + * + * model - initialized GLMmodel structure + * dimensions - array of 3 GLfloats (GLfloat dimensions[3]) + */ +GLvoid +glmDimensions(GLMmodel* model, GLfloat* dimensions) +{ + GLuint i; + GLfloat maxx, minx, maxy, miny, maxz, minz; + + assert(model); + assert(model->vertices); + assert(dimensions); + + /* get the max/mins */ + maxx = minx = model->vertices[3 + 0]; + maxy = miny = model->vertices[3 + 1]; + maxz = minz = model->vertices[3 + 2]; + for (i = 1; i <= model->numvertices; i++) { + if (maxx < model->vertices[3 * i + 0]) + maxx = model->vertices[3 * i + 0]; + if (minx > model->vertices[3 * i + 0]) + minx = model->vertices[3 * i + 0]; + + if (maxy < model->vertices[3 * i + 1]) + maxy = model->vertices[3 * i + 1]; + if (miny > model->vertices[3 * i + 1]) + miny = model->vertices[3 * i + 1]; + + if (maxz < model->vertices[3 * i + 2]) + maxz = model->vertices[3 * i + 2]; + if (minz > model->vertices[3 * i + 2]) + minz = model->vertices[3 * i + 2]; + } + + /* calculate model width, height, and depth */ + dimensions[0] = glmAbs(maxx) + glmAbs(minx); + dimensions[1] = glmAbs(maxy) + glmAbs(miny); + dimensions[2] = glmAbs(maxz) + glmAbs(minz); +} + +/* glmScale: Scales a model by a given amount. + * + * model - properly initialized GLMmodel structure + * scale - scalefactor (0.5 = half as large, 2.0 = twice as large) + */ +GLvoid +glmScale(GLMmodel* model, GLfloat scale) +{ + GLuint i; + + for (i = 1; i <= model->numvertices; i++) { + model->vertices[3 * i + 0] *= scale; + model->vertices[3 * i + 1] *= scale; + model->vertices[3 * i + 2] *= scale; + } +} + +/* glmReverseWinding: Reverse the polygon winding for all polygons in + * this model. Default winding is counter-clockwise. Also changes + * the direction of the normals. + * + * model - properly initialized GLMmodel structure + */ +GLvoid +glmReverseWinding(GLMmodel* model) +{ + GLuint i, swap; + + assert(model); + + for (i = 0; i < model->numtriangles; i++) { + swap = T(i).vindices[0]; + T(i).vindices[0] = T(i).vindices[2]; + T(i).vindices[2] = swap; + + if (model->numnormals) { + swap = T(i).nindices[0]; + T(i).nindices[0] = T(i).nindices[2]; + T(i).nindices[2] = swap; + } + + if (model->numtexcoords) { + swap = T(i).tindices[0]; + T(i).tindices[0] = T(i).tindices[2]; + T(i).tindices[2] = swap; + } + } + + /* reverse facet normals */ + for (i = 1; i <= model->numfacetnorms; i++) { + model->facetnorms[3 * i + 0] = -model->facetnorms[3 * i + 0]; + model->facetnorms[3 * i + 1] = -model->facetnorms[3 * i + 1]; + model->facetnorms[3 * i + 2] = -model->facetnorms[3 * i + 2]; + } + + /* reverse vertex normals */ + for (i = 1; i <= model->numnormals; i++) { + model->normals[3 * i + 0] = -model->normals[3 * i + 0]; + model->normals[3 * i + 1] = -model->normals[3 * i + 1]; + model->normals[3 * i + 2] = -model->normals[3 * i + 2]; + } +} + +/* glmFacetNormals: Generates facet normals for a model (by taking the + * cross product of the two vectors derived from the sides of each + * triangle). Assumes a counter-clockwise winding. + * + * model - initialized GLMmodel structure + */ +GLvoid +glmFacetNormals(GLMmodel* model) +{ + GLuint i; + GLfloat u[3]; + GLfloat v[3]; + + assert(model); + assert(model->vertices); + + /* clobber any old facetnormals */ + if (model->facetnorms) + free(model->facetnorms); + + /* allocate memory for the new facet normals */ + model->numfacetnorms = model->numtriangles; + model->facetnorms = (GLfloat*)malloc(sizeof(GLfloat) * + 3 * (model->numfacetnorms + 1)); + + for (i = 0; i < model->numtriangles; i++) { + model->triangles[i].findex = i+1; + + u[0] = model->vertices[3 * T(i).vindices[1] + 0] - + model->vertices[3 * T(i).vindices[0] + 0]; + u[1] = model->vertices[3 * T(i).vindices[1] + 1] - + model->vertices[3 * T(i).vindices[0] + 1]; + u[2] = model->vertices[3 * T(i).vindices[1] + 2] - + model->vertices[3 * T(i).vindices[0] + 2]; + + v[0] = model->vertices[3 * T(i).vindices[2] + 0] - + model->vertices[3 * T(i).vindices[0] + 0]; + v[1] = model->vertices[3 * T(i).vindices[2] + 1] - + model->vertices[3 * T(i).vindices[0] + 1]; + v[2] = model->vertices[3 * T(i).vindices[2] + 2] - + model->vertices[3 * T(i).vindices[0] + 2]; + + glmCross(u, v, &model->facetnorms[3 * (i+1)]); + glmNormalize(&model->facetnorms[3 * (i+1)]); + } +} + +/* glmVertexNormals: Generates smooth vertex normals for a model. + * First builds a list of all the triangles each vertex is in. Then + * loops through each vertex in the the list averaging all the facet + * normals of the triangles each vertex is in. Finally, sets the + * normal index in the triangle for the vertex to the generated smooth + * normal. If the dot product of a facet normal and the facet normal + * associated with the first triangle in the list of triangles the + * current vertex is in is greater than the cosine of the angle + * parameter to the function, that facet normal is not added into the + * average normal calculation and the corresponding vertex is given + * the facet normal. This tends to preserve hard edges. The angle to + * use depends on the model, but 90 degrees is usually a good start. + * + * model - initialized GLMmodel structure + * angle - maximum angle (in degrees) to smooth across + */ +GLvoid +glmVertexNormals(GLMmodel* model, GLfloat angle) +{ + GLMnode* node; + GLMnode* tail; + GLMnode** members; + GLfloat* normals; + GLuint numnormals; + GLfloat average[3]; + GLfloat dot, cos_angle; + GLuint i, avg; + + assert(model); + assert(model->facetnorms); + + /* calculate the cosine of the angle (in degrees) */ + cos_angle = cos(angle * M_PI / 180.0); + + /* nuke any previous normals */ + if (model->normals) + free(model->normals); + + /* allocate space for new normals */ + model->numnormals = model->numtriangles * 3; /* 3 normals per triangle */ + model->normals = (GLfloat*)malloc(sizeof(GLfloat)* 3* (model->numnormals+1)); + + /* allocate a structure that will hold a linked list of triangle + indices for each vertex */ + members = (GLMnode**)malloc(sizeof(GLMnode*) * (model->numvertices + 1)); + for (i = 1; i <= model->numvertices; i++) + members[i] = NULL; + + /* for every triangle, create a node for each vertex in it */ + for (i = 0; i < model->numtriangles; i++) { + node = (GLMnode*)malloc(sizeof(GLMnode)); + node->index = i; + node->next = members[T(i).vindices[0]]; + members[T(i).vindices[0]] = node; + + node = (GLMnode*)malloc(sizeof(GLMnode)); + node->index = i; + node->next = members[T(i).vindices[1]]; + members[T(i).vindices[1]] = node; + + node = (GLMnode*)malloc(sizeof(GLMnode)); + node->index = i; + node->next = members[T(i).vindices[2]]; + members[T(i).vindices[2]] = node; + } + + /* calculate the average normal for each vertex */ + numnormals = 1; + for (i = 1; i <= model->numvertices; i++) { + /* calculate an average normal for this vertex by averaging the + facet normal of every triangle this vertex is in */ + node = members[i]; + if (!node) + fprintf(stderr, "glmVertexNormals(): vertex w/o a triangle\n"); + average[0] = 0.0; average[1] = 0.0; average[2] = 0.0; + avg = 0; + while (node) { + /* only average if the dot product of the angle between the two + facet normals is greater than the cosine of the threshold + angle -- or, said another way, the angle between the two + facet normals is less than (or equal to) the threshold angle */ + dot = glmDot(&model->facetnorms[3 * T(node->index).findex], + &model->facetnorms[3 * T(members[i]->index).findex]); + if (dot > cos_angle) { + node->averaged = GL_TRUE; + average[0] += model->facetnorms[3 * T(node->index).findex + 0]; + average[1] += model->facetnorms[3 * T(node->index).findex + 1]; + average[2] += model->facetnorms[3 * T(node->index).findex + 2]; + avg = 1; /* we averaged at least one normal! */ + } else { + node->averaged = GL_FALSE; + } + node = node->next; + } + + if (avg) { + /* normalize the averaged normal */ + glmNormalize(average); + + /* add the normal to the vertex normals list */ + model->normals[3 * numnormals + 0] = average[0]; + model->normals[3 * numnormals + 1] = average[1]; + model->normals[3 * numnormals + 2] = average[2]; + avg = numnormals; + numnormals++; + } + + /* set the normal of this vertex in each triangle it is in */ + node = members[i]; + while (node) { + if (node->averaged) { + /* if this node was averaged, use the average normal */ + if (T(node->index).vindices[0] == i) + T(node->index).nindices[0] = avg; + else if (T(node->index).vindices[1] == i) + T(node->index).nindices[1] = avg; + else if (T(node->index).vindices[2] == i) + T(node->index).nindices[2] = avg; + } else { + /* if this node wasn't averaged, use the facet normal */ + model->normals[3 * numnormals + 0] = + model->facetnorms[3 * T(node->index).findex + 0]; + model->normals[3 * numnormals + 1] = + model->facetnorms[3 * T(node->index).findex + 1]; + model->normals[3 * numnormals + 2] = + model->facetnorms[3 * T(node->index).findex + 2]; + if (T(node->index).vindices[0] == i) + T(node->index).nindices[0] = numnormals; + else if (T(node->index).vindices[1] == i) + T(node->index).nindices[1] = numnormals; + else if (T(node->index).vindices[2] == i) + T(node->index).nindices[2] = numnormals; + numnormals++; + } + node = node->next; + } + } + + model->numnormals = numnormals - 1; + + /* free the member information */ + for (i = 1; i <= model->numvertices; i++) { + node = members[i]; + while (node) { + tail = node; + node = node->next; + free(tail); + } + } + free(members); + + /* pack the normals array (we previously allocated the maximum + number of normals that could possibly be created (numtriangles * + 3), so get rid of some of them (usually alot unless none of the + facet normals were averaged)) */ + normals = model->normals; + model->normals = (GLfloat*)malloc(sizeof(GLfloat)* 3* (model->numnormals+1)); + for (i = 1; i <= model->numnormals; i++) { + model->normals[3 * i + 0] = normals[3 * i + 0]; + model->normals[3 * i + 1] = normals[3 * i + 1]; + model->normals[3 * i + 2] = normals[3 * i + 2]; + } + free(normals); +} + + +/* glmLinearTexture: Generates texture coordinates according to a + * linear projection of the texture map. It generates these by + * linearly mapping the vertices onto a square. + * + * model - pointer to initialized GLMmodel structure + */ +GLvoid +glmLinearTexture(GLMmodel* model) +{ + GLMgroup *group; + GLfloat dimensions[3]; + GLfloat x, y, scalefactor; + GLuint i; + + assert(model); + + if (model->texcoords) + free(model->texcoords); + model->numtexcoords = model->numvertices; + model->texcoords=(GLfloat*)malloc(sizeof(GLfloat)*2*(model->numtexcoords+1)); + + glmDimensions(model, dimensions); + scalefactor = 2.0 / + glmAbs(glmMax(glmMax(dimensions[0], dimensions[1]), dimensions[2])); + + /* do the calculations */ + for(i = 1; i <= model->numvertices; i++) { + x = model->vertices[3 * i + 0] * scalefactor; + y = model->vertices[3 * i + 2] * scalefactor; + model->texcoords[2 * i + 0] = (x + 1.0) / 2.0; + model->texcoords[2 * i + 1] = (y + 1.0) / 2.0; + } + + /* go through and put texture coordinate indices in all the triangles */ + group = model->groups; + while(group) { + for(i = 0; i < group->numtriangles; i++) { + T(group->triangles[i]).tindices[0] = T(group->triangles[i]).vindices[0]; + T(group->triangles[i]).tindices[1] = T(group->triangles[i]).vindices[1]; + T(group->triangles[i]).tindices[2] = T(group->triangles[i]).vindices[2]; + } + group = group->next; + } + +#if 0 + printf("glmLinearTexture(): generated %d linear texture coordinates\n", + model->numtexcoords); +#endif +} + +/* glmSpheremapTexture: Generates texture coordinates according to a + * spherical projection of the texture map. Sometimes referred to as + * spheremap, or reflection map texture coordinates. It generates + * these by using the normal to calculate where that vertex would map + * onto a sphere. Since it is impossible to map something flat + * perfectly onto something spherical, there is distortion at the + * poles. This particular implementation causes the poles along the X + * axis to be distorted. + * + * model - pointer to initialized GLMmodel structure + */ +GLvoid +glmSpheremapTexture(GLMmodel* model) +{ + GLMgroup* group; + GLfloat theta, phi, rho, x, y, z, r; + GLuint i; + + assert(model); + assert(model->normals); + + if (model->texcoords) + free(model->texcoords); + model->numtexcoords = model->numnormals; + model->texcoords=(GLfloat*)malloc(sizeof(GLfloat)*2*(model->numtexcoords+1)); + + for (i = 1; i <= model->numnormals; i++) { + z = model->normals[3 * i + 0]; /* re-arrange for pole distortion */ + y = model->normals[3 * i + 1]; + x = model->normals[3 * i + 2]; + r = sqrt((x * x) + (y * y)); + rho = sqrt((r * r) + (z * z)); + + if(r == 0.0) { + theta = 0.0; + phi = 0.0; + } else { + if(z == 0.0) + phi = 3.14159265 / 2.0; + else + phi = acos(z / rho); + + if(y == 0.0) + theta = 3.141592365 / 2.0; + else + theta = asin(y / r) + (3.14159265 / 2.0); + } + + model->texcoords[2 * i + 0] = theta / 3.14159265; + model->texcoords[2 * i + 1] = phi / 3.14159265; + } + + /* go through and put texcoord indices in all the triangles */ + group = model->groups; + while(group) { + for (i = 0; i < group->numtriangles; i++) { + T(group->triangles[i]).tindices[0] = T(group->triangles[i]).nindices[0]; + T(group->triangles[i]).tindices[1] = T(group->triangles[i]).nindices[1]; + T(group->triangles[i]).tindices[2] = T(group->triangles[i]).nindices[2]; + } + group = group->next; + } +} + +/* glmDelete: Deletes a GLMmodel structure. + * + * model - initialized GLMmodel structure + */ +GLvoid +glmDelete(GLMmodel* model) +{ + GLMgroup* group; + GLuint i; + + assert(model); + + if (model->pathname) free(model->pathname); + if (model->mtllibname) free(model->mtllibname); + if (model->vertices) free(model->vertices); + if (model->normals) free(model->normals); + if (model->texcoords) free(model->texcoords); + if (model->facetnorms) free(model->facetnorms); + if (model->triangles) free(model->triangles); + if (model->materials) { + for (i = 0; i < model->nummaterials; i++) + free(model->materials[i].name); + } + free(model->materials); + while(model->groups) { + group = model->groups; + model->groups = model->groups->next; + free(group->name); + free(group->triangles); + free(group); + } + + free(model); +} + +/* glmReadOBJ: Reads a model description from a Wavefront .OBJ file. + * Modelurns a pointer to the created object which should be free'd with + * glmDelete(). + * + * filename - name of the file containing the Wavefront .OBJ format data. + */ +GLMmodel* +glmReadOBJ(char* filename) +{ + GLMmodel* model; + FILE* file; +printf("*"); +fflush(NULL); + + /* open the file */ + file = fopen(filename, "r"); + if (!file) { + fprintf(stderr, "glmReadOBJ() failed: can't open data file \"%s\".\n", + filename); + exit(1); + } + + /* allocate a new model */ + model = (GLMmodel*)malloc(sizeof(GLMmodel)); + model->pathname = strdup(filename); + model->mtllibname = NULL; + model->numvertices = 0; + model->vertices = NULL; + model->numnormals = 0; + model->normals = NULL; + model->numtexcoords = 0; + model->texcoords = NULL; + model->numfacetnorms = 0; + model->facetnorms = NULL; + model->numtriangles = 0; + model->triangles = NULL; + model->nummaterials = 0; + model->materials = NULL; + model->numgroups = 0; + model->groups = NULL; + model->position[0] = 0.0; + model->position[1] = 0.0; + model->position[2] = 0.0; + + /* make a first pass through the file to get a count of the number + of vertices, normals, texcoords & triangles */ + glmFirstPass(model, file); + + /* allocate memory */ + model->vertices = (GLfloat*)malloc(sizeof(GLfloat) * + 3 * (model->numvertices + 1)); + model->triangles = (GLMtriangle*)malloc(sizeof(GLMtriangle) * + model->numtriangles); + if (model->numnormals) { + model->normals = (GLfloat*)malloc(sizeof(GLfloat) * + 3 * (model->numnormals + 1)); + } + if (model->numtexcoords) { + model->texcoords = (GLfloat*)malloc(sizeof(GLfloat) * + 2 * (model->numtexcoords + 1)); + } + + /* rewind to beginning of file and read in the data this pass */ + rewind(file); + + glmSecondPass(model, file); + + /* close the file */ + fclose(file); + + return model; +} + +/* glmWriteOBJ: Writes a model description in Wavefront .OBJ format to + * a file. + * + * model - initialized GLMmodel structure + * filename - name of the file to write the Wavefront .OBJ format data to + * mode - a bitwise or of values describing what is written to the file + * GLM_NONE - render with only vertices + * GLM_FLAT - render with facet normals + * GLM_SMOOTH - render with vertex normals + * GLM_TEXTURE - render with texture coords + * GLM_COLOR - render with colors (color material) + * GLM_MATERIAL - render with materials + * GLM_COLOR and GLM_MATERIAL should not both be specified. + * GLM_FLAT and GLM_SMOOTH should not both be specified. + */ +GLvoid +glmWriteOBJ(GLMmodel* model, char* filename, GLuint mode) +{ + GLuint i; + FILE* file; + GLMgroup* group; + + assert(model); + + /* do a bit of warning */ + if (mode & GLM_FLAT && !model->facetnorms) { + printf("glmWriteOBJ() warning: flat normal output requested " + "with no facet normals defined.\n"); + mode &= ~GLM_FLAT; + } + if (mode & GLM_SMOOTH && !model->normals) { + printf("glmWriteOBJ() warning: smooth normal output requested " + "with no normals defined.\n"); + mode &= ~GLM_SMOOTH; + } + if (mode & GLM_TEXTURE && !model->texcoords) { + printf("glmWriteOBJ() warning: texture coordinate output requested " + "with no texture coordinates defined.\n"); + mode &= ~GLM_TEXTURE; + } + if (mode & GLM_FLAT && mode & GLM_SMOOTH) { + printf("glmWriteOBJ() warning: flat normal output requested " + "and smooth normal output requested (using smooth).\n"); + mode &= ~GLM_FLAT; + } + if (mode & GLM_COLOR && !model->materials) { + printf("glmWriteOBJ() warning: color output requested " + "with no colors (materials) defined.\n"); + mode &= ~GLM_COLOR; + } + if (mode & GLM_MATERIAL && !model->materials) { + printf("glmWriteOBJ() warning: material output requested " + "with no materials defined.\n"); + mode &= ~GLM_MATERIAL; + } + if (mode & GLM_COLOR && mode & GLM_MATERIAL) { + printf("glmWriteOBJ() warning: color and material output requested " + "outputting only materials.\n"); + mode &= ~GLM_COLOR; + } + + + /* open the file */ + file = fopen(filename, "w"); + if (!file) { + fprintf(stderr, "glmWriteOBJ() failed: can't open file \"%s\" to write.\n", + filename); + exit(1); + } + + /* spit out a header */ + fprintf(file, "# \n"); + fprintf(file, "# Wavefront OBJ generated by GLM library\n"); + fprintf(file, "# \n"); + fprintf(file, "# GLM library\n"); + fprintf(file, "# Nate Robins\n"); + fprintf(file, "# ndr@pobox.com\n"); + fprintf(file, "# http://www.pobox.com/~ndr\n"); + fprintf(file, "# \n"); + + if (mode & GLM_MATERIAL && model->mtllibname) { + fprintf(file, "\nmtllib %s\n\n", model->mtllibname); + glmWriteMTL(model, filename, model->mtllibname); + } + + /* spit out the vertices */ + fprintf(file, "\n"); + fprintf(file, "# %d vertices\n", model->numvertices); + for (i = 1; i <= model->numvertices; i++) { + fprintf(file, "v %f %f %f\n", + model->vertices[3 * i + 0], + model->vertices[3 * i + 1], + model->vertices[3 * i + 2]); + } + + /* spit out the smooth/flat normals */ + if (mode & GLM_SMOOTH) { + fprintf(file, "\n"); + fprintf(file, "# %d normals\n", model->numnormals); + for (i = 1; i <= model->numnormals; i++) { + fprintf(file, "vn %f %f %f\n", + model->normals[3 * i + 0], + model->normals[3 * i + 1], + model->normals[3 * i + 2]); + } + } else if (mode & GLM_FLAT) { + fprintf(file, "\n"); + fprintf(file, "# %d normals\n", model->numfacetnorms); + for (i = 1; i <= model->numnormals; i++) { + fprintf(file, "vn %f %f %f\n", + model->facetnorms[3 * i + 0], + model->facetnorms[3 * i + 1], + model->facetnorms[3 * i + 2]); + } + } + + /* spit out the texture coordinates */ + if (mode & GLM_TEXTURE) { + fprintf(file, "\n"); + fprintf(file, "# %d texcoords\n", model->texcoords); + for (i = 1; i <= model->numtexcoords; i++) { + fprintf(file, "vt %f %f\n", + model->texcoords[2 * i + 0], + model->texcoords[2 * i + 1]); + } + } + + fprintf(file, "\n"); + fprintf(file, "# %d groups\n", model->numgroups); + fprintf(file, "# %d faces (triangles)\n", model->numtriangles); + fprintf(file, "\n"); + + group = model->groups; + while(group) { + fprintf(file, "g %s\n", group->name); + if (mode & GLM_MATERIAL) + fprintf(file, "usemtl %s\n", model->materials[group->material].name); + for (i = 0; i < group->numtriangles; i++) { + if (mode & GLM_SMOOTH && mode & GLM_TEXTURE) { + fprintf(file, "f %d/%d/%d %d/%d/%d %d/%d/%d\n", + T(group->triangles[i]).vindices[0], + T(group->triangles[i]).nindices[0], + T(group->triangles[i]).tindices[0], + T(group->triangles[i]).vindices[1], + T(group->triangles[i]).nindices[1], + T(group->triangles[i]).tindices[1], + T(group->triangles[i]).vindices[2], + T(group->triangles[i]).nindices[2], + T(group->triangles[i]).tindices[2]); + } else if (mode & GLM_FLAT && mode & GLM_TEXTURE) { + fprintf(file, "f %d/%d %d/%d %d/%d\n", + T(group->triangles[i]).vindices[0], + T(group->triangles[i]).findex, + T(group->triangles[i]).vindices[1], + T(group->triangles[i]).findex, + T(group->triangles[i]).vindices[2], + T(group->triangles[i]).findex); + } else if (mode & GLM_TEXTURE) { + fprintf(file, "f %d/%d %d/%d %d/%d\n", + T(group->triangles[i]).vindices[0], + T(group->triangles[i]).tindices[0], + T(group->triangles[i]).vindices[1], + T(group->triangles[i]).tindices[1], + T(group->triangles[i]).vindices[2], + T(group->triangles[i]).tindices[2]); + } else if (mode & GLM_SMOOTH) { + fprintf(file, "f %d//%d %d//%d %d//%d\n", + T(group->triangles[i]).vindices[0], + T(group->triangles[i]).nindices[0], + T(group->triangles[i]).vindices[1], + T(group->triangles[i]).nindices[1], + T(group->triangles[i]).vindices[2], + T(group->triangles[i]).nindices[2]); + } else if (mode & GLM_FLAT) { + fprintf(file, "f %d//%d %d//%d %d//%d\n", + T(group->triangles[i]).vindices[0], + T(group->triangles[i]).findex, + T(group->triangles[i]).vindices[1], + T(group->triangles[i]).findex, + T(group->triangles[i]).vindices[2], + T(group->triangles[i]).findex); + } else { + fprintf(file, "f %d %d %d\n", + T(group->triangles[i]).vindices[0], + T(group->triangles[i]).vindices[1], + T(group->triangles[i]).vindices[2]); + } + } + fprintf(file, "\n"); + group = group->next; + } + + fclose(file); +} + +/* glmDraw: Renders the model to the current OpenGL context using the + * mode specified. + * + * model - initialized GLMmodel structure + * mode - a bitwise OR of values describing what is to be rendered. + * GLM_NONE - render with only vertices + * GLM_FLAT - render with facet normals + * GLM_SMOOTH - render with vertex normals + * GLM_TEXTURE - render with texture coords + * GLM_COLOR - render with colors (color material) + * GLM_MATERIAL - render with materials + * GLM_COLOR and GLM_MATERIAL should not both be specified. + * GLM_FLAT and GLM_SMOOTH should not both be specified. + */ +GLvoid +glmDraw(GLMmodel* model, GLuint mode) +{ + static GLuint i; + static GLMgroup* group; + static GLMtriangle* triangle; + static GLMmaterial* material; + + assert(model); + assert(model->vertices); + + /* do a bit of warning */ + if (mode & GLM_FLAT && !model->facetnorms) { + printf("glmDraw() warning: flat render mode requested " + "with no facet normals defined.\n"); + mode &= ~GLM_FLAT; + } + if (mode & GLM_SMOOTH && !model->normals) { + printf("glmDraw() warning: smooth render mode requested " + "with no normals defined.\n"); + mode &= ~GLM_SMOOTH; + } + if (mode & GLM_TEXTURE && !model->texcoords) { + printf("glmDraw() warning: texture render mode requested " + "with no texture coordinates defined.\n"); + mode &= ~GLM_TEXTURE; + } + if (mode & GLM_FLAT && mode & GLM_SMOOTH) { + printf("glmDraw() warning: flat render mode requested " + "and smooth render mode requested (using smooth).\n"); + mode &= ~GLM_FLAT; + } + if (mode & GLM_COLOR && !model->materials) { + printf("glmDraw() warning: color render mode requested " + "with no materials defined.\n"); + mode &= ~GLM_COLOR; + } + if (mode & GLM_MATERIAL && !model->materials) { + printf("glmDraw() warning: material render mode requested " + "with no materials defined.\n"); + mode &= ~GLM_MATERIAL; + } + if (mode & GLM_COLOR && mode & GLM_MATERIAL) { + printf("glmDraw() warning: color and material render mode requested " + "using only material mode.\n"); + mode &= ~GLM_COLOR; + } + if (mode & GLM_COLOR) + glEnable(GL_COLOR_MATERIAL); + else if (mode & GLM_MATERIAL) + glDisable(GL_COLOR_MATERIAL); + + /* perhaps this loop should be unrolled into material, color, flat, + smooth, etc. loops? since most cpu's have good branch prediction + schemes (and these branches will always go one way), probably + wouldn't gain too much? */ + + group = model->groups; + while (group) { + if (mode & GLM_MATERIAL) { + material = &model->materials[group->material]; + glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, material->ambient); + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, material->diffuse); + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, material->specular); + glMaterialf(GL_FRONT_AND_BACK, GL_SHININESS, material->shininess); + } + + if (mode & GLM_COLOR) { + glColor3fv(material->diffuse); + } + + glBegin(GL_TRIANGLES); + for (i = 0; i < group->numtriangles; i++) { + triangle = &T(group->triangles[i]); + + if (mode & GLM_FLAT) + glNormal3fv(&model->facetnorms[3 * triangle->findex]); + + if (mode & GLM_SMOOTH) + glNormal3fv(&model->normals[3 * triangle->nindices[0]]); + if (mode & GLM_TEXTURE) + glTexCoord2fv(&model->texcoords[2 * triangle->tindices[0]]); + glVertex3fv(&model->vertices[3 * triangle->vindices[0]]); + + if (mode & GLM_SMOOTH) + glNormal3fv(&model->normals[3 * triangle->nindices[1]]); + if (mode & GLM_TEXTURE) + glTexCoord2fv(&model->texcoords[2 * triangle->tindices[1]]); + glVertex3fv(&model->vertices[3 * triangle->vindices[1]]); + + if (mode & GLM_SMOOTH) + glNormal3fv(&model->normals[3 * triangle->nindices[2]]); + if (mode & GLM_TEXTURE) + glTexCoord2fv(&model->texcoords[2 * triangle->tindices[2]]); + glVertex3fv(&model->vertices[3 * triangle->vindices[2]]); + + } + glEnd(); + + group = group->next; + } +} + +/* glmList: Generates and modelurns a display list for the model using + * the mode specified. + * + * model - initialized GLMmodel structure + * mode - a bitwise OR of values describing what is to be rendered. + * GLM_NONE - render with only vertices + * GLM_FLAT - render with facet normals + * GLM_SMOOTH - render with vertex normals + * GLM_TEXTURE - render with texture coords + * GLM_COLOR - render with colors (color material) + * GLM_MATERIAL - render with materials + * GLM_COLOR and GLM_MATERIAL should not both be specified. + * GLM_FLAT and GLM_SMOOTH should not both be specified. */ +GLuint +glmList(GLMmodel* model, GLuint mode) +{ + GLuint list; + + list = glGenLists(1); + glNewList(list, GL_COMPILE); + glmDraw(model, mode); + glEndList(); + + return list; +} + +/* glmWeld: eliminate (weld) vectors that are within an epsilon of + * each other. + * + * model - initialized GLMmodel structure + * epsilon - maximum difference between vertices + * ( 0.00001 is a good start for a unitized model) + * + */ +GLvoid +glmWeld(GLMmodel* model, GLfloat epsilon) +{ + GLfloat* vectors; + GLfloat* copies; + GLuint numvectors; + GLuint i; + + /* vertices */ + numvectors = model->numvertices; + vectors = model->vertices; + copies = glmWeldVectors(vectors, &numvectors, epsilon); + +#if 0 + printf("glmWeld(): %d redundant vertices.\n", + model->numvertices - numvectors - 1); +#endif + + for (i = 0; i < model->numtriangles; i++) { + T(i).vindices[0] = (GLuint)vectors[3 * T(i).vindices[0] + 0]; + T(i).vindices[1] = (GLuint)vectors[3 * T(i).vindices[1] + 0]; + T(i).vindices[2] = (GLuint)vectors[3 * T(i).vindices[2] + 0]; + } + + /* free space for old vertices */ + free(vectors); + + /* allocate space for the new vertices */ + model->numvertices = numvectors; + model->vertices = (GLfloat*)malloc(sizeof(GLfloat) * + 3 * (model->numvertices + 1)); + + /* copy the optimized vertices into the actual vertex list */ + for (i = 1; i <= model->numvertices; i++) { + model->vertices[3 * i + 0] = copies[3 * i + 0]; + model->vertices[3 * i + 1] = copies[3 * i + 1]; + model->vertices[3 * i + 2] = copies[3 * i + 2]; + } + + free(copies); +} + + +#if 0 + /* normals */ + if (model->numnormals) { + numvectors = model->numnormals; + vectors = model->normals; + copies = glmOptimizeVectors(vectors, &numvectors); + + printf("glmOptimize(): %d redundant normals.\n", + model->numnormals - numvectors); + + for (i = 0; i < model->numtriangles; i++) { + T(i).nindices[0] = (GLuint)vectors[3 * T(i).nindices[0] + 0]; + T(i).nindices[1] = (GLuint)vectors[3 * T(i).nindices[1] + 0]; + T(i).nindices[2] = (GLuint)vectors[3 * T(i).nindices[2] + 0]; + } + + /* free space for old normals */ + free(vectors); + + /* allocate space for the new normals */ + model->numnormals = numvectors; + model->normals = (GLfloat*)malloc(sizeof(GLfloat) * + 3 * (model->numnormals + 1)); + + /* copy the optimized vertices into the actual vertex list */ + for (i = 1; i <= model->numnormals; i++) { + model->normals[3 * i + 0] = copies[3 * i + 0]; + model->normals[3 * i + 1] = copies[3 * i + 1]; + model->normals[3 * i + 2] = copies[3 * i + 2]; + } + + free(copies); + } + + /* texcoords */ + if (model->numtexcoords) { + numvectors = model->numtexcoords; + vectors = model->texcoords; + copies = glmOptimizeVectors(vectors, &numvectors); + + printf("glmOptimize(): %d redundant texcoords.\n", + model->numtexcoords - numvectors); + + for (i = 0; i < model->numtriangles; i++) { + for (j = 0; j < 3; j++) { + T(i).tindices[j] = (GLuint)vectors[3 * T(i).tindices[j] + 0]; + } + } + + /* free space for old texcoords */ + free(vectors); + + /* allocate space for the new texcoords */ + model->numtexcoords = numvectors; + model->texcoords = (GLfloat*)malloc(sizeof(GLfloat) * + 2 * (model->numtexcoords + 1)); + + /* copy the optimized vertices into the actual vertex list */ + for (i = 1; i <= model->numtexcoords; i++) { + model->texcoords[2 * i + 0] = copies[2 * i + 0]; + model->texcoords[2 * i + 1] = copies[2 * i + 1]; + } + + free(copies); + } + +#endif + +#if 0 + /* look for unused vertices */ + /* look for unused normals */ + /* look for unused texcoords */ + for (i = 1; i <= model->numvertices; i++) { + for (j = 0; j < model->numtriangles; i++) { + if (T(j).vindices[0] == i || + T(j).vindices[1] == i || + T(j).vindices[1] == i) + break; + } + } +#endif diff -r f854402837ba -r ed017b9c532d plugins/crazychat/glm.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/glm.h Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,277 @@ +#ifndef __GLM__H__ +#define __GLM__H__ + +/* + glm.h + Nate Robins, 1997 + ndr@pobox.com, http://www.pobox.com/~ndr/ + + Wavefront OBJ model file format reader/writer/manipulator. + + Includes routines for generating smooth normals with + preservation of edges, welding redundant vertices & texture + coordinate generation (spheremap and planar projections) + more. + + */ + + +#if defined(WIN32) +#include "glut.h" +#else +//#include +#endif + +#include + +#ifndef M_PI +#define M_PI 3.14159265 +#endif + +#define GLM_NONE (0) /* render with only vertices */ +#define GLM_FLAT (1 << 0) /* render with facet normals */ +#define GLM_SMOOTH (1 << 1) /* render with vertex normals */ +#define GLM_TEXTURE (1 << 2) /* render with texture coords */ +#define GLM_COLOR (1 << 3) /* render with colors */ +#define GLM_MATERIAL (1 << 4) /* render with materials */ + + +/* GLMmaterial: Structure that defines a material in a model. + */ +typedef struct _GLMmaterial +{ + char* name; /* name of material */ + GLfloat diffuse[4]; /* diffuse component */ + GLfloat ambient[4]; /* ambient component */ + GLfloat specular[4]; /* specular component */ + GLfloat emmissive[4]; /* emmissive component */ + GLfloat shininess; /* specular exponent */ +} GLMmaterial; + +typedef struct _GLMmat_str{ + GLint num_materials; + GLMmaterial* materials; +} GLMmat_str; + + +/* GLMtriangle: Structure that defines a triangle in a model. + */ +typedef struct _GLMtriangle { + GLuint vindices[3]; /* array of triangle vertex indices */ + GLuint nindices[3]; /* array of triangle normal indices */ + GLuint tindices[3]; /* array of triangle texcoord indices*/ + GLuint findex; /* index of triangle facet normal */ +} GLMtriangle; + +/* GLMgroup: Structure that defines a group in a model. + */ +typedef struct _GLMgroup { + char* name; /* name of this group */ + GLuint numtriangles; /* number of triangles in this group */ + GLuint* triangles; /* array of triangle indices */ + GLuint material; /* index to material for group */ + struct _GLMgroup* next; /* pointer to next group in model */ +} GLMgroup; + +/* GLMmodel: Structure that defines a model. + */ +typedef struct _GLMmodel { + char* pathname; /* path to this model */ + char* mtllibname; /* name of the material library */ + + GLuint numvertices; /* number of vertices in model */ + GLfloat* vertices; /* array of vertices */ + + GLuint numnormals; /* number of normals in model */ + GLfloat* normals; /* array of normals */ + + GLuint numtexcoords; /* number of texcoords in model */ + GLfloat* texcoords; /* array of texture coordinates */ + + GLuint numfacetnorms; /* number of facetnorms in model */ + GLfloat* facetnorms; /* array of facetnorms */ + + GLuint numtriangles; /* number of triangles in model */ + GLMtriangle* triangles; /* array of triangles */ + + GLuint nummaterials; /* number of materials in model */ + GLMmaterial* materials; /* array of materials */ + + GLuint numgroups; /* number of groups in model */ + GLMgroup* groups; /* linked list of groups */ + + GLfloat position[3]; /* position of the model */ + +} GLMmodel; + +# ifdef __cplusplus +extern "C" { +# endif /* __cplusplus */ + +/* glmUnitize: "unitize" a model by translating it to the origin and + * scaling it to fit in a unit cube around the origin. Returns the + * scalefactor used. + * + * model - properly initialized GLMmodel structure + */ +GLfloat +glmUnitize(GLMmodel* model); + +/* glmDimensions: Calculates the dimensions (width, height, depth) of + * a model. + * + * model - initialized GLMmodel structure + * dimensions - array of 3 GLfloats (GLfloat dimensions[3]) + */ +GLvoid +glmDimensions(GLMmodel* model, GLfloat* dimensions); + +/* glmScale: Scales a model by a given amount. + * + * model - properly initialized GLMmodel structure + * scale - scalefactor (0.5 = half as large, 2.0 = twice as large) + */ +GLvoid +glmScale(GLMmodel* model, GLfloat scale); + +/* glmReverseWinding: Reverse the polygon winding for all polygons in + * this model. Default winding is counter-clockwise. Also changes + * the direction of the normals. + * + * model - properly initialized GLMmodel structure + */ +GLvoid +glmReverseWinding(GLMmodel* model); + +/* glmFacetNormals: Generates facet normals for a model (by taking the + * cross product of the two vectors derived from the sides of each + * triangle). Assumes a counter-clockwise winding. + * + * model - initialized GLMmodel structure + */ +GLvoid +glmFacetNormals(GLMmodel* model); + +/* glmVertexNormals: Generates smooth vertex normals for a model. + * First builds a list of all the triangles each vertex is in. Then + * loops through each vertex in the the list averaging all the facet + * normals of the triangles each vertex is in. Finally, sets the + * normal index in the triangle for the vertex to the generated smooth + * normal. If the dot product of a facet normal and the facet normal + * associated with the first triangle in the list of triangles the + * current vertex is in is greater than the cosine of the angle + * parameter to the function, that facet normal is not added into the + * average normal calculation and the corresponding vertex is given + * the facet normal. This tends to preserve hard edges. The angle to + * use depends on the model, but 90 degrees is usually a good start. + * + * model - initialized GLMmodel structure + * angle - maximum angle (in degrees) to smooth across + */ +GLvoid +glmVertexNormals(GLMmodel* model, GLfloat angle); + +/* glmLinearTexture: Generates texture coordinates according to a + * linear projection of the texture map. It generates these by + * linearly mapping the vertices onto a square. + * + * model - pointer to initialized GLMmodel structure + */ +GLvoid +glmLinearTexture(GLMmodel* model); + +/* glmSpheremapTexture: Generates texture coordinates according to a + * spherical projection of the texture map. Sometimes referred to as + * spheremap, or reflection map texture coordinates. It generates + * these by using the normal to calculate where that vertex would map + * onto a sphere. Since it is impossible to map something flat + * perfectly onto something spherical, there is distortion at the + * poles. This particular implementation causes the poles along the X + * axis to be distorted. + * + * model - pointer to initialized GLMmodel structure + */ +GLvoid +glmSpheremapTexture(GLMmodel* model); + +/* glmDelete: Deletes a GLMmodel structure. + * + * model - initialized GLMmodel structure + */ +GLvoid +glmDelete(GLMmodel* model); + +/* glmReadOBJ: Reads a model description from a Wavefront .OBJ file. + * Returns a pointer to the created object which should be free'd with + * glmDelete(). + * + * filename - name of the file containing the Wavefront .OBJ format data. + */ +GLMmodel* +glmReadOBJ(char* filename); + +/* glmWriteOBJ: Writes a model description in Wavefront .OBJ format to + * a file. + * + * model - initialized GLMmodel structure + * filename - name of the file to write the Wavefront .OBJ format data to + * mode - a bitwise or of values describing what is written to the file + * GLM_NONE - write only vertices + * GLM_FLAT - write facet normals + * GLM_SMOOTH - write vertex normals + * GLM_TEXTURE - write texture coords + * GLM_FLAT and GLM_SMOOTH should not both be specified. + */ +GLvoid +glmWriteOBJ(GLMmodel* model, char* filename, GLuint mode); + +/* glmDraw: Renders the model to the current OpenGL context using the + * mode specified. + * + * model - initialized GLMmodel structure + * mode - a bitwise OR of values describing what is to be rendered. + * GLM_NONE - render with only vertices + * GLM_FLAT - render with facet normals + * GLM_SMOOTH - render with vertex normals + * GLM_TEXTURE - render with texture coords + * GLM_FLAT and GLM_SMOOTH should not both be specified. + */ +GLvoid +glmDraw(GLMmodel* model, GLuint mode); + +/* glmList: Generates and returns a display list for the model using + * the mode specified. + * + * model - initialized GLMmodel structure + * mode - a bitwise OR of values describing what is to be rendered. + * GLM_NONE - render with only vertices + * GLM_FLAT - render with facet normals + * GLM_SMOOTH - render with vertex normals + * GLM_TEXTURE - render with texture coords + * GLM_FLAT and GLM_SMOOTH should not both be specified. + */ +GLuint +glmList(GLMmodel* model, GLuint mode); + +/* glmWeld: eliminate (weld) vectors that are within an epsilon of + * each other. + * + * model - initialized GLMmodel structure + * epsilon - maximum difference between vertices + * ( 0.00001 is a good start for a unitized model) + * + */ +GLvoid +glmWeld(GLMmodel* model, GLfloat epsilon); + +GLMmat_str* +glmMTL(char* name); + +void +glmSetMat(GLMmat_str* mats, GLint index); + +# ifdef __cplusplus +} +# endif /* __cplusplus */ + + +#endif diff -r f854402837ba -r ed017b9c532d plugins/crazychat/lids.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/lids.c Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,4080 @@ + +#include "lids.h" +#include "mat_struct.h" +#include +#include + + +#define NUM_LIDS 9 + +GLint lidLists[NUM_LIDS]; + +/* +typedef struct sample_MATERIAL{ + GLfloat ambient[3]; + GLfloat diffuse[3]; + GLfloat specular[3]; + GLfloat emission[3]; + GLfloat alpha; + GLfloat phExp; + int texture; +}sample_MATERIAL;*/ + +static sample_MATERIAL materials [1] = { + {{0.215686f,0.117647f,0.0627451f}, {0.847059f,0.713726f,0.639216f}, {0.044902f,0.044902f,0.044902f}, {0.0f,0.0f,0.0f}, 1.0f,11.3137f,-1} //Material #519 +}; + +static short face_indicies[NUM_LIDS][448][9] = { + +//lid 10 +{ +// Object #-1 + {0,1,2 ,0,1,2 ,0,1,2 }, {0,2,3 ,3,2,4 ,3,2,4 }, {0,3,4 ,5,4,6 ,5,4,6 }, + {0,4,5 ,7,6,8 ,7,6,8 }, {0,5,6 ,9,8,10 ,9,8,10 }, {0,6,7 ,11,10,12 ,11,10,12 }, + {0,7,8 ,13,12,14 ,13,12,14 }, {0,8,9 ,15,14,16 ,15,14,16 }, {0,9,10 ,17,16,18 ,17,16,18 }, + {0,10,11 ,19,18,20 ,19,18,20 }, {0,11,12 ,21,20,22 ,21,20,22 }, + {0,12,13 ,23,22,24 ,23,22,24 }, {0,13,14 ,25,24,26 ,25,24,26 }, + {0,14,15 ,27,26,28 ,27,26,28 }, {0,15,16 ,29,28,30 ,29,28,30 }, + {0,16,1 ,31,30,31 ,31,30,32 }, {1,17,18 ,1,32,33 ,1,33,34 }, + {1,18,2 ,1,33,2 ,1,34,2 }, {2,18,19 ,2,33,34 ,2,34,35 }, {2,19,3 ,2,34,4 ,2,35,4 }, + {3,19,20 ,4,34,35 ,4,35,36 }, {3,20,4 ,4,35,6 ,4,36,6 }, {4,20,21 ,6,35,36 ,6,36,37 }, + {4,21,5 ,6,36,8 ,6,37,8 }, {5,21,22 ,8,36,37 ,8,37,38 }, {5,22,6 ,8,37,10 ,8,38,10 }, + {6,22,23 ,10,37,38 ,10,38,39 }, {6,23,7 ,10,38,12 ,10,39,12 }, + {7,23,24 ,12,38,39 ,12,39,40 }, {7,24,8 ,12,39,14 ,12,40,14 }, + {8,24,25 ,14,39,40 ,14,40,41 }, {8,25,9 ,14,40,16 ,14,41,16 }, + {9,25,26 ,16,40,41 ,16,41,42 }, {9,26,10 ,16,41,18 ,16,42,18 }, + {10,26,27 ,18,41,42 ,18,42,43 }, {10,27,11 ,18,42,20 ,18,43,20 }, + {11,27,28 ,20,42,43 ,20,43,44 }, {11,28,12 ,20,43,22 ,20,44,22 }, + {12,28,29 ,22,43,44 ,22,44,45 }, {12,29,13 ,22,44,24 ,22,45,24 }, + {13,29,30 ,24,44,45 ,24,45,46 }, {13,30,14 ,24,45,26 ,24,46,26 }, + {14,30,31 ,26,45,46 ,26,46,47 }, {14,31,15 ,26,46,28 ,26,47,28 }, + {15,31,32 ,28,46,47 ,28,47,48 }, {15,32,16 ,28,47,30 ,28,48,30 }, + {16,32,17 ,30,47,48 ,30,48,49 }, {16,17,1 ,30,49,49 ,30,49,32 }, + {17,33,34 ,32,50,51 ,33,50,51 }, {17,34,18 ,32,51,33 ,33,51,34 }, + {18,34,35 ,33,51,52 ,34,51,52 }, {18,35,19 ,33,52,34 ,34,52,35 }, + {19,35,36 ,34,52,53 ,35,52,53 }, {19,36,20 ,34,53,35 ,35,53,36 }, + {20,36,37 ,35,53,54 ,36,53,54 }, {20,37,21 ,35,54,36 ,36,54,37 }, + {21,37,38 ,36,54,55 ,37,54,55 }, {21,38,22 ,36,55,37 ,37,55,38 }, + {22,38,39 ,37,55,56 ,38,55,56 }, {22,39,23 ,37,56,38 ,38,56,39 }, + {23,39,40 ,38,56,57 ,39,56,57 }, {23,40,24 ,38,57,39 ,39,57,40 }, + {24,40,41 ,39,57,58 ,40,57,58 }, {24,41,25 ,39,58,40 ,40,58,41 }, + {25,41,42 ,40,58,59 ,41,58,59 }, {25,42,26 ,40,59,41 ,41,59,42 }, + {26,42,43 ,41,59,60 ,42,59,60 }, {26,43,27 ,41,60,42 ,42,60,43 }, + {27,43,44 ,42,60,61 ,43,60,61 }, {27,44,28 ,42,61,43 ,43,61,44 }, + {28,44,45 ,43,61,62 ,44,61,62 }, {28,45,29 ,43,62,44 ,44,62,45 }, + {29,45,46 ,44,62,63 ,45,62,63 }, {29,46,30 ,44,63,45 ,45,63,46 }, + {30,46,47 ,45,63,64 ,46,63,64 }, {30,47,31 ,45,64,46 ,46,64,47 }, + {31,47,48 ,46,64,65 ,47,64,65 }, {31,48,32 ,46,65,47 ,47,65,48 }, + {32,48,33 ,47,65,66 ,48,65,66 }, {32,33,17 ,47,67,67 ,48,66,49 }, + {33,49,50 ,50,68,69 ,50,67,68 }, {33,50,34 ,50,69,51 ,50,68,51 }, + {34,50,51 ,51,69,70 ,51,68,69 }, {34,51,35 ,51,70,52 ,51,69,52 }, + {35,51,52 ,52,70,71 ,52,69,70 }, {35,52,36 ,52,71,53 ,52,70,53 }, + {36,52,53 ,53,71,72 ,53,70,71 }, {36,53,37 ,53,72,54 ,53,71,54 }, + {37,53,54 ,54,72,73 ,54,71,72 }, {37,54,38 ,54,73,55 ,54,72,55 }, + {38,54,55 ,55,73,74 ,55,72,73 }, {38,55,39 ,55,74,56 ,55,73,56 }, + {39,55,56 ,56,74,75 ,56,73,74 }, {39,56,40 ,56,75,57 ,56,74,57 }, + {40,56,57 ,57,75,76 ,57,74,75 }, {40,57,41 ,57,76,58 ,57,75,58 }, + {41,57,58 ,58,76,77 ,58,75,76 }, {41,58,42 ,58,77,59 ,58,76,59 }, + {42,58,59 ,59,77,78 ,59,76,77 }, {42,59,43 ,59,78,60 ,59,77,60 }, + {43,59,60 ,60,78,79 ,60,77,78 }, {43,60,44 ,60,79,61 ,60,78,61 }, + {44,60,61 ,61,79,80 ,61,78,79 }, {44,61,45 ,61,80,62 ,61,79,62 }, + {45,61,62 ,62,80,81 ,62,79,80 }, {45,62,46 ,62,81,63 ,62,80,63 }, + {46,62,63 ,63,81,82 ,63,80,81 }, {46,63,47 ,63,82,64 ,63,81,64 }, + {47,63,64 ,64,82,83 ,64,81,82 }, {47,64,48 ,64,83,65 ,64,82,65 }, + {48,64,49 ,65,83,84 ,65,82,83 }, {48,49,33 ,65,85,85 ,65,83,66 }, + {66,65,67 ,86,87,88 ,1,0,2 }, {67,65,68 ,88,89,90 ,2,3,4 }, {68,65,69 ,90,91,92 ,4,5,6 }, + {69,65,70 ,92,93,94 ,6,7,8 }, {70,65,71 ,94,95,96 ,8,9,10 }, + {71,65,72 ,96,97,98 ,10,11,12 }, {72,65,73 ,98,99,100 ,12,13,14 }, + {73,65,74 ,100,101,102 ,14,15,16 }, {74,65,75 ,102,103,104 ,16,17,18 }, + {75,65,76 ,104,105,106 ,18,19,20 }, {76,65,77 ,106,107,108 ,20,21,22 }, + {77,65,78 ,108,109,110 ,22,23,24 }, {78,65,79 ,110,111,112 ,24,25,26 }, + {79,65,80 ,112,113,114 ,26,27,28 }, {80,65,81 ,114,115,116 ,28,29,30 }, + {81,65,66 ,116,117,117 ,30,31,32 }, {82,66,83 ,118,86,119 ,33,1,34 }, + {83,66,67 ,119,86,88 ,34,1,2 }, {83,67,84 ,119,88,120 ,34,2,35 }, + {84,67,68 ,120,88,90 ,35,2,4 }, {84,68,85 ,120,90,121 ,35,4,36 }, + {85,68,69 ,121,90,92 ,36,4,6 }, {85,69,86 ,121,92,122 ,36,6,37 }, + {86,69,70 ,122,92,94 ,37,6,8 }, {86,70,87 ,122,94,123 ,37,8,38 }, + {87,70,71 ,123,94,96 ,38,8,10 }, {87,71,88 ,123,96,124 ,38,10,39 }, + {88,71,72 ,124,96,98 ,39,10,12 }, {88,72,89 ,124,98,125 ,39,12,40 }, + {89,72,73 ,125,98,100 ,40,12,14 }, {89,73,90 ,125,100,126 ,40,14,41 }, + {90,73,74 ,126,100,102 ,41,14,16 }, {90,74,91 ,126,102,127 ,41,16,42 }, + {91,74,75 ,127,102,104 ,42,16,18 }, {91,75,92 ,127,104,128 ,42,18,43 }, + {92,75,76 ,128,104,106 ,43,18,20 }, {92,76,93 ,128,106,129 ,43,20,44 }, + {93,76,77 ,129,106,108 ,44,20,22 }, {93,77,94 ,129,108,130 ,44,22,45 }, + {94,77,78 ,130,108,110 ,45,22,24 }, {94,78,95 ,130,110,131 ,45,24,46 }, + {95,78,79 ,131,110,112 ,46,24,26 }, {95,79,96 ,131,112,132 ,46,26,47 }, + {96,79,80 ,132,112,114 ,47,26,28 }, {96,80,97 ,132,114,133 ,47,28,48 }, + {97,80,81 ,133,114,116 ,48,28,30 }, {97,81,82 ,133,116,134 ,48,30,49 }, + {82,81,66 ,135,116,135 ,49,30,32 }, {98,82,99 ,136,118,137 ,50,33,51 }, + {99,82,83 ,137,118,119 ,51,33,34 }, {99,83,100 ,137,119,138 ,51,34,52 }, + {100,83,84 ,138,119,120 ,52,34,35 }, {100,84,101 ,138,120,139 ,52,35,53 }, + {101,84,85 ,139,120,121 ,53,35,36 }, {101,85,102 ,139,121,140 ,53,36,54 }, + {102,85,86 ,140,121,122 ,54,36,37 }, {102,86,103 ,140,122,141 ,54,37,55 }, + {103,86,87 ,141,122,123 ,55,37,38 }, {103,87,104 ,141,123,142 ,55,38,56 }, + {104,87,88 ,142,123,124 ,56,38,39 }, {104,88,105 ,142,124,143 ,56,39,57 }, + {105,88,89 ,143,124,125 ,57,39,40 }, {105,89,106 ,143,125,144 ,57,40,58 }, + {106,89,90 ,144,125,126 ,58,40,41 }, {106,90,107 ,144,126,145 ,58,41,59 }, + {107,90,91 ,145,126,127 ,59,41,42 }, {107,91,108 ,145,127,146 ,59,42,60 }, + {108,91,92 ,146,127,128 ,60,42,43 }, {108,92,109 ,146,128,147 ,60,43,61 }, + {109,92,93 ,147,128,129 ,61,43,44 }, {109,93,110 ,147,129,148 ,61,44,62 }, + {110,93,94 ,148,129,130 ,62,44,45 }, {110,94,111 ,148,130,149 ,62,45,63 }, + {111,94,95 ,149,130,131 ,63,45,46 }, {111,95,112 ,149,131,150 ,63,46,64 }, + {112,95,96 ,150,131,132 ,64,46,47 }, {112,96,113 ,150,132,151 ,64,47,65 }, + {113,96,97 ,151,132,133 ,65,47,48 }, {113,97,98 ,151,133,152 ,65,48,66 }, + {98,97,82 ,153,133,153 ,66,48,49 }, {114,98,115 ,154,136,155 ,67,50,68 }, + {115,98,99 ,155,136,137 ,68,50,51 }, {115,99,116 ,155,137,156 ,68,51,69 }, + {116,99,100 ,156,137,138 ,69,51,52 }, {116,100,117 ,156,138,157 ,69,52,70 }, + {117,100,101 ,157,138,139 ,70,52,53 }, {117,101,118 ,157,139,158 ,70,53,71 }, + {118,101,102 ,158,139,140 ,71,53,54 }, {118,102,119 ,158,140,159 ,71,54,72 }, + {119,102,103 ,159,140,141 ,72,54,55 }, {119,103,120 ,159,141,160 ,72,55,73 }, + {120,103,104 ,160,141,142 ,73,55,56 }, {120,104,121 ,160,142,161 ,73,56,74 }, + {121,104,105 ,161,142,143 ,74,56,57 }, {121,105,122 ,161,143,162 ,74,57,75 }, + {122,105,106 ,162,143,144 ,75,57,58 }, {122,106,123 ,162,144,163 ,75,58,76 }, + {123,106,107 ,163,144,145 ,76,58,59 }, {123,107,124 ,163,145,164 ,76,59,77 }, + {124,107,108 ,164,145,146 ,77,59,60 }, {124,108,125 ,164,146,165 ,77,60,78 }, + {125,108,109 ,165,146,147 ,78,60,61 }, {125,109,126 ,165,147,166 ,78,61,79 }, + {126,109,110 ,166,147,148 ,79,61,62 }, {126,110,127 ,166,148,167 ,79,62,80 }, + {127,110,111 ,167,148,149 ,80,62,63 }, {127,111,128 ,167,149,168 ,80,63,81 }, + {128,111,112 ,168,149,150 ,81,63,64 }, {128,112,129 ,168,150,169 ,81,64,82 }, + {129,112,113 ,169,150,151 ,82,64,65 }, {129,113,114 ,169,151,170 ,82,65,83 }, + {114,113,98 ,171,151,171 ,83,65,66 } +// Object #-1 + , {130,131,132 ,172,173,174 ,0,1,2 }, {130,132,133 ,175,174,176 ,3,2,4 }, + {130,133,134 ,177,176,178 ,5,4,6 }, {130,134,135 ,179,178,180 ,7,6,8 }, + {130,135,136 ,181,180,182 ,9,8,10 }, {130,136,137 ,183,182,184 ,11,10,12 }, + {130,137,138 ,185,184,186 ,13,12,14 }, {130,138,139 ,187,186,188 ,15,14,16 }, + {130,139,140 ,189,188,190 ,17,16,18 }, {130,140,141 ,191,190,192 ,19,18,20 }, + {130,141,142 ,193,192,194 ,21,20,22 }, {130,142,143 ,195,194,196 ,23,22,24 }, + {130,143,144 ,197,196,198 ,25,24,26 }, {130,144,145 ,199,198,200 ,27,26,28 }, + {130,145,146 ,201,200,202 ,29,28,30 }, {130,146,131 ,203,202,203 ,31,30,32 }, + {131,147,148 ,173,204,205 ,1,33,34 }, {131,148,132 ,173,205,174 ,1,34,2 }, + {132,148,149 ,174,205,206 ,2,34,35 }, {132,149,133 ,174,206,176 ,2,35,4 }, + {133,149,150 ,176,206,207 ,4,35,36 }, {133,150,134 ,176,207,178 ,4,36,6 }, + {134,150,151 ,178,207,208 ,6,36,37 }, {134,151,135 ,178,208,180 ,6,37,8 }, + {135,151,152 ,180,208,209 ,8,37,38 }, {135,152,136 ,180,209,182 ,8,38,10 }, + {136,152,153 ,182,209,210 ,10,38,39 }, {136,153,137 ,182,210,184 ,10,39,12 }, + {137,153,154 ,184,210,211 ,12,39,40 }, {137,154,138 ,184,211,186 ,12,40,14 }, + {138,154,155 ,186,211,212 ,14,40,41 }, {138,155,139 ,186,212,188 ,14,41,16 }, + {139,155,156 ,188,212,213 ,16,41,42 }, {139,156,140 ,188,213,190 ,16,42,18 }, + {140,156,157 ,190,213,214 ,18,42,43 }, {140,157,141 ,190,214,192 ,18,43,20 }, + {141,157,158 ,192,214,215 ,20,43,44 }, {141,158,142 ,192,215,194 ,20,44,22 }, + {142,158,159 ,194,215,216 ,22,44,45 }, {142,159,143 ,194,216,196 ,22,45,24 }, + {143,159,160 ,196,216,217 ,24,45,46 }, {143,160,144 ,196,217,198 ,24,46,26 }, + {144,160,161 ,198,217,218 ,26,46,47 }, {144,161,145 ,198,218,200 ,26,47,28 }, + {145,161,162 ,200,218,219 ,28,47,48 }, {145,162,146 ,200,219,202 ,28,48,30 }, + {146,162,147 ,202,219,220 ,30,48,49 }, {146,147,131 ,202,221,221 ,30,49,32 }, + {147,163,164 ,204,222,223 ,33,50,51 }, {147,164,148 ,204,223,205 ,33,51,34 }, + {148,164,165 ,205,223,224 ,34,51,52 }, {148,165,149 ,205,224,206 ,34,52,35 }, + {149,165,166 ,206,224,225 ,35,52,53 }, {149,166,150 ,206,225,207 ,35,53,36 }, + {150,166,167 ,207,225,226 ,36,53,54 }, {150,167,151 ,207,226,208 ,36,54,37 }, + {151,167,168 ,208,226,227 ,37,54,55 }, {151,168,152 ,208,227,209 ,37,55,38 }, + {152,168,169 ,209,227,228 ,38,55,56 }, {152,169,153 ,209,228,210 ,38,56,39 }, + {153,169,170 ,210,228,229 ,39,56,57 }, {153,170,154 ,210,229,211 ,39,57,40 }, + {154,170,171 ,211,229,230 ,40,57,58 }, {154,171,155 ,211,230,212 ,40,58,41 }, + {155,171,172 ,212,230,231 ,41,58,59 }, {155,172,156 ,212,231,213 ,41,59,42 }, + {156,172,173 ,213,231,232 ,42,59,60 }, {156,173,157 ,213,232,214 ,42,60,43 }, + {157,173,174 ,214,232,233 ,43,60,61 }, {157,174,158 ,214,233,215 ,43,61,44 }, + {158,174,175 ,215,233,234 ,44,61,62 }, {158,175,159 ,215,234,216 ,44,62,45 }, + {159,175,176 ,216,234,235 ,45,62,63 }, {159,176,160 ,216,235,217 ,45,63,46 }, + {160,176,177 ,217,235,236 ,46,63,64 }, {160,177,161 ,217,236,218 ,46,64,47 }, + {161,177,178 ,218,236,237 ,47,64,65 }, {161,178,162 ,218,237,219 ,47,65,48 }, + {162,178,163 ,219,237,238 ,48,65,66 }, {162,163,147 ,219,239,239 ,48,66,49 }, + {163,179,180 ,222,240,241 ,50,67,68 }, {163,180,164 ,222,241,223 ,50,68,51 }, + {164,180,181 ,223,241,242 ,51,68,69 }, {164,181,165 ,223,242,224 ,51,69,52 }, + {165,181,182 ,224,242,243 ,52,69,70 }, {165,182,166 ,224,243,225 ,52,70,53 }, + {166,182,183 ,225,243,244 ,53,70,71 }, {166,183,167 ,225,244,226 ,53,71,54 }, + {167,183,184 ,226,244,245 ,54,71,72 }, {167,184,168 ,226,245,227 ,54,72,55 }, + {168,184,185 ,227,245,246 ,55,72,73 }, {168,185,169 ,227,246,228 ,55,73,56 }, + {169,185,186 ,228,246,247 ,56,73,74 }, {169,186,170 ,228,247,229 ,56,74,57 }, + {170,186,187 ,229,247,248 ,57,74,75 }, {170,187,171 ,229,248,230 ,57,75,58 }, + {171,187,188 ,230,248,249 ,58,75,76 }, {171,188,172 ,230,249,231 ,58,76,59 }, + {172,188,189 ,231,249,250 ,59,76,77 }, {172,189,173 ,231,250,232 ,59,77,60 }, + {173,189,190 ,232,250,251 ,60,77,78 }, {173,190,174 ,232,251,233 ,60,78,61 }, + {174,190,191 ,233,251,252 ,61,78,79 }, {174,191,175 ,233,252,234 ,61,79,62 }, + {175,191,192 ,234,252,253 ,62,79,80 }, {175,192,176 ,234,253,235 ,62,80,63 }, + {176,192,193 ,235,253,254 ,63,80,81 }, {176,193,177 ,235,254,236 ,63,81,64 }, + {177,193,194 ,236,254,255 ,64,81,82 }, {177,194,178 ,236,255,237 ,64,82,65 }, + {178,194,179 ,237,255,256 ,65,82,83 }, {178,179,163 ,237,257,257 ,65,83,66 }, + {196,195,197 ,258,259,260 ,1,0,2 }, {197,195,198 ,260,261,262 ,2,3,4 }, + {198,195,199 ,262,263,264 ,4,5,6 }, {199,195,200 ,264,265,266 ,6,7,8 }, + {200,195,201 ,266,267,268 ,8,9,10 }, {201,195,202 ,268,269,270 ,10,11,12 }, + {202,195,203 ,270,271,272 ,12,13,14 }, {203,195,204 ,272,273,274 ,14,15,16 }, + {204,195,205 ,274,275,276 ,16,17,18 }, {205,195,206 ,276,277,278 ,18,19,20 }, + {206,195,207 ,278,279,280 ,20,21,22 }, {207,195,208 ,280,281,282 ,22,23,24 }, + {208,195,209 ,282,283,284 ,24,25,26 }, {209,195,210 ,284,285,286 ,26,27,28 }, + {210,195,211 ,286,287,288 ,28,29,30 }, {211,195,196 ,288,289,289 ,30,31,32 }, + {212,196,213 ,290,258,291 ,33,1,34 }, {213,196,197 ,291,258,260 ,34,1,2 }, + {213,197,214 ,291,260,292 ,34,2,35 }, {214,197,198 ,292,260,262 ,35,2,4 }, + {214,198,215 ,292,262,293 ,35,4,36 }, {215,198,199 ,293,262,264 ,36,4,6 }, + {215,199,216 ,293,264,294 ,36,6,37 }, {216,199,200 ,294,264,266 ,37,6,8 }, + {216,200,217 ,294,266,295 ,37,8,38 }, {217,200,201 ,295,266,268 ,38,8,10 }, + {217,201,218 ,295,268,296 ,38,10,39 }, {218,201,202 ,296,268,270 ,39,10,12 }, + {218,202,219 ,296,270,297 ,39,12,40 }, {219,202,203 ,297,270,272 ,40,12,14 }, + {219,203,220 ,297,272,298 ,40,14,41 }, {220,203,204 ,298,272,274 ,41,14,16 }, + {220,204,221 ,298,274,299 ,41,16,42 }, {221,204,205 ,299,274,276 ,42,16,18 }, + {221,205,222 ,299,276,300 ,42,18,43 }, {222,205,206 ,300,276,278 ,43,18,20 }, + {222,206,223 ,300,278,301 ,43,20,44 }, {223,206,207 ,301,278,280 ,44,20,22 }, + {223,207,224 ,301,280,302 ,44,22,45 }, {224,207,208 ,302,280,282 ,45,22,24 }, + {224,208,225 ,302,282,303 ,45,24,46 }, {225,208,209 ,303,282,284 ,46,24,26 }, + {225,209,226 ,303,284,304 ,46,26,47 }, {226,209,210 ,304,284,286 ,47,26,28 }, + {226,210,227 ,304,286,305 ,47,28,48 }, {227,210,211 ,305,286,288 ,48,28,30 }, + {227,211,212 ,305,288,306 ,48,30,49 }, {212,211,196 ,307,288,307 ,49,30,32 }, + {228,212,229 ,308,290,309 ,50,33,51 }, {229,212,213 ,309,290,291 ,51,33,34 }, + {229,213,230 ,309,291,310 ,51,34,52 }, {230,213,214 ,310,291,292 ,52,34,35 }, + {230,214,231 ,310,292,311 ,52,35,53 }, {231,214,215 ,311,292,293 ,53,35,36 }, + {231,215,232 ,311,293,312 ,53,36,54 }, {232,215,216 ,312,293,294 ,54,36,37 }, + {232,216,233 ,312,294,313 ,54,37,55 }, {233,216,217 ,313,294,295 ,55,37,38 }, + {233,217,234 ,313,295,314 ,55,38,56 }, {234,217,218 ,314,295,296 ,56,38,39 }, + {234,218,235 ,314,296,315 ,56,39,57 }, {235,218,219 ,315,296,297 ,57,39,40 }, + {235,219,236 ,315,297,316 ,57,40,58 }, {236,219,220 ,316,297,298 ,58,40,41 }, + {236,220,237 ,316,298,317 ,58,41,59 }, {237,220,221 ,317,298,299 ,59,41,42 }, + {237,221,238 ,317,299,318 ,59,42,60 }, {238,221,222 ,318,299,300 ,60,42,43 }, + {238,222,239 ,318,300,319 ,60,43,61 }, {239,222,223 ,319,300,301 ,61,43,44 }, + {239,223,240 ,319,301,320 ,61,44,62 }, {240,223,224 ,320,301,302 ,62,44,45 }, + {240,224,241 ,320,302,321 ,62,45,63 }, {241,224,225 ,321,302,303 ,63,45,46 }, + {241,225,242 ,321,303,322 ,63,46,64 }, {242,225,226 ,322,303,304 ,64,46,47 }, + {242,226,243 ,322,304,323 ,64,47,65 }, {243,226,227 ,323,304,305 ,65,47,48 }, + {243,227,228 ,323,305,324 ,65,48,66 }, {228,227,212 ,325,305,325 ,66,48,49 }, + {244,228,245 ,326,308,327 ,67,50,68 }, {245,228,229 ,327,308,309 ,68,50,51 }, + {245,229,246 ,327,309,328 ,68,51,69 }, {246,229,230 ,328,309,310 ,69,51,52 }, + {246,230,247 ,328,310,329 ,69,52,70 }, {247,230,231 ,329,310,311 ,70,52,53 }, + {247,231,248 ,329,311,330 ,70,53,71 }, {248,231,232 ,330,311,312 ,71,53,54 }, + {248,232,249 ,330,312,331 ,71,54,72 }, {249,232,233 ,331,312,313 ,72,54,55 }, + {249,233,250 ,331,313,332 ,72,55,73 }, {250,233,234 ,332,313,314 ,73,55,56 }, + {250,234,251 ,332,314,333 ,73,56,74 }, {251,234,235 ,333,314,315 ,74,56,57 }, + {251,235,252 ,333,315,334 ,74,57,75 }, {252,235,236 ,334,315,316 ,75,57,58 }, + {252,236,253 ,334,316,335 ,75,58,76 }, {253,236,237 ,335,316,317 ,76,58,59 }, + {253,237,254 ,335,317,336 ,76,59,77 }, {254,237,238 ,336,317,318 ,77,59,60 }, + {254,238,255 ,336,318,337 ,77,60,78 }, {255,238,239 ,337,318,319 ,78,60,61 }, + {255,239,256 ,337,319,338 ,78,61,79 }, {256,239,240 ,338,319,320 ,79,61,62 }, + {256,240,257 ,338,320,339 ,79,62,80 }, {257,240,241 ,339,320,321 ,80,62,63 }, + {257,241,258 ,339,321,340 ,80,63,81 }, {258,241,242 ,340,321,322 ,81,63,64 }, + {258,242,259 ,340,322,341 ,81,64,82 }, {259,242,243 ,341,322,323 ,82,64,65 }, + {259,243,244 ,341,323,342 ,82,65,83 }, {244,243,228 ,343,323,343 ,83,65,66 } +}, + +//lid 9 +{ +// Object #-1 + {0,1,2 ,0,1,2 ,0,1,2 }, {0,2,3 ,3,2,4 ,3,2,4 }, {0,3,4 ,5,4,6 ,5,4,6 }, + {0,4,5 ,7,6,8 ,7,6,8 }, {0,5,6 ,9,8,10 ,9,8,10 }, {0,6,7 ,11,10,12 ,11,10,12 }, + {0,7,8 ,13,12,14 ,13,12,14 }, {0,8,9 ,15,14,16 ,15,14,16 }, {0,9,10 ,17,16,18 ,17,16,18 }, + {0,10,11 ,19,18,20 ,19,18,20 }, {0,11,12 ,21,20,22 ,21,20,22 }, + {0,12,13 ,23,22,24 ,23,22,24 }, {0,13,14 ,25,24,26 ,25,24,26 }, + {0,14,15 ,27,26,28 ,27,26,28 }, {0,15,16 ,29,28,30 ,29,28,30 }, + {0,16,1 ,31,30,31 ,31,30,32 }, {1,17,18 ,1,32,33 ,1,33,34 }, + {1,18,2 ,1,33,2 ,1,34,2 }, {2,18,19 ,2,33,34 ,2,34,35 }, {2,19,3 ,2,34,4 ,2,35,4 }, + {3,19,20 ,4,34,35 ,4,35,36 }, {3,20,4 ,4,35,6 ,4,36,6 }, {4,20,21 ,6,35,36 ,6,36,37 }, + {4,21,5 ,6,36,8 ,6,37,8 }, {5,21,22 ,8,36,37 ,8,37,38 }, {5,22,6 ,8,37,10 ,8,38,10 }, + {6,22,23 ,10,37,38 ,10,38,39 }, {6,23,7 ,10,38,12 ,10,39,12 }, + {7,23,24 ,12,38,39 ,12,39,40 }, {7,24,8 ,12,39,14 ,12,40,14 }, + {8,24,25 ,14,39,40 ,14,40,41 }, {8,25,9 ,14,40,16 ,14,41,16 }, + {9,25,26 ,16,40,41 ,16,41,42 }, {9,26,10 ,16,41,18 ,16,42,18 }, + {10,26,27 ,18,41,42 ,18,42,43 }, {10,27,11 ,18,42,20 ,18,43,20 }, + {11,27,28 ,20,42,43 ,20,43,44 }, {11,28,12 ,20,43,22 ,20,44,22 }, + {12,28,29 ,22,43,44 ,22,44,45 }, {12,29,13 ,22,44,24 ,22,45,24 }, + {13,29,30 ,24,44,45 ,24,45,46 }, {13,30,14 ,24,45,26 ,24,46,26 }, + {14,30,31 ,26,45,46 ,26,46,47 }, {14,31,15 ,26,46,28 ,26,47,28 }, + {15,31,32 ,28,46,47 ,28,47,48 }, {15,32,16 ,28,47,30 ,28,48,30 }, + {16,32,17 ,30,47,48 ,30,48,49 }, {16,17,1 ,30,49,49 ,30,49,32 }, + {17,33,34 ,32,50,51 ,33,50,51 }, {17,34,18 ,32,51,33 ,33,51,34 }, + {18,34,35 ,33,51,52 ,34,51,52 }, {18,35,19 ,33,52,34 ,34,52,35 }, + {19,35,36 ,34,52,53 ,35,52,53 }, {19,36,20 ,34,53,35 ,35,53,36 }, + {20,36,37 ,35,53,54 ,36,53,54 }, {20,37,21 ,35,54,36 ,36,54,37 }, + {21,37,38 ,36,54,55 ,37,54,55 }, {21,38,22 ,36,55,37 ,37,55,38 }, + {22,38,39 ,37,55,56 ,38,55,56 }, {22,39,23 ,37,56,38 ,38,56,39 }, + {23,39,40 ,38,56,57 ,39,56,57 }, {23,40,24 ,38,57,39 ,39,57,40 }, + {24,40,41 ,39,57,58 ,40,57,58 }, {24,41,25 ,39,58,40 ,40,58,41 }, + {25,41,42 ,40,58,59 ,41,58,59 }, {25,42,26 ,40,59,41 ,41,59,42 }, + {26,42,43 ,41,59,60 ,42,59,60 }, {26,43,27 ,41,60,42 ,42,60,43 }, + {27,43,44 ,42,60,61 ,43,60,61 }, {27,44,28 ,42,61,43 ,43,61,44 }, + {28,44,45 ,43,61,62 ,44,61,62 }, {28,45,29 ,43,62,44 ,44,62,45 }, + {29,45,46 ,44,62,63 ,45,62,63 }, {29,46,30 ,44,63,45 ,45,63,46 }, + {30,46,47 ,45,63,64 ,46,63,64 }, {30,47,31 ,45,64,46 ,46,64,47 }, + {31,47,48 ,46,64,65 ,47,64,65 }, {31,48,32 ,46,65,47 ,47,65,48 }, + {32,48,33 ,47,65,66 ,48,65,66 }, {32,33,17 ,47,67,67 ,48,66,49 }, + {33,49,50 ,50,68,69 ,50,67,68 }, {33,50,34 ,50,69,51 ,50,68,51 }, + {34,50,51 ,51,69,70 ,51,68,69 }, {34,51,35 ,51,70,52 ,51,69,52 }, + {35,51,52 ,52,70,71 ,52,69,70 }, {35,52,36 ,52,71,53 ,52,70,53 }, + {36,52,53 ,53,71,72 ,53,70,71 }, {36,53,37 ,53,72,54 ,53,71,54 }, + {37,53,54 ,54,72,73 ,54,71,72 }, {37,54,38 ,54,73,55 ,54,72,55 }, + {38,54,55 ,55,73,74 ,55,72,73 }, {38,55,39 ,55,74,56 ,55,73,56 }, + {39,55,56 ,56,74,75 ,56,73,74 }, {39,56,40 ,56,75,57 ,56,74,57 }, + {40,56,57 ,57,75,76 ,57,74,75 }, {40,57,41 ,57,76,58 ,57,75,58 }, + {41,57,58 ,58,76,77 ,58,75,76 }, {41,58,42 ,58,77,59 ,58,76,59 }, + {42,58,59 ,59,77,78 ,59,76,77 }, {42,59,43 ,59,78,60 ,59,77,60 }, + {43,59,60 ,60,78,79 ,60,77,78 }, {43,60,44 ,60,79,61 ,60,78,61 }, + {44,60,61 ,61,79,80 ,61,78,79 }, {44,61,45 ,61,80,62 ,61,79,62 }, + {45,61,62 ,62,80,81 ,62,79,80 }, {45,62,46 ,62,81,63 ,62,80,63 }, + {46,62,63 ,63,81,82 ,63,80,81 }, {46,63,47 ,63,82,64 ,63,81,64 }, + {47,63,64 ,64,82,83 ,64,81,82 }, {47,64,48 ,64,83,65 ,64,82,65 }, + {48,64,49 ,65,83,84 ,65,82,83 }, {48,49,33 ,65,85,85 ,65,83,66 }, + {66,65,67 ,86,87,88 ,1,0,2 }, {67,65,68 ,88,89,90 ,2,3,4 }, {68,65,69 ,90,91,92 ,4,5,6 }, + {69,65,70 ,92,93,94 ,6,7,8 }, {70,65,71 ,94,95,96 ,8,9,10 }, + {71,65,72 ,96,97,98 ,10,11,12 }, {72,65,73 ,98,99,100 ,12,13,14 }, + {73,65,74 ,100,101,102 ,14,15,16 }, {74,65,75 ,102,103,104 ,16,17,18 }, + {75,65,76 ,104,105,106 ,18,19,20 }, {76,65,77 ,106,107,108 ,20,21,22 }, + {77,65,78 ,108,109,110 ,22,23,24 }, {78,65,79 ,110,111,112 ,24,25,26 }, + {79,65,80 ,112,113,114 ,26,27,28 }, {80,65,81 ,114,115,116 ,28,29,30 }, + {81,65,66 ,116,117,117 ,30,31,32 }, {82,66,83 ,118,86,119 ,33,1,34 }, + {83,66,67 ,119,86,88 ,34,1,2 }, {83,67,84 ,119,88,120 ,34,2,35 }, + {84,67,68 ,120,88,90 ,35,2,4 }, {84,68,85 ,120,90,121 ,35,4,36 }, + {85,68,69 ,121,90,92 ,36,4,6 }, {85,69,86 ,121,92,122 ,36,6,37 }, + {86,69,70 ,122,92,94 ,37,6,8 }, {86,70,87 ,122,94,123 ,37,8,38 }, + {87,70,71 ,123,94,96 ,38,8,10 }, {87,71,88 ,123,96,124 ,38,10,39 }, + {88,71,72 ,124,96,98 ,39,10,12 }, {88,72,89 ,124,98,125 ,39,12,40 }, + {89,72,73 ,125,98,100 ,40,12,14 }, {89,73,90 ,125,100,126 ,40,14,41 }, + {90,73,74 ,126,100,102 ,41,14,16 }, {90,74,91 ,126,102,127 ,41,16,42 }, + {91,74,75 ,127,102,104 ,42,16,18 }, {91,75,92 ,127,104,128 ,42,18,43 }, + {92,75,76 ,128,104,106 ,43,18,20 }, {92,76,93 ,128,106,129 ,43,20,44 }, + {93,76,77 ,129,106,108 ,44,20,22 }, {93,77,94 ,129,108,130 ,44,22,45 }, + {94,77,78 ,130,108,110 ,45,22,24 }, {94,78,95 ,130,110,131 ,45,24,46 }, + {95,78,79 ,131,110,112 ,46,24,26 }, {95,79,96 ,131,112,132 ,46,26,47 }, + {96,79,80 ,132,112,114 ,47,26,28 }, {96,80,97 ,132,114,133 ,47,28,48 }, + {97,80,81 ,133,114,116 ,48,28,30 }, {97,81,82 ,133,116,134 ,48,30,49 }, + {82,81,66 ,135,116,135 ,49,30,32 }, {98,82,99 ,136,118,137 ,50,33,51 }, + {99,82,83 ,137,118,119 ,51,33,34 }, {99,83,100 ,137,119,138 ,51,34,52 }, + {100,83,84 ,138,119,120 ,52,34,35 }, {100,84,101 ,138,120,139 ,52,35,53 }, + {101,84,85 ,139,120,121 ,53,35,36 }, {101,85,102 ,139,121,140 ,53,36,54 }, + {102,85,86 ,140,121,122 ,54,36,37 }, {102,86,103 ,140,122,141 ,54,37,55 }, + {103,86,87 ,141,122,123 ,55,37,38 }, {103,87,104 ,141,123,142 ,55,38,56 }, + {104,87,88 ,142,123,124 ,56,38,39 }, {104,88,105 ,142,124,143 ,56,39,57 }, + {105,88,89 ,143,124,125 ,57,39,40 }, {105,89,106 ,143,125,144 ,57,40,58 }, + {106,89,90 ,144,125,126 ,58,40,41 }, {106,90,107 ,144,126,145 ,58,41,59 }, + {107,90,91 ,145,126,127 ,59,41,42 }, {107,91,108 ,145,127,146 ,59,42,60 }, + {108,91,92 ,146,127,128 ,60,42,43 }, {108,92,109 ,146,128,147 ,60,43,61 }, + {109,92,93 ,147,128,129 ,61,43,44 }, {109,93,110 ,147,129,148 ,61,44,62 }, + {110,93,94 ,148,129,130 ,62,44,45 }, {110,94,111 ,148,130,149 ,62,45,63 }, + {111,94,95 ,149,130,131 ,63,45,46 }, {111,95,112 ,149,131,150 ,63,46,64 }, + {112,95,96 ,150,131,132 ,64,46,47 }, {112,96,113 ,150,132,151 ,64,47,65 }, + {113,96,97 ,151,132,133 ,65,47,48 }, {113,97,98 ,151,133,152 ,65,48,66 }, + {98,97,82 ,153,133,153 ,66,48,49 }, {114,98,115 ,154,136,155 ,67,50,68 }, + {115,98,99 ,155,136,137 ,68,50,51 }, {115,99,116 ,155,137,156 ,68,51,69 }, + {116,99,100 ,156,137,138 ,69,51,52 }, {116,100,117 ,156,138,157 ,69,52,70 }, + {117,100,101 ,157,138,139 ,70,52,53 }, {117,101,118 ,157,139,158 ,70,53,71 }, + {118,101,102 ,158,139,140 ,71,53,54 }, {118,102,119 ,158,140,159 ,71,54,72 }, + {119,102,103 ,159,140,141 ,72,54,55 }, {119,103,120 ,159,141,160 ,72,55,73 }, + {120,103,104 ,160,141,142 ,73,55,56 }, {120,104,121 ,160,142,161 ,73,56,74 }, + {121,104,105 ,161,142,143 ,74,56,57 }, {121,105,122 ,161,143,162 ,74,57,75 }, + {122,105,106 ,162,143,144 ,75,57,58 }, {122,106,123 ,162,144,163 ,75,58,76 }, + {123,106,107 ,163,144,145 ,76,58,59 }, {123,107,124 ,163,145,164 ,76,59,77 }, + {124,107,108 ,164,145,146 ,77,59,60 }, {124,108,125 ,164,146,165 ,77,60,78 }, + {125,108,109 ,165,146,147 ,78,60,61 }, {125,109,126 ,165,147,166 ,78,61,79 }, + {126,109,110 ,166,147,148 ,79,61,62 }, {126,110,127 ,166,148,167 ,79,62,80 }, + {127,110,111 ,167,148,149 ,80,62,63 }, {127,111,128 ,167,149,168 ,80,63,81 }, + {128,111,112 ,168,149,150 ,81,63,64 }, {128,112,129 ,168,150,169 ,81,64,82 }, + {129,112,113 ,169,150,151 ,82,64,65 }, {129,113,114 ,169,151,170 ,82,65,83 }, + {114,113,98 ,171,151,171 ,83,65,66 } +// Object #-1 + , {130,131,132 ,172,173,174 ,0,1,2 }, {130,132,133 ,175,174,176 ,3,2,4 }, + {130,133,134 ,177,176,178 ,5,4,6 }, {130,134,135 ,179,178,180 ,7,6,8 }, + {130,135,136 ,181,180,182 ,9,8,10 }, {130,136,137 ,183,182,184 ,11,10,12 }, + {130,137,138 ,185,184,186 ,13,12,14 }, {130,138,139 ,187,186,188 ,15,14,16 }, + {130,139,140 ,189,188,190 ,17,16,18 }, {130,140,141 ,191,190,192 ,19,18,20 }, + {130,141,142 ,193,192,194 ,21,20,22 }, {130,142,143 ,195,194,196 ,23,22,24 }, + {130,143,144 ,197,196,198 ,25,24,26 }, {130,144,145 ,199,198,200 ,27,26,28 }, + {130,145,146 ,201,200,202 ,29,28,30 }, {130,146,131 ,203,202,203 ,31,30,32 }, + {131,147,148 ,173,204,205 ,1,33,34 }, {131,148,132 ,173,205,174 ,1,34,2 }, + {132,148,149 ,174,205,206 ,2,34,35 }, {132,149,133 ,174,206,176 ,2,35,4 }, + {133,149,150 ,176,206,207 ,4,35,36 }, {133,150,134 ,176,207,178 ,4,36,6 }, + {134,150,151 ,178,207,208 ,6,36,37 }, {134,151,135 ,178,208,180 ,6,37,8 }, + {135,151,152 ,180,208,209 ,8,37,38 }, {135,152,136 ,180,209,182 ,8,38,10 }, + {136,152,153 ,182,209,210 ,10,38,39 }, {136,153,137 ,182,210,184 ,10,39,12 }, + {137,153,154 ,184,210,211 ,12,39,40 }, {137,154,138 ,184,211,186 ,12,40,14 }, + {138,154,155 ,186,211,212 ,14,40,41 }, {138,155,139 ,186,212,188 ,14,41,16 }, + {139,155,156 ,188,212,213 ,16,41,42 }, {139,156,140 ,188,213,190 ,16,42,18 }, + {140,156,157 ,190,213,214 ,18,42,43 }, {140,157,141 ,190,214,192 ,18,43,20 }, + {141,157,158 ,192,214,215 ,20,43,44 }, {141,158,142 ,192,215,194 ,20,44,22 }, + {142,158,159 ,194,215,216 ,22,44,45 }, {142,159,143 ,194,216,196 ,22,45,24 }, + {143,159,160 ,196,216,217 ,24,45,46 }, {143,160,144 ,196,217,198 ,24,46,26 }, + {144,160,161 ,198,217,218 ,26,46,47 }, {144,161,145 ,198,218,200 ,26,47,28 }, + {145,161,162 ,200,218,219 ,28,47,48 }, {145,162,146 ,200,219,202 ,28,48,30 }, + {146,162,147 ,202,219,220 ,30,48,49 }, {146,147,131 ,202,221,221 ,30,49,32 }, + {147,163,164 ,204,222,223 ,33,50,51 }, {147,164,148 ,204,223,205 ,33,51,34 }, + {148,164,165 ,205,223,224 ,34,51,52 }, {148,165,149 ,205,224,206 ,34,52,35 }, + {149,165,166 ,206,224,225 ,35,52,53 }, {149,166,150 ,206,225,207 ,35,53,36 }, + {150,166,167 ,207,225,226 ,36,53,54 }, {150,167,151 ,207,226,208 ,36,54,37 }, + {151,167,168 ,208,226,227 ,37,54,55 }, {151,168,152 ,208,227,209 ,37,55,38 }, + {152,168,169 ,209,227,228 ,38,55,56 }, {152,169,153 ,209,228,210 ,38,56,39 }, + {153,169,170 ,210,228,229 ,39,56,57 }, {153,170,154 ,210,229,211 ,39,57,40 }, + {154,170,171 ,211,229,230 ,40,57,58 }, {154,171,155 ,211,230,212 ,40,58,41 }, + {155,171,172 ,212,230,231 ,41,58,59 }, {155,172,156 ,212,231,213 ,41,59,42 }, + {156,172,173 ,213,231,232 ,42,59,60 }, {156,173,157 ,213,232,214 ,42,60,43 }, + {157,173,174 ,214,232,233 ,43,60,61 }, {157,174,158 ,214,233,215 ,43,61,44 }, + {158,174,175 ,215,233,234 ,44,61,62 }, {158,175,159 ,215,234,216 ,44,62,45 }, + {159,175,176 ,216,234,235 ,45,62,63 }, {159,176,160 ,216,235,217 ,45,63,46 }, + {160,176,177 ,217,235,236 ,46,63,64 }, {160,177,161 ,217,236,218 ,46,64,47 }, + {161,177,178 ,218,236,237 ,47,64,65 }, {161,178,162 ,218,237,219 ,47,65,48 }, + {162,178,163 ,219,237,238 ,48,65,66 }, {162,163,147 ,219,239,239 ,48,66,49 }, + {163,179,180 ,222,240,241 ,50,67,68 }, {163,180,164 ,222,241,223 ,50,68,51 }, + {164,180,181 ,223,241,242 ,51,68,69 }, {164,181,165 ,223,242,224 ,51,69,52 }, + {165,181,182 ,224,242,243 ,52,69,70 }, {165,182,166 ,224,243,225 ,52,70,53 }, + {166,182,183 ,225,243,244 ,53,70,71 }, {166,183,167 ,225,244,226 ,53,71,54 }, + {167,183,184 ,226,244,245 ,54,71,72 }, {167,184,168 ,226,245,227 ,54,72,55 }, + {168,184,185 ,227,245,246 ,55,72,73 }, {168,185,169 ,227,246,228 ,55,73,56 }, + {169,185,186 ,228,246,247 ,56,73,74 }, {169,186,170 ,228,247,229 ,56,74,57 }, + {170,186,187 ,229,247,248 ,57,74,75 }, {170,187,171 ,229,248,230 ,57,75,58 }, + {171,187,188 ,230,248,249 ,58,75,76 }, {171,188,172 ,230,249,231 ,58,76,59 }, + {172,188,189 ,231,249,250 ,59,76,77 }, {172,189,173 ,231,250,232 ,59,77,60 }, + {173,189,190 ,232,250,251 ,60,77,78 }, {173,190,174 ,232,251,233 ,60,78,61 }, + {174,190,61 ,233,251,252 ,61,78,79 }, {174,61,175 ,233,252,234 ,61,79,62 }, + {175,61,191 ,234,252,253 ,62,79,80 }, {175,191,176 ,234,253,235 ,62,80,63 }, + {176,191,192 ,235,253,254 ,63,80,81 }, {176,192,177 ,235,254,236 ,63,81,64 }, + {177,192,193 ,236,254,255 ,64,81,82 }, {177,193,178 ,236,255,237 ,64,82,65 }, + {178,193,179 ,237,255,256 ,65,82,83 }, {178,179,163 ,237,257,257 ,65,83,66 }, + {195,194,196 ,258,259,260 ,1,0,2 }, {196,194,197 ,260,261,262 ,2,3,4 }, + {197,194,198 ,262,263,264 ,4,5,6 }, {198,194,199 ,264,265,266 ,6,7,8 }, + {199,194,200 ,266,267,268 ,8,9,10 }, {200,194,201 ,268,269,270 ,10,11,12 }, + {201,194,202 ,270,271,272 ,12,13,14 }, {202,194,203 ,272,273,274 ,14,15,16 }, + {203,194,204 ,274,275,276 ,16,17,18 }, {204,194,205 ,276,277,278 ,18,19,20 }, + {205,194,206 ,278,279,280 ,20,21,22 }, {206,194,207 ,280,281,282 ,22,23,24 }, + {207,194,208 ,282,283,284 ,24,25,26 }, {208,194,209 ,284,285,286 ,26,27,28 }, + {209,194,210 ,286,287,288 ,28,29,30 }, {210,194,195 ,288,289,289 ,30,31,32 }, + {211,195,212 ,290,258,291 ,33,1,34 }, {212,195,196 ,291,258,260 ,34,1,2 }, + {212,196,213 ,291,260,292 ,34,2,35 }, {213,196,197 ,292,260,262 ,35,2,4 }, + {213,197,214 ,292,262,293 ,35,4,36 }, {214,197,198 ,293,262,264 ,36,4,6 }, + {214,198,215 ,293,264,294 ,36,6,37 }, {215,198,199 ,294,264,266 ,37,6,8 }, + {215,199,216 ,294,266,295 ,37,8,38 }, {216,199,200 ,295,266,268 ,38,8,10 }, + {216,200,217 ,295,268,296 ,38,10,39 }, {217,200,201 ,296,268,270 ,39,10,12 }, + {217,201,218 ,296,270,297 ,39,12,40 }, {218,201,202 ,297,270,272 ,40,12,14 }, + {218,202,219 ,297,272,298 ,40,14,41 }, {219,202,203 ,298,272,274 ,41,14,16 }, + {219,203,220 ,298,274,299 ,41,16,42 }, {220,203,204 ,299,274,276 ,42,16,18 }, + {220,204,221 ,299,276,300 ,42,18,43 }, {221,204,205 ,300,276,278 ,43,18,20 }, + {221,205,222 ,300,278,301 ,43,20,44 }, {222,205,206 ,301,278,280 ,44,20,22 }, + {222,206,223 ,301,280,302 ,44,22,45 }, {223,206,207 ,302,280,282 ,45,22,24 }, + {223,207,224 ,302,282,303 ,45,24,46 }, {224,207,208 ,303,282,284 ,46,24,26 }, + {224,208,225 ,303,284,304 ,46,26,47 }, {225,208,209 ,304,284,286 ,47,26,28 }, + {225,209,226 ,304,286,305 ,47,28,48 }, {226,209,210 ,305,286,288 ,48,28,30 }, + {226,210,211 ,305,288,306 ,48,30,49 }, {211,210,195 ,307,288,307 ,49,30,32 }, + {227,211,228 ,308,290,309 ,50,33,51 }, {228,211,212 ,309,290,291 ,51,33,34 }, + {228,212,229 ,309,291,310 ,51,34,52 }, {229,212,213 ,310,291,292 ,52,34,35 }, + {229,213,230 ,310,292,311 ,52,35,53 }, {230,213,214 ,311,292,293 ,53,35,36 }, + {230,214,231 ,311,293,312 ,53,36,54 }, {231,214,215 ,312,293,294 ,54,36,37 }, + {231,215,232 ,312,294,313 ,54,37,55 }, {232,215,216 ,313,294,295 ,55,37,38 }, + {232,216,233 ,313,295,314 ,55,38,56 }, {233,216,217 ,314,295,296 ,56,38,39 }, + {233,217,234 ,314,296,315 ,56,39,57 }, {234,217,218 ,315,296,297 ,57,39,40 }, + {234,218,235 ,315,297,316 ,57,40,58 }, {235,218,219 ,316,297,298 ,58,40,41 }, + {235,219,236 ,316,298,317 ,58,41,59 }, {236,219,220 ,317,298,299 ,59,41,42 }, + {236,220,237 ,317,299,318 ,59,42,60 }, {237,220,221 ,318,299,300 ,60,42,43 }, + {237,221,238 ,318,300,319 ,60,43,61 }, {238,221,222 ,319,300,301 ,61,43,44 }, + {238,222,239 ,319,301,320 ,61,44,62 }, {239,222,223 ,320,301,302 ,62,44,45 }, + {239,223,240 ,320,302,321 ,62,45,63 }, {240,223,224 ,321,302,303 ,63,45,46 }, + {240,224,241 ,321,303,322 ,63,46,64 }, {241,224,225 ,322,303,304 ,64,46,47 }, + {241,225,242 ,322,304,323 ,64,47,65 }, {242,225,226 ,323,304,305 ,65,47,48 }, + {242,226,227 ,323,305,324 ,65,48,66 }, {227,226,211 ,325,305,325 ,66,48,49 }, + {243,227,244 ,326,308,327 ,67,50,68 }, {244,227,228 ,327,308,309 ,68,50,51 }, + {244,228,245 ,327,309,328 ,68,51,69 }, {245,228,229 ,328,309,310 ,69,51,52 }, + {245,229,246 ,328,310,329 ,69,52,70 }, {246,229,230 ,329,310,311 ,70,52,53 }, + {246,230,247 ,329,311,330 ,70,53,71 }, {247,230,231 ,330,311,312 ,71,53,54 }, + {247,231,248 ,330,312,331 ,71,54,72 }, {248,231,232 ,331,312,313 ,72,54,55 }, + {248,232,249 ,331,313,332 ,72,55,73 }, {249,232,233 ,332,313,314 ,73,55,56 }, + {249,233,250 ,332,314,333 ,73,56,74 }, {250,233,234 ,333,314,315 ,74,56,57 }, + {250,234,251 ,333,315,334 ,74,57,75 }, {251,234,235 ,334,315,316 ,75,57,58 }, + {251,235,252 ,334,316,335 ,75,58,76 }, {252,235,236 ,335,316,317 ,76,58,59 }, + {252,236,253 ,335,317,336 ,76,59,77 }, {253,236,237 ,336,317,318 ,77,59,60 }, + {253,237,254 ,336,318,337 ,77,60,78 }, {254,237,238 ,337,318,319 ,78,60,61 }, + {254,238,126 ,337,319,338 ,78,61,79 }, {126,238,239 ,338,319,320 ,79,61,62 }, + {126,239,255 ,338,320,339 ,79,62,80 }, {255,239,240 ,339,320,321 ,80,62,63 }, + {255,240,256 ,339,321,340 ,80,63,81 }, {256,240,241 ,340,321,322 ,81,63,64 }, + {256,241,257 ,340,322,341 ,81,64,82 }, {257,241,242 ,341,322,323 ,82,64,65 }, + {257,242,243 ,341,323,342 ,82,65,83 }, {243,242,227 ,343,323,343 ,83,65,66 } +}, + +//lid 8 +{ +// Object #-1 + {0,1,2 ,0,1,2 ,0,1,2 }, {0,2,3 ,3,2,4 ,3,2,4 }, {0,3,4 ,5,4,6 ,5,4,6 }, + {0,4,5 ,7,6,8 ,7,6,8 }, {0,5,6 ,9,8,10 ,9,8,10 }, {0,6,7 ,11,10,12 ,11,10,12 }, + {0,7,8 ,13,12,14 ,13,12,14 }, {0,8,9 ,15,14,16 ,15,14,16 }, {0,9,10 ,17,16,18 ,17,16,18 }, + {0,10,11 ,19,18,20 ,19,18,20 }, {0,11,12 ,21,20,22 ,21,20,22 }, + {0,12,13 ,23,22,24 ,23,22,24 }, {0,13,14 ,25,24,26 ,25,24,26 }, + {0,14,15 ,27,26,28 ,27,26,28 }, {0,15,16 ,29,28,30 ,29,28,30 }, + {0,16,1 ,31,30,31 ,31,30,32 }, {1,17,18 ,1,32,33 ,1,33,34 }, + {1,18,2 ,1,33,2 ,1,34,2 }, {2,18,19 ,2,33,34 ,2,34,35 }, {2,19,3 ,2,34,4 ,2,35,4 }, + {3,19,20 ,4,34,35 ,4,35,36 }, {3,20,4 ,4,35,6 ,4,36,6 }, {4,20,21 ,6,35,36 ,6,36,37 }, + {4,21,5 ,6,36,8 ,6,37,8 }, {5,21,22 ,8,36,37 ,8,37,38 }, {5,22,6 ,8,37,10 ,8,38,10 }, + {6,22,23 ,10,37,38 ,10,38,39 }, {6,23,7 ,10,38,12 ,10,39,12 }, + {7,23,24 ,12,38,39 ,12,39,40 }, {7,24,8 ,12,39,14 ,12,40,14 }, + {8,24,25 ,14,39,40 ,14,40,41 }, {8,25,9 ,14,40,16 ,14,41,16 }, + {9,25,26 ,16,40,41 ,16,41,42 }, {9,26,10 ,16,41,18 ,16,42,18 }, + {10,26,27 ,18,41,42 ,18,42,43 }, {10,27,11 ,18,42,20 ,18,43,20 }, + {11,27,28 ,20,42,43 ,20,43,44 }, {11,28,12 ,20,43,22 ,20,44,22 }, + {12,28,29 ,22,43,44 ,22,44,45 }, {12,29,13 ,22,44,24 ,22,45,24 }, + {13,29,30 ,24,44,45 ,24,45,46 }, {13,30,14 ,24,45,26 ,24,46,26 }, + {14,30,31 ,26,45,46 ,26,46,47 }, {14,31,15 ,26,46,28 ,26,47,28 }, + {15,31,32 ,28,46,47 ,28,47,48 }, {15,32,16 ,28,47,30 ,28,48,30 }, + {16,32,17 ,30,47,48 ,30,48,49 }, {16,17,1 ,30,49,49 ,30,49,32 }, + {17,33,34 ,32,50,51 ,33,50,51 }, {17,34,18 ,32,51,33 ,33,51,34 }, + {18,34,35 ,33,51,52 ,34,51,52 }, {18,35,19 ,33,52,34 ,34,52,35 }, + {19,35,36 ,34,52,53 ,35,52,53 }, {19,36,20 ,34,53,35 ,35,53,36 }, + {20,36,37 ,35,53,54 ,36,53,54 }, {20,37,21 ,35,54,36 ,36,54,37 }, + {21,37,38 ,36,54,55 ,37,54,55 }, {21,38,22 ,36,55,37 ,37,55,38 }, + {22,38,39 ,37,55,56 ,38,55,56 }, {22,39,23 ,37,56,38 ,38,56,39 }, + {23,39,40 ,38,56,57 ,39,56,57 }, {23,40,24 ,38,57,39 ,39,57,40 }, + {24,40,41 ,39,57,58 ,40,57,58 }, {24,41,25 ,39,58,40 ,40,58,41 }, + {25,41,42 ,40,58,59 ,41,58,59 }, {25,42,26 ,40,59,41 ,41,59,42 }, + {26,42,43 ,41,59,60 ,42,59,60 }, {26,43,27 ,41,60,42 ,42,60,43 }, + {27,43,44 ,42,60,61 ,43,60,61 }, {27,44,28 ,42,61,43 ,43,61,44 }, + {28,44,45 ,43,61,62 ,44,61,62 }, {28,45,29 ,43,62,44 ,44,62,45 }, + {29,45,46 ,44,62,63 ,45,62,63 }, {29,46,30 ,44,63,45 ,45,63,46 }, + {30,46,47 ,45,63,64 ,46,63,64 }, {30,47,31 ,45,64,46 ,46,64,47 }, + {31,47,48 ,46,64,65 ,47,64,65 }, {31,48,32 ,46,65,47 ,47,65,48 }, + {32,48,33 ,47,65,66 ,48,65,66 }, {32,33,17 ,47,67,67 ,48,66,49 }, + {33,49,50 ,50,68,69 ,50,67,68 }, {33,50,34 ,50,69,51 ,50,68,51 }, + {34,50,51 ,51,69,70 ,51,68,69 }, {34,51,35 ,51,70,52 ,51,69,52 }, + {35,51,52 ,52,70,71 ,52,69,70 }, {35,52,36 ,52,71,53 ,52,70,53 }, + {36,52,53 ,53,71,72 ,53,70,71 }, {36,53,37 ,53,72,54 ,53,71,54 }, + {37,53,54 ,54,72,73 ,54,71,72 }, {37,54,38 ,54,73,55 ,54,72,55 }, + {38,54,55 ,55,73,74 ,55,72,73 }, {38,55,39 ,55,74,56 ,55,73,56 }, + {39,55,56 ,56,74,75 ,56,73,74 }, {39,56,40 ,56,75,57 ,56,74,57 }, + {40,56,57 ,57,75,76 ,57,74,75 }, {40,57,41 ,57,76,58 ,57,75,58 }, + {41,57,58 ,58,76,77 ,58,75,76 }, {41,58,42 ,58,77,59 ,58,76,59 }, + {42,58,59 ,59,77,78 ,59,76,77 }, {42,59,43 ,59,78,60 ,59,77,60 }, + {43,59,60 ,60,78,79 ,60,77,78 }, {43,60,44 ,60,79,61 ,60,78,61 }, + {44,60,61 ,61,79,80 ,61,78,79 }, {44,61,45 ,61,80,62 ,61,79,62 }, + {45,61,62 ,62,80,81 ,62,79,80 }, {45,62,46 ,62,81,63 ,62,80,63 }, + {46,62,63 ,63,81,82 ,63,80,81 }, {46,63,47 ,63,82,64 ,63,81,64 }, + {47,63,64 ,64,82,83 ,64,81,82 }, {47,64,48 ,64,83,65 ,64,82,65 }, + {48,64,49 ,65,83,84 ,65,82,83 }, {48,49,33 ,65,85,85 ,65,83,66 }, + {66,65,67 ,86,87,88 ,1,0,2 }, {67,65,68 ,88,89,90 ,2,3,4 }, {68,65,69 ,90,91,92 ,4,5,6 }, + {69,65,70 ,92,93,94 ,6,7,8 }, {70,65,71 ,94,95,96 ,8,9,10 }, + {71,65,72 ,96,97,98 ,10,11,12 }, {72,65,73 ,98,99,100 ,12,13,14 }, + {73,65,74 ,100,101,102 ,14,15,16 }, {74,65,75 ,102,103,104 ,16,17,18 }, + {75,65,76 ,104,105,106 ,18,19,20 }, {76,65,77 ,106,107,108 ,20,21,22 }, + {77,65,78 ,108,109,110 ,22,23,24 }, {78,65,79 ,110,111,112 ,24,25,26 }, + {79,65,80 ,112,113,114 ,26,27,28 }, {80,65,81 ,114,115,116 ,28,29,30 }, + {81,65,66 ,116,117,117 ,30,31,32 }, {82,66,83 ,118,86,119 ,33,1,34 }, + {83,66,67 ,119,86,88 ,34,1,2 }, {83,67,84 ,119,88,120 ,34,2,35 }, + {84,67,68 ,120,88,90 ,35,2,4 }, {84,68,85 ,120,90,121 ,35,4,36 }, + {85,68,69 ,121,90,92 ,36,4,6 }, {85,69,86 ,121,92,122 ,36,6,37 }, + {86,69,70 ,122,92,94 ,37,6,8 }, {86,70,87 ,122,94,123 ,37,8,38 }, + {87,70,71 ,123,94,96 ,38,8,10 }, {87,71,88 ,123,96,124 ,38,10,39 }, + {88,71,72 ,124,96,98 ,39,10,12 }, {88,72,89 ,124,98,125 ,39,12,40 }, + {89,72,73 ,125,98,100 ,40,12,14 }, {89,73,90 ,125,100,126 ,40,14,41 }, + {90,73,74 ,126,100,102 ,41,14,16 }, {90,74,91 ,126,102,127 ,41,16,42 }, + {91,74,75 ,127,102,104 ,42,16,18 }, {91,75,92 ,127,104,128 ,42,18,43 }, + {92,75,76 ,128,104,106 ,43,18,20 }, {92,76,93 ,128,106,129 ,43,20,44 }, + {93,76,77 ,129,106,108 ,44,20,22 }, {93,77,94 ,129,108,130 ,44,22,45 }, + {94,77,78 ,130,108,110 ,45,22,24 }, {94,78,95 ,130,110,131 ,45,24,46 }, + {95,78,79 ,131,110,112 ,46,24,26 }, {95,79,96 ,131,112,132 ,46,26,47 }, + {96,79,80 ,132,112,114 ,47,26,28 }, {96,80,97 ,132,114,133 ,47,28,48 }, + {97,80,81 ,133,114,116 ,48,28,30 }, {97,81,82 ,133,116,134 ,48,30,49 }, + {82,81,66 ,135,116,135 ,49,30,32 }, {98,82,99 ,136,118,137 ,50,33,51 }, + {99,82,83 ,137,118,119 ,51,33,34 }, {99,83,100 ,137,119,138 ,51,34,52 }, + {100,83,84 ,138,119,120 ,52,34,35 }, {100,84,101 ,138,120,139 ,52,35,53 }, + {101,84,85 ,139,120,121 ,53,35,36 }, {101,85,102 ,139,121,140 ,53,36,54 }, + {102,85,86 ,140,121,122 ,54,36,37 }, {102,86,103 ,140,122,141 ,54,37,55 }, + {103,86,87 ,141,122,123 ,55,37,38 }, {103,87,104 ,141,123,142 ,55,38,56 }, + {104,87,88 ,142,123,124 ,56,38,39 }, {104,88,105 ,142,124,143 ,56,39,57 }, + {105,88,89 ,143,124,125 ,57,39,40 }, {105,89,106 ,143,125,144 ,57,40,58 }, + {106,89,90 ,144,125,126 ,58,40,41 }, {106,90,107 ,144,126,145 ,58,41,59 }, + {107,90,91 ,145,126,127 ,59,41,42 }, {107,91,108 ,145,127,146 ,59,42,60 }, + {108,91,92 ,146,127,128 ,60,42,43 }, {108,92,109 ,146,128,147 ,60,43,61 }, + {109,92,93 ,147,128,129 ,61,43,44 }, {109,93,110 ,147,129,148 ,61,44,62 }, + {110,93,94 ,148,129,130 ,62,44,45 }, {110,94,111 ,148,130,149 ,62,45,63 }, + {111,94,95 ,149,130,131 ,63,45,46 }, {111,95,112 ,149,131,150 ,63,46,64 }, + {112,95,96 ,150,131,132 ,64,46,47 }, {112,96,113 ,150,132,151 ,64,47,65 }, + {113,96,97 ,151,132,133 ,65,47,48 }, {113,97,98 ,151,133,152 ,65,48,66 }, + {98,97,82 ,153,133,153 ,66,48,49 }, {114,98,115 ,154,136,155 ,67,50,68 }, + {115,98,99 ,155,136,137 ,68,50,51 }, {115,99,116 ,155,137,156 ,68,51,69 }, + {116,99,100 ,156,137,138 ,69,51,52 }, {116,100,117 ,156,138,157 ,69,52,70 }, + {117,100,101 ,157,138,139 ,70,52,53 }, {117,101,118 ,157,139,158 ,70,53,71 }, + {118,101,102 ,158,139,140 ,71,53,54 }, {118,102,119 ,158,140,159 ,71,54,72 }, + {119,102,103 ,159,140,141 ,72,54,55 }, {119,103,120 ,159,141,160 ,72,55,73 }, + {120,103,104 ,160,141,142 ,73,55,56 }, {120,104,121 ,160,142,161 ,73,56,74 }, + {121,104,105 ,161,142,143 ,74,56,57 }, {121,105,122 ,161,143,162 ,74,57,75 }, + {122,105,106 ,162,143,144 ,75,57,58 }, {122,106,123 ,162,144,163 ,75,58,76 }, + {123,106,107 ,163,144,145 ,76,58,59 }, {123,107,124 ,163,145,164 ,76,59,77 }, + {124,107,108 ,164,145,146 ,77,59,60 }, {124,108,125 ,164,146,165 ,77,60,78 }, + {125,108,109 ,165,146,147 ,78,60,61 }, {125,109,126 ,165,147,166 ,78,61,79 }, + {126,109,110 ,166,147,148 ,79,61,62 }, {126,110,127 ,166,148,167 ,79,62,80 }, + {127,110,111 ,167,148,149 ,80,62,63 }, {127,111,128 ,167,149,168 ,80,63,81 }, + {128,111,112 ,168,149,150 ,81,63,64 }, {128,112,129 ,168,150,169 ,81,64,82 }, + {129,112,113 ,169,150,151 ,82,64,65 }, {129,113,114 ,169,151,170 ,82,65,83 }, + {114,113,98 ,171,151,171 ,83,65,66 } +// Object #-1 + , {130,131,132 ,172,173,174 ,0,1,2 }, {130,132,133 ,175,174,176 ,3,2,4 }, + {130,133,134 ,177,176,178 ,5,4,6 }, {130,134,135 ,179,178,180 ,7,6,8 }, + {130,135,136 ,181,180,182 ,9,8,10 }, {130,136,137 ,183,182,184 ,11,10,12 }, + {130,137,138 ,185,184,186 ,13,12,14 }, {130,138,139 ,187,186,188 ,15,14,16 }, + {130,139,140 ,189,188,190 ,17,16,18 }, {130,140,141 ,191,190,192 ,19,18,20 }, + {130,141,142 ,193,192,194 ,21,20,22 }, {130,142,143 ,195,194,196 ,23,22,24 }, + {130,143,144 ,197,196,198 ,25,24,26 }, {130,144,145 ,199,198,200 ,27,26,28 }, + {130,145,146 ,201,200,202 ,29,28,30 }, {130,146,131 ,203,202,203 ,31,30,32 }, + {131,147,148 ,173,204,205 ,1,33,34 }, {131,148,132 ,173,205,174 ,1,34,2 }, + {132,148,149 ,174,205,206 ,2,34,35 }, {132,149,133 ,174,206,176 ,2,35,4 }, + {133,149,150 ,176,206,207 ,4,35,36 }, {133,150,134 ,176,207,178 ,4,36,6 }, + {134,150,151 ,178,207,208 ,6,36,37 }, {134,151,135 ,178,208,180 ,6,37,8 }, + {135,151,152 ,180,208,209 ,8,37,38 }, {135,152,136 ,180,209,182 ,8,38,10 }, + {136,152,153 ,182,209,210 ,10,38,39 }, {136,153,137 ,182,210,184 ,10,39,12 }, + {137,153,154 ,184,210,211 ,12,39,40 }, {137,154,138 ,184,211,186 ,12,40,14 }, + {138,154,155 ,186,211,212 ,14,40,41 }, {138,155,139 ,186,212,188 ,14,41,16 }, + {139,155,156 ,188,212,213 ,16,41,42 }, {139,156,140 ,188,213,190 ,16,42,18 }, + {140,156,157 ,190,213,214 ,18,42,43 }, {140,157,141 ,190,214,192 ,18,43,20 }, + {141,157,158 ,192,214,215 ,20,43,44 }, {141,158,142 ,192,215,194 ,20,44,22 }, + {142,158,159 ,194,215,216 ,22,44,45 }, {142,159,143 ,194,216,196 ,22,45,24 }, + {143,159,160 ,196,216,217 ,24,45,46 }, {143,160,144 ,196,217,198 ,24,46,26 }, + {144,160,161 ,198,217,218 ,26,46,47 }, {144,161,145 ,198,218,200 ,26,47,28 }, + {145,161,162 ,200,218,219 ,28,47,48 }, {145,162,146 ,200,219,202 ,28,48,30 }, + {146,162,147 ,202,219,220 ,30,48,49 }, {146,147,131 ,202,221,221 ,30,49,32 }, + {147,163,164 ,204,222,223 ,33,50,51 }, {147,164,148 ,204,223,205 ,33,51,34 }, + {148,164,165 ,205,223,224 ,34,51,52 }, {148,165,149 ,205,224,206 ,34,52,35 }, + {149,165,166 ,206,224,225 ,35,52,53 }, {149,166,150 ,206,225,207 ,35,53,36 }, + {150,166,167 ,207,225,226 ,36,53,54 }, {150,167,151 ,207,226,208 ,36,54,37 }, + {151,167,168 ,208,226,227 ,37,54,55 }, {151,168,152 ,208,227,209 ,37,55,38 }, + {152,168,169 ,209,227,228 ,38,55,56 }, {152,169,153 ,209,228,210 ,38,56,39 }, + {153,169,170 ,210,228,229 ,39,56,57 }, {153,170,154 ,210,229,211 ,39,57,40 }, + {154,170,171 ,211,229,230 ,40,57,58 }, {154,171,155 ,211,230,212 ,40,58,41 }, + {155,171,172 ,212,230,231 ,41,58,59 }, {155,172,156 ,212,231,213 ,41,59,42 }, + {156,172,173 ,213,231,232 ,42,59,60 }, {156,173,157 ,213,232,214 ,42,60,43 }, + {157,173,174 ,214,232,233 ,43,60,61 }, {157,174,158 ,214,233,215 ,43,61,44 }, + {158,174,175 ,215,233,234 ,44,61,62 }, {158,175,159 ,215,234,216 ,44,62,45 }, + {159,175,176 ,216,234,235 ,45,62,63 }, {159,176,160 ,216,235,217 ,45,63,46 }, + {160,176,177 ,217,235,236 ,46,63,64 }, {160,177,161 ,217,236,218 ,46,64,47 }, + {161,177,178 ,218,236,237 ,47,64,65 }, {161,178,162 ,218,237,219 ,47,65,48 }, + {162,178,163 ,219,237,238 ,48,65,66 }, {162,163,147 ,219,239,239 ,48,66,49 }, + {163,179,180 ,222,240,241 ,50,67,68 }, {163,180,164 ,222,241,223 ,50,68,51 }, + {164,180,181 ,223,241,242 ,51,68,69 }, {164,181,165 ,223,242,224 ,51,69,52 }, + {165,181,182 ,224,242,243 ,52,69,70 }, {165,182,166 ,224,243,225 ,52,70,53 }, + {166,182,183 ,225,243,244 ,53,70,71 }, {166,183,167 ,225,244,226 ,53,71,54 }, + {167,183,184 ,226,244,245 ,54,71,72 }, {167,184,168 ,226,245,227 ,54,72,55 }, + {168,184,185 ,227,245,246 ,55,72,73 }, {168,185,169 ,227,246,228 ,55,73,56 }, + {169,185,186 ,228,246,247 ,56,73,74 }, {169,186,170 ,228,247,229 ,56,74,57 }, + {170,186,187 ,229,247,248 ,57,74,75 }, {170,187,171 ,229,248,230 ,57,75,58 }, + {171,187,188 ,230,248,249 ,58,75,76 }, {171,188,172 ,230,249,231 ,58,76,59 }, + {172,188,189 ,231,249,250 ,59,76,77 }, {172,189,173 ,231,250,232 ,59,77,60 }, + {173,189,190 ,232,250,251 ,60,77,78 }, {173,190,174 ,232,251,233 ,60,78,61 }, + {174,190,191 ,233,251,252 ,61,78,79 }, {174,191,175 ,233,252,234 ,61,79,62 }, + {175,191,192 ,234,252,253 ,62,79,80 }, {175,192,176 ,234,253,235 ,62,80,63 }, + {176,192,193 ,235,253,254 ,63,80,81 }, {176,193,177 ,235,254,236 ,63,81,64 }, + {177,193,194 ,236,254,255 ,64,81,82 }, {177,194,178 ,236,255,237 ,64,82,65 }, + {178,194,179 ,237,255,256 ,65,82,83 }, {178,179,163 ,237,257,257 ,65,83,66 }, + {196,195,197 ,258,259,260 ,1,0,2 }, {197,195,198 ,260,261,262 ,2,3,4 }, + {198,195,199 ,262,263,264 ,4,5,6 }, {199,195,200 ,264,265,266 ,6,7,8 }, + {200,195,201 ,266,267,268 ,8,9,10 }, {201,195,202 ,268,269,270 ,10,11,12 }, + {202,195,203 ,270,271,272 ,12,13,14 }, {203,195,204 ,272,273,274 ,14,15,16 }, + {204,195,205 ,274,275,276 ,16,17,18 }, {205,195,206 ,276,277,278 ,18,19,20 }, + {206,195,207 ,278,279,280 ,20,21,22 }, {207,195,208 ,280,281,282 ,22,23,24 }, + {208,195,209 ,282,283,284 ,24,25,26 }, {209,195,210 ,284,285,286 ,26,27,28 }, + {210,195,211 ,286,287,288 ,28,29,30 }, {211,195,196 ,288,289,289 ,30,31,32 }, + {212,196,213 ,290,258,291 ,33,1,34 }, {213,196,197 ,291,258,260 ,34,1,2 }, + {213,197,214 ,291,260,292 ,34,2,35 }, {214,197,198 ,292,260,262 ,35,2,4 }, + {214,198,215 ,292,262,293 ,35,4,36 }, {215,198,199 ,293,262,264 ,36,4,6 }, + {215,199,216 ,293,264,294 ,36,6,37 }, {216,199,200 ,294,264,266 ,37,6,8 }, + {216,200,217 ,294,266,295 ,37,8,38 }, {217,200,201 ,295,266,268 ,38,8,10 }, + {217,201,218 ,295,268,296 ,38,10,39 }, {218,201,202 ,296,268,270 ,39,10,12 }, + {218,202,219 ,296,270,297 ,39,12,40 }, {219,202,203 ,297,270,272 ,40,12,14 }, + {219,203,220 ,297,272,298 ,40,14,41 }, {220,203,204 ,298,272,274 ,41,14,16 }, + {220,204,221 ,298,274,299 ,41,16,42 }, {221,204,205 ,299,274,276 ,42,16,18 }, + {221,205,222 ,299,276,300 ,42,18,43 }, {222,205,206 ,300,276,278 ,43,18,20 }, + {222,206,223 ,300,278,301 ,43,20,44 }, {223,206,207 ,301,278,280 ,44,20,22 }, + {223,207,224 ,301,280,302 ,44,22,45 }, {224,207,208 ,302,280,282 ,45,22,24 }, + {224,208,225 ,302,282,303 ,45,24,46 }, {225,208,209 ,303,282,284 ,46,24,26 }, + {225,209,226 ,303,284,304 ,46,26,47 }, {226,209,210 ,304,284,286 ,47,26,28 }, + {226,210,227 ,304,286,305 ,47,28,48 }, {227,210,211 ,305,286,288 ,48,28,30 }, + {227,211,212 ,305,288,306 ,48,30,49 }, {212,211,196 ,307,288,307 ,49,30,32 }, + {228,212,229 ,308,290,309 ,50,33,51 }, {229,212,213 ,309,290,291 ,51,33,34 }, + {229,213,230 ,309,291,310 ,51,34,52 }, {230,213,214 ,310,291,292 ,52,34,35 }, + {230,214,231 ,310,292,311 ,52,35,53 }, {231,214,215 ,311,292,293 ,53,35,36 }, + {231,215,232 ,311,293,312 ,53,36,54 }, {232,215,216 ,312,293,294 ,54,36,37 }, + {232,216,233 ,312,294,313 ,54,37,55 }, {233,216,217 ,313,294,295 ,55,37,38 }, + {233,217,234 ,313,295,314 ,55,38,56 }, {234,217,218 ,314,295,296 ,56,38,39 }, + {234,218,235 ,314,296,315 ,56,39,57 }, {235,218,219 ,315,296,297 ,57,39,40 }, + {235,219,236 ,315,297,316 ,57,40,58 }, {236,219,220 ,316,297,298 ,58,40,41 }, + {236,220,237 ,316,298,317 ,58,41,59 }, {237,220,221 ,317,298,299 ,59,41,42 }, + {237,221,238 ,317,299,318 ,59,42,60 }, {238,221,222 ,318,299,300 ,60,42,43 }, + {238,222,239 ,318,300,319 ,60,43,61 }, {239,222,223 ,319,300,301 ,61,43,44 }, + {239,223,240 ,319,301,320 ,61,44,62 }, {240,223,224 ,320,301,302 ,62,44,45 }, + {240,224,241 ,320,302,321 ,62,45,63 }, {241,224,225 ,321,302,303 ,63,45,46 }, + {241,225,242 ,321,303,322 ,63,46,64 }, {242,225,226 ,322,303,304 ,64,46,47 }, + {242,226,243 ,322,304,323 ,64,47,65 }, {243,226,227 ,323,304,305 ,65,47,48 }, + {243,227,228 ,323,305,324 ,65,48,66 }, {228,227,212 ,325,305,325 ,66,48,49 }, + {244,228,245 ,326,308,327 ,67,50,68 }, {245,228,229 ,327,308,309 ,68,50,51 }, + {245,229,246 ,327,309,328 ,68,51,69 }, {246,229,230 ,328,309,310 ,69,51,52 }, + {246,230,247 ,328,310,329 ,69,52,70 }, {247,230,231 ,329,310,311 ,70,52,53 }, + {247,231,248 ,329,311,330 ,70,53,71 }, {248,231,232 ,330,311,312 ,71,53,54 }, + {248,232,249 ,330,312,331 ,71,54,72 }, {249,232,233 ,331,312,313 ,72,54,55 }, + {249,233,250 ,331,313,332 ,72,55,73 }, {250,233,234 ,332,313,314 ,73,55,56 }, + {250,234,251 ,332,314,333 ,73,56,74 }, {251,234,235 ,333,314,315 ,74,56,57 }, + {251,235,252 ,333,315,334 ,74,57,75 }, {252,235,236 ,334,315,316 ,75,57,58 }, + {252,236,253 ,334,316,335 ,75,58,76 }, {253,236,237 ,335,316,317 ,76,58,59 }, + {253,237,254 ,335,317,336 ,76,59,77 }, {254,237,238 ,336,317,318 ,77,59,60 }, + {254,238,255 ,336,318,337 ,77,60,78 }, {255,238,239 ,337,318,319 ,78,60,61 }, + {255,239,256 ,337,319,338 ,78,61,79 }, {256,239,240 ,338,319,320 ,79,61,62 }, + {256,240,257 ,338,320,339 ,79,62,80 }, {257,240,241 ,339,320,321 ,80,62,63 }, + {257,241,258 ,339,321,340 ,80,63,81 }, {258,241,242 ,340,321,322 ,81,63,64 }, + {258,242,259 ,340,322,341 ,81,64,82 }, {259,242,243 ,341,322,323 ,82,64,65 }, + {259,243,244 ,341,323,342 ,82,65,83 }, {244,243,228 ,343,323,343 ,83,65,66 } +}, + +//lid 6 +{ +// Object #-1 + {0,1,2 ,0,1,2 ,0,1,2 }, {0,2,3 ,3,2,4 ,3,2,4 }, {0,3,4 ,5,4,6 ,5,4,6 }, + {0,4,5 ,7,6,8 ,7,6,8 }, {0,5,6 ,9,8,10 ,9,8,10 }, {0,6,7 ,11,10,12 ,11,10,12 }, + {0,7,8 ,13,12,14 ,13,12,14 }, {0,8,9 ,15,14,16 ,15,14,16 }, {0,9,10 ,17,16,18 ,17,16,18 }, + {0,10,11 ,19,18,20 ,19,18,20 }, {0,11,12 ,21,20,22 ,21,20,22 }, + {0,12,13 ,23,22,24 ,23,22,24 }, {0,13,14 ,25,24,26 ,25,24,26 }, + {0,14,15 ,27,26,28 ,27,26,28 }, {0,15,16 ,29,28,30 ,29,28,30 }, + {0,16,1 ,31,30,31 ,31,30,32 }, {1,17,18 ,1,32,33 ,1,33,34 }, + {1,18,2 ,1,33,2 ,1,34,2 }, {2,18,19 ,2,33,34 ,2,34,35 }, {2,19,3 ,2,34,4 ,2,35,4 }, + {3,19,20 ,4,34,35 ,4,35,36 }, {3,20,4 ,4,35,6 ,4,36,6 }, {4,20,21 ,6,35,36 ,6,36,37 }, + {4,21,5 ,6,36,8 ,6,37,8 }, {5,21,22 ,8,36,37 ,8,37,38 }, {5,22,6 ,8,37,10 ,8,38,10 }, + {6,22,23 ,10,37,38 ,10,38,39 }, {6,23,7 ,10,38,12 ,10,39,12 }, + {7,23,24 ,12,38,39 ,12,39,40 }, {7,24,8 ,12,39,14 ,12,40,14 }, + {8,24,25 ,14,39,40 ,14,40,41 }, {8,25,9 ,14,40,16 ,14,41,16 }, + {9,25,26 ,16,40,41 ,16,41,42 }, {9,26,10 ,16,41,18 ,16,42,18 }, + {10,26,27 ,18,41,42 ,18,42,43 }, {10,27,11 ,18,42,20 ,18,43,20 }, + {11,27,28 ,20,42,43 ,20,43,44 }, {11,28,12 ,20,43,22 ,20,44,22 }, + {12,28,29 ,22,43,44 ,22,44,45 }, {12,29,13 ,22,44,24 ,22,45,24 }, + {13,29,30 ,24,44,45 ,24,45,46 }, {13,30,14 ,24,45,26 ,24,46,26 }, + {14,30,31 ,26,45,46 ,26,46,47 }, {14,31,15 ,26,46,28 ,26,47,28 }, + {15,31,32 ,28,46,47 ,28,47,48 }, {15,32,16 ,28,47,30 ,28,48,30 }, + {16,32,17 ,30,47,48 ,30,48,49 }, {16,17,1 ,30,49,49 ,30,49,32 }, + {17,33,34 ,32,50,51 ,33,50,51 }, {17,34,18 ,32,51,33 ,33,51,34 }, + {18,34,35 ,33,51,52 ,34,51,52 }, {18,35,19 ,33,52,34 ,34,52,35 }, + {19,35,36 ,34,52,53 ,35,52,53 }, {19,36,20 ,34,53,35 ,35,53,36 }, + {20,36,37 ,35,53,54 ,36,53,54 }, {20,37,21 ,35,54,36 ,36,54,37 }, + {21,37,38 ,36,54,55 ,37,54,55 }, {21,38,22 ,36,55,37 ,37,55,38 }, + {22,38,39 ,37,55,56 ,38,55,56 }, {22,39,23 ,37,56,38 ,38,56,39 }, + {23,39,40 ,38,56,57 ,39,56,57 }, {23,40,24 ,38,57,39 ,39,57,40 }, + {24,40,41 ,39,57,58 ,40,57,58 }, {24,41,25 ,39,58,40 ,40,58,41 }, + {25,41,42 ,40,58,59 ,41,58,59 }, {25,42,26 ,40,59,41 ,41,59,42 }, + {26,42,43 ,41,59,60 ,42,59,60 }, {26,43,27 ,41,60,42 ,42,60,43 }, + {27,43,44 ,42,60,61 ,43,60,61 }, {27,44,28 ,42,61,43 ,43,61,44 }, + {28,44,45 ,43,61,62 ,44,61,62 }, {28,45,29 ,43,62,44 ,44,62,45 }, + {29,45,46 ,44,62,63 ,45,62,63 }, {29,46,30 ,44,63,45 ,45,63,46 }, + {30,46,47 ,45,63,64 ,46,63,64 }, {30,47,31 ,45,64,46 ,46,64,47 }, + {31,47,48 ,46,64,65 ,47,64,65 }, {31,48,32 ,46,65,47 ,47,65,48 }, + {32,48,33 ,47,65,66 ,48,65,66 }, {32,33,17 ,47,67,67 ,48,66,49 }, + {33,49,50 ,50,68,69 ,50,67,68 }, {33,50,34 ,50,69,51 ,50,68,51 }, + {34,50,51 ,51,69,70 ,51,68,69 }, {34,51,35 ,51,70,52 ,51,69,52 }, + {35,51,52 ,52,70,71 ,52,69,70 }, {35,52,36 ,52,71,53 ,52,70,53 }, + {36,52,53 ,53,71,72 ,53,70,71 }, {36,53,37 ,53,72,54 ,53,71,54 }, + {37,53,54 ,54,72,73 ,54,71,72 }, {37,54,38 ,54,73,55 ,54,72,55 }, + {38,54,55 ,55,73,74 ,55,72,73 }, {38,55,39 ,55,74,56 ,55,73,56 }, + {39,55,56 ,56,74,75 ,56,73,74 }, {39,56,40 ,56,75,57 ,56,74,57 }, + {40,56,57 ,57,75,76 ,57,74,75 }, {40,57,41 ,57,76,58 ,57,75,58 }, + {41,57,58 ,58,76,77 ,58,75,76 }, {41,58,42 ,58,77,59 ,58,76,59 }, + {42,58,59 ,59,77,78 ,59,76,77 }, {42,59,43 ,59,78,60 ,59,77,60 }, + {43,59,60 ,60,78,79 ,60,77,78 }, {43,60,44 ,60,79,61 ,60,78,61 }, + {44,60,61 ,61,79,80 ,61,78,79 }, {44,61,45 ,61,80,62 ,61,79,62 }, + {45,61,62 ,62,80,81 ,62,79,80 }, {45,62,46 ,62,81,63 ,62,80,63 }, + {46,62,63 ,63,81,82 ,63,80,81 }, {46,63,47 ,63,82,64 ,63,81,64 }, + {47,63,64 ,64,82,83 ,64,81,82 }, {47,64,48 ,64,83,65 ,64,82,65 }, + {48,64,49 ,65,83,84 ,65,82,83 }, {48,49,33 ,65,85,85 ,65,83,66 }, + {66,65,67 ,86,87,88 ,1,0,2 }, {67,65,68 ,88,89,90 ,2,3,4 }, {68,65,69 ,90,91,92 ,4,5,6 }, + {69,65,70 ,92,93,94 ,6,7,8 }, {70,65,71 ,94,95,96 ,8,9,10 }, + {71,65,72 ,96,97,98 ,10,11,12 }, {72,65,73 ,98,99,100 ,12,13,14 }, + {73,65,74 ,100,101,102 ,14,15,16 }, {74,65,75 ,102,103,104 ,16,17,18 }, + {75,65,76 ,104,105,106 ,18,19,20 }, {76,65,77 ,106,107,108 ,20,21,22 }, + {77,65,78 ,108,109,110 ,22,23,24 }, {78,65,79 ,110,111,112 ,24,25,26 }, + {79,65,80 ,112,113,114 ,26,27,28 }, {80,65,81 ,114,115,116 ,28,29,30 }, + {81,65,66 ,116,117,117 ,30,31,32 }, {82,66,83 ,118,86,119 ,33,1,34 }, + {83,66,67 ,119,86,88 ,34,1,2 }, {83,67,84 ,119,88,120 ,34,2,35 }, + {84,67,68 ,120,88,90 ,35,2,4 }, {84,68,85 ,120,90,121 ,35,4,36 }, + {85,68,69 ,121,90,92 ,36,4,6 }, {85,69,86 ,121,92,122 ,36,6,37 }, + {86,69,70 ,122,92,94 ,37,6,8 }, {86,70,87 ,122,94,123 ,37,8,38 }, + {87,70,71 ,123,94,96 ,38,8,10 }, {87,71,88 ,123,96,124 ,38,10,39 }, + {88,71,72 ,124,96,98 ,39,10,12 }, {88,72,89 ,124,98,125 ,39,12,40 }, + {89,72,73 ,125,98,100 ,40,12,14 }, {89,73,90 ,125,100,126 ,40,14,41 }, + {90,73,74 ,126,100,102 ,41,14,16 }, {90,74,91 ,126,102,127 ,41,16,42 }, + {91,74,75 ,127,102,104 ,42,16,18 }, {91,75,92 ,127,104,128 ,42,18,43 }, + {92,75,76 ,128,104,106 ,43,18,20 }, {92,76,93 ,128,106,129 ,43,20,44 }, + {93,76,77 ,129,106,108 ,44,20,22 }, {93,77,94 ,129,108,130 ,44,22,45 }, + {94,77,78 ,130,108,110 ,45,22,24 }, {94,78,95 ,130,110,131 ,45,24,46 }, + {95,78,79 ,131,110,112 ,46,24,26 }, {95,79,96 ,131,112,132 ,46,26,47 }, + {96,79,80 ,132,112,114 ,47,26,28 }, {96,80,97 ,132,114,133 ,47,28,48 }, + {97,80,81 ,133,114,116 ,48,28,30 }, {97,81,82 ,133,116,134 ,48,30,49 }, + {82,81,66 ,135,116,135 ,49,30,32 }, {98,82,99 ,136,118,137 ,50,33,51 }, + {99,82,83 ,137,118,119 ,51,33,34 }, {99,83,100 ,137,119,138 ,51,34,52 }, + {100,83,84 ,138,119,120 ,52,34,35 }, {100,84,101 ,138,120,139 ,52,35,53 }, + {101,84,85 ,139,120,121 ,53,35,36 }, {101,85,102 ,139,121,140 ,53,36,54 }, + {102,85,86 ,140,121,122 ,54,36,37 }, {102,86,103 ,140,122,141 ,54,37,55 }, + {103,86,87 ,141,122,123 ,55,37,38 }, {103,87,104 ,141,123,142 ,55,38,56 }, + {104,87,88 ,142,123,124 ,56,38,39 }, {104,88,105 ,142,124,143 ,56,39,57 }, + {105,88,89 ,143,124,125 ,57,39,40 }, {105,89,106 ,143,125,144 ,57,40,58 }, + {106,89,90 ,144,125,126 ,58,40,41 }, {106,90,107 ,144,126,145 ,58,41,59 }, + {107,90,91 ,145,126,127 ,59,41,42 }, {107,91,108 ,145,127,146 ,59,42,60 }, + {108,91,92 ,146,127,128 ,60,42,43 }, {108,92,109 ,146,128,147 ,60,43,61 }, + {109,92,93 ,147,128,129 ,61,43,44 }, {109,93,110 ,147,129,148 ,61,44,62 }, + {110,93,94 ,148,129,130 ,62,44,45 }, {110,94,111 ,148,130,149 ,62,45,63 }, + {111,94,95 ,149,130,131 ,63,45,46 }, {111,95,112 ,149,131,150 ,63,46,64 }, + {112,95,96 ,150,131,132 ,64,46,47 }, {112,96,113 ,150,132,151 ,64,47,65 }, + {113,96,97 ,151,132,133 ,65,47,48 }, {113,97,98 ,151,133,152 ,65,48,66 }, + {98,97,82 ,153,133,153 ,66,48,49 }, {114,98,115 ,154,136,155 ,67,50,68 }, + {115,98,99 ,155,136,137 ,68,50,51 }, {115,99,116 ,155,137,156 ,68,51,69 }, + {116,99,100 ,156,137,138 ,69,51,52 }, {116,100,117 ,156,138,157 ,69,52,70 }, + {117,100,101 ,157,138,139 ,70,52,53 }, {117,101,118 ,157,139,158 ,70,53,71 }, + {118,101,102 ,158,139,140 ,71,53,54 }, {118,102,119 ,158,140,159 ,71,54,72 }, + {119,102,103 ,159,140,141 ,72,54,55 }, {119,103,120 ,159,141,160 ,72,55,73 }, + {120,103,104 ,160,141,142 ,73,55,56 }, {120,104,121 ,160,142,161 ,73,56,74 }, + {121,104,105 ,161,142,143 ,74,56,57 }, {121,105,122 ,161,143,162 ,74,57,75 }, + {122,105,106 ,162,143,144 ,75,57,58 }, {122,106,123 ,162,144,163 ,75,58,76 }, + {123,106,107 ,163,144,145 ,76,58,59 }, {123,107,124 ,163,145,164 ,76,59,77 }, + {124,107,108 ,164,145,146 ,77,59,60 }, {124,108,125 ,164,146,165 ,77,60,78 }, + {125,108,109 ,165,146,147 ,78,60,61 }, {125,109,126 ,165,147,166 ,78,61,79 }, + {126,109,110 ,166,147,148 ,79,61,62 }, {126,110,127 ,166,148,167 ,79,62,80 }, + {127,110,111 ,167,148,149 ,80,62,63 }, {127,111,128 ,167,149,168 ,80,63,81 }, + {128,111,112 ,168,149,150 ,81,63,64 }, {128,112,129 ,168,150,169 ,81,64,82 }, + {129,112,113 ,169,150,151 ,82,64,65 }, {129,113,114 ,169,151,170 ,82,65,83 }, + {114,113,98 ,171,151,171 ,83,65,66 } +// Object #-1 + , {130,131,132 ,172,173,174 ,0,1,2 }, {130,132,133 ,175,174,176 ,3,2,4 }, + {130,133,134 ,177,176,178 ,5,4,6 }, {130,134,135 ,179,178,180 ,7,6,8 }, + {130,135,136 ,181,180,182 ,9,8,10 }, {130,136,137 ,183,182,184 ,11,10,12 }, + {130,137,138 ,185,184,186 ,13,12,14 }, {130,138,139 ,187,186,188 ,15,14,16 }, + {130,139,140 ,189,188,190 ,17,16,18 }, {130,140,141 ,191,190,192 ,19,18,20 }, + {130,141,142 ,193,192,194 ,21,20,22 }, {130,142,143 ,195,194,196 ,23,22,24 }, + {130,143,144 ,197,196,198 ,25,24,26 }, {130,144,145 ,199,198,200 ,27,26,28 }, + {130,145,146 ,201,200,202 ,29,28,30 }, {130,146,131 ,203,202,203 ,31,30,32 }, + {131,147,148 ,173,204,205 ,1,33,34 }, {131,148,132 ,173,205,174 ,1,34,2 }, + {132,148,149 ,174,205,206 ,2,34,35 }, {132,149,133 ,174,206,176 ,2,35,4 }, + {133,149,150 ,176,206,207 ,4,35,36 }, {133,150,134 ,176,207,178 ,4,36,6 }, + {134,150,151 ,178,207,208 ,6,36,37 }, {134,151,135 ,178,208,180 ,6,37,8 }, + {135,151,152 ,180,208,209 ,8,37,38 }, {135,152,136 ,180,209,182 ,8,38,10 }, + {136,152,153 ,182,209,210 ,10,38,39 }, {136,153,137 ,182,210,184 ,10,39,12 }, + {137,153,154 ,184,210,211 ,12,39,40 }, {137,154,138 ,184,211,186 ,12,40,14 }, + {138,154,155 ,186,211,212 ,14,40,41 }, {138,155,139 ,186,212,188 ,14,41,16 }, + {139,155,156 ,188,212,213 ,16,41,42 }, {139,156,140 ,188,213,190 ,16,42,18 }, + {140,156,157 ,190,213,214 ,18,42,43 }, {140,157,141 ,190,214,192 ,18,43,20 }, + {141,157,158 ,192,214,215 ,20,43,44 }, {141,158,142 ,192,215,194 ,20,44,22 }, + {142,158,159 ,194,215,216 ,22,44,45 }, {142,159,143 ,194,216,196 ,22,45,24 }, + {143,159,160 ,196,216,217 ,24,45,46 }, {143,160,144 ,196,217,198 ,24,46,26 }, + {144,160,161 ,198,217,218 ,26,46,47 }, {144,161,145 ,198,218,200 ,26,47,28 }, + {145,161,162 ,200,218,219 ,28,47,48 }, {145,162,146 ,200,219,202 ,28,48,30 }, + {146,162,147 ,202,219,220 ,30,48,49 }, {146,147,131 ,202,221,221 ,30,49,32 }, + {147,163,164 ,204,222,223 ,33,50,51 }, {147,164,148 ,204,223,205 ,33,51,34 }, + {148,164,165 ,205,223,224 ,34,51,52 }, {148,165,149 ,205,224,206 ,34,52,35 }, + {149,165,166 ,206,224,225 ,35,52,53 }, {149,166,150 ,206,225,207 ,35,53,36 }, + {150,166,167 ,207,225,226 ,36,53,54 }, {150,167,151 ,207,226,208 ,36,54,37 }, + {151,167,168 ,208,226,227 ,37,54,55 }, {151,168,152 ,208,227,209 ,37,55,38 }, + {152,168,169 ,209,227,228 ,38,55,56 }, {152,169,153 ,209,228,210 ,38,56,39 }, + {153,169,170 ,210,228,229 ,39,56,57 }, {153,170,154 ,210,229,211 ,39,57,40 }, + {154,170,171 ,211,229,230 ,40,57,58 }, {154,171,155 ,211,230,212 ,40,58,41 }, + {155,171,172 ,212,230,231 ,41,58,59 }, {155,172,156 ,212,231,213 ,41,59,42 }, + {156,172,173 ,213,231,232 ,42,59,60 }, {156,173,157 ,213,232,214 ,42,60,43 }, + {157,173,174 ,214,232,233 ,43,60,61 }, {157,174,158 ,214,233,215 ,43,61,44 }, + {158,174,175 ,215,233,234 ,44,61,62 }, {158,175,159 ,215,234,216 ,44,62,45 }, + {159,175,176 ,216,234,235 ,45,62,63 }, {159,176,160 ,216,235,217 ,45,63,46 }, + {160,176,177 ,217,235,236 ,46,63,64 }, {160,177,161 ,217,236,218 ,46,64,47 }, + {161,177,178 ,218,236,237 ,47,64,65 }, {161,178,162 ,218,237,219 ,47,65,48 }, + {162,178,163 ,219,237,238 ,48,65,66 }, {162,163,147 ,219,239,239 ,48,66,49 }, + {163,179,180 ,222,240,241 ,50,67,68 }, {163,180,164 ,222,241,223 ,50,68,51 }, + {164,180,181 ,223,241,242 ,51,68,69 }, {164,181,165 ,223,242,224 ,51,69,52 }, + {165,181,182 ,224,242,243 ,52,69,70 }, {165,182,166 ,224,243,225 ,52,70,53 }, + {166,182,183 ,225,243,244 ,53,70,71 }, {166,183,167 ,225,244,226 ,53,71,54 }, + {167,183,184 ,226,244,245 ,54,71,72 }, {167,184,168 ,226,245,227 ,54,72,55 }, + {168,184,185 ,227,245,246 ,55,72,73 }, {168,185,169 ,227,246,228 ,55,73,56 }, + {169,185,186 ,228,246,247 ,56,73,74 }, {169,186,170 ,228,247,229 ,56,74,57 }, + {170,186,187 ,229,247,248 ,57,74,75 }, {170,187,171 ,229,248,230 ,57,75,58 }, + {171,187,188 ,230,248,249 ,58,75,76 }, {171,188,172 ,230,249,231 ,58,76,59 }, + {172,188,189 ,231,249,250 ,59,76,77 }, {172,189,173 ,231,250,232 ,59,77,60 }, + {173,189,190 ,232,250,251 ,60,77,78 }, {173,190,174 ,232,251,233 ,60,78,61 }, + {174,190,191 ,233,251,252 ,61,78,79 }, {174,191,175 ,233,252,234 ,61,79,62 }, + {175,191,192 ,234,252,253 ,62,79,80 }, {175,192,176 ,234,253,235 ,62,80,63 }, + {176,192,193 ,235,253,254 ,63,80,81 }, {176,193,177 ,235,254,236 ,63,81,64 }, + {177,193,194 ,236,254,255 ,64,81,82 }, {177,194,178 ,236,255,237 ,64,82,65 }, + {178,194,179 ,237,255,256 ,65,82,83 }, {178,179,163 ,237,257,257 ,65,83,66 }, + {196,195,197 ,258,259,260 ,1,0,2 }, {197,195,198 ,260,261,262 ,2,3,4 }, + {198,195,199 ,262,263,264 ,4,5,6 }, {199,195,200 ,264,265,266 ,6,7,8 }, + {200,195,201 ,266,267,268 ,8,9,10 }, {201,195,202 ,268,269,270 ,10,11,12 }, + {202,195,203 ,270,271,272 ,12,13,14 }, {203,195,204 ,272,273,274 ,14,15,16 }, + {204,195,205 ,274,275,276 ,16,17,18 }, {205,195,206 ,276,277,278 ,18,19,20 }, + {206,195,207 ,278,279,280 ,20,21,22 }, {207,195,208 ,280,281,282 ,22,23,24 }, + {208,195,209 ,282,283,284 ,24,25,26 }, {209,195,210 ,284,285,286 ,26,27,28 }, + {210,195,211 ,286,287,288 ,28,29,30 }, {211,195,196 ,288,289,289 ,30,31,32 }, + {212,196,213 ,290,258,291 ,33,1,34 }, {213,196,197 ,291,258,260 ,34,1,2 }, + {213,197,214 ,291,260,292 ,34,2,35 }, {214,197,198 ,292,260,262 ,35,2,4 }, + {214,198,215 ,292,262,293 ,35,4,36 }, {215,198,199 ,293,262,264 ,36,4,6 }, + {215,199,216 ,293,264,294 ,36,6,37 }, {216,199,200 ,294,264,266 ,37,6,8 }, + {216,200,217 ,294,266,295 ,37,8,38 }, {217,200,201 ,295,266,268 ,38,8,10 }, + {217,201,218 ,295,268,296 ,38,10,39 }, {218,201,202 ,296,268,270 ,39,10,12 }, + {218,202,219 ,296,270,297 ,39,12,40 }, {219,202,203 ,297,270,272 ,40,12,14 }, + {219,203,220 ,297,272,298 ,40,14,41 }, {220,203,204 ,298,272,274 ,41,14,16 }, + {220,204,221 ,298,274,299 ,41,16,42 }, {221,204,205 ,299,274,276 ,42,16,18 }, + {221,205,222 ,299,276,300 ,42,18,43 }, {222,205,206 ,300,276,278 ,43,18,20 }, + {222,206,223 ,300,278,301 ,43,20,44 }, {223,206,207 ,301,278,280 ,44,20,22 }, + {223,207,224 ,301,280,302 ,44,22,45 }, {224,207,208 ,302,280,282 ,45,22,24 }, + {224,208,225 ,302,282,303 ,45,24,46 }, {225,208,209 ,303,282,284 ,46,24,26 }, + {225,209,226 ,303,284,304 ,46,26,47 }, {226,209,210 ,304,284,286 ,47,26,28 }, + {226,210,227 ,304,286,305 ,47,28,48 }, {227,210,211 ,305,286,288 ,48,28,30 }, + {227,211,212 ,305,288,306 ,48,30,49 }, {212,211,196 ,307,288,307 ,49,30,32 }, + {228,212,229 ,308,290,309 ,50,33,51 }, {229,212,213 ,309,290,291 ,51,33,34 }, + {229,213,230 ,309,291,310 ,51,34,52 }, {230,213,214 ,310,291,292 ,52,34,35 }, + {230,214,231 ,310,292,311 ,52,35,53 }, {231,214,215 ,311,292,293 ,53,35,36 }, + {231,215,232 ,311,293,312 ,53,36,54 }, {232,215,216 ,312,293,294 ,54,36,37 }, + {232,216,233 ,312,294,313 ,54,37,55 }, {233,216,217 ,313,294,295 ,55,37,38 }, + {233,217,234 ,313,295,314 ,55,38,56 }, {234,217,218 ,314,295,296 ,56,38,39 }, + {234,218,235 ,314,296,315 ,56,39,57 }, {235,218,219 ,315,296,297 ,57,39,40 }, + {235,219,236 ,315,297,316 ,57,40,58 }, {236,219,220 ,316,297,298 ,58,40,41 }, + {236,220,237 ,316,298,317 ,58,41,59 }, {237,220,221 ,317,298,299 ,59,41,42 }, + {237,221,238 ,317,299,318 ,59,42,60 }, {238,221,222 ,318,299,300 ,60,42,43 }, + {238,222,239 ,318,300,319 ,60,43,61 }, {239,222,223 ,319,300,301 ,61,43,44 }, + {239,223,240 ,319,301,320 ,61,44,62 }, {240,223,224 ,320,301,302 ,62,44,45 }, + {240,224,241 ,320,302,321 ,62,45,63 }, {241,224,225 ,321,302,303 ,63,45,46 }, + {241,225,242 ,321,303,322 ,63,46,64 }, {242,225,226 ,322,303,304 ,64,46,47 }, + {242,226,243 ,322,304,323 ,64,47,65 }, {243,226,227 ,323,304,305 ,65,47,48 }, + {243,227,228 ,323,305,324 ,65,48,66 }, {228,227,212 ,325,305,325 ,66,48,49 }, + {244,228,245 ,326,308,327 ,67,50,68 }, {245,228,229 ,327,308,309 ,68,50,51 }, + {245,229,246 ,327,309,328 ,68,51,69 }, {246,229,230 ,328,309,310 ,69,51,52 }, + {246,230,247 ,328,310,329 ,69,52,70 }, {247,230,231 ,329,310,311 ,70,52,53 }, + {247,231,248 ,329,311,330 ,70,53,71 }, {248,231,232 ,330,311,312 ,71,53,54 }, + {248,232,249 ,330,312,331 ,71,54,72 }, {249,232,233 ,331,312,313 ,72,54,55 }, + {249,233,250 ,331,313,332 ,72,55,73 }, {250,233,234 ,332,313,314 ,73,55,56 }, + {250,234,251 ,332,314,333 ,73,56,74 }, {251,234,235 ,333,314,315 ,74,56,57 }, + {251,235,252 ,333,315,334 ,74,57,75 }, {252,235,236 ,334,315,316 ,75,57,58 }, + {252,236,253 ,334,316,335 ,75,58,76 }, {253,236,237 ,335,316,317 ,76,58,59 }, + {253,237,254 ,335,317,336 ,76,59,77 }, {254,237,238 ,336,317,318 ,77,59,60 }, + {254,238,255 ,336,318,337 ,77,60,78 }, {255,238,239 ,337,318,319 ,78,60,61 }, + {255,239,256 ,337,319,338 ,78,61,79 }, {256,239,240 ,338,319,320 ,79,61,62 }, + {256,240,257 ,338,320,339 ,79,62,80 }, {257,240,241 ,339,320,321 ,80,62,63 }, + {257,241,258 ,339,321,340 ,80,63,81 }, {258,241,242 ,340,321,322 ,81,63,64 }, + {258,242,259 ,340,322,341 ,81,64,82 }, {259,242,243 ,341,322,323 ,82,64,65 }, + {259,243,244 ,341,323,342 ,82,65,83 }, {244,243,228 ,343,323,343 ,83,65,66 } +}, + +//lid 5 +{ +// Object #-1 + {0,1,2 ,0,1,2 ,0,1,2 }, {0,2,3 ,3,2,4 ,3,2,4 }, {0,3,4 ,5,4,6 ,5,4,6 }, + {0,4,5 ,7,6,8 ,7,6,8 }, {0,5,6 ,9,8,10 ,9,8,10 }, {0,6,7 ,11,10,12 ,11,10,12 }, + {0,7,8 ,13,12,14 ,13,12,14 }, {0,8,9 ,15,14,16 ,15,14,16 }, {0,9,10 ,17,16,18 ,17,16,18 }, + {0,10,11 ,19,18,20 ,19,18,20 }, {0,11,12 ,21,20,22 ,21,20,22 }, + {0,12,13 ,23,22,24 ,23,22,24 }, {0,13,14 ,25,24,26 ,25,24,26 }, + {0,14,15 ,27,26,28 ,27,26,28 }, {0,15,16 ,29,28,30 ,29,28,30 }, + {0,16,1 ,31,30,31 ,31,30,32 }, {1,17,18 ,1,32,33 ,1,33,34 }, + {1,18,2 ,1,33,2 ,1,34,2 }, {2,18,19 ,2,33,34 ,2,34,35 }, {2,19,3 ,2,34,4 ,2,35,4 }, + {3,19,20 ,4,34,35 ,4,35,36 }, {3,20,4 ,4,35,6 ,4,36,6 }, {4,20,21 ,6,35,36 ,6,36,37 }, + {4,21,5 ,6,36,8 ,6,37,8 }, {5,21,22 ,8,36,37 ,8,37,38 }, {5,22,6 ,8,37,10 ,8,38,10 }, + {6,22,23 ,10,37,38 ,10,38,39 }, {6,23,7 ,10,38,12 ,10,39,12 }, + {7,23,24 ,12,38,39 ,12,39,40 }, {7,24,8 ,12,39,14 ,12,40,14 }, + {8,24,25 ,14,39,40 ,14,40,41 }, {8,25,9 ,14,40,16 ,14,41,16 }, + {9,25,26 ,16,40,41 ,16,41,42 }, {9,26,10 ,16,41,18 ,16,42,18 }, + {10,26,27 ,18,41,42 ,18,42,43 }, {10,27,11 ,18,42,20 ,18,43,20 }, + {11,27,28 ,20,42,43 ,20,43,44 }, {11,28,12 ,20,43,22 ,20,44,22 }, + {12,28,29 ,22,43,44 ,22,44,45 }, {12,29,13 ,22,44,24 ,22,45,24 }, + {13,29,30 ,24,44,45 ,24,45,46 }, {13,30,14 ,24,45,26 ,24,46,26 }, + {14,30,31 ,26,45,46 ,26,46,47 }, {14,31,15 ,26,46,28 ,26,47,28 }, + {15,31,32 ,28,46,47 ,28,47,48 }, {15,32,16 ,28,47,30 ,28,48,30 }, + {16,32,17 ,30,47,48 ,30,48,49 }, {16,17,1 ,30,49,49 ,30,49,32 }, + {17,33,34 ,32,50,51 ,33,50,51 }, {17,34,18 ,32,51,33 ,33,51,34 }, + {18,34,35 ,33,51,52 ,34,51,52 }, {18,35,19 ,33,52,34 ,34,52,35 }, + {19,35,36 ,34,52,53 ,35,52,53 }, {19,36,20 ,34,53,35 ,35,53,36 }, + {20,36,37 ,35,53,54 ,36,53,54 }, {20,37,21 ,35,54,36 ,36,54,37 }, + {21,37,38 ,36,54,55 ,37,54,55 }, {21,38,22 ,36,55,37 ,37,55,38 }, + {22,38,39 ,37,55,56 ,38,55,56 }, {22,39,23 ,37,56,38 ,38,56,39 }, + {23,39,40 ,38,56,57 ,39,56,57 }, {23,40,24 ,38,57,39 ,39,57,40 }, + {24,40,41 ,39,57,58 ,40,57,58 }, {24,41,25 ,39,58,40 ,40,58,41 }, + {25,41,42 ,40,58,59 ,41,58,59 }, {25,42,26 ,40,59,41 ,41,59,42 }, + {26,42,43 ,41,59,60 ,42,59,60 }, {26,43,27 ,41,60,42 ,42,60,43 }, + {27,43,44 ,42,60,61 ,43,60,61 }, {27,44,28 ,42,61,43 ,43,61,44 }, + {28,44,45 ,43,61,62 ,44,61,62 }, {28,45,29 ,43,62,44 ,44,62,45 }, + {29,45,46 ,44,62,63 ,45,62,63 }, {29,46,30 ,44,63,45 ,45,63,46 }, + {30,46,47 ,45,63,64 ,46,63,64 }, {30,47,31 ,45,64,46 ,46,64,47 }, + {31,47,48 ,46,64,65 ,47,64,65 }, {31,48,32 ,46,65,47 ,47,65,48 }, + {32,48,33 ,47,65,66 ,48,65,66 }, {32,33,17 ,47,67,67 ,48,66,49 }, + {33,49,50 ,50,68,69 ,50,67,68 }, {33,50,34 ,50,69,51 ,50,68,51 }, + {34,50,51 ,51,69,70 ,51,68,69 }, {34,51,35 ,51,70,52 ,51,69,52 }, + {35,51,52 ,52,70,71 ,52,69,70 }, {35,52,36 ,52,71,53 ,52,70,53 }, + {36,52,53 ,53,71,72 ,53,70,71 }, {36,53,37 ,53,72,54 ,53,71,54 }, + {37,53,54 ,54,72,73 ,54,71,72 }, {37,54,38 ,54,73,55 ,54,72,55 }, + {38,54,55 ,55,73,74 ,55,72,73 }, {38,55,39 ,55,74,56 ,55,73,56 }, + {39,55,56 ,56,74,75 ,56,73,74 }, {39,56,40 ,56,75,57 ,56,74,57 }, + {40,56,57 ,57,75,76 ,57,74,75 }, {40,57,41 ,57,76,58 ,57,75,58 }, + {41,57,58 ,58,76,77 ,58,75,76 }, {41,58,42 ,58,77,59 ,58,76,59 }, + {42,58,59 ,59,77,78 ,59,76,77 }, {42,59,43 ,59,78,60 ,59,77,60 }, + {43,59,60 ,60,78,79 ,60,77,78 }, {43,60,44 ,60,79,61 ,60,78,61 }, + {44,60,61 ,61,79,80 ,61,78,79 }, {44,61,45 ,61,80,62 ,61,79,62 }, + {45,61,62 ,62,80,81 ,62,79,80 }, {45,62,46 ,62,81,63 ,62,80,63 }, + {46,62,63 ,63,81,82 ,63,80,81 }, {46,63,47 ,63,82,64 ,63,81,64 }, + {47,63,64 ,64,82,83 ,64,81,82 }, {47,64,48 ,64,83,65 ,64,82,65 }, + {48,64,49 ,65,83,84 ,65,82,83 }, {48,49,33 ,65,85,85 ,65,83,66 }, + {66,65,67 ,86,87,88 ,1,0,2 }, {67,65,68 ,88,89,90 ,2,3,4 }, {68,65,69 ,90,91,92 ,4,5,6 }, + {69,65,70 ,92,93,94 ,6,7,8 }, {70,65,71 ,94,95,96 ,8,9,10 }, + {71,65,72 ,96,97,98 ,10,11,12 }, {72,65,73 ,98,99,100 ,12,13,14 }, + {73,65,74 ,100,101,102 ,14,15,16 }, {74,65,75 ,102,103,104 ,16,17,18 }, + {75,65,76 ,104,105,106 ,18,19,20 }, {76,65,77 ,106,107,108 ,20,21,22 }, + {77,65,78 ,108,109,110 ,22,23,24 }, {78,65,79 ,110,111,112 ,24,25,26 }, + {79,65,80 ,112,113,114 ,26,27,28 }, {80,65,81 ,114,115,116 ,28,29,30 }, + {81,65,66 ,116,117,117 ,30,31,32 }, {82,66,83 ,118,86,119 ,33,1,34 }, + {83,66,67 ,119,86,88 ,34,1,2 }, {83,67,84 ,119,88,120 ,34,2,35 }, + {84,67,68 ,120,88,90 ,35,2,4 }, {84,68,85 ,120,90,121 ,35,4,36 }, + {85,68,69 ,121,90,92 ,36,4,6 }, {85,69,86 ,121,92,122 ,36,6,37 }, + {86,69,70 ,122,92,94 ,37,6,8 }, {86,70,87 ,122,94,123 ,37,8,38 }, + {87,70,71 ,123,94,96 ,38,8,10 }, {87,71,88 ,123,96,124 ,38,10,39 }, + {88,71,72 ,124,96,98 ,39,10,12 }, {88,72,89 ,124,98,125 ,39,12,40 }, + {89,72,73 ,125,98,100 ,40,12,14 }, {89,73,90 ,125,100,126 ,40,14,41 }, + {90,73,74 ,126,100,102 ,41,14,16 }, {90,74,91 ,126,102,127 ,41,16,42 }, + {91,74,75 ,127,102,104 ,42,16,18 }, {91,75,92 ,127,104,128 ,42,18,43 }, + {92,75,76 ,128,104,106 ,43,18,20 }, {92,76,93 ,128,106,129 ,43,20,44 }, + {93,76,77 ,129,106,108 ,44,20,22 }, {93,77,94 ,129,108,130 ,44,22,45 }, + {94,77,78 ,130,108,110 ,45,22,24 }, {94,78,95 ,130,110,131 ,45,24,46 }, + {95,78,79 ,131,110,112 ,46,24,26 }, {95,79,96 ,131,112,132 ,46,26,47 }, + {96,79,80 ,132,112,114 ,47,26,28 }, {96,80,97 ,132,114,133 ,47,28,48 }, + {97,80,81 ,133,114,116 ,48,28,30 }, {97,81,82 ,133,116,134 ,48,30,49 }, + {82,81,66 ,135,116,135 ,49,30,32 }, {98,82,99 ,136,118,137 ,50,33,51 }, + {99,82,83 ,137,118,119 ,51,33,34 }, {99,83,100 ,137,119,138 ,51,34,52 }, + {100,83,84 ,138,119,120 ,52,34,35 }, {100,84,101 ,138,120,139 ,52,35,53 }, + {101,84,85 ,139,120,121 ,53,35,36 }, {101,85,102 ,139,121,140 ,53,36,54 }, + {102,85,86 ,140,121,122 ,54,36,37 }, {102,86,103 ,140,122,141 ,54,37,55 }, + {103,86,87 ,141,122,123 ,55,37,38 }, {103,87,104 ,141,123,142 ,55,38,56 }, + {104,87,88 ,142,123,124 ,56,38,39 }, {104,88,105 ,142,124,143 ,56,39,57 }, + {105,88,89 ,143,124,125 ,57,39,40 }, {105,89,106 ,143,125,144 ,57,40,58 }, + {106,89,90 ,144,125,126 ,58,40,41 }, {106,90,107 ,144,126,145 ,58,41,59 }, + {107,90,91 ,145,126,127 ,59,41,42 }, {107,91,108 ,145,127,146 ,59,42,60 }, + {108,91,92 ,146,127,128 ,60,42,43 }, {108,92,109 ,146,128,147 ,60,43,61 }, + {109,92,93 ,147,128,129 ,61,43,44 }, {109,93,110 ,147,129,148 ,61,44,62 }, + {110,93,94 ,148,129,130 ,62,44,45 }, {110,94,111 ,148,130,149 ,62,45,63 }, + {111,94,95 ,149,130,131 ,63,45,46 }, {111,95,112 ,149,131,150 ,63,46,64 }, + {112,95,96 ,150,131,132 ,64,46,47 }, {112,96,113 ,150,132,151 ,64,47,65 }, + {113,96,97 ,151,132,133 ,65,47,48 }, {113,97,98 ,151,133,152 ,65,48,66 }, + {98,97,82 ,153,133,153 ,66,48,49 }, {114,98,115 ,154,136,155 ,67,50,68 }, + {115,98,99 ,155,136,137 ,68,50,51 }, {115,99,116 ,155,137,156 ,68,51,69 }, + {116,99,100 ,156,137,138 ,69,51,52 }, {116,100,117 ,156,138,157 ,69,52,70 }, + {117,100,101 ,157,138,139 ,70,52,53 }, {117,101,118 ,157,139,158 ,70,53,71 }, + {118,101,102 ,158,139,140 ,71,53,54 }, {118,102,119 ,158,140,159 ,71,54,72 }, + {119,102,103 ,159,140,141 ,72,54,55 }, {119,103,120 ,159,141,160 ,72,55,73 }, + {120,103,104 ,160,141,142 ,73,55,56 }, {120,104,121 ,160,142,161 ,73,56,74 }, + {121,104,105 ,161,142,143 ,74,56,57 }, {121,105,122 ,161,143,162 ,74,57,75 }, + {122,105,106 ,162,143,144 ,75,57,58 }, {122,106,123 ,162,144,163 ,75,58,76 }, + {123,106,107 ,163,144,145 ,76,58,59 }, {123,107,124 ,163,145,164 ,76,59,77 }, + {124,107,108 ,164,145,146 ,77,59,60 }, {124,108,125 ,164,146,165 ,77,60,78 }, + {125,108,109 ,165,146,147 ,78,60,61 }, {125,109,126 ,165,147,166 ,78,61,79 }, + {126,109,110 ,166,147,148 ,79,61,62 }, {126,110,127 ,166,148,167 ,79,62,80 }, + {127,110,111 ,167,148,149 ,80,62,63 }, {127,111,128 ,167,149,168 ,80,63,81 }, + {128,111,112 ,168,149,150 ,81,63,64 }, {128,112,129 ,168,150,169 ,81,64,82 }, + {129,112,113 ,169,150,151 ,82,64,65 }, {129,113,114 ,169,151,170 ,82,65,83 }, + {114,113,98 ,171,151,171 ,83,65,66 } +// Object #-1 + , {130,131,132 ,172,173,174 ,0,1,2 }, {130,132,133 ,175,174,176 ,3,2,4 }, + {130,133,134 ,177,176,178 ,5,4,6 }, {130,134,135 ,179,178,180 ,7,6,8 }, + {130,135,136 ,181,180,182 ,9,8,10 }, {130,136,137 ,183,182,184 ,11,10,12 }, + {130,137,138 ,185,184,186 ,13,12,14 }, {130,138,139 ,187,186,188 ,15,14,16 }, + {130,139,140 ,189,188,190 ,17,16,18 }, {130,140,141 ,191,190,192 ,19,18,20 }, + {130,141,142 ,193,192,194 ,21,20,22 }, {130,142,143 ,195,194,196 ,23,22,24 }, + {130,143,144 ,197,196,198 ,25,24,26 }, {130,144,145 ,199,198,200 ,27,26,28 }, + {130,145,146 ,201,200,202 ,29,28,30 }, {130,146,131 ,203,202,203 ,31,30,32 }, + {131,147,148 ,173,204,205 ,1,33,34 }, {131,148,132 ,173,205,174 ,1,34,2 }, + {132,148,149 ,174,205,206 ,2,34,35 }, {132,149,133 ,174,206,176 ,2,35,4 }, + {133,149,150 ,176,206,207 ,4,35,36 }, {133,150,134 ,176,207,178 ,4,36,6 }, + {134,150,151 ,178,207,208 ,6,36,37 }, {134,151,135 ,178,208,180 ,6,37,8 }, + {135,151,152 ,180,208,209 ,8,37,38 }, {135,152,136 ,180,209,182 ,8,38,10 }, + {136,152,153 ,182,209,210 ,10,38,39 }, {136,153,137 ,182,210,184 ,10,39,12 }, + {137,153,154 ,184,210,211 ,12,39,40 }, {137,154,138 ,184,211,186 ,12,40,14 }, + {138,154,155 ,186,211,212 ,14,40,41 }, {138,155,139 ,186,212,188 ,14,41,16 }, + {139,155,156 ,188,212,213 ,16,41,42 }, {139,156,140 ,188,213,190 ,16,42,18 }, + {140,156,157 ,190,213,214 ,18,42,43 }, {140,157,141 ,190,214,192 ,18,43,20 }, + {141,157,158 ,192,214,215 ,20,43,44 }, {141,158,142 ,192,215,194 ,20,44,22 }, + {142,158,159 ,194,215,216 ,22,44,45 }, {142,159,143 ,194,216,196 ,22,45,24 }, + {143,159,160 ,196,216,217 ,24,45,46 }, {143,160,144 ,196,217,198 ,24,46,26 }, + {144,160,161 ,198,217,218 ,26,46,47 }, {144,161,145 ,198,218,200 ,26,47,28 }, + {145,161,162 ,200,218,219 ,28,47,48 }, {145,162,146 ,200,219,202 ,28,48,30 }, + {146,162,147 ,202,219,220 ,30,48,49 }, {146,147,131 ,202,221,221 ,30,49,32 }, + {147,163,164 ,204,222,223 ,33,50,51 }, {147,164,148 ,204,223,205 ,33,51,34 }, + {148,164,165 ,205,223,224 ,34,51,52 }, {148,165,149 ,205,224,206 ,34,52,35 }, + {149,165,166 ,206,224,225 ,35,52,53 }, {149,166,150 ,206,225,207 ,35,53,36 }, + {150,166,167 ,207,225,226 ,36,53,54 }, {150,167,151 ,207,226,208 ,36,54,37 }, + {151,167,168 ,208,226,227 ,37,54,55 }, {151,168,152 ,208,227,209 ,37,55,38 }, + {152,168,169 ,209,227,228 ,38,55,56 }, {152,169,153 ,209,228,210 ,38,56,39 }, + {153,169,170 ,210,228,229 ,39,56,57 }, {153,170,154 ,210,229,211 ,39,57,40 }, + {154,170,171 ,211,229,230 ,40,57,58 }, {154,171,155 ,211,230,212 ,40,58,41 }, + {155,171,172 ,212,230,231 ,41,58,59 }, {155,172,156 ,212,231,213 ,41,59,42 }, + {156,172,173 ,213,231,232 ,42,59,60 }, {156,173,157 ,213,232,214 ,42,60,43 }, + {157,173,174 ,214,232,233 ,43,60,61 }, {157,174,158 ,214,233,215 ,43,61,44 }, + {158,174,175 ,215,233,234 ,44,61,62 }, {158,175,159 ,215,234,216 ,44,62,45 }, + {159,175,176 ,216,234,235 ,45,62,63 }, {159,176,160 ,216,235,217 ,45,63,46 }, + {160,176,177 ,217,235,236 ,46,63,64 }, {160,177,161 ,217,236,218 ,46,64,47 }, + {161,177,178 ,218,236,237 ,47,64,65 }, {161,178,162 ,218,237,219 ,47,65,48 }, + {162,178,163 ,219,237,238 ,48,65,66 }, {162,163,147 ,219,239,239 ,48,66,49 }, + {163,179,180 ,222,240,241 ,50,67,68 }, {163,180,164 ,222,241,223 ,50,68,51 }, + {164,180,181 ,223,241,242 ,51,68,69 }, {164,181,165 ,223,242,224 ,51,69,52 }, + {165,181,182 ,224,242,243 ,52,69,70 }, {165,182,166 ,224,243,225 ,52,70,53 }, + {166,182,183 ,225,243,244 ,53,70,71 }, {166,183,167 ,225,244,226 ,53,71,54 }, + {167,183,184 ,226,244,245 ,54,71,72 }, {167,184,168 ,226,245,227 ,54,72,55 }, + {168,184,185 ,227,245,246 ,55,72,73 }, {168,185,169 ,227,246,228 ,55,73,56 }, + {169,185,186 ,228,246,247 ,56,73,74 }, {169,186,170 ,228,247,229 ,56,74,57 }, + {170,186,187 ,229,247,248 ,57,74,75 }, {170,187,171 ,229,248,230 ,57,75,58 }, + {171,187,188 ,230,248,249 ,58,75,76 }, {171,188,172 ,230,249,231 ,58,76,59 }, + {172,188,189 ,231,249,250 ,59,76,77 }, {172,189,173 ,231,250,232 ,59,77,60 }, + {173,189,190 ,232,250,251 ,60,77,78 }, {173,190,174 ,232,251,233 ,60,78,61 }, + {174,190,191 ,233,251,252 ,61,78,79 }, {174,191,175 ,233,252,234 ,61,79,62 }, + {175,191,192 ,234,252,253 ,62,79,80 }, {175,192,176 ,234,253,235 ,62,80,63 }, + {176,192,193 ,235,253,254 ,63,80,81 }, {176,193,177 ,235,254,236 ,63,81,64 }, + {177,193,194 ,236,254,255 ,64,81,82 }, {177,194,178 ,236,255,237 ,64,82,65 }, + {178,194,179 ,237,255,256 ,65,82,83 }, {178,179,163 ,237,257,257 ,65,83,66 }, + {196,195,197 ,258,259,260 ,1,0,2 }, {197,195,198 ,260,261,262 ,2,3,4 }, + {198,195,199 ,262,263,264 ,4,5,6 }, {199,195,200 ,264,265,266 ,6,7,8 }, + {200,195,201 ,266,267,268 ,8,9,10 }, {201,195,202 ,268,269,270 ,10,11,12 }, + {202,195,203 ,270,271,272 ,12,13,14 }, {203,195,204 ,272,273,274 ,14,15,16 }, + {204,195,205 ,274,275,276 ,16,17,18 }, {205,195,206 ,276,277,278 ,18,19,20 }, + {206,195,207 ,278,279,280 ,20,21,22 }, {207,195,208 ,280,281,282 ,22,23,24 }, + {208,195,209 ,282,283,284 ,24,25,26 }, {209,195,210 ,284,285,286 ,26,27,28 }, + {210,195,211 ,286,287,288 ,28,29,30 }, {211,195,196 ,288,289,289 ,30,31,32 }, + {212,196,213 ,290,258,291 ,33,1,34 }, {213,196,197 ,291,258,260 ,34,1,2 }, + {213,197,214 ,291,260,292 ,34,2,35 }, {214,197,198 ,292,260,262 ,35,2,4 }, + {214,198,215 ,292,262,293 ,35,4,36 }, {215,198,199 ,293,262,264 ,36,4,6 }, + {215,199,216 ,293,264,294 ,36,6,37 }, {216,199,200 ,294,264,266 ,37,6,8 }, + {216,200,217 ,294,266,295 ,37,8,38 }, {217,200,201 ,295,266,268 ,38,8,10 }, + {217,201,218 ,295,268,296 ,38,10,39 }, {218,201,202 ,296,268,270 ,39,10,12 }, + {218,202,219 ,296,270,297 ,39,12,40 }, {219,202,203 ,297,270,272 ,40,12,14 }, + {219,203,220 ,297,272,298 ,40,14,41 }, {220,203,204 ,298,272,274 ,41,14,16 }, + {220,204,221 ,298,274,299 ,41,16,42 }, {221,204,205 ,299,274,276 ,42,16,18 }, + {221,205,222 ,299,276,300 ,42,18,43 }, {222,205,206 ,300,276,278 ,43,18,20 }, + {222,206,223 ,300,278,301 ,43,20,44 }, {223,206,207 ,301,278,280 ,44,20,22 }, + {223,207,224 ,301,280,302 ,44,22,45 }, {224,207,208 ,302,280,282 ,45,22,24 }, + {224,208,225 ,302,282,303 ,45,24,46 }, {225,208,209 ,303,282,284 ,46,24,26 }, + {225,209,226 ,303,284,304 ,46,26,47 }, {226,209,210 ,304,284,286 ,47,26,28 }, + {226,210,227 ,304,286,305 ,47,28,48 }, {227,210,211 ,305,286,288 ,48,28,30 }, + {227,211,212 ,305,288,306 ,48,30,49 }, {212,211,196 ,307,288,307 ,49,30,32 }, + {228,212,229 ,308,290,309 ,50,33,51 }, {229,212,213 ,309,290,291 ,51,33,34 }, + {229,213,230 ,309,291,310 ,51,34,52 }, {230,213,214 ,310,291,292 ,52,34,35 }, + {230,214,231 ,310,292,311 ,52,35,53 }, {231,214,215 ,311,292,293 ,53,35,36 }, + {231,215,232 ,311,293,312 ,53,36,54 }, {232,215,216 ,312,293,294 ,54,36,37 }, + {232,216,233 ,312,294,313 ,54,37,55 }, {233,216,217 ,313,294,295 ,55,37,38 }, + {233,217,234 ,313,295,314 ,55,38,56 }, {234,217,218 ,314,295,296 ,56,38,39 }, + {234,218,235 ,314,296,315 ,56,39,57 }, {235,218,219 ,315,296,297 ,57,39,40 }, + {235,219,236 ,315,297,316 ,57,40,58 }, {236,219,220 ,316,297,298 ,58,40,41 }, + {236,220,237 ,316,298,317 ,58,41,59 }, {237,220,221 ,317,298,299 ,59,41,42 }, + {237,221,238 ,317,299,318 ,59,42,60 }, {238,221,222 ,318,299,300 ,60,42,43 }, + {238,222,239 ,318,300,319 ,60,43,61 }, {239,222,223 ,319,300,301 ,61,43,44 }, + {239,223,240 ,319,301,320 ,61,44,62 }, {240,223,224 ,320,301,302 ,62,44,45 }, + {240,224,241 ,320,302,321 ,62,45,63 }, {241,224,225 ,321,302,303 ,63,45,46 }, + {241,225,242 ,321,303,322 ,63,46,64 }, {242,225,226 ,322,303,304 ,64,46,47 }, + {242,226,243 ,322,304,323 ,64,47,65 }, {243,226,227 ,323,304,305 ,65,47,48 }, + {243,227,228 ,323,305,324 ,65,48,66 }, {228,227,212 ,325,305,325 ,66,48,49 }, + {244,228,245 ,326,308,327 ,67,50,68 }, {245,228,229 ,327,308,309 ,68,50,51 }, + {245,229,246 ,327,309,328 ,68,51,69 }, {246,229,230 ,328,309,310 ,69,51,52 }, + {246,230,247 ,328,310,329 ,69,52,70 }, {247,230,231 ,329,310,311 ,70,52,53 }, + {247,231,248 ,329,311,330 ,70,53,71 }, {248,231,232 ,330,311,312 ,71,53,54 }, + {248,232,249 ,330,312,331 ,71,54,72 }, {249,232,233 ,331,312,313 ,72,54,55 }, + {249,233,250 ,331,313,332 ,72,55,73 }, {250,233,234 ,332,313,314 ,73,55,56 }, + {250,234,251 ,332,314,333 ,73,56,74 }, {251,234,235 ,333,314,315 ,74,56,57 }, + {251,235,252 ,333,315,334 ,74,57,75 }, {252,235,236 ,334,315,316 ,75,57,58 }, + {252,236,253 ,334,316,335 ,75,58,76 }, {253,236,237 ,335,316,317 ,76,58,59 }, + {253,237,254 ,335,317,336 ,76,59,77 }, {254,237,238 ,336,317,318 ,77,59,60 }, + {254,238,255 ,336,318,337 ,77,60,78 }, {255,238,239 ,337,318,319 ,78,60,61 }, + {255,239,256 ,337,319,338 ,78,61,79 }, {256,239,240 ,338,319,320 ,79,61,62 }, + {256,240,257 ,338,320,339 ,79,62,80 }, {257,240,241 ,339,320,321 ,80,62,63 }, + {257,241,258 ,339,321,340 ,80,63,81 }, {258,241,242 ,340,321,322 ,81,63,64 }, + {258,242,259 ,340,322,341 ,81,64,82 }, {259,242,243 ,341,322,323 ,82,64,65 }, + {259,243,244 ,341,323,342 ,82,65,83 }, {244,243,228 ,343,323,343 ,83,65,66 } +}, + +//lid 4 +{ +// Object #-1 + {0,1,2 ,0,1,2 ,0,1,2 }, {0,2,3 ,3,2,4 ,3,2,4 }, {0,3,4 ,5,4,6 ,5,4,6 }, + {0,4,5 ,7,6,8 ,7,6,8 }, {0,5,6 ,9,8,10 ,9,8,10 }, {0,6,7 ,11,10,12 ,11,10,12 }, + {0,7,8 ,13,12,14 ,13,12,14 }, {0,8,9 ,15,14,16 ,15,14,16 }, {0,9,10 ,17,16,18 ,17,16,18 }, + {0,10,11 ,19,18,20 ,19,18,20 }, {0,11,12 ,21,20,22 ,21,20,22 }, + {0,12,13 ,23,22,24 ,23,22,24 }, {0,13,14 ,25,24,26 ,25,24,26 }, + {0,14,15 ,27,26,28 ,27,26,28 }, {0,15,16 ,29,28,30 ,29,28,30 }, + {0,16,1 ,31,30,31 ,31,30,32 }, {1,17,18 ,1,32,33 ,1,33,34 }, + {1,18,2 ,1,33,2 ,1,34,2 }, {2,18,19 ,2,33,34 ,2,34,35 }, {2,19,3 ,2,34,4 ,2,35,4 }, + {3,19,20 ,4,34,35 ,4,35,36 }, {3,20,4 ,4,35,6 ,4,36,6 }, {4,20,21 ,6,35,36 ,6,36,37 }, + {4,21,5 ,6,36,8 ,6,37,8 }, {5,21,22 ,8,36,37 ,8,37,38 }, {5,22,6 ,8,37,10 ,8,38,10 }, + {6,22,23 ,10,37,38 ,10,38,39 }, {6,23,7 ,10,38,12 ,10,39,12 }, + {7,23,24 ,12,38,39 ,12,39,40 }, {7,24,8 ,12,39,14 ,12,40,14 }, + {8,24,25 ,14,39,40 ,14,40,41 }, {8,25,9 ,14,40,16 ,14,41,16 }, + {9,25,26 ,16,40,41 ,16,41,42 }, {9,26,10 ,16,41,18 ,16,42,18 }, + {10,26,27 ,18,41,42 ,18,42,43 }, {10,27,11 ,18,42,20 ,18,43,20 }, + {11,27,28 ,20,42,43 ,20,43,44 }, {11,28,12 ,20,43,22 ,20,44,22 }, + {12,28,29 ,22,43,44 ,22,44,45 }, {12,29,13 ,22,44,24 ,22,45,24 }, + {13,29,30 ,24,44,45 ,24,45,46 }, {13,30,14 ,24,45,26 ,24,46,26 }, + {14,30,31 ,26,45,46 ,26,46,47 }, {14,31,15 ,26,46,28 ,26,47,28 }, + {15,31,32 ,28,46,47 ,28,47,48 }, {15,32,16 ,28,47,30 ,28,48,30 }, + {16,32,17 ,30,47,48 ,30,48,49 }, {16,17,1 ,30,49,49 ,30,49,32 }, + {17,33,34 ,32,50,51 ,33,50,51 }, {17,34,18 ,32,51,33 ,33,51,34 }, + {18,34,35 ,33,51,52 ,34,51,52 }, {18,35,19 ,33,52,34 ,34,52,35 }, + {19,35,36 ,34,52,53 ,35,52,53 }, {19,36,20 ,34,53,35 ,35,53,36 }, + {20,36,37 ,35,53,54 ,36,53,54 }, {20,37,21 ,35,54,36 ,36,54,37 }, + {21,37,38 ,36,54,55 ,37,54,55 }, {21,38,22 ,36,55,37 ,37,55,38 }, + {22,38,39 ,37,55,56 ,38,55,56 }, {22,39,23 ,37,56,38 ,38,56,39 }, + {23,39,40 ,38,56,57 ,39,56,57 }, {23,40,24 ,38,57,39 ,39,57,40 }, + {24,40,41 ,39,57,58 ,40,57,58 }, {24,41,25 ,39,58,40 ,40,58,41 }, + {25,41,42 ,40,58,59 ,41,58,59 }, {25,42,26 ,40,59,41 ,41,59,42 }, + {26,42,43 ,41,59,60 ,42,59,60 }, {26,43,27 ,41,60,42 ,42,60,43 }, + {27,43,44 ,42,60,61 ,43,60,61 }, {27,44,28 ,42,61,43 ,43,61,44 }, + {28,44,45 ,43,61,62 ,44,61,62 }, {28,45,29 ,43,62,44 ,44,62,45 }, + {29,45,46 ,44,62,63 ,45,62,63 }, {29,46,30 ,44,63,45 ,45,63,46 }, + {30,46,47 ,45,63,64 ,46,63,64 }, {30,47,31 ,45,64,46 ,46,64,47 }, + {31,47,48 ,46,64,65 ,47,64,65 }, {31,48,32 ,46,65,47 ,47,65,48 }, + {32,48,33 ,47,65,66 ,48,65,66 }, {32,33,17 ,47,67,67 ,48,66,49 }, + {33,49,50 ,50,68,69 ,50,67,68 }, {33,50,34 ,50,69,51 ,50,68,51 }, + {34,50,51 ,51,69,70 ,51,68,69 }, {34,51,35 ,51,70,52 ,51,69,52 }, + {35,51,52 ,52,70,71 ,52,69,70 }, {35,52,36 ,52,71,53 ,52,70,53 }, + {36,52,53 ,53,71,72 ,53,70,71 }, {36,53,37 ,53,72,54 ,53,71,54 }, + {37,53,54 ,54,72,73 ,54,71,72 }, {37,54,38 ,54,73,55 ,54,72,55 }, + {38,54,55 ,55,73,74 ,55,72,73 }, {38,55,39 ,55,74,56 ,55,73,56 }, + {39,55,56 ,56,74,75 ,56,73,74 }, {39,56,40 ,56,75,57 ,56,74,57 }, + {40,56,57 ,57,75,76 ,57,74,75 }, {40,57,41 ,57,76,58 ,57,75,58 }, + {41,57,58 ,58,76,77 ,58,75,76 }, {41,58,42 ,58,77,59 ,58,76,59 }, + {42,58,59 ,59,77,78 ,59,76,77 }, {42,59,43 ,59,78,60 ,59,77,60 }, + {43,59,60 ,60,78,79 ,60,77,78 }, {43,60,44 ,60,79,61 ,60,78,61 }, + {44,60,61 ,61,79,80 ,61,78,79 }, {44,61,45 ,61,80,62 ,61,79,62 }, + {45,61,62 ,62,80,81 ,62,79,80 }, {45,62,46 ,62,81,63 ,62,80,63 }, + {46,62,63 ,63,81,82 ,63,80,81 }, {46,63,47 ,63,82,64 ,63,81,64 }, + {47,63,64 ,64,82,83 ,64,81,82 }, {47,64,48 ,64,83,65 ,64,82,65 }, + {48,64,49 ,65,83,84 ,65,82,83 }, {48,49,33 ,65,85,85 ,65,83,66 }, + {66,65,67 ,86,87,88 ,1,0,2 }, {67,65,68 ,88,89,90 ,2,3,4 }, {68,65,69 ,90,91,92 ,4,5,6 }, + {69,65,70 ,92,93,94 ,6,7,8 }, {70,65,71 ,94,95,96 ,8,9,10 }, + {71,65,72 ,96,97,98 ,10,11,12 }, {72,65,73 ,98,99,100 ,12,13,14 }, + {73,65,74 ,100,101,102 ,14,15,16 }, {74,65,75 ,102,103,104 ,16,17,18 }, + {75,65,76 ,104,105,106 ,18,19,20 }, {76,65,77 ,106,107,108 ,20,21,22 }, + {77,65,78 ,108,109,110 ,22,23,24 }, {78,65,79 ,110,111,112 ,24,25,26 }, + {79,65,80 ,112,113,114 ,26,27,28 }, {80,65,81 ,114,115,116 ,28,29,30 }, + {81,65,66 ,116,117,117 ,30,31,32 }, {82,66,83 ,118,86,119 ,33,1,34 }, + {83,66,67 ,119,86,88 ,34,1,2 }, {83,67,84 ,119,88,120 ,34,2,35 }, + {84,67,68 ,120,88,90 ,35,2,4 }, {84,68,85 ,120,90,121 ,35,4,36 }, + {85,68,69 ,121,90,92 ,36,4,6 }, {85,69,86 ,121,92,122 ,36,6,37 }, + {86,69,70 ,122,92,94 ,37,6,8 }, {86,70,87 ,122,94,123 ,37,8,38 }, + {87,70,71 ,123,94,96 ,38,8,10 }, {87,71,88 ,123,96,124 ,38,10,39 }, + {88,71,72 ,124,96,98 ,39,10,12 }, {88,72,89 ,124,98,125 ,39,12,40 }, + {89,72,73 ,125,98,100 ,40,12,14 }, {89,73,90 ,125,100,126 ,40,14,41 }, + {90,73,74 ,126,100,102 ,41,14,16 }, {90,74,91 ,126,102,127 ,41,16,42 }, + {91,74,75 ,127,102,104 ,42,16,18 }, {91,75,92 ,127,104,128 ,42,18,43 }, + {92,75,76 ,128,104,106 ,43,18,20 }, {92,76,93 ,128,106,129 ,43,20,44 }, + {93,76,77 ,129,106,108 ,44,20,22 }, {93,77,94 ,129,108,130 ,44,22,45 }, + {94,77,78 ,130,108,110 ,45,22,24 }, {94,78,95 ,130,110,131 ,45,24,46 }, + {95,78,79 ,131,110,112 ,46,24,26 }, {95,79,96 ,131,112,132 ,46,26,47 }, + {96,79,80 ,132,112,114 ,47,26,28 }, {96,80,97 ,132,114,133 ,47,28,48 }, + {97,80,81 ,133,114,116 ,48,28,30 }, {97,81,82 ,133,116,134 ,48,30,49 }, + {82,81,66 ,135,116,135 ,49,30,32 }, {98,82,99 ,136,118,137 ,50,33,51 }, + {99,82,83 ,137,118,119 ,51,33,34 }, {99,83,100 ,137,119,138 ,51,34,52 }, + {100,83,84 ,138,119,120 ,52,34,35 }, {100,84,101 ,138,120,139 ,52,35,53 }, + {101,84,85 ,139,120,121 ,53,35,36 }, {101,85,102 ,139,121,140 ,53,36,54 }, + {102,85,86 ,140,121,122 ,54,36,37 }, {102,86,103 ,140,122,141 ,54,37,55 }, + {103,86,87 ,141,122,123 ,55,37,38 }, {103,87,104 ,141,123,142 ,55,38,56 }, + {104,87,88 ,142,123,124 ,56,38,39 }, {104,88,105 ,142,124,143 ,56,39,57 }, + {105,88,89 ,143,124,125 ,57,39,40 }, {105,89,106 ,143,125,144 ,57,40,58 }, + {106,89,90 ,144,125,126 ,58,40,41 }, {106,90,107 ,144,126,145 ,58,41,59 }, + {107,90,91 ,145,126,127 ,59,41,42 }, {107,91,108 ,145,127,146 ,59,42,60 }, + {108,91,92 ,146,127,128 ,60,42,43 }, {108,92,109 ,146,128,147 ,60,43,61 }, + {109,92,93 ,147,128,129 ,61,43,44 }, {109,93,110 ,147,129,148 ,61,44,62 }, + {110,93,94 ,148,129,130 ,62,44,45 }, {110,94,111 ,148,130,149 ,62,45,63 }, + {111,94,95 ,149,130,131 ,63,45,46 }, {111,95,112 ,149,131,150 ,63,46,64 }, + {112,95,96 ,150,131,132 ,64,46,47 }, {112,96,113 ,150,132,151 ,64,47,65 }, + {113,96,97 ,151,132,133 ,65,47,48 }, {113,97,98 ,151,133,152 ,65,48,66 }, + {98,97,82 ,153,133,153 ,66,48,49 }, {114,98,115 ,154,136,155 ,67,50,68 }, + {115,98,99 ,155,136,137 ,68,50,51 }, {115,99,116 ,155,137,156 ,68,51,69 }, + {116,99,100 ,156,137,138 ,69,51,52 }, {116,100,117 ,156,138,157 ,69,52,70 }, + {117,100,101 ,157,138,139 ,70,52,53 }, {117,101,118 ,157,139,158 ,70,53,71 }, + {118,101,102 ,158,139,140 ,71,53,54 }, {118,102,119 ,158,140,159 ,71,54,72 }, + {119,102,103 ,159,140,141 ,72,54,55 }, {119,103,120 ,159,141,160 ,72,55,73 }, + {120,103,104 ,160,141,142 ,73,55,56 }, {120,104,121 ,160,142,161 ,73,56,74 }, + {121,104,105 ,161,142,143 ,74,56,57 }, {121,105,122 ,161,143,162 ,74,57,75 }, + {122,105,106 ,162,143,144 ,75,57,58 }, {122,106,123 ,162,144,163 ,75,58,76 }, + {123,106,107 ,163,144,145 ,76,58,59 }, {123,107,124 ,163,145,164 ,76,59,77 }, + {124,107,108 ,164,145,146 ,77,59,60 }, {124,108,125 ,164,146,165 ,77,60,78 }, + {125,108,109 ,165,146,147 ,78,60,61 }, {125,109,126 ,165,147,166 ,78,61,79 }, + {126,109,110 ,166,147,148 ,79,61,62 }, {126,110,127 ,166,148,167 ,79,62,80 }, + {127,110,111 ,167,148,149 ,80,62,63 }, {127,111,128 ,167,149,168 ,80,63,81 }, + {128,111,112 ,168,149,150 ,81,63,64 }, {128,112,129 ,168,150,169 ,81,64,82 }, + {129,112,113 ,169,150,151 ,82,64,65 }, {129,113,114 ,169,151,170 ,82,65,83 }, + {114,113,98 ,171,151,171 ,83,65,66 } +// Object #-1 + , {130,131,132 ,172,173,174 ,0,1,2 }, {130,132,133 ,175,174,176 ,3,2,4 }, + {130,133,134 ,177,176,178 ,5,4,6 }, {130,134,135 ,179,178,180 ,7,6,8 }, + {130,135,136 ,181,180,182 ,9,8,10 }, {130,136,137 ,183,182,184 ,11,10,12 }, + {130,137,138 ,185,184,186 ,13,12,14 }, {130,138,139 ,187,186,188 ,15,14,16 }, + {130,139,140 ,189,188,190 ,17,16,18 }, {130,140,141 ,191,190,192 ,19,18,20 }, + {130,141,142 ,193,192,194 ,21,20,22 }, {130,142,143 ,195,194,196 ,23,22,24 }, + {130,143,144 ,197,196,198 ,25,24,26 }, {130,144,145 ,199,198,200 ,27,26,28 }, + {130,145,146 ,201,200,202 ,29,28,30 }, {130,146,131 ,203,202,203 ,31,30,32 }, + {131,147,148 ,173,204,205 ,1,33,34 }, {131,148,132 ,173,205,174 ,1,34,2 }, + {132,148,149 ,174,205,206 ,2,34,35 }, {132,149,133 ,174,206,176 ,2,35,4 }, + {133,149,150 ,176,206,207 ,4,35,36 }, {133,150,134 ,176,207,178 ,4,36,6 }, + {134,150,151 ,178,207,208 ,6,36,37 }, {134,151,135 ,178,208,180 ,6,37,8 }, + {135,151,152 ,180,208,209 ,8,37,38 }, {135,152,136 ,180,209,182 ,8,38,10 }, + {136,152,153 ,182,209,210 ,10,38,39 }, {136,153,137 ,182,210,184 ,10,39,12 }, + {137,153,154 ,184,210,211 ,12,39,40 }, {137,154,138 ,184,211,186 ,12,40,14 }, + {138,154,155 ,186,211,212 ,14,40,41 }, {138,155,139 ,186,212,188 ,14,41,16 }, + {139,155,156 ,188,212,213 ,16,41,42 }, {139,156,140 ,188,213,190 ,16,42,18 }, + {140,156,157 ,190,213,214 ,18,42,43 }, {140,157,141 ,190,214,192 ,18,43,20 }, + {141,157,158 ,192,214,215 ,20,43,44 }, {141,158,142 ,192,215,194 ,20,44,22 }, + {142,158,159 ,194,215,216 ,22,44,45 }, {142,159,143 ,194,216,196 ,22,45,24 }, + {143,159,160 ,196,216,217 ,24,45,46 }, {143,160,144 ,196,217,198 ,24,46,26 }, + {144,160,161 ,198,217,218 ,26,46,47 }, {144,161,145 ,198,218,200 ,26,47,28 }, + {145,161,162 ,200,218,219 ,28,47,48 }, {145,162,146 ,200,219,202 ,28,48,30 }, + {146,162,147 ,202,219,220 ,30,48,49 }, {146,147,131 ,202,221,221 ,30,49,32 }, + {147,163,164 ,204,222,223 ,33,50,51 }, {147,164,148 ,204,223,205 ,33,51,34 }, + {148,164,165 ,205,223,224 ,34,51,52 }, {148,165,149 ,205,224,206 ,34,52,35 }, + {149,165,166 ,206,224,225 ,35,52,53 }, {149,166,150 ,206,225,207 ,35,53,36 }, + {150,166,167 ,207,225,226 ,36,53,54 }, {150,167,151 ,207,226,208 ,36,54,37 }, + {151,167,168 ,208,226,227 ,37,54,55 }, {151,168,152 ,208,227,209 ,37,55,38 }, + {152,168,169 ,209,227,228 ,38,55,56 }, {152,169,153 ,209,228,210 ,38,56,39 }, + {153,169,170 ,210,228,229 ,39,56,57 }, {153,170,154 ,210,229,211 ,39,57,40 }, + {154,170,171 ,211,229,230 ,40,57,58 }, {154,171,155 ,211,230,212 ,40,58,41 }, + {155,171,172 ,212,230,231 ,41,58,59 }, {155,172,156 ,212,231,213 ,41,59,42 }, + {156,172,173 ,213,231,232 ,42,59,60 }, {156,173,157 ,213,232,214 ,42,60,43 }, + {157,173,174 ,214,232,233 ,43,60,61 }, {157,174,158 ,214,233,215 ,43,61,44 }, + {158,174,175 ,215,233,234 ,44,61,62 }, {158,175,159 ,215,234,216 ,44,62,45 }, + {159,175,176 ,216,234,235 ,45,62,63 }, {159,176,160 ,216,235,217 ,45,63,46 }, + {160,176,177 ,217,235,236 ,46,63,64 }, {160,177,161 ,217,236,218 ,46,64,47 }, + {161,177,178 ,218,236,237 ,47,64,65 }, {161,178,162 ,218,237,219 ,47,65,48 }, + {162,178,163 ,219,237,238 ,48,65,66 }, {162,163,147 ,219,239,239 ,48,66,49 }, + {163,179,180 ,222,240,241 ,50,67,68 }, {163,180,164 ,222,241,223 ,50,68,51 }, + {164,180,181 ,223,241,242 ,51,68,69 }, {164,181,165 ,223,242,224 ,51,69,52 }, + {165,181,182 ,224,242,243 ,52,69,70 }, {165,182,166 ,224,243,225 ,52,70,53 }, + {166,182,183 ,225,243,244 ,53,70,71 }, {166,183,167 ,225,244,226 ,53,71,54 }, + {167,183,184 ,226,244,245 ,54,71,72 }, {167,184,168 ,226,245,227 ,54,72,55 }, + {168,184,185 ,227,245,246 ,55,72,73 }, {168,185,169 ,227,246,228 ,55,73,56 }, + {169,185,186 ,228,246,247 ,56,73,74 }, {169,186,170 ,228,247,229 ,56,74,57 }, + {170,186,187 ,229,247,248 ,57,74,75 }, {170,187,171 ,229,248,230 ,57,75,58 }, + {171,187,188 ,230,248,249 ,58,75,76 }, {171,188,172 ,230,249,231 ,58,76,59 }, + {172,188,189 ,231,249,250 ,59,76,77 }, {172,189,173 ,231,250,232 ,59,77,60 }, + {173,189,190 ,232,250,251 ,60,77,78 }, {173,190,174 ,232,251,233 ,60,78,61 }, + {174,190,191 ,233,251,252 ,61,78,79 }, {174,191,175 ,233,252,234 ,61,79,62 }, + {175,191,192 ,234,252,253 ,62,79,80 }, {175,192,176 ,234,253,235 ,62,80,63 }, + {176,192,193 ,235,253,254 ,63,80,81 }, {176,193,177 ,235,254,236 ,63,81,64 }, + {177,193,194 ,236,254,255 ,64,81,82 }, {177,194,178 ,236,255,237 ,64,82,65 }, + {178,194,179 ,237,255,256 ,65,82,83 }, {178,179,163 ,237,257,257 ,65,83,66 }, + {196,195,197 ,258,259,260 ,1,0,2 }, {197,195,198 ,260,261,262 ,2,3,4 }, + {198,195,199 ,262,263,264 ,4,5,6 }, {199,195,200 ,264,265,266 ,6,7,8 }, + {200,195,201 ,266,267,268 ,8,9,10 }, {201,195,202 ,268,269,270 ,10,11,12 }, + {202,195,203 ,270,271,272 ,12,13,14 }, {203,195,204 ,272,273,274 ,14,15,16 }, + {204,195,205 ,274,275,276 ,16,17,18 }, {205,195,206 ,276,277,278 ,18,19,20 }, + {206,195,207 ,278,279,280 ,20,21,22 }, {207,195,208 ,280,281,282 ,22,23,24 }, + {208,195,209 ,282,283,284 ,24,25,26 }, {209,195,210 ,284,285,286 ,26,27,28 }, + {210,195,211 ,286,287,288 ,28,29,30 }, {211,195,196 ,288,289,289 ,30,31,32 }, + {212,196,213 ,290,258,291 ,33,1,34 }, {213,196,197 ,291,258,260 ,34,1,2 }, + {213,197,214 ,291,260,292 ,34,2,35 }, {214,197,198 ,292,260,262 ,35,2,4 }, + {214,198,215 ,292,262,293 ,35,4,36 }, {215,198,199 ,293,262,264 ,36,4,6 }, + {215,199,216 ,293,264,294 ,36,6,37 }, {216,199,200 ,294,264,266 ,37,6,8 }, + {216,200,217 ,294,266,295 ,37,8,38 }, {217,200,201 ,295,266,268 ,38,8,10 }, + {217,201,218 ,295,268,296 ,38,10,39 }, {218,201,202 ,296,268,270 ,39,10,12 }, + {218,202,219 ,296,270,297 ,39,12,40 }, {219,202,203 ,297,270,272 ,40,12,14 }, + {219,203,220 ,297,272,298 ,40,14,41 }, {220,203,204 ,298,272,274 ,41,14,16 }, + {220,204,221 ,298,274,299 ,41,16,42 }, {221,204,205 ,299,274,276 ,42,16,18 }, + {221,205,222 ,299,276,300 ,42,18,43 }, {222,205,206 ,300,276,278 ,43,18,20 }, + {222,206,223 ,300,278,301 ,43,20,44 }, {223,206,207 ,301,278,280 ,44,20,22 }, + {223,207,224 ,301,280,302 ,44,22,45 }, {224,207,208 ,302,280,282 ,45,22,24 }, + {224,208,225 ,302,282,303 ,45,24,46 }, {225,208,209 ,303,282,284 ,46,24,26 }, + {225,209,226 ,303,284,304 ,46,26,47 }, {226,209,210 ,304,284,286 ,47,26,28 }, + {226,210,227 ,304,286,305 ,47,28,48 }, {227,210,211 ,305,286,288 ,48,28,30 }, + {227,211,212 ,305,288,306 ,48,30,49 }, {212,211,196 ,307,288,307 ,49,30,32 }, + {228,212,229 ,308,290,309 ,50,33,51 }, {229,212,213 ,309,290,291 ,51,33,34 }, + {229,213,230 ,309,291,310 ,51,34,52 }, {230,213,214 ,310,291,292 ,52,34,35 }, + {230,214,231 ,310,292,311 ,52,35,53 }, {231,214,215 ,311,292,293 ,53,35,36 }, + {231,215,232 ,311,293,312 ,53,36,54 }, {232,215,216 ,312,293,294 ,54,36,37 }, + {232,216,233 ,312,294,313 ,54,37,55 }, {233,216,217 ,313,294,295 ,55,37,38 }, + {233,217,234 ,313,295,314 ,55,38,56 }, {234,217,218 ,314,295,296 ,56,38,39 }, + {234,218,235 ,314,296,315 ,56,39,57 }, {235,218,219 ,315,296,297 ,57,39,40 }, + {235,219,236 ,315,297,316 ,57,40,58 }, {236,219,220 ,316,297,298 ,58,40,41 }, + {236,220,237 ,316,298,317 ,58,41,59 }, {237,220,221 ,317,298,299 ,59,41,42 }, + {237,221,238 ,317,299,318 ,59,42,60 }, {238,221,222 ,318,299,300 ,60,42,43 }, + {238,222,239 ,318,300,319 ,60,43,61 }, {239,222,223 ,319,300,301 ,61,43,44 }, + {239,223,240 ,319,301,320 ,61,44,62 }, {240,223,224 ,320,301,302 ,62,44,45 }, + {240,224,241 ,320,302,321 ,62,45,63 }, {241,224,225 ,321,302,303 ,63,45,46 }, + {241,225,242 ,321,303,322 ,63,46,64 }, {242,225,226 ,322,303,304 ,64,46,47 }, + {242,226,243 ,322,304,323 ,64,47,65 }, {243,226,227 ,323,304,305 ,65,47,48 }, + {243,227,228 ,323,305,324 ,65,48,66 }, {228,227,212 ,325,305,325 ,66,48,49 }, + {244,228,245 ,326,308,327 ,67,50,68 }, {245,228,229 ,327,308,309 ,68,50,51 }, + {245,229,246 ,327,309,328 ,68,51,69 }, {246,229,230 ,328,309,310 ,69,51,52 }, + {246,230,247 ,328,310,329 ,69,52,70 }, {247,230,231 ,329,310,311 ,70,52,53 }, + {247,231,248 ,329,311,330 ,70,53,71 }, {248,231,232 ,330,311,312 ,71,53,54 }, + {248,232,249 ,330,312,331 ,71,54,72 }, {249,232,233 ,331,312,313 ,72,54,55 }, + {249,233,250 ,331,313,332 ,72,55,73 }, {250,233,234 ,332,313,314 ,73,55,56 }, + {250,234,251 ,332,314,333 ,73,56,74 }, {251,234,235 ,333,314,315 ,74,56,57 }, + {251,235,252 ,333,315,334 ,74,57,75 }, {252,235,236 ,334,315,316 ,75,57,58 }, + {252,236,253 ,334,316,335 ,75,58,76 }, {253,236,237 ,335,316,317 ,76,58,59 }, + {253,237,254 ,335,317,336 ,76,59,77 }, {254,237,238 ,336,317,318 ,77,59,60 }, + {254,238,255 ,336,318,337 ,77,60,78 }, {255,238,239 ,337,318,319 ,78,60,61 }, + {255,239,256 ,337,319,338 ,78,61,79 }, {256,239,240 ,338,319,320 ,79,61,62 }, + {256,240,257 ,338,320,339 ,79,62,80 }, {257,240,241 ,339,320,321 ,80,62,63 }, + {257,241,258 ,339,321,340 ,80,63,81 }, {258,241,242 ,340,321,322 ,81,63,64 }, + {258,242,259 ,340,322,341 ,81,64,82 }, {259,242,243 ,341,322,323 ,82,64,65 }, + {259,243,244 ,341,323,342 ,82,65,83 }, {244,243,228 ,343,323,343 ,83,65,66 } +}, +//lid 3 +{ +// Object #-1 + {0,1,2 ,0,1,2 ,0,1,2 }, {0,2,3 ,3,2,4 ,3,2,4 }, {0,3,4 ,5,4,6 ,5,4,6 }, + {0,4,5 ,7,6,8 ,7,6,8 }, {0,5,6 ,9,8,10 ,9,8,10 }, {0,6,7 ,11,10,12 ,11,10,12 }, + {0,7,8 ,13,12,14 ,13,12,14 }, {0,8,9 ,15,14,16 ,15,14,16 }, {0,9,10 ,17,16,18 ,17,16,18 }, + {0,10,11 ,19,18,20 ,19,18,20 }, {0,11,12 ,21,20,22 ,21,20,22 }, + {0,12,13 ,23,22,24 ,23,22,24 }, {0,13,14 ,25,24,26 ,25,24,26 }, + {0,14,15 ,27,26,28 ,27,26,28 }, {0,15,16 ,29,28,30 ,29,28,30 }, + {0,16,1 ,31,30,31 ,31,30,32 }, {1,17,18 ,1,32,33 ,1,33,34 }, + {1,18,2 ,1,33,2 ,1,34,2 }, {2,18,19 ,2,33,34 ,2,34,35 }, {2,19,3 ,2,34,4 ,2,35,4 }, + {3,19,20 ,4,34,35 ,4,35,36 }, {3,20,4 ,4,35,6 ,4,36,6 }, {4,20,21 ,6,35,36 ,6,36,37 }, + {4,21,5 ,6,36,8 ,6,37,8 }, {5,21,22 ,8,36,37 ,8,37,38 }, {5,22,6 ,8,37,10 ,8,38,10 }, + {6,22,23 ,10,37,38 ,10,38,39 }, {6,23,7 ,10,38,12 ,10,39,12 }, + {7,23,24 ,12,38,39 ,12,39,40 }, {7,24,8 ,12,39,14 ,12,40,14 }, + {8,24,25 ,14,39,40 ,14,40,41 }, {8,25,9 ,14,40,16 ,14,41,16 }, + {9,25,26 ,16,40,41 ,16,41,42 }, {9,26,10 ,16,41,18 ,16,42,18 }, + {10,26,27 ,18,41,42 ,18,42,43 }, {10,27,11 ,18,42,20 ,18,43,20 }, + {11,27,28 ,20,42,43 ,20,43,44 }, {11,28,12 ,20,43,22 ,20,44,22 }, + {12,28,29 ,22,43,44 ,22,44,45 }, {12,29,13 ,22,44,24 ,22,45,24 }, + {13,29,30 ,24,44,45 ,24,45,46 }, {13,30,14 ,24,45,26 ,24,46,26 }, + {14,30,31 ,26,45,46 ,26,46,47 }, {14,31,15 ,26,46,28 ,26,47,28 }, + {15,31,32 ,28,46,47 ,28,47,48 }, {15,32,16 ,28,47,30 ,28,48,30 }, + {16,32,17 ,30,47,48 ,30,48,49 }, {16,17,1 ,30,49,49 ,30,49,32 }, + {17,33,34 ,32,50,51 ,33,50,51 }, {17,34,18 ,32,51,33 ,33,51,34 }, + {18,34,35 ,33,51,52 ,34,51,52 }, {18,35,19 ,33,52,34 ,34,52,35 }, + {19,35,36 ,34,52,53 ,35,52,53 }, {19,36,20 ,34,53,35 ,35,53,36 }, + {20,36,37 ,35,53,54 ,36,53,54 }, {20,37,21 ,35,54,36 ,36,54,37 }, + {21,37,38 ,36,54,55 ,37,54,55 }, {21,38,22 ,36,55,37 ,37,55,38 }, + {22,38,39 ,37,55,56 ,38,55,56 }, {22,39,23 ,37,56,38 ,38,56,39 }, + {23,39,40 ,38,56,57 ,39,56,57 }, {23,40,24 ,38,57,39 ,39,57,40 }, + {24,40,41 ,39,57,58 ,40,57,58 }, {24,41,25 ,39,58,40 ,40,58,41 }, + {25,41,42 ,40,58,59 ,41,58,59 }, {25,42,26 ,40,59,41 ,41,59,42 }, + {26,42,43 ,41,59,60 ,42,59,60 }, {26,43,27 ,41,60,42 ,42,60,43 }, + {27,43,44 ,42,60,61 ,43,60,61 }, {27,44,28 ,42,61,43 ,43,61,44 }, + {28,44,45 ,43,61,62 ,44,61,62 }, {28,45,29 ,43,62,44 ,44,62,45 }, + {29,45,46 ,44,62,63 ,45,62,63 }, {29,46,30 ,44,63,45 ,45,63,46 }, + {30,46,47 ,45,63,64 ,46,63,64 }, {30,47,31 ,45,64,46 ,46,64,47 }, + {31,47,48 ,46,64,65 ,47,64,65 }, {31,48,32 ,46,65,47 ,47,65,48 }, + {32,48,33 ,47,65,66 ,48,65,66 }, {32,33,17 ,47,67,67 ,48,66,49 }, + {33,49,50 ,50,68,69 ,50,67,68 }, {33,50,34 ,50,69,51 ,50,68,51 }, + {34,50,51 ,51,69,70 ,51,68,69 }, {34,51,35 ,51,70,52 ,51,69,52 }, + {35,51,52 ,52,70,71 ,52,69,70 }, {35,52,36 ,52,71,53 ,52,70,53 }, + {36,52,53 ,53,71,72 ,53,70,71 }, {36,53,37 ,53,72,54 ,53,71,54 }, + {37,53,54 ,54,72,73 ,54,71,72 }, {37,54,38 ,54,73,55 ,54,72,55 }, + {38,54,55 ,55,73,74 ,55,72,73 }, {38,55,39 ,55,74,56 ,55,73,56 }, + {39,55,56 ,56,74,75 ,56,73,74 }, {39,56,40 ,56,75,57 ,56,74,57 }, + {40,56,57 ,57,75,76 ,57,74,75 }, {40,57,41 ,57,76,58 ,57,75,58 }, + {41,57,58 ,58,76,77 ,58,75,76 }, {41,58,42 ,58,77,59 ,58,76,59 }, + {42,58,59 ,59,77,78 ,59,76,77 }, {42,59,43 ,59,78,60 ,59,77,60 }, + {43,59,60 ,60,78,79 ,60,77,78 }, {43,60,44 ,60,79,61 ,60,78,61 }, + {44,60,61 ,61,79,80 ,61,78,79 }, {44,61,45 ,61,80,62 ,61,79,62 }, + {45,61,62 ,62,80,81 ,62,79,80 }, {45,62,46 ,62,81,63 ,62,80,63 }, + {46,62,63 ,63,81,82 ,63,80,81 }, {46,63,47 ,63,82,64 ,63,81,64 }, + {47,63,64 ,64,82,83 ,64,81,82 }, {47,64,48 ,64,83,65 ,64,82,65 }, + {48,64,49 ,65,83,84 ,65,82,83 }, {48,49,33 ,65,85,85 ,65,83,66 }, + {66,65,67 ,86,87,88 ,1,0,2 }, {67,65,68 ,88,89,90 ,2,3,4 }, {68,65,69 ,90,91,92 ,4,5,6 }, + {69,65,70 ,92,93,94 ,6,7,8 }, {70,65,71 ,94,95,96 ,8,9,10 }, + {71,65,72 ,96,97,98 ,10,11,12 }, {72,65,73 ,98,99,100 ,12,13,14 }, + {73,65,74 ,100,101,102 ,14,15,16 }, {74,65,75 ,102,103,104 ,16,17,18 }, + {75,65,76 ,104,105,106 ,18,19,20 }, {76,65,77 ,106,107,108 ,20,21,22 }, + {77,65,78 ,108,109,110 ,22,23,24 }, {78,65,79 ,110,111,112 ,24,25,26 }, + {79,65,80 ,112,113,114 ,26,27,28 }, {80,65,81 ,114,115,116 ,28,29,30 }, + {81,65,66 ,116,117,117 ,30,31,32 }, {82,66,83 ,118,86,119 ,33,1,34 }, + {83,66,67 ,119,86,88 ,34,1,2 }, {83,67,84 ,119,88,120 ,34,2,35 }, + {84,67,68 ,120,88,90 ,35,2,4 }, {84,68,85 ,120,90,121 ,35,4,36 }, + {85,68,69 ,121,90,92 ,36,4,6 }, {85,69,86 ,121,92,122 ,36,6,37 }, + {86,69,70 ,122,92,94 ,37,6,8 }, {86,70,87 ,122,94,123 ,37,8,38 }, + {87,70,71 ,123,94,96 ,38,8,10 }, {87,71,88 ,123,96,124 ,38,10,39 }, + {88,71,72 ,124,96,98 ,39,10,12 }, {88,72,89 ,124,98,125 ,39,12,40 }, + {89,72,73 ,125,98,100 ,40,12,14 }, {89,73,90 ,125,100,126 ,40,14,41 }, + {90,73,74 ,126,100,102 ,41,14,16 }, {90,74,91 ,126,102,127 ,41,16,42 }, + {91,74,75 ,127,102,104 ,42,16,18 }, {91,75,92 ,127,104,128 ,42,18,43 }, + {92,75,76 ,128,104,106 ,43,18,20 }, {92,76,93 ,128,106,129 ,43,20,44 }, + {93,76,77 ,129,106,108 ,44,20,22 }, {93,77,94 ,129,108,130 ,44,22,45 }, + {94,77,78 ,130,108,110 ,45,22,24 }, {94,78,95 ,130,110,131 ,45,24,46 }, + {95,78,79 ,131,110,112 ,46,24,26 }, {95,79,96 ,131,112,132 ,46,26,47 }, + {96,79,80 ,132,112,114 ,47,26,28 }, {96,80,97 ,132,114,133 ,47,28,48 }, + {97,80,81 ,133,114,116 ,48,28,30 }, {97,81,82 ,133,116,134 ,48,30,49 }, + {82,81,66 ,135,116,135 ,49,30,32 }, {98,82,99 ,136,118,137 ,50,33,51 }, + {99,82,83 ,137,118,119 ,51,33,34 }, {99,83,100 ,137,119,138 ,51,34,52 }, + {100,83,84 ,138,119,120 ,52,34,35 }, {100,84,101 ,138,120,139 ,52,35,53 }, + {101,84,85 ,139,120,121 ,53,35,36 }, {101,85,102 ,139,121,140 ,53,36,54 }, + {102,85,86 ,140,121,122 ,54,36,37 }, {102,86,103 ,140,122,141 ,54,37,55 }, + {103,86,87 ,141,122,123 ,55,37,38 }, {103,87,104 ,141,123,142 ,55,38,56 }, + {104,87,88 ,142,123,124 ,56,38,39 }, {104,88,105 ,142,124,143 ,56,39,57 }, + {105,88,89 ,143,124,125 ,57,39,40 }, {105,89,106 ,143,125,144 ,57,40,58 }, + {106,89,90 ,144,125,126 ,58,40,41 }, {106,90,107 ,144,126,145 ,58,41,59 }, + {107,90,91 ,145,126,127 ,59,41,42 }, {107,91,108 ,145,127,146 ,59,42,60 }, + {108,91,92 ,146,127,128 ,60,42,43 }, {108,92,109 ,146,128,147 ,60,43,61 }, + {109,92,93 ,147,128,129 ,61,43,44 }, {109,93,110 ,147,129,148 ,61,44,62 }, + {110,93,94 ,148,129,130 ,62,44,45 }, {110,94,111 ,148,130,149 ,62,45,63 }, + {111,94,95 ,149,130,131 ,63,45,46 }, {111,95,112 ,149,131,150 ,63,46,64 }, + {112,95,96 ,150,131,132 ,64,46,47 }, {112,96,113 ,150,132,151 ,64,47,65 }, + {113,96,97 ,151,132,133 ,65,47,48 }, {113,97,98 ,151,133,152 ,65,48,66 }, + {98,97,82 ,153,133,153 ,66,48,49 }, {114,98,115 ,154,136,155 ,67,50,68 }, + {115,98,99 ,155,136,137 ,68,50,51 }, {115,99,116 ,155,137,156 ,68,51,69 }, + {116,99,100 ,156,137,138 ,69,51,52 }, {116,100,117 ,156,138,157 ,69,52,70 }, + {117,100,101 ,157,138,139 ,70,52,53 }, {117,101,118 ,157,139,158 ,70,53,71 }, + {118,101,102 ,158,139,140 ,71,53,54 }, {118,102,119 ,158,140,159 ,71,54,72 }, + {119,102,103 ,159,140,141 ,72,54,55 }, {119,103,120 ,159,141,160 ,72,55,73 }, + {120,103,104 ,160,141,142 ,73,55,56 }, {120,104,121 ,160,142,161 ,73,56,74 }, + {121,104,105 ,161,142,143 ,74,56,57 }, {121,105,122 ,161,143,162 ,74,57,75 }, + {122,105,106 ,162,143,144 ,75,57,58 }, {122,106,123 ,162,144,163 ,75,58,76 }, + {123,106,107 ,163,144,145 ,76,58,59 }, {123,107,124 ,163,145,164 ,76,59,77 }, + {124,107,108 ,164,145,146 ,77,59,60 }, {124,108,125 ,164,146,165 ,77,60,78 }, + {125,108,109 ,165,146,147 ,78,60,61 }, {125,109,126 ,165,147,166 ,78,61,79 }, + {126,109,110 ,166,147,148 ,79,61,62 }, {126,110,127 ,166,148,167 ,79,62,80 }, + {127,110,111 ,167,148,149 ,80,62,63 }, {127,111,128 ,167,149,168 ,80,63,81 }, + {128,111,112 ,168,149,150 ,81,63,64 }, {128,112,129 ,168,150,169 ,81,64,82 }, + {129,112,113 ,169,150,151 ,82,64,65 }, {129,113,114 ,169,151,170 ,82,65,83 }, + {114,113,98 ,171,151,171 ,83,65,66 } +// Object #-1 + , {130,131,132 ,172,173,174 ,0,1,2 }, {130,132,133 ,175,174,176 ,3,2,4 }, + {130,133,134 ,177,176,178 ,5,4,6 }, {130,134,135 ,179,178,180 ,7,6,8 }, + {130,135,136 ,181,180,182 ,9,8,10 }, {130,136,137 ,183,182,184 ,11,10,12 }, + {130,137,138 ,185,184,186 ,13,12,14 }, {130,138,139 ,187,186,188 ,15,14,16 }, + {130,139,140 ,189,188,190 ,17,16,18 }, {130,140,141 ,191,190,192 ,19,18,20 }, + {130,141,142 ,193,192,194 ,21,20,22 }, {130,142,143 ,195,194,196 ,23,22,24 }, + {130,143,144 ,197,196,198 ,25,24,26 }, {130,144,145 ,199,198,200 ,27,26,28 }, + {130,145,146 ,201,200,202 ,29,28,30 }, {130,146,131 ,203,202,203 ,31,30,32 }, + {131,147,148 ,173,204,205 ,1,33,34 }, {131,148,132 ,173,205,174 ,1,34,2 }, + {132,148,149 ,174,205,206 ,2,34,35 }, {132,149,133 ,174,206,176 ,2,35,4 }, + {133,149,150 ,176,206,207 ,4,35,36 }, {133,150,134 ,176,207,178 ,4,36,6 }, + {134,150,151 ,178,207,208 ,6,36,37 }, {134,151,135 ,178,208,180 ,6,37,8 }, + {135,151,152 ,180,208,209 ,8,37,38 }, {135,152,136 ,180,209,182 ,8,38,10 }, + {136,152,153 ,182,209,210 ,10,38,39 }, {136,153,137 ,182,210,184 ,10,39,12 }, + {137,153,154 ,184,210,211 ,12,39,40 }, {137,154,138 ,184,211,186 ,12,40,14 }, + {138,154,155 ,186,211,212 ,14,40,41 }, {138,155,139 ,186,212,188 ,14,41,16 }, + {139,155,156 ,188,212,213 ,16,41,42 }, {139,156,140 ,188,213,190 ,16,42,18 }, + {140,156,157 ,190,213,214 ,18,42,43 }, {140,157,141 ,190,214,192 ,18,43,20 }, + {141,157,158 ,192,214,215 ,20,43,44 }, {141,158,142 ,192,215,194 ,20,44,22 }, + {142,158,159 ,194,215,216 ,22,44,45 }, {142,159,143 ,194,216,196 ,22,45,24 }, + {143,159,160 ,196,216,217 ,24,45,46 }, {143,160,144 ,196,217,198 ,24,46,26 }, + {144,160,161 ,198,217,218 ,26,46,47 }, {144,161,145 ,198,218,200 ,26,47,28 }, + {145,161,162 ,200,218,219 ,28,47,48 }, {145,162,146 ,200,219,202 ,28,48,30 }, + {146,162,147 ,202,219,220 ,30,48,49 }, {146,147,131 ,202,221,221 ,30,49,32 }, + {147,163,164 ,204,222,223 ,33,50,51 }, {147,164,148 ,204,223,205 ,33,51,34 }, + {148,164,165 ,205,223,224 ,34,51,52 }, {148,165,149 ,205,224,206 ,34,52,35 }, + {149,165,166 ,206,224,225 ,35,52,53 }, {149,166,150 ,206,225,207 ,35,53,36 }, + {150,166,167 ,207,225,226 ,36,53,54 }, {150,167,151 ,207,226,208 ,36,54,37 }, + {151,167,168 ,208,226,227 ,37,54,55 }, {151,168,152 ,208,227,209 ,37,55,38 }, + {152,168,169 ,209,227,228 ,38,55,56 }, {152,169,153 ,209,228,210 ,38,56,39 }, + {153,169,170 ,210,228,229 ,39,56,57 }, {153,170,154 ,210,229,211 ,39,57,40 }, + {154,170,171 ,211,229,230 ,40,57,58 }, {154,171,155 ,211,230,212 ,40,58,41 }, + {155,171,172 ,212,230,231 ,41,58,59 }, {155,172,156 ,212,231,213 ,41,59,42 }, + {156,172,173 ,213,231,232 ,42,59,60 }, {156,173,157 ,213,232,214 ,42,60,43 }, + {157,173,174 ,214,232,233 ,43,60,61 }, {157,174,158 ,214,233,215 ,43,61,44 }, + {158,174,175 ,215,233,234 ,44,61,62 }, {158,175,159 ,215,234,216 ,44,62,45 }, + {159,175,176 ,216,234,235 ,45,62,63 }, {159,176,160 ,216,235,217 ,45,63,46 }, + {160,176,177 ,217,235,236 ,46,63,64 }, {160,177,161 ,217,236,218 ,46,64,47 }, + {161,177,178 ,218,236,237 ,47,64,65 }, {161,178,162 ,218,237,219 ,47,65,48 }, + {162,178,163 ,219,237,238 ,48,65,66 }, {162,163,147 ,219,239,239 ,48,66,49 }, + {163,179,180 ,222,240,241 ,50,67,68 }, {163,180,164 ,222,241,223 ,50,68,51 }, + {164,180,181 ,223,241,242 ,51,68,69 }, {164,181,165 ,223,242,224 ,51,69,52 }, + {165,181,182 ,224,242,243 ,52,69,70 }, {165,182,166 ,224,243,225 ,52,70,53 }, + {166,182,183 ,225,243,244 ,53,70,71 }, {166,183,167 ,225,244,226 ,53,71,54 }, + {167,183,184 ,226,244,245 ,54,71,72 }, {167,184,168 ,226,245,227 ,54,72,55 }, + {168,184,185 ,227,245,246 ,55,72,73 }, {168,185,169 ,227,246,228 ,55,73,56 }, + {169,185,186 ,228,246,247 ,56,73,74 }, {169,186,170 ,228,247,229 ,56,74,57 }, + {170,186,187 ,229,247,248 ,57,74,75 }, {170,187,171 ,229,248,230 ,57,75,58 }, + {171,187,188 ,230,248,249 ,58,75,76 }, {171,188,172 ,230,249,231 ,58,76,59 }, + {172,188,189 ,231,249,250 ,59,76,77 }, {172,189,173 ,231,250,232 ,59,77,60 }, + {173,189,190 ,232,250,251 ,60,77,78 }, {173,190,174 ,232,251,233 ,60,78,61 }, + {174,190,191 ,233,251,252 ,61,78,79 }, {174,191,175 ,233,252,234 ,61,79,62 }, + {175,191,192 ,234,252,253 ,62,79,80 }, {175,192,176 ,234,253,235 ,62,80,63 }, + {176,192,193 ,235,253,254 ,63,80,81 }, {176,193,177 ,235,254,236 ,63,81,64 }, + {177,193,194 ,236,254,255 ,64,81,82 }, {177,194,178 ,236,255,237 ,64,82,65 }, + {178,194,179 ,237,255,256 ,65,82,83 }, {178,179,163 ,237,257,257 ,65,83,66 }, + {196,195,197 ,258,259,260 ,1,0,2 }, {197,195,198 ,260,261,262 ,2,3,4 }, + {198,195,199 ,262,263,264 ,4,5,6 }, {199,195,200 ,264,265,266 ,6,7,8 }, + {200,195,201 ,266,267,268 ,8,9,10 }, {201,195,202 ,268,269,270 ,10,11,12 }, + {202,195,203 ,270,271,272 ,12,13,14 }, {203,195,204 ,272,273,274 ,14,15,16 }, + {204,195,205 ,274,275,276 ,16,17,18 }, {205,195,206 ,276,277,278 ,18,19,20 }, + {206,195,207 ,278,279,280 ,20,21,22 }, {207,195,208 ,280,281,282 ,22,23,24 }, + {208,195,209 ,282,283,284 ,24,25,26 }, {209,195,210 ,284,285,286 ,26,27,28 }, + {210,195,211 ,286,287,288 ,28,29,30 }, {211,195,196 ,288,289,289 ,30,31,32 }, + {212,196,213 ,290,258,291 ,33,1,34 }, {213,196,197 ,291,258,260 ,34,1,2 }, + {213,197,214 ,291,260,292 ,34,2,35 }, {214,197,198 ,292,260,262 ,35,2,4 }, + {214,198,215 ,292,262,293 ,35,4,36 }, {215,198,199 ,293,262,264 ,36,4,6 }, + {215,199,216 ,293,264,294 ,36,6,37 }, {216,199,200 ,294,264,266 ,37,6,8 }, + {216,200,217 ,294,266,295 ,37,8,38 }, {217,200,201 ,295,266,268 ,38,8,10 }, + {217,201,218 ,295,268,296 ,38,10,39 }, {218,201,202 ,296,268,270 ,39,10,12 }, + {218,202,219 ,296,270,297 ,39,12,40 }, {219,202,203 ,297,270,272 ,40,12,14 }, + {219,203,220 ,297,272,298 ,40,14,41 }, {220,203,204 ,298,272,274 ,41,14,16 }, + {220,204,221 ,298,274,299 ,41,16,42 }, {221,204,205 ,299,274,276 ,42,16,18 }, + {221,205,222 ,299,276,300 ,42,18,43 }, {222,205,206 ,300,276,278 ,43,18,20 }, + {222,206,223 ,300,278,301 ,43,20,44 }, {223,206,207 ,301,278,280 ,44,20,22 }, + {223,207,224 ,301,280,302 ,44,22,45 }, {224,207,208 ,302,280,282 ,45,22,24 }, + {224,208,225 ,302,282,303 ,45,24,46 }, {225,208,209 ,303,282,284 ,46,24,26 }, + {225,209,226 ,303,284,304 ,46,26,47 }, {226,209,210 ,304,284,286 ,47,26,28 }, + {226,210,227 ,304,286,305 ,47,28,48 }, {227,210,211 ,305,286,288 ,48,28,30 }, + {227,211,212 ,305,288,306 ,48,30,49 }, {212,211,196 ,307,288,307 ,49,30,32 }, + {228,212,229 ,308,290,309 ,50,33,51 }, {229,212,213 ,309,290,291 ,51,33,34 }, + {229,213,230 ,309,291,310 ,51,34,52 }, {230,213,214 ,310,291,292 ,52,34,35 }, + {230,214,231 ,310,292,311 ,52,35,53 }, {231,214,215 ,311,292,293 ,53,35,36 }, + {231,215,232 ,311,293,312 ,53,36,54 }, {232,215,216 ,312,293,294 ,54,36,37 }, + {232,216,233 ,312,294,313 ,54,37,55 }, {233,216,217 ,313,294,295 ,55,37,38 }, + {233,217,234 ,313,295,314 ,55,38,56 }, {234,217,218 ,314,295,296 ,56,38,39 }, + {234,218,235 ,314,296,315 ,56,39,57 }, {235,218,219 ,315,296,297 ,57,39,40 }, + {235,219,236 ,315,297,316 ,57,40,58 }, {236,219,220 ,316,297,298 ,58,40,41 }, + {236,220,237 ,316,298,317 ,58,41,59 }, {237,220,221 ,317,298,299 ,59,41,42 }, + {237,221,238 ,317,299,318 ,59,42,60 }, {238,221,222 ,318,299,300 ,60,42,43 }, + {238,222,239 ,318,300,319 ,60,43,61 }, {239,222,223 ,319,300,301 ,61,43,44 }, + {239,223,240 ,319,301,320 ,61,44,62 }, {240,223,224 ,320,301,302 ,62,44,45 }, + {240,224,241 ,320,302,321 ,62,45,63 }, {241,224,225 ,321,302,303 ,63,45,46 }, + {241,225,242 ,321,303,322 ,63,46,64 }, {242,225,226 ,322,303,304 ,64,46,47 }, + {242,226,243 ,322,304,323 ,64,47,65 }, {243,226,227 ,323,304,305 ,65,47,48 }, + {243,227,228 ,323,305,324 ,65,48,66 }, {228,227,212 ,325,305,325 ,66,48,49 }, + {244,228,245 ,326,308,327 ,67,50,68 }, {245,228,229 ,327,308,309 ,68,50,51 }, + {245,229,246 ,327,309,328 ,68,51,69 }, {246,229,230 ,328,309,310 ,69,51,52 }, + {246,230,247 ,328,310,329 ,69,52,70 }, {247,230,231 ,329,310,311 ,70,52,53 }, + {247,231,248 ,329,311,330 ,70,53,71 }, {248,231,232 ,330,311,312 ,71,53,54 }, + {248,232,249 ,330,312,331 ,71,54,72 }, {249,232,233 ,331,312,313 ,72,54,55 }, + {249,233,250 ,331,313,332 ,72,55,73 }, {250,233,234 ,332,313,314 ,73,55,56 }, + {250,234,251 ,332,314,333 ,73,56,74 }, {251,234,235 ,333,314,315 ,74,56,57 }, + {251,235,252 ,333,315,334 ,74,57,75 }, {252,235,236 ,334,315,316 ,75,57,58 }, + {252,236,253 ,334,316,335 ,75,58,76 }, {253,236,237 ,335,316,317 ,76,58,59 }, + {253,237,254 ,335,317,336 ,76,59,77 }, {254,237,238 ,336,317,318 ,77,59,60 }, + {254,238,255 ,336,318,337 ,77,60,78 }, {255,238,239 ,337,318,319 ,78,60,61 }, + {255,239,256 ,337,319,338 ,78,61,79 }, {256,239,240 ,338,319,320 ,79,61,62 }, + {256,240,257 ,338,320,339 ,79,62,80 }, {257,240,241 ,339,320,321 ,80,62,63 }, + {257,241,258 ,339,321,340 ,80,63,81 }, {258,241,242 ,340,321,322 ,81,63,64 }, + {258,242,259 ,340,322,341 ,81,64,82 }, {259,242,243 ,341,322,323 ,82,64,65 }, + {259,243,244 ,341,323,342 ,82,65,83 }, {244,243,228 ,343,323,343 ,83,65,66 } +}, + +//lid 2 +{ +// Object #-1 + {0,1,2 ,0,1,2 ,0,1,2 }, {0,2,3 ,3,2,4 ,3,2,4 }, {0,3,4 ,5,4,6 ,5,4,6 }, + {0,4,5 ,7,6,8 ,7,6,8 }, {0,5,6 ,9,8,10 ,9,8,10 }, {0,6,7 ,11,10,12 ,11,10,12 }, + {0,7,8 ,13,12,14 ,13,12,14 }, {0,8,9 ,15,14,16 ,15,14,16 }, {0,9,10 ,17,16,18 ,17,16,18 }, + {0,10,11 ,19,18,20 ,19,18,20 }, {0,11,12 ,21,20,22 ,21,20,22 }, + {0,12,13 ,23,22,24 ,23,22,24 }, {0,13,14 ,25,24,26 ,25,24,26 }, + {0,14,15 ,27,26,28 ,27,26,28 }, {0,15,16 ,29,28,30 ,29,28,30 }, + {0,16,1 ,31,30,31 ,31,30,32 }, {1,17,18 ,1,32,33 ,1,33,34 }, + {1,18,2 ,1,33,2 ,1,34,2 }, {2,18,19 ,2,33,34 ,2,34,35 }, {2,19,3 ,2,34,4 ,2,35,4 }, + {3,19,20 ,4,34,35 ,4,35,36 }, {3,20,4 ,4,35,6 ,4,36,6 }, {4,20,21 ,6,35,36 ,6,36,37 }, + {4,21,5 ,6,36,8 ,6,37,8 }, {5,21,22 ,8,36,37 ,8,37,38 }, {5,22,6 ,8,37,10 ,8,38,10 }, + {6,22,23 ,10,37,38 ,10,38,39 }, {6,23,7 ,10,38,12 ,10,39,12 }, + {7,23,24 ,12,38,39 ,12,39,40 }, {7,24,8 ,12,39,14 ,12,40,14 }, + {8,24,25 ,14,39,40 ,14,40,41 }, {8,25,9 ,14,40,16 ,14,41,16 }, + {9,25,26 ,16,40,41 ,16,41,42 }, {9,26,10 ,16,41,18 ,16,42,18 }, + {10,26,27 ,18,41,42 ,18,42,43 }, {10,27,11 ,18,42,20 ,18,43,20 }, + {11,27,28 ,20,42,43 ,20,43,44 }, {11,28,12 ,20,43,22 ,20,44,22 }, + {12,28,29 ,22,43,44 ,22,44,45 }, {12,29,13 ,22,44,24 ,22,45,24 }, + {13,29,30 ,24,44,45 ,24,45,46 }, {13,30,14 ,24,45,26 ,24,46,26 }, + {14,30,31 ,26,45,46 ,26,46,47 }, {14,31,15 ,26,46,28 ,26,47,28 }, + {15,31,32 ,28,46,47 ,28,47,48 }, {15,32,16 ,28,47,30 ,28,48,30 }, + {16,32,17 ,30,47,48 ,30,48,49 }, {16,17,1 ,30,49,49 ,30,49,32 }, + {17,33,34 ,32,50,51 ,33,50,51 }, {17,34,18 ,32,51,33 ,33,51,34 }, + {18,34,35 ,33,51,52 ,34,51,52 }, {18,35,19 ,33,52,34 ,34,52,35 }, + {19,35,36 ,34,52,53 ,35,52,53 }, {19,36,20 ,34,53,35 ,35,53,36 }, + {20,36,37 ,35,53,54 ,36,53,54 }, {20,37,21 ,35,54,36 ,36,54,37 }, + {21,37,38 ,36,54,55 ,37,54,55 }, {21,38,22 ,36,55,37 ,37,55,38 }, + {22,38,39 ,37,55,56 ,38,55,56 }, {22,39,23 ,37,56,38 ,38,56,39 }, + {23,39,40 ,38,56,57 ,39,56,57 }, {23,40,24 ,38,57,39 ,39,57,40 }, + {24,40,41 ,39,57,58 ,40,57,58 }, {24,41,25 ,39,58,40 ,40,58,41 }, + {25,41,42 ,40,58,59 ,41,58,59 }, {25,42,26 ,40,59,41 ,41,59,42 }, + {26,42,43 ,41,59,60 ,42,59,60 }, {26,43,27 ,41,60,42 ,42,60,43 }, + {27,43,44 ,42,60,61 ,43,60,61 }, {27,44,28 ,42,61,43 ,43,61,44 }, + {28,44,45 ,43,61,62 ,44,61,62 }, {28,45,29 ,43,62,44 ,44,62,45 }, + {29,45,46 ,44,62,63 ,45,62,63 }, {29,46,30 ,44,63,45 ,45,63,46 }, + {30,46,47 ,45,63,64 ,46,63,64 }, {30,47,31 ,45,64,46 ,46,64,47 }, + {31,47,48 ,46,64,65 ,47,64,65 }, {31,48,32 ,46,65,47 ,47,65,48 }, + {32,48,33 ,47,65,66 ,48,65,66 }, {32,33,17 ,47,67,67 ,48,66,49 }, + {33,49,50 ,50,68,69 ,50,67,68 }, {33,50,34 ,50,69,51 ,50,68,51 }, + {34,50,51 ,51,69,70 ,51,68,69 }, {34,51,35 ,51,70,52 ,51,69,52 }, + {35,51,52 ,52,70,71 ,52,69,70 }, {35,52,36 ,52,71,53 ,52,70,53 }, + {36,52,53 ,53,71,72 ,53,70,71 }, {36,53,37 ,53,72,54 ,53,71,54 }, + {37,53,54 ,54,72,73 ,54,71,72 }, {37,54,38 ,54,73,55 ,54,72,55 }, + {38,54,55 ,55,73,74 ,55,72,73 }, {38,55,39 ,55,74,56 ,55,73,56 }, + {39,55,56 ,56,74,75 ,56,73,74 }, {39,56,40 ,56,75,57 ,56,74,57 }, + {40,56,57 ,57,75,76 ,57,74,75 }, {40,57,41 ,57,76,58 ,57,75,58 }, + {41,57,58 ,58,76,77 ,58,75,76 }, {41,58,42 ,58,77,59 ,58,76,59 }, + {42,58,59 ,59,77,78 ,59,76,77 }, {42,59,43 ,59,78,60 ,59,77,60 }, + {43,59,60 ,60,78,79 ,60,77,78 }, {43,60,44 ,60,79,61 ,60,78,61 }, + {44,60,61 ,61,79,80 ,61,78,79 }, {44,61,45 ,61,80,62 ,61,79,62 }, + {45,61,62 ,62,80,81 ,62,79,80 }, {45,62,46 ,62,81,63 ,62,80,63 }, + {46,62,63 ,63,81,82 ,63,80,81 }, {46,63,47 ,63,82,64 ,63,81,64 }, + {47,63,64 ,64,82,83 ,64,81,82 }, {47,64,48 ,64,83,65 ,64,82,65 }, + {48,64,49 ,65,83,84 ,65,82,83 }, {48,49,33 ,65,85,85 ,65,83,66 }, + {66,65,67 ,86,87,88 ,1,0,2 }, {67,65,68 ,88,89,90 ,2,3,4 }, {68,65,69 ,90,91,92 ,4,5,6 }, + {69,65,70 ,92,93,94 ,6,7,8 }, {70,65,71 ,94,95,96 ,8,9,10 }, + {71,65,72 ,96,97,98 ,10,11,12 }, {72,65,73 ,98,99,100 ,12,13,14 }, + {73,65,74 ,100,101,102 ,14,15,16 }, {74,65,75 ,102,103,104 ,16,17,18 }, + {75,65,76 ,104,105,106 ,18,19,20 }, {76,65,77 ,106,107,108 ,20,21,22 }, + {77,65,78 ,108,109,110 ,22,23,24 }, {78,65,79 ,110,111,112 ,24,25,26 }, + {79,65,80 ,112,113,114 ,26,27,28 }, {80,65,81 ,114,115,116 ,28,29,30 }, + {81,65,66 ,116,117,117 ,30,31,32 }, {82,66,83 ,118,86,119 ,33,1,34 }, + {83,66,67 ,119,86,88 ,34,1,2 }, {83,67,84 ,119,88,120 ,34,2,35 }, + {84,67,68 ,120,88,90 ,35,2,4 }, {84,68,85 ,120,90,121 ,35,4,36 }, + {85,68,69 ,121,90,92 ,36,4,6 }, {85,69,86 ,121,92,122 ,36,6,37 }, + {86,69,70 ,122,92,94 ,37,6,8 }, {86,70,87 ,122,94,123 ,37,8,38 }, + {87,70,71 ,123,94,96 ,38,8,10 }, {87,71,88 ,123,96,124 ,38,10,39 }, + {88,71,72 ,124,96,98 ,39,10,12 }, {88,72,89 ,124,98,125 ,39,12,40 }, + {89,72,73 ,125,98,100 ,40,12,14 }, {89,73,90 ,125,100,126 ,40,14,41 }, + {90,73,74 ,126,100,102 ,41,14,16 }, {90,74,91 ,126,102,127 ,41,16,42 }, + {91,74,75 ,127,102,104 ,42,16,18 }, {91,75,92 ,127,104,128 ,42,18,43 }, + {92,75,76 ,128,104,106 ,43,18,20 }, {92,76,93 ,128,106,129 ,43,20,44 }, + {93,76,77 ,129,106,108 ,44,20,22 }, {93,77,94 ,129,108,130 ,44,22,45 }, + {94,77,78 ,130,108,110 ,45,22,24 }, {94,78,95 ,130,110,131 ,45,24,46 }, + {95,78,79 ,131,110,112 ,46,24,26 }, {95,79,96 ,131,112,132 ,46,26,47 }, + {96,79,80 ,132,112,114 ,47,26,28 }, {96,80,97 ,132,114,133 ,47,28,48 }, + {97,80,81 ,133,114,116 ,48,28,30 }, {97,81,82 ,133,116,134 ,48,30,49 }, + {82,81,66 ,135,116,135 ,49,30,32 }, {98,82,99 ,136,118,137 ,50,33,51 }, + {99,82,83 ,137,118,119 ,51,33,34 }, {99,83,100 ,137,119,138 ,51,34,52 }, + {100,83,84 ,138,119,120 ,52,34,35 }, {100,84,101 ,138,120,139 ,52,35,53 }, + {101,84,85 ,139,120,121 ,53,35,36 }, {101,85,102 ,139,121,140 ,53,36,54 }, + {102,85,86 ,140,121,122 ,54,36,37 }, {102,86,103 ,140,122,141 ,54,37,55 }, + {103,86,87 ,141,122,123 ,55,37,38 }, {103,87,104 ,141,123,142 ,55,38,56 }, + {104,87,88 ,142,123,124 ,56,38,39 }, {104,88,105 ,142,124,143 ,56,39,57 }, + {105,88,89 ,143,124,125 ,57,39,40 }, {105,89,106 ,143,125,144 ,57,40,58 }, + {106,89,90 ,144,125,126 ,58,40,41 }, {106,90,107 ,144,126,145 ,58,41,59 }, + {107,90,91 ,145,126,127 ,59,41,42 }, {107,91,108 ,145,127,146 ,59,42,60 }, + {108,91,92 ,146,127,128 ,60,42,43 }, {108,92,109 ,146,128,147 ,60,43,61 }, + {109,92,93 ,147,128,129 ,61,43,44 }, {109,93,110 ,147,129,148 ,61,44,62 }, + {110,93,94 ,148,129,130 ,62,44,45 }, {110,94,111 ,148,130,149 ,62,45,63 }, + {111,94,95 ,149,130,131 ,63,45,46 }, {111,95,112 ,149,131,150 ,63,46,64 }, + {112,95,96 ,150,131,132 ,64,46,47 }, {112,96,113 ,150,132,151 ,64,47,65 }, + {113,96,97 ,151,132,133 ,65,47,48 }, {113,97,98 ,151,133,152 ,65,48,66 }, + {98,97,82 ,153,133,153 ,66,48,49 }, {114,98,115 ,154,136,155 ,67,50,68 }, + {115,98,99 ,155,136,137 ,68,50,51 }, {115,99,116 ,155,137,156 ,68,51,69 }, + {116,99,100 ,156,137,138 ,69,51,52 }, {116,100,117 ,156,138,157 ,69,52,70 }, + {117,100,101 ,157,138,139 ,70,52,53 }, {117,101,118 ,157,139,158 ,70,53,71 }, + {118,101,102 ,158,139,140 ,71,53,54 }, {118,102,119 ,158,140,159 ,71,54,72 }, + {119,102,103 ,159,140,141 ,72,54,55 }, {119,103,120 ,159,141,160 ,72,55,73 }, + {120,103,104 ,160,141,142 ,73,55,56 }, {120,104,121 ,160,142,161 ,73,56,74 }, + {121,104,105 ,161,142,143 ,74,56,57 }, {121,105,122 ,161,143,162 ,74,57,75 }, + {122,105,106 ,162,143,144 ,75,57,58 }, {122,106,123 ,162,144,163 ,75,58,76 }, + {123,106,107 ,163,144,145 ,76,58,59 }, {123,107,124 ,163,145,164 ,76,59,77 }, + {124,107,108 ,164,145,146 ,77,59,60 }, {124,108,125 ,164,146,165 ,77,60,78 }, + {125,108,109 ,165,146,147 ,78,60,61 }, {125,109,126 ,165,147,166 ,78,61,79 }, + {126,109,110 ,166,147,148 ,79,61,62 }, {126,110,127 ,166,148,167 ,79,62,80 }, + {127,110,111 ,167,148,149 ,80,62,63 }, {127,111,128 ,167,149,168 ,80,63,81 }, + {128,111,112 ,168,149,150 ,81,63,64 }, {128,112,129 ,168,150,169 ,81,64,82 }, + {129,112,113 ,169,150,151 ,82,64,65 }, {129,113,114 ,169,151,170 ,82,65,83 }, + {114,113,98 ,171,151,171 ,83,65,66 } +// Object #-1 + , {130,131,132 ,172,173,174 ,0,1,2 }, {130,132,133 ,175,174,176 ,3,2,4 }, + {130,133,134 ,177,176,178 ,5,4,6 }, {130,134,135 ,179,178,180 ,7,6,8 }, + {130,135,136 ,181,180,182 ,9,8,10 }, {130,136,137 ,183,182,184 ,11,10,12 }, + {130,137,138 ,185,184,186 ,13,12,14 }, {130,138,139 ,187,186,188 ,15,14,16 }, + {130,139,140 ,189,188,190 ,17,16,18 }, {130,140,141 ,191,190,192 ,19,18,20 }, + {130,141,142 ,193,192,194 ,21,20,22 }, {130,142,143 ,195,194,196 ,23,22,24 }, + {130,143,144 ,197,196,198 ,25,24,26 }, {130,144,145 ,199,198,200 ,27,26,28 }, + {130,145,146 ,201,200,202 ,29,28,30 }, {130,146,131 ,203,202,203 ,31,30,32 }, + {131,147,148 ,173,204,205 ,1,33,34 }, {131,148,132 ,173,205,174 ,1,34,2 }, + {132,148,149 ,174,205,206 ,2,34,35 }, {132,149,133 ,174,206,176 ,2,35,4 }, + {133,149,150 ,176,206,207 ,4,35,36 }, {133,150,134 ,176,207,178 ,4,36,6 }, + {134,150,151 ,178,207,208 ,6,36,37 }, {134,151,135 ,178,208,180 ,6,37,8 }, + {135,151,152 ,180,208,209 ,8,37,38 }, {135,152,136 ,180,209,182 ,8,38,10 }, + {136,152,153 ,182,209,210 ,10,38,39 }, {136,153,137 ,182,210,184 ,10,39,12 }, + {137,153,154 ,184,210,211 ,12,39,40 }, {137,154,138 ,184,211,186 ,12,40,14 }, + {138,154,155 ,186,211,212 ,14,40,41 }, {138,155,139 ,186,212,188 ,14,41,16 }, + {139,155,156 ,188,212,213 ,16,41,42 }, {139,156,140 ,188,213,190 ,16,42,18 }, + {140,156,157 ,190,213,214 ,18,42,43 }, {140,157,141 ,190,214,192 ,18,43,20 }, + {141,157,158 ,192,214,215 ,20,43,44 }, {141,158,142 ,192,215,194 ,20,44,22 }, + {142,158,159 ,194,215,216 ,22,44,45 }, {142,159,143 ,194,216,196 ,22,45,24 }, + {143,159,160 ,196,216,217 ,24,45,46 }, {143,160,144 ,196,217,198 ,24,46,26 }, + {144,160,161 ,198,217,218 ,26,46,47 }, {144,161,145 ,198,218,200 ,26,47,28 }, + {145,161,162 ,200,218,219 ,28,47,48 }, {145,162,146 ,200,219,202 ,28,48,30 }, + {146,162,147 ,202,219,220 ,30,48,49 }, {146,147,131 ,202,221,221 ,30,49,32 }, + {147,163,164 ,204,222,223 ,33,50,51 }, {147,164,148 ,204,223,205 ,33,51,34 }, + {148,164,165 ,205,223,224 ,34,51,52 }, {148,165,149 ,205,224,206 ,34,52,35 }, + {149,165,166 ,206,224,225 ,35,52,53 }, {149,166,150 ,206,225,207 ,35,53,36 }, + {150,166,167 ,207,225,226 ,36,53,54 }, {150,167,151 ,207,226,208 ,36,54,37 }, + {151,167,168 ,208,226,227 ,37,54,55 }, {151,168,152 ,208,227,209 ,37,55,38 }, + {152,168,169 ,209,227,228 ,38,55,56 }, {152,169,153 ,209,228,210 ,38,56,39 }, + {153,169,170 ,210,228,229 ,39,56,57 }, {153,170,154 ,210,229,211 ,39,57,40 }, + {154,170,171 ,211,229,230 ,40,57,58 }, {154,171,155 ,211,230,212 ,40,58,41 }, + {155,171,172 ,212,230,231 ,41,58,59 }, {155,172,156 ,212,231,213 ,41,59,42 }, + {156,172,173 ,213,231,232 ,42,59,60 }, {156,173,157 ,213,232,214 ,42,60,43 }, + {157,173,174 ,214,232,233 ,43,60,61 }, {157,174,158 ,214,233,215 ,43,61,44 }, + {158,174,175 ,215,233,234 ,44,61,62 }, {158,175,159 ,215,234,216 ,44,62,45 }, + {159,175,176 ,216,234,235 ,45,62,63 }, {159,176,160 ,216,235,217 ,45,63,46 }, + {160,176,177 ,217,235,236 ,46,63,64 }, {160,177,161 ,217,236,218 ,46,64,47 }, + {161,177,178 ,218,236,237 ,47,64,65 }, {161,178,162 ,218,237,219 ,47,65,48 }, + {162,178,163 ,219,237,238 ,48,65,66 }, {162,163,147 ,219,239,239 ,48,66,49 }, + {163,179,180 ,222,240,241 ,50,67,68 }, {163,180,164 ,222,241,223 ,50,68,51 }, + {164,180,181 ,223,241,242 ,51,68,69 }, {164,181,165 ,223,242,224 ,51,69,52 }, + {165,181,182 ,224,242,243 ,52,69,70 }, {165,182,166 ,224,243,225 ,52,70,53 }, + {166,182,183 ,225,243,244 ,53,70,71 }, {166,183,167 ,225,244,226 ,53,71,54 }, + {167,183,184 ,226,244,245 ,54,71,72 }, {167,184,168 ,226,245,227 ,54,72,55 }, + {168,184,185 ,227,245,246 ,55,72,73 }, {168,185,169 ,227,246,228 ,55,73,56 }, + {169,185,186 ,228,246,247 ,56,73,74 }, {169,186,170 ,228,247,229 ,56,74,57 }, + {170,186,187 ,229,247,248 ,57,74,75 }, {170,187,171 ,229,248,230 ,57,75,58 }, + {171,187,188 ,230,248,249 ,58,75,76 }, {171,188,172 ,230,249,231 ,58,76,59 }, + {172,188,189 ,231,249,250 ,59,76,77 }, {172,189,173 ,231,250,232 ,59,77,60 }, + {173,189,190 ,232,250,251 ,60,77,78 }, {173,190,174 ,232,251,233 ,60,78,61 }, + {174,190,191 ,233,251,252 ,61,78,79 }, {174,191,175 ,233,252,234 ,61,79,62 }, + {175,191,192 ,234,252,253 ,62,79,80 }, {175,192,176 ,234,253,235 ,62,80,63 }, + {176,192,193 ,235,253,254 ,63,80,81 }, {176,193,177 ,235,254,236 ,63,81,64 }, + {177,193,194 ,236,254,255 ,64,81,82 }, {177,194,178 ,236,255,237 ,64,82,65 }, + {178,194,179 ,237,255,256 ,65,82,83 }, {178,179,163 ,237,257,257 ,65,83,66 }, + {196,195,197 ,258,259,260 ,1,0,2 }, {197,195,198 ,260,261,262 ,2,3,4 }, + {198,195,199 ,262,263,264 ,4,5,6 }, {199,195,200 ,264,265,266 ,6,7,8 }, + {200,195,201 ,266,267,268 ,8,9,10 }, {201,195,202 ,268,269,270 ,10,11,12 }, + {202,195,203 ,270,271,272 ,12,13,14 }, {203,195,204 ,272,273,274 ,14,15,16 }, + {204,195,205 ,274,275,276 ,16,17,18 }, {205,195,206 ,276,277,278 ,18,19,20 }, + {206,195,207 ,278,279,280 ,20,21,22 }, {207,195,208 ,280,281,282 ,22,23,24 }, + {208,195,209 ,282,283,284 ,24,25,26 }, {209,195,210 ,284,285,286 ,26,27,28 }, + {210,195,211 ,286,287,288 ,28,29,30 }, {211,195,196 ,288,289,289 ,30,31,32 }, + {212,196,213 ,290,258,291 ,33,1,34 }, {213,196,197 ,291,258,260 ,34,1,2 }, + {213,197,214 ,291,260,292 ,34,2,35 }, {214,197,198 ,292,260,262 ,35,2,4 }, + {214,198,215 ,292,262,293 ,35,4,36 }, {215,198,199 ,293,262,264 ,36,4,6 }, + {215,199,216 ,293,264,294 ,36,6,37 }, {216,199,200 ,294,264,266 ,37,6,8 }, + {216,200,217 ,294,266,295 ,37,8,38 }, {217,200,201 ,295,266,268 ,38,8,10 }, + {217,201,218 ,295,268,296 ,38,10,39 }, {218,201,202 ,296,268,270 ,39,10,12 }, + {218,202,219 ,296,270,297 ,39,12,40 }, {219,202,203 ,297,270,272 ,40,12,14 }, + {219,203,220 ,297,272,298 ,40,14,41 }, {220,203,204 ,298,272,274 ,41,14,16 }, + {220,204,221 ,298,274,299 ,41,16,42 }, {221,204,205 ,299,274,276 ,42,16,18 }, + {221,205,222 ,299,276,300 ,42,18,43 }, {222,205,206 ,300,276,278 ,43,18,20 }, + {222,206,223 ,300,278,301 ,43,20,44 }, {223,206,207 ,301,278,280 ,44,20,22 }, + {223,207,224 ,301,280,302 ,44,22,45 }, {224,207,208 ,302,280,282 ,45,22,24 }, + {224,208,225 ,302,282,303 ,45,24,46 }, {225,208,209 ,303,282,284 ,46,24,26 }, + {225,209,226 ,303,284,304 ,46,26,47 }, {226,209,210 ,304,284,286 ,47,26,28 }, + {226,210,227 ,304,286,305 ,47,28,48 }, {227,210,211 ,305,286,288 ,48,28,30 }, + {227,211,212 ,305,288,306 ,48,30,49 }, {212,211,196 ,307,288,307 ,49,30,32 }, + {228,212,229 ,308,290,309 ,50,33,51 }, {229,212,213 ,309,290,291 ,51,33,34 }, + {229,213,230 ,309,291,310 ,51,34,52 }, {230,213,214 ,310,291,292 ,52,34,35 }, + {230,214,231 ,310,292,311 ,52,35,53 }, {231,214,215 ,311,292,293 ,53,35,36 }, + {231,215,232 ,311,293,312 ,53,36,54 }, {232,215,216 ,312,293,294 ,54,36,37 }, + {232,216,233 ,312,294,313 ,54,37,55 }, {233,216,217 ,313,294,295 ,55,37,38 }, + {233,217,234 ,313,295,314 ,55,38,56 }, {234,217,218 ,314,295,296 ,56,38,39 }, + {234,218,235 ,314,296,315 ,56,39,57 }, {235,218,219 ,315,296,297 ,57,39,40 }, + {235,219,236 ,315,297,316 ,57,40,58 }, {236,219,220 ,316,297,298 ,58,40,41 }, + {236,220,237 ,316,298,317 ,58,41,59 }, {237,220,221 ,317,298,299 ,59,41,42 }, + {237,221,238 ,317,299,318 ,59,42,60 }, {238,221,222 ,318,299,300 ,60,42,43 }, + {238,222,239 ,318,300,319 ,60,43,61 }, {239,222,223 ,319,300,301 ,61,43,44 }, + {239,223,240 ,319,301,320 ,61,44,62 }, {240,223,224 ,320,301,302 ,62,44,45 }, + {240,224,241 ,320,302,321 ,62,45,63 }, {241,224,225 ,321,302,303 ,63,45,46 }, + {241,225,242 ,321,303,322 ,63,46,64 }, {242,225,226 ,322,303,304 ,64,46,47 }, + {242,226,243 ,322,304,323 ,64,47,65 }, {243,226,227 ,323,304,305 ,65,47,48 }, + {243,227,228 ,323,305,324 ,65,48,66 }, {228,227,212 ,325,305,325 ,66,48,49 }, + {244,228,245 ,326,308,327 ,67,50,68 }, {245,228,229 ,327,308,309 ,68,50,51 }, + {245,229,246 ,327,309,328 ,68,51,69 }, {246,229,230 ,328,309,310 ,69,51,52 }, + {246,230,247 ,328,310,329 ,69,52,70 }, {247,230,231 ,329,310,311 ,70,52,53 }, + {247,231,118 ,329,311,330 ,70,53,71 }, {118,231,232 ,330,311,312 ,71,53,54 }, + {118,232,248 ,330,312,331 ,71,54,72 }, {248,232,233 ,331,312,313 ,72,54,55 }, + {248,233,249 ,331,313,332 ,72,55,73 }, {249,233,234 ,332,313,314 ,73,55,56 }, + {249,234,250 ,332,314,333 ,73,56,74 }, {250,234,235 ,333,314,315 ,74,56,57 }, + {250,235,251 ,333,315,334 ,74,57,75 }, {251,235,236 ,334,315,316 ,75,57,58 }, + {251,236,252 ,334,316,335 ,75,58,76 }, {252,236,237 ,335,316,317 ,76,58,59 }, + {252,237,253 ,335,317,336 ,76,59,77 }, {253,237,238 ,336,317,318 ,77,59,60 }, + {253,238,254 ,336,318,337 ,77,60,78 }, {254,238,239 ,337,318,319 ,78,60,61 }, + {254,239,126 ,337,319,338 ,78,61,79 }, {126,239,240 ,338,319,320 ,79,61,62 }, + {126,240,255 ,338,320,339 ,79,62,80 }, {255,240,241 ,339,320,321 ,80,62,63 }, + {255,241,256 ,339,321,340 ,80,63,81 }, {256,241,242 ,340,321,322 ,81,63,64 }, + {256,242,257 ,340,322,341 ,81,64,82 }, {257,242,243 ,341,322,323 ,82,64,65 }, + {257,243,244 ,341,323,342 ,82,65,83 }, {244,243,228 ,343,323,343 ,83,65,66 } +}, + +//lid 1 + +{ +// Object #-1 + {0,1,2 ,0,1,2 ,0,1,2 }, {0,2,3 ,3,2,4 ,3,2,4 }, {0,3,4 ,5,4,6 ,5,4,6 }, + {0,4,5 ,7,6,8 ,7,6,8 }, {0,5,6 ,9,8,10 ,9,8,10 }, {0,6,7 ,11,10,12 ,11,10,12 }, + {0,7,8 ,13,12,14 ,13,12,14 }, {0,8,9 ,15,14,16 ,15,14,16 }, {0,9,10 ,17,16,18 ,17,16,18 }, + {0,10,11 ,19,18,20 ,19,18,20 }, {0,11,12 ,21,20,22 ,21,20,22 }, + {0,12,13 ,23,22,24 ,23,22,24 }, {0,13,14 ,25,24,26 ,25,24,26 }, + {0,14,15 ,27,26,28 ,27,26,28 }, {0,15,16 ,29,28,30 ,29,28,30 }, + {0,16,1 ,31,30,31 ,31,30,32 }, {1,17,18 ,1,32,33 ,1,33,34 }, + {1,18,2 ,1,33,2 ,1,34,2 }, {2,18,19 ,2,33,34 ,2,34,35 }, {2,19,3 ,2,34,4 ,2,35,4 }, + {3,19,20 ,4,34,35 ,4,35,36 }, {3,20,4 ,4,35,6 ,4,36,6 }, {4,20,21 ,6,35,36 ,6,36,37 }, + {4,21,5 ,6,36,8 ,6,37,8 }, {5,21,22 ,8,36,37 ,8,37,38 }, {5,22,6 ,8,37,10 ,8,38,10 }, + {6,22,23 ,10,37,38 ,10,38,39 }, {6,23,7 ,10,38,12 ,10,39,12 }, + {7,23,24 ,12,38,39 ,12,39,40 }, {7,24,8 ,12,39,14 ,12,40,14 }, + {8,24,25 ,14,39,40 ,14,40,41 }, {8,25,9 ,14,40,16 ,14,41,16 }, + {9,25,26 ,16,40,41 ,16,41,42 }, {9,26,10 ,16,41,18 ,16,42,18 }, + {10,26,27 ,18,41,42 ,18,42,43 }, {10,27,11 ,18,42,20 ,18,43,20 }, + {11,27,28 ,20,42,43 ,20,43,44 }, {11,28,12 ,20,43,22 ,20,44,22 }, + {12,28,29 ,22,43,44 ,22,44,45 }, {12,29,13 ,22,44,24 ,22,45,24 }, + {13,29,30 ,24,44,45 ,24,45,46 }, {13,30,14 ,24,45,26 ,24,46,26 }, + {14,30,31 ,26,45,46 ,26,46,47 }, {14,31,15 ,26,46,28 ,26,47,28 }, + {15,31,32 ,28,46,47 ,28,47,48 }, {15,32,16 ,28,47,30 ,28,48,30 }, + {16,32,17 ,30,47,48 ,30,48,49 }, {16,17,1 ,30,49,49 ,30,49,32 }, + {17,33,34 ,32,50,51 ,33,50,51 }, {17,34,18 ,32,51,33 ,33,51,34 }, + {18,34,35 ,33,51,52 ,34,51,52 }, {18,35,19 ,33,52,34 ,34,52,35 }, + {19,35,36 ,34,52,53 ,35,52,53 }, {19,36,20 ,34,53,35 ,35,53,36 }, + {20,36,37 ,35,53,54 ,36,53,54 }, {20,37,21 ,35,54,36 ,36,54,37 }, + {21,37,38 ,36,54,55 ,37,54,55 }, {21,38,22 ,36,55,37 ,37,55,38 }, + {22,38,39 ,37,55,56 ,38,55,56 }, {22,39,23 ,37,56,38 ,38,56,39 }, + {23,39,40 ,38,56,57 ,39,56,57 }, {23,40,24 ,38,57,39 ,39,57,40 }, + {24,40,41 ,39,57,58 ,40,57,58 }, {24,41,25 ,39,58,40 ,40,58,41 }, + {25,41,42 ,40,58,59 ,41,58,59 }, {25,42,26 ,40,59,41 ,41,59,42 }, + {26,42,43 ,41,59,60 ,42,59,60 }, {26,43,27 ,41,60,42 ,42,60,43 }, + {27,43,44 ,42,60,61 ,43,60,61 }, {27,44,28 ,42,61,43 ,43,61,44 }, + {28,44,45 ,43,61,62 ,44,61,62 }, {28,45,29 ,43,62,44 ,44,62,45 }, + {29,45,46 ,44,62,63 ,45,62,63 }, {29,46,30 ,44,63,45 ,45,63,46 }, + {30,46,47 ,45,63,64 ,46,63,64 }, {30,47,31 ,45,64,46 ,46,64,47 }, + {31,47,48 ,46,64,65 ,47,64,65 }, {31,48,32 ,46,65,47 ,47,65,48 }, + {32,48,33 ,47,65,66 ,48,65,66 }, {32,33,17 ,47,67,67 ,48,66,49 }, + {33,49,50 ,50,68,69 ,50,67,68 }, {33,50,34 ,50,69,51 ,50,68,51 }, + {34,50,51 ,51,69,70 ,51,68,69 }, {34,51,35 ,51,70,52 ,51,69,52 }, + {35,51,52 ,52,70,71 ,52,69,70 }, {35,52,36 ,52,71,53 ,52,70,53 }, + {36,52,53 ,53,71,72 ,53,70,71 }, {36,53,37 ,53,72,54 ,53,71,54 }, + {37,53,54 ,54,72,73 ,54,71,72 }, {37,54,38 ,54,73,55 ,54,72,55 }, + {38,54,55 ,55,73,74 ,55,72,73 }, {38,55,39 ,55,74,56 ,55,73,56 }, + {39,55,56 ,56,74,75 ,56,73,74 }, {39,56,40 ,56,75,57 ,56,74,57 }, + {40,56,57 ,57,75,76 ,57,74,75 }, {40,57,41 ,57,76,58 ,57,75,58 }, + {41,57,58 ,58,76,77 ,58,75,76 }, {41,58,42 ,58,77,59 ,58,76,59 }, + {42,58,59 ,59,77,78 ,59,76,77 }, {42,59,43 ,59,78,60 ,59,77,60 }, + {43,59,60 ,60,78,79 ,60,77,78 }, {43,60,44 ,60,79,61 ,60,78,61 }, + {44,60,61 ,61,79,80 ,61,78,79 }, {44,61,45 ,61,80,62 ,61,79,62 }, + {45,61,62 ,62,80,81 ,62,79,80 }, {45,62,46 ,62,81,63 ,62,80,63 }, + {46,62,63 ,63,81,82 ,63,80,81 }, {46,63,47 ,63,82,64 ,63,81,64 }, + {47,63,64 ,64,82,83 ,64,81,82 }, {47,64,48 ,64,83,65 ,64,82,65 }, + {48,64,49 ,65,83,84 ,65,82,83 }, {48,49,33 ,65,85,85 ,65,83,66 }, + {66,65,67 ,86,87,88 ,1,0,2 }, {67,65,68 ,88,89,90 ,2,3,4 }, {68,65,69 ,90,91,92 ,4,5,6 }, + {69,65,70 ,92,93,94 ,6,7,8 }, {70,65,71 ,94,95,96 ,8,9,10 }, + {71,65,72 ,96,97,98 ,10,11,12 }, {72,65,73 ,98,99,100 ,12,13,14 }, + {73,65,74 ,100,101,102 ,14,15,16 }, {74,65,75 ,102,103,104 ,16,17,18 }, + {75,65,76 ,104,105,106 ,18,19,20 }, {76,65,77 ,106,107,108 ,20,21,22 }, + {77,65,78 ,108,109,110 ,22,23,24 }, {78,65,79 ,110,111,112 ,24,25,26 }, + {79,65,80 ,112,113,114 ,26,27,28 }, {80,65,81 ,114,115,116 ,28,29,30 }, + {81,65,66 ,116,117,117 ,30,31,32 }, {82,66,83 ,118,86,119 ,33,1,34 }, + {83,66,67 ,119,86,88 ,34,1,2 }, {83,67,84 ,119,88,120 ,34,2,35 }, + {84,67,68 ,120,88,90 ,35,2,4 }, {84,68,85 ,120,90,121 ,35,4,36 }, + {85,68,69 ,121,90,92 ,36,4,6 }, {85,69,86 ,121,92,122 ,36,6,37 }, + {86,69,70 ,122,92,94 ,37,6,8 }, {86,70,87 ,122,94,123 ,37,8,38 }, + {87,70,71 ,123,94,96 ,38,8,10 }, {87,71,88 ,123,96,124 ,38,10,39 }, + {88,71,72 ,124,96,98 ,39,10,12 }, {88,72,89 ,124,98,125 ,39,12,40 }, + {89,72,73 ,125,98,100 ,40,12,14 }, {89,73,90 ,125,100,126 ,40,14,41 }, + {90,73,74 ,126,100,102 ,41,14,16 }, {90,74,91 ,126,102,127 ,41,16,42 }, + {91,74,75 ,127,102,104 ,42,16,18 }, {91,75,92 ,127,104,128 ,42,18,43 }, + {92,75,76 ,128,104,106 ,43,18,20 }, {92,76,93 ,128,106,129 ,43,20,44 }, + {93,76,77 ,129,106,108 ,44,20,22 }, {93,77,94 ,129,108,130 ,44,22,45 }, + {94,77,78 ,130,108,110 ,45,22,24 }, {94,78,95 ,130,110,131 ,45,24,46 }, + {95,78,79 ,131,110,112 ,46,24,26 }, {95,79,96 ,131,112,132 ,46,26,47 }, + {96,79,80 ,132,112,114 ,47,26,28 }, {96,80,97 ,132,114,133 ,47,28,48 }, + {97,80,81 ,133,114,116 ,48,28,30 }, {97,81,82 ,133,116,134 ,48,30,49 }, + {82,81,66 ,135,116,135 ,49,30,32 }, {98,82,99 ,136,118,137 ,50,33,51 }, + {99,82,83 ,137,118,119 ,51,33,34 }, {99,83,100 ,137,119,138 ,51,34,52 }, + {100,83,84 ,138,119,120 ,52,34,35 }, {100,84,101 ,138,120,139 ,52,35,53 }, + {101,84,85 ,139,120,121 ,53,35,36 }, {101,85,102 ,139,121,140 ,53,36,54 }, + {102,85,86 ,140,121,122 ,54,36,37 }, {102,86,103 ,140,122,141 ,54,37,55 }, + {103,86,87 ,141,122,123 ,55,37,38 }, {103,87,104 ,141,123,142 ,55,38,56 }, + {104,87,88 ,142,123,124 ,56,38,39 }, {104,88,105 ,142,124,143 ,56,39,57 }, + {105,88,89 ,143,124,125 ,57,39,40 }, {105,89,106 ,143,125,144 ,57,40,58 }, + {106,89,90 ,144,125,126 ,58,40,41 }, {106,90,107 ,144,126,145 ,58,41,59 }, + {107,90,91 ,145,126,127 ,59,41,42 }, {107,91,108 ,145,127,146 ,59,42,60 }, + {108,91,92 ,146,127,128 ,60,42,43 }, {108,92,109 ,146,128,147 ,60,43,61 }, + {109,92,93 ,147,128,129 ,61,43,44 }, {109,93,110 ,147,129,148 ,61,44,62 }, + {110,93,94 ,148,129,130 ,62,44,45 }, {110,94,111 ,148,130,149 ,62,45,63 }, + {111,94,95 ,149,130,131 ,63,45,46 }, {111,95,112 ,149,131,150 ,63,46,64 }, + {112,95,96 ,150,131,132 ,64,46,47 }, {112,96,113 ,150,132,151 ,64,47,65 }, + {113,96,97 ,151,132,133 ,65,47,48 }, {113,97,98 ,151,133,152 ,65,48,66 }, + {98,97,82 ,153,133,153 ,66,48,49 }, {114,98,115 ,154,136,155 ,67,50,68 }, + {115,98,99 ,155,136,137 ,68,50,51 }, {115,99,116 ,155,137,156 ,68,51,69 }, + {116,99,100 ,156,137,138 ,69,51,52 }, {116,100,117 ,156,138,157 ,69,52,70 }, + {117,100,101 ,157,138,139 ,70,52,53 }, {117,101,118 ,157,139,158 ,70,53,71 }, + {118,101,102 ,158,139,140 ,71,53,54 }, {118,102,119 ,158,140,159 ,71,54,72 }, + {119,102,103 ,159,140,141 ,72,54,55 }, {119,103,120 ,159,141,160 ,72,55,73 }, + {120,103,104 ,160,141,142 ,73,55,56 }, {120,104,121 ,160,142,161 ,73,56,74 }, + {121,104,105 ,161,142,143 ,74,56,57 }, {121,105,122 ,161,143,162 ,74,57,75 }, + {122,105,106 ,162,143,144 ,75,57,58 }, {122,106,123 ,162,144,163 ,75,58,76 }, + {123,106,107 ,163,144,145 ,76,58,59 }, {123,107,124 ,163,145,164 ,76,59,77 }, + {124,107,108 ,164,145,146 ,77,59,60 }, {124,108,125 ,164,146,165 ,77,60,78 }, + {125,108,109 ,165,146,147 ,78,60,61 }, {125,109,126 ,165,147,166 ,78,61,79 }, + {126,109,110 ,166,147,148 ,79,61,62 }, {126,110,127 ,166,148,167 ,79,62,80 }, + {127,110,111 ,167,148,149 ,80,62,63 }, {127,111,128 ,167,149,168 ,80,63,81 }, + {128,111,112 ,168,149,150 ,81,63,64 }, {128,112,129 ,168,150,169 ,81,64,82 }, + {129,112,113 ,169,150,151 ,82,64,65 }, {129,113,114 ,169,151,170 ,82,65,83 }, + {114,113,98 ,171,151,171 ,83,65,66 } +// Object #-1 + , {130,131,132 ,172,173,174 ,0,1,2 }, {130,132,133 ,175,174,176 ,3,2,4 }, + {130,133,134 ,177,176,178 ,5,4,6 }, {130,134,135 ,179,178,180 ,7,6,8 }, + {130,135,136 ,181,180,182 ,9,8,10 }, {130,136,137 ,183,182,184 ,11,10,12 }, + {130,137,138 ,185,184,186 ,13,12,14 }, {130,138,139 ,187,186,188 ,15,14,16 }, + {130,139,140 ,189,188,190 ,17,16,18 }, {130,140,141 ,191,190,192 ,19,18,20 }, + {130,141,142 ,193,192,194 ,21,20,22 }, {130,142,143 ,195,194,196 ,23,22,24 }, + {130,143,144 ,197,196,198 ,25,24,26 }, {130,144,145 ,199,198,200 ,27,26,28 }, + {130,145,146 ,201,200,202 ,29,28,30 }, {130,146,131 ,203,202,203 ,31,30,32 }, + {131,147,148 ,173,204,205 ,1,33,34 }, {131,148,132 ,173,205,174 ,1,34,2 }, + {132,148,149 ,174,205,206 ,2,34,35 }, {132,149,133 ,174,206,176 ,2,35,4 }, + {133,149,150 ,176,206,207 ,4,35,36 }, {133,150,134 ,176,207,178 ,4,36,6 }, + {134,150,151 ,178,207,208 ,6,36,37 }, {134,151,135 ,178,208,180 ,6,37,8 }, + {135,151,152 ,180,208,209 ,8,37,38 }, {135,152,136 ,180,209,182 ,8,38,10 }, + {136,152,153 ,182,209,210 ,10,38,39 }, {136,153,137 ,182,210,184 ,10,39,12 }, + {137,153,154 ,184,210,211 ,12,39,40 }, {137,154,138 ,184,211,186 ,12,40,14 }, + {138,154,155 ,186,211,212 ,14,40,41 }, {138,155,139 ,186,212,188 ,14,41,16 }, + {139,155,156 ,188,212,213 ,16,41,42 }, {139,156,140 ,188,213,190 ,16,42,18 }, + {140,156,157 ,190,213,214 ,18,42,43 }, {140,157,141 ,190,214,192 ,18,43,20 }, + {141,157,158 ,192,214,215 ,20,43,44 }, {141,158,142 ,192,215,194 ,20,44,22 }, + {142,158,159 ,194,215,216 ,22,44,45 }, {142,159,143 ,194,216,196 ,22,45,24 }, + {143,159,160 ,196,216,217 ,24,45,46 }, {143,160,144 ,196,217,198 ,24,46,26 }, + {144,160,161 ,198,217,218 ,26,46,47 }, {144,161,145 ,198,218,200 ,26,47,28 }, + {145,161,162 ,200,218,219 ,28,47,48 }, {145,162,146 ,200,219,202 ,28,48,30 }, + {146,162,147 ,202,219,220 ,30,48,49 }, {146,147,131 ,202,221,221 ,30,49,32 }, + {147,163,164 ,204,222,223 ,33,50,51 }, {147,164,148 ,204,223,205 ,33,51,34 }, + {148,164,165 ,205,223,224 ,34,51,52 }, {148,165,149 ,205,224,206 ,34,52,35 }, + {149,165,166 ,206,224,225 ,35,52,53 }, {149,166,150 ,206,225,207 ,35,53,36 }, + {150,166,167 ,207,225,226 ,36,53,54 }, {150,167,151 ,207,226,208 ,36,54,37 }, + {151,167,168 ,208,226,227 ,37,54,55 }, {151,168,152 ,208,227,209 ,37,55,38 }, + {152,168,169 ,209,227,228 ,38,55,56 }, {152,169,153 ,209,228,210 ,38,56,39 }, + {153,169,170 ,210,228,229 ,39,56,57 }, {153,170,154 ,210,229,211 ,39,57,40 }, + {154,170,171 ,211,229,230 ,40,57,58 }, {154,171,155 ,211,230,212 ,40,58,41 }, + {155,171,172 ,212,230,231 ,41,58,59 }, {155,172,156 ,212,231,213 ,41,59,42 }, + {156,172,173 ,213,231,232 ,42,59,60 }, {156,173,157 ,213,232,214 ,42,60,43 }, + {157,173,174 ,214,232,233 ,43,60,61 }, {157,174,158 ,214,233,215 ,43,61,44 }, + {158,174,175 ,215,233,234 ,44,61,62 }, {158,175,159 ,215,234,216 ,44,62,45 }, + {159,175,176 ,216,234,235 ,45,62,63 }, {159,176,160 ,216,235,217 ,45,63,46 }, + {160,176,177 ,217,235,236 ,46,63,64 }, {160,177,161 ,217,236,218 ,46,64,47 }, + {161,177,178 ,218,236,237 ,47,64,65 }, {161,178,162 ,218,237,219 ,47,65,48 }, + {162,178,163 ,219,237,238 ,48,65,66 }, {162,163,147 ,219,239,239 ,48,66,49 }, + {163,179,180 ,222,240,241 ,50,67,68 }, {163,180,164 ,222,241,223 ,50,68,51 }, + {164,180,181 ,223,241,242 ,51,68,69 }, {164,181,165 ,223,242,224 ,51,69,52 }, + {165,181,182 ,224,242,243 ,52,69,70 }, {165,182,166 ,224,243,225 ,52,70,53 }, + {166,182,183 ,225,243,244 ,53,70,71 }, {166,183,167 ,225,244,226 ,53,71,54 }, + {167,183,184 ,226,244,245 ,54,71,72 }, {167,184,168 ,226,245,227 ,54,72,55 }, + {168,184,185 ,227,245,246 ,55,72,73 }, {168,185,169 ,227,246,228 ,55,73,56 }, + {169,185,186 ,228,246,247 ,56,73,74 }, {169,186,170 ,228,247,229 ,56,74,57 }, + {170,186,187 ,229,247,248 ,57,74,75 }, {170,187,171 ,229,248,230 ,57,75,58 }, + {171,187,188 ,230,248,249 ,58,75,76 }, {171,188,172 ,230,249,231 ,58,76,59 }, + {172,188,189 ,231,249,250 ,59,76,77 }, {172,189,173 ,231,250,232 ,59,77,60 }, + {173,189,190 ,232,250,251 ,60,77,78 }, {173,190,174 ,232,251,233 ,60,78,61 }, + {174,190,191 ,233,251,252 ,61,78,79 }, {174,191,175 ,233,252,234 ,61,79,62 }, + {175,191,192 ,234,252,253 ,62,79,80 }, {175,192,176 ,234,253,235 ,62,80,63 }, + {176,192,193 ,235,253,254 ,63,80,81 }, {176,193,177 ,235,254,236 ,63,81,64 }, + {177,193,194 ,236,254,255 ,64,81,82 }, {177,194,178 ,236,255,237 ,64,82,65 }, + {178,194,179 ,237,255,256 ,65,82,83 }, {178,179,163 ,237,257,257 ,65,83,66 }, + {196,195,197 ,258,259,260 ,1,0,2 }, {197,195,198 ,260,261,262 ,2,3,4 }, + {198,195,199 ,262,263,264 ,4,5,6 }, {199,195,200 ,264,265,266 ,6,7,8 }, + {200,195,201 ,266,267,268 ,8,9,10 }, {201,195,202 ,268,269,270 ,10,11,12 }, + {202,195,203 ,270,271,272 ,12,13,14 }, {203,195,204 ,272,273,274 ,14,15,16 }, + {204,195,205 ,274,275,276 ,16,17,18 }, {205,195,206 ,276,277,278 ,18,19,20 }, + {206,195,207 ,278,279,280 ,20,21,22 }, {207,195,208 ,280,281,282 ,22,23,24 }, + {208,195,209 ,282,283,284 ,24,25,26 }, {209,195,210 ,284,285,286 ,26,27,28 }, + {210,195,211 ,286,287,288 ,28,29,30 }, {211,195,196 ,288,289,289 ,30,31,32 }, + {212,196,213 ,290,258,291 ,33,1,34 }, {213,196,197 ,291,258,260 ,34,1,2 }, + {213,197,214 ,291,260,292 ,34,2,35 }, {214,197,198 ,292,260,262 ,35,2,4 }, + {214,198,215 ,292,262,293 ,35,4,36 }, {215,198,199 ,293,262,264 ,36,4,6 }, + {215,199,216 ,293,264,294 ,36,6,37 }, {216,199,200 ,294,264,266 ,37,6,8 }, + {216,200,217 ,294,266,295 ,37,8,38 }, {217,200,201 ,295,266,268 ,38,8,10 }, + {217,201,218 ,295,268,296 ,38,10,39 }, {218,201,202 ,296,268,270 ,39,10,12 }, + {218,202,219 ,296,270,297 ,39,12,40 }, {219,202,203 ,297,270,272 ,40,12,14 }, + {219,203,220 ,297,272,298 ,40,14,41 }, {220,203,204 ,298,272,274 ,41,14,16 }, + {220,204,221 ,298,274,299 ,41,16,42 }, {221,204,205 ,299,274,276 ,42,16,18 }, + {221,205,222 ,299,276,300 ,42,18,43 }, {222,205,206 ,300,276,278 ,43,18,20 }, + {222,206,223 ,300,278,301 ,43,20,44 }, {223,206,207 ,301,278,280 ,44,20,22 }, + {223,207,224 ,301,280,302 ,44,22,45 }, {224,207,208 ,302,280,282 ,45,22,24 }, + {224,208,225 ,302,282,303 ,45,24,46 }, {225,208,209 ,303,282,284 ,46,24,26 }, + {225,209,226 ,303,284,304 ,46,26,47 }, {226,209,210 ,304,284,286 ,47,26,28 }, + {226,210,227 ,304,286,305 ,47,28,48 }, {227,210,211 ,305,286,288 ,48,28,30 }, + {227,211,212 ,305,288,306 ,48,30,49 }, {212,211,196 ,307,288,307 ,49,30,32 }, + {228,212,229 ,308,290,309 ,50,33,51 }, {229,212,213 ,309,290,291 ,51,33,34 }, + {229,213,230 ,309,291,310 ,51,34,52 }, {230,213,214 ,310,291,292 ,52,34,35 }, + {230,214,231 ,310,292,311 ,52,35,53 }, {231,214,215 ,311,292,293 ,53,35,36 }, + {231,215,232 ,311,293,312 ,53,36,54 }, {232,215,216 ,312,293,294 ,54,36,37 }, + {232,216,233 ,312,294,313 ,54,37,55 }, {233,216,217 ,313,294,295 ,55,37,38 }, + {233,217,234 ,313,295,314 ,55,38,56 }, {234,217,218 ,314,295,296 ,56,38,39 }, + {234,218,235 ,314,296,315 ,56,39,57 }, {235,218,219 ,315,296,297 ,57,39,40 }, + {235,219,236 ,315,297,316 ,57,40,58 }, {236,219,220 ,316,297,298 ,58,40,41 }, + {236,220,237 ,316,298,317 ,58,41,59 }, {237,220,221 ,317,298,299 ,59,41,42 }, + {237,221,238 ,317,299,318 ,59,42,60 }, {238,221,222 ,318,299,300 ,60,42,43 }, + {238,222,239 ,318,300,319 ,60,43,61 }, {239,222,223 ,319,300,301 ,61,43,44 }, + {239,223,240 ,319,301,320 ,61,44,62 }, {240,223,224 ,320,301,302 ,62,44,45 }, + {240,224,241 ,320,302,321 ,62,45,63 }, {241,224,225 ,321,302,303 ,63,45,46 }, + {241,225,242 ,321,303,322 ,63,46,64 }, {242,225,226 ,322,303,304 ,64,46,47 }, + {242,226,243 ,322,304,323 ,64,47,65 }, {243,226,227 ,323,304,305 ,65,47,48 }, + {243,227,228 ,323,305,324 ,65,48,66 }, {228,227,212 ,325,305,325 ,66,48,49 }, + {244,228,245 ,326,308,327 ,67,50,68 }, {245,228,229 ,327,308,309 ,68,50,51 }, + {245,229,246 ,327,309,328 ,68,51,69 }, {246,229,230 ,328,309,310 ,69,51,52 }, + {246,230,247 ,328,310,329 ,69,52,70 }, {247,230,231 ,329,310,311 ,70,52,53 }, + {247,231,248 ,329,311,330 ,70,53,71 }, {248,231,232 ,330,311,312 ,71,53,54 }, + {248,232,249 ,330,312,331 ,71,54,72 }, {249,232,233 ,331,312,313 ,72,54,55 }, + {249,233,250 ,331,313,332 ,72,55,73 }, {250,233,234 ,332,313,314 ,73,55,56 }, + {250,234,251 ,332,314,333 ,73,56,74 }, {251,234,235 ,333,314,315 ,74,56,57 }, + {251,235,252 ,333,315,334 ,74,57,75 }, {252,235,236 ,334,315,316 ,75,57,58 }, + {252,236,253 ,334,316,335 ,75,58,76 }, {253,236,237 ,335,316,317 ,76,58,59 }, + {253,237,254 ,335,317,336 ,76,59,77 }, {254,237,238 ,336,317,318 ,77,59,60 }, + {254,238,255 ,336,318,337 ,77,60,78 }, {255,238,239 ,337,318,319 ,78,60,61 }, + {255,239,256 ,337,319,338 ,78,61,79 }, {256,239,240 ,338,319,320 ,79,61,62 }, + {256,240,257 ,338,320,339 ,79,62,80 }, {257,240,241 ,339,320,321 ,80,62,63 }, + {257,241,258 ,339,321,340 ,80,63,81 }, {258,241,242 ,340,321,322 ,81,63,64 }, + {258,242,259 ,340,322,341 ,81,64,82 }, {259,242,243 ,341,322,323 ,82,64,65 }, + {259,243,244 ,341,323,342 ,82,65,83 }, {244,243,228 ,343,323,343 ,83,65,66 } +} + +}; + + +static GLfloat vertices [NUM_LIDS][260][3] = { + +//lid 10 +{ +{-0.343683f,0.0932276f,-0.0808442f},{-0.352388f,0.0509511f,-0.122382f},{-0.380222f,0.053445f,-0.125489f}, +{-0.402561f,0.0605469f,-0.120347f},{-0.41485f,0.0711757f,-0.107383f},{-0.414844f,0.0837132f,-0.0888708f}, +{-0.403224f,0.0962507f,-0.0683421f},{-0.382806f,0.10688f,-0.0494748f},{-0.357221f,0.113981f,-0.0351177f}, +{-0.330137f,0.116475f,-0.0269877f},{-0.305195f,0.113981f,-0.0259064f},{-0.285916f,0.10688f,-0.0319369f}, +{-0.27509f,0.0962508f,-0.0441779f},{-0.274086f,0.0837133f,-0.0607215f},{-0.282788f,0.0711757f,-0.0791407f}, +{-0.300108f,0.0605469f,-0.0970521f},{-0.324256f,0.053445f,-0.112215f},{-0.353956f,-0.00391801f,-0.143495f}, +{-0.406556f,0.000690078f,-0.149706f},{-0.44962f,0.0138127f,-0.140053f},{-0.472019f,0.0334522f,-0.114869f}, +{-0.469142f,0.0566185f,-0.0792073f},{-0.444738f,0.0797848f,-0.0411625f},{-0.406781f,0.0994242f,-0.0083254f}, +{-0.361986f,0.112547f,0.0151765f},{-0.314714f,0.117155f,0.0283778f},{-0.269974f,0.112547f,0.0305063f}, +{-0.235063f,0.0994242f,0.0199389f},{-0.216662f,0.0797847f,-0.00294113f},{-0.2168f,0.0566185f,-0.0337662f}, +{-0.233011f,0.0334521f,-0.0667812f},{-0.262346f,0.0138127f,-0.0980229f},{-0.303477f,0.000690076f,-0.124775f}, +{-0.349115f,-0.0630264f,-0.141198f},{-0.416647f,-0.0570057f,-0.146593f},{-0.471994f,-0.0398601f,-0.131983f}, +{-0.499332f,-0.0142f,-0.098174f},{-0.492887f,0.0160683f,-0.0523413f},{-0.459889f,0.0463366f,-0.00548934f}, +{-0.412508f,0.0719967f,0.0330037f},{-0.358013f,0.0891423f,0.0598819f},{-0.298752f,0.095163f,0.0764664f}, +{-0.239999f,0.0891423f,0.0816282f},{-0.193576f,0.0719967f,0.0698183f},{-0.171052f,0.0463365f,0.0391026f}, +{-0.174628f,0.0160682f,-0.00326448f},{-0.197804f,-0.0142f,-0.0471786f},{-0.234863f,-0.0398601f,-0.0869477f}, +{-0.285586f,-0.0570057f,-0.119624f},{-0.340812f,-0.117375f,-0.116494f},{-0.410435f,-0.110859f,-0.117365f}, +{-0.466555f,-0.0923004f,-0.0986838f},{-0.493515f,-0.064526f,-0.0625363f},{-0.486108f,-0.0317639f,-0.0165297f}, +{-0.452382f,0.000998166f,0.0289768f},{-0.404425f,0.0287725f,0.0661753f},{-0.348021f,0.0473308f,0.0935464f}, +{-0.284297f,0.0538476f,0.113032f},{-0.219522f,0.0473308f,0.121693f},{-0.16847f,0.0287725f,0.110644f}, +{-0.145166f,0.000998132f,0.0764654f},{-0.151592f,-0.031764f,0.0281869f},{-0.178972f,-0.0645261f,-0.0214156f}, +{-0.219936f,-0.0923004f,-0.0648312f},{-0.274181f,-0.110859f,-0.0978641f},{0.343683f,0.0932276f,-0.0808442f}, +{0.352388f,0.0509511f,-0.122382f},{0.380222f,0.053445f,-0.125489f},{0.402561f,0.0605469f,-0.120347f}, +{0.41485f,0.0711757f,-0.107383f},{0.414844f,0.0837132f,-0.0888707f},{0.403224f,0.0962508f,-0.0683421f}, +{0.382806f,0.10688f,-0.0494748f},{0.357221f,0.113981f,-0.0351177f},{0.330137f,0.116475f,-0.0269877f}, +{0.305195f,0.113981f,-0.0259064f},{0.285916f,0.10688f,-0.0319369f},{0.27509f,0.0962508f,-0.0441779f}, +{0.274086f,0.0837133f,-0.0607215f},{0.282788f,0.0711757f,-0.0791407f},{0.300108f,0.0605469f,-0.0970521f}, +{0.324257f,0.053445f,-0.112215f},{0.353956f,-0.003918f,-0.143495f},{0.406556f,0.000690089f,-0.149706f}, +{0.44962f,0.0138127f,-0.140053f},{0.472019f,0.0334522f,-0.114869f},{0.469142f,0.0566185f,-0.0792073f}, +{0.444738f,0.0797848f,-0.0411625f},{0.406781f,0.0994242f,-0.0083254f},{0.361986f,0.112547f,0.0151765f}, +{0.314714f,0.117155f,0.0283778f},{0.269974f,0.112547f,0.0305063f},{0.235063f,0.0994242f,0.0199389f}, +{0.216662f,0.0797848f,-0.00294113f},{0.2168f,0.0566185f,-0.0337662f},{0.233011f,0.0334521f,-0.0667812f}, +{0.262346f,0.0138127f,-0.0980229f},{0.303477f,0.000690081f,-0.124775f},{0.349115f,-0.0630264f,-0.141198f}, +{0.416647f,-0.0570057f,-0.146593f},{0.471994f,-0.0398601f,-0.131983f},{0.499332f,-0.0142f,-0.098174f}, +{0.492887f,0.0160683f,-0.0523413f},{0.45989f,0.0463366f,-0.00548934f},{0.412508f,0.0719967f,0.0330037f}, +{0.358013f,0.0891423f,0.0598819f},{0.298752f,0.095163f,0.0764664f},{0.239999f,0.0891423f,0.0816282f}, +{0.193576f,0.0719967f,0.0698183f},{0.171052f,0.0463365f,0.0391026f},{0.174629f,0.0160683f,-0.00326448f}, +{0.197804f,-0.0141999f,-0.0471786f},{0.234863f,-0.0398601f,-0.0869477f},{0.285586f,-0.0570057f,-0.119624f}, +{0.340812f,-0.117375f,-0.116494f},{0.410435f,-0.110859f,-0.117365f},{0.466555f,-0.0923004f,-0.0986838f}, +{0.493515f,-0.064526f,-0.0625363f},{0.486108f,-0.0317639f,-0.0165297f},{0.452382f,0.000998165f,0.0289768f}, +{0.404425f,0.0287725f,0.0661753f},{0.348021f,0.0473308f,0.0935464f},{0.284297f,0.0538476f,0.113032f}, +{0.219522f,0.0473308f,0.121693f},{0.16847f,0.0287725f,0.110644f},{0.145166f,0.000998129f,0.0764654f}, +{0.151592f,-0.031764f,0.0281869f},{0.178973f,-0.0645261f,-0.0214156f},{0.219936f,-0.0923004f,-0.0648312f}, +{0.274181f,-0.110859f,-0.0978641f},{-0.299079f,0.0958282f,0.075584f},{-0.31504f,0.117375f,0.0272876f}, +{-0.338602f,0.114996f,0.0266701f},{-0.355762f,0.10822f,0.0331344f},{-0.363792f,0.0980784f,0.0452518f}, +{-0.361929f,0.0861159f,0.0605897f},{-0.351081f,0.0741534f,0.0766588f},{-0.333006f,0.0640121f,0.0915983f}, +{-0.309891f,0.0572358f,0.104011f},{-0.284547f,0.0548563f,0.112407f},{-0.260658f,0.0572358f,0.115136f}, +{-0.24234f,0.064012f,0.111029f},{-0.232993f,0.0741534f,0.100179f},{-0.234196f,0.0861159f,0.0842273f}, +{-0.245435f,0.0980784f,0.0659791f},{-0.264676f,0.10822f,0.0486193f},{-0.289045f,0.114996f,0.0350069f}, +{-0.330443f,0.116217f,-0.0281498f},{-0.376622f,0.111821f,-0.0296334f},{-0.409825f,0.0992999f,-0.0162356f}, +{-0.423182f,0.0805612f,0.00924655f},{-0.416791f,0.0584573f,0.0400915f},{-0.395343f,0.0363535f,0.0700464f}, +{-0.363257f,0.0176148f,0.0966719f},{-0.322911f,0.00509398f,0.119456f},{-0.27691f,0.000697269f,0.136065f}, +{-0.231205f,0.00509398f,0.142105f},{-0.19511f,0.0176148f,0.134121f},{-0.177144f,0.0363535f,0.112203f}, +{-0.180418f,0.0584574f,0.0803985f},{-0.202116f,0.0805612f,0.0450649f},{-0.237155f,0.0992999f,0.0123635f}, +{-0.281386f,0.111821f,-0.0131619f},{-0.343923f,0.0925307f,-0.0818601f},{-0.408753f,0.0867861f,-0.0862252f}, +{-0.455729f,0.0704268f,-0.0684926f},{-0.472454f,0.0459435f,-0.0315206f},{-0.46048f,0.0170635f,0.0132626f}, +{-0.429943f,-0.0118166f,0.0551654f},{-0.388862f,-0.0362999f,0.0913457f},{-0.339208f,-0.0526592f,0.122215f}, +{-0.281228f,-0.0584037f,0.14396f},{-0.220778f,-0.0526591f,0.149706f},{-0.17139f,-0.0362999f,0.135578f}, +{-0.146815f,-0.0118166f,0.103441f},{-0.151526f,0.0170635f,0.0600771f},{-0.179724f,0.0459436f,0.0142591f}, +{-0.223279f,0.0704269f,-0.0271356f},{-0.278744f,0.0867861f,-0.0603045f},{-0.352496f,0.0499212f,-0.123042f}, +{-0.425996f,0.0437033f,-0.130422f},{-0.480485f,0.0259961f,-0.111688f},{-0.5f,-0.000504367f,-0.0691896f}, +{-0.486108f,-0.0317639f,-0.0165297f},{-0.451623f,-0.0630235f,0.0331431f},{-0.407178f,-0.0895241f,0.0757201f}, +{-0.355434f,-0.107231f,0.110467f},{-0.295211f,-0.113449f,0.132021f},{-0.230886f,-0.107231f,0.133409f}, +{-0.176698f,-0.089524f,0.11295f},{-0.148448f,-0.0630235f,0.0751234f},{-0.151592f,-0.0317639f,0.0281869f}, +{-0.179627f,-0.000504385f,-0.0191356f},{-0.223715f,0.0259962f,-0.061618f},{-0.281467f,0.0437033f,-0.0973949f}, +{0.299079f,0.0958282f,0.075584f},{0.31504f,0.117375f,0.0272877f},{0.338602f,0.114996f,0.0266701f}, +{0.355762f,0.10822f,0.0331344f},{0.363792f,0.0980784f,0.0452518f},{0.361929f,0.0861159f,0.0605897f}, +{0.351081f,0.0741534f,0.0766588f},{0.333006f,0.0640121f,0.0915983f},{0.309891f,0.0572358f,0.104011f}, +{0.284547f,0.0548563f,0.112407f},{0.260658f,0.0572358f,0.115136f},{0.24234f,0.064012f,0.111029f}, +{0.232993f,0.0741534f,0.100179f},{0.234196f,0.0861159f,0.0842273f},{0.245435f,0.0980784f,0.0659791f}, +{0.264676f,0.10822f,0.0486193f},{0.289045f,0.114996f,0.0350069f},{0.330443f,0.116217f,-0.0281497f}, +{0.376622f,0.111821f,-0.0296334f},{0.409825f,0.0992999f,-0.0162356f},{0.423182f,0.0805612f,0.00924655f}, +{0.416791f,0.0584573f,0.0400915f},{0.395343f,0.0363535f,0.0700464f},{0.363257f,0.0176148f,0.0966719f}, +{0.322912f,0.00509398f,0.119456f},{0.27691f,0.000697269f,0.136065f},{0.231205f,0.00509397f,0.142105f}, +{0.19511f,0.0176148f,0.134121f},{0.177144f,0.0363535f,0.112203f},{0.180418f,0.0584574f,0.0803985f}, +{0.202116f,0.0805612f,0.0450649f},{0.237155f,0.0992999f,0.0123635f},{0.281386f,0.111821f,-0.0131619f}, +{0.343923f,0.0925307f,-0.0818601f},{0.408753f,0.0867861f,-0.0862252f},{0.455729f,0.0704268f,-0.0684926f}, +{0.472454f,0.0459435f,-0.0315206f},{0.46048f,0.0170635f,0.0132626f},{0.429943f,-0.0118166f,0.0551654f}, +{0.388862f,-0.0362999f,0.0913457f},{0.339208f,-0.0526592f,0.122215f},{0.281228f,-0.0584037f,0.14396f}, +{0.220778f,-0.0526591f,0.149706f},{0.17139f,-0.0362999f,0.135578f},{0.146815f,-0.0118166f,0.103441f}, +{0.151526f,0.0170635f,0.0600771f},{0.179724f,0.0459436f,0.0142591f},{0.223279f,0.0704269f,-0.0271356f}, +{0.278744f,0.0867861f,-0.0603045f},{0.352496f,0.0499212f,-0.123042f},{0.425996f,0.0437033f,-0.130422f}, +{0.480485f,0.0259961f,-0.111688f},{0.5f,-0.000504367f,-0.0691896f},{0.486108f,-0.0317639f,-0.0165297f}, +{0.451623f,-0.0630235f,0.0331431f},{0.407178f,-0.0895241f,0.0757201f},{0.355434f,-0.107231f,0.110467f}, +{0.295211f,-0.113449f,0.132021f},{0.230887f,-0.107231f,0.133409f},{0.176698f,-0.089524f,0.11295f}, +{0.148448f,-0.0630235f,0.0751234f},{0.151592f,-0.0317639f,0.0281869f},{0.179627f,-0.000504385f,-0.0191356f}, +{0.223715f,0.0259962f,-0.061618f},{0.281467f,0.0437033f,-0.0973949f} +}, + +//lid 9 +{ +{-0.3488f,0.0865926f,-0.0971807f},{-0.355149f,0.0384448f,-0.131394f},{-0.383397f,0.0414699f,-0.135249f}, +{-0.406599f,0.050085f,-0.131759f},{-0.420077f,0.0629783f,-0.121066f},{-0.421253f,0.078187f,-0.104942f}, +{-0.410423f,0.0933956f,-0.0864117f},{-0.390209f,0.106289f,-0.0688549f},{-0.364329f,0.114904f,-0.0550734f}, +{-0.336691f,0.117929f,-0.0468607f},{-0.311134f,0.114904f,-0.045088f},{-0.29125f,0.106289f,-0.0498234f}, +{-0.279811f,0.0933956f,-0.0602377f},{-0.278177f,0.078187f,-0.0746586f},{-0.286279f,0.0629783f,-0.0910166f}, +{-0.303118f,0.050085f,-0.107269f},{-0.326994f,0.04147f,-0.12142f},{-0.354272f,-0.0191842f,-0.143262f}, +{-0.406923f,-0.0135943f,-0.150064f},{-0.45107f,0.00232414f,-0.143143f},{-0.475731f,0.0261478f,-0.122366f}, +{-0.475481f,0.0542498f,-0.0914424f},{-0.452868f,0.0823518f,-0.0571111f},{-0.415338f,0.106175f,-0.0264407f}, +{-0.370037f,0.122094f,-0.00389177f},{-0.322023f,0.127684f,0.00912666f},{-0.276588f,0.122094f,0.0118882f}, +{-0.240895f,0.106175f,0.00314799f},{-0.22145f,0.0823517f,-0.0166116f},{-0.220325f,0.0542497f,-0.0435621f}, +{-0.235311f,0.0261478f,-0.0728357f},{-0.26371f,0.00232414f,-0.101058f},{-0.304208f,-0.0135943f,-0.125642f}, +{-0.347807f,-0.0775208f,-0.131687f},{-0.414577f,-0.0702173f,-0.13703f},{-0.470347f,-0.0494188f,-0.125525f}, +{-0.5f,-0.0182916f,-0.0974381f},{-0.496833f,0.0184253f,-0.0578607f},{-0.466347f,0.0551422f,-0.0157821f}, +{-0.420001f,0.0862694f,0.0198636f},{-0.365715f,0.107068f,0.0450127f},{-0.306476f,0.114371f,0.0605497f}, +{-0.247349f,0.107068f,0.0659861f},{-0.19973f,0.0862694f,0.056531f},{-0.175301f,0.0551422f,0.0300508f}, +{-0.176868f,0.0184253f,-0.00730101f},{-0.198555f,-0.0182916f,-0.0466047f},{-0.234831f,-0.0494188f,-0.0826403f}, +{-0.28505f,-0.0702173f,-0.112264f},{-0.338949f,-0.127684f,-0.0988612f},{-0.407241f,-0.119779f,-0.0997776f}, +{-0.462866f,-0.0972665f,-0.0844077f},{-0.491146f,-0.0635747f,-0.0543019f},{-0.486365f,-0.0238325f,-0.0148972f}, +{-0.455136f,0.0159096f,0.0254358f},{-0.408856f,0.0496013f,0.059075f},{-0.353684f,0.0721135f,0.0836812f}, +{-0.290783f,0.0800187f,0.101396f},{-0.22564f,0.0721136f,0.110631f},{-0.172661f,0.0496013f,0.10308f}, +{-0.146696f,0.0159096f,0.0741784f},{-0.151058f,-0.0238325f,0.0313679f},{-0.177696f,-0.0635748f,-0.0133948f}, +{-0.218854f,-0.0972665f,-0.0527407f},{-0.273153f,-0.119779f,-0.0824408f},{0.3488f,0.0865926f,-0.0971807f}, +{0.355149f,0.0384448f,-0.131394f},{0.383397f,0.04147f,-0.135249f},{0.406599f,0.050085f,-0.131759f}, +{0.420077f,0.0629783f,-0.121066f},{0.421253f,0.078187f,-0.104942f},{0.410423f,0.0933956f,-0.0864117f}, +{0.390209f,0.106289f,-0.0688549f},{0.364329f,0.114904f,-0.0550734f},{0.336691f,0.117929f,-0.0468607f}, +{0.311134f,0.114904f,-0.045088f},{0.29125f,0.106289f,-0.0498234f},{0.279811f,0.0933956f,-0.0602376f}, +{0.278177f,0.078187f,-0.0746586f},{0.286279f,0.0629783f,-0.0910166f},{0.303118f,0.050085f,-0.107269f}, +{0.326994f,0.04147f,-0.12142f},{0.354272f,-0.0191842f,-0.143262f},{0.406923f,-0.0135943f,-0.150064f}, +{0.451071f,0.00232424f,-0.143143f},{0.475731f,0.0261478f,-0.122366f},{0.475482f,0.0542498f,-0.0914424f}, +{0.452868f,0.0823518f,-0.0571111f},{0.415338f,0.106175f,-0.0264407f},{0.370037f,0.122094f,-0.00389177f}, +{0.322023f,0.127684f,0.00912666f},{0.276589f,0.122094f,0.0118882f},{0.240895f,0.106175f,0.00314799f}, +{0.22145f,0.0823517f,-0.0166116f},{0.220325f,0.0542497f,-0.0435621f},{0.235311f,0.0261478f,-0.0728357f}, +{0.26371f,0.00232414f,-0.101058f},{0.304208f,-0.0135943f,-0.125642f},{0.347807f,-0.0775207f,-0.131687f}, +{0.414577f,-0.0702173f,-0.13703f},{0.470347f,-0.0494188f,-0.125525f},{0.5f,-0.0182916f,-0.0974381f}, +{0.496833f,0.0184253f,-0.0578607f},{0.466347f,0.0551422f,-0.0157821f},{0.420001f,0.0862695f,0.0198636f}, +{0.365715f,0.107068f,0.0450127f},{0.306476f,0.114371f,0.0605497f},{0.247349f,0.107068f,0.0659861f}, +{0.19973f,0.0862694f,0.056531f},{0.175301f,0.0551422f,0.0300508f},{0.176868f,0.0184253f,-0.00730098f}, +{0.198555f,-0.0182916f,-0.0466047f},{0.234831f,-0.0494188f,-0.0826403f},{0.28505f,-0.0702173f,-0.112264f}, +{0.338949f,-0.127684f,-0.0988612f},{0.407241f,-0.119779f,-0.0997776f},{0.462866f,-0.0972665f,-0.0844077f}, +{0.491147f,-0.0635747f,-0.0543019f},{0.486365f,-0.0238325f,-0.0148972f},{0.455136f,0.0159096f,0.0254358f}, +{0.408856f,0.0496013f,0.059075f},{0.353684f,0.0721135f,0.0836812f},{0.290783f,0.0800187f,0.101396f}, +{0.22564f,0.0721136f,0.110631f},{0.172661f,0.0496013f,0.10308f},{0.146696f,0.0159096f,0.0741784f}, +{0.151058f,-0.0238325f,0.0313679f},{0.177696f,-0.0635748f,-0.0133948f},{0.218854f,-0.0972665f,-0.0527407f}, +{0.273153f,-0.119779f,-0.0824408f},{-0.297829f,0.0980529f,0.0842386f},{-0.313667f,0.123265f,0.038132f}, +{-0.33705f,0.120639f,0.0372689f},{-0.354056f,0.113163f,0.0431301f},{-0.362066f,0.101974f,0.0543168f}, +{-0.36034f,0.0887749f,0.0685476f},{-0.349711f,0.0755762f,0.0835722f},{-0.331827f,0.064387f,0.0977591f}, +{-0.308798f,0.0569104f,0.109844f},{-0.283419f,0.0542851f,0.118356f},{-0.2594f,0.0569105f,0.121591f}, +{-0.240924f,0.0643869f,0.11828f},{-0.231469f,0.0755762f,0.108374f},{-0.232666f,0.0887749f,0.0933521f}, +{-0.243995f,0.101974f,0.0758818f},{-0.26335f,0.113163f,0.0590793f},{-0.28776f,0.120639f,0.0457874f}, +{-0.328873f,0.126082f,-0.0164282f},{-0.374561f,0.121231f,-0.0180109f},{-0.407332f,0.107417f,-0.00547944f}, +{-0.420692f,0.0867414f,0.0183273f},{-0.414793f,0.0623534f,0.0470197f},{-0.394038f,0.0379655f,0.0749315f}, +{-0.362508f,0.0172904f,0.100144f},{-0.322425f,0.00347572f,0.122329f},{-0.276379f,-0.00137538f,0.139072f}, +{-0.230358f,0.00347572f,0.145889f},{-0.193783f,0.0172904f,0.139267f},{-0.175374f,0.0379654f,0.119083f}, +{-0.17845f,0.0623534f,0.0889719f},{-0.200266f,0.0867414f,0.05494f},{-0.235598f,0.107417f,0.0231068f}, +{-0.280002f,0.121231f,-0.00181462f},{-0.342729f,0.106077f,-0.0712325f},{-0.40707f,0.0997385f,-0.0755093f}, +{-0.453559f,0.0816888f,-0.0588285f},{-0.470324f,0.0546754f,-0.0239743f},{-0.459008f,0.022811f,0.0181521f}, +{-0.42934f,-0.00905347f,0.0575822f},{-0.3889f,-0.0360667f,0.0920333f},{-0.339532f,-0.0541165f,0.122036f}, +{-0.28154f,-0.0604547f,0.143658f},{-0.220773f,-0.0541165f,0.150064f},{-0.170787f,-0.0360668f,0.137505f}, +{-0.14554f,-0.00905347f,0.107605f},{-0.149815f,0.022811f,0.0664637f},{-0.177993f,0.0546754f,0.0222531f}, +{-0.221855f,0.0816888f,-0.0181252f},{-0.277621f,0.0997385f,-0.05043f},{-0.352579f,0.0662937f,-0.115311f}, +{-0.426014f,0.0594332f,-0.122827f},{-0.480338f,0.0398963f,-0.10543f},{-0.499898f,0.0106573f,-0.065114f}, +{-0.486365f,-0.0238325f,-0.0148973f},{-0.452313f,-0.0583224f,0.0325481f},{-0.408062f,-0.0875614f,0.0734018f}, +{-0.356245f,-0.107098f,0.107029f},{-0.295864f,-0.113959f,0.128165f},{-0.231347f,-0.107098f,0.130078f}, +{-0.176848f,-0.0875614f,0.111236f},{-0.148202f,-0.0583224f,0.0758284f},{-0.179053f,0.0106573f,-0.0141398f}, +{-0.223329f,0.0398963f,-0.0555068f},{-0.281369f,0.0594333f,-0.0903756f},{0.297829f,0.0980529f,0.0842386f}, +{0.313667f,0.123265f,0.038132f},{0.33705f,0.120639f,0.0372689f},{0.354056f,0.113163f,0.0431301f}, +{0.362066f,0.101974f,0.0543168f},{0.36034f,0.0887749f,0.0685476f},{0.349711f,0.0755762f,0.0835722f}, +{0.331827f,0.064387f,0.0977591f},{0.308798f,0.0569104f,0.109844f},{0.283419f,0.0542851f,0.118356f}, +{0.2594f,0.0569105f,0.121591f},{0.240924f,0.0643869f,0.11828f},{0.231469f,0.0755762f,0.108374f}, +{0.232666f,0.0887749f,0.0933521f},{0.243995f,0.101974f,0.0758818f},{0.26335f,0.113163f,0.0590793f}, +{0.28776f,0.120639f,0.0457874f},{0.328873f,0.126082f,-0.0164282f},{0.374561f,0.121231f,-0.0180109f}, +{0.407332f,0.107417f,-0.00547944f},{0.420692f,0.0867414f,0.0183273f},{0.414793f,0.0623534f,0.0470197f}, +{0.394038f,0.0379655f,0.0749315f},{0.362508f,0.0172904f,0.100144f},{0.322425f,0.00347572f,0.122329f}, +{0.276379f,-0.00137538f,0.139072f},{0.230358f,0.00347572f,0.145889f},{0.193783f,0.0172904f,0.139267f}, +{0.175374f,0.0379654f,0.119083f},{0.17845f,0.0623534f,0.0889719f},{0.200266f,0.0867414f,0.05494f}, +{0.235598f,0.107417f,0.0231068f},{0.280002f,0.121231f,-0.00181462f},{0.342729f,0.106077f,-0.0712325f}, +{0.40707f,0.0997385f,-0.0755093f},{0.453559f,0.0816888f,-0.0588285f},{0.470324f,0.0546754f,-0.0239743f}, +{0.459008f,0.022811f,0.0181521f},{0.42934f,-0.00905347f,0.0575822f},{0.3889f,-0.0360667f,0.0920333f}, +{0.339532f,-0.0541165f,0.122036f},{0.28154f,-0.0604547f,0.143658f},{0.220773f,-0.0541165f,0.150064f}, +{0.170787f,-0.0360668f,0.137505f},{0.14554f,-0.00905347f,0.107605f},{0.149815f,0.022811f,0.0664637f}, +{0.177993f,0.0546754f,0.0222531f},{0.221855f,0.0816888f,-0.0181252f},{0.277621f,0.0997385f,-0.05043f}, +{0.352579f,0.0662937f,-0.115311f},{0.426014f,0.0594332f,-0.122827f},{0.480338f,0.0398963f,-0.10543f}, +{0.499898f,0.0106573f,-0.065114f},{0.486365f,-0.0238325f,-0.0148973f},{0.452313f,-0.0583224f,0.0325481f}, +{0.408062f,-0.0875614f,0.0734018f},{0.356245f,-0.107098f,0.107029f},{0.295864f,-0.113959f,0.128165f}, +{0.231347f,-0.107098f,0.130078f},{0.176848f,-0.0875614f,0.111236f},{0.148202f,-0.0583224f,0.0758284f}, +{0.179053f,0.0106573f,-0.0141398f},{0.223329f,0.0398963f,-0.0555068f},{0.281369f,0.0594333f,-0.0903756f} +}, + +//lid 8 +{ +{-0.348964f,0.0841141f,-0.102844f},{-0.354155f,0.034321f,-0.134653f},{-0.382714f,0.0375006f,-0.138946f}, +{-0.406454f,0.0465551f,-0.136169f},{-0.420594f,0.0601062f,-0.126341f},{-0.422361f,0.0760907f,-0.111045f}, +{-0.411852f,0.0920752f,-0.0931276f},{-0.39161f,0.105626f,-0.0758779f},{-0.365443f,0.114681f,-0.0621226f}, +{-0.337443f,0.11786f,-0.0537301f},{-0.311591f,0.114681f,-0.0516105f},{-0.291492f,0.105626f,-0.0558164f}, +{-0.279841f,0.0920752f,-0.0655216f},{-0.277923f,0.0760906f,-0.0791518f},{-0.285685f,0.0601061f,-0.0948063f}, +{-0.302221f,0.0465551f,-0.110585f},{-0.325939f,0.0375006f,-0.124552f},{-0.352121f,-0.0239383f,-0.143656f}, +{-0.405164f,-0.0180633f,-0.150868f},{-0.450226f,-0.00133275f,-0.145058f},{-0.476253f,0.0237063f,-0.125898f}, +{-0.477338f,0.0532419f,-0.0965964f},{-0.455389f,0.0827775f,-0.0633853f},{-0.417606f,0.107817f,-0.0331416f}, +{-0.371497f,0.124547f,-0.0105503f},{-0.32275f,0.130422f,0.00261082f},{-0.277032f,0.124547f,0.0055299f}, +{-0.241377f,0.107817f,-0.0027318f},{-0.221859f,0.0827775f,-0.0214042f},{-0.220238f,0.0532419f,-0.0468527f}, +{-0.234397f,0.0237063f,-0.0747574f},{-0.262018f,-0.00133274f,-0.102078f},{-0.302085f,-0.0180633f,-0.12617f}, +{-0.344948f,-0.0817945f,-0.129319f},{-0.412012f,-0.0741185f,-0.134705f},{-0.4687f,-0.0522589f,-0.124335f}, +{-0.5f,-0.0195438f,-0.0982293f},{-0.498575f,0.0190463f,-0.0607126f},{-0.468954f,0.0576364f,-0.0200192f}, +{-0.422252f,0.0903515f,0.0151393f},{-0.366996f,0.112211f,0.0402528f},{-0.307083f,0.119887f,0.0555925f}, +{-0.247974f,0.112211f,0.0606335f},{-0.200709f,0.0903515f,0.0512665f},{-0.176262f,0.0576364f,0.0259707f}, +{-0.177034f,0.0190463f,-0.00941388f},{-0.197421f,-0.0195438f,-0.0469124f},{-0.232576f,-0.052259f,-0.081761f}, +{-0.282258f,-0.0741185f,-0.110534f},{-0.335953f,-0.130439f,-0.0940914f},{-0.404416f,-0.122131f,-0.0948819f}, +{-0.460736f,-0.0984704f,-0.0805227f},{-0.49041f,-0.0630598f,-0.052294f},{-0.487177f,-0.0212901f,-0.0148493f}, +{-0.456766f,0.0204795f,0.0241508f},{-0.410302f,0.05589f,0.0571937f},{-0.354541f,0.0795506f,0.0814215f}, +{-0.291402f,0.0878591f,0.0984543f},{-0.226542f,0.0795506f,0.106885f},{-0.173908f,0.05589f,0.0992358f}, +{-0.147736f,0.0204794f,0.0715326f},{-0.15111f,-0.0212902f,0.0308063f},{-0.176369f,-0.0630598f,-0.0119795f}, +{-0.216431f,-0.0984704f,-0.0499184f},{-0.270239f,-0.122131f,-0.0785263f},{0.348964f,0.0841141f,-0.102844f}, +{0.354155f,0.034321f,-0.134653f},{0.382714f,0.0375006f,-0.138946f},{0.406454f,0.0465551f,-0.136169f}, +{0.420594f,0.0601062f,-0.126341f},{0.422361f,0.0760907f,-0.111045f},{0.411852f,0.0920752f,-0.0931276f}, +{0.39161f,0.105626f,-0.075878f},{0.365443f,0.114681f,-0.0621226f},{0.337443f,0.11786f,-0.0537301f}, +{0.311591f,0.114681f,-0.0516105f},{0.291492f,0.105626f,-0.0558164f},{0.279841f,0.0920752f,-0.0655216f}, +{0.277923f,0.0760906f,-0.0791518f},{0.285685f,0.0601061f,-0.0948063f},{0.302221f,0.0465551f,-0.110585f}, +{0.32594f,0.0375006f,-0.124552f},{0.352121f,-0.0239383f,-0.143656f},{0.405164f,-0.0180633f,-0.150868f}, +{0.450226f,-0.00133275f,-0.145058f},{0.476253f,0.0237063f,-0.125898f},{0.477338f,0.0532419f,-0.0965964f}, +{0.455389f,0.0827775f,-0.0633853f},{0.417606f,0.107817f,-0.0331416f},{0.371497f,0.124547f,-0.0105503f}, +{0.32275f,0.130422f,0.00261082f},{0.277032f,0.124547f,0.0055299f},{0.241377f,0.107817f,-0.0027318f}, +{0.221859f,0.0827775f,-0.0214042f},{0.220238f,0.0532419f,-0.0468527f},{0.234397f,0.0237063f,-0.0747574f}, +{0.262018f,-0.00133274f,-0.102078f},{0.302085f,-0.0180633f,-0.12617f},{0.344948f,-0.0817945f,-0.129319f}, +{0.412012f,-0.0741185f,-0.134705f},{0.4687f,-0.0522589f,-0.124335f},{0.5f,-0.0195438f,-0.0982293f}, +{0.498575f,0.0190463f,-0.0607126f},{0.468954f,0.0576364f,-0.0200192f},{0.422252f,0.0903515f,0.0151393f}, +{0.366996f,0.112211f,0.0402528f},{0.307083f,0.119887f,0.0555925f},{0.247974f,0.112211f,0.0606335f}, +{0.200709f,0.0903515f,0.0512665f},{0.176262f,0.0576364f,0.0259707f},{0.177034f,0.0190463f,-0.00941388f}, +{0.197421f,-0.0195438f,-0.0469124f},{0.232576f,-0.052259f,-0.081761f},{0.282258f,-0.0741185f,-0.110534f}, +{0.335953f,-0.130439f,-0.0940914f},{0.404416f,-0.122131f,-0.0948819f},{0.460736f,-0.0984704f,-0.0805227f}, +{0.49041f,-0.0630598f,-0.052294f},{0.487177f,-0.0212901f,-0.0148493f},{0.456766f,0.0204795f,0.0241508f}, +{0.410302f,0.05589f,0.0571937f},{0.354541f,0.0795506f,0.0814215f},{0.291402f,0.0878591f,0.0984543f}, +{0.226542f,0.0795506f,0.106885f},{0.173908f,0.05589f,0.0992358f},{0.147736f,0.0204794f,0.0715326f}, +{0.15111f,-0.0212902f,0.0308063f},{0.176369f,-0.0630598f,-0.0119795f},{0.216431f,-0.0984704f,-0.0499184f}, +{0.270239f,-0.122131f,-0.0785263f},{-0.291072f,0.0869352f,0.0992675f},{-0.306729f,0.119396f,0.0566704f}, +{-0.330009f,0.116298f,0.0553776f},{-0.347061f,0.107476f,0.060103f},{-0.355392f,0.094272f,0.0696509f}, +{-0.35423f,0.078697f,0.082139f},{-0.344255f,0.063122f,0.0957421f},{-0.326952f,0.0499182f,0.109044f}, +{-0.304306f,0.0410956f,0.120722f},{-0.279013f,0.0379976f,0.129152f},{-0.254731f,0.0410956f,0.13261f}, +{-0.235694f,0.0499182f,0.129947f},{-0.225567f,0.063122f,0.121192f},{-0.226215f,0.078697f,0.1077f}, +{-0.237249f,0.094272f,0.0918433f},{-0.256524f,0.107476f,0.0764213f},{-0.280909f,0.116298f,0.0640395f}, +{-0.322409f,0.130439f,0.00385885f},{-0.367471f,0.124715f,0.00184701f},{-0.400107f,0.108413f,0.0123315f}, +{-0.414317f,0.0840155f,0.0327456f},{-0.410025f,0.0552367f,0.0577653f},{-0.391009f,0.0264579f,0.0829813f}, +{-0.360978f,0.00206033f,0.106894f},{-0.322089f,-0.0142416f,0.128503f},{-0.276729f,-0.019966f,0.144602f}, +{-0.230467f,-0.0142416f,0.150868f},{-0.192583f,0.00206035f,0.144734f},{-0.172269f,0.0264579f,0.126669f}, +{-0.173642f,0.0552367f,0.0998949f},{-0.194526f,0.0840156f,0.0694042f},{-0.229637f,0.108413f,0.0404957f}, +{-0.273962f,0.124715f,0.0175577f},{-0.337139f,0.118383f,-0.0525144f},{-0.400699f,0.110904f,-0.0571073f}, +{-0.447192f,0.0896042f,-0.0430756f},{-0.465444f,0.0577272f,-0.01278f},{-0.456584f,0.0201259f,0.0244976f}, +{-0.42927f,-0.0174755f,0.0605408f},{-0.390675f,-0.0493524f,0.093387f},{-0.342933f,-0.0706518f,0.122279f}, +{-0.286261f,-0.0781312f,0.142185f},{-0.225698f,-0.0706519f,0.146978f},{-0.174201f,-0.0493524f,0.13474f}, +{-0.146169f,-0.0174755f,0.107994f},{-0.147595f,0.0201259f,0.0718902f},{-0.17391f,0.0577273f,0.0327803f}, +{-0.217068f,0.0896041f,-0.00361029f},{-0.272593f,0.110904f,-0.033185f},{-0.348767f,0.0850626f,-0.10191f}, +{-0.422111f,0.076967f,-0.110121f},{-0.477084f,0.0539125f,-0.0958718f},{-0.498416f,0.0194093f,-0.0603363f}, +{-0.487177f,-0.0212902f,-0.0148492f},{-0.454951f,-0.0619896f,0.0292421f},{-0.411793f,-0.0964929f,0.0680066f}, +{-0.360878f,-0.119547f,0.0996509f},{-0.301511f,-0.127643f,0.118439f},{-0.237483f,-0.119547f,0.118782f}, +{-0.182061f,-0.0964929f,0.100861f},{-0.151065f,-0.0619896f,0.0694335f},{-0.15111f,-0.0212902f,0.0308063f}, +{-0.176925f,0.0194093f,-0.00906683f},{-0.220087f,0.0539126f,-0.0462431f},{-0.27776f,0.0769669f,-0.0783452f}, +{0.291072f,0.0869352f,0.0992675f},{0.306729f,0.119396f,0.0566704f},{0.330009f,0.116298f,0.0553776f}, +{0.347061f,0.107476f,0.060103f},{0.355392f,0.094272f,0.0696509f},{0.35423f,0.078697f,0.082139f}, +{0.344255f,0.063122f,0.095742f},{0.326952f,0.0499182f,0.109044f},{0.304306f,0.0410956f,0.120722f}, +{0.279013f,0.0379976f,0.129152f},{0.254731f,0.0410956f,0.13261f},{0.235694f,0.0499182f,0.129947f}, +{0.225567f,0.063122f,0.121192f},{0.226215f,0.078697f,0.1077f},{0.237249f,0.094272f,0.0918432f}, +{0.256524f,0.107476f,0.0764213f},{0.280909f,0.116298f,0.0640395f},{0.322409f,0.130439f,0.00385884f}, +{0.367471f,0.124715f,0.001847f},{0.400107f,0.108413f,0.0123315f},{0.414317f,0.0840155f,0.0327456f}, +{0.410025f,0.0552367f,0.0577653f},{0.391009f,0.0264579f,0.0829813f},{0.360978f,0.00206034f,0.106894f}, +{0.322089f,-0.0142416f,0.128503f},{0.276729f,-0.019966f,0.144602f},{0.230467f,-0.0142416f,0.150868f}, +{0.192583f,0.00206036f,0.144734f},{0.172269f,0.0264579f,0.126669f},{0.173642f,0.0552368f,0.0998949f}, +{0.194526f,0.0840156f,0.0694042f},{0.229637f,0.108413f,0.0404957f},{0.273962f,0.124715f,0.0175577f}, +{0.337139f,0.118383f,-0.0525144f},{0.400699f,0.110904f,-0.0571073f},{0.447192f,0.0896042f,-0.0430756f}, +{0.465443f,0.0577272f,-0.01278f},{0.456584f,0.0201259f,0.0244975f},{0.42927f,-0.0174755f,0.0605408f}, +{0.390675f,-0.0493524f,0.093387f},{0.342933f,-0.0706518f,0.122279f},{0.286261f,-0.0781312f,0.142185f}, +{0.225698f,-0.0706519f,0.146978f},{0.174201f,-0.0493524f,0.13474f},{0.146169f,-0.0174755f,0.107994f}, +{0.147595f,0.0201259f,0.0718902f},{0.17391f,0.0577273f,0.0327803f},{0.217068f,0.0896041f,-0.0036103f}, +{0.272593f,0.110904f,-0.033185f},{0.348767f,0.0850626f,-0.10191f},{0.422111f,0.0769669f,-0.110121f}, +{0.477084f,0.0539125f,-0.0958718f},{0.498416f,0.0194093f,-0.0603363f},{0.487177f,-0.0212902f,-0.0148492f}, +{0.454951f,-0.0619896f,0.0292421f},{0.411793f,-0.0964929f,0.0680066f},{0.360878f,-0.119547f,0.0996509f}, +{0.301511f,-0.127643f,0.118439f},{0.237483f,-0.119547f,0.118782f},{0.182061f,-0.0964929f,0.100861f}, +{0.151065f,-0.0619896f,0.0694335f},{0.15111f,-0.0212902f,0.0308063f},{0.176925f,0.0194093f,-0.00906683f}, +{0.220087f,0.0539126f,-0.0462431f},{0.27776f,0.0769669f,-0.0783453f} +}, + +//lid 6 +{ +{-0.351756f,0.0844025f,-0.109661f},{-0.355945f,0.0328842f,-0.138446f},{-0.384378f,0.0362308f,-0.142751f}, +{-0.408193f,0.0457608f,-0.140451f},{-0.42265f,0.0600234f,-0.131521f},{-0.424904f,0.0768473f,-0.117353f}, +{-0.414884f,0.0936713f,-0.100537f},{-0.394983f,0.107934f,-0.084143f},{-0.36896f,0.117464f,-0.070887f}, +{-0.340955f,0.12081f,-0.0626191f},{-0.315021f,0.117464f,-0.0602733f},{-0.294794f,0.107934f,-0.0639409f}, +{-0.282961f,0.0936712f,-0.0728692f},{-0.2808f,0.0768474f,-0.0856041f},{-0.288278f,0.0600233f,-0.100374f}, +{-0.304522f,0.0457607f,-0.115367f},{-0.327964f,0.0362308f,-0.128713f},{-0.353096f,-0.0259013f,-0.144196f}, +{-0.405674f,-0.0197177f,-0.151037f},{-0.450633f,-0.00210858f,-0.145914f},{-0.477229f,0.0242454f,-0.128485f}, +{-0.479417f,0.0553321f,-0.10146f},{-0.458564f,0.0864186f,-0.0703846f},{-0.421405f,0.112773f,-0.0416503f}, +{-0.375401f,0.130382f,-0.0198441f},{-0.326511f,0.136565f,-0.00688288f},{-0.280637f,0.130382f,-0.00366803f}, +{-0.244819f,0.112772f,-0.0110978f},{-0.225012f,0.0864185f,-0.0284403f},{-0.222941f,0.055332f,-0.0523391f}, +{-0.23661f,0.0242453f,-0.078796f},{-0.263825f,-0.00210858f,-0.104838f},{-0.30352f,-0.0197177f,-0.127723f}, +{-0.34558f,-0.0830043f,-0.126825f},{-0.411879f,-0.0749251f,-0.131548f},{-0.468152f,-0.0519177f,-0.121991f}, +{-0.5f,-0.0174846f,-0.0981684f},{-0.499979f,0.023132f,-0.0636476f},{-0.47182f,0.0637486f,-0.0256644f}, +{-0.425949f,0.0981816f,0.00767143f},{-0.370867f,0.121189f,0.0318387f},{-0.310857f,0.129268f,0.0468414f}, +{-0.251612f,0.121189f,0.0521057f},{-0.204087f,0.0981816f,0.0437074f},{-0.179119f,0.0637485f,0.0201095f}, +{-0.179202f,0.0231319f,-0.013301f},{-0.19903f,-0.0174846f,-0.0490307f},{-0.233919f,-0.0519177f,-0.0823255f}, +{-0.283398f,-0.0749251f,-0.109512f},{-0.336776f,-0.129732f,-0.0889855f},{-0.404391f,-0.120987f,-0.0893879f}, +{-0.460079f,-0.0960837f,-0.0761018f},{-0.490006f,-0.0588136f,-0.0503488f},{-0.487934f,-0.0148505f,-0.0159837f}, +{-0.458895f,0.0291126f,0.020314f},{-0.413359f,0.0663826f,0.0515159f},{-0.358011f,0.0912858f,0.0746728f}, +{-0.294985f,0.100031f,0.0912395f},{-0.229974f,0.0912857f,0.0999435f},{-0.176824f,0.0663827f,0.0935117f}, +{-0.149845f,0.0291126f,0.067785f},{-0.152477f,-0.0148506f,0.0292381f},{-0.177433f,-0.0588137f,-0.0115784f}, +{-0.217614f,-0.0960837f,-0.0477599f},{-0.271491f,-0.120987f,-0.074726f},{0.351756f,0.0844025f,-0.109661f}, +{0.355945f,0.0328842f,-0.138446f},{0.384378f,0.0362308f,-0.142751f},{0.408193f,0.0457608f,-0.140451f}, +{0.42265f,0.0600234f,-0.131521f},{0.424904f,0.0768474f,-0.117353f},{0.414884f,0.0936713f,-0.100537f}, +{0.394983f,0.107934f,-0.084143f},{0.36896f,0.117464f,-0.070887f},{0.340955f,0.12081f,-0.0626191f}, +{0.315021f,0.117464f,-0.0602733f},{0.294794f,0.107934f,-0.0639409f},{0.282961f,0.0936712f,-0.0728692f}, +{0.2808f,0.0768474f,-0.0856041f},{0.288278f,0.0600233f,-0.100374f},{0.304522f,0.0457607f,-0.115367f}, +{0.327964f,0.0362308f,-0.128713f},{0.353096f,-0.0259012f,-0.144196f},{0.405674f,-0.0197177f,-0.151037f}, +{0.450633f,-0.00210858f,-0.145914f},{0.477229f,0.0242454f,-0.128485f},{0.479417f,0.0553321f,-0.10146f}, +{0.458564f,0.0864186f,-0.0703846f},{0.421405f,0.112773f,-0.0416503f},{0.375401f,0.130382f,-0.0198441f}, +{0.326511f,0.136565f,-0.00688288f},{0.280637f,0.130382f,-0.00366802f},{0.244819f,0.112772f,-0.0110978f}, +{0.225012f,0.0864185f,-0.0284403f},{0.222941f,0.055332f,-0.0523391f},{0.236611f,0.0242453f,-0.078796f}, +{0.263825f,-0.00210858f,-0.104838f},{0.30352f,-0.0197177f,-0.127723f},{0.345581f,-0.0830043f,-0.126825f}, +{0.411879f,-0.0749251f,-0.131548f},{0.468152f,-0.0519177f,-0.121991f},{0.5f,-0.0174846f,-0.0981684f}, +{0.499979f,0.023132f,-0.0636476f},{0.47182f,0.0637486f,-0.0256644f},{0.425949f,0.0981816f,0.00767143f}, +{0.370867f,0.121189f,0.0318387f},{0.310857f,0.129268f,0.0468414f},{0.251612f,0.121189f,0.0521057f}, +{0.204087f,0.0981816f,0.0437074f},{0.179119f,0.0637485f,0.0201095f},{0.179202f,0.0231319f,-0.013301f}, +{0.19903f,-0.0174846f,-0.0490307f},{0.233919f,-0.0519177f,-0.0823255f},{0.283398f,-0.0749251f,-0.109512f}, +{0.336776f,-0.129732f,-0.0889855f},{0.404391f,-0.120987f,-0.0893879f},{0.460079f,-0.0960837f,-0.0761018f}, +{0.490007f,-0.0588136f,-0.0503488f},{0.487934f,-0.0148505f,-0.0159837f},{0.458895f,0.0291126f,0.020314f}, +{0.413359f,0.0663826f,0.0515159f},{0.358011f,0.0912858f,0.0746728f},{0.294985f,0.100031f,0.0912395f}, +{0.229974f,0.0912857f,0.0999435f},{0.176824f,0.0663827f,0.0935117f},{0.149845f,0.0291126f,0.067785f}, +{0.152477f,-0.0148506f,0.0292381f},{0.177433f,-0.0588137f,-0.0115784f},{0.217614f,-0.0960837f,-0.0477599f}, +{0.271491f,-0.120987f,-0.074726f},{-0.287056f,0.0758929f,0.110646f},{-0.301988f,0.115564f,0.0728616f}, +{-0.325153f,0.112018f,0.0708336f},{-0.342261f,0.101921f,0.0739892f},{-0.351035f,0.0868102f,0.0813745f}, +{-0.350709f,0.0689855f,0.0915995f},{-0.341765f,0.0511608f,0.10337f},{-0.325429f,0.0360497f,0.115558f}, +{-0.303445f,0.0259528f,0.126808f},{-0.278313f,0.0224073f,0.135353f},{-0.253592f,0.0259528f,0.139427f}, +{-0.233614f,0.0360497f,0.137946f},{-0.22236f,0.0511608f,0.130911f},{-0.22208f,0.0689854f,0.119439f}, +{-0.232625f,0.0868102f,0.105524f},{-0.2518f,0.101921f,0.0916217f},{-0.276219f,0.112018f,0.080118f}, +{-0.317919f,0.13538f,0.0237192f},{-0.36191f,0.128829f,0.0210766f},{-0.394013f,0.110172f,0.0288914f}, +{-0.409112f,0.0822505f,0.0448135f},{-0.40697f,0.0493148f,0.0648619f},{-0.390534f,0.016379f,0.08627f}, +{-0.362855f,-0.0115425f,0.108162f},{-0.325769f,-0.0301992f,0.128919f},{-0.281276f,-0.0367505f,0.144595f}, +{-0.234463f,-0.0301991f,0.151037f},{-0.194554f,-0.0115425f,0.146466f},{-0.171463f,0.016379f,0.131679f}, +{-0.170486f,0.0493148f,0.109223f},{-0.190284f,0.0822505f,0.082936f},{-0.225447f,0.110172f,0.0573035f}, +{-0.269985f,0.128829f,0.0364921f},{-0.333196f,0.132325f,-0.0320871f},{-0.39485f,0.123765f,-0.0366893f}, +{-0.440427f,0.0993894f,-0.0258578f},{-0.460181f,0.0629081f,-0.00177522f},{-0.454693f,0.0198755f,0.0284132f}, +{-0.431007f,-0.0231572f,0.0590285f},{-0.395363f,-0.0596384f,0.0888389f},{-0.34986f,-0.0840145f,0.115946f}, +{-0.294567f,-0.0925742f,0.134374f},{-0.233834f,-0.0840145f,0.13864f},{-0.180142f,-0.0596384f,0.12824f}, +{-0.148514f,-0.0231572f,0.106138f},{-0.146522f,0.0198755f,0.07627f},{-0.171003f,0.0629081f,0.0431261f}, +{-0.213996f,0.0993894f,0.0113892f},{-0.269657f,0.123765f,-0.0148336f},{-0.346426f,0.106864f,-0.0853202f}, +{-0.418148f,0.0975991f,-0.0933364f},{-0.472597f,0.0712147f,-0.0826396f},{-0.495756f,0.0317277f,-0.0538754f}, +{-0.487934f,-0.0148505f,-0.0159838f},{-0.458964f,-0.0614287f,0.0220605f},{-0.417971f,-0.100916f,0.056811f}, +{-0.36836f,-0.1273f,0.0855621f},{-0.309844f,-0.136565f,0.102268f},{-0.245932f,-0.1273f,0.102289f}, +{-0.189196f,-0.100916f,0.0869168f},{-0.155469f,-0.0614287f,0.0609428f},{-0.152477f,-0.0148505f,0.0292381f}, +{-0.176282f,0.0317276f,-0.00420161f},{-0.21885f,0.0712148f,-0.0363203f},{-0.276383f,0.0975992f,-0.0644713f}, +{0.287056f,0.0758929f,0.110646f},{0.301988f,0.115564f,0.0728616f},{0.325153f,0.112018f,0.0708336f}, +{0.342261f,0.101921f,0.0739892f},{0.351035f,0.0868102f,0.0813745f},{0.350709f,0.0689855f,0.0915995f}, +{0.341765f,0.0511608f,0.10337f},{0.325429f,0.0360497f,0.115558f},{0.303445f,0.0259528f,0.126808f}, +{0.278313f,0.0224073f,0.135353f},{0.253592f,0.0259528f,0.139427f},{0.233614f,0.0360497f,0.137946f}, +{0.22236f,0.0511608f,0.130911f},{0.22208f,0.0689854f,0.119439f},{0.232625f,0.0868102f,0.105524f}, +{0.2518f,0.101921f,0.0916217f},{0.276219f,0.112018f,0.080118f},{0.317919f,0.13538f,0.0237192f}, +{0.36191f,0.128829f,0.0210766f},{0.394013f,0.110172f,0.0288914f},{0.409112f,0.0822505f,0.0448135f}, +{0.40697f,0.0493148f,0.0648619f},{0.390534f,0.016379f,0.08627f},{0.362855f,-0.0115425f,0.108162f}, +{0.325769f,-0.0301992f,0.128919f},{0.281276f,-0.0367505f,0.144595f},{0.234463f,-0.0301991f,0.151037f}, +{0.194554f,-0.0115425f,0.146466f},{0.171463f,0.016379f,0.131679f},{0.170486f,0.0493148f,0.109223f}, +{0.190285f,0.0822505f,0.082936f},{0.225447f,0.110172f,0.0573035f},{0.269985f,0.128829f,0.0364921f}, +{0.333196f,0.132325f,-0.0320871f},{0.394851f,0.123765f,-0.0366893f},{0.440427f,0.0993894f,-0.0258578f}, +{0.460181f,0.0629081f,-0.00177522f},{0.454693f,0.0198755f,0.0284132f},{0.431007f,-0.0231572f,0.0590285f}, +{0.395363f,-0.0596384f,0.0888389f},{0.34986f,-0.0840145f,0.115946f},{0.294567f,-0.0925742f,0.134374f}, +{0.233834f,-0.0840145f,0.13864f},{0.180142f,-0.0596384f,0.12824f},{0.148514f,-0.0231572f,0.106138f}, +{0.146523f,0.0198755f,0.07627f},{0.171003f,0.0629081f,0.0431261f},{0.213996f,0.0993894f,0.0113892f}, +{0.269657f,0.123765f,-0.0148336f},{0.346426f,0.106864f,-0.0853202f},{0.418148f,0.0975991f,-0.0933364f}, +{0.472597f,0.0712147f,-0.0826396f},{0.495756f,0.0317277f,-0.0538754f},{0.487934f,-0.0148505f,-0.0159838f}, +{0.458964f,-0.0614287f,0.0220605f},{0.417971f,-0.100916f,0.056811f},{0.36836f,-0.1273f,0.0855621f}, +{0.309845f,-0.136565f,0.102268f},{0.245932f,-0.1273f,0.102289f},{0.189196f,-0.100916f,0.0869168f}, +{0.155469f,-0.0614287f,0.0609428f},{0.152477f,-0.0148505f,0.0292381f},{0.176282f,0.0317276f,-0.00420161f}, +{0.21885f,0.0712148f,-0.0363203f},{0.276383f,0.0975992f,-0.0644713f} +}, + +//lid 5 +{ +{-0.35222f,0.0807632f,-0.116269f},{-0.355112f,0.0275006f,-0.141217f},{-0.383561f,0.0310274f,-0.145773f}, +{-0.407652f,0.0410709f,-0.144276f},{-0.422647f,0.056102f,-0.136598f},{-0.425567f,0.0738323f,-0.123872f}, +{-0.416122f,0.0915627f,-0.108372f},{-0.396538f,0.106594f,-0.092926f},{-0.370553f,0.116637f,-0.0801451f}, +{-0.342414f,0.120164f,-0.0718868f},{-0.316287f,0.116637f,-0.0691268f},{-0.295842f,0.106594f,-0.0720026f}, +{-0.283736f,0.0915627f,-0.0798502f},{-0.281224f,0.0738323f,-0.0913764f},{-0.288303f,0.0561019f,-0.104997f}, +{-0.304166f,0.0410709f,-0.119044f},{-0.327307f,0.0310274f,-0.131739f},{-0.351234f,-0.0315149f,-0.14288f}, +{-0.40356f,-0.0249982f,-0.149751f},{-0.448778f,-0.00644035f,-0.14589f},{-0.476382f,0.0213335f,-0.130823f}, +{-0.480046f,0.0540949f,-0.106621f},{-0.46045f,0.0868564f,-0.0780273f},{-0.423811f,0.11463f,-0.0509148f}, +{-0.377654f,0.133188f,-0.0298383f},{-0.328398f,0.139705f,-0.0169541f},{-0.282288f,0.133188f,-0.0132744f}, +{-0.246317f,0.11463f,-0.019573f},{-0.22617f,0.0868563f,-0.0350928f},{-0.223453f,0.0540949f,-0.0568338f}, +{-0.236342f,0.0213334f,-0.0812907f},{-0.262887f,-0.00644041f,-0.105693f},{-0.302078f,-0.0249983f,-0.127263f}, +{-0.34326f,-0.0872989f,-0.121779f},{-0.408985f,-0.0787845f,-0.126311f},{-0.465236f,-0.0545374f,-0.11824f}, +{-0.498151f,-0.0182492f,-0.0974167f},{-0.5f,0.0245557f,-0.0664839f},{-0.473501f,0.0673606f,-0.0315635f}, +{-0.428328f,0.103649f,-0.000164158f},{-0.373146f,0.127896f,0.0230542f},{-0.3129f,0.13641f,0.037678f}, +{-0.25362f,0.127896f,0.0431086f},{-0.206011f,0.103649f,0.0358444f},{-0.1805f,0.0673606f,0.0145129f}, +{-0.17957f,0.0245557f,-0.0160796f},{-0.198361f,-0.0182492f,-0.0492255f},{-0.232567f,-0.0545374f,-0.0804019f}, +{-0.281607f,-0.0787845f,-0.105784f},{-0.334569f,-0.131359f,-0.0809148f},{-0.40145f,-0.122143f,-0.0813779f}, +{-0.456808f,-0.0958979f,-0.069794f},{-0.487429f,-0.0566198f,-0.0471402f},{-0.486932f,-0.0102881f,-0.0163207f}, +{-0.459465f,0.0360436f,0.0170134f},{-0.414816f,0.0753217f,0.0462327f},{-0.359802f,0.101566f,0.0681354f}, +{-0.296993f,0.110782f,0.0839128f},{-0.232114f,0.101566f,0.0925683f},{-0.178659f,0.0753217f,0.0873822f}, +{-0.150754f,0.0360435f,0.0642135f},{-0.152175f,-0.0102882f,0.0287899f},{-0.176247f,-0.0566198f,-0.00911687f}, +{-0.216092f,-0.0958979f,-0.042849f},{-0.269784f,-0.122143f,-0.0678564f},{0.35222f,0.0807632f,-0.116269f}, +{0.355112f,0.0275006f,-0.141217f},{0.383561f,0.0310274f,-0.145773f},{0.407652f,0.0410709f,-0.144276f}, +{0.422647f,0.056102f,-0.136598f},{0.425567f,0.0738323f,-0.123872f},{0.416122f,0.0915627f,-0.108372f}, +{0.396538f,0.106594f,-0.092926f},{0.370553f,0.116637f,-0.0801451f},{0.342414f,0.120164f,-0.0718868f}, +{0.316287f,0.116637f,-0.0691268f},{0.295842f,0.106594f,-0.0720026f},{0.283736f,0.0915627f,-0.0798502f}, +{0.281224f,0.0738323f,-0.0913764f},{0.288303f,0.0561019f,-0.104997f},{0.304166f,0.0410709f,-0.119044f}, +{0.327307f,0.0310274f,-0.131739f},{0.351234f,-0.031515f,-0.14288f},{0.40356f,-0.0249982f,-0.149751f}, +{0.448778f,-0.00644035f,-0.14589f},{0.476382f,0.0213335f,-0.130823f},{0.480046f,0.0540949f,-0.106621f}, +{0.46045f,0.0868564f,-0.0780273f},{0.423811f,0.11463f,-0.0509149f},{0.377654f,0.133188f,-0.0298383f}, +{0.328398f,0.139705f,-0.0169541f},{0.282288f,0.133188f,-0.0132744f},{0.246317f,0.11463f,-0.019573f}, +{0.22617f,0.0868563f,-0.0350928f},{0.223453f,0.0540949f,-0.0568338f},{0.236342f,0.0213334f,-0.0812907f}, +{0.262887f,-0.00644041f,-0.105693f},{0.302078f,-0.0249983f,-0.127263f},{0.34326f,-0.0872989f,-0.121779f}, +{0.408985f,-0.0787845f,-0.126311f},{0.465236f,-0.0545374f,-0.11824f},{0.498151f,-0.0182492f,-0.0974167f}, +{0.5f,0.0245557f,-0.0664839f},{0.473501f,0.0673606f,-0.0315635f},{0.428328f,0.103649f,-0.00016416f}, +{0.373146f,0.127896f,0.0230542f},{0.3129f,0.13641f,0.037678f},{0.25362f,0.127896f,0.0431086f}, +{0.206011f,0.103649f,0.0358444f},{0.1805f,0.0673606f,0.0145129f},{0.17957f,0.0245557f,-0.0160796f}, +{0.198361f,-0.0182492f,-0.0492255f},{0.232567f,-0.0545375f,-0.0804019f},{0.281607f,-0.0787845f,-0.105784f}, +{0.334569f,-0.131359f,-0.0809148f},{0.40145f,-0.122143f,-0.0813779f},{0.456808f,-0.0958979f,-0.069794f}, +{0.487429f,-0.0566198f,-0.0471402f},{0.486932f,-0.0102881f,-0.0163207f},{0.459465f,0.0360436f,0.0170134f}, +{0.414816f,0.0753217f,0.0462327f},{0.359802f,0.101566f,0.0681354f},{0.296993f,0.110782f,0.0839128f}, +{0.232114f,0.101566f,0.0925683f},{0.178659f,0.0753217f,0.0873822f},{0.150754f,0.0360435f,0.0642135f}, +{0.152175f,-0.0102882f,0.0287899f},{0.176247f,-0.0566198f,-0.00911686f},{0.216092f,-0.0958979f,-0.042849f}, +{0.269784f,-0.122143f,-0.0678564f},{-0.283516f,0.0684505f,0.117249f},{-0.297523f,0.111982f,0.0825327f}, +{-0.320672f,0.108213f,0.0800315f},{-0.337917f,0.0974768f,0.0822191f},{-0.347078f,0.0814095f,0.0883145f}, +{-0.347375f,0.062457f,0.0972086f},{-0.33918f,0.0435043f,0.107872f},{-0.323569f,0.0274371f,0.119293f}, +{-0.302141f,0.0167013f,0.1301f},{-0.277259f,0.0129314f,0.138501f},{-0.252381f,0.0167013f,0.142792f}, +{-0.231847f,0.0274371f,0.14198f},{-0.219791f,0.0435043f,0.136064f},{-0.218713f,0.0624569f,0.125981f}, +{-0.228674f,0.0814096f,0.113434f},{-0.247538f,0.0974768f,0.100606f},{-0.271824f,0.108213f,0.0897131f}, +{-0.313436f,0.1369f,0.0359331f},{-0.35693f,0.129934f,0.0327261f},{-0.388907f,0.110097f,0.0387786f}, +{-0.404696f,0.0804084f,0.0519694f},{-0.403928f,0.0453886f,0.0691129f},{-0.389077f,0.0103687f,0.0882565f}, +{-0.36285f,-0.0193198f,0.108704f},{-0.326938f,-0.0391569f,0.12848f},{-0.28316f,-0.0461228f,0.14344f}, +{-0.236305f,-0.0391569f,0.149751f},{-0.195408f,-0.0193197f,0.146165f},{-0.170624f,0.0103687f,0.133635f}, +{-0.167907f,0.0453885f,0.114231f},{-0.18657f,0.0804084f,0.090957f},{-0.221347f,0.110097f,0.0676455f}, +{-0.265804f,0.129934f,0.0482343f},{-0.328906f,0.139409f,-0.0188677f},{-0.389563f,0.130308f,-0.0237764f}, +{-0.434822f,0.104389f,-0.0151712f},{-0.455683f,0.0655995f,0.00499309f},{-0.452287f,0.0198438f,0.0308808f}, +{-0.430691f,-0.0259118f,0.0581252f},{-0.396613f,-0.0647016f,0.085662f},{-0.352229f,-0.0906201f,0.111006f}, +{-0.29775f,-0.0997214f,0.128053f},{-0.237276f,-0.09062f,0.131966f},{-0.182806f,-0.0647016f,0.122977f}, +{-0.149318f,-0.0259118f,0.104165f},{-0.145113f,0.0198439f,0.0786865f},{-0.168025f,0.0655996f,0.0497981f}, +{-0.21047f,0.104389f,0.0213453f},{-0.265982f,0.130308f,-0.00271041f},{-0.342835f,0.119128f,-0.0736233f}, +{-0.413662f,0.109277f,-0.0818217f},{-0.468026f,0.0812232f,-0.0736504f},{-0.492562f,0.0392375f,-0.0493431f}, +{-0.486932f,-0.0102881f,-0.0163207f},{-0.459805f,-0.0598137f,0.0177488f},{-0.419752f,-0.101799f,0.0495111f}, +{-0.37045f,-0.129853f,0.0758506f},{-0.312195f,-0.139705f,0.0909771f},{-0.248628f,-0.129853f,0.091013f}, +{-0.191762f,-0.101799f,0.0777037f},{-0.156931f,-0.0598137f,0.0556475f},{-0.152175f,-0.0102881f,0.0287899f}, +{-0.174436f,0.0392374f,-0.000122022f},{-0.216246f,0.0812232f,-0.0287078f},{-0.273448f,0.109277f,-0.0542936f}, +{0.283516f,0.0684505f,0.117249f},{0.297523f,0.111982f,0.0825327f},{0.320672f,0.108213f,0.0800315f}, +{0.337917f,0.0974768f,0.0822191f},{0.347078f,0.0814095f,0.0883145f},{0.347375f,0.062457f,0.0972086f}, +{0.33918f,0.0435043f,0.107872f},{0.323569f,0.0274371f,0.119293f},{0.302141f,0.0167013f,0.1301f}, +{0.277259f,0.0129314f,0.138501f},{0.252381f,0.0167013f,0.142792f},{0.231847f,0.0274371f,0.14198f}, +{0.219791f,0.0435043f,0.136064f},{0.218713f,0.062457f,0.125981f},{0.228674f,0.0814096f,0.113434f}, +{0.247538f,0.0974768f,0.100606f},{0.271824f,0.108213f,0.0897131f},{0.313436f,0.1369f,0.0359331f}, +{0.35693f,0.129934f,0.0327261f},{0.388907f,0.110097f,0.0387786f},{0.404696f,0.0804084f,0.0519694f}, +{0.403928f,0.0453886f,0.0691129f},{0.389077f,0.0103687f,0.0882565f},{0.36285f,-0.0193197f,0.108704f}, +{0.326938f,-0.0391569f,0.12848f},{0.28316f,-0.0461228f,0.14344f},{0.236305f,-0.0391569f,0.149751f}, +{0.195408f,-0.0193197f,0.146165f},{0.170624f,0.0103687f,0.133635f},{0.167907f,0.0453885f,0.114231f}, +{0.18657f,0.0804084f,0.090957f},{0.221347f,0.110097f,0.0676455f},{0.265804f,0.129934f,0.0482343f}, +{0.328906f,0.139409f,-0.0188677f},{0.389563f,0.130308f,-0.0237764f},{0.434822f,0.104389f,-0.0151712f}, +{0.455683f,0.0655995f,0.00499309f},{0.452287f,0.0198438f,0.0308808f},{0.430691f,-0.0259118f,0.0581252f}, +{0.396613f,-0.0647016f,0.085662f},{0.352229f,-0.0906201f,0.111006f},{0.29775f,-0.0997214f,0.128053f}, +{0.237276f,-0.09062f,0.131966f},{0.182806f,-0.0647016f,0.122977f},{0.149318f,-0.0259118f,0.104165f}, +{0.145113f,0.0198439f,0.0786865f},{0.168025f,0.0655996f,0.0497981f},{0.21047f,0.104389f,0.0213453f}, +{0.265982f,0.130308f,-0.00271041f},{0.342835f,0.119128f,-0.0736233f},{0.413662f,0.109277f,-0.0818217f}, +{0.468026f,0.0812232f,-0.0736504f},{0.492562f,0.0392375f,-0.0493431f},{0.486932f,-0.0102881f,-0.0163207f}, +{0.459805f,-0.0598137f,0.0177488f},{0.419752f,-0.101799f,0.0495111f},{0.37045f,-0.129853f,0.0758506f}, +{0.312195f,-0.139705f,0.0909771f},{0.248628f,-0.129853f,0.091013f},{0.191762f,-0.101799f,0.0777037f}, +{0.156931f,-0.0598137f,0.0556475f},{0.152175f,-0.0102881f,0.0287899f},{0.174436f,0.0392374f,-0.000122023f}, +{0.216246f,0.0812232f,-0.0287078f},{0.273448f,0.109277f,-0.0542936f} +}, + +//lid 4 +{ +{-0.353855f,0.0634518f,-0.127808f},{-0.353743f,0.00680746f,-0.14288f},{-0.382005f,0.0107183f,-0.14774f}, +{-0.406503f,0.0218554f,-0.148074f},{-0.422603f,0.0385233f,-0.143562f},{-0.427103f,0.0581844f,-0.134712f}, +{-0.419209f,0.0778456f,-0.12295f},{-0.400665f,0.0945135f,-0.110367f},{-0.37505f,0.105651f,-0.0991699f}, +{-0.346773f,0.109561f,-0.0911444f},{-0.32025f,0.105651f,-0.0873742f},{-0.299264f,0.0945134f,-0.088188f}, +{-0.286447f,0.0778455f,-0.0932286f},{-0.283047f,0.0581844f,-0.101633f},{-0.28916f,0.0385233f,-0.112242f}, +{-0.304115f,0.0218554f,-0.123685f},{-0.32649f,0.0107183f,-0.134417f},{-0.347829f,-0.051748f,-0.134586f}, +{-0.39918f,-0.0445217f,-0.141112f},{-0.444479f,-0.023943f,-0.140152f},{-0.474048f,0.00685527f,-0.131052f}, +{-0.481203f,0.0431843f,-0.114419f},{-0.465041f,0.0795133f,-0.0929282f},{-0.430264f,0.110311f,-0.0708482f}, +{-0.384188f,0.13089f,-0.0522717f},{-0.334187f,0.138117f,-0.0397563f},{-0.287418f,0.13089f,-0.0346676f}, +{-0.250883f,0.110312f,-0.0377287f},{-0.229717f,0.0795133f,-0.0483917f},{-0.225358f,0.0431842f,-0.0646188f}, +{-0.236481f,0.00685524f,-0.0839373f},{-0.261654f,-0.023943f,-0.103878f},{-0.299784f,-0.0445217f,-0.121626f}, +{-0.339278f,-0.1033f,-0.104625f},{-0.40326f,-0.0938584f,-0.108657f},{-0.458827f,-0.066971f,-0.104285f}, +{-0.493724f,-0.0267311f,-0.0911008f},{-0.5f,0.020735f,-0.0697199f},{-0.47804f,0.0682011f,-0.0435093f}, +{-0.435242f,0.108441f,-0.0180731f},{-0.380135f,0.135328f,0.00212642f},{-0.319193f,0.14477f,0.0158355f}, +{-0.259542f,0.135328f,0.0221782f},{-0.211448f,0.108441f,0.0183685f},{-0.184369f,0.0682011f,0.0031685f}, +{-0.180904f,0.0207349f,-0.0201245f},{-0.197459f,-0.0267312f,-0.0464986f},{-0.230533f,-0.066971f,-0.0718127f}, +{-0.278897f,-0.0938584f,-0.0921433f},{-0.331281f,-0.14f,-0.0568862f},{-0.396099f,-0.129781f,-0.0579084f}, +{-0.450089f,-0.100678f,-0.050944f},{-0.481864f,-0.0571228f,-0.0363563f},{-0.48513f,-0.00574581f,-0.0149238f}, +{-0.461947f,0.0456311f,0.0101581f},{-0.419991f,0.0891865f,0.0335696f},{-0.365921f,0.118289f,0.0519629f}, +{-0.303382f,0.128509f,0.0659771f},{-0.238494f,0.118289f,0.0750094f},{-0.184008f,0.0891864f,0.0734764f}, +{-0.153528f,0.0456311f,0.0572033f},{-0.151825f,-0.00574587f,0.0300291f},{-0.174023f,-0.0571228f,-9.32868e-005f}, +{-0.213722f,-0.100678f,-0.027056f},{-0.267552f,-0.129781f,-0.0467337f},{0.353855f,0.0634518f,-0.127808f}, +{0.353743f,0.00680746f,-0.14288f},{0.382005f,0.0107183f,-0.14774f},{0.406503f,0.0218554f,-0.148074f}, +{0.422603f,0.0385233f,-0.143562f},{0.427103f,0.0581844f,-0.134712f},{0.419209f,0.0778455f,-0.12295f}, +{0.400665f,0.0945135f,-0.110367f},{0.37505f,0.105651f,-0.0991699f},{0.346773f,0.109561f,-0.0911444f}, +{0.32025f,0.105651f,-0.0873742f},{0.299264f,0.0945134f,-0.0881879f},{0.286447f,0.0778455f,-0.0932286f}, +{0.283047f,0.0581844f,-0.101633f},{0.28916f,0.0385233f,-0.112242f},{0.304115f,0.0218554f,-0.123685f}, +{0.32649f,0.0107183f,-0.134417f},{0.347829f,-0.051748f,-0.134586f},{0.39918f,-0.0445217f,-0.141112f}, +{0.444479f,-0.023943f,-0.140152f},{0.474048f,0.00685527f,-0.131052f},{0.481203f,0.0431843f,-0.114419f}, +{0.465041f,0.0795133f,-0.0929282f},{0.430264f,0.110311f,-0.0708482f},{0.384188f,0.13089f,-0.0522717f}, +{0.334187f,0.138117f,-0.0397563f},{0.287418f,0.13089f,-0.0346676f},{0.250883f,0.110312f,-0.0377287f}, +{0.229717f,0.0795133f,-0.0483917f},{0.225358f,0.0431842f,-0.0646188f},{0.236481f,0.00685524f,-0.0839372f}, +{0.261654f,-0.023943f,-0.103878f},{0.299784f,-0.0445217f,-0.121626f},{0.339278f,-0.1033f,-0.104625f}, +{0.40326f,-0.0938584f,-0.108657f},{0.458827f,-0.066971f,-0.104285f},{0.493724f,-0.0267311f,-0.0911008f}, +{0.5f,0.020735f,-0.0697199f},{0.47804f,0.068201f,-0.0435093f},{0.435242f,0.108441f,-0.0180731f}, +{0.380135f,0.135328f,0.00212642f},{0.319193f,0.14477f,0.0158355f},{0.259542f,0.135328f,0.0221782f}, +{0.211448f,0.108441f,0.0183685f},{0.184369f,0.0682011f,0.0031685f},{0.180904f,0.0207349f,-0.0201245f}, +{0.197459f,-0.0267312f,-0.0464986f},{0.230533f,-0.066971f,-0.0718127f},{0.278897f,-0.0938584f,-0.0921433f}, +{0.331281f,-0.14f,-0.0568862f},{0.396099f,-0.129781f,-0.0579084f},{0.450089f,-0.100678f,-0.050944f}, +{0.481864f,-0.0571228f,-0.0363563f},{0.48513f,-0.00574581f,-0.0149238f},{0.461947f,0.0456311f,0.0101581f}, +{0.419991f,0.0891864f,0.0335696f},{0.365921f,0.118289f,0.0519629f},{0.303382f,0.128509f,0.0659771f}, +{0.238494f,0.118289f,0.0750095f},{0.184008f,0.0891864f,0.0734764f},{0.153528f,0.0456311f,0.0572033f}, +{0.151825f,-0.00574587f,0.0300291f},{0.174023f,-0.0571228f,-9.32874e-005f},{0.213722f,-0.100678f,-0.027056f}, +{0.267552f,-0.129781f,-0.0467337f},{-0.279283f,0.0520408f,0.127571f},{-0.291091f,0.101044f,0.0980386f}, +{-0.314344f,0.0969793f,0.0946093f},{-0.331977f,0.0854032f,0.0951078f},{-0.341951f,0.0680782f,0.0990535f}, +{-0.343465f,0.0476421f,0.105775f},{-0.336696f,0.027206f,0.11463f},{-0.322456f,0.00988106f,0.12477f}, +{-0.302072f,-0.0016951f,0.134807f},{-0.277652f,-0.00576013f,0.142958f},{-0.252472f,-0.00169512f,0.147658f}, +{-0.230868f,0.00988104f,0.148074f},{-0.217233f,0.0272059f,0.144161f},{-0.214527f,0.0476421f,0.136514f}, +{-0.223242f,0.0680783f,0.126309f},{-0.241414f,0.0854032f,0.115241f},{-0.265439f,0.0969793f,0.10525f}, +{-0.306765f,0.13379f,0.0561555f},{-0.349583f,0.126279f,0.0517622f},{-0.381449f,0.104889f,0.0547534f}, +{-0.398489f,0.0728766f,0.0633834f},{-0.400159f,0.0351155f,0.0757282f},{-0.388138f,-0.00264553f,0.0910661f}, +{-0.364489f,-0.0346578f,0.108922f},{-0.330591f,-0.0560477f,0.126846f},{-0.287987f,-0.0635589f,0.140574f}, +{-0.241024f,-0.0560477f,0.146878f},{-0.198397f,-0.0346578f,0.145269f},{-0.17056f,-0.00264554f,0.136838f}, +{-0.164573f,0.0351155f,0.122803f},{-0.18101f,0.0728766f,0.104726f},{-0.215025f,0.104889f,0.0852658f}, +{-0.259448f,0.126279f,0.067972f},{-0.322458f,0.145293f,0.00425289f},{-0.381335f,0.135479f,-0.00130134f}, +{-0.4259f,0.107531f,0.00352389f},{-0.448605f,0.0657054f,0.0170174f},{-0.448895f,0.0163682f,0.0354859f}, +{-0.431053f,-0.0329691f,0.0567292f},{-0.399729f,-0.0747951f,0.0799807f},{-0.35711f,-0.102742f,0.102015f}, +{-0.303763f,-0.112556f,0.116832f},{-0.243626f,-0.102742f,0.120643f},{-0.18791f,-0.0747951f,0.114571f}, +{-0.151294f,-0.032969f,0.101662f},{-0.143201f,0.0163682f,0.0838106f},{-0.163332f,0.0657054f,0.0622674f}, +{-0.204947f,0.107531f,0.0393893f},{-0.260449f,0.135479f,0.018813f},{-0.337146f,0.133801f,-0.0513591f}, +{-0.405991f,0.123178f,-0.0596923f},{-0.459809f,0.0929286f,-0.0556713f},{-0.486676f,0.0476564f,-0.039131f}, +{-0.48513f,-0.00574584f,-0.0149238f},{-0.461581f,-0.0591481f,0.0117126f},{-0.423384f,-0.10442f,0.0378093f}, +{-0.374549f,-0.13467f,0.059798f},{-0.316475f,-0.145293f,0.072463f},{-0.253313f,-0.13467f,0.0730645f}, +{-0.196251f,-0.10442f,0.0637669f},{-0.159614f,-0.059148f,0.0486072f},{-0.151825f,-0.00574584f,0.0300291f}, +{-0.171463f,0.0476564f,0.00889002f},{-0.212175f,0.0929286f,-0.0135302f},{-0.269009f,0.123178f,-0.0346653f}, +{0.279283f,0.0520408f,0.127571f},{0.291091f,0.101044f,0.0980386f},{0.314344f,0.0969793f,0.0946093f}, +{0.331977f,0.0854032f,0.0951078f},{0.341951f,0.0680782f,0.0990535f},{0.343465f,0.0476421f,0.105775f}, +{0.336696f,0.027206f,0.11463f},{0.322456f,0.00988106f,0.12477f},{0.302072f,-0.0016951f,0.134807f}, +{0.277652f,-0.00576013f,0.142958f},{0.252472f,-0.00169512f,0.147658f},{0.230868f,0.00988104f,0.148074f}, +{0.217233f,0.0272059f,0.144161f},{0.214527f,0.0476421f,0.136514f},{0.223242f,0.0680782f,0.126309f}, +{0.241414f,0.0854032f,0.115241f},{0.265439f,0.0969793f,0.10525f},{0.306765f,0.13379f,0.0561555f}, +{0.349583f,0.126279f,0.0517622f},{0.381449f,0.104889f,0.0547534f},{0.398489f,0.0728766f,0.0633834f}, +{0.400159f,0.0351155f,0.0757282f},{0.388138f,-0.00264554f,0.0910661f},{0.364489f,-0.0346578f,0.108922f}, +{0.330591f,-0.0560477f,0.126846f},{0.287987f,-0.0635589f,0.140574f},{0.241024f,-0.0560477f,0.146878f}, +{0.198397f,-0.0346578f,0.145269f},{0.17056f,-0.00264554f,0.136838f},{0.164573f,0.0351155f,0.122803f}, +{0.18101f,0.0728766f,0.104726f},{0.215025f,0.104889f,0.0852658f},{0.259448f,0.126279f,0.067972f}, +{0.322458f,0.145293f,0.00425289f},{0.381335f,0.135479f,-0.00130134f},{0.4259f,0.107531f,0.00352389f}, +{0.448605f,0.0657054f,0.0170174f},{0.448896f,0.0163682f,0.0354859f},{0.431053f,-0.0329691f,0.0567292f}, +{0.399729f,-0.0747951f,0.0799807f},{0.35711f,-0.102742f,0.102015f},{0.303763f,-0.112556f,0.116832f}, +{0.243626f,-0.102742f,0.120643f},{0.187909f,-0.0747951f,0.114571f},{0.151294f,-0.032969f,0.101662f}, +{0.143201f,0.0163682f,0.0838106f},{0.163332f,0.0657054f,0.0622674f},{0.204947f,0.107531f,0.0393893f}, +{0.260449f,0.135479f,0.018813f},{0.337146f,0.133801f,-0.0513591f},{0.405991f,0.123178f,-0.0596923f}, +{0.459809f,0.0929286f,-0.0556713f},{0.486676f,0.0476564f,-0.039131f},{0.48513f,-0.00574584f,-0.0149238f}, +{0.461581f,-0.0591481f,0.0117126f},{0.423385f,-0.10442f,0.0378093f},{0.374549f,-0.13467f,0.059798f}, +{0.316475f,-0.145293f,0.072463f},{0.253313f,-0.13467f,0.0730645f},{0.196251f,-0.10442f,0.0637669f}, +{0.159614f,-0.059148f,0.0486072f},{0.151825f,-0.00574584f,0.0300291f},{0.171463f,0.0476564f,0.00889002f}, +{0.212175f,0.0929286f,-0.0135302f},{0.269009f,0.123178f,-0.0346653f} +}, + +//lid3 +{ +{-0.354934f,0.0573656f,-0.132288f},{-0.35381f,-0.000170749f,-0.143506f},{-0.381882f,0.0038597f,-0.148337f}, +{-0.406389f,0.0153374f,-0.149276f},{-0.422778f,0.032515f,-0.145954f},{-0.427813f,0.0527773f,-0.138659f}, +{-0.420534f,0.0730396f,-0.128481f},{-0.402489f,0.0902173f,-0.117185f},{-0.377147f,0.101695f,-0.106769f}, +{-0.348936f,0.105725f,-0.098952f},{-0.322337f,0.101695f,-0.0948513f},{-0.301181f,0.0902172f,-0.0948892f}, +{-0.288106f,0.0730396f,-0.0988492f},{-0.28438f,0.0527773f,-0.106035f},{-0.290143f,0.032515f,-0.11543f}, +{-0.304767f,0.0153374f,-0.125765f},{-0.326835f,0.00385966f,-0.135594f},{-0.34734f,-0.0581242f,-0.131498f}, +{-0.398136f,-0.0506769f,-0.137744f},{-0.443184f,-0.0294689f,-0.13778f},{-0.473215f,0.00227113f,-0.130937f}, +{-0.481555f,0.039711f,-0.117333f},{-0.466781f,0.077151f,-0.0988643f},{-0.432955f,0.108891f,-0.0790885f}, +{-0.387165f,0.130099f,-0.0617732f},{-0.337041f,0.137546f,-0.0495308f},{-0.290066f,0.130099f,-0.0438717f}, +{-0.253281f,0.108891f,-0.0455929f},{-0.231674f,0.0771509f,-0.0543229f},{-0.226688f,0.039711f,-0.0683984f}, +{-0.237222f,0.00227109f,-0.0856564f},{-0.26199f,-0.0294689f,-0.103695f},{-0.299775f,-0.0506769f,-0.119748f}, +{-0.338795f,-0.107672f,-0.0983158f},{-0.401925f,-0.0979416f,-0.102189f},{-0.456905f,-0.070232f,-0.0992443f}, +{-0.492207f,-0.0287616f,-0.0890065f},{-0.5f,0.020156f,-0.0714432f},{-0.479892f,0.0690737f,-0.0489261f}, +{-0.438293f,0.110544f,-0.0262122f},{-0.383453f,0.138254f,-0.00747452f},{-0.322322f,0.147984f,0.00582876f}, +{-0.262487f,0.138254f,0.0126678f},{-0.214117f,0.110544f,0.0103978f},{-0.186347f,0.0690736f,-0.00228616f}, +{-0.181908f,0.020156f,-0.0226702f},{-0.197763f,-0.0287616f,-0.0462757f},{-0.230646f,-0.070232f,-0.0690678f}, +{-0.278912f,-0.0979416f,-0.0872364f},{-0.331209f,-0.141271f,-0.0482373f},{-0.395084f,-0.130739f,-0.0496675f}, +{-0.44825f,-0.100746f,-0.0446528f},{-0.480164f,-0.0558588f,-0.0332809f},{-0.484745f,-0.00291071f,-0.0156133f}, +{-0.463326f,0.0500373f,0.00600839f},{-0.422637f,0.0949245f,0.0268506f},{-0.369065f,0.124917f,0.0437058f}, +{-0.30661f,0.135449f,0.0570844f},{-0.241634f,0.124917f,0.0664523f},{-0.186655f,0.0949245f,0.0665538f}, +{-0.155078f,0.0500372f,0.053143f},{-0.152135f,-0.00291078f,0.0293266f},{-0.173756f,-0.0558588f,0.00241507f}, +{-0.213691f,-0.100746f,-0.0216839f},{-0.267826f,-0.130739f,-0.0391481f},{0.354934f,0.0573656f,-0.132288f}, +{0.35381f,-0.000170749f,-0.143506f},{0.381882f,0.00385971f,-0.148337f},{0.406389f,0.0153374f,-0.149276f}, +{0.422778f,0.032515f,-0.145954f},{0.427813f,0.0527773f,-0.138659f},{0.420534f,0.0730396f,-0.128481f}, +{0.402489f,0.0902173f,-0.117185f},{0.377147f,0.101695f,-0.106769f},{0.348936f,0.105725f,-0.098952f}, +{0.322337f,0.101695f,-0.0948513f},{0.30118f,0.0902172f,-0.0948892f},{0.288106f,0.0730396f,-0.0988492f}, +{0.28438f,0.0527773f,-0.106035f},{0.290143f,0.032515f,-0.11543f},{0.304766f,0.0153374f,-0.125765f}, +{0.326835f,0.00385966f,-0.135594f},{0.34734f,-0.0581242f,-0.131498f},{0.398136f,-0.0506769f,-0.137744f}, +{0.443184f,-0.0294689f,-0.13778f},{0.473215f,0.00227113f,-0.130937f},{0.481555f,0.039711f,-0.117333f}, +{0.466781f,0.077151f,-0.0988643f},{0.432955f,0.108891f,-0.0790885f},{0.387165f,0.130099f,-0.0617732f}, +{0.337041f,0.137546f,-0.0495308f},{0.290066f,0.130099f,-0.0438717f},{0.253281f,0.108891f,-0.0455929f}, +{0.231674f,0.0771509f,-0.0543229f},{0.226688f,0.039711f,-0.0683984f},{0.237222f,0.00227109f,-0.0856564f}, +{0.26199f,-0.0294689f,-0.103695f},{0.299775f,-0.0506769f,-0.119748f},{0.338795f,-0.107672f,-0.0983158f}, +{0.401925f,-0.0979416f,-0.102189f},{0.456905f,-0.070232f,-0.0992443f},{0.492207f,-0.0287616f,-0.0890065f}, +{0.5f,0.020156f,-0.0714432f},{0.479892f,0.0690737f,-0.0489261f},{0.438293f,0.110544f,-0.0262122f}, +{0.383453f,0.138254f,-0.00747452f},{0.322321f,0.147984f,0.00582876f},{0.262487f,0.138254f,0.0126678f}, +{0.214117f,0.110544f,0.0103978f},{0.186347f,0.0690736f,-0.00228616f},{0.181908f,0.020156f,-0.0226702f}, +{0.197763f,-0.0287616f,-0.0462757f},{0.230646f,-0.070232f,-0.0690678f},{0.278912f,-0.0979416f,-0.0872364f}, +{0.331209f,-0.141271f,-0.0482373f},{0.395083f,-0.130739f,-0.0496675f},{0.44825f,-0.100746f,-0.0446528f}, +{0.480164f,-0.0558588f,-0.0332809f},{0.484745f,-0.00291071f,-0.0156133f},{0.463326f,0.0500373f,0.00600839f}, +{0.422637f,0.0949245f,0.0268506f},{0.369065f,0.124917f,0.0437058f},{0.30661f,0.135449f,0.0570844f}, +{0.241634f,0.124917f,0.0664523f},{0.186655f,0.0949245f,0.0665538f},{0.155078f,0.0500372f,0.053143f}, +{0.152135f,-0.00291078f,0.0293266f},{0.173756f,-0.0558588f,0.00241507f},{0.213691f,-0.100746f,-0.0216839f}, +{0.267826f,-0.130739f,-0.0391481f},{-0.277987f,0.0386883f,0.132131f},{-0.287513f,0.0910388f,0.106426f}, +{-0.310982f,0.0868129f,0.102243f},{-0.32908f,0.0747783f,0.101479f},{-0.339832f,0.0567673f,0.103884f}, +{-0.342399f,0.0355218f,0.10907f},{-0.336808f,0.0142763f,0.116615f},{-0.323672f,-0.00373473f,0.125754f}, +{-0.304119f,-0.0157693f,0.135112f},{-0.280073f,-0.0199953f,0.142976f},{-0.254669f,-0.0157693f,0.147932f}, +{-0.232214f,-0.00373472f,0.149276f},{-0.217264f,0.0142763f,0.146921f},{-0.21312f,0.0355218f,0.141185f}, +{-0.22065f,0.0567673f,0.13281f},{-0.238105f,0.0747783f,0.123086f},{-0.261851f,0.0868129f,0.113735f}, +{-0.302723f,0.129086f,0.0681242f},{-0.345325f,0.121278f,0.0626405f},{-0.37736f,0.0990408f,0.0633087f}, +{-0.395498f,0.0657608f,0.068684f},{-0.399073f,0.0265043f,0.0776627f},{-0.389194f,-0.0127523f,0.0902372f}, +{-0.367429f,-0.0460323f,0.105995f},{-0.33493f,-0.0682694f,0.122262f},{-0.293123f,-0.076078f,0.134908f}, +{-0.246114f,-0.0682694f,0.141237f},{-0.202283f,-0.0460323f,0.141245f},{-0.172133f,-0.0127523f,0.136049f}, +{-0.163456f,0.0265042f,0.126224f},{-0.177871f,0.0657607f,0.11221f},{-0.21106f,0.0990408f,0.0956785f}, +{-0.255442f,0.121278f,0.0798278f},{-0.318575f,0.147039f,0.018955f},{-0.376353f,0.136836f,0.0126824f}, +{-0.420545f,0.107782f,0.0146494f},{-0.444704f,0.0642997f,0.0232859f},{-0.447788f,0.0130085f,0.036352f}, +{-0.432737f,-0.0382826f,0.0530567f},{-0.403325f,-0.0817651f,0.0727878f},{-0.361725f,-0.110819f,0.0920003f}, +{-0.308949f,-0.121022f,0.105077f},{-0.249036f,-0.110819f,0.109041f},{-0.192594f,-0.0817651f,0.105453f}, +{-0.153797f,-0.0382826f,0.0971894f},{-0.142695f,0.0130085f,0.0852546f},{-0.160501f,0.0642996f,0.0694309f}, +{-0.201377f,0.107782f,0.0508067f},{-0.256994f,0.136836f,0.0326489f},{-0.333621f,0.142162f,-0.0362204f}, +{-0.400982f,0.131119f,-0.0447669f},{-0.454372f,0.0996714f,-0.0438248f},{-0.483064f,0.0526063f,-0.0330922f}, +{-0.484745f,-0.00291076f,-0.0156133f},{-0.464001f,-0.0584278f,0.00516931f},{-0.42714f,-0.105493f,0.0266546f}, +{-0.378398f,-0.136941f,0.0451392f},{-0.320159f,-0.147984f,0.0560012f},{-0.257181f,-0.136941f,0.0573072f}, +{-0.200088f,-0.105493f,0.0513338f},{-0.162235f,-0.0584278f,0.0415487f},{-0.152135f,-0.00291073f,0.0293265f}, +{-0.169683f,0.0526063f,0.0142241f},{-0.209585f,0.0996715f,-0.00340899f},{-0.266299f,0.131119f,-0.0212809f}, +{0.277987f,0.0386883f,0.132131f},{0.287513f,0.0910388f,0.106426f},{0.310982f,0.0868129f,0.102243f}, +{0.32908f,0.0747783f,0.101479f},{0.339832f,0.0567673f,0.103884f},{0.342399f,0.0355218f,0.10907f}, +{0.336808f,0.0142763f,0.116615f},{0.323672f,-0.00373473f,0.125754f},{0.304119f,-0.0157693f,0.135112f}, +{0.280073f,-0.0199953f,0.142976f},{0.254669f,-0.0157693f,0.147932f},{0.232214f,-0.00373472f,0.149276f}, +{0.217264f,0.0142763f,0.146921f},{0.21312f,0.0355218f,0.141185f},{0.22065f,0.0567673f,0.13281f}, +{0.238105f,0.0747783f,0.123086f},{0.261851f,0.0868129f,0.113735f},{0.302723f,0.129086f,0.0681242f}, +{0.345325f,0.121278f,0.0626405f},{0.37736f,0.0990408f,0.0633087f},{0.395498f,0.0657608f,0.068684f}, +{0.399073f,0.0265043f,0.0776627f},{0.389194f,-0.0127523f,0.0902372f},{0.367429f,-0.0460323f,0.105995f}, +{0.33493f,-0.0682694f,0.122262f},{0.293123f,-0.076078f,0.134908f},{0.246114f,-0.0682694f,0.141237f}, +{0.202283f,-0.0460323f,0.141246f},{0.172133f,-0.0127523f,0.136049f},{0.163456f,0.0265042f,0.126224f}, +{0.177871f,0.0657607f,0.11221f},{0.21106f,0.0990408f,0.0956785f},{0.255442f,0.121278f,0.0798278f}, +{0.318575f,0.147039f,0.018955f},{0.376353f,0.136836f,0.0126824f},{0.420545f,0.107782f,0.0146494f}, +{0.444704f,0.0642997f,0.0232859f},{0.447787f,0.0130085f,0.036352f},{0.432737f,-0.0382826f,0.0530567f}, +{0.403325f,-0.0817651f,0.0727878f},{0.361725f,-0.110819f,0.0920003f},{0.308949f,-0.121022f,0.105077f}, +{0.249036f,-0.110819f,0.109041f},{0.192594f,-0.0817651f,0.105453f},{0.153797f,-0.0382825f,0.0971894f}, +{0.142695f,0.0130085f,0.0852546f},{0.160501f,0.0642996f,0.0694309f},{0.201377f,0.107782f,0.0508067f}, +{0.256994f,0.136836f,0.0326489f},{0.333621f,0.142162f,-0.0362204f},{0.400982f,0.131119f,-0.0447669f}, +{0.454372f,0.0996714f,-0.0438248f},{0.483064f,0.0526063f,-0.0330922f},{0.484745f,-0.00291076f,-0.0156133f}, +{0.464001f,-0.0584278f,0.00516931f},{0.42714f,-0.105493f,0.0266546f},{0.378398f,-0.136941f,0.0451392f}, +{0.320159f,-0.147984f,0.0560012f},{0.257181f,-0.136941f,0.0573072f},{0.200088f,-0.105493f,0.0513338f}, +{0.162235f,-0.0584278f,0.0415487f},{0.152135f,-0.00291073f,0.0293265f},{0.169683f,0.0526063f,0.0142241f}, +{0.209585f,0.0996715f,-0.00340899f},{0.266299f,0.131119f,-0.0212809f} +}, + +//lid2 +{ +{-0.35492f,0.0490122f,-0.136664f},{-0.352441f,-0.00933507f,-0.143152f},{-0.38041f,-0.00517772f,-0.148025f}, +{-0.405069f,0.00666169f,-0.149782f},{-0.421938f,0.0243805f,-0.147992f},{-0.427713f,0.0452814f,-0.142654f}, +{-0.421216f,0.0661823f,-0.134438f},{-0.403749f,0.0839011f,-0.124699f},{-0.378666f,0.0957405f,-0.115177f}, +{-0.35044f,0.0998979f,-0.107521f},{-0.323665f,0.0957405f,-0.102911f},{-0.302226f,0.0839011f,-0.101906f}, +{-0.288762f,0.0661823f,-0.104479f},{-0.284557f,0.0452814f,-0.110146f},{-0.289822f,0.0243805f,-0.118063f}, +{-0.304004f,0.00666169f,-0.127075f},{-0.32572f,-0.00517772f,-0.13585f},{-0.345275f,-0.0662611f,-0.126649f}, +{-0.395652f,-0.0585793f,-0.132679f},{-0.44069f,-0.0367029f,-0.13407f},{-0.471557f,-0.00396281f,-0.130108f}, +{-0.481531f,0.0346569f,-0.12031f},{-0.468499f,0.0732766f,-0.105598f},{-0.435716f,0.106017f,-0.0886244f}, +{-0.390041f,0.127893f,-0.0727466f},{-0.339539f,0.135575f,-0.0606899f},{-0.292198f,0.127893f,-0.0541963f}, +{-0.255096f,0.106017f,-0.0541648f},{-0.232923f,0.0732764f,-0.0604336f},{-0.22704f,0.0346569f,-0.0718106f}, +{-0.236654f,-0.00396281f,-0.0865268f},{-0.26078f,-0.0367029f,-0.102256f},{-0.298141f,-0.0585793f,-0.116287f}, +{-0.336804f,-0.1131f,-0.0896059f},{-0.399229f,-0.103063f,-0.0934247f},{-0.453895f,-0.0744799f,-0.0923695f}, +{-0.490081f,-0.0317029f,-0.0858416f},{-0.5f,0.0187562f,-0.0730349f},{-0.482199f,0.0692151f,-0.0551062f}, +{-0.441819f,0.111992f,-0.0357056f},{-0.386863f,0.140575f,-0.0186269f},{-0.32513f,0.150612f,-0.00569723f}, +{-0.265008f,0.140575f,0.00175248f},{-0.216493f,0.111992f,0.00131805f},{-0.188031f,0.0692151f,-0.0082449f}, +{-0.182283f,0.018756f,-0.0249265f},{-0.196942f,-0.0317029f,-0.045005f},{-0.229284f,-0.0744799f,-0.0646411f}, +{-0.277356f,-0.103063f,-0.080166f},{-0.329818f,-0.14272f,-0.0368107f},{-0.392866f,-0.131856f,-0.0388037f}, +{-0.445457f,-0.100918f,-0.0362398f},{-0.477976f,-0.0546165f,-0.0288117f},{-0.484459f,0.0f,-0.0157477f}, +{-0.465204f,0.0546165f,0.00161825f},{-0.425725f,0.100918f,0.0193463f},{-0.372221f,0.131856f,0.034428f}, +{-0.309484f,0.14272f,0.0470423f},{-0.244464f,0.131856f,0.0565813f},{-0.189292f,0.100918f,0.0583469f}, +{-0.156703f,0.0546165f,0.048326f},{-0.152152f,0.0f,0.0288029f},{-0.172617f,-0.0546165f,0.00608634f}, +{-0.212389f,-0.100918f,-0.0143389f},{-0.266725f,-0.131856f,-0.0290232f},{0.35492f,0.0490122f,-0.136664f}, +{0.352441f,-0.00933507f,-0.143152f},{0.38041f,-0.00517772f,-0.148025f},{0.405069f,0.00666169f,-0.149782f}, +{0.421938f,0.0243805f,-0.147992f},{0.427713f,0.0452814f,-0.142654f},{0.421216f,0.0661823f,-0.134438f}, +{0.403749f,0.0839011f,-0.124699f},{0.378666f,0.0957405f,-0.115177f},{0.35044f,0.0998979f,-0.107521f}, +{0.323665f,0.0957405f,-0.102911f},{0.302226f,0.0839011f,-0.101906f},{0.288762f,0.0661823f,-0.104479f}, +{0.284557f,0.0452814f,-0.110146f},{0.289822f,0.0243805f,-0.118063f},{0.304004f,0.00666169f,-0.127075f}, +{0.32572f,-0.00517772f,-0.13585f},{0.345275f,-0.0662611f,-0.126649f},{0.395652f,-0.0585793f,-0.132679f}, +{0.44069f,-0.0367029f,-0.13407f},{0.471557f,-0.00396281f,-0.130108f},{0.481531f,0.0346569f,-0.12031f}, +{0.468499f,0.0732766f,-0.105598f},{0.435716f,0.106017f,-0.0886244f},{0.390041f,0.127893f,-0.0727466f}, +{0.339539f,0.135575f,-0.0606899f},{0.292198f,0.127893f,-0.0541963f},{0.255096f,0.106017f,-0.0541648f}, +{0.232923f,0.0732764f,-0.0604336f},{0.22704f,0.0346569f,-0.0718106f},{0.236655f,-0.00396281f,-0.0865268f}, +{0.26078f,-0.0367029f,-0.102256f},{0.298142f,-0.0585793f,-0.116287f},{0.336804f,-0.1131f,-0.0896059f}, +{0.399229f,-0.103063f,-0.0934246f},{0.453895f,-0.0744799f,-0.0923695f},{0.490081f,-0.0317029f,-0.0858416f}, +{0.5f,0.0187562f,-0.0730349f},{0.482199f,0.0692151f,-0.0551062f},{0.441819f,0.111992f,-0.0357056f}, +{0.386863f,0.140575f,-0.018627f},{0.32513f,0.150612f,-0.00569723f},{0.265008f,0.140575f,0.00175248f}, +{0.216493f,0.111992f,0.00131805f},{0.188031f,0.0692151f,-0.0082449f},{0.182283f,0.018756f,-0.0249265f}, +{0.196942f,-0.0317029f,-0.045005f},{0.229284f,-0.0744799f,-0.0646411f},{0.277356f,-0.103063f,-0.0801659f}, +{0.329818f,-0.14272f,-0.0368107f},{0.392866f,-0.131856f,-0.0388037f},{0.445457f,-0.100918f,-0.0362398f}, +{0.477976f,-0.0546165f,-0.0288117f},{0.484459f,0.0f,-0.0157477f},{0.465204f,0.0546165f,0.00161825f}, +{0.425725f,0.100918f,0.0193463f},{0.372221f,0.131856f,0.034428f},{0.309485f,0.14272f,0.0470423f}, +{0.244464f,0.131856f,0.0565813f},{0.189292f,0.100918f,0.0583469f},{0.156704f,0.0546165f,0.048326f}, +{0.152152f,0.0f,0.0288029f},{0.172617f,-0.0546165f,0.00608634f},{0.212389f,-0.100918f,-0.0143389f}, +{0.266725f,-0.131856f,-0.0290232f},{-0.277716f,0.00836844f,0.14043f},{-0.280742f,0.0653898f,0.122636f}, +{-0.304826f,0.0610009f,0.117201f},{-0.324257f,0.0485021f,0.114166f},{-0.336986f,0.0297963f,0.11374f}, +{-0.341972f,0.00773147f,0.11596f},{-0.338904f,-0.0143335f,0.120679f},{-0.328031f,-0.0330392f,0.127263f}, +{-0.310188f,-0.0455381f,0.134519f},{-0.287054f,-0.0499271f,0.141103f},{-0.26152f,-0.0455381f,0.146069f}, +{-0.23771f,-0.0330392f,0.149017f},{-0.220253f,-0.0143335f,0.149782f},{-0.21295f,0.00773147f,0.148127f}, +{-0.217451f,0.0297963f,0.143878f},{-0.232678f,0.0485021f,0.137394f},{-0.255266f,0.0610009f,0.129799f}, +{-0.293369f,0.112456f,0.0912079f},{-0.336341f,0.104346f,0.0834187f},{-0.369703f,0.0812518f,0.0796233f}, +{-0.390712f,0.0466881f,0.0791105f},{-0.398299f,0.00591745f,0.0819687f},{-0.392462f,-0.0348534f,0.0889353f}, +{-0.373867f,-0.0694169f,0.09953f},{-0.343481f,-0.0925117f,0.111166f},{-0.303004f,-0.100622f,0.120699f}, +{-0.256454f,-0.0925117f,0.126708f},{-0.211359f,-0.0694169f,0.129889f},{-0.177502f,-0.0348532f,0.131224f}, +{-0.163381f,0.00591745f,0.13016f},{-0.172658f,0.0466881f,0.125f},{-0.202749f,0.0812518f,0.115147f}, +{-0.24612f,0.104346f,0.102663f},{-0.309223f,0.142402f,0.0478398f},{-0.365947f,0.131806f,0.0395624f}, +{-0.410513f,0.101631f,0.0358015f},{-0.438152f,0.0564719f,0.0354415f},{-0.446767f,0.00320249f,0.0385313f}, +{-0.436696f,-0.0500671f,0.0461625f},{-0.409985f,-0.0952267f,0.0578119f},{-0.369058f,-0.125401f,0.0700902f}, +{-0.316548f,-0.135997f,0.0790487f},{-0.257432f,-0.125401f,0.0834509f},{-0.201015f,-0.0952267f,0.0851812f}, +{-0.159359f,-0.0500669f,0.0863865f},{-0.142616f,0.00320249f,0.0865623f},{-0.154858f,0.0564719f,0.0828629f}, +{-0.192921f,0.101632f,0.0734676f},{-0.248087f,0.131806f,0.0602875f},{-0.324881f,0.150669f,-0.00479203f}, +{-0.39012f,0.1392f,-0.0144446f},{-0.443458f,0.106539f,-0.0197515f},{-0.476273f,0.0576585f,-0.0201944f}, +{-0.484459f,0.0f,-0.0157477f},{-0.468884f,-0.0576585f,-0.00684364f},{-0.433719f,-0.106539f,0.00467625f}, +{-0.38391f,-0.1392f,0.0154431f},{-0.32438f,-0.150669f,0.0225054f},{-0.261719f,-0.1392f,0.0255482f}, +{-0.205523f,-0.106539f,0.0267245f},{-0.166441f,-0.0576583f,0.0280126f},{-0.152152f,0.0f,0.0288029f}, +{-0.165015f,0.0576585f,0.0263835f},{-0.202543f,0.106539f,0.0188847f},{-0.258754f,0.1392f,0.00739763f}, +{0.277716f,0.00836844f,0.14043f},{0.280742f,0.0653898f,0.122636f},{0.304826f,0.0610009f,0.117201f}, +{0.324257f,0.0485021f,0.114166f},{0.336986f,0.0297963f,0.11374f},{0.341972f,0.00773147f,0.11596f}, +{0.338904f,-0.0143335f,0.120679f},{0.328031f,-0.0330392f,0.127263f},{0.310188f,-0.0455381f,0.134519f}, +{0.287054f,-0.0499271f,0.141103f},{0.26152f,-0.0455381f,0.146069f},{0.23771f,-0.0330392f,0.149017f}, +{0.220253f,-0.0143335f,0.149782f},{0.21295f,0.00773147f,0.148127f},{0.217451f,0.0297963f,0.143878f}, +{0.232678f,0.0485021f,0.137394f},{0.255266f,0.0610009f,0.129799f},{0.293369f,0.112456f,0.0912079f}, +{0.336341f,0.104346f,0.0834187f},{0.369703f,0.0812518f,0.0796233f},{0.390712f,0.0466881f,0.0791105f}, +{0.398299f,0.00591745f,0.0819687f},{0.392462f,-0.0348534f,0.0889353f},{0.373867f,-0.0694169f,0.09953f}, +{0.343481f,-0.0925117f,0.111166f},{0.303004f,-0.100622f,0.120699f},{0.256454f,-0.0925117f,0.126708f}, +{0.211359f,-0.0694169f,0.129889f},{0.177502f,-0.0348532f,0.131224f},{0.163381f,0.00591745f,0.13016f}, +{0.172658f,0.0466881f,0.125f},{0.202749f,0.0812518f,0.115147f},{0.24612f,0.104346f,0.102663f}, +{0.309223f,0.142402f,0.0478398f},{0.365947f,0.131806f,0.0395624f},{0.410513f,0.101631f,0.0358015f}, +{0.438152f,0.0564719f,0.0354415f},{0.446767f,0.00320249f,0.0385313f},{0.436696f,-0.0500671f,0.0461625f}, +{0.409985f,-0.0952267f,0.0578119f},{0.369058f,-0.125401f,0.0700902f},{0.316548f,-0.135997f,0.0790487f}, +{0.257432f,-0.125401f,0.0834509f},{0.201015f,-0.0952267f,0.0851812f},{0.159359f,-0.0500669f,0.0863865f}, +{0.142616f,0.00320249f,0.0865623f},{0.154858f,0.0564719f,0.082863f},{0.192921f,0.101632f,0.0734676f}, +{0.248087f,0.131806f,0.0602875f},{0.324881f,0.150669f,-0.00479203f},{0.39012f,0.1392f,-0.0144446f}, +{0.443458f,0.106539f,-0.0197515f},{0.476273f,0.0576585f,-0.0201944f},{0.468884f,-0.0576585f,-0.00684364f}, +{0.433719f,-0.106539f,0.00467625f},{0.38391f,-0.1392f,0.0154431f},{0.32438f,-0.150669f,0.0225054f}, +{0.261719f,-0.1392f,0.0255482f},{0.205523f,-0.106539f,0.0267245f},{0.166441f,-0.0576583f,0.0280126f}, +{0.165015f,0.0576585f,0.0263835f},{0.202543f,0.106539f,0.0188847f},{0.258754f,0.1392f,0.00739763f} +}, + +//lid 1 +{ +{-0.353951f,0.019129f,-0.142995f},{-0.348688f,-0.0395605f,-0.13725f},{-0.37644f,-0.0352039f,-0.142413f}, +{-0.401426f,-0.0227972f,-0.146432f},{-0.419356f,-0.00422938f,-0.148674f},{-0.426804f,0.0176729f,-0.148449f}, +{-0.422104f,0.0395752f,-0.145383f},{-0.405972f,0.058143f,-0.139773f},{-0.38145f,0.0705497f,-0.132638f}, +{-0.353099f,0.0749063f,-0.125394f},{-0.325786f,0.0705497f,-0.119389f},{-0.303578f,0.058143f,-0.115579f}, +{-0.289167f,0.0395752f,-0.114452f},{-0.283899f,0.0176729f,-0.116049f},{-0.288135f,-0.00422939f,-0.119964f}, +{-0.301449f,-0.0227972f,-0.125397f},{-0.322478f,-0.0352039f,-0.13141f},{-0.340315f,-0.0922273f,-0.10959f}, +{-0.389728f,-0.0841773f,-0.115854f},{-0.434689f,-0.0612528f,-0.121228f},{-0.467406f,-0.0269439f,-0.124791f}, +{-0.481165f,0.0135262f,-0.124789f},{-0.472339f,0.0539964f,-0.119913f},{-0.442178f,0.0883053f,-0.110465f}, +{-0.396778f,0.11123f,-0.0984804f},{-0.345153f,0.11928f,-0.0867588f},{-0.296599f,0.11123f,-0.0776884f}, +{-0.258429f,0.0883053f,-0.0726898f},{-0.234746f,0.0539964f,-0.0723075f},{-0.226799f,0.0135262f,-0.076421f}, +{-0.234523f,-0.0269439f,-0.0840859f},{-0.257485f,-0.0612528f,-0.0933808f},{-0.294094f,-0.0841773f,-0.102202f}, +{-0.332059f,-0.130853f,-0.0636959f},{-0.392836f,-0.120335f,-0.0686586f},{-0.446727f,-0.0903832f,-0.0732333f}, +{-0.484947f,-0.0455564f,-0.0763222f},{-0.5f,0.00732036f,-0.0756228f},{-0.488046f,0.0601971f,-0.0697015f}, +{-0.450962f,0.105024f,-0.0593253f},{-0.395754f,0.134976f,-0.0468043f},{-0.332196f,0.145494f,-0.0345443f}, +{-0.270886f,0.134976f,-0.02476f},{-0.221613f,0.105024f,-0.0196705f},{-0.191182f,0.0601971f,-0.0206756f}, +{-0.182158f,0.00732032f,-0.0273943f},{-0.194127f,-0.0455565f,-0.0377315f},{-0.225565f,-0.0903832f,-0.0486242f}, +{-0.273503f,-0.120335f,-0.0574568f},{-0.325519f,-0.149558f,-0.00603217f},{-0.386779f,-0.138174f,-0.0106294f}, +{-0.438138f,-0.105754f,-0.0150412f},{-0.472319f,-0.0572334f,-0.0176549f},{-0.483755f,3.0617e-008f,-0.0160775f}, +{-0.470309f,0.0572334f,-0.0097539f},{-0.434281f,0.105754f,-0.000563411f},{-0.381004f,0.138174f,0.00963235f}, +{-0.317226f,0.149558f,0.0205644f},{-0.251709f,0.138174f,0.031268f},{-0.195747f,0.105754f,0.0380775f}, +{-0.160203f,0.0572334f,0.0373458f},{-0.151073f,-4.4012e-008f,0.0293253f},{-0.16826f,-0.0572335f,0.0178688f}, +{-0.207633f,-0.105754f,0.00716789f},{-0.262789f,-0.138174f,-0.000655924f},{0.353951f,0.019129f,-0.142995f}, +{0.348688f,-0.0395605f,-0.13725f},{0.37644f,-0.0352039f,-0.142413f},{0.401426f,-0.0227972f,-0.146432f}, +{0.419356f,-0.00422938f,-0.148674f},{0.426804f,0.0176729f,-0.148449f},{0.422103f,0.0395752f,-0.145383f}, +{0.405972f,0.058143f,-0.139773f},{0.381449f,0.0705497f,-0.132638f},{0.353099f,0.0749063f,-0.125394f}, +{0.325786f,0.0705497f,-0.119389f},{0.303578f,0.058143f,-0.115579f},{0.289167f,0.0395752f,-0.114452f}, +{0.283899f,0.0176729f,-0.116049f},{0.288135f,-0.00422939f,-0.119964f},{0.301449f,-0.0227972f,-0.125397f}, +{0.322478f,-0.0352039f,-0.13141f},{0.340315f,-0.0922273f,-0.10959f},{0.389728f,-0.0841773f,-0.115854f}, +{0.434689f,-0.0612528f,-0.121228f},{0.467405f,-0.0269439f,-0.124791f},{0.481165f,0.0135262f,-0.124789f}, +{0.472339f,0.0539964f,-0.119913f},{0.442178f,0.0883053f,-0.110465f},{0.396778f,0.11123f,-0.0984804f}, +{0.345153f,0.11928f,-0.0867588f},{0.296598f,0.11123f,-0.0776884f},{0.258429f,0.0883053f,-0.0726898f}, +{0.234746f,0.0539964f,-0.0723075f},{0.226799f,0.0135262f,-0.076421f},{0.234523f,-0.0269439f,-0.0840859f}, +{0.257485f,-0.0612528f,-0.0933808f},{0.294094f,-0.0841773f,-0.102202f},{0.332059f,-0.130853f,-0.0636959f}, +{0.392836f,-0.120335f,-0.0686586f},{0.446727f,-0.0903832f,-0.0732333f},{0.484947f,-0.0455564f,-0.0763222f}, +{0.5f,0.00732036f,-0.0756228f},{0.488046f,0.0601971f,-0.0697015f},{0.450962f,0.105024f,-0.0593253f}, +{0.395754f,0.134976f,-0.0468043f},{0.332195f,0.145494f,-0.0345443f},{0.270886f,0.134976f,-0.02476f}, +{0.221613f,0.105024f,-0.0196705f},{0.191182f,0.0601971f,-0.0206756f},{0.182158f,0.00732032f,-0.0273943f}, +{0.194127f,-0.0455565f,-0.0377315f},{0.225565f,-0.0903832f,-0.0486242f},{0.273503f,-0.120335f,-0.0574568f}, +{0.325519f,-0.149558f,-0.00603217f},{0.386779f,-0.138174f,-0.0106294f},{0.438138f,-0.105754f,-0.0150412f}, +{0.472319f,-0.0572334f,-0.0176549f},{0.483755f,3.0617e-008f,-0.0160775f},{0.470309f,0.0572334f,-0.0097539f}, +{0.434281f,0.105754f,-0.000563411f},{0.381004f,0.138174f,0.00963235f},{0.317226f,0.149558f,0.0205644f}, +{0.251709f,0.138174f,0.031268f},{0.195747f,0.105754f,0.0380775f},{0.160203f,0.0572334f,0.0373458f}, +{0.151073f,-4.4012e-008f,0.0293253f},{0.16826f,-0.0572335f,0.0178688f},{0.207633f,-0.105754f,0.00716789f}, +{0.262789f,-0.138174f,-0.000655924f},{-0.278685f,-0.0184455f,0.142104f},{-0.276782f,0.0402249f,0.131836f}, +{-0.301275f,0.0358657f,0.125528f},{-0.32166f,0.023452f,0.120724f},{-0.335761f,0.00487346f,0.117933f}, +{-0.342327f,-0.0170414f,0.117442f},{-0.340777f,-0.0389562f,0.119308f},{-0.331139f,-0.0575348f,0.123149f}, +{-0.314161f,-0.0699485f,0.128161f},{-0.291535f,-0.0743076f,0.133481f},{-0.266105f,-0.0699485f,0.138543f}, +{-0.241813f,-0.0575347f,0.143068f},{-0.223134f,-0.0389562f,0.146692f},{-0.213979f,-0.0170414f,0.148674f}, +{-0.216437f,0.00487348f,0.148103f},{-0.22997f,0.023452f,0.144568f},{-0.251555f,0.0358657f,0.138674f}, +{-0.286428f,0.0927713f,0.106668f},{-0.329876f,0.0847167f,0.0969867f},{-0.364411f,0.0617791f,0.0897744f}, +{-0.387562f,0.0274504f,0.0847431f},{-0.397904f,-0.0130429f,0.0824777f},{-0.394525f,-0.0535363f,0.0840476f}, +{-0.377363f,-0.0878649f,0.089252f},{-0.347459f,-0.110803f,0.096282f},{-0.307253f,-0.118857f,0.103236f}, +{-0.261203f,-0.110803f,0.1096f},{-0.216225f,-0.0878649f,0.116136f},{-0.180992f,-0.0535363f,0.123303f}, +{-0.163781f,-0.0130429f,0.129625f},{-0.169441f,0.0274504f,0.131883f},{-0.196926f,0.0617791f,0.127674f}, +{-0.239231f,0.0847167f,0.117999f},{-0.30165f,0.131194f,0.068821f},{-0.357946f,0.12067f,0.0586132f}, +{-0.402983f,0.0907009f,0.0504722f},{-0.433219f,0.0458484f,0.0433801f},{-0.445856f,-0.00705878f,0.0384981f}, +{-0.439138f,-0.0599659f,0.0380252f},{-0.413572f,-0.104818f,0.0420112f},{-0.371905f,-0.134788f,0.0480844f}, +{-0.318578f,-0.145312f,0.0540119f},{-0.259936f,-0.134788f,0.0596851f},{-0.204491f,-0.104818f,0.0666849f}, +{-0.162112f,-0.0599659f,0.0760798f},{-0.142086f,-0.00705876f,0.0861686f},{-0.150271f,0.0458484f,0.0923222f}, +{-0.18592f,0.0907008f,0.0903491f},{-0.24061f,0.12067f,0.0808271f},{-0.317406f,0.149644f,0.0199458f}, +{-0.381217f,0.138253f,0.00904715f},{-0.434494f,0.105814f,-0.00103264f},{-0.470442f,0.0572662f,-0.0100155f}, +{-0.483755f,3.82713e-009f,-0.0160775f},{-0.472208f,-0.0572662f,-0.0173934f},{-0.437995f,-0.105814f,-0.0145555f}, +{-0.386668f,-0.138253f,-0.00998602f},{-0.325449f,-0.149644f,-0.00532854f},{-0.262724f,-0.138253f,-8.28803e-006f}, +{-0.207546f,-0.105814f,0.00765557f},{-0.168184f,-0.0572662f,0.0181296f},{-0.151073f,3.82713e-009f,0.0293253f}, +{-0.160302f,0.0572663f,0.0370842f},{-0.195903f,0.105814f,0.0376073f},{-0.251874f,0.138253f,0.030682f}, +{0.278685f,-0.0184455f,0.142104f},{0.276782f,0.0402249f,0.131836f},{0.301275f,0.0358657f,0.125528f}, +{0.32166f,0.023452f,0.120724f},{0.335761f,0.00487346f,0.117933f},{0.342327f,-0.0170414f,0.117442f}, +{0.340777f,-0.0389562f,0.119308f},{0.331139f,-0.0575348f,0.123149f},{0.314161f,-0.0699485f,0.128161f}, +{0.291535f,-0.0743076f,0.133481f},{0.266105f,-0.0699485f,0.138543f},{0.241813f,-0.0575347f,0.143068f}, +{0.223134f,-0.0389562f,0.146692f},{0.213978f,-0.0170414f,0.148674f},{0.216437f,0.00487348f,0.148103f}, +{0.229969f,0.023452f,0.144568f},{0.251555f,0.0358657f,0.138674f},{0.286428f,0.0927713f,0.106668f}, +{0.329876f,0.0847167f,0.0969866f},{0.364411f,0.0617791f,0.0897744f},{0.387562f,0.0274504f,0.084743f}, +{0.397904f,-0.0130429f,0.0824776f},{0.394525f,-0.0535363f,0.0840476f},{0.377363f,-0.0878649f,0.089252f}, +{0.347459f,-0.110803f,0.0962819f},{0.307253f,-0.118857f,0.103236f},{0.261203f,-0.110802f,0.1096f}, +{0.216225f,-0.0878649f,0.116136f},{0.180992f,-0.0535363f,0.123303f},{0.163781f,-0.0130429f,0.129625f}, +{0.169441f,0.0274504f,0.131883f},{0.196926f,0.0617791f,0.127674f},{0.239231f,0.0847167f,0.117999f}, +{0.30165f,0.131194f,0.068821f},{0.357946f,0.12067f,0.0586132f},{0.402983f,0.0907009f,0.0504722f}, +{0.433218f,0.0458484f,0.0433801f},{0.445856f,-0.00705878f,0.0384981f},{0.439138f,-0.0599659f,0.0380252f}, +{0.413572f,-0.104818f,0.0420112f},{0.371905f,-0.134788f,0.0480844f},{0.318578f,-0.145312f,0.0540119f}, +{0.259936f,-0.134788f,0.0596851f},{0.204491f,-0.104818f,0.0666849f},{0.162111f,-0.0599659f,0.0760797f}, +{0.142086f,-0.00705875f,0.0861686f},{0.150271f,0.0458484f,0.0923222f},{0.18592f,0.0907008f,0.0903491f}, +{0.24061f,0.12067f,0.0808271f},{0.317406f,0.149644f,0.0199458f},{0.381217f,0.138253f,0.00904715f}, +{0.434494f,0.105814f,-0.00103264f},{0.470442f,0.0572662f,-0.0100155f},{0.483755f,3.82713e-009f,-0.0160775f}, +{0.472208f,-0.0572662f,-0.0173934f},{0.437995f,-0.105814f,-0.0145555f},{0.386668f,-0.138253f,-0.00998602f}, +{0.325449f,-0.149644f,-0.00532854f},{0.262724f,-0.138253f,-8.28803e-006f},{0.207546f,-0.105814f,0.00765557f}, +{0.168184f,-0.0572662f,0.0181296f},{0.151073f,3.82713e-009f,0.0293253f},{0.160302f,0.0572663f,0.0370842f}, +{0.195903f,0.105814f,0.0376073f},{0.251874f,0.138253f,0.030682f} +} + +}; + +static GLfloat normals [NUM_LIDS][344][3] = { + +//lid 10 +{ +{0.14128f,0.678859f,-0.720549f},{0.141183f,0.470342f,-0.871117f},{0.0436259f,0.538027f,-0.841798f}, +{0.0679973f,0.716579f,-0.694184f},{-0.119311f,0.639257f,-0.759681f},{-0.00235058f,0.772214f,-0.635358f}, +{-0.255136f,0.759046f,-0.598962f},{-0.0474012f,0.827055f,-0.560118f},{-0.314039f,0.853304f,-0.416235f}, +{-0.0600024f,0.866637f,-0.495318f},{-0.292773f,0.915841f,-0.274809f},{-0.049072f,0.891986f,-0.449392f}, +{-0.212481f,0.95807f,-0.192231f},{-0.0178326f,0.908456f,-0.417599f},{-0.0920599f,0.982527f,-0.161757f}, +{0.0370726f,0.914058f,-0.403886f},{0.0521203f,0.982077f,-0.18113f},{0.108309f,0.902514f,-0.416819f}, +{0.201428f,0.946854f,-0.250789f},{0.179027f,0.872331f,-0.45496f},{0.331459f,0.872109f,-0.359945f}, +{0.23599f,0.827361f,-0.509688f},{0.418216f,0.768374f,-0.484455f},{0.271011f,0.775009f,-0.570888f}, +{0.450676f,0.660369f,-0.60067f},{0.28066f,0.726565f,-0.627163f},{0.433824f,0.571637f,-0.69644f}, +{0.269128f,0.691375f,-0.670501f},{0.379646f,0.512038f,-0.77051f},{0.242614f,0.670979f,-0.70066f}, +{0.296688f,0.482442f,-0.824152f},{0.20092f,0.665188f,-0.719135f},{0.111321f,0.0838976f,-0.990237f}, +{-0.029379f,0.177399f,-0.983701f},{-0.36291f,0.315654f,-0.876732f},{-0.636533f,0.537885f,-0.552726f}, +{-0.692297f,0.698565f,-0.180919f},{-0.609692f,0.790176f,0.0624294f},{-0.463645f,0.864983f,0.191929f}, +{-0.266794f,0.932768f,0.242413f},{-0.0294763f,0.976851f,0.211879f},{0.23276f,0.968844f,0.0846355f}, +{0.473096f,0.871906f,-0.126332f},{0.622688f,0.697126f,-0.355352f},{0.663374f,0.512375f,-0.54535f}, +{0.624155f,0.368076f,-0.689167f},{0.531327f,0.266649f,-0.804108f},{0.396108f,0.19478f,-0.897307f}, +{0.301284f,0.331535f,-0.894043f},{0.293635f,0.335978f,-0.894929f},{0.0262531f,-0.314782f,-0.948801f}, +{-0.145065f,-0.279238f,-0.949201f},{-0.600169f,-0.204803f,-0.773209f},{-0.94784f,0.0687263f,-0.311249f}, +{-0.931339f,0.326478f,0.161309f},{-0.775903f,0.471621f,0.418986f},{-0.595717f,0.581008f,0.554573f}, +{-0.378996f,0.685218f,0.621963f},{-0.1154f,0.782225f,0.612215f},{0.228237f,0.846899f,0.480282f}, +{0.608238f,0.775101f,0.17107f},{0.820052f,0.537806f,-0.19565f},{0.837034f,0.294875f,-0.460893f}, +{0.762505f,0.126921f,-0.634411f},{0.630338f,0.00231725f,-0.776317f},{0.436413f,-0.113109f,-0.892609f}, +{0.320267f,0.0147375f,-0.947213f},{0.348327f,-0.00790562f,-0.93734f},{-0.0276759f,-0.417145f,-0.908418f}, +{-0.141207f,-0.463983f,-0.874517f},{-0.573196f,-0.464631f,-0.674955f},{-0.943646f,-0.249543f,-0.217397f}, +{-0.961507f,0.0693531f,0.265886f},{-0.808033f,0.269491f,0.523886f},{-0.636184f,0.393708f,0.663524f}, +{-0.43775f,0.497816f,0.748702f},{-0.202579f,0.60248f,0.771997f},{0.122768f,0.708696f,0.694751f}, +{0.564416f,0.712283f,0.417239f},{0.875302f,0.482711f,-0.0289185f},{0.906907f,0.205191f,-0.367988f}, +{0.825239f,0.0254238f,-0.564212f},{0.68962f,-0.103674f,-0.716712f},{0.478163f,-0.232147f,-0.847035f}, +{0.283993f,-0.306895f,-0.908385f},{0.330854f,-0.348141f,-0.877117f},{-0.141183f,0.470342f,-0.871117f}, +{-0.14128f,0.678859f,-0.720549f},{-0.043626f,0.538027f,-0.841798f},{-0.0679977f,0.716579f,-0.694184f}, +{0.119311f,0.639257f,-0.759681f},{0.00235085f,0.772214f,-0.635358f},{0.255136f,0.759046f,-0.598961f}, +{0.0474012f,0.827055f,-0.560118f},{0.314038f,0.853304f,-0.416236f},{0.0600023f,0.866637f,-0.495318f}, +{0.292773f,0.915841f,-0.274809f},{0.0490718f,0.891986f,-0.449392f},{0.212481f,0.95807f,-0.192231f}, +{0.0178326f,0.908456f,-0.417599f},{0.0920599f,0.982527f,-0.161757f},{-0.0370725f,0.914058f,-0.403886f}, +{-0.0521203f,0.982077f,-0.18113f},{-0.108309f,0.902514f,-0.416819f},{-0.201428f,0.946854f,-0.250789f}, +{-0.179027f,0.872331f,-0.45496f},{-0.331459f,0.872109f,-0.359945f},{-0.235989f,0.827361f,-0.509688f}, +{-0.418216f,0.768374f,-0.484455f},{-0.271012f,0.775009f,-0.570889f},{-0.450676f,0.660369f,-0.60067f}, +{-0.28066f,0.726565f,-0.627163f},{-0.433824f,0.571637f,-0.696439f},{-0.269128f,0.691375f,-0.670501f}, +{-0.379647f,0.512038f,-0.77051f},{-0.242614f,0.67098f,-0.70066f},{-0.296688f,0.482442f,-0.824152f}, +{-0.20092f,0.665189f,-0.719135f},{-0.111321f,0.0838977f,-0.990237f},{0.029379f,0.177399f,-0.983701f}, +{0.36291f,0.315654f,-0.876732f},{0.636533f,0.537885f,-0.552726f},{0.692297f,0.698565f,-0.18092f}, +{0.609692f,0.790176f,0.0624292f},{0.463645f,0.864984f,0.191929f},{0.266794f,0.932768f,0.242413f}, +{0.0294763f,0.976851f,0.211879f},{-0.23276f,0.968844f,0.0846357f},{-0.473096f,0.871906f,-0.126332f}, +{-0.622688f,0.697126f,-0.355352f},{-0.663374f,0.512375f,-0.54535f},{-0.624155f,0.368076f,-0.689167f}, +{-0.531328f,0.266649f,-0.804108f},{-0.396108f,0.19478f,-0.897307f},{-0.301284f,0.331535f,-0.894043f}, +{-0.293635f,0.335978f,-0.894929f},{-0.0262532f,-0.314781f,-0.948801f},{0.145065f,-0.279238f,-0.949201f}, +{0.600169f,-0.204803f,-0.773209f},{0.94784f,0.0687262f,-0.311249f},{0.931339f,0.326478f,0.161309f}, +{0.775903f,0.471621f,0.418986f},{0.595716f,0.581008f,0.554573f},{0.378996f,0.685218f,0.621963f}, +{0.1154f,0.782225f,0.612215f},{-0.228237f,0.846899f,0.480282f},{-0.608238f,0.775101f,0.17107f}, +{-0.820052f,0.537806f,-0.19565f},{-0.837034f,0.294875f,-0.460893f},{-0.762505f,0.126921f,-0.634411f}, +{-0.630338f,0.00231719f,-0.776317f},{-0.436413f,-0.113109f,-0.892609f},{-0.320267f,0.0147371f,-0.947213f}, +{-0.348327f,-0.0079059f,-0.93734f},{0.027676f,-0.417145f,-0.908418f},{0.141207f,-0.463983f,-0.874517f}, +{0.573197f,-0.46463f,-0.674955f},{0.943646f,-0.249543f,-0.217397f},{0.961506f,0.0693526f,0.265886f}, +{0.808033f,0.269491f,0.523887f},{0.636184f,0.393708f,0.663524f},{0.43775f,0.497816f,0.748702f}, +{0.202579f,0.60248f,0.771997f},{-0.122768f,0.708696f,0.694751f},{-0.564416f,0.712283f,0.417239f}, +{-0.875302f,0.482711f,-0.0289183f},{-0.906908f,0.205191f,-0.367988f},{-0.825239f,0.0254234f,-0.564211f}, +{-0.68962f,-0.103674f,-0.716712f},{-0.478163f,-0.232147f,-0.847035f},{-0.283994f,-0.306895f,-0.908385f}, +{-0.330854f,-0.34814f,-0.877117f},{-0.101791f,0.89554f,0.433181f},{-0.10134f,0.982935f,0.153519f}, +{-0.198237f,0.947331f,0.251529f},{-0.164187f,0.866134f,0.472075f},{-0.328502f,0.861858f,0.386377f}, +{-0.22236f,0.81515f,0.534871f},{-0.407264f,0.738985f,0.53669f},{-0.261475f,0.745438f,0.61315f}, +{-0.423584f,0.613071f,0.666874f},{-0.268118f,0.677242f,0.685169f},{-0.392497f,0.519335f,0.759103f}, +{-0.24919f,0.634149f,0.731956f},{-0.338078f,0.471162f,0.814684f},{-0.22364f,0.617892f,0.753787f}, +{-0.270615f,0.460525f,0.84539f},{-0.194833f,0.616506f,0.762863f},{-0.183681f,0.479089f,0.858333f}, +{-0.149814f,0.630977f,0.761199f},{-0.0646262f,0.532383f,0.844033f},{-0.0833697f,0.671555f,0.736249f}, +{0.0858598f,0.628864f,0.77276f},{-0.0110594f,0.735267f,0.677687f},{0.225661f,0.746376f,0.626099f}, +{0.0402802f,0.800838f,0.597525f},{0.297614f,0.844032f,0.446135f},{0.0578062f,0.850871f,0.522185f}, +{0.287181f,0.911623f,0.294058f},{0.0462129f,0.884f,0.465197f},{0.212292f,0.957645f,0.194545f}, +{0.0112676f,0.903058f,0.429371f},{0.0946535f,0.984007f,0.1509f},{-0.0411956f,0.907323f,0.418412f}, +{-0.0768357f,0.963819f,-0.255243f},{-0.231191f,0.968651f,-0.0909206f},{-0.478011f,0.865024f,0.152442f}, +{-0.613761f,0.668302f,0.420321f},{-0.621661f,0.468695f,0.627584f},{-0.555999f,0.333983f,0.761131f}, +{-0.465216f,0.269773f,0.843087f},{-0.358395f,0.248428f,0.899909f},{-0.215945f,0.246155f,0.944868f}, +{-0.00160027f,0.275933f,0.961176f},{0.307449f,0.391756f,0.867181f},{0.57879f,0.576987f,0.57627f}, +{0.658558f,0.716536f,0.229952f},{0.597679f,0.801598f,-0.0148259f},{0.460401f,0.872625f,-0.162965f}, +{0.266984f,0.934523f,-0.235344f},{0.103983f,0.993374f,-0.048947f},{0.105796f,0.993123f,-0.0501399f}, +{-0.0197862f,0.790362f,-0.61232f},{-0.242279f,0.852503f,-0.463184f},{-0.632416f,0.763443f,-0.131166f}, +{-0.817379f,0.505342f,0.276625f},{-0.788174f,0.265216f,0.555375f},{-0.687043f,0.131972f,0.714531f}, +{-0.56985f,0.0751975f,0.818301f},{-0.421735f,0.0372272f,0.905954f},{-0.203784f,-0.0289837f,0.978587f}, +{0.124815f,-0.104369f,0.986675f},{0.577569f,-0.0689256f,0.813427f},{0.917184f,0.152931f,0.367949f}, +{0.924202f,0.373489f,-0.0797226f},{0.792991f,0.508953f,-0.334863f},{0.620113f,0.617825f,-0.483478f}, +{0.394039f,0.719565f,-0.571804f},{0.224221f,0.865854f,-0.447239f},{0.212217f,0.873358f,-0.438418f}, +{0.0136589f,0.693472f,-0.720354f},{-0.145306f,0.729801f,-0.668039f},{-0.601517f,0.69868f,-0.387329f}, +{-0.891335f,0.442876f,0.0968627f},{-0.872552f,0.175056f,0.45608f},{-0.763231f,0.0371769f,0.645055f}, +{-0.642575f,-0.0180662f,0.76601f},{-0.48495f,-0.0563598f,0.872724f},{-0.238167f,-0.142315f,0.960741f}, +{0.123424f,-0.279803f,0.952091f},{0.574493f,-0.347868f,0.740908f},{0.939284f,-0.188771f,0.28655f}, +{0.979786f,0.0995065f,-0.173547f},{0.850407f,0.302179f,-0.430692f},{0.68788f,0.4362f,-0.580131f}, +{0.478047f,0.550419f,-0.684478f},{0.3163f,0.607377f,-0.72873f},{0.292721f,0.633415f,-0.71631f}, +{0.10134f,0.982936f,0.153519f},{0.101791f,0.895541f,0.433181f},{0.198237f,0.947331f,0.251529f}, +{0.164188f,0.866134f,0.472075f},{0.328502f,0.861858f,0.386377f},{0.22236f,0.81515f,0.534871f}, +{0.407264f,0.738986f,0.53669f},{0.261475f,0.745438f,0.61315f},{0.423584f,0.613071f,0.666874f}, +{0.268118f,0.677242f,0.685168f},{0.392497f,0.519336f,0.759103f},{0.24919f,0.634149f,0.731956f}, +{0.338078f,0.471162f,0.814684f},{0.22364f,0.617892f,0.753787f},{0.270615f,0.460525f,0.84539f}, +{0.194833f,0.616506f,0.762863f},{0.183681f,0.479089f,0.858333f},{0.149814f,0.630977f,0.761199f}, +{0.0646263f,0.532382f,0.844033f},{0.0833696f,0.671555f,0.736249f},{-0.0858598f,0.628864f,0.77276f}, +{0.0110594f,0.735267f,0.677687f},{-0.225661f,0.746376f,0.626099f},{-0.0402801f,0.800838f,0.597525f}, +{-0.297614f,0.844032f,0.446135f},{-0.0578062f,0.850871f,0.522185f},{-0.287181f,0.911623f,0.294058f}, +{-0.0462129f,0.884f,0.465198f},{-0.212292f,0.957645f,0.194545f},{-0.0112675f,0.903058f,0.429371f}, +{-0.0946533f,0.984007f,0.1509f},{0.041196f,0.907323f,0.418412f},{0.0768359f,0.963819f,-0.255243f}, +{0.231191f,0.968651f,-0.0909207f},{0.478011f,0.865024f,0.152442f},{0.613761f,0.668302f,0.420321f}, +{0.621661f,0.468695f,0.627584f},{0.555999f,0.333984f,0.761131f},{0.465216f,0.269773f,0.843087f}, +{0.358395f,0.248428f,0.899909f},{0.215945f,0.246155f,0.944868f},{0.00160026f,0.275933f,0.961176f}, +{-0.307449f,0.391756f,0.867181f},{-0.57879f,0.576987f,0.57627f},{-0.658558f,0.716536f,0.229952f}, +{-0.597679f,0.801598f,-0.014826f},{-0.460401f,0.872625f,-0.162965f},{-0.266984f,0.934523f,-0.235344f}, +{-0.103983f,0.993374f,-0.0489471f},{-0.105795f,0.993123f,-0.0501397f},{0.0197862f,0.790362f,-0.61232f}, +{0.242279f,0.852503f,-0.463184f},{0.632416f,0.763443f,-0.131166f},{0.817379f,0.505342f,0.276625f}, +{0.788174f,0.265216f,0.555375f},{0.687043f,0.131972f,0.714531f},{0.56985f,0.0751974f,0.818301f}, +{0.421735f,0.0372273f,0.905954f},{0.203784f,-0.0289837f,0.978587f},{-0.124815f,-0.104369f,0.986675f}, +{-0.577568f,-0.0689258f,0.813427f},{-0.917184f,0.152931f,0.367949f},{-0.924202f,0.373489f,-0.0797229f}, +{-0.792991f,0.508952f,-0.334863f},{-0.620113f,0.617825f,-0.483478f},{-0.394039f,0.719565f,-0.571804f}, +{-0.224221f,0.865854f,-0.447239f},{-0.212217f,0.873358f,-0.438418f},{-0.0136587f,0.693472f,-0.720354f}, +{0.145306f,0.729801f,-0.668039f},{0.601517f,0.69868f,-0.387329f},{0.891335f,0.442876f,0.0968627f}, +{0.872552f,0.175056f,0.45608f},{0.763232f,0.0371764f,0.645055f},{0.642575f,-0.0180665f,0.76601f}, +{0.48495f,-0.0563598f,0.872724f},{0.238168f,-0.142315f,0.960741f},{-0.123424f,-0.279803f,0.952091f}, +{-0.574493f,-0.347868f,0.740909f},{-0.939284f,-0.188771f,0.28655f},{-0.979786f,0.0995065f,-0.173547f}, +{-0.850407f,0.302179f,-0.430692f},{-0.68788f,0.4362f,-0.580131f},{-0.478047f,0.550419f,-0.684478f}, +{-0.3163f,0.607377f,-0.72873f},{-0.292721f,0.633415f,-0.71631f} +}, + +//lid 9 +{ +{0.170541f,0.555718f,-0.813691f},{0.159436f,0.323043f,-0.932857f},{0.0675904f,0.387311f,-0.919468f}, +{0.101067f,0.59512f,-0.797256f},{-0.092135f,0.494669f,-0.864184f},{0.0336952f,0.658639f,-0.751704f}, +{-0.229373f,0.644702f,-0.72921f},{-0.0108063f,0.727029f,-0.686522f},{-0.288707f,0.777821f,-0.55825f}, +{-0.0233612f,0.779424f,-0.626062f},{-0.263651f,0.867508f,-0.421803f},{-0.012134f,0.812561f,-0.58275f}, +{-0.179349f,0.921161f,-0.345394f},{0.0175103f,0.832714f,-0.553427f},{-0.0584333f,0.945729f,-0.319658f}, +{0.0683393f,0.839411f,-0.539184f},{0.0823237f,0.938165f,-0.336258f},{0.135725f,0.826017f,-0.54706f}, +{0.225929f,0.891127f,-0.393507f},{0.204819f,0.79023f,-0.577569f},{0.350601f,0.801826f,-0.483894f}, +{0.261618f,0.736218f,-0.62413f},{0.433427f,0.683162f,-0.587734f},{0.296097f,0.673774f,-0.677019f}, +{0.463621f,0.562726f,-0.684394f},{0.304738f,0.617548f,-0.725099f},{0.446703f,0.464193f,-0.764841f}, +{0.293235f,0.577481f,-0.761924f},{0.394005f,0.394726f,-0.830031f},{0.267887f,0.553192f,-0.788806f}, +{0.313145f,0.353344f,-0.881526f},{0.227697f,0.543901f,-0.807667f},{0.103488f,-0.0756736f,-0.991748f}, +{-0.0254071f,0.00398757f,-0.999669f},{-0.349912f,0.130467f,-0.927653f},{-0.638155f,0.398665f,-0.658654f}, +{-0.703033f,0.642145f,-0.305605f},{-0.609007f,0.79022f,-0.068285f},{-0.449166f,0.892346f,0.04437f}, +{-0.241132f,0.967482f,0.0763763f},{0.00191164f,0.99924f,0.0389275f},{0.257914f,0.963174f,-0.0759974f}, +{0.484125f,0.836707f,-0.256014f},{0.624151f,0.639931f,-0.448246f},{0.662818f,0.438996f,-0.606593f}, +{0.625793f,0.279749f,-0.728096f},{0.534464f,0.160511f,-0.82981f},{0.397089f,0.067222f,-0.915315f}, +{0.305679f,0.19791f,-0.931339f},{0.308629f,0.196352f,-0.930696f},{0.0010928f,-0.457257f,-0.889334f}, +{-0.16025f,-0.427096f,-0.889892f},{-0.589829f,-0.355518f,-0.725057f},{-0.94399f,-0.0546976f,-0.325408f}, +{-0.95306f,0.282341f,0.109367f},{-0.796299f,0.492715f,0.350912f},{-0.606733f,0.645652f,0.46369f}, +{-0.372043f,0.777756f,0.506636f},{-0.086674f,0.876457f,0.473614f},{0.257346f,0.909395f,0.326763f}, +{0.607804f,0.79297f,0.0421005f},{0.806237f,0.525687f,-0.271357f},{0.829843f,0.255751f,-0.495936f}, +{0.762498f,0.0578159f,-0.644402f},{0.631312f,-0.0985713f,-0.769239f},{0.42819f,-0.241367f,-0.870859f}, +{0.306199f,-0.119536f,-0.944433f},{0.342896f,-0.146123f,-0.927939f},{-0.0528956f,-0.553316f,-0.83129f}, +{-0.163834f,-0.590968f,-0.789883f},{-0.573892f,-0.568852f,-0.589114f},{-0.928504f,-0.32689f,-0.176134f}, +{-0.965442f,0.0371366f,0.25796f},{-0.823071f,0.286223f,0.490542f},{-0.651703f,0.453096f,0.608265f}, +{-0.440343f,0.593015f,0.674115f},{-0.181412f,0.713338f,0.676933f},{0.152749f,0.80595f,0.571937f}, +{0.566841f,0.771152f,0.289856f},{0.85507f,0.507622f,-0.105715f},{0.89627f,0.194243f,-0.398711f}, +{0.82294f,-0.0268582f,-0.567493f},{0.68957f,-0.19749f,-0.696772f},{0.470535f,-0.360343f,-0.80545f}, +{0.266767f,-0.44909f,-0.852733f},{0.309762f,-0.481723f,-0.81975f},{-0.159438f,0.323043f,-0.932857f}, +{-0.170543f,0.555717f,-0.813691f},{-0.0675907f,0.387311f,-0.919468f},{-0.101065f,0.595122f,-0.797255f}, +{0.0921356f,0.49467f,-0.864183f},{-0.0336954f,0.658639f,-0.751704f},{0.229373f,0.644702f,-0.72921f}, +{0.0108064f,0.72703f,-0.686521f},{0.288706f,0.777821f,-0.558249f},{0.0233612f,0.779424f,-0.626062f}, +{0.263651f,0.867508f,-0.421803f},{0.012134f,0.812561f,-0.58275f},{0.179349f,0.921161f,-0.345394f}, +{-0.0175103f,0.832714f,-0.553427f},{0.0584332f,0.945729f,-0.319658f},{-0.0683394f,0.83941f,-0.539184f}, +{-0.0823238f,0.938165f,-0.336259f},{-0.135725f,0.826017f,-0.54706f},{-0.225929f,0.891127f,-0.393507f}, +{-0.204819f,0.79023f,-0.577569f},{-0.350601f,0.801826f,-0.483894f},{-0.261618f,0.736219f,-0.62413f}, +{-0.433427f,0.683162f,-0.587733f},{-0.296097f,0.673776f,-0.677018f},{-0.463621f,0.562727f,-0.684393f}, +{-0.304738f,0.617549f,-0.725099f},{-0.446703f,0.464193f,-0.764841f},{-0.293235f,0.577482f,-0.761924f}, +{-0.394004f,0.394726f,-0.830031f},{-0.267886f,0.553192f,-0.788807f},{-0.313145f,0.353344f,-0.881526f}, +{-0.227697f,0.543901f,-0.807667f},{-0.103488f,-0.0756737f,-0.991748f},{0.0254069f,0.00398732f,-0.999669f}, +{0.349912f,0.130467f,-0.927653f},{0.638155f,0.398665f,-0.658654f},{0.703033f,0.642145f,-0.305605f}, +{0.609007f,0.79022f,-0.0682853f},{0.449166f,0.892346f,0.0443696f},{0.241132f,0.967482f,0.0763763f}, +{-0.0019117f,0.99924f,0.0389275f},{-0.257914f,0.963174f,-0.0759975f},{-0.484125f,0.836707f,-0.256014f}, +{-0.624151f,0.639931f,-0.448246f},{-0.662818f,0.438997f,-0.606592f},{-0.625793f,0.279749f,-0.728096f}, +{-0.534464f,0.160511f,-0.82981f},{-0.397088f,0.0672218f,-0.915315f},{-0.305679f,0.19791f,-0.931339f}, +{-0.308629f,0.196352f,-0.930696f},{-0.00109355f,-0.457257f,-0.889334f},{0.16025f,-0.427096f,-0.889893f}, +{0.589829f,-0.355518f,-0.725057f},{0.94399f,-0.0546977f,-0.325408f},{0.95306f,0.282341f,0.109367f}, +{0.796299f,0.492715f,0.350912f},{0.606732f,0.645652f,0.46369f},{0.372042f,0.777756f,0.506636f}, +{0.0866739f,0.876457f,0.473614f},{-0.257346f,0.909395f,0.326763f},{-0.607805f,0.79297f,0.0421001f}, +{-0.806237f,0.525687f,-0.271357f},{-0.829843f,0.255751f,-0.495936f},{-0.762498f,0.0578159f,-0.644402f}, +{-0.631312f,-0.0985713f,-0.769239f},{-0.42819f,-0.241367f,-0.870859f},{-0.306198f,-0.119536f,-0.944433f}, +{-0.342896f,-0.146124f,-0.927939f},{0.0528946f,-0.553315f,-0.831291f},{0.163834f,-0.590967f,-0.789884f}, +{0.573892f,-0.568851f,-0.589114f},{0.928504f,-0.32689f,-0.176134f},{0.965442f,0.0371366f,0.257959f}, +{0.823071f,0.286223f,0.490542f},{0.651704f,0.453095f,0.608266f},{0.440343f,0.593015f,0.674116f}, +{0.181412f,0.713338f,0.676933f},{-0.152749f,0.80595f,0.571937f},{-0.566841f,0.771152f,0.289855f}, +{-0.85507f,0.507622f,-0.105715f},{-0.89627f,0.194243f,-0.398711f},{-0.82294f,-0.026858f,-0.567493f}, +{-0.68957f,-0.19749f,-0.696772f},{-0.470535f,-0.360343f,-0.80545f},{-0.266767f,-0.44909f,-0.852733f}, +{-0.309761f,-0.481723f,-0.819751f},{-0.11464f,0.854504f,0.506637f},{-0.114874f,0.966279f,0.230455f}, +{-0.210589f,0.921522f,0.326266f},{-0.174897f,0.822321f,0.541478f},{-0.337297f,0.824425f,0.454483f}, +{-0.232515f,0.765838f,0.599525f},{-0.411322f,0.691063f,0.594345f},{-0.270972f,0.689156f,0.67204f}, +{-0.424194f,0.559147f,0.71233f},{-0.276544f,0.616478f,0.73721f},{-0.393218f,0.46414f,0.793696f}, +{-0.258301f,0.57317f,0.777661f},{-0.342514f,0.416759f,0.842019f},{-0.23626f,0.558058f,0.795457f}, +{-0.280672f,0.405896f,0.869754f},{-0.211881f,0.556491f,0.803383f},{-0.200032f,0.422183f,0.884166f}, +{-0.170563f,0.570243f,0.803574f},{-0.0874915f,0.472863f,0.876781f},{-0.107036f,0.611665f,0.783842f}, +{0.0581153f,0.571308f,0.818676f},{-0.036373f,0.679483f,0.732789f},{0.197933f,0.699796f,0.686373f}, +{0.0148238f,0.751729f,0.659306f},{0.273319f,0.812315f,0.51521f},{0.03261f,0.807523f,0.588934f}, +{0.266335f,0.891038f,0.367583f},{0.0218574f,0.843568f,0.536578f},{0.194206f,0.942733f,0.271181f}, +{-0.0102549f,0.863372f,0.504464f},{0.078806f,0.970194f,0.229157f},{-0.0581579f,0.867363f,0.494266f}, +{-0.0914466f,0.978258f,-0.186143f},{-0.244068f,0.969568f,-0.0192072f},{-0.48466f,0.847182f,0.217684f}, +{-0.612357f,0.635581f,0.470165f},{-0.615785f,0.428517f,0.661198f},{-0.550439f,0.291383f,0.782377f}, +{-0.463909f,0.226398f,0.856465f},{-0.362763f,0.202436f,0.909628f},{-0.225975f,0.194219f,0.954575f}, +{-0.0183055f,0.216191f,0.976179f},{0.286186f,0.330996f,0.899188f},{0.562947f,0.537093f,0.628189f}, +{0.648012f,0.704916f,0.288398f},{0.587764f,0.807722f,0.0460294f},{0.450024f,0.887599f,-0.0982117f}, +{0.255516f,0.952228f,-0.167251f},{0.0906943f,0.995508f,0.0271607f},{0.0933649f,0.995308f,0.0253784f}, +{-0.0355931f,0.831294f,-0.554693f},{-0.254659f,0.881814f,-0.396929f},{-0.632414f,0.771627f,-0.0681498f}, +{-0.809248f,0.494993f,0.316386f},{-0.781041f,0.242949f,0.575283f},{-0.682456f,0.101224f,0.723883f}, +{-0.568426f,0.0370607f,0.821899f},{-0.423234f,-0.0101017f,0.905964f},{-0.206764f,-0.0865563f,0.974555f}, +{0.118895f,-0.168938f,0.978429f},{0.568569f,-0.131554f,0.812049f},{0.916179f,0.11474f,0.383994f}, +{0.927836f,0.368796f,-0.0557681f},{0.794685f,0.525236f,-0.304306f},{0.618087f,0.648299f,-0.444608f}, +{0.385917f,0.758658f,-0.524887f},{0.210919f,0.897809f,-0.38659f},{0.203377f,0.902055f,-0.380702f}, +{-0.00079517f,0.742438f,-0.669914f},{-0.157844f,0.77598f,-0.610689f},{-0.602335f,0.730097f,-0.322724f}, +{-0.880543f,0.453024f,0.13933f},{-0.864745f,0.167017f,0.473626f},{-0.759086f,0.014962f,0.650818f}, +{-0.640551f,-0.0522314f,0.766137f},{-0.484416f,-0.104116f,0.86862f},{-0.23751f,-0.203911f,0.949742f}, +{0.123602f,-0.346612f,0.929829f},{0.570647f,-0.405671f,0.713998f},{0.936051f,-0.22429f,0.271114f}, +{0.980428f,0.0927185f,-0.173679f},{0.852254f,0.314963f,-0.417685f},{0.688798f,0.464589f,-0.55652f}, +{0.47305f,0.592612f,-0.651946f},{0.30497f,0.65594f,-0.690461f},{0.282411f,0.679895f,-0.676747f}, +{0.114874f,0.966279f,0.230455f},{0.11464f,0.854504f,0.506637f},{0.210589f,0.921522f,0.326266f}, +{0.174897f,0.822321f,0.541478f},{0.337297f,0.824425f,0.454483f},{0.232515f,0.765837f,0.599525f}, +{0.411322f,0.691063f,0.594346f},{0.270972f,0.689156f,0.67204f},{0.424194f,0.559147f,0.71233f}, +{0.276544f,0.616478f,0.73721f},{0.393218f,0.46414f,0.793696f},{0.258301f,0.57317f,0.777661f}, +{0.342514f,0.416759f,0.842019f},{0.236261f,0.558058f,0.795457f},{0.280672f,0.405896f,0.869754f}, +{0.211882f,0.556491f,0.803383f},{0.200032f,0.422183f,0.884166f},{0.170563f,0.570243f,0.803574f}, +{0.0874913f,0.472863f,0.876781f},{0.107037f,0.611665f,0.783842f},{-0.0581153f,0.571308f,0.818676f}, +{0.036373f,0.679483f,0.732789f},{-0.197933f,0.699796f,0.686373f},{-0.0148238f,0.751729f,0.659306f}, +{-0.273319f,0.812315f,0.515211f},{-0.03261f,0.807523f,0.588934f},{-0.266335f,0.891038f,0.367583f}, +{-0.0218573f,0.843568f,0.536577f},{-0.194206f,0.942733f,0.271181f},{0.0102549f,0.863372f,0.504464f}, +{-0.078806f,0.970194f,0.229156f},{0.058158f,0.867363f,0.494266f},{0.0914466f,0.978258f,-0.186143f}, +{0.244068f,0.969568f,-0.0192073f},{0.48466f,0.847182f,0.217684f},{0.612358f,0.635581f,0.470165f}, +{0.615785f,0.428517f,0.661198f},{0.550439f,0.291383f,0.782377f},{0.463909f,0.226398f,0.856465f}, +{0.362763f,0.202436f,0.909628f},{0.225975f,0.19422f,0.954575f},{0.0183055f,0.216191f,0.976179f}, +{-0.286186f,0.330996f,0.899188f},{-0.562947f,0.537093f,0.628189f},{-0.648012f,0.704916f,0.288399f}, +{-0.587764f,0.807722f,0.0460294f},{-0.450024f,0.887599f,-0.0982118f},{-0.255516f,0.952228f,-0.167251f}, +{-0.0906943f,0.995508f,0.0271607f},{-0.093365f,0.995308f,0.0253784f},{0.0355932f,0.831294f,-0.554693f}, +{0.254659f,0.881814f,-0.396929f},{0.632414f,0.771627f,-0.0681498f},{0.809248f,0.494993f,0.316386f}, +{0.781041f,0.242949f,0.575283f},{0.682456f,0.101224f,0.723883f},{0.568426f,0.0370607f,0.821899f}, +{0.423234f,-0.0101017f,0.905964f},{0.206764f,-0.0865562f,0.974555f},{-0.118895f,-0.168938f,0.978429f}, +{-0.568569f,-0.131554f,0.812049f},{-0.916179f,0.11474f,0.383994f},{-0.927836f,0.368796f,-0.0557682f}, +{-0.794686f,0.525236f,-0.304306f},{-0.618087f,0.648299f,-0.444608f},{-0.385917f,0.758658f,-0.524887f}, +{-0.210919f,0.897809f,-0.38659f},{-0.203377f,0.902055f,-0.380702f},{0.000795401f,0.742438f,-0.669914f}, +{0.157843f,0.77598f,-0.610689f},{0.602334f,0.730098f,-0.322724f},{0.880543f,0.453024f,0.13933f}, +{0.864745f,0.167017f,0.473626f},{0.759086f,0.014962f,0.650819f},{0.640551f,-0.0522313f,0.766137f}, +{0.484416f,-0.104115f,0.86862f},{0.23751f,-0.203911f,0.949742f},{-0.123602f,-0.346612f,0.92983f}, +{-0.570647f,-0.405671f,0.713998f},{-0.936051f,-0.22429f,0.271113f},{-0.980428f,0.0927184f,-0.173679f}, +{-0.852254f,0.314963f,-0.417685f},{-0.688798f,0.46459f,-0.55652f},{-0.47305f,0.592612f,-0.651947f}, +{-0.30497f,0.65594f,-0.690461f},{-0.282411f,0.679895f,-0.676747f} +}, + +//lid 8 +{ +{0.183219f,0.515603f,-0.837009f},{0.168233f,0.276577f,-0.946151f},{0.0789236f,0.33771f,-0.937936f}, +{0.115197f,0.55477f,-0.82399f},{-0.0788423f,0.444272f,-0.892416f},{0.0493115f,0.619585f,-0.783379f}, +{-0.215796f,0.602783f,-0.76817f},{0.00509343f,0.691651f,-0.722214f},{-0.275265f,0.749386f,-0.602205f}, +{-0.00771255f,0.748436f,-0.663162f},{-0.249493f,0.848683f,-0.466358f},{0.00346534f,0.784383f,-0.620267f}, +{-0.165042f,0.90581f,-0.390218f},{0.0322572f,0.805564f,-0.591631f},{-0.0456364f,0.929892f,-0.364991f}, +{0.080755f,0.81256f,-0.577256f},{0.0928438f,0.920014f,-0.380728f},{0.146091f,0.799024f,-0.583282f}, +{0.23474f,0.86947f,-0.434649f},{0.215159f,0.761573f,-0.611321f},{0.358561f,0.775663f,-0.519404f}, +{0.272868f,0.704116f,-0.655564f},{0.440662f,0.653013f,-0.615948f},{0.307414f,0.638509f,-0.705551f}, +{0.470318f,0.530909f,-0.704937f},{0.315767f,0.581186f,-0.75001f},{0.453707f,0.431995f,-0.779443f}, +{0.304783f,0.540878f,-0.783938f},{0.401809f,0.360715f,-0.841685f},{0.280105f,0.515498f,-0.809816f}, +{0.321717f,0.314999f,-0.892902f},{0.23998f,0.50473f,-0.829251f},{0.10177f,-0.124175f,-0.987028f}, +{-0.0213474f,-0.0510002f,-0.99847f},{-0.339633f,0.0669536f,-0.938172f},{-0.632029f,0.346039f,-0.693395f}, +{-0.701873f,0.620211f,-0.350303f},{-0.603308f,0.789452f,-0.113069f},{-0.43881f,0.898572f,-0.00368722f}, +{-0.229713f,0.972972f,0.023611f},{0.0125592f,0.999809f,-0.0149582f},{0.266795f,0.955612f,-0.125002f}, +{0.490219f,0.820159f,-0.294998f},{0.62726f,0.617606f,-0.474456f},{0.664848f,0.416024f,-0.620404f}, +{0.629087f,0.257234f,-0.73354f},{0.538512f,0.134383f,-0.831833f},{0.399787f,0.0328209f,-0.916021f}, +{0.30886f,0.159902f,-0.93757f},{0.317338f,0.155631f,-0.935455f},{-0.00782778f,-0.499674f,-0.866178f}, +{-0.163187f,-0.471999f,-0.866364f},{-0.57959f,-0.404497f,-0.70743f},{-0.937032f,-0.10026f,-0.334542f}, +{-0.960051f,0.266588f,0.0850474f},{-0.800902f,0.504502f,0.322543f},{-0.605592f,0.671753f,0.426623f}, +{-0.365098f,0.809509f,0.459781f},{-0.0727785f,0.904433f,0.420363f},{0.27279f,0.922361f,0.27356f}, +{0.614661f,0.788789f,0.00173532f},{0.8065f,0.514327f,-0.291591f},{0.830963f,0.243768f,-0.500077f}, +{0.767385f,0.0433333f,-0.639721f},{0.636351f,-0.121862f,-0.761714f},{0.42732f,-0.276056f,-0.860925f}, +{0.301003f,-0.155958f,-0.940784f},{0.343504f,-0.185537f,-0.920642f},{-0.0626903f,-0.592958f,-0.802789f}, +{-0.170517f,-0.628368f,-0.758997f},{-0.568461f,-0.601158f,-0.56166f},{-0.918823f,-0.356076f,-0.170216f}, +{-0.968663f,0.0240955f,0.247208f},{-0.829274f,0.296802f,0.473512f},{-0.65542f,0.48147f,0.581903f}, +{-0.438276f,0.633814f,0.637334f},{-0.16793f,0.756496f,0.632071f},{0.173844f,0.835371f,0.521472f}, +{0.578754f,0.777582f,0.245785f},{0.854862f,0.503223f,-0.126398f},{0.896856f,0.188576f,-0.40011f}, +{0.828344f,-0.0368846f,-0.559005f},{0.696091f,-0.218808f,-0.683798f},{0.470358f,-0.395467f,-0.788904f}, +{0.259101f,-0.490013f,-0.832318f},{0.302875f,-0.521613f,-0.797613f},{-0.168233f,0.276577f,-0.946152f}, +{-0.183218f,0.515603f,-0.837009f},{-0.0789234f,0.33771f,-0.937936f},{-0.115196f,0.55477f,-0.82399f}, +{0.0788423f,0.444272f,-0.892416f},{-0.0493115f,0.619585f,-0.783379f},{0.215796f,0.602783f,-0.76817f}, +{-0.00509343f,0.691651f,-0.722214f},{0.275265f,0.749386f,-0.602205f},{0.00771252f,0.748436f,-0.663162f}, +{0.249494f,0.848683f,-0.466358f},{-0.00346547f,0.784383f,-0.620267f},{0.165042f,0.90581f,-0.390218f}, +{-0.032257f,0.805564f,-0.591631f},{0.0456365f,0.929892f,-0.364991f},{-0.080755f,0.81256f,-0.577256f}, +{-0.0928437f,0.920014f,-0.380728f},{-0.146091f,0.799024f,-0.583282f},{-0.23474f,0.86947f,-0.434649f}, +{-0.215159f,0.761573f,-0.611321f},{-0.358561f,0.775663f,-0.519404f},{-0.272868f,0.704116f,-0.655563f}, +{-0.440662f,0.653013f,-0.615948f},{-0.307414f,0.638509f,-0.705551f},{-0.470318f,0.530909f,-0.704937f}, +{-0.315767f,0.581186f,-0.75001f},{-0.453707f,0.431995f,-0.779442f},{-0.304784f,0.540878f,-0.783938f}, +{-0.401809f,0.360715f,-0.841685f},{-0.280105f,0.515498f,-0.809816f},{-0.321718f,0.314999f,-0.892902f}, +{-0.23998f,0.50473f,-0.829251f},{-0.10177f,-0.124175f,-0.987028f},{0.0213474f,-0.0510003f,-0.99847f}, +{0.339633f,0.0669536f,-0.938172f},{0.632029f,0.346039f,-0.693395f},{0.701873f,0.620211f,-0.350303f}, +{0.603308f,0.789452f,-0.11307f},{0.43881f,0.898572f,-0.0036873f},{0.229713f,0.972972f,0.023611f}, +{-0.0125591f,0.999809f,-0.0149581f},{-0.266795f,0.955612f,-0.125002f},{-0.490219f,0.820159f,-0.294999f}, +{-0.62726f,0.617606f,-0.474456f},{-0.664848f,0.416024f,-0.620404f},{-0.629087f,0.257234f,-0.73354f}, +{-0.538512f,0.134383f,-0.831833f},{-0.399786f,0.0328209f,-0.916021f},{-0.30886f,0.159902f,-0.93757f}, +{-0.317339f,0.155631f,-0.935454f},{0.00782779f,-0.499674f,-0.866178f},{0.163186f,-0.471999f,-0.866364f}, +{0.57959f,-0.404497f,-0.707431f},{0.937032f,-0.10026f,-0.334542f},{0.960051f,0.266587f,0.0850475f}, +{0.800902f,0.504502f,0.322543f},{0.605592f,0.671753f,0.426623f},{0.365098f,0.809509f,0.459781f}, +{0.0727785f,0.904433f,0.420363f},{-0.27279f,0.922361f,0.27356f},{-0.614661f,0.788789f,0.00173559f}, +{-0.8065f,0.514327f,-0.291591f},{-0.830963f,0.243767f,-0.500077f},{-0.767385f,0.0433335f,-0.639721f}, +{-0.636351f,-0.121862f,-0.761713f},{-0.42732f,-0.276056f,-0.860925f},{-0.301003f,-0.155958f,-0.940784f}, +{-0.343504f,-0.185537f,-0.920642f},{0.0626903f,-0.592958f,-0.802789f},{0.170517f,-0.628368f,-0.758997f}, +{0.568461f,-0.601158f,-0.56166f},{0.918823f,-0.356076f,-0.170216f},{0.968663f,0.0240956f,0.247208f}, +{0.829274f,0.296802f,0.473512f},{0.65542f,0.48147f,0.581904f},{0.438276f,0.633814f,0.637334f}, +{0.16793f,0.756496f,0.632071f},{-0.173844f,0.835371f,0.521472f},{-0.578754f,0.777582f,0.245785f}, +{-0.854863f,0.503223f,-0.126398f},{-0.896856f,0.188576f,-0.40011f},{-0.828343f,-0.0368841f,-0.559005f}, +{-0.696091f,-0.218808f,-0.683798f},{-0.470358f,-0.395467f,-0.788904f},{-0.259101f,-0.490013f,-0.832318f}, +{-0.302875f,-0.521613f,-0.797613f},{-0.136628f,0.763066f,0.631715f},{-0.139911f,0.91351f,0.382f}, +{-0.230294f,0.853362f,0.467694f},{-0.193796f,0.727236f,0.658461f},{-0.346303f,0.741592f,0.574556f}, +{-0.248184f,0.665563f,0.703868f},{-0.410724f,0.601945f,0.684812f},{-0.282328f,0.587202f,0.758607f}, +{-0.420812f,0.474512f,0.773147f},{-0.286105f,0.519799f,0.804955f},{-0.394192f,0.388462f,0.832893f}, +{-0.271441f,0.48297f,0.832502f},{-0.348961f,0.345726f,0.871034f},{-0.253473f,0.469114f,0.845981f}, +{-0.288397f,0.331318f,0.898363f},{-0.227904f,0.465937f,0.854963f},{-0.205609f,0.337301f,0.918669f}, +{-0.183354f,0.479034f,0.858434f},{-0.0927383f,0.374538f,0.922562f},{-0.122056f,0.518721f,0.846186f}, +{0.0476515f,0.463623f,0.88475f},{-0.0593579f,0.58286f,0.810401f},{0.180078f,0.598609f,0.780538f}, +{-0.0151815f,0.654338f,0.75605f},{0.249804f,0.732175f,0.633654f},{-0.000536045f,0.713225f,0.700935f}, +{0.238979f,0.831312f,0.501806f},{-0.0116876f,0.752305f,0.658711f},{0.164828f,0.894338f,0.415923f}, +{-0.0414348f,0.773339f,0.632638f},{0.0495883f,0.923567f,0.380217f},{-0.0846693f,0.777271f,0.623443f}, +{-0.119615f,0.992173f,-0.0358517f},{-0.26578f,0.955061f,0.131223f},{-0.488134f,0.802358f,0.343433f}, +{-0.600233f,0.576302f,0.554613f},{-0.602773f,0.370741f,0.706552f},{-0.548009f,0.239525f,0.801444f}, +{-0.470781f,0.173944f,0.864933f},{-0.366503f,0.136982f,0.920278f},{-0.215389f,0.104768f,0.970892f}, +{0.00346038f,0.0981433f,0.995166f},{0.301978f,0.191861f,0.933809f},{0.572361f,0.418812f,0.704982f}, +{0.653782f,0.645133f,0.39544f},{0.583085f,0.795283f,0.165941f},{0.434465f,0.90003f,0.0344497f}, +{0.232282f,0.972393f,-0.0223025f},{0.0629826f,0.980353f,0.186928f},{0.0646f,0.980455f,0.185836f}, +{-0.0658798f,0.902312f,-0.426021f},{-0.275788f,0.926084f,-0.257505f},{-0.625976f,0.778258f,0.0496934f}, +{-0.790611f,0.479302f,0.381055f},{-0.772137f,0.214951f,0.597997f},{-0.688996f,0.0606832f,0.72222f}, +{-0.585024f,-0.0246281f,0.810642f},{-0.429108f,-0.106703f,0.896929f},{-0.181204f,-0.217596f,0.959071f}, +{0.160618f,-0.312677f,0.936181f},{0.582391f,-0.272557f,0.765855f},{0.918424f,-0.000439342f,0.395597f}, +{0.945892f,0.324477f,-0.00184092f},{0.807139f,0.541361f,-0.235489f},{0.61697f,0.701103f,-0.357495f}, +{0.370398f,0.829668f,-0.417679f},{0.185885f,0.94934f,-0.253379f},{0.183324f,0.950425f,-0.251168f}, +{-0.0297826f,0.831883f,-0.554151f},{-0.180719f,0.855135f,-0.485886f},{-0.598032f,0.776013f,-0.200401f}, +{-0.857929f,0.470815f,0.20565f},{-0.856175f,0.160369f,0.491168f},{-0.765669f,-0.0168231f,0.643014f}, +{-0.656838f,-0.115393f,0.74515f},{-0.492626f,-0.214217f,0.843463f},{-0.212263f,-0.358894f,0.908922f}, +{0.169484f,-0.501572f,0.848352f},{0.583877f,-0.521011f,0.622604f},{0.92203f,-0.305082f,0.238299f}, +{0.986224f,0.0586274f,-0.154675f},{0.863745f,0.332515f,-0.378654f},{0.693047f,0.521436f,-0.497785f}, +{0.463554f,0.677117f,-0.571516f},{0.283588f,0.75075f,-0.596617f},{0.2633f,0.769891f,-0.581327f}, +{0.13991f,0.91351f,0.382f},{0.136627f,0.763066f,0.631715f},{0.230294f,0.853362f,0.467694f}, +{0.193795f,0.727236f,0.658461f},{0.346303f,0.741592f,0.574556f},{0.248184f,0.665563f,0.703868f}, +{0.410724f,0.601945f,0.684812f},{0.282327f,0.587202f,0.758607f},{0.420812f,0.474512f,0.773147f}, +{0.286105f,0.519799f,0.804955f},{0.394192f,0.388462f,0.832892f},{0.271441f,0.482971f,0.832501f}, +{0.348961f,0.345727f,0.871034f},{0.253473f,0.469115f,0.845981f},{0.288397f,0.331318f,0.898363f}, +{0.227904f,0.465937f,0.854963f},{0.205609f,0.337301f,0.918669f},{0.183354f,0.479033f,0.858434f}, +{0.0927382f,0.374539f,0.922562f},{0.122055f,0.518722f,0.846186f},{-0.0476519f,0.463624f,0.88475f}, +{0.0593579f,0.58286f,0.810401f},{-0.180078f,0.598609f,0.780538f},{0.0151815f,0.654338f,0.75605f}, +{-0.249804f,0.732175f,0.633655f},{0.000536048f,0.713225f,0.700935f},{-0.238979f,0.831312f,0.501806f}, +{0.0116876f,0.752305f,0.658711f},{-0.164827f,0.894338f,0.415923f},{0.0414349f,0.773338f,0.632638f}, +{-0.0495883f,0.923567f,0.380217f},{0.0846698f,0.777271f,0.623443f},{0.119615f,0.992173f,-0.035852f}, +{0.26578f,0.955061f,0.131222f},{0.488134f,0.802358f,0.343433f},{0.600233f,0.576303f,0.554613f}, +{0.602773f,0.370741f,0.706552f},{0.548009f,0.239525f,0.801444f},{0.470781f,0.173944f,0.864933f}, +{0.366503f,0.136982f,0.920278f},{0.215389f,0.104768f,0.970892f},{-0.00346019f,0.0981433f,0.995166f}, +{-0.301978f,0.191862f,0.933809f},{-0.572361f,0.418812f,0.704982f},{-0.653782f,0.645133f,0.39544f}, +{-0.583085f,0.795283f,0.165942f},{-0.434465f,0.90003f,0.0344495f},{-0.232282f,0.972393f,-0.0223026f}, +{-0.0629828f,0.980353f,0.186927f},{-0.0646003f,0.980455f,0.185836f},{0.0658797f,0.902312f,-0.426021f}, +{0.275788f,0.926084f,-0.257506f},{0.625976f,0.778258f,0.0496934f},{0.790612f,0.479302f,0.381054f}, +{0.772137f,0.214951f,0.597996f},{0.688996f,0.0606832f,0.72222f},{0.585024f,-0.0246278f,0.810642f}, +{0.429108f,-0.106702f,0.896929f},{0.181204f,-0.217596f,0.959071f},{-0.160618f,-0.312677f,0.936181f}, +{-0.582391f,-0.272557f,0.765855f},{-0.918424f,-0.000439169f,0.395597f},{-0.945892f,0.324477f,-0.00184075f}, +{-0.807139f,0.541361f,-0.235489f},{-0.61697f,0.701103f,-0.357495f},{-0.370398f,0.829668f,-0.41768f}, +{-0.185885f,0.94934f,-0.253379f},{-0.183324f,0.950425f,-0.251168f},{0.0297826f,0.831883f,-0.554151f}, +{0.180719f,0.855135f,-0.485886f},{0.598032f,0.776013f,-0.200402f},{0.857929f,0.470815f,0.20565f}, +{0.856175f,0.16037f,0.491167f},{0.765669f,-0.0168233f,0.643014f},{0.656839f,-0.115393f,0.745149f}, +{0.492626f,-0.214217f,0.843463f},{0.212263f,-0.358894f,0.908922f},{-0.169484f,-0.501571f,0.848352f}, +{-0.583876f,-0.521011f,0.622604f},{-0.92203f,-0.305082f,0.238299f},{-0.986224f,0.0586269f,-0.154675f}, +{-0.863745f,0.332514f,-0.378654f},{-0.693047f,0.521436f,-0.497785f},{-0.463554f,0.677117f,-0.571516f}, +{-0.283588f,0.75075f,-0.596617f},{-0.2633f,0.769891f,-0.581327f} +}, + +//lid 6 +{ +{0.18588f,0.467699f,-0.864122f},{0.164569f,0.222549f,-0.960931f},{0.0776709f,0.28004f,-0.956841f}, +{0.119855f,0.505696f,-0.854345f},{-0.077628f,0.383854f,-0.920125f},{0.0565274f,0.570373f,-0.819439f}, +{-0.212757f,0.548379f,-0.808712f},{0.0137009f,0.645146f,-0.763937f},{-0.270868f,0.708583f,-0.651568f}, +{0.00144722f,0.706519f,-0.707693f},{-0.242624f,0.819741f,-0.518804f},{0.0133808f,0.74627f,-0.665509f}, +{-0.155487f,0.88262f,-0.443629f},{0.0427661f,0.769529f,-0.637179f},{-0.0347823f,0.907459f,-0.418699f}, +{0.0908849f,0.777336f,-0.622486f},{0.103208f,0.895443f,-0.433047f},{0.155223f,0.763664f,-0.626677f}, +{0.243236f,0.841282f,-0.482785f},{0.223441f,0.724979f,-0.651521f},{0.36442f,0.743646f,-0.560525f}, +{0.280273f,0.665542f,-0.691738f},{0.443866f,0.618457f,-0.648454f},{0.313675f,0.598365f,-0.73727f}, +{0.471772f,0.49537f,-0.729411f},{0.321239f,0.540099f,-0.777881f},{0.454403f,0.395144f,-0.79836f}, +{0.309857f,0.498331f,-0.809725f},{0.401749f,0.320453f,-0.85785f},{0.284175f,0.47071f,-0.83527f}, +{0.320433f,0.269367f,-0.908165f},{0.242663f,0.45807f,-0.855153f},{0.0869607f,-0.178282f,-0.980129f}, +{-0.0317048f,-0.109602f,-0.99347f},{-0.342502f,0.000655748f,-0.939517f},{-0.633753f,0.283601f,-0.719671f}, +{-0.708418f,0.584765f,-0.395213f},{-0.606138f,0.778497f,-0.162908f},{-0.434607f,0.898751f,-0.0579898f}, +{-0.220487f,0.974733f,-0.0357786f},{0.0234381f,0.996835f,-0.0759604f},{0.27529f,0.944113f,-0.181291f}, +{0.493509f,0.800437f,-0.340221f},{0.626126f,0.593557f,-0.505625f},{0.662475f,0.390644f,-0.639159f}, +{0.627328f,0.22911f,-0.744291f},{0.535737f,0.0995679f,-0.838494f},{0.392946f,-0.0108421f,-0.919498f}, +{0.300356f,0.11447f,-0.946933f},{0.315126f,0.107501f,-0.942942f},{-0.0254372f,-0.545227f,-0.837903f}, +{-0.178221f,-0.515778f,-0.83798f},{-0.581813f,-0.444985f,-0.680795f},{-0.932889f,-0.139635f,-0.331996f}, +{-0.967129f,0.24585f,0.0649586f},{-0.809593f,0.507989f,0.294119f},{-0.609129f,0.691194f,0.38886f}, +{-0.361291f,0.836961f,0.411052f},{-0.0620213f,0.929727f,0.362989f},{0.282972f,0.934857f,0.214405f}, +{0.615301f,0.786983f,-0.0454198f},{0.801931f,0.50525f,-0.318792f},{0.828411f,0.229084f,-0.511132f}, +{0.767789f,0.0192651f,-0.640413f},{0.635529f,-0.158819f,-0.755566f},{0.419196f,-0.323113f,-0.848453f}, +{0.287092f,-0.204083f,-0.93591f},{0.332725f,-0.234094f,-0.913506f},{-0.0777156f,-0.636227f,-0.767578f}, +{-0.185381f,-0.665275f,-0.723217f},{-0.574317f,-0.624742f,-0.529015f},{-0.915037f,-0.372036f,-0.155874f}, +{-0.970312f,0.0155884f,0.241355f},{-0.835734f,0.302763f,0.458131f},{-0.661248f,0.502507f,0.55699f}, +{-0.4389f,0.667767f,0.60121f},{-0.159616f,0.794844f,0.585445f},{0.18591f,0.864414f,0.467146f}, +{0.581437f,0.789583f,0.196187f},{0.849235f,0.504775f,-0.154925f},{0.893859f,0.18134f,-0.410039f}, +{0.828751f,-0.0575603f,-0.556649f},{0.696171f,-0.255841f,-0.67074f},{0.464342f,-0.444749f,-0.765888f}, +{0.24798f,-0.5422f,-0.802823f},{0.288333f,-0.569201f,-0.769983f},{-0.164569f,0.222549f,-0.960931f}, +{-0.18588f,0.467699f,-0.864122f},{-0.0776708f,0.28004f,-0.956841f},{-0.119855f,0.505696f,-0.854346f}, +{0.0776279f,0.383854f,-0.920125f},{-0.0565274f,0.570373f,-0.819439f},{0.212757f,0.548378f,-0.808713f}, +{-0.0137025f,0.645143f,-0.763939f},{0.270868f,0.708582f,-0.651568f},{-0.00144792f,0.706521f,-0.707691f}, +{0.242623f,0.819742f,-0.518803f},{-0.0133807f,0.74627f,-0.665509f},{0.155487f,0.88262f,-0.443629f}, +{-0.042766f,0.769529f,-0.637179f},{0.0347824f,0.907459f,-0.418699f},{-0.0908848f,0.777336f,-0.622486f}, +{-0.103208f,0.895443f,-0.433047f},{-0.155223f,0.763664f,-0.626676f},{-0.243236f,0.841282f,-0.482785f}, +{-0.223441f,0.724979f,-0.651521f},{-0.36442f,0.743646f,-0.560525f},{-0.280274f,0.665541f,-0.691738f}, +{-0.443867f,0.618457f,-0.648455f},{-0.313675f,0.598365f,-0.73727f},{-0.471772f,0.49537f,-0.729411f}, +{-0.32124f,0.540099f,-0.777881f},{-0.454403f,0.395144f,-0.79836f},{-0.309857f,0.49833f,-0.809726f}, +{-0.401749f,0.320453f,-0.85785f},{-0.284176f,0.47071f,-0.83527f},{-0.320433f,0.269367f,-0.908165f}, +{-0.242663f,0.45807f,-0.855153f},{-0.0869606f,-0.178282f,-0.980129f},{0.031705f,-0.109602f,-0.99347f}, +{0.342502f,0.000655692f,-0.939517f},{0.633753f,0.283601f,-0.719671f},{0.708419f,0.584765f,-0.395213f}, +{0.606138f,0.778498f,-0.162908f},{0.434606f,0.898752f,-0.0579898f},{0.220487f,0.974733f,-0.0357785f}, +{-0.0234378f,0.996835f,-0.0759606f},{-0.275291f,0.944112f,-0.181292f},{-0.493509f,0.800437f,-0.340221f}, +{-0.626126f,0.593557f,-0.505625f},{-0.662475f,0.390645f,-0.639158f},{-0.627328f,0.22911f,-0.744291f}, +{-0.535737f,0.099568f,-0.838494f},{-0.392946f,-0.0108418f,-0.919498f},{-0.300357f,0.11447f,-0.946933f}, +{-0.315126f,0.107502f,-0.942942f},{0.0254373f,-0.545227f,-0.837903f},{0.178221f,-0.515778f,-0.83798f}, +{0.581813f,-0.444985f,-0.680795f},{0.932888f,-0.139635f,-0.331996f},{0.967129f,0.24585f,0.0649582f}, +{0.809593f,0.507989f,0.294119f},{0.609129f,0.691194f,0.38886f},{0.361291f,0.836962f,0.411052f}, +{0.0620221f,0.929727f,0.36299f},{-0.282972f,0.934857f,0.214405f},{-0.615301f,0.786982f,-0.0454205f}, +{-0.801931f,0.50525f,-0.318792f},{-0.828411f,0.229084f,-0.511132f},{-0.767789f,0.0192654f,-0.640413f}, +{-0.635529f,-0.158819f,-0.755566f},{-0.419196f,-0.323113f,-0.848453f},{-0.287092f,-0.204083f,-0.935911f}, +{-0.332725f,-0.234094f,-0.913506f},{0.0777156f,-0.636227f,-0.767578f},{0.185381f,-0.665275f,-0.723217f}, +{0.574317f,-0.624742f,-0.529015f},{0.915037f,-0.372037f,-0.155874f},{0.970312f,0.0155882f,0.241355f}, +{0.835734f,0.302764f,0.45813f},{0.661248f,0.502507f,0.55699f},{0.4389f,0.667767f,0.60121f}, +{0.159616f,0.794844f,0.585445f},{-0.185909f,0.864414f,0.467147f},{-0.581437f,0.789583f,0.196187f}, +{-0.849235f,0.504775f,-0.154925f},{-0.893859f,0.18134f,-0.410039f},{-0.828751f,-0.0575601f,-0.556649f}, +{-0.696171f,-0.255841f,-0.67074f},{-0.464342f,-0.44475f,-0.765888f},{-0.24798f,-0.5422f,-0.802823f}, +{-0.288333f,-0.569202f,-0.769983f},{-0.164231f,0.647208f,0.744413f},{-0.168401f,0.825722f,0.538354f}, +{-0.252556f,0.752327f,0.608457f},{-0.218923f,0.609165f,0.762228f},{-0.356681f,0.632058f,0.687955f}, +{-0.270207f,0.544858f,0.7938f},{-0.412454f,0.495243f,0.764602f},{-0.299424f,0.470627f,0.829973f}, +{-0.422015f,0.380859f,0.822709f},{-0.301851f,0.415248f,0.858169f},{-0.401892f,0.308829f,0.862037f}, +{-0.292041f,0.388966f,0.873738f},{-0.363526f,0.271835f,0.891041f},{-0.278694f,0.377274f,0.883173f}, +{-0.304694f,0.252246f,0.918441f},{-0.251401f,0.371711f,0.89366f},{-0.21953f,0.245247f,0.944278f}, +{-0.203426f,0.38298f,0.901079f},{-0.106344f,0.266344f,0.957994f},{-0.14537f,0.419089f,0.896232f}, +{0.027634f,0.342629f,0.939064f},{-0.0921043f,0.475795f,0.87472f},{0.150223f,0.478986f,0.864873f}, +{-0.0560432f,0.540989f,0.83916f},{0.212316f,0.629316f,0.747585f},{-0.0446826f,0.598166f,0.800126f}, +{0.197281f,0.745623f,0.636495f},{-0.0554218f,0.637032f,0.768843f},{0.122751f,0.816344f,0.56437f}, +{-0.0810959f,0.657415f,0.749152f},{0.0109646f,0.843844f,0.536477f},{-0.11762f,0.661328f,0.740818f}, +{-0.150429f,0.979508f,0.133919f},{-0.290601f,0.909681f,0.2967f},{-0.492893f,0.728683f,0.475477f}, +{-0.588316f,0.49644f,0.638304f},{-0.591448f,0.302121f,0.747604f},{-0.550134f,0.182488f,0.814893f}, +{-0.484732f,0.115851f,0.866957f},{-0.378527f,0.0607272f,0.923596f},{-0.212839f,-0.000689027f,0.977087f}, +{0.015943f,-0.0365482f,0.999205f},{0.305805f,0.0359447f,0.951415f},{0.57072f,0.278041f,0.77264f}, +{0.651417f,0.564719f,0.506703f},{0.56895f,0.766234f,0.298632f},{0.409059f,0.893493f,0.185313f}, +{0.201877f,0.968758f,0.144064f},{0.0304928f,0.931217f,0.363189f},{0.0245996f,0.929896f,0.366999f}, +{-0.10373f,0.955245f,-0.277031f},{-0.304298f,0.947159f,-0.101449f},{-0.625893f,0.75942f,0.177593f}, +{-0.773097f,0.445834f,0.451168f},{-0.7627f,0.179062f,0.62147f},{-0.697411f,0.0163115f,0.716486f}, +{-0.606449f,-0.0938258f,0.789567f},{-0.441344f,-0.218556f,0.870316f},{-0.163703f,-0.363292f,0.917181f}, +{0.189081f,-0.461406f,0.866806f},{0.58293f,-0.414287f,0.69897f},{0.912069f,-0.125103f,0.390487f}, +{0.962139f,0.268252f,0.0482682f},{0.817556f,0.55344f,-0.159083f},{0.610798f,0.750085f,-0.25357f}, +{0.349988f,0.891328f,-0.288173f},{0.158433f,0.982699f,-0.0959295f},{0.160262f,0.982234f,-0.0976385f}, +{-0.0706087f,0.906588f,-0.416067f},{-0.213969f,0.914498f,-0.343382f},{-0.603053f,0.79487f,-0.0671517f}, +{-0.837519f,0.469329f,0.279806f},{-0.845853f,0.147687f,0.512563f},{-0.772128f,-0.0502244f,0.633479f}, +{-0.675299f,-0.184114f,0.714194f},{-0.504383f,-0.337547f,0.79477f},{-0.192974f,-0.522644f,0.830424f}, +{0.200919f,-0.646592f,0.735901f},{0.584482f,-0.62365f,0.519077f},{0.903386f,-0.383047f,0.19279f}, +{0.989227f,0.0196845f,-0.145061f},{0.873732f,0.349006f,-0.338803f},{0.693124f,0.580565f,-0.427228f}, +{0.447705f,0.760557f,-0.470226f},{0.253468f,0.841137f,-0.477748f},{0.241386f,0.850733f,-0.46689f}, +{0.168401f,0.825722f,0.538354f},{0.164232f,0.647208f,0.744413f},{0.252556f,0.752327f,0.608457f}, +{0.218923f,0.609165f,0.762227f},{0.35668f,0.632058f,0.687954f},{0.270207f,0.544859f,0.793799f}, +{0.412454f,0.495243f,0.764602f},{0.299424f,0.470627f,0.829973f},{0.422015f,0.380859f,0.822709f}, +{0.301851f,0.415248f,0.85817f},{0.401892f,0.308829f,0.862037f},{0.292041f,0.388965f,0.873738f}, +{0.363526f,0.271835f,0.891041f},{0.278694f,0.377274f,0.883173f},{0.304695f,0.252246f,0.918441f}, +{0.251401f,0.371711f,0.89366f},{0.21953f,0.245247f,0.944278f},{0.203426f,0.38298f,0.901079f}, +{0.106344f,0.266344f,0.957994f},{0.14537f,0.419089f,0.896232f},{-0.0276341f,0.342629f,0.939064f}, +{0.0921045f,0.475795f,0.874721f},{-0.150223f,0.478986f,0.864873f},{0.0560429f,0.540989f,0.83916f}, +{-0.212316f,0.629316f,0.747585f},{0.0446824f,0.598166f,0.800126f},{-0.197281f,0.745623f,0.636495f}, +{0.0554217f,0.637032f,0.768842f},{-0.122751f,0.816344f,0.56437f},{0.0810955f,0.657415f,0.749152f}, +{-0.0109649f,0.843844f,0.536477f},{0.11762f,0.661328f,0.740818f},{0.150429f,0.979508f,0.133919f}, +{0.290601f,0.909681f,0.2967f},{0.492893f,0.728683f,0.475477f},{0.588316f,0.49644f,0.638304f}, +{0.591449f,0.30212f,0.747604f},{0.550134f,0.182488f,0.814893f},{0.484732f,0.115851f,0.866957f}, +{0.378527f,0.0607272f,0.923596f},{0.212839f,-0.000689037f,0.977087f},{-0.015943f,-0.0365482f,0.999205f}, +{-0.305805f,0.0359448f,0.951415f},{-0.57072f,0.278041f,0.77264f},{-0.651417f,0.564719f,0.506703f}, +{-0.56895f,0.766234f,0.298632f},{-0.409059f,0.893493f,0.185313f},{-0.201877f,0.968758f,0.144064f}, +{-0.0304928f,0.931217f,0.363188f},{-0.0245995f,0.929896f,0.366999f},{0.103731f,0.955245f,-0.277031f}, +{0.304298f,0.947159f,-0.101449f},{0.625893f,0.75942f,0.177593f},{0.773097f,0.445834f,0.451168f}, +{0.7627f,0.179062f,0.621471f},{0.697411f,0.0163118f,0.716486f},{0.606449f,-0.0938259f,0.789567f}, +{0.441344f,-0.218556f,0.870316f},{0.163703f,-0.363292f,0.917181f},{-0.189081f,-0.461406f,0.866806f}, +{-0.58293f,-0.414287f,0.69897f},{-0.912069f,-0.125103f,0.390487f},{-0.962139f,0.268252f,0.0482685f}, +{-0.817556f,0.55344f,-0.159082f},{-0.610798f,0.750085f,-0.25357f},{-0.349988f,0.891328f,-0.288172f}, +{-0.158433f,0.982699f,-0.0959295f},{-0.160262f,0.982234f,-0.0976387f},{0.0706102f,0.906589f,-0.416066f}, +{0.213969f,0.914498f,-0.343382f},{0.603053f,0.79487f,-0.0671515f},{0.837519f,0.469329f,0.279806f}, +{0.845853f,0.147687f,0.512564f},{0.772128f,-0.0502239f,0.633479f},{0.675299f,-0.184114f,0.714195f}, +{0.504383f,-0.337547f,0.79477f},{0.192974f,-0.522644f,0.830424f},{-0.200919f,-0.646592f,0.735901f}, +{-0.584483f,-0.62365f,0.519077f},{-0.903386f,-0.383047f,0.19279f},{-0.989227f,0.0196847f,-0.145061f}, +{-0.873732f,0.349006f,-0.338802f},{-0.693124f,0.580565f,-0.427228f},{-0.447705f,0.760557f,-0.470226f}, +{-0.253469f,0.841136f,-0.477748f},{-0.241386f,0.850734f,-0.466889f} +}, + +//lid 5 +{ +{0.193444f,0.407529f,-0.892468f},{0.165525f,0.155217f,-0.973914f},{0.0817702f,0.2083f,-0.974641f}, +{0.130027f,0.443981f,-0.886552f},{-0.0700469f,0.308246f,-0.948724f},{0.0698369f,0.508184f,-0.858413f}, +{-0.202986f,0.479244f,-0.853887f},{0.0285804f,0.58596f,-0.809836f},{-0.259965f,0.655945f,-0.708629f}, +{0.0167872f,0.652994f,-0.757177f},{-0.22937f,0.781713f,-0.579925f},{0.0293912f,0.697471f,-0.71601f}, +{-0.13996f,0.851318f,-0.505638f},{0.0589978f,0.723127f,-0.688191f},{-0.0190551f,0.876732f,-0.480602f}, +{0.105824f,0.731903f,-0.673142f},{0.117151f,0.862225f,-0.492791f},{0.168272f,0.71841f,-0.674961f}, +{0.254554f,0.804206f,-0.53708f},{0.23545f,0.678528f,-0.695818f},{0.373057f,0.702449f,-0.60613f}, +{0.29162f,0.616637f,-0.731243f},{0.450121f,0.574444f,-0.683671f},{0.323966f,0.547484f,-0.771562f}, +{0.476569f,0.450249f,-0.755088f},{0.330806f,0.488291f,-0.807552f},{0.458733f,0.348468f,-0.817395f}, +{0.31924f,0.444994f,-0.8367f},{0.405583f,0.269649f,-0.87338f},{0.29274f,0.414652f,-0.861608f}, +{0.32327f,0.212095f,-0.922232f},{0.24994f,0.399549f,-0.881981f},{0.0759488f,-0.244867f,-0.966577f}, +{-0.0372175f,-0.181635f,-0.982661f},{-0.339106f,-0.0810756f,-0.937248f},{-0.630476f,0.204915f,-0.748672f}, +{-0.71242f,0.539226f,-0.449103f},{-0.6053f,0.763821f,-0.224031f},{-0.425226f,0.896448f,-0.124756f}, +{-0.206691f,0.972417f,-0.108088f},{0.0371f,0.98819f,-0.148678f},{0.285431f,0.926163f,-0.246478f}, +{0.498493f,0.773669f,-0.391077f},{0.627033f,0.56197f,-0.539462f},{0.662497f,0.357666f,-0.658159f}, +{0.628481f,0.192969f,-0.753508f},{0.53626f,0.0552887f,-0.84224f},{0.389472f,-0.0657248f,-0.91869f}, +{0.295455f,0.056842f,-0.953664f},{0.316848f,0.0475216f,-0.947285f},{-0.0397306f,-0.599632f,-0.799289f}, +{-0.189195f,-0.569456f,-0.799953f},{-0.578897f,-0.49671f,-0.64665f},{-0.925553f,-0.191261f,-0.326758f}, +{-0.975049f,0.218034f,0.0417236f},{-0.819003f,0.512483f,0.258062f},{-0.611015f,0.715488f,0.338728f}, +{-0.354073f,0.868841f,0.346045f},{-0.0474662f,0.956162f,0.288965f},{0.295731f,0.944569f,0.142591f}, +{0.617105f,0.780581f,-0.0993728f},{0.798058f,0.491737f,-0.348278f},{0.826967f,0.210536f,-0.521345f}, +{0.770201f,-0.00938286f,-0.637732f},{0.637273f,-0.202705f,-0.743501f},{0.413738f,-0.379248f,-0.827642f}, +{0.2762f,-0.263919f,-0.924154f},{0.324592f,-0.293701f,-0.899099f},{-0.089634f,-0.686727f,-0.721368f}, +{-0.196968f,-0.709494f,-0.676625f},{-0.57606f,-0.656331f,-0.487222f},{-0.907761f,-0.396805f,-0.13607f}, +{-0.97175f,0.00107842f,0.236008f},{-0.843724f,0.309278f,0.438722f},{-0.667858f,0.529876f,0.522683f}, +{-0.437969f,0.71117f,0.549927f},{-0.146691f,0.841099f,0.520609f},{0.20301f,0.895177f,0.396793f}, +{0.586122f,0.798484f,0.137423f},{0.843686f,0.503519f,-0.186178f},{0.891329f,0.172679f,-0.419183f}, +{0.830646f,-0.0802118f,-0.550994f},{0.698204f,-0.297244f,-0.651273f},{0.46035f,-0.500613f,-0.733119f}, +{0.239202f,-0.60152f,-0.762205f},{0.275863f,-0.623816f,-0.731268f},{-0.165525f,0.155217f,-0.973914f}, +{-0.193444f,0.407529f,-0.892468f},{-0.0817703f,0.2083f,-0.974641f},{-0.130028f,0.443981f,-0.886552f}, +{0.070047f,0.308246f,-0.948724f},{-0.0698366f,0.508184f,-0.858412f},{0.202986f,0.479244f,-0.853886f}, +{-0.0285805f,0.58596f,-0.809836f},{0.259965f,0.655945f,-0.708629f},{-0.0167873f,0.652994f,-0.757177f}, +{0.22937f,0.781714f,-0.579925f},{-0.0293914f,0.697471f,-0.71601f},{0.13996f,0.851318f,-0.505638f}, +{-0.0589978f,0.723127f,-0.688191f},{0.0190551f,0.876732f,-0.480602f},{-0.105824f,0.731903f,-0.673142f}, +{-0.117152f,0.862225f,-0.492791f},{-0.168272f,0.71841f,-0.674961f},{-0.254554f,0.804206f,-0.53708f}, +{-0.23545f,0.678528f,-0.695818f},{-0.373057f,0.702449f,-0.60613f},{-0.29162f,0.616637f,-0.731243f}, +{-0.450121f,0.574444f,-0.683671f},{-0.323966f,0.547484f,-0.771561f},{-0.476569f,0.450249f,-0.755088f}, +{-0.330806f,0.488291f,-0.807552f},{-0.458733f,0.348468f,-0.817394f},{-0.319241f,0.444994f,-0.836699f}, +{-0.405583f,0.269649f,-0.87338f},{-0.29274f,0.414652f,-0.861608f},{-0.32327f,0.212094f,-0.922232f}, +{-0.249939f,0.399549f,-0.881981f},{-0.0759488f,-0.244867f,-0.966577f},{0.0372174f,-0.181635f,-0.982661f}, +{0.339106f,-0.0810758f,-0.937248f},{0.630476f,0.204915f,-0.748672f},{0.71242f,0.539226f,-0.449103f}, +{0.6053f,0.763821f,-0.224031f},{0.425226f,0.896448f,-0.124756f},{0.206691f,0.972417f,-0.108088f}, +{-0.0370999f,0.98819f,-0.148678f},{-0.285431f,0.926163f,-0.246478f},{-0.498494f,0.773669f,-0.391077f}, +{-0.627033f,0.56197f,-0.539462f},{-0.662496f,0.357666f,-0.658159f},{-0.62848f,0.192969f,-0.753509f}, +{-0.53626f,0.0552887f,-0.84224f},{-0.389472f,-0.0657248f,-0.91869f},{-0.295455f,0.0568416f,-0.953664f}, +{-0.316847f,0.0475212f,-0.947285f},{0.0397307f,-0.599632f,-0.799289f},{0.189195f,-0.569456f,-0.799953f}, +{0.578897f,-0.496711f,-0.64665f},{0.925553f,-0.191262f,-0.326758f},{0.975049f,0.218034f,0.0417234f}, +{0.819003f,0.512483f,0.258062f},{0.611015f,0.715488f,0.338728f},{0.354073f,0.868841f,0.346045f}, +{0.0474661f,0.956162f,0.288965f},{-0.295731f,0.944569f,0.142591f},{-0.617106f,0.78058f,-0.0993727f}, +{-0.798058f,0.491737f,-0.348278f},{-0.826967f,0.210536f,-0.521344f},{-0.770201f,-0.00938315f,-0.637733f}, +{-0.637273f,-0.202705f,-0.743501f},{-0.413738f,-0.379248f,-0.827642f},{-0.2762f,-0.263918f,-0.924154f}, +{-0.324592f,-0.293701f,-0.8991f},{0.0896339f,-0.686727f,-0.721368f},{0.196968f,-0.709494f,-0.676625f}, +{0.57606f,-0.656331f,-0.487222f},{0.907761f,-0.396806f,-0.136069f},{0.971751f,0.001078f,0.236008f}, +{0.843724f,0.309278f,0.438722f},{0.667858f,0.529876f,0.522683f},{0.437969f,0.71117f,0.549927f}, +{0.146691f,0.841099f,0.520609f},{-0.203011f,0.895177f,0.396793f},{-0.586122f,0.798484f,0.137422f}, +{-0.843686f,0.503519f,-0.186178f},{-0.89133f,0.172678f,-0.419182f},{-0.830646f,-0.0802122f,-0.550993f}, +{-0.698204f,-0.297244f,-0.651273f},{-0.46035f,-0.500613f,-0.733119f},{-0.239203f,-0.601519f,-0.762205f}, +{-0.275863f,-0.623816f,-0.731268f},{-0.180068f,0.577236f,0.796476f},{-0.184464f,0.761676f,0.621147f}, +{-0.263986f,0.684387f,0.679651f},{-0.233173f,0.53943f,0.809102f},{-0.360888f,0.565359f,0.741707f}, +{-0.281882f,0.476613f,0.832696f},{-0.413008f,0.435886f,0.799642f},{-0.307999f,0.408132f,0.859398f}, +{-0.423679f,0.331379f,0.843021f},{-0.309908f,0.360869f,0.87962f},{-0.407224f,0.266101f,0.873704f}, +{-0.302213f,0.339523f,0.890725f},{-0.371172f,0.229158f,0.899843f},{-0.289523f,0.327562f,0.899378f}, +{-0.31079f,0.203294f,0.928483f},{-0.259276f,0.319654f,0.911371f},{-0.221476f,0.186725f,0.957122f}, +{-0.208676f,0.329032f,0.920974f},{-0.105951f,0.197938f,0.974472f},{-0.152893f,0.361911f,0.919589f}, +{0.0247945f,0.266447f,0.963531f},{-0.105696f,0.412464f,0.904821f},{0.139783f,0.401472f,0.905141f}, +{-0.0747584f,0.471703f,0.878582f},{0.194322f,0.559025f,0.806058f},{-0.065496f,0.526649f,0.847556f}, +{0.173984f,0.683979f,0.708451f},{-0.0765603f,0.565675f,0.821066f},{0.0973667f,0.758329f,0.64456f}, +{-0.101272f,0.586349f,0.803703f},{-0.0128182f,0.784094f,0.620509f},{-0.13559f,0.590702f,0.795416f}, +{-0.167613f,0.95658f,0.238456f},{-0.302976f,0.868131f,0.393134f},{-0.492446f,0.677089f,0.546852f}, +{-0.580527f,0.448426f,0.679634f},{-0.58693f,0.263618f,0.765519f},{-0.554051f,0.148408f,0.819147f}, +{-0.493685f,0.0752757f,0.866377f},{-0.383034f,0.00329912f,0.923728f},{-0.205087f,-0.0772348f,0.975691f}, +{0.0313089f,-0.126159f,0.991516f},{0.314577f,-0.0622055f,0.947191f},{0.572765f,0.183372f,0.798947f}, +{0.652539f,0.501707f,0.567876f},{0.561476f,0.73558f,0.379034f},{0.392032f,0.876671f,0.278852f}, +{0.180957f,0.951871f,0.247377f},{0.0093866f,0.885281f,0.464963f},{-0.00263635f,0.88147f,0.472233f}, +{-0.124483f,0.975732f,-0.180142f},{-0.318931f,0.947771f,-0.00348479f},{-0.623523f,0.739693f,0.253129f}, +{-0.76216f,0.422483f,0.49053f},{-0.758436f,0.156186f,0.632756f},{-0.704104f,-0.0146938f,0.709945f}, +{-0.618543f,-0.14637f,0.771998f},{-0.444527f,-0.300675f,0.843795f},{-0.148418f,-0.459723f,0.875572f}, +{0.208804f,-0.548394f,0.809731f},{0.584935f,-0.489972f,0.646358f},{0.905722f,-0.196085f,0.37579f}, +{0.97087f,0.227395f,0.0755174f},{0.825811f,0.553351f,-0.10881f},{0.607682f,0.772688f,-0.183509f}, +{0.337269f,0.919679f,-0.201098f},{0.141443f,0.989923f,0.00676962f},{0.143487f,0.989641f,0.00480806f}, +{-0.0933005f,0.94115f,-0.324855f},{-0.231626f,0.939611f,-0.251951f},{-0.604057f,0.796837f,0.0128559f}, +{-0.825195f,0.463072f,0.323448f},{-0.840198f,0.136845f,0.524729f},{-0.776581f,-0.0757791f,0.625444f}, +{-0.684572f,-0.236751f,0.689427f},{-0.505898f,-0.425245f,0.750489f},{-0.17675f,-0.62361f,0.761492f}, +{0.21899f,-0.722456f,0.65582f},{0.585977f,-0.671017f,0.454276f},{0.893638f,-0.418293f,0.162611f}, +{0.990147f,-0.00181478f,-0.140023f},{0.881177f,0.355667f,-0.311494f},{0.694655f,0.61195f,-0.378116f}, +{0.438808f,0.804679f,-0.399924f},{0.236289f,0.887341f,-0.39597f},{0.228909f,0.892442f,-0.388777f}, +{0.184464f,0.761676f,0.621147f},{0.180068f,0.577236f,0.796476f},{0.263986f,0.684387f,0.679651f}, +{0.233173f,0.53943f,0.809102f},{0.360888f,0.565359f,0.741707f},{0.281881f,0.476613f,0.832696f}, +{0.413008f,0.435886f,0.799643f},{0.307998f,0.408132f,0.859398f},{0.423679f,0.331378f,0.843021f}, +{0.309908f,0.360868f,0.87962f},{0.407224f,0.266101f,0.873704f},{0.302213f,0.339523f,0.890725f}, +{0.371172f,0.229158f,0.899843f},{0.289523f,0.327562f,0.899377f},{0.310791f,0.203294f,0.928483f}, +{0.259276f,0.319654f,0.911371f},{0.221476f,0.186725f,0.957122f},{0.208676f,0.329032f,0.920974f}, +{0.105951f,0.197938f,0.974472f},{0.152893f,0.361911f,0.919589f},{-0.0247946f,0.266447f,0.96353f}, +{0.105696f,0.412464f,0.904821f},{-0.139783f,0.401473f,0.905141f},{0.0747584f,0.471704f,0.878582f}, +{-0.194321f,0.559026f,0.806058f},{0.065496f,0.526648f,0.847556f},{-0.173984f,0.683979f,0.708451f}, +{0.0765603f,0.565675f,0.821066f},{-0.0973666f,0.758329f,0.64456f},{0.101272f,0.586349f,0.803703f}, +{0.0128182f,0.784094f,0.620509f},{0.13559f,0.590702f,0.795416f},{0.167613f,0.95658f,0.238456f}, +{0.302976f,0.868131f,0.393134f},{0.492446f,0.677089f,0.546852f},{0.580527f,0.448426f,0.679635f}, +{0.58693f,0.263618f,0.765518f},{0.554051f,0.148408f,0.819147f},{0.493685f,0.0752757f,0.866377f}, +{0.383034f,0.00329909f,0.923728f},{0.205088f,-0.0772348f,0.975691f},{-0.0313088f,-0.126159f,0.991516f}, +{-0.314577f,-0.0622053f,0.947191f},{-0.572765f,0.183371f,0.798946f},{-0.65254f,0.501707f,0.567876f}, +{-0.561476f,0.73558f,0.379034f},{-0.392032f,0.876671f,0.278852f},{-0.180957f,0.951871f,0.247377f}, +{-0.00938683f,0.885281f,0.464963f},{0.0026364f,0.88147f,0.472233f},{0.124484f,0.975732f,-0.180142f}, +{0.318931f,0.947771f,-0.00348472f},{0.623523f,0.739693f,0.253129f},{0.76216f,0.422484f,0.49053f}, +{0.758436f,0.156185f,0.632756f},{0.704104f,-0.0146936f,0.709945f},{0.618543f,-0.14637f,0.771998f}, +{0.444527f,-0.300675f,0.843795f},{0.148418f,-0.459723f,0.875572f},{-0.208804f,-0.548394f,0.809732f}, +{-0.584935f,-0.489972f,0.646358f},{-0.905722f,-0.196085f,0.37579f},{-0.97087f,0.227394f,0.0755171f}, +{-0.825811f,0.55335f,-0.10881f},{-0.607682f,0.772688f,-0.183509f},{-0.337269f,0.919679f,-0.201098f}, +{-0.141444f,0.989923f,0.0067696f},{-0.143487f,0.989641f,0.00480797f},{0.0933005f,0.94115f,-0.324856f}, +{0.231626f,0.939611f,-0.251951f},{0.604057f,0.796837f,0.012856f},{0.825195f,0.463072f,0.323448f}, +{0.840198f,0.136845f,0.524729f},{0.77658f,-0.0757789f,0.625444f},{0.684572f,-0.236751f,0.689427f}, +{0.505898f,-0.425245f,0.750489f},{0.17675f,-0.62361f,0.761492f},{-0.21899f,-0.722456f,0.65582f}, +{-0.585977f,-0.671017f,0.454276f},{-0.893638f,-0.418292f,0.162611f},{-0.990147f,-0.00181415f,-0.140023f}, +{-0.881177f,0.355667f,-0.311494f},{-0.694655f,0.61195f,-0.378116f},{-0.438808f,0.804679f,-0.399924f}, +{-0.236289f,0.887341f,-0.39597f},{-0.228909f,0.892442f,-0.388777f} +}, + +//lid 4 +{ +{0.197806f,0.252423f,-0.947183f},{0.152974f,-0.0131419f,-0.988143f},{0.076402f,0.0291397f,-0.996651f}, +{0.141586f,0.282977f,-0.948619f},{-0.0651858f,0.114567f,-0.991275f},{0.0907763f,0.340981f,-0.935677f}, +{-0.188783f,0.288503f,-0.938684f},{0.0551476f,0.4203f,-0.905708f},{-0.240493f,0.497493f,-0.833465f}, +{0.0456548f,0.499267f,-0.865244f},{-0.202638f,0.66064f,-0.722836f},{0.0611606f,0.557154f,-0.828154f}, +{-0.105771f,0.750916f,-0.651872f},{0.0934525f,0.590793f,-0.801393f},{0.0175425f,0.780671f,-0.624695f}, +{0.139504f,0.603068f,-0.785397f},{0.15047f,0.76202f,-0.629829f},{0.198294f,0.591171f,-0.781791f}, +{0.281108f,0.697071f,-0.659599f},{0.261657f,0.550939f,-0.792465f},{0.391376f,0.589919f,-0.706272f}, +{0.313791f,0.487662f,-0.814691f},{0.461111f,0.461151f,-0.758101f},{0.342101f,0.418757f,-0.841195f}, +{0.483411f,0.338155f,-0.807443f},{0.346951f,0.359543f,-0.86623f},{0.463587f,0.232429f,-0.855022f}, +{0.33397f,0.311178f,-0.889737f},{0.407038f,0.141258f,-0.902422f},{0.302905f,0.271678f,-0.913477f}, +{0.318994f,0.0666247f,-0.945412f},{0.25442f,0.249147f,-0.93445f},{0.0393542f,-0.403638f,-0.914072f}, +{-0.0633284f,-0.348984f,-0.934987f},{-0.341741f,-0.268004f,-0.90077f},{-0.622255f,0.00424061f,-0.782803f}, +{-0.723034f,0.396393f,-0.565769f},{-0.608206f,0.699392f,-0.375414f},{-0.40421f,0.8671f,-0.291121f}, +{-0.172562f,0.943235f,-0.283777f},{0.0704847f,0.944233f,-0.321646f},{0.30922f,0.863119f,-0.39926f}, +{0.508772f,0.695251f,-0.507717f},{0.627113f,0.478984f,-0.61425f},{0.661072f,0.274946f,-0.698133f}, +{0.629603f,0.100423f,-0.7704f},{0.533618f,-0.0611259f,-0.843514f},{0.373406f,-0.207599f,-0.904141f}, +{0.272005f,-0.0903327f,-0.958047f},{0.308413f,-0.102804f,-0.945681f},{-0.0753382f,-0.721378f,-0.688431f}, +{-0.221636f,-0.685687f,-0.693333f},{-0.580906f,-0.600102f,-0.549932f},{-0.906914f,-0.30141f,-0.294379f}, +{-0.990017f,0.14083f,-0.00574827f},{-0.844923f,0.508554f,0.165766f},{-0.615889f,0.760283f,0.206519f}, +{-0.333857f,0.926152f,0.175449f},{-0.012656f,0.99492f,0.0998718f},{0.322707f,0.945914f,-0.0332746f}, +{0.619119f,0.751467f,-0.22801f},{0.787733f,0.452378f,-0.418129f},{0.823064f,0.161486f,-0.544508f}, +{0.775054f,-0.0856956f,-0.626057f},{0.638683f,-0.318141f,-0.700622f},{0.397172f,-0.52005f,-0.756176f}, +{0.246139f,-0.418283f,-0.874331f},{0.294987f,-0.443073f,-0.846563f},{-0.116264f,-0.796737f,-0.593036f}, +{-0.226117f,-0.802769f,-0.551755f},{-0.586943f,-0.715357f,-0.379158f},{-0.89438f,-0.440125f,-0.0798445f}, +{-0.973234f,-0.0311641f,0.227692f},{-0.864269f,0.318505f,0.389351f},{-0.684692f,0.588076f,0.430538f}, +{-0.433616f,0.80353f,0.40782f},{-0.11501f,0.932725f,0.341755f},{0.240096f,0.946978f,0.213511f}, +{0.593785f,0.804597f,-0.00656442f},{0.829619f,0.49272f,-0.262602f},{0.884967f,0.146821f,-0.441901f}, +{0.834044f,-0.142061f,-0.533093f},{0.699282f,-0.404508f,-0.589388f},{0.447792f,-0.634866f,-0.629625f}, +{0.219984f,-0.737571f,-0.638433f},{0.244461f,-0.748524f,-0.616401f},{-0.152973f,-0.0131418f,-0.988143f}, +{-0.197805f,0.252424f,-0.947183f},{-0.0764017f,0.0291398f,-0.996651f},{-0.141586f,0.282977f,-0.948619f}, +{0.0651859f,0.114567f,-0.991275f},{-0.0907765f,0.340981f,-0.935677f},{0.188783f,0.288503f,-0.938684f}, +{-0.0551476f,0.4203f,-0.905708f},{0.240493f,0.497493f,-0.833465f},{-0.0456548f,0.499267f,-0.865244f}, +{0.202638f,0.66064f,-0.722836f},{-0.0611606f,0.557154f,-0.828154f},{0.105771f,0.750916f,-0.651872f}, +{-0.0934527f,0.590793f,-0.801393f},{-0.0175423f,0.780672f,-0.624695f},{-0.139504f,0.603067f,-0.785397f}, +{-0.15047f,0.76202f,-0.629829f},{-0.198294f,0.591171f,-0.781791f},{-0.281108f,0.697071f,-0.659599f}, +{-0.261658f,0.550939f,-0.792466f},{-0.391376f,0.589919f,-0.706272f},{-0.313791f,0.487663f,-0.81469f}, +{-0.46111f,0.46115f,-0.758101f},{-0.342102f,0.418756f,-0.841196f},{-0.483411f,0.338154f,-0.807443f}, +{-0.346951f,0.359543f,-0.86623f},{-0.463587f,0.23243f,-0.855022f},{-0.333971f,0.311179f,-0.889737f}, +{-0.407039f,0.141259f,-0.902422f},{-0.302905f,0.271678f,-0.913477f},{-0.318994f,0.0666247f,-0.945412f}, +{-0.25442f,0.249147f,-0.93445f},{-0.0393541f,-0.403638f,-0.914072f},{0.0633285f,-0.348984f,-0.934987f}, +{0.341741f,-0.268004f,-0.90077f},{0.622255f,0.00424059f,-0.782803f},{0.723034f,0.396392f,-0.565769f}, +{0.608206f,0.699393f,-0.375414f},{0.40421f,0.8671f,-0.291121f},{0.172562f,0.943235f,-0.283777f}, +{-0.0704845f,0.944233f,-0.321646f},{-0.30922f,0.863119f,-0.39926f},{-0.508772f,0.695251f,-0.507717f}, +{-0.627113f,0.478984f,-0.61425f},{-0.661072f,0.274945f,-0.698133f},{-0.629603f,0.100424f,-0.7704f}, +{-0.533618f,-0.0611257f,-0.843514f},{-0.373405f,-0.207599f,-0.904141f},{-0.272005f,-0.0903328f,-0.958047f}, +{-0.308413f,-0.102804f,-0.945681f},{0.0753384f,-0.721378f,-0.688431f},{0.221636f,-0.685687f,-0.693333f}, +{0.580906f,-0.600103f,-0.549932f},{0.906914f,-0.301409f,-0.294379f},{0.990017f,0.14083f,-0.00574841f}, +{0.844923f,0.508554f,0.165766f},{0.615889f,0.760283f,0.206519f},{0.333857f,0.926152f,0.175449f}, +{0.012656f,0.99492f,0.0998718f},{-0.322707f,0.945914f,-0.0332747f},{-0.619119f,0.751468f,-0.22801f}, +{-0.787733f,0.452378f,-0.418128f},{-0.823064f,0.161485f,-0.544508f},{-0.775054f,-0.0856957f,-0.626057f}, +{-0.638683f,-0.318141f,-0.700622f},{-0.397172f,-0.52005f,-0.756176f},{-0.246138f,-0.418282f,-0.874332f}, +{-0.294987f,-0.443073f,-0.846563f},{0.116265f,-0.796737f,-0.593037f},{0.226117f,-0.802769f,-0.551755f}, +{0.586943f,-0.715357f,-0.379159f},{0.89438f,-0.440125f,-0.0798443f},{0.973234f,-0.031164f,0.227692f}, +{0.864269f,0.318505f,0.389351f},{0.684692f,0.588076f,0.430539f},{0.433616f,0.803529f,0.40782f}, +{0.11501f,0.932725f,0.341755f},{-0.240096f,0.946978f,0.213511f},{-0.593785f,0.804597f,-0.00656453f}, +{-0.829619f,0.49272f,-0.262602f},{-0.884968f,0.146821f,-0.4419f},{-0.834045f,-0.142061f,-0.533093f}, +{-0.699282f,-0.404508f,-0.589388f},{-0.447792f,-0.634866f,-0.629625f},{-0.219984f,-0.737571f,-0.638433f}, +{-0.24446f,-0.748524f,-0.616401f},{-0.208426f,0.467505f,0.859068f},{-0.21141f,0.645342f,0.734057f}, +{-0.282958f,0.5677f,0.773079f},{-0.258987f,0.431703f,0.864036f},{-0.368601f,0.458411f,0.808698f}, +{-0.303103f,0.374109f,0.876454f},{-0.416668f,0.346642f,0.840374f},{-0.324375f,0.31716f,0.891174f}, +{-0.430617f,0.259782f,0.864339f},{-0.325747f,0.282993f,0.902111f},{-0.420251f,0.203556f,0.884282f}, +{-0.320713f,0.268048f,0.908457f},{-0.386943f,0.162916f,0.907598f},{-0.307412f,0.253854f,0.917091f}, +{-0.322163f,0.122735f,0.938695f},{-0.27108f,0.240458f,0.932038f},{-0.223762f,0.0878124f,0.97068f}, +{-0.21604f,0.245468f,0.945025f},{-0.10262f,0.0825365f,0.991291f},{-0.16423f,0.272449f,0.948051f}, +{0.0234933f,0.139016f,0.990011f},{-0.126689f,0.312363f,0.941477f},{0.125261f,0.270589f,0.954511f}, +{-0.103528f,0.360547f,0.926978f},{0.165273f,0.437098f,0.884098f},{-0.0972457f,0.411136f,0.906372f}, +{0.133677f,0.573686f,0.808093f},{-0.109202f,0.451287f,0.885672f},{0.0521017f,0.651921f,0.756495f}, +{-0.133792f,0.473599f,0.870519f},{-0.0551972f,0.673656f,0.736981f},{-0.166331f,0.479272f,0.861761f}, +{-0.194724f,0.892923f,0.40592f},{-0.321362f,0.778328f,0.539381f},{-0.489835f,0.58226f,0.648872f}, +{-0.569077f,0.369664f,0.734506f},{-0.583491f,0.204904f,0.785845f},{-0.565193f,0.0957166f,0.819387f}, +{-0.512484f,0.00638424f,0.858673f},{-0.392507f,-0.0996617f,0.914333f},{-0.192249f,-0.211968f,0.958181f}, +{0.0562841f,-0.275946f,0.959524f},{0.32738f,-0.221716f,0.918512f},{0.573276f,0.0211426f,0.819089f}, +{0.653155f,0.381962f,0.65383f},{0.546416f,0.668325f,0.504748f},{0.357923f,0.829639f,0.428475f}, +{0.140622f,0.899867f,0.412874f},{-0.0284427f,0.788122f,0.614862f},{-0.0532601f,0.776915f,0.627349f}, +{-0.157489f,0.987401f,-0.0154112f},{-0.342529f,0.926003f,0.158719f},{-0.619782f,0.690843f,0.372299f}, +{-0.744927f,0.377356f,0.550169f},{-0.752895f,0.119041f,0.647285f},{-0.717327f,-0.0636677f,0.693822f}, +{-0.639658f,-0.233703f,0.732271f},{-0.449197f,-0.43605f,0.779796f},{-0.124989f,-0.610088f,0.782413f}, +{0.23555f,-0.675885f,0.698352f},{0.5842f,-0.598166f,0.54855f},{0.89061f,-0.305432f,0.336936f}, +{0.982168f,0.152087f,0.110523f},{0.839266f,0.543118f,-0.0256032f},{0.599899f,0.797656f,-0.0621713f}, +{0.313645f,0.948255f,-0.0493838f},{0.112243f,0.977134f,0.180584f},{0.109262f,0.976934f,0.183471f}, +{-0.130507f,0.977203f,-0.167459f},{-0.261054f,0.960363f,-0.0977477f},{-0.60797f,0.781317f,0.141124f}, +{-0.806985f,0.441576f,0.392157f},{-0.831542f,0.116681f,0.543069f},{-0.785144f,-0.11618f,0.608318f}, +{-0.700039f,-0.321851f,0.637462f},{-0.505872f,-0.56167f,0.654691f},{-0.151627f,-0.765957f,0.624755f}, +{0.241223f,-0.821394f,0.51684f},{0.585322f,-0.732453f,0.347723f},{0.87707f,-0.467825f,0.109029f}, +{0.989822f,-0.0383588f,-0.137044f},{0.893267f,0.361677f,-0.266953f},{0.695714f,0.656377f,-0.291808f}, +{0.422793f,0.86367f,-0.274445f},{0.208815f,0.94524f,-0.250834f},{0.208427f,0.945437f,-0.250415f}, +{0.21141f,0.645342f,0.734057f},{0.208426f,0.467506f,0.859068f},{0.282958f,0.5677f,0.773079f}, +{0.258987f,0.431703f,0.864036f},{0.368601f,0.458412f,0.808698f},{0.303103f,0.374109f,0.876454f}, +{0.416668f,0.346641f,0.840374f},{0.324375f,0.317159f,0.891174f},{0.430617f,0.259782f,0.864339f}, +{0.325748f,0.282993f,0.90211f},{0.420251f,0.203557f,0.884282f},{0.320713f,0.268048f,0.908457f}, +{0.386943f,0.162916f,0.907598f},{0.307412f,0.253853f,0.917091f},{0.322162f,0.122735f,0.938695f}, +{0.27108f,0.240458f,0.932038f},{0.223762f,0.0878123f,0.97068f},{0.21604f,0.245468f,0.945025f}, +{0.10262f,0.0825365f,0.991291f},{0.16423f,0.272449f,0.948051f},{-0.0234933f,0.139016f,0.990011f}, +{0.126689f,0.312363f,0.941477f},{-0.125261f,0.270589f,0.954511f},{0.103528f,0.360547f,0.926978f}, +{-0.165273f,0.437098f,0.884099f},{0.0972457f,0.411136f,0.906372f},{-0.133677f,0.573686f,0.808093f}, +{0.109202f,0.451287f,0.885672f},{-0.0521018f,0.651921f,0.756495f},{0.133792f,0.473599f,0.870519f}, +{0.0551972f,0.673656f,0.736981f},{0.166331f,0.479272f,0.861761f},{0.194723f,0.892923f,0.40592f}, +{0.321362f,0.778328f,0.539381f},{0.489835f,0.58226f,0.648872f},{0.569077f,0.369664f,0.734506f}, +{0.583491f,0.204904f,0.785845f},{0.565193f,0.0957165f,0.819387f},{0.512484f,0.00638429f,0.858673f}, +{0.392507f,-0.0996618f,0.914333f},{0.192249f,-0.211968f,0.95818f},{-0.0562842f,-0.275946f,0.959524f}, +{-0.32738f,-0.221716f,0.918512f},{-0.573277f,0.0211428f,0.819089f},{-0.653155f,0.381962f,0.65383f}, +{-0.546416f,0.668325f,0.504748f},{-0.357923f,0.829639f,0.428475f},{-0.140621f,0.899867f,0.412874f}, +{0.0284431f,0.788121f,0.614862f},{0.0532601f,0.776915f,0.627349f},{0.157489f,0.987401f,-0.015411f}, +{0.342529f,0.926003f,0.158719f},{0.619782f,0.690843f,0.372299f},{0.744927f,0.377355f,0.55017f}, +{0.752895f,0.119041f,0.647285f},{0.717327f,-0.0636679f,0.693822f},{0.639658f,-0.233703f,0.732271f}, +{0.449197f,-0.43605f,0.779796f},{0.124989f,-0.610088f,0.782413f},{-0.23555f,-0.675885f,0.698352f}, +{-0.5842f,-0.598167f,0.54855f},{-0.89061f,-0.305431f,0.336936f},{-0.982168f,0.152087f,0.110523f}, +{-0.839266f,0.543117f,-0.0256036f},{-0.5999f,0.797656f,-0.0621718f},{-0.313645f,0.948255f,-0.0493838f}, +{-0.112243f,0.977134f,0.180583f},{-0.109261f,0.976934f,0.183472f},{0.130507f,0.977203f,-0.167459f}, +{0.261054f,0.960363f,-0.0977474f},{0.607969f,0.781317f,0.141124f},{0.806984f,0.441576f,0.392157f}, +{0.831542f,0.116681f,0.543069f},{0.785144f,-0.11618f,0.608318f},{0.700039f,-0.32185f,0.637462f}, +{0.505872f,-0.56167f,0.654691f},{0.151627f,-0.765957f,0.624755f},{-0.241224f,-0.821394f,0.51684f}, +{-0.585322f,-0.732453f,0.347722f},{-0.87707f,-0.467826f,0.109028f},{-0.989822f,-0.0383587f,-0.137044f}, +{-0.893267f,0.361677f,-0.266952f},{-0.695714f,0.656377f,-0.291808f},{-0.422793f,0.86367f,-0.274445f}, +{-0.208815f,0.94524f,-0.250834f},{-0.208427f,0.945437f,-0.250415f} +}, + +//lid 3 +{ +{0.19311f,0.19139f,-0.96233f},{0.142208f,-0.0774502f,-0.986802f},{0.0678547f,-0.0384938f,-0.996952f}, +{0.13967f,0.219289f,-0.965611f},{-0.0696221f,0.0408271f,-0.996738f},{0.0926616f,0.273519f,-0.957393f}, +{-0.188488f,0.211241f,-0.959088f},{0.0595677f,0.351221f,-0.934396f},{-0.237285f,0.427549f,-0.872294f}, +{0.0513543f,0.433495f,-0.899691f},{-0.196157f,0.604068f,-0.772415f},{0.0685151f,0.496912f,-0.865092f}, +{-0.0957246f,0.703615f,-0.704104f},{0.102755f,0.534448f,-0.838932f},{0.0293679f,0.736459f,-0.675844f}, +{0.149571f,0.54853f,-0.822644f},{0.161603f,0.717349f,-0.677713f},{0.207462f,0.537636f,-0.817256f}, +{0.289597f,0.651122f,-0.701551f},{0.268886f,0.498353f,-0.824224f},{0.3962f,0.544012f,-0.739646f}, +{0.318634f,0.436497f,-0.841393f},{0.462795f,0.417077f,-0.782219f},{0.345075f,0.369444f,-0.862806f}, +{0.483462f,0.295309f,-0.824049f},{0.349167f,0.310606f,-0.884085f},{0.462611f,0.187373f,-0.866535f}, +{0.335206f,0.259551f,-0.905688f},{0.403961f,0.0904898f,-0.91029f},{0.301477f,0.215711f,-0.928752f}, +{0.312545f,0.00928211f,-0.949858f},{0.250059f,0.189983f,-0.949409f},{0.0226189f,-0.461349f,-0.88693f}, +{-0.0777483f,-0.407964f,-0.909682f},{-0.347637f,-0.331404f,-0.877109f},{-0.62028f,-0.0696448f,-0.781283f}, +{-0.72716f,0.332372f,-0.600639f},{-0.61173f,0.662993f,-0.431541f},{-0.39808f,0.845991f,-0.354728f}, +{-0.160319f,0.923082f,-0.349597f},{0.0827605f,0.919205f,-0.384985f},{0.317574f,0.832385f,-0.454183f}, +{0.511501f,0.661363f,-0.548603f},{0.625966f,0.446074f,-0.639675f},{0.659684f,0.2427f,-0.711276f}, +{0.629048f,0.0628337f,-0.774823f},{0.530845f,-0.10926f,-0.840396f},{0.36452f,-0.264439f,-0.892859f}, +{0.259041f,-0.148767f,-0.954341f},{0.299861f,-0.161339f,-0.940241f},{-0.0884018f,-0.762538f,-0.640876f}, +{-0.235609f,-0.723775f,-0.648566f},{-0.585528f,-0.630369f,-0.509698f},{-0.900905f,-0.335078f,-0.275848f}, +{-0.993743f,0.110014f,-0.0192989f},{-0.855874f,0.50061f,0.129883f},{-0.618627f,0.770592f,0.15326f}, +{-0.32579f,0.939296f,0.107627f},{0.000229109f,0.999641f,0.0267795f},{0.331651f,0.938181f,-0.09912f}, +{0.618913f,0.735647f,-0.275264f},{0.783293f,0.435371f,-0.443738f},{0.821251f,0.141209f,-0.552817f}, +{0.775996f,-0.117576f,-0.619682f},{0.637531f,-0.364574f,-0.678704f},{0.389838f,-0.573292f,-0.720668f}, +{0.234329f,-0.478618f,-0.846177f},{0.280671f,-0.500188f,-0.819167f},{-0.125194f,-0.832553f,-0.539613f}, +{-0.23729f,-0.832272f,-0.501016f},{-0.593865f,-0.730879f,-0.336364f},{-0.891521f,-0.44951f,-0.0559531f}, +{-0.973153f,-0.0412239f,0.226436f},{-0.872411f,0.319219f,0.370133f},{-0.691725f,0.605878f,0.392973f}, +{-0.431433f,0.831836f,0.349162f},{-0.103034f,0.957642f,0.268899f},{0.252442f,0.957152f,0.141888f}, +{0.595298f,0.801204f,-0.0607619f},{0.823888f,0.48597f,-0.291617f},{0.882366f,0.135114f,-0.450749f}, +{0.834461f,-0.168251f,-0.524753f},{0.697484f,-0.446476f,-0.560514f},{0.441864f,-0.682478f,-0.58222f}, +{0.213859f,-0.783387f,-0.583584f},{0.2332f,-0.79081f,-0.565895f},{-0.142208f,-0.0774502f,-0.986802f}, +{-0.19311f,0.19139f,-0.96233f},{-0.0678546f,-0.0384938f,-0.996952f},{-0.13967f,0.219289f,-0.965611f}, +{0.0696222f,0.0408271f,-0.996738f},{-0.0926615f,0.273519f,-0.957393f},{0.188488f,0.211241f,-0.959088f}, +{-0.0595678f,0.351221f,-0.934396f},{0.237285f,0.427549f,-0.872294f},{-0.0513544f,0.433495f,-0.899691f}, +{0.196157f,0.604068f,-0.772415f},{-0.0685151f,0.496912f,-0.865092f},{0.0957247f,0.703616f,-0.704104f}, +{-0.102755f,0.534448f,-0.838932f},{-0.029368f,0.73646f,-0.675844f},{-0.149571f,0.548531f,-0.822644f}, +{-0.161603f,0.717349f,-0.677713f},{-0.207461f,0.537636f,-0.817256f},{-0.289597f,0.651122f,-0.701551f}, +{-0.268886f,0.498353f,-0.824224f},{-0.396201f,0.544011f,-0.739646f},{-0.318635f,0.436497f,-0.841393f}, +{-0.462795f,0.417077f,-0.782219f},{-0.345075f,0.369444f,-0.862806f},{-0.483462f,0.295309f,-0.824049f}, +{-0.349167f,0.310605f,-0.884085f},{-0.462611f,0.187373f,-0.866535f},{-0.335206f,0.259552f,-0.905687f}, +{-0.403961f,0.09049f,-0.910289f},{-0.301477f,0.215711f,-0.928752f},{-0.312545f,0.00928195f,-0.949857f}, +{-0.250059f,0.189983f,-0.949409f},{-0.0226189f,-0.46135f,-0.88693f},{0.0777483f,-0.407964f,-0.909681f}, +{0.347638f,-0.331404f,-0.877109f},{0.62028f,-0.0696447f,-0.781283f},{0.72716f,0.332372f,-0.600639f}, +{0.61173f,0.662993f,-0.431541f},{0.39808f,0.845991f,-0.354728f},{0.160319f,0.923082f,-0.349597f}, +{-0.0827604f,0.919205f,-0.384985f},{-0.317574f,0.832385f,-0.454183f},{-0.511501f,0.661363f,-0.548603f}, +{-0.625966f,0.446074f,-0.639675f},{-0.659685f,0.242701f,-0.711275f},{-0.629047f,0.0628333f,-0.774824f}, +{-0.530845f,-0.10926f,-0.840396f},{-0.36452f,-0.26444f,-0.892859f},{-0.259042f,-0.148767f,-0.954341f}, +{-0.299861f,-0.161339f,-0.940241f},{0.0884017f,-0.762538f,-0.640876f},{0.235608f,-0.723775f,-0.648566f}, +{0.585528f,-0.630369f,-0.509698f},{0.900905f,-0.335078f,-0.275848f},{0.993743f,0.110014f,-0.0192989f}, +{0.855874f,0.50061f,0.129883f},{0.618627f,0.770592f,0.153259f},{0.325789f,0.939296f,0.107627f}, +{-0.000229102f,0.999641f,0.0267794f},{-0.331651f,0.938181f,-0.0991201f},{-0.618913f,0.735647f,-0.275264f}, +{-0.783293f,0.435371f,-0.443739f},{-0.821251f,0.141209f,-0.552817f},{-0.775996f,-0.117575f,-0.619682f}, +{-0.637531f,-0.364574f,-0.678704f},{-0.389838f,-0.573292f,-0.720668f},{-0.234329f,-0.478618f,-0.846177f}, +{-0.280672f,-0.500188f,-0.819167f},{0.125194f,-0.832552f,-0.539614f},{0.23729f,-0.832272f,-0.501016f}, +{0.593865f,-0.730879f,-0.336363f},{0.891521f,-0.44951f,-0.0559528f},{0.973153f,-0.0412245f,0.226437f}, +{0.872411f,0.319219f,0.370134f},{0.691726f,0.605878f,0.392973f},{0.431433f,0.831836f,0.349161f}, +{0.103034f,0.957642f,0.268899f},{-0.252442f,0.957152f,0.141888f},{-0.595298f,0.801204f,-0.0607619f}, +{-0.823888f,0.485971f,-0.291617f},{-0.882366f,0.135114f,-0.45075f},{-0.834461f,-0.168251f,-0.524753f}, +{-0.697484f,-0.446475f,-0.560514f},{-0.441864f,-0.682478f,-0.58222f},{-0.213859f,-0.783387f,-0.583584f}, +{-0.2332f,-0.79081f,-0.565895f},{-0.229669f,0.394981f,0.889518f},{-0.231123f,0.558736f,0.79649f}, +{-0.296793f,0.48526f,0.822458f},{-0.27818f,0.361869f,0.889757f},{-0.375088f,0.387567f,0.842082f}, +{-0.3186f,0.309805f,0.895832f},{-0.421505f,0.290791f,0.858938f},{-0.336716f,0.261486f,0.90457f}, +{-0.438512f,0.215537f,0.872497f},{-0.337864f,0.234783f,0.911441f},{-0.432128f,0.162153f,0.887114f}, +{-0.333658f,0.221571f,0.916285f},{-0.399382f,0.113997f,0.909669f},{-0.318071f,0.203324f,0.926008f}, +{-0.329136f,0.0589227f,0.942442f},{-0.276121f,0.184141f,0.943318f},{-0.221544f,0.00826323f,0.975115f}, +{-0.217713f,0.184842f,0.95835f},{-0.0944669f,-0.00852958f,0.995491f},{-0.168781f,0.207319f,0.963604f}, +{0.0290205f,0.0408228f,0.998745f},{-0.137636f,0.239871f,0.960999f},{0.120965f,0.170167f,0.977962f}, +{-0.119261f,0.280395f,0.952447f},{0.148983f,0.342616f,0.927587f},{-0.114791f,0.328866f,0.937374f}, +{0.106802f,0.487704f,0.866452f},{-0.128197f,0.372061f,0.919313f},{0.0195776f,0.569159f,0.821994f}, +{-0.154669f,0.397586f,0.904435f},{-0.0864364f,0.588895f,0.803574f},{-0.188131f,0.405089f,0.894712f}, +{-0.213787f,0.826684f,0.520469f},{-0.33275f,0.699806f,0.632099f},{-0.486569f,0.510276f,0.709133f}, +{-0.562541f,0.316054f,0.763975f},{-0.58474f,0.166721f,0.793903f},{-0.577003f,0.0581446f,0.81467f}, +{-0.5284f,-0.0497126f,0.847539f},{-0.398676f,-0.186188f,0.897993f},{-0.17981f,-0.319832f,0.930256f}, +{0.0771954f,-0.387706f,0.918545f},{0.338345f,-0.336226f,0.878906f},{0.573425f,-0.101638f,0.812929f}, +{0.654623f,0.279956f,0.702206f},{0.53579f,0.60401f,0.590001f},{0.329575f,0.779685f,0.532421f}, +{0.106662f,0.843401f,0.526591f},{-0.0582746f,0.705608f,0.706202f},{-0.0917435f,0.688008f,0.719881f}, +{-0.18003f,0.977476f,0.110137f},{-0.357939f,0.891518f,0.277623f},{-0.615207f,0.644291f,0.454323f}, +{-0.732591f,0.34145f,0.588832f},{-0.750623f,0.0927056f,0.654195f},{-0.728923f,-0.0996895f,0.677299f}, +{-0.654723f,-0.300832f,0.693425f},{-0.44952f,-0.535469f,0.714986f},{-0.106872f,-0.711745f,0.69426f}, +{0.252943f,-0.755576f,0.604256f},{0.582754f,-0.663256f,0.469562f},{0.876843f,-0.377081f,0.298256f}, +{0.987578f,0.0908329f,0.128218f},{0.85011f,0.525354f,0.0362723f},{0.592618f,0.80484f,0.0321829f}, +{0.293156f,0.953591f,0.0687309f},{0.0880785f,0.946859f,0.309353f},{0.0767341f,0.944294f,0.320033f}, +{-0.156098f,0.986732f,-0.0446366f},{-0.281294f,0.959401f,0.0205867f},{-0.610051f,0.757103f,0.233735f}, +{-0.794174f,0.419187f,0.439966f},{-0.826092f,0.100254f,0.554546f},{-0.792747f,-0.146156f,0.59177f}, +{-0.710556f,-0.384711f,0.589158f},{-0.501651f,-0.653698f,0.566591f},{-0.133125f,-0.849606f,0.510341f}, +{0.253964f,-0.875214f,0.411708f},{0.584528f,-0.765206f,0.269789f},{0.86544f,-0.496404f,0.0677977f}, +{0.988373f,-0.0650512f,-0.13743f},{0.90281f,0.361254f,-0.2333f},{0.696363f,0.682041f,-0.223379f}, +{0.410113f,0.895258f,-0.174126f},{0.189645f,0.972416f,-0.135803f},{0.191705f,0.971681f,-0.138152f}, +{0.231123f,0.558736f,0.79649f},{0.229668f,0.394981f,0.889518f},{0.296793f,0.48526f,0.822458f}, +{0.27818f,0.361869f,0.889757f},{0.375088f,0.387566f,0.842082f},{0.318601f,0.309804f,0.895832f}, +{0.421505f,0.290791f,0.858938f},{0.336717f,0.261487f,0.90457f},{0.438512f,0.215537f,0.872497f}, +{0.337864f,0.234783f,0.911441f},{0.432128f,0.162153f,0.887114f},{0.333659f,0.221571f,0.916285f}, +{0.399382f,0.113997f,0.909669f},{0.318071f,0.203323f,0.926008f},{0.329136f,0.0589225f,0.942442f}, +{0.27612f,0.184141f,0.943319f},{0.221544f,0.00826301f,0.975115f},{0.217714f,0.184842f,0.95835f}, +{0.0944672f,-0.00852984f,0.995491f},{0.168781f,0.207319f,0.963604f},{-0.0290205f,0.0408228f,0.998745f}, +{0.137636f,0.23987f,0.960999f},{-0.120965f,0.170168f,0.977962f},{0.119261f,0.280396f,0.952447f}, +{-0.148983f,0.342615f,0.927587f},{0.114791f,0.328866f,0.937374f},{-0.106802f,0.487704f,0.866452f}, +{0.128197f,0.372061f,0.919313f},{-0.0195775f,0.569159f,0.821994f},{0.154669f,0.397586f,0.904435f}, +{0.0864366f,0.588895f,0.803574f},{0.188132f,0.405089f,0.894712f},{0.213787f,0.826684f,0.52047f}, +{0.332749f,0.699806f,0.632099f},{0.486569f,0.510276f,0.709133f},{0.562541f,0.316053f,0.763975f}, +{0.58474f,0.166722f,0.793903f},{0.577003f,0.0581448f,0.81467f},{0.5284f,-0.0497127f,0.847539f}, +{0.398676f,-0.186189f,0.897993f},{0.17981f,-0.319832f,0.930256f},{-0.0771954f,-0.387706f,0.918545f}, +{-0.338345f,-0.336226f,0.878906f},{-0.573425f,-0.101638f,0.812929f},{-0.654623f,0.279956f,0.702206f}, +{-0.535791f,0.60401f,0.590001f},{-0.329575f,0.779685f,0.53242f},{-0.106662f,0.843401f,0.526591f}, +{0.0582748f,0.705608f,0.706202f},{0.0917444f,0.688007f,0.719881f},{0.18003f,0.977476f,0.110137f}, +{0.35794f,0.891518f,0.277623f},{0.615207f,0.644291f,0.454323f},{0.732591f,0.341449f,0.588832f}, +{0.750623f,0.0927057f,0.654195f},{0.728923f,-0.0996895f,0.677299f},{0.654723f,-0.300832f,0.693425f}, +{0.44952f,-0.535469f,0.714986f},{0.106872f,-0.711745f,0.69426f},{-0.252943f,-0.755576f,0.604256f}, +{-0.582754f,-0.663256f,0.469562f},{-0.876843f,-0.377081f,0.298256f},{-0.987578f,0.0908331f,0.128219f}, +{-0.85011f,0.525354f,0.0362722f},{-0.592618f,0.80484f,0.0321824f},{-0.293156f,0.953591f,0.0687308f}, +{-0.0880785f,0.946859f,0.309353f},{-0.0767339f,0.944294f,0.320033f},{0.156098f,0.986732f,-0.0446371f}, +{0.281294f,0.959401f,0.0205868f},{0.610051f,0.757103f,0.233736f},{0.794174f,0.419187f,0.439966f}, +{0.826092f,0.100253f,0.554546f},{0.792747f,-0.146156f,0.591769f},{0.710556f,-0.384711f,0.589158f}, +{0.501651f,-0.653698f,0.566591f},{0.133125f,-0.849606f,0.510341f},{-0.253964f,-0.875214f,0.411708f}, +{-0.584528f,-0.765207f,0.269788f},{-0.86544f,-0.496404f,0.0677973f},{-0.988373f,-0.0650511f,-0.137429f}, +{-0.90281f,0.361254f,-0.2333f},{-0.696363f,0.682041f,-0.223379f},{-0.410113f,0.895258f,-0.174126f}, +{-0.189645f,0.972416f,-0.135803f},{-0.191705f,0.971681f,-0.138152f} +}, + +//lid 2 +{ +{0.187256f,0.116412f,-0.975389f},{0.129319f,-0.155775f,-0.979291f},{0.0579089f,-0.120735f,-0.990994f}, +{0.137498f,0.140876f,-0.980433f},{-0.0738917f,-0.0492811f,-0.996048f},{0.0954745f,0.189637f,-0.977201f}, +{-0.186073f,0.114379f,-0.975856f},{0.0656717f,0.26388f,-0.962317f},{-0.230893f,0.336505f,-0.912936f}, +{0.0590603f,0.34927f,-0.935159f},{-0.185953f,0.52868f,-0.828202f},{0.0783567f,0.419768f,-0.904243f}, +{-0.081558f,0.640475f,-0.763636f},{0.115249f,0.462736f,-0.878973f},{0.0452996f,0.67806f,-0.733609f}, +{0.163262f,0.479446f,-0.862251f},{0.176397f,0.659123f,-0.731054f},{0.220148f,0.470118f,-0.854707f}, +{0.301033f,0.59221f,-0.74744f},{0.279072f,0.432589f,-0.857313f},{0.403142f,0.486599f,-0.775047f}, +{0.325609f,0.373537f,-0.86859f},{0.466056f,0.363663f,-0.806561f},{0.349637f,0.31003f,-0.884101f}, +{0.484992f,0.244556f,-0.839628f},{0.352937f,0.25237f,-0.900969f},{0.462945f,0.13394f,-0.876209f}, +{0.337758f,0.197705f,-0.920235f},{0.401344f,0.0292842f,-0.915459f},{0.300295f,0.147658f,-0.942348f}, +{0.305224f,-0.0606399f,-0.950348f},{0.24473f,0.117415f,-0.962456f},{0.00340102f,-0.529962f,-0.848015f}, +{-0.0938613f,-0.478074f,-0.87329f},{-0.352454f,-0.406562f,-0.842902f},{-0.61385f,-0.160057f,-0.773027f}, +{-0.728006f,0.248101f,-0.639103f},{-0.613132f,0.611566f,-0.500057f},{-0.387794f,0.814176f,-0.432126f}, +{-0.143534f,0.892502f,-0.427596f},{0.0984222f,0.883124f,-0.458699f},{0.328302f,0.790308f,-0.51733f}, +{0.515789f,0.617037f,-0.594329f},{0.626024f,0.405388f,-0.666149f},{0.660135f,0.204925f,-0.722654f}, +{0.630921f,0.0188943f,-0.775617f},{0.52944f,-0.167059f,-0.831736f},{0.354696f,-0.333342f,-0.873541f}, +{0.243538f,-0.22025f,-0.944552f},{0.289875f,-0.232645f,-0.928358f},{-0.102856f,-0.809156f,-0.578522f}, +{-0.250447f,-0.767445f,-0.590174f},{-0.588122f,-0.665757f,-0.459217f},{-0.891009f,-0.37675f,-0.253303f}, +{-0.996878f,0.0697304f,-0.0370518f},{-0.868428f,0.488907f,0.0824813f},{-0.61914f,0.780765f,0.0840951f}, +{-0.313284f,0.949395f,0.0224016f},{0.0164307f,0.997917f,-0.0623912f},{0.342913f,0.922407f,-0.177695f}, +{0.620304f,0.711419f,-0.330312f},{0.779717f,0.412151f,-0.471353f},{0.821408f,0.11749f,-0.558109f}, +{0.780344f,-0.153673f,-0.606174f},{0.638631f,-0.418378f,-0.645841f},{0.382109f,-0.635191f,-0.671212f}, +{0.220792f,-0.550559f,-0.805069f},{0.263945f,-0.568498f,-0.779194f},{-0.135299f,-0.871634f,-0.471114f}, +{-0.249238f,-0.864706f,-0.436078f},{-0.599387f,-0.748603f,-0.283423f},{-0.885957f,-0.462876f,-0.0287339f}, +{-0.973386f,-0.055693f,0.222302f},{-0.882814f,0.320471f,0.343421f},{-0.69843f,0.628487f,0.342344f}, +{-0.425676f,0.863021f,0.272019f},{-0.0871386f,0.980548f,0.175874f},{0.268067f,0.961922f,0.0533471f}, +{0.599281f,0.790612f,-0.12568f},{0.819088f,0.473157f,-0.324372f},{0.881267f,0.120534f,-0.45699f}, +{0.838241f,-0.197245f,-0.508376f},{0.698173f,-0.493499f,-0.518664f},{0.435853f,-0.735407f,-0.518853f}, +{0.206757f,-0.833563f,-0.512273f},{0.22074f,-0.837852f,-0.499277f},{-0.129319f,-0.155775f,-0.979291f}, +{-0.187257f,0.116412f,-0.975389f},{-0.0579092f,-0.120735f,-0.990994f},{-0.137498f,0.140876f,-0.980433f}, +{0.0738916f,-0.0492814f,-0.996048f},{-0.0954751f,0.189636f,-0.977201f},{0.186073f,0.11438f,-0.975855f}, +{-0.0656712f,0.263882f,-0.962317f},{0.230893f,0.336506f,-0.912936f},{-0.05906f,0.349268f,-0.93516f}, +{0.185953f,0.528679f,-0.828203f},{-0.0783569f,0.419768f,-0.904243f},{0.0815577f,0.640475f,-0.763636f}, +{-0.11525f,0.462736f,-0.878973f},{-0.0452998f,0.67806f,-0.733609f},{-0.163262f,0.479446f,-0.862251f}, +{-0.176397f,0.659123f,-0.731054f},{-0.220148f,0.470118f,-0.854707f},{-0.301033f,0.592211f,-0.747439f}, +{-0.279072f,0.432589f,-0.857313f},{-0.403142f,0.486599f,-0.775047f},{-0.32561f,0.373536f,-0.86859f}, +{-0.466056f,0.363663f,-0.806561f},{-0.349637f,0.310031f,-0.884101f},{-0.484992f,0.244557f,-0.839628f}, +{-0.352937f,0.25237f,-0.900969f},{-0.462945f,0.13394f,-0.876209f},{-0.337758f,0.197703f,-0.920235f}, +{-0.401345f,0.0292838f,-0.915459f},{-0.300296f,0.147658f,-0.942348f},{-0.305224f,-0.0606397f,-0.950348f}, +{-0.24473f,0.117415f,-0.962456f},{-0.00340093f,-0.529962f,-0.848015f},{0.0938612f,-0.478075f,-0.87329f}, +{0.352454f,-0.406562f,-0.842902f},{0.61385f,-0.160057f,-0.773027f},{0.728006f,0.248101f,-0.639103f}, +{0.613132f,0.611566f,-0.500057f},{0.387794f,0.814176f,-0.432126f},{0.143534f,0.892502f,-0.427596f}, +{-0.0984221f,0.883124f,-0.458699f},{-0.328302f,0.790308f,-0.517331f},{-0.515789f,0.617037f,-0.594329f}, +{-0.626024f,0.405389f,-0.666149f},{-0.660135f,0.204925f,-0.722653f},{-0.63092f,0.018894f,-0.775617f}, +{-0.529439f,-0.167059f,-0.831736f},{-0.354696f,-0.333342f,-0.873541f},{-0.243538f,-0.22025f,-0.944552f}, +{-0.289875f,-0.232645f,-0.928358f},{0.102856f,-0.809156f,-0.578522f},{0.250447f,-0.767445f,-0.590174f}, +{0.588122f,-0.665757f,-0.459217f},{0.891009f,-0.37675f,-0.253303f},{0.996878f,0.0697302f,-0.0370519f}, +{0.868427f,0.488908f,0.0824812f},{0.61914f,0.780765f,0.0840952f},{0.313285f,0.949395f,0.0224016f}, +{-0.0164307f,0.997917f,-0.0623912f},{-0.342913f,0.922407f,-0.177696f},{-0.620304f,0.711419f,-0.330313f}, +{-0.779717f,0.412152f,-0.471352f},{-0.821408f,0.11749f,-0.558108f},{-0.780344f,-0.153673f,-0.606175f}, +{-0.638631f,-0.418378f,-0.645841f},{-0.38211f,-0.635191f,-0.671212f},{-0.220793f,-0.550559f,-0.805068f}, +{-0.263945f,-0.568497f,-0.779194f},{0.135299f,-0.871634f,-0.471114f},{0.249238f,-0.864706f,-0.436078f}, +{0.599387f,-0.748603f,-0.283424f},{0.885957f,-0.462876f,-0.0287343f},{0.973386f,-0.0556929f,0.222302f}, +{0.882814f,0.32047f,0.343421f},{0.69843f,0.628487f,0.342344f},{0.425676f,0.863021f,0.272019f}, +{0.0871387f,0.980548f,0.175874f},{-0.268067f,0.961922f,0.0533472f},{-0.599281f,0.790612f,-0.12568f}, +{-0.819088f,0.473157f,-0.324372f},{-0.881267f,0.120534f,-0.45699f},{-0.838241f,-0.197244f,-0.508376f}, +{-0.698173f,-0.4935f,-0.518664f},{-0.435853f,-0.735407f,-0.518853f},{-0.206757f,-0.833563f,-0.512274f}, +{-0.220741f,-0.837852f,-0.499276f},{-0.25909f,0.275155f,0.925831f},{-0.260689f,0.411094f,0.873524f}, +{-0.317162f,0.351731f,0.880735f},{-0.303933f,0.249266f,0.919506f},{-0.386375f,0.278498f,0.879291f}, +{-0.337758f,0.208897f,0.917759f},{-0.432851f,0.205417f,0.877749f},{-0.352056f,0.172151f,0.920011f}, +{-0.456366f,0.140033f,0.878704f},{-0.353222f,0.148434f,0.923689f},{-0.455199f,0.074466f,0.88727f}, +{-0.346659f,0.125659f,0.929536f},{-0.417496f,-0.00714653f,0.908651f},{-0.320588f,0.0897104f,0.942961f}, +{-0.327345f,-0.104932f,0.93906f},{-0.26398f,0.0534085f,0.963048f},{-0.192886f,-0.188203f,0.963003f}, +{-0.19785f,0.0430034f,0.979288f},{-0.0492551f,-0.219339f,0.974405f},{-0.152308f,0.0574572f,0.986662f}, +{0.0717795f,-0.1755f,0.981859f},{-0.129198f,0.08014f,0.988375f},{0.147879f,-0.0481031f,0.987835f}, +{-0.116173f,0.112476f,0.98684f},{0.154069f,0.137754f,0.97841f},{-0.114789f,0.165197f,0.979558f}, +{0.0873191f,0.307741f,0.947455f},{-0.135074f,0.224582f,0.965048f},{-0.0179641f,0.406632f,0.913415f}, +{-0.172292f,0.265112f,0.9487f},{-0.128381f,0.433488f,0.891968f},{-0.214693f,0.280536f,0.935525f}, +{-0.245676f,0.670307f,0.700237f},{-0.3474f,0.544072f,0.76374f},{-0.479751f,0.386625f,0.78763f}, +{-0.557924f,0.231905f,0.796832f},{-0.598018f,0.101114f,0.795079f},{-0.607651f,-0.027379f,0.793732f}, +{-0.558296f,-0.19439f,0.806547f},{-0.397246f,-0.396803f,0.827492f},{-0.137564f,-0.552716f,0.821937f}, +{0.13254f,-0.603532f,0.786246f},{0.372904f,-0.543639f,0.751931f},{0.581714f,-0.336158f,0.74068f}, +{0.668633f,0.0458593f,0.742177f},{0.534189f,0.433018f,0.726043f},{0.285923f,0.644991f,0.708685f}, +{0.0453926f,0.700839f,0.711874f},{-0.108407f,0.543837f,0.832159f},{-0.14636f,0.521887f,0.840365f}, +{-0.21819f,0.908956f,0.355236f},{-0.37833f,0.784453f,0.491427f},{-0.599202f,0.541926f,0.589299f}, +{-0.711835f,0.275202f,0.646185f},{-0.754253f,0.0427209f,0.655192f},{-0.755977f,-0.18121f,0.629016f}, +{-0.675388f,-0.448443f,0.585449f},{-0.432908f,-0.72345f,0.537783f},{-0.0651935f,-0.876173f,0.477568f}, +{0.28624f,-0.870309f,0.400785f},{0.585434f,-0.749534f,0.308975f},{0.849956f,-0.483778f,0.208648f}, +{0.988981f,-0.0370003f,0.143341f},{0.877374f,0.453848f,0.15568f},{0.581119f,0.781752f,0.226196f}, +{0.246531f,0.919117f,0.307321f},{0.0350671f,0.839431f,0.542334f},{0.00382345f,0.823531f,0.567259f}, +{-0.199301f,0.957252f,0.209638f},{-0.313378f,0.912873f,0.261643f},{-0.604842f,0.684644f,0.40673f}, +{-0.768845f,0.368021f,0.522913f},{-0.820627f,0.0645513f,0.567806f},{-0.811706f,-0.213571f,0.543618f}, +{-0.72293f,-0.512783f,0.463062f},{-0.476565f,-0.803756f,0.356177f},{-0.0965455f,-0.958156f,0.269474f}, +{0.275182f,-0.938919f,0.206655f},{0.589036f,-0.798747f,0.122636f},{0.849483f,-0.527538f,-0.00910188f}, +{0.984391f,-0.112052f,-0.135719f},{0.925676f,0.342887f,-0.159849f},{0.702208f,0.708021f,-0.0749055f}, +{0.382441f,0.923041f,0.0416495f},{0.150729f,0.982769f,0.106983f},{0.147868f,0.982829f,0.110375f}, +{0.260689f,0.411093f,0.873524f},{0.25909f,0.275155f,0.92583f},{0.317162f,0.351731f,0.880735f}, +{0.303932f,0.249266f,0.919506f},{0.386375f,0.278498f,0.879291f},{0.337757f,0.208897f,0.917759f}, +{0.432851f,0.205417f,0.877749f},{0.352056f,0.172151f,0.920011f},{0.456366f,0.140033f,0.878704f}, +{0.353222f,0.148434f,0.923689f},{0.455199f,0.0744661f,0.88727f},{0.346659f,0.125659f,0.929536f}, +{0.417496f,-0.00714663f,0.908651f},{0.320588f,0.0897105f,0.942961f},{0.327345f,-0.104932f,0.93906f}, +{0.26398f,0.0534084f,0.963048f},{0.192886f,-0.188203f,0.963003f},{0.197851f,0.0430034f,0.979288f}, +{0.0492551f,-0.219339f,0.974405f},{0.152308f,0.0574573f,0.986662f},{-0.0717796f,-0.1755f,0.981859f}, +{0.129198f,0.0801399f,0.988375f},{-0.147879f,-0.048103f,0.987835f},{0.116173f,0.112476f,0.98684f}, +{-0.154069f,0.137754f,0.97841f},{0.114789f,0.165197f,0.979558f},{-0.0873192f,0.307741f,0.947455f}, +{0.135074f,0.224582f,0.965048f},{0.0179641f,0.406632f,0.913415f},{0.172292f,0.265112f,0.9487f}, +{0.128382f,0.433487f,0.891968f},{0.214693f,0.280536f,0.935525f},{0.245676f,0.670307f,0.700237f}, +{0.3474f,0.544072f,0.76374f},{0.479751f,0.386625f,0.78763f},{0.557924f,0.231905f,0.796832f}, +{0.598018f,0.101113f,0.795079f},{0.607651f,-0.0273789f,0.793732f},{0.558296f,-0.19439f,0.806547f}, +{0.397246f,-0.396803f,0.827492f},{0.137564f,-0.552716f,0.821937f},{-0.13254f,-0.603532f,0.786246f}, +{-0.372904f,-0.543639f,0.751931f},{-0.581714f,-0.336158f,0.740679f},{-0.668633f,0.0458594f,0.742177f}, +{-0.534188f,0.433018f,0.726043f},{-0.285924f,0.644991f,0.708685f},{-0.0453924f,0.700838f,0.711874f}, +{0.108408f,0.543836f,0.83216f},{0.14636f,0.521887f,0.840365f},{0.21819f,0.908956f,0.355237f}, +{0.37833f,0.784453f,0.491427f},{0.599202f,0.541926f,0.589299f},{0.711835f,0.275203f,0.646185f}, +{0.754253f,0.0427209f,0.655192f},{0.755977f,-0.18121f,0.629017f},{0.675388f,-0.448443f,0.585449f}, +{0.432908f,-0.72345f,0.537783f},{0.0651936f,-0.876173f,0.477568f},{-0.28624f,-0.870309f,0.400785f}, +{-0.585434f,-0.749534f,0.308976f},{-0.849956f,-0.483778f,0.208648f},{-0.988981f,-0.0370008f,0.14334f}, +{-0.877374f,0.453849f,0.15568f},{-0.581118f,0.781752f,0.226197f},{-0.246531f,0.919117f,0.307321f}, +{-0.0350672f,0.839431f,0.542333f},{-0.0038228f,0.823531f,0.567259f},{0.199301f,0.957252f,0.209638f}, +{0.313378f,0.912873f,0.261644f},{0.604842f,0.684644f,0.40673f},{0.768845f,0.368021f,0.522914f}, +{0.820627f,0.0645516f,0.567806f},{0.811706f,-0.213571f,0.543618f},{0.722929f,-0.512783f,0.463062f}, +{0.476565f,-0.803756f,0.356177f},{0.0965456f,-0.958156f,0.269474f},{-0.275182f,-0.938919f,0.206655f}, +{-0.589036f,-0.798747f,0.122636f},{-0.849483f,-0.527538f,-0.00910149f},{-0.984391f,-0.112052f,-0.135719f}, +{-0.925676f,0.342887f,-0.159849f},{-0.702208f,0.708021f,-0.0749052f},{-0.382441f,0.923041f,0.0416498f}, +{-0.150728f,0.982769f,0.106983f},{-0.147869f,0.982829f,0.110375f} +}, + +//lid 1 +{ +{0.170033f,-0.0808841f,-0.982113f},{0.0991637f,-0.351643f,-0.930867f},{0.0327961f,-0.322779f,-0.945906f}, +{0.127706f,-0.063447f,-0.989781f},{-0.086217f,-0.267487f,-0.959696f},{0.0961476f,-0.0272848f,-0.994993f}, +{-0.181751f,-0.127272f,-0.975074f},{0.0739063f,0.0353914f,-0.996637f},{-0.215664f,0.0915415f,-0.972167f}, +{0.0716391f,0.12319f,-0.989794f},{-0.16116f,0.311979f,-0.936321f},{0.0969912f,0.209661f,-0.972952f}, +{-0.046894f,0.454896f,-0.889309f},{0.141817f,0.267782f,-0.952985f},{0.0844277f,0.508821f,-0.856722f}, +{0.194301f,0.292492f,-0.93632f},{0.212463f,0.495016f,-0.842507f},{0.24922f,0.287968f,-0.924643f}, +{0.328265f,0.43128f,-0.840381f},{0.300985f,0.256755f,-0.918415f},{0.419234f,0.333799f,-0.844287f}, +{0.338886f,0.207317f,-0.917701f},{0.473826f,0.221963f,-0.852186f},{0.35754f,0.153168f,-0.921252f}, +{0.489045f,0.106572f,-0.865724f},{0.359076f,0.0964688f,-0.928309f},{0.463733f,-0.0144368f,-0.885857f}, +{0.339982f,0.0312277f,-0.939913f},{0.394368f,-0.138702f,-0.908425f},{0.293215f,-0.0338574f,-0.955447f}, +{0.28677f,-0.245835f,-0.92592f},{0.228639f,-0.0745071f,-0.970656f},{-0.0325453f,-0.68793f,-0.725047f}, +{-0.127355f,-0.639044f,-0.758554f},{-0.364076f,-0.573592f,-0.733786f},{-0.596709f,-0.366853f,-0.713692f}, +{-0.722067f,0.0228584f,-0.691446f},{-0.613531f,0.44611f,-0.651587f},{-0.35934f,0.699754f,-0.61743f}, +{-0.0981476f,0.785488f,-0.611045f},{0.139556f,0.766936f,-0.626366f},{0.355613f,0.66565f,-0.656087f}, +{0.527228f,0.494736f,-0.690845f},{0.628305f,0.295939f,-0.719481f},{0.663179f,0.0997115f,-0.741789f}, +{0.635683f,-0.105603f,-0.764693f},{0.52601f,-0.323037f,-0.78674f},{0.334451f,-0.507225f,-0.79427f}, +{0.212833f,-0.406554f,-0.888491f},{0.263052f,-0.41547f,-0.87074f},{-0.128016f,-0.904378f,-0.407079f}, +{-0.279766f,-0.859132f,-0.428513f},{-0.595541f,-0.737597f,-0.318249f},{-0.867722f,-0.465516f,-0.174224f}, +{-0.997693f,-0.0361903f,-0.0574295f},{-0.89954f,0.435753f,-0.03076f},{-0.618557f,0.779961f,-0.0951219f}, +{-0.277132f,0.94154f,-0.191575f},{0.0567628f,0.959392f,-0.276306f},{0.367868f,0.857611f,-0.359411f}, +{0.623082f,0.636977f,-0.453903f},{0.771953f,0.34731f,-0.532415f},{0.820825f,0.0532505f,-0.568692f}, +{0.786007f,-0.245625f,-0.567328f},{0.636046f,-0.542784f,-0.548481f},{0.366481f,-0.767941f,-0.525317f}, +{0.19982f,-0.715118f,-0.669835f},{0.230048f,-0.72379f,-0.650543f},{-0.153901f,-0.944866f,-0.289037f}, +{-0.27318f,-0.925861f,-0.261063f},{-0.612847f,-0.778574f,-0.135058f},{-0.871441f,-0.486954f,0.0588787f}, +{-0.968914f,-0.0944346f,0.228664f},{-0.908279f,0.309565f,0.281424f},{-0.714681f,0.667427f,0.209219f}, +{-0.406015f,0.911098f,0.0710771f},{-0.0481226f,0.997305f,-0.0553851f},{0.299353f,0.941114f,-0.15714f}, +{0.604763f,0.747553f,-0.274638f},{0.80719f,0.435193f,-0.398812f},{0.877878f,0.0840118f,-0.471458f}, +{0.843833f,-0.263295f,-0.46757f},{0.69423f,-0.590936f,-0.4109f},{0.421959f,-0.834474f,-0.354407f}, +{0.195816f,-0.924426f,-0.327249f},{0.200539f,-0.924982f,-0.322788f},{-0.0991637f,-0.351643f,-0.930867f}, +{-0.170033f,-0.080884f,-0.982113f},{-0.0327961f,-0.322779f,-0.945906f},{-0.127706f,-0.0634469f,-0.989781f}, +{0.0862171f,-0.267487f,-0.959696f},{-0.0961476f,-0.0272849f,-0.994993f},{0.181751f,-0.127272f,-0.975074f}, +{-0.0739063f,0.0353914f,-0.996637f},{0.215664f,0.0915414f,-0.972167f},{-0.0716392f,0.12319f,-0.989794f}, +{0.16116f,0.311979f,-0.936321f},{-0.0969912f,0.209661f,-0.972952f},{0.0468939f,0.454896f,-0.889309f}, +{-0.141817f,0.267782f,-0.952985f},{-0.0844277f,0.508821f,-0.856722f},{-0.194301f,0.292492f,-0.93632f}, +{-0.212463f,0.495016f,-0.842507f},{-0.24922f,0.287968f,-0.924643f},{-0.328265f,0.43128f,-0.840381f}, +{-0.300984f,0.256755f,-0.918415f},{-0.419234f,0.333799f,-0.844287f},{-0.338886f,0.207317f,-0.917701f}, +{-0.473826f,0.221963f,-0.852186f},{-0.35754f,0.153168f,-0.921252f},{-0.489045f,0.106571f,-0.865724f}, +{-0.359076f,0.0964685f,-0.928309f},{-0.463733f,-0.014437f,-0.885857f},{-0.339982f,0.0312277f,-0.939913f}, +{-0.394368f,-0.138702f,-0.908425f},{-0.293215f,-0.0338572f,-0.955447f},{-0.28677f,-0.245835f,-0.92592f}, +{-0.228639f,-0.0745069f,-0.970656f},{0.0325452f,-0.68793f,-0.725047f},{0.127355f,-0.639044f,-0.758554f}, +{0.364076f,-0.573592f,-0.733786f},{0.596709f,-0.366853f,-0.713692f},{0.722066f,0.0228584f,-0.691446f}, +{0.613531f,0.446109f,-0.651587f},{0.35934f,0.699754f,-0.61743f},{0.0981477f,0.785488f,-0.611045f}, +{-0.139556f,0.766936f,-0.626366f},{-0.355613f,0.66565f,-0.656087f},{-0.527228f,0.494736f,-0.690845f}, +{-0.628305f,0.295939f,-0.719481f},{-0.663179f,0.0997115f,-0.741789f},{-0.635683f,-0.105603f,-0.764693f}, +{-0.52601f,-0.323037f,-0.78674f},{-0.334451f,-0.507225f,-0.79427f},{-0.212833f,-0.406554f,-0.888491f}, +{-0.263052f,-0.41547f,-0.87074f},{0.128016f,-0.904378f,-0.407079f},{0.279766f,-0.859132f,-0.428513f}, +{0.595541f,-0.737597f,-0.318249f},{0.867721f,-0.465516f,-0.174224f},{0.997693f,-0.0361901f,-0.0574301f}, +{0.89954f,0.435753f,-0.0307605f},{0.618557f,0.779961f,-0.0951221f},{0.277132f,0.94154f,-0.191575f}, +{-0.0567628f,0.959392f,-0.276306f},{-0.367868f,0.857611f,-0.359411f},{-0.623082f,0.636978f,-0.453903f}, +{-0.771953f,0.34731f,-0.532415f},{-0.820825f,0.0532507f,-0.568692f},{-0.786007f,-0.245625f,-0.567328f}, +{-0.636046f,-0.542784f,-0.548481f},{-0.366481f,-0.767941f,-0.525317f},{-0.199821f,-0.715118f,-0.669835f}, +{-0.230048f,-0.723789f,-0.650544f},{0.153902f,-0.944866f,-0.289038f},{0.27318f,-0.925861f,-0.261063f}, +{0.612847f,-0.778574f,-0.135058f},{0.871441f,-0.486954f,0.058879f},{0.968914f,-0.0944348f,0.228664f}, +{0.908278f,0.309565f,0.281425f},{0.714681f,0.667427f,0.209219f},{0.406015f,0.911098f,0.0710772f}, +{0.0481226f,0.997305f,-0.0553851f},{-0.299353f,0.941114f,-0.157141f},{-0.604763f,0.747553f,-0.274638f}, +{-0.80719f,0.435193f,-0.398812f},{-0.877878f,0.084012f,-0.471458f},{-0.843833f,-0.263295f,-0.46757f}, +{-0.69423f,-0.590936f,-0.410901f},{-0.421959f,-0.834474f,-0.354407f},{-0.195816f,-0.924426f,-0.327249f}, +{-0.200539f,-0.924982f,-0.322788f},{-0.274592f,0.174388f,0.945615f},{-0.279076f,0.301266f,0.911787f}, +{-0.329298f,0.2523f,0.909894f},{-0.314928f,0.1548f,0.936406f},{-0.393562f,0.19355f,0.898692f}, +{-0.344531f,0.121609f,0.930865f},{-0.440573f,0.129756f,0.88829f},{-0.358316f,0.0865385f,0.929581f}, +{-0.468003f,0.0598531f,0.881698f},{-0.359773f,0.0538913f,0.931482f},{-0.468217f,-0.0283813f,0.883158f}, +{-0.348396f,0.0130349f,0.937257f},{-0.422712f,-0.146026f,0.894422f},{-0.311357f,-0.0425276f,0.949341f}, +{-0.314744f,-0.27671f,0.907947f},{-0.244768f,-0.0926729f,0.965143f},{-0.162371f,-0.373759f,0.913203f}, +{-0.175774f,-0.11056f,0.978202f},{-0.0114407f,-0.403112f,0.915079f},{-0.132327f,-0.100493f,0.986099f}, +{0.105896f,-0.3578f,0.927774f},{-0.111692f,-0.0809213f,0.990443f},{0.173376f,-0.234368f,0.956563f}, +{-0.0998722f,-0.0481502f,0.993835f},{0.168055f,-0.0433064f,0.984826f},{-0.101326f,0.0145724f,0.994747f}, +{0.0843648f,0.148394f,0.985323f},{-0.130019f,0.0931257f,0.987129f},{-0.0359753f,0.269135f,0.96243f}, +{-0.178792f,0.15071f,0.972276f},{-0.151761f,0.310221f,0.938473f},{-0.229283f,0.174998f,0.957499f}, +{-0.2678f,0.5358f,0.800751f},{-0.35637f,0.423467f,0.832872f},{-0.476561f,0.294623f,0.828304f}, +{-0.558104f,0.164185f,0.813365f},{-0.609262f,0.0354151f,0.792178f},{-0.62625f,-0.121961f,0.770023f}, +{-0.567602f,-0.338786f,0.750368f},{-0.380861f,-0.573083f,0.725617f},{-0.102764f,-0.720569f,0.685726f}, +{0.167181f,-0.746836f,0.643651f},{0.393748f,-0.676346f,0.62251f},{0.583979f,-0.49102f,0.646427f}, +{0.672544f,-0.139115f,0.726865f},{0.53245f,0.270395f,0.802112f},{0.252808f,0.510165f,0.822083f}, +{-0.000430566f,0.567174f,0.823598f},{-0.144443f,0.416356f,0.897655f},{-0.17502f,0.398991f,0.900097f}, +{-0.244077f,0.810462f,0.532521f},{-0.388554f,0.67049f,0.632036f},{-0.585245f,0.450842f,0.673966f}, +{-0.698492f,0.217713f,0.681697f},{-0.757717f,-0.00531936f,0.652561f},{-0.770035f,-0.256798f,0.584039f}, +{-0.673661f,-0.561197f,0.480873f},{-0.405964f,-0.834516f,0.372525f},{-0.037435f,-0.955912f,0.291259f}, +{0.30449f,-0.923199f,0.234498f},{0.590489f,-0.787303f,0.177417f},{0.834721f,-0.536296f,0.125006f}, +{0.983082f,-0.12496f,0.133923f},{0.894006f,0.377014f,0.242101f},{0.565197f,0.73007f,0.384122f}, +{0.199286f,0.847592f,0.491806f},{-0.012911f,0.718485f,0.695423f},{-0.0557474f,0.689361f,0.722269f}, +{-0.227453f,0.884551f,0.407227f},{-0.333236f,0.830407f,0.446518f},{-0.595902f,0.602506f,0.530931f}, +{-0.750001f,0.315665f,0.581252f},{-0.817264f,0.0288773f,0.575539f},{-0.822818f,-0.269884f,0.500134f}, +{-0.71988f,-0.598072f,0.352255f},{-0.447652f,-0.874512f,0.186644f},{-0.0739497f,-0.993583f,0.0855858f}, +{0.287303f,-0.956873f,0.0430333f},{0.596468f,-0.802625f,-0.0044153f},{0.842439f,-0.531975f,-0.0854336f}, +{0.979279f,-0.138682f,-0.147577f},{0.942167f,0.319173f,-0.102225f},{0.704603f,0.707437f,0.0553817f}, +{0.351449f,0.908373f,0.226586f},{0.114208f,0.945229f,0.305776f},{0.0986314f,0.941089f,0.323454f}, +{0.279076f,0.301266f,0.911787f},{0.274592f,0.174388f,0.945615f},{0.329298f,0.2523f,0.909894f}, +{0.314929f,0.1548f,0.936406f},{0.393563f,0.19355f,0.898692f},{0.344531f,0.121608f,0.930865f}, +{0.440574f,0.129756f,0.88829f},{0.358316f,0.0865388f,0.929581f},{0.468003f,0.0598537f,0.881698f}, +{0.359773f,0.0538922f,0.931482f},{0.468217f,-0.0283817f,0.883158f},{0.348396f,0.0130332f,0.937257f}, +{0.422711f,-0.146026f,0.894422f},{0.311357f,-0.0425282f,0.949341f},{0.314744f,-0.27671f,0.907947f}, +{0.244769f,-0.0926728f,0.965142f},{0.162371f,-0.373759f,0.913203f},{0.175773f,-0.11056f,0.978203f}, +{0.0114408f,-0.403112f,0.915079f},{0.132328f,-0.100494f,0.986099f},{-0.105896f,-0.3578f,0.927774f}, +{0.111692f,-0.0809209f,0.990443f},{-0.173376f,-0.234368f,0.956563f},{0.0998722f,-0.0481507f,0.993835f}, +{-0.168055f,-0.0433065f,0.984826f},{0.101326f,0.0145723f,0.994747f},{-0.0843647f,0.148394f,0.985323f}, +{0.130019f,0.0931262f,0.987128f},{0.0359753f,0.269135f,0.96243f},{0.178792f,0.150709f,0.972276f}, +{0.151761f,0.310221f,0.938473f},{0.229284f,0.174998f,0.957499f},{0.2678f,0.5358f,0.800751f}, +{0.35637f,0.423467f,0.832872f},{0.476561f,0.294623f,0.828304f},{0.558104f,0.164184f,0.813365f}, +{0.609262f,0.0354153f,0.792177f},{0.626251f,-0.121961f,0.770023f},{0.567602f,-0.338786f,0.750368f}, +{0.380861f,-0.573083f,0.725617f},{0.102764f,-0.720569f,0.685726f},{-0.167181f,-0.746836f,0.643651f}, +{-0.393747f,-0.676347f,0.622509f},{-0.583979f,-0.49102f,0.646427f},{-0.672543f,-0.139115f,0.726865f}, +{-0.53245f,0.270395f,0.802112f},{-0.252808f,0.510165f,0.822083f},{0.000430498f,0.567174f,0.823598f}, +{0.144443f,0.416356f,0.897655f},{0.17502f,0.398991f,0.900097f},{0.244077f,0.810462f,0.532521f}, +{0.388554f,0.67049f,0.632036f},{0.585245f,0.450842f,0.673966f},{0.698492f,0.217713f,0.681697f}, +{0.757717f,-0.00531963f,0.652562f},{0.770035f,-0.256798f,0.584039f},{0.673661f,-0.561197f,0.480873f}, +{0.405965f,-0.834516f,0.372525f},{0.0374351f,-0.955912f,0.291259f},{-0.30449f,-0.923199f,0.234498f}, +{-0.590489f,-0.787303f,0.177417f},{-0.834721f,-0.536297f,0.125006f},{-0.983082f,-0.12496f,0.133923f}, +{-0.894006f,0.377014f,0.242101f},{-0.565197f,0.73007f,0.384122f},{-0.199286f,0.847592f,0.491806f}, +{0.012911f,0.718485f,0.695423f},{0.0557474f,0.689362f,0.722269f},{0.227453f,0.884551f,0.407227f}, +{0.333236f,0.830407f,0.446518f},{0.595902f,0.602506f,0.53093f},{0.750001f,0.315666f,0.581252f}, +{0.817264f,0.0288774f,0.575539f},{0.822817f,-0.269884f,0.500134f},{0.71988f,-0.598072f,0.352255f}, +{0.447652f,-0.874512f,0.186644f},{0.0739498f,-0.993583f,0.0855857f},{-0.287303f,-0.956873f,0.0430335f}, +{-0.596468f,-0.802625f,-0.00441504f},{-0.842439f,-0.531975f,-0.0854334f},{-0.979279f,-0.138682f,-0.147577f}, +{-0.942167f,0.319173f,-0.102225f},{-0.704604f,0.707437f,0.0553818f},{-0.351449f,0.908373f,0.226586f}, +{-0.114207f,0.945229f,0.305777f},{-0.0986314f,0.941089f,0.323454f} +} + +}; + +static GLfloat textures [84][2] = { +//lid 1 +{0.0f,1.0f},{0.0f,0.875f},{0.0625f,0.875f}, +{0.0625f,1.0f},{0.125f,0.875f},{0.125f,1.0f}, +{0.1875f,0.875f},{0.1875f,1.0f},{0.25f,0.875f}, +{0.25f,1.0f},{0.3125f,0.875f},{0.3125f,1.0f}, +{0.375f,0.875f},{0.375f,1.0f},{0.4375f,0.875f}, +{0.4375f,1.0f},{0.5f,0.875f},{0.5f,1.0f}, +{0.5625f,0.875f},{0.5625f,1.0f},{0.625f,0.875f}, +{0.625f,1.0f},{0.6875f,0.875f},{0.6875f,1.0f}, +{0.75f,0.875f},{0.75f,1.0f},{0.8125f,0.875f}, +{0.8125f,1.0f},{0.875f,0.875f},{0.875f,1.0f}, +{0.9375f,0.875f},{0.9375f,1.0f},{1.0f,0.875f}, +{0.0f,0.75f},{0.0625f,0.75f},{0.125f,0.75f}, +{0.1875f,0.75f},{0.25f,0.75f},{0.3125f,0.75f}, +{0.375f,0.75f},{0.4375f,0.75f},{0.5f,0.75f}, +{0.5625f,0.75f},{0.625f,0.75f},{0.6875f,0.75f}, +{0.75f,0.75f},{0.8125f,0.75f},{0.875f,0.75f}, +{0.9375f,0.75f},{1.0f,0.75f},{0.0f,0.625f}, +{0.0625f,0.625f},{0.125f,0.625f},{0.1875f,0.625f}, +{0.25f,0.625f},{0.3125f,0.625f},{0.375f,0.625f}, +{0.4375f,0.625f},{0.5f,0.625f},{0.5625f,0.625f}, +{0.625f,0.625f},{0.6875f,0.625f},{0.75f,0.625f}, +{0.8125f,0.625f},{0.875f,0.625f},{0.9375f,0.625f}, +{1.0f,0.625f},{0.0f,0.5f},{0.0625f,0.5f}, +{0.125f,0.5f},{0.1875f,0.5f},{0.25f,0.5f}, +{0.3125f,0.5f},{0.375f,0.5f},{0.4375f,0.5f}, +{0.5f,0.5f},{0.5625f,0.5f},{0.625f,0.5f}, +{0.6875f,0.5f},{0.75f,0.5f},{0.8125f,0.5f}, +{0.875f,0.5f},{0.9375f,0.5f},{1.0f,0.5f} +}; + +static int material_ref [1][2] = { +{0,448} +}; + +static void MyMaterial(GLenum mode,GLfloat *f,GLfloat alpha) +{ + GLfloat d[4]; + d[0]=f[0]; + d[1]=f[1]; + d[2]=f[2]; + d[3]=alpha; + glMaterialfv (GL_FRONT_AND_BACK,mode,d); +}; + + +static void SelectMaterial(int i) +{ + // + // Define the reflective properties of the 3D Object faces. + // + glEnd(); + GLfloat alpha=materials[i].alpha; + MyMaterial (GL_AMBIENT, materials[i].ambient,alpha); + MyMaterial (GL_DIFFUSE, materials[i].diffuse,alpha); + MyMaterial (GL_SPECULAR, materials[i].specular,alpha); + MyMaterial (GL_EMISSION, materials[i].emission,alpha); + glMaterialf (GL_FRONT_AND_BACK,GL_SHININESS,materials[i].phExp); + glBegin(GL_TRIANGLES); + +}; + +static GLint Gen3DObjectList(int numlid) +{ + int i; + int j; + + GLint lid=glGenLists(1); + int mcount=0; + int mindex=0; + glNewList(lid, GL_COMPILE); + + glBegin (GL_TRIANGLES); + for(i=0;i +#else +#include +#endif + + +#include "Utilities.h" +#include "QTUtilities.h" + +#include "camdata.h" +#include "camproc.h" + + +#define BailErr(err) {if(err != noErr) goto bail;} + + +int main(void) +{ + EnterMovies(); + CamProc(); // change this prototype-> no windows + fprintf(stderr, "you have just murdered 1000 people."); + RunApplicationEventLoop(); + return 0; +} \ No newline at end of file diff -r f854402837ba -r ed017b9c532d plugins/crazychat/mat_struct.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/mat_struct.h Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,12 @@ +#include +#include + +typedef struct sample_MATERIAL{ + GLfloat ambient[3]; + GLfloat diffuse[3]; + GLfloat specular[3]; + GLfloat emission[3]; + GLfloat alpha; + GLfloat phExp; + int texture; +}sample_MATERIAL; \ No newline at end of file diff -r f854402837ba -r ed017b9c532d plugins/crazychat/models.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/models.c Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,75 @@ +#include"glm.h" +#include +#include +#include "face.h" + +#define ASCII_DIGITS 48 + +void init_lists(GLint** lists, GLMmodel*** models, int num_lists, char* name, float my_scale){ + int i; + char c; + GLint* temp_lists; + GLMmodel** temp_models; + char* temp = (char*)malloc(sizeof(char) * (strlen(name) + strlen(".obj" + 3))); + GLMmodel* model; + float dum; + temp_lists = (GLint*)malloc(sizeof(GLint) * num_lists); + temp_models = (GLMmodel**)malloc(sizeof(GLMmodel*) * num_lists); + + for(i=0;i=2){ + curr_lid-=2; + } + else if(curr_lid==1){ + curr_lid--; + } + curr_lid=0; + } + return curr_lid; +} + +void apply_output_mode(FACE f, GLfloat* angle, GLfloat* yangle, BOOL* left_open, BOOL* right_open, GLfloat* open, DIRECTION* dir) +{ + struct doggy_struct* dog = (struct doggy_struct*)f->char_struct; + if(f->my_mode==NORMAL){ + f->curr_z_angle=0; + return; + } + if(f->my_mode==CRAZY1){ + f->curr_z_angle = f->curr_z_angle+ANGLE_INC; + *angle = f->curr_z_angle; + } +} diff -r f854402837ba -r ed017b9c532d plugins/crazychat/models.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/models.h Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,9 @@ +#include"glm.h" +#include +#include + +void init_lists(GLint** lists, GLMmodel*** models, int num_lists, char* name, float my_scale); + +int compute_lid(BOOL open, int curr_lid, int max); + +void apply_output_mode(FACE f, GLfloat* angle, GLfloat* yangle, BOOL* left_open, BOOL* right_open, GLfloat* open, DIRECTION* dir); \ No newline at end of file diff -r f854402837ba -r ed017b9c532d plugins/crazychat/sharky.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/sharky.c Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,249 @@ +#include "face.h" +#include "sharky.h" +#include +#include +#include "models.h" + +#define NUM_SHARKS 12 +#define NUM_SHARK_LIDS 10 +#define NUM_FINS 4 +#define NUM_SHARK_EYES 1 +#define NUM_SHARK_PUPILS 1 +#define NUM_SHARK_IRIS 1 +#define SHARK_SCALE .025 +#define SHARK_EYES_Y 7.5*SHARK_SCALE // .295 +#define SHARK_EYES_X 28.89*SHARK_SCALE // .26 +#define SHARK_EYES_Z 56*SHARK_SCALE // .38 +#define SHARK_FINS_X 75*SHARK_SCALE //.65 +#define SHARK_FINS_Y -44*SHARK_SCALE//.18 +#define SHARK_FINS_Z -15*SHARK_SCALE //.05 +#define SHARK_IRIS_X 0*SHARK_SCALE +#define SHARK_IRIS_Y 1.67*SHARK_SCALE//.015 +#define SHARK_IRIS_Z 5.0*SHARK_SCALE//.08 +#define SHARK_PUP_X 0*SHARK_SCALE +#define SHARK_PUP_Y 0*SHARK_SCALE +#define SHARK_PUP_Z 2.5*SHARK_SCALE //.028 +#define SHARK_IRIS_SCALE .10*SHARK_SCALE +#define SHARK_PUP_SCALE .08*SHARK_SCALE +#define SHARK_FIN_SCALE .9*SHARK_SCALE +#define SHARK_EYE_SCALE .7*SHARK_SCALE +#define SHARK_LID_SCALE .84*SHARK_SCALE +#define SHARK_HEAD_SCALE .58*SHARK_SCALE +#define TOP_FIN_X 0*SHARK_SCALE +#define TOP_FIN_Y 4*SHARK_SCALE +#define TOP_FIN_Z 25*SHARK_SCALE +#define BOT_FIN_X 0*SHARK_SCALE +#define BOT_FIN_Y 9*SHARK_SCALE +#define BOT_FIN_Z -70*SHARK_SCALE +#define TOP_FIN_SCALE 2*SHARK_SCALE +#define MAX_FIN_ANGLE 90.0 +#define MIN_FIN_ANGLE -20.0 +#define ANGLE_INC 60 +float fins=0; + + +char shark_mtl_file[MAX_FILE_LEN] = "dog.mtl"; +// the initial dog materials +GLint init_shark_mats[NUM_PARTS] = {1, 2, 3, 4, 5, 3, 5, 0, 0, 0}; + +void draw_shark_pupil(FACE f, PART p) { + struct shark_struct* shark=(struct shark_struct*)f->char_struct; + glPushMatrix(); + glTranslatef(SHARK_IRIS_X, -SHARK_IRIS_Z, SHARK_IRIS_Y); + if(p==LEFT_IRIS) + glmSetMat(f->materials, f->mat_indeces[LEFT_IRIS]); + else + glmSetMat(f->materials, f->mat_indeces[RIGHT_IRIS]); + glCallList(shark->iris[0]); + glTranslatef(SHARK_PUP_X, -SHARK_PUP_Z, SHARK_PUP_Y); + glmSetMat(f->materials, f->mat_indeces[PUPIL]); + glCallList(shark->pupil[0]); + glPopMatrix(); +} + +void draw_shark_left_eye(FACE f, BOOL open, int max) { + struct shark_struct* shark=(struct shark_struct*)f->char_struct; + if(f->my_mode==CRAZY2) + shark->curr_left_lid=NUM_SHARK_LIDS-1; + else + shark->curr_left_lid = compute_lid(open, shark->curr_left_lid, max); + glPushMatrix(); + glTranslatef(-SHARK_EYES_X, 0.0, 0.0); + glPushMatrix(); + glTranslatef(0.0, -f->curr_eye_pop, 0.0); + draw_shark_pupil(f, LEFT_IRIS); + glmSetMat(f->materials, f->mat_indeces[EYES]); + glCallList(shark->eyes[shark->curr_left_eye]); + glPopMatrix(); + glmSetMat(f->materials, f->mat_indeces[LIDS]); + glCallList(shark->lids[shark->curr_left_lid]); + glPopMatrix(); +} + +void draw_shark_right_eye(FACE f, BOOL open, int max) { + struct shark_struct* shark=(struct shark_struct*)f->char_struct; + if(f->my_mode==CRAZY2) + shark->curr_right_lid=NUM_SHARK_LIDS-1; + else + shark->curr_right_lid = compute_lid(open, shark->curr_right_lid, max); + glPushMatrix(); + glTranslatef(SHARK_EYES_X, 0.0, 0.0); + glPushMatrix(); + glTranslatef(0.0, -f->curr_eye_pop, 0.0); + draw_shark_pupil(f, RIGHT_IRIS); + glmSetMat(f->materials, f->mat_indeces[EYES]); + glCallList(shark->eyes[shark->curr_right_eye]); + glPopMatrix(); + glmSetMat(f->materials, f->mat_indeces[LIDS]); + glCallList(shark->lids[shark->curr_right_lid]); + glPopMatrix(); +} + +void shark_eyes(FACE f, GLfloat angle, GLfloat yangle, BOOL left_open, BOOL right_open, DIRECTION dir) +{ + struct shark_struct* shark=(struct shark_struct*)f->char_struct; + int max_eye; + if(dir==CONST) { //then not moving, eyes are gettin sleepy + f->eye_count--; + } + else{ + f->eye_count=EYE_TIME*NUM_SHARK_LIDS-1; + } + max_eye=f->eye_count/EYE_TIME; + if(max_eye<0) + max_eye=0; + if(f->my_mode==CRAZY2) + f->curr_eye_pop=f->curr_eye_pop + (MAX_EYE_POP - f->curr_eye_pop)/2; + else + f->curr_eye_pop=f->curr_eye_pop - (f->curr_eye_pop-0)/2; + glPushMatrix(); + glTranslatef(0, 0, SHARK_EYES_Y); + glTranslatef(0, -SHARK_EYES_Z,0); + draw_shark_left_eye(f, left_open, max_eye); + draw_shark_right_eye(f, right_open, max_eye); + glPopMatrix(); +} + +void shark_fins(FACE f, DIRECTION dir){ + struct shark_struct* shark=(struct shark_struct*)f->char_struct; + + if(dir==DOWN){ + if(shark->curr_fin < (NUM_FINS-1)) + shark->curr_fin++; + shark->curr_fin_angle = shark->curr_fin_angle+(MAX_FIN_ANGLE-shark->curr_fin_angle)/2; + } + if(dir==UP){ + if(shark->curr_fin > 0) + shark->curr_fin--; + shark->curr_fin_angle = shark->curr_fin_angle+(MIN_FIN_ANGLE-shark->curr_fin_angle)/2; + } + else if(dir==CONST){ + shark->curr_fin=1; + shark->curr_fin_angle = shark->curr_fin_angle+(0-shark->curr_fin_angle)/3; + } + + glPushMatrix(); + glTranslatef(-SHARK_FINS_X, -SHARK_FINS_Z, SHARK_FINS_Y); + if(f->my_mode==CRAZY1) + glRotatef(MAX_FIN_ANGLE, 0.0, 1.0, 0.0); + else + glRotatef(shark->curr_fin_angle, 0.0, 1.0, 0.0); + glmSetMat(f->materials, f->mat_indeces[APPENDAGE]); + glCallList(shark->fins[shark->curr_fin]); + glPopMatrix(); + glPushMatrix(); + glTranslatef(SHARK_FINS_X, -SHARK_FINS_Z, SHARK_FINS_Y); + glScalef(-1, 1, 1); + if(f->my_mode==CRAZY1) + glRotatef(MIN_FIN_ANGLE, 0.0, 1.0, 0.0); + else + glRotatef(shark->curr_fin_angle, 0.0, 1.0, 0.0); + glCallList(shark->fins[shark->curr_fin]); + glPopMatrix(); +} + +void draw_back_fins(FACE f){ + struct shark_struct* shark=(struct shark_struct*)f->char_struct; + glPushMatrix(); + glTranslatef(0, fins, TOP_FIN_Y); + glRotatef(180, 0.0, 1.0, 0.0); + glScalef(.5*TOP_FIN_SCALE,TOP_FIN_SCALE,TOP_FIN_SCALE); + glmSetMat(f->materials, f->mat_indeces[APPENDAGE]); + glCallList(shark->fins[2]); + glPopMatrix(); + +} + +void draw_shark(FACE f, GLfloat angle, GLfloat yangle, BOOL left_open, BOOL right_open, GLfloat open, DIRECTION dir, OUTPUT_MODE mode){ + int next_face; + struct shark_struct* shark; + + f->crazy_count--; + if(f->crazy_count==0){ + f->my_mode = mode; + if(mode!=NORMAL) + f->crazy_count = CRAZY_COUNT; + else + f->crazy_count = 1; + } + apply_output_mode(f, &angle, &yangle, &left_open, &right_open, &open, &dir); + next_face = NUM_SHARKS - open*NUM_SHARKS - 1; + shark = (struct shark_struct*)f->char_struct; + if(next_face > shark->curr_face) + shark->curr_face++; + else if(next_face < shark->curr_face) + shark->curr_face--; + + glPushMatrix(); + glRotatef(-90, 1.0, 0.0, 0.0); + glRotatef(-yangle, 0.0, 0.0, -1.0); + glRotatef(-angle, 0, 1, 0); + shark_eyes(f, angle, yangle, left_open, right_open, dir); + shark_fins(f, dir); + //draw_back_fins(f); + glmSetMat(f->materials, f->mat_indeces[HEAD]); + glCallList(shark->faces[shark->curr_face]); + glPopMatrix(); +} + + +void init_shark(FACE f){ + int i; + struct shark_struct* shark; + f->char_struct = (struct shark_struct*)malloc(sizeof(struct shark_struct)); + f->materials = glmMTL(shark_mtl_file); + f->mat_indeces=(GLint*)malloc(sizeof(GLint)*NUM_PARTS); + //initialize all of the parts to some colors + change_materials(f, init_shark_mats, NUM_PARTS); + f->my_mode = NORMAL; + f->eye_count = EYE_TIME*NUM_SHARK_LIDS-1; + f->crazy_count = 1; + f->curr_z_angle = 0; + f->curr_eye_pop = 0; + f->name = strdup("sharky"); + f->draw_func = draw_shark; + shark = (struct shark_struct*)f->char_struct; + + printf("\nReading models: "); + fflush(0); + + //initialize the draw lists + init_lists(&shark->faces, &shark->m_faces, NUM_SHARKS, f->name, SHARK_HEAD_SCALE); + init_lists(&shark->lids, &shark->m_lids, NUM_SHARK_LIDS, "sharkylid", SHARK_LID_SCALE); + init_lists(&shark->fins, &shark->m_fins, NUM_FINS, "sharkyfin", SHARK_FIN_SCALE); + init_lists(&shark->eyes, &shark->m_eyes, NUM_SHARK_EYES, "sharkyeye", SHARK_EYE_SCALE); + init_lists(&shark->pupil, &shark->m_pupil, NUM_SHARK_PUPILS, "sharkypupil", SHARK_PUP_SCALE); + init_lists(&shark->iris, &shark->m_iris, NUM_SHARK_IRIS, "sharkyiris", SHARK_IRIS_SCALE); + + printf("\n"); + fflush(0); + + shark->curr_face = 0; + shark->curr_fin = 1; + shark->curr_left_lid = 0; + shark->curr_right_lid = 0; + shark->curr_left_eye = 0; + shark->curr_right_eye = 0; + shark->curr_pupil = 0; + shark->curr_fin_angle = 0; +} diff -r f854402837ba -r ed017b9c532d plugins/crazychat/sharky.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/sharky.h Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,10 @@ +#include "glm.h" + +struct shark_struct{ + GLint* faces, *lids, *fins, *eyes, *iris, *pupil; + GLMmodel** m_faces, **m_lids, **m_fins, **m_eyes, **m_iris, **m_pupil; + int curr_face, curr_fin, curr_left_lid, curr_right_lid, curr_right_eye, curr_left_eye, curr_pupil, eye_count; + float curr_fin_angle; +}; + +void init_shark(FACE f); \ No newline at end of file diff -r f854402837ba -r ed017b9c532d plugins/crazychat/test.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/test.h Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,8 @@ +class Test { + public: + Test(); + ~Test(); + void runTest(); + private: + asdfint fake; +}; \ No newline at end of file diff -r f854402837ba -r ed017b9c532d plugins/crazychat/util.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugins/crazychat/util.h Tue Aug 09 07:10:23 2005 +0000 @@ -0,0 +1,93 @@ +#ifndef __UTIL_H__ +#define __UTIL_H__ + +#include +#include + +#define THREAD_CREATE(thread, func, args) \ + do { \ + assert(!pthread_create(thread, NULL, func, args)); \ + } while(0) + +#define THREAD_JOIN(thread) \ + do { \ + assert(!pthread_join(thread, NULL)); \ + } while(0) + +#define MUTEX_INIT(mutex) \ + do { \ + assert(!pthread_mutex_init(mutex, NULL)); \ + } while(0) + +#define MUTEX_DESTROY(mutex) \ + do { \ + assert(!pthread_mutex_destroy(mutex)); \ + } while(0) + +#define MUTEX_LOCK(mutex) \ + do { \ + assert(!pthread_mutex_lock(mutex)); \ + } while(0) + +#define MUTEX_UNLOCK(mutex) \ + do { \ + assert(!pthread_mutex_unlock(mutex)); \ + } while(0) + +#define COND_INIT(cond) \ + do { \ + assert(!pthread_cond_init(cond, NULL)); \ + } while(0) + +#define COND_SIGNAL(cond, mutex) \ + do { \ + MUTEX_LOCK(mutex); \ + assert(!pthread_cond_signal(cond)); \ + MUTEX_UNLOCK(mutex); \ + } while(0) + +#define COND_WAIT(cond, mutex) \ + do { \ + assert(!pthread_cond_wait(cond, mutex)); \ + } while(0) + +#define COND_DESTROY(cond) \ + do { \ + assert(!pthread_cond_destroy(cond)); \ + } while(0) + +#define SET_TIME(x) \ + do { \ + assert(!gettimeofday((x), NULL)); \ + } while(0) + +#define SET_TIMEOUT(timespec, given_timeout) /* timeout is in ms */ \ + do { \ + struct timeval* curr = (struct timeval*)(timespec); \ + unsigned int tout; \ + if (given_timeout > 100) { \ + tout = given_timeout; \ + } else { \ + tout = 100; \ + } \ + SET_TIME(curr); \ + curr->tv_sec += (tout / 1000); \ + curr->tv_usec /= 1000; /* set to ms */ \ + curr->tv_usec += (tout % 1000); \ + curr->tv_sec += (curr->tv_usec / 1000); \ + curr->tv_usec = (curr->tv_usec % 1000); \ + curr->tv_usec *= 1000000; \ + } while (0) + +#endif + +/* -- gcc specific vararg macro support ... but its so nice! -- */ +#ifdef _DEBUG_ +#define Debug(x, args...) \ + do { \ + printf(x, ## args); \ + gaim_debug(GAIM_DEBUG_INFO, "crazychat", x, ## args); \ + } while (0) +#else +#define Debug(x, args...) do{}while(0) +#endif