git-svn-id: http://svn.purei.org/purei/trunk@193 b36208d7-6611-0410-8bec-b1987f11c4a2
This commit is contained in:
jpd002 2007-12-09 22:01:01 +00:00
parent 53bb0fbb66
commit 33c47ef2a3
7 changed files with 916 additions and 1722 deletions

View File

@ -267,7 +267,6 @@
<key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
<array>
<string>29B97314FDCFA39411CA2CEA</string>
<string>080E96DDFE201D6D7F000001</string>
<string>1C37FBAC04509CD000000102</string>
<string>1C37FABC05509CD000000102</string>
</array>
@ -316,7 +315,7 @@
<key>PBXProjectModuleGUID</key>
<string>1CE0B20306471E060097A5F4</string>
<key>PBXProjectModuleLabel</key>
<string>GSH_OpenGLMacOSX.cpp</string>
<string>Config.cpp</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
@ -324,90 +323,19 @@
<key>PBXProjectModuleGUID</key>
<string>1CE0B20406471E060097A5F4</string>
<key>PBXProjectModuleLabel</key>
<string>GSH_OpenGLMacOSX.cpp</string>
<string>Config.cpp</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
<string>7EEF34910D0B97C0005FE2D8</string>
<string>7EEF350C0D0C9CD5005FE2D8</string>
<key>history</key>
<array>
<string>7EEF33EA0D0B93B4005FE2D8</string>
<string>7EEF33EB0D0B93B4005FE2D8</string>
<string>7EEF33ED0D0B93B4005FE2D8</string>
<string>7EEF33EE0D0B93B4005FE2D8</string>
<string>7EEF33F00D0B93B4005FE2D8</string>
<string>7EEF33F10D0B93B4005FE2D8</string>
<string>7EEF33F50D0B93B4005FE2D8</string>
<string>7EEF33F60D0B93B4005FE2D8</string>
<string>7EEF34180D0B9417005FE2D8</string>
<string>7EEF34290D0B94EB005FE2D8</string>
<string>7EEF342A0D0B94EB005FE2D8</string>
<string>7EEF34660D0B95E5005FE2D8</string>
<string>7EEF347C0D0B963A005FE2D8</string>
<string>7EEF347D0D0B963A005FE2D8</string>
<string>7EEF347E0D0B963A005FE2D8</string>
<string>7EEF34890D0B9645005FE2D8</string>
<string>7EEF348A0D0B9645005FE2D8</string>
<string>7EEF348B0D0B9645005FE2D8</string>
<string>7EEF34CE0D0C99F1005FE2D8</string>
<string>7EEF350B0D0C9CD5005FE2D8</string>
</array>
<key>prevStack</key>
<array>
<string>7E947B5C0D0A07F700A2AE15</string>
<string>7EEF334B0D0B8CF4005FE2D8</string>
<string>7EEF33550D0B8CF4005FE2D8</string>
<string>7EEF33570D0B8CF4005FE2D8</string>
<string>7EEF33590D0B8CF4005FE2D8</string>
<string>7EEF33850D0B8EDA005FE2D8</string>
<string>7EEF33880D0B8EDA005FE2D8</string>
<string>7EEF33F90D0B93B4005FE2D8</string>
<string>7EEF33FA0D0B93B4005FE2D8</string>
<string>7EEF33FB0D0B93B4005FE2D8</string>
<string>7EEF33FC0D0B93B4005FE2D8</string>
<string>7EEF33FD0D0B93B4005FE2D8</string>
<string>7EEF33FE0D0B93B4005FE2D8</string>
<string>7EEF34000D0B93B4005FE2D8</string>
<string>7EEF34010D0B93B4005FE2D8</string>
<string>7EEF34020D0B93B4005FE2D8</string>
<string>7EEF34030D0B93B4005FE2D8</string>
<string>7EEF34050D0B93B4005FE2D8</string>
<string>7EEF34060D0B93B4005FE2D8</string>
<string>7EEF34070D0B93B4005FE2D8</string>
<string>7EEF34090D0B93B4005FE2D8</string>
<string>7EEF340A0D0B93B4005FE2D8</string>
<string>7EEF340B0D0B93B4005FE2D8</string>
<string>7EEF340C0D0B93B4005FE2D8</string>
<string>7EEF340D0D0B93B4005FE2D8</string>
<string>7EEF340E0D0B93B4005FE2D8</string>
<string>7EEF340F0D0B93B4005FE2D8</string>
<string>7EEF34100D0B93B4005FE2D8</string>
<string>7EEF34110D0B93B4005FE2D8</string>
<string>7EEF34120D0B93B4005FE2D8</string>
<string>7EEF341C0D0B9417005FE2D8</string>
<string>7EEF341D0D0B9417005FE2D8</string>
<string>7EEF341E0D0B9417005FE2D8</string>
<string>7EEF342B0D0B94EB005FE2D8</string>
<string>7EEF342C0D0B94EB005FE2D8</string>
<string>7EEF342D0D0B94EB005FE2D8</string>
<string>7EEF342E0D0B94EB005FE2D8</string>
<string>7EEF342F0D0B94EB005FE2D8</string>
<string>7EEF34300D0B94EB005FE2D8</string>
<string>7EEF34310D0B94EB005FE2D8</string>
<string>7EEF34320D0B94EB005FE2D8</string>
<string>7EEF34500D0B956F005FE2D8</string>
<string>7EEF34510D0B956F005FE2D8</string>
<string>7EEF34520D0B956F005FE2D8</string>
<string>7EEF34530D0B956F005FE2D8</string>
<string>7EEF34540D0B956F005FE2D8</string>
<string>7EEF34550D0B956F005FE2D8</string>
<string>7EEF34680D0B95E5005FE2D8</string>
<string>7EEF34690D0B95E5005FE2D8</string>
<string>7EEF34800D0B963A005FE2D8</string>
<string>7EEF34810D0B963A005FE2D8</string>
<string>7EEF34820D0B963A005FE2D8</string>
<string>7EEF34830D0B963A005FE2D8</string>
<string>7EEF34840D0B963A005FE2D8</string>
<string>7EEF348C0D0B9645005FE2D8</string>
<string>7EEF348D0D0B9645005FE2D8</string>
<string>7EEF34D20D0C99F1005FE2D8</string>
</array>
</dict>
<key>SplitCount</key>
@ -465,9 +393,9 @@
</array>
<key>TableOfContents</key>
<array>
<string>7EEF32FB0D0B8B93005FE2D8</string>
<string>7EEF34BF0D0C9831005FE2D8</string>
<string>1CE0B1FE06471DED0097A5F4</string>
<string>7EEF32FC0D0B8B93005FE2D8</string>
<string>7EEF34C00D0C9831005FE2D8</string>
<string>1CE0B20306471E060097A5F4</string>
<string>1CE0B20506471E060097A5F4</string>
</array>
@ -601,12 +529,12 @@
<integer>5</integer>
<key>WindowOrderList</key>
<array>
<string>7EEF33050D0B8B93005FE2D8</string>
<string>7EEF33060D0B8B93005FE2D8</string>
<string>7EEF33070D0B8B93005FE2D8</string>
<string>7E8986E20D08A40C0077F9ED</string>
<string>1CD10A99069EF8BA00B06720</string>
<string>7EEF34E00D0C9A4E005FE2D8</string>
<string>7EEF34E10D0C9A4E005FE2D8</string>
<string>7EEF34E20D0C9A4E005FE2D8</string>
<string>1C78EAAD065D492600B07095</string>
<string>1CD10A99069EF8BA00B06720</string>
<string>7E8986E20D08A40C0077F9ED</string>
<string>/Users/jpd001/Projects/Purei/Purei.xcodeproj</string>
</array>
<key>WindowString</key>
@ -633,7 +561,7 @@
<key>PBXProjectModuleGUID</key>
<string>1CD0528F0623707200166675</string>
<key>PBXProjectModuleLabel</key>
<string>GSH_OpenGLMacOSX.cpp</string>
<string>BasicBlock.cpp</string>
<key>StatusBarVisibility</key>
<true/>
</dict>
@ -642,7 +570,7 @@
<key>Frame</key>
<string>{{0, 0}, {1280, 348}}</string>
<key>RubberWindowFrame</key>
<string>0 148 1280 630 0 0 1280 778 </string>
<string>4 148 1280 630 0 0 1280 778 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
@ -666,7 +594,7 @@
<key>Frame</key>
<string>{{0, 353}, {1280, 236}}</string>
<key>RubberWindowFrame</key>
<string>0 148 1280 630 0 0 1280 778 </string>
<string>4 148 1280 630 0 0 1280 778 </string>
</dict>
<key>Module</key>
<string>PBXBuildResultsModule</string>
@ -689,14 +617,14 @@
<key>TableOfContents</key>
<array>
<string>7E8986E20D08A40C0077F9ED</string>
<string>7EEF32FD0D0B8B93005FE2D8</string>
<string>7EEF34BA0D0C9828005FE2D8</string>
<string>1CD0528F0623707200166675</string>
<string>XCMainBuildResultsModuleGUID</string>
</array>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.buildV3</string>
<key>WindowString</key>
<string>0 148 1280 630 0 0 1280 778 </string>
<string>4 148 1280 630 0 0 1280 778 </string>
<key>WindowToolGUID</key>
<string>7E8986E20D08A40C0077F9ED</string>
<key>WindowToolIsVisible</key>
@ -809,13 +737,13 @@
<key>TableOfContents</key>
<array>
<string>1CD10A99069EF8BA00B06720</string>
<string>7EEF32FE0D0B8B93005FE2D8</string>
<string>7EEF34C10D0C9831005FE2D8</string>
<string>1C162984064C10D400B95A72</string>
<string>7EEF32FF0D0B8B93005FE2D8</string>
<string>7EEF33000D0B8B93005FE2D8</string>
<string>7EEF33010D0B8B93005FE2D8</string>
<string>7EEF33020D0B8B93005FE2D8</string>
<string>7EEF33030D0B8B93005FE2D8</string>
<string>7EEF34C20D0C9831005FE2D8</string>
<string>7EEF34C30D0C9831005FE2D8</string>
<string>7EEF34C40D0C9831005FE2D8</string>
<string>7EEF34C50D0C9831005FE2D8</string>
<string>7EEF34C60D0C9831005FE2D8</string>
</array>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.debugV3</string>
@ -942,8 +870,6 @@
<key>Dock</key>
<array>
<dict>
<key>BecomeActive</key>
<true/>
<key>ContentConfiguration</key>
<dict>
<key>PBXProjectModuleGUID</key>
@ -979,7 +905,7 @@
<key>TableOfContents</key>
<array>
<string>1C78EAAD065D492600B07095</string>
<string>7EEF33040D0B8B93005FE2D8</string>
<string>7EEF34C70D0C9831005FE2D8</string>
<string>1C78EAAC065D492600B07095</string>
</array>
<key>ToolbarConfiguration</key>
@ -989,7 +915,7 @@
<key>WindowToolGUID</key>
<string>1C78EAAD065D492600B07095</string>
<key>WindowToolIsVisible</key>
<true/>
<false/>
</dict>
<dict>
<key>Identifier</key>

File diff suppressed because it is too large Load Diff

View File

@ -736,8 +736,8 @@
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
GCC_MODEL_TUNING = G5;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = Purei_Prefix.pch;
INFOPLIST_FILE = Info.plist;
GCC_PREFIX_HEADER = Source/macosxui/Purei_Prefix.pch;
INFOPLIST_FILE = Source/macosxui/Info.plist;
INSTALL_PATH = "$(HOME)/Applications";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
@ -775,6 +775,11 @@
);
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = (
"~/Libraries/boost_1_34_1/boost/tr1/tr1",
"~/Libraries/boost_1_34_1/",
"~/Projects/Framework/include",
);
PREBINDING = NO;
SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
};

View File

@ -1,106 +1,106 @@
#include "BasicBlock.h"
#include "MipsCodeGen.h"
#include "MemStream.h"
#include "offsetof_def.h"
using namespace Framework;
CBasicBlock::CBasicBlock(CMIPS& context, uint32 begin, uint32 end) :
m_begin(begin),
m_end(end),
m_context(context),
m_text(NULL)
{
assert(m_end >= m_begin);
}
CBasicBlock::~CBasicBlock()
{
if(m_text != NULL)
{
delete [] m_text;
}
}
void CBasicBlock::Compile()
{
CMemStream stream;
CMipsCodeGen codeGen;
for(unsigned int i = 0; i < 4; i++)
{
codeGen.SetVariableAsConstant(
offsetof(CMIPS, m_State.nGPR[CMIPS::R0].nV[i]),
0
);
}
codeGen.SetStream(&stream);
codeGen.Begin(NULL);
for(uint32 address = m_begin; address <= m_end; address += 4)
{
m_context.m_pArch->CompileInstruction(
address,
reinterpret_cast<CCacheBlock*>(&codeGen),
&m_context,
true);
//Sanity check
assert(codeGen.IsStackEmpty());
}
codeGen.DumpVariables(0);
codeGen.m_Assembler.Ret();
codeGen.End();
//Save text
m_text = new uint8[stream.GetSize()];
memcpy(m_text, stream.GetBuffer(), stream.GetSize());
}
unsigned int CBasicBlock::Execute()
{
void* function = m_text;
CMIPS* context = &m_context;
__asm
{
push ebp
push ebx
push esi
push edi
mov eax, [function]
mov ebp, [context]
call eax
pop edi
pop esi
pop ebx
pop ebp
}
if(m_context.m_State.nDelayedJumpAddr != MIPS_INVALID_PC)
{
m_context.m_State.nPC = m_context.m_State.nDelayedJumpAddr;
m_context.m_State.nDelayedJumpAddr = MIPS_INVALID_PC;
}
else
{
m_context.m_State.nPC = m_end + 4;
}
return ((m_end - m_begin) / 4) + 1;
}
uint32 CBasicBlock::GetBeginAddress() const
{
return m_begin;
}
uint32 CBasicBlock::GetEndAddress() const
{
return m_end;
}
bool CBasicBlock::IsCompiled() const
{
return m_text != NULL;
}
#include "BasicBlock.h"
#include "MipsCodeGen.h"
#include "MemStream.h"
#include "offsetof_def.h"
using namespace Framework;
CBasicBlock::CBasicBlock(CMIPS& context, uint32 begin, uint32 end) :
m_begin(begin),
m_end(end),
m_context(context),
m_text(NULL)
{
assert(m_end >= m_begin);
}
CBasicBlock::~CBasicBlock()
{
if(m_text != NULL)
{
delete [] m_text;
}
}
void CBasicBlock::Compile()
{
CMemStream stream;
CMipsCodeGen codeGen;
for(unsigned int i = 0; i < 4; i++)
{
codeGen.SetVariableAsConstant(
offsetof(CMIPS, m_State.nGPR[CMIPS::R0].nV[i]),
0
);
}
codeGen.SetStream(&stream);
codeGen.Begin(NULL);
for(uint32 address = m_begin; address <= m_end; address += 4)
{
m_context.m_pArch->CompileInstruction(
address,
reinterpret_cast<CCacheBlock*>(&codeGen),
&m_context,
true);
//Sanity check
assert(codeGen.IsStackEmpty());
}
codeGen.DumpVariables(0);
codeGen.m_Assembler.Ret();
codeGen.End();
//Save text
m_text = new uint8[stream.GetSize()];
memcpy(m_text, stream.GetBuffer(), stream.GetSize());
}
unsigned int CBasicBlock::Execute()
{
void* function = m_text;
CMIPS* context = &m_context;
__asm
{
push ebp
push ebx
push esi
push edi
mov eax, [function]
mov ebp, [context]
call eax
pop edi
pop esi
pop ebx
pop ebp
}
if(m_context.m_State.nDelayedJumpAddr != MIPS_INVALID_PC)
{
m_context.m_State.nPC = m_context.m_State.nDelayedJumpAddr;
m_context.m_State.nDelayedJumpAddr = MIPS_INVALID_PC;
}
else
{
m_context.m_State.nPC = m_end + 4;
}
return ((m_end - m_begin) / 4) + 1;
}
uint32 CBasicBlock::GetBeginAddress() const
{
return m_begin;
}
uint32 CBasicBlock::GetEndAddress() const
{
return m_end;
}
bool CBasicBlock::IsCompiled() const
{
return m_text != NULL;
}

View File

@ -8,8 +8,8 @@
<string key="IBDocument.HIToolboxVersion">343.00</string>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="372"/>
<integer value="379"/>
<integer value="372"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@ -37,12 +37,12 @@
<string key="NSKeyEquiv" id="1003"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<object class="NSCustomResource" key="NSOnImage" id="366563894">
<string key="NSClassName" id="347874736">NSImage</string>
<object class="NSCustomResource" key="NSOnImage" id="1013324425">
<string key="NSClassName" id="983624395">NSImage</string>
<string key="NSResourceName">NSMenuCheckmark</string>
</object>
<object class="NSCustomResource" key="NSMixedImage" id="646547275">
<reference key="NSClassName" ref="347874736"/>
<object class="NSCustomResource" key="NSMixedImage" id="250094809">
<reference key="NSClassName" ref="983624395"/>
<string key="NSResourceName">NSMenuMixedState</string>
</object>
<string key="NSAction">submenuAction:</string>
@ -55,8 +55,8 @@
<string type="base64-UTF8" key="NSTitle">QWJvdXQg44OX44Os44Kk77yBA</string>
<reference key="NSKeyEquiv" ref="1003"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
</object>
<object class="NSMenuItem" id="304266470">
<reference key="NSMenu" ref="110575045"/>
@ -66,8 +66,8 @@
<reference key="NSKeyEquiv" ref="1003"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
</object>
<object class="NSMenuItem" id="609285721">
<reference key="NSMenu" ref="110575045"/>
@ -75,8 +75,8 @@
<string key="NSKeyEquiv">,</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
</object>
<object class="NSMenuItem" id="481834944">
<reference key="NSMenu" ref="110575045"/>
@ -86,8 +86,8 @@
<reference key="NSKeyEquiv" ref="1003"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
</object>
<object class="NSMenuItem" id="1046388886">
<reference key="NSMenu" ref="110575045"/>
@ -95,8 +95,8 @@
<reference key="NSKeyEquiv" ref="1003"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="752062318">
<reference key="NSTitle" ref="487627014"/>
@ -114,8 +114,8 @@
<reference key="NSKeyEquiv" ref="1003"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
</object>
<object class="NSMenuItem" id="755159360">
<reference key="NSMenu" ref="110575045"/>
@ -123,8 +123,8 @@
<string key="NSKeyEquiv" id="712247123">h</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
</object>
<object class="NSMenuItem" id="342932134">
<reference key="NSMenu" ref="110575045"/>
@ -132,8 +132,8 @@
<reference key="NSKeyEquiv" ref="712247123"/>
<int key="NSKeyEquivModMask">1572864</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
</object>
<object class="NSMenuItem" id="908899353">
<reference key="NSMenu" ref="110575045"/>
@ -141,8 +141,8 @@
<reference key="NSKeyEquiv" ref="1003"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
</object>
<object class="NSMenuItem" id="1056857174">
<reference key="NSMenu" ref="110575045"/>
@ -152,8 +152,8 @@
<reference key="NSKeyEquiv" ref="1003"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
</object>
<object class="NSMenuItem" id="632727374">
<reference key="NSMenu" ref="110575045"/>
@ -161,8 +161,8 @@
<string key="NSKeyEquiv">q</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
</object>
</object>
<string key="NSName">_NSAppleMenu</string>
@ -174,8 +174,8 @@
<reference key="NSKeyEquiv" ref="1003"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="953788473">
<reference key="NSTitle" ref="240401069"/>
@ -187,8 +187,8 @@
<reference key="NSKeyEquiv" ref="1003"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
</object>
<object class="NSMenuItem" id="684325854">
<reference key="NSMenu" ref="953788473"/>
@ -196,8 +196,8 @@
<string key="NSKeyEquiv">o</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
</object>
</object>
</object>
@ -208,8 +208,8 @@
<reference key="NSKeyEquiv" ref="1003"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="710696803">
<reference key="NSTitle" ref="525380479"/>
@ -221,8 +221,8 @@
<string key="NSKeyEquiv">r</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
</object>
<object class="NSMenuItem" id="91057911">
<reference key="NSMenu" ref="710696803"/>
@ -230,8 +230,8 @@
<reference key="NSKeyEquiv" ref="1003"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
</object>
<object class="NSMenuItem" id="398772487">
<reference key="NSMenu" ref="710696803"/>
@ -239,8 +239,8 @@
<reference key="NSKeyEquiv" ref="1003"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
</object>
<object class="NSMenuItem" id="911908214">
<reference key="NSMenu" ref="710696803"/>
@ -250,8 +250,8 @@
<reference key="NSKeyEquiv" ref="1003"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
</object>
<object class="NSMenuItem" id="672616159">
<reference key="NSMenu" ref="710696803"/>
@ -259,8 +259,8 @@
<reference key="NSKeyEquiv" ref="1003"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
</object>
<object class="NSMenuItem" id="205969556">
<reference key="NSMenu" ref="710696803"/>
@ -268,8 +268,8 @@
<string key="NSKeyEquiv">s</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
</object>
<object class="NSMenuItem" id="939444702">
<reference key="NSMenu" ref="710696803"/>
@ -277,8 +277,8 @@
<string key="NSKeyEquiv">l</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
</object>
</object>
</object>
@ -289,8 +289,8 @@
<reference key="NSKeyEquiv" ref="1003"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="835318025">
<reference key="NSTitle" ref="15506412"/>
@ -302,8 +302,8 @@
<string key="NSKeyEquiv">m</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
</object>
<object class="NSMenuItem" id="575023229">
<reference key="NSMenu" ref="835318025"/>
@ -311,8 +311,8 @@
<reference key="NSKeyEquiv" ref="1003"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
</object>
<object class="NSMenuItem" id="299356726">
<reference key="NSMenu" ref="835318025"/>
@ -322,8 +322,8 @@
<reference key="NSKeyEquiv" ref="1003"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
</object>
<object class="NSMenuItem" id="625202149">
<reference key="NSMenu" ref="835318025"/>
@ -331,8 +331,8 @@
<reference key="NSKeyEquiv" ref="1003"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
</object>
</object>
<string key="NSName">_NSWindowsMenu</string>
@ -344,8 +344,8 @@
<reference key="NSKeyEquiv" ref="1003"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
<string key="NSAction">submenuAction:</string>
<object class="NSMenu" key="NSSubmenu" id="374024848">
<reference key="NSTitle" ref="519223894"/>
@ -357,8 +357,8 @@
<string key="NSKeyEquiv">?</string>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="366563894"/>
<reference key="NSMixedImage" ref="646547275"/>
<reference key="NSOnImage" ref="1013324425"/>
<reference key="NSMixedImage" ref="250094809"/>
</object>
</object>
</object>
@ -388,7 +388,7 @@
<reference key="NSWindow"/>
<object class="NSOpenGLPixelFormat" key="NSPixelFormat">
<object class="NSMutableData" key="NSPixelAttributes">
<bytes key="NS.bytes">AAAAAA</bytes>
<bytes key="NS.bytes">AAAABQAAAAwAAAAgAAAAAA</bytes>
</object>
</object>
</object>
@ -496,7 +496,7 @@
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label" id="224769251">m_openGlView</string>
<string key="label">m_openGlView</string>
<reference key="source" ref="522682909"/>
<reference key="destination" ref="740592335"/>
</object>
@ -958,9 +958,9 @@
<string>{74, 862}</string>
<string>{{164, 241}, {442, 20}}</string>
<reference ref="477309771"/>
<string>{{510, 133}, {480, 360}}</string>
<string>{{226, 121}, {480, 360}}</string>
<reference ref="9"/>
<string>{{510, 133}, {480, 360}}</string>
<string>{{226, 121}, {480, 360}}</string>
<reference ref="477309771"/>
<reference ref="477309771"/>
<reference ref="477309771"/>
@ -1026,7 +1026,7 @@
<string key="NS.object.0">id</string>
</object>
<object class="NSMutableDictionary" key="outlets">
<reference key="NS.key.0" ref="224769251"/>
<string key="NS.key.0">m_openGlView</string>
<string key="NS.object.0">NSOpenGLView</string>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
@ -1042,11 +1042,11 @@
<object class="NSMutableData" key="IBDocument.RunnableNib">
<bytes key="NS.bytes">YnBsaXN0MDDUAAEAAgADAAQABQAGAAkAClgkdmVyc2lvblQkdG9wWSRhcmNoaXZlclgkb2JqZWN0cxIA
AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxEBDAALAAwAMQA1ADYAPAA9
AEIAVgBXAFgAWQALAGYAagB2AHgAewB8AIAAhACIAIsAkACUAAsAlQCXAJgAmwCfAK4AtADEAMsAzADN
ANIA0wDUANcA2wDcAN8A4ADkAOoA7QDwAPEA8gD1APkBAAEBAQIBAwEHAQ4BEwEUARUBGQEgASEBIgEm
AS0BLgEvATABNQE2AToBQQFFAUYBRwFIAUwBUwFUAVUBVgFbAWIBYwFkAWkBcAF0AXUBdgF3AXsBgwGE
AYUBsgG9AcgBzQHOAc8B0wHdAeQB5QHmAe0B7gH1AfYB/wIGAgcCDgIPAhACFwIYAhkCGwIkAc4CJQIp
AjICOwHOAjwCSgJTAloCWwJcAmUBzgJmAmsCbgJvAngCeQJ6AoICiwHOAowCkQKYApkCogHOAqMCqgKz
AEIAVgBXAFgAWQALAGYAagB2AHgAewB8AIAAhACIAIsAkACUAAsAlQCXAJgAmwCfAK4AtgC5ALoAuwC/
AMMA0wDaANsA3ADhAOIA4wDmAOoA6wDuAO8A8gD2AP4BAgEDAQQBBQEJARABFQEWARcBGAEcASMBJAEl
ASoBMQEyATMBNwE+AT8BQAFFAUwBUAFRAVIBUwFYAVsBXAFgAWcBaAFpAWoBbgF1AXYBdwF7AYIBgwGE
AYUBsgG5AboBuwHGAccByAHNAdAB0QHTAdQB2QHgAeEB4gHwAfsCBAINAhYCFwIeAiICIwIsAi0CMQI6
AccCPwJIAccCSQJTAloCWwJcAmMCZAJrAmwCcwJ0AnUCfAJ9An4ChwHHApACmQHHApoCoQKiAccCqwKs
ArQCtQK3AuQDEgNAA0EDQgNDA0QDRQNGA0cDSANJA0oDSwNMA00DTgNPA1ADUQNSA1MDVANVA1YDVwNY
A1kDWgNbA1wDXQNeA18DYANhA2IDYwNkA2UDZgNnA2gDaQNqA2sDbgNxA6sD5QPmA+cD6APpA+oD6wPs
A+0D7gPvA/AD8QPyA/MD9AP1A/YD9wP4A/kD+gP7A/wD/QP+A/8EAAQBBAIEAwQEBAUEBgQHBAgECQQK
@ -1069,142 +1069,142 @@ ZGVyWk5TU3Vidmlld3NYTlN2RmxhZ3NbTlNGcmFtZVNpemVbTlNTdXBlcnZpZXeADIAagA0RAQCAGIAM
gBnSAA4APgBnAGiAF6EAaYAO2ABaAA4AawBsAFwAWABeAG0ATABvAHAAcQByAF8ATAB1V05TRnJhbWVd
TlNQaXhlbEZvcm1hdFxOU0RyYXdNYXRyaXiAC4AWgBGAEhEFEoAMgAuAD9EADgB3gBDSADcAOAB5AHqi
AHoAO1pOU1BTTWF0cml4XxAVe3stNSwgMH0sIHs0ODUsIDM2MH190gAOAH0AfgB/XxARTlNQaXhlbEF0
dHJpYnV0ZXOAFYAT0gAOAIEAggCDV05TLmRhdGGAFEQAAAAA0gA3ADgAhQCGowCGAIcAO11OU011dGFi
bGVEYXRhVk5TRGF0YdIANwA4AIkAiqIAigA7XxATTlNPcGVuR0xQaXhlbEZvcm1hdNIANwA4AIwAjaQA
jQCOAI8AO1xOU09wZW5HTFZpZXdWTlNWaWV3W05TUmVzcG9uZGVy0gA3ADgAkQCSowCSAJMAO15OU011
dGFibGVBcnJheVdOU0FycmF5Wns0ODAsIDM2MH3SADcAOACWAI6jAI4AjwA7XxAVe3swLCAwfSwgezEy
ODAsIDc3OH190gA3ADgAmQCaogCaADtfEBBOU1dpbmRvd1RlbXBsYXRl0gA3ADgAnACdowCdAJ4AO1xO
U011dGFibGVTZXRVTlNTZXTSAA4APgBnAKGAF6wAogCjAKQApQCmAKcAqACpAKoAqwCsAK2AH4AtgDOA
OIA9gEGARoBIgE6AU4BXgF3TAA4ArwCwALEAsgCzWE5TU291cmNlV05TTGFiZWyALIAggCvYAA4AtQC2
ALcAuAC5ALoAuwC8AL0AvgC/AMAAwQDCAMNXTlNUaXRsZV8QEU5TS2V5RXF1aXZNb2RNYXNrWk5TS2V5
RXF1aXZdTlNNbmVtb25pY0xvY1lOU09uSW1hZ2VcTlNNaXhlZEltYWdlVk5TTWVudYAqgCISABAAAIAj
En////+AJIAogCHUAA4AtQDFAMYAxwDIAMkAylZOU05hbWVbTlNNZW51SXRlbXOAeYCAgI6AgmkASABp
AGQAZQAgMNcw7DCk/wFRaNMADgAyAM4AzwDQANFeTlNSZXNvdXJjZU5hbWWAJ4AlgCZXTlNJbWFnZV8Q
D05TTWVudUNoZWNrbWFya9IANwA4ANUA1qIA1gA7XxAQTlNDdXN0b21SZXNvdXJjZdMADgAyAM4AzwDQ
ANqAJ4AlgClfEBBOU01lbnVNaXhlZFN0YXRl0gA3ADgA3QDeogDeADtaTlNNZW51SXRlbVVoaWRlOtIA
NwA4AOEA4qMA4gDjADtfEBVOU05pYkNvbnRyb2xDb25uZWN0b3JeTlNOaWJDb25uZWN0b3LUAA4A5QCv
ALAA5gDnAOgA6V1OU0Rlc3RpbmF0aW9ugDKAL4AugDHSAA4AMgAzADSABIAD0gAOADIAMwDvgASAMF8Q
FENBcHBsaWNhdGlvbkRlbGVnYXRlWGRlbGVnYXRl0gA3ADgA8wD0owD0AOMAO18QFE5TTmliT3V0bGV0
Q29ubmVjdG9y0wAOAK8AsACxAPcA+IAsgDSAN9gADgC1ALYAtwC4ALkAugC7ALwA+wC+APwAwADBAMIA
w4AqgDWANoAkgCiAIVhTaG93IEFsbFBfEBZ1bmhpZGVBbGxBcHBsaWNhdGlvbnM60wAOAK8AsACxAQUB
BoAsgDmAPNgADgC1ALYAtwC4ALkAugC7ALwBCQC+APwAwADBAMIBDYAqgDuANoAkgCiAOtQADgC1AMUA
xgDHARABEQESgHmAmICcgJpfEBJCcmluZyBBbGwgdG8gRnJvbnRfEA9hcnJhbmdlSW5Gcm9udDrTAA4A
rwCwALEBFwEYgCyAPoBA2AAOALUAtgC3ALgAuQC6ALsAvAEbAL4A/ADAAMEAwgENgCqAP4A2gCSAKIA6
VFpvb21ccGVyZm9ybVpvb2060wAOAK8AsACxASQBJYAsgEKARdgADgC1ALYAtwC4ALkAugC7ALwBKAC+
ASkAwADBAMIBDYAqgEOARIAkgCiAOlhNaW5pbWl6ZVFtXxATcGVyZm9ybU1pbmlhdHVyaXplOtQADgDl
AK8AsADmAGkA5wE0gDKADoAvgEdcbV9vcGVuR2xWaWV30wAOAK8AsACxATgBOYAsgEmATdgADgC1ALYA
twC4ALkAugC7ALwBPAC+AT0AwADBAMIBQIAqgEuATIAkgCiAStMADgC1AMYAxwFDAUSAeYB7gH1fEBNO
ZXdBcHBsaWNhdGlvbiBIZWxwUT9Zc2hvd0hlbHA60wAOAK8AsACxAUoBS4AsgE+AUtgADgC1ALYAtwC4
ALkAugC7ALwBTgC+AU8AwADBAMIAw4AqgFCAUYAkgCiAIWkAUQB1AGkAdAAgMNcw7DCk/wFRcVp0ZXJt
aW5hdGU61AAOAOUArwCwALEAHwFZAVqALIACgFSAVtcADgC1ALcAuAC5ALoAuwC8AV0A/ADAAMEAwgDD
gCqAVYA2gCSAKIAhagBBAGIAbwB1AHQAIDDXMOwwpP8BXxAdb3JkZXJGcm9udFN0YW5kYXJkQWJvdXRQ
YW5lbDrUAA4A5QCvALAAsQDnAWcBaIAsgC+AWIBc2AAOALUAtgC3ALgAuQC6ALsAvAFrAL4BbADAAMEA
wgFvgCqAWoBbgCSAKIBZ0wAOALUAxgDHAXIBc4B5gJKAlFxMb2FkIC5FTEYuLi5Rb1hCb290RWxmOtMA
DgCvALAAsQF5AXqALIBegGDYAA4AtQC2ALcAuAC5ALoAuwC8AX0BfgC/AMAAwQDCAMOAKoBfEgAYAACA
I4AkgCiAIVtIaWRlIE90aGVyc18QFmhpZGVPdGhlckFwcGxpY2F0aW9uczrSAA4APgGGAYeAnq8QKgBp
AYkBigGLAYwBWQGOAY8A5wGRAZIBkwGUAQUBlgENASQAwwFKAWcAQQGdAZ4BQAFvAaEBogGjAOgA9wF5
AacBqABMALIBqwGsATgBrgGvAbABF4AOgGKAY4BpgHqAVIBugH6AL4B/gGSAjYCKgDmAm4A6gEKAIYBP
gFiAB4CEgJeASoBZgGyAcYBngC6ANIBegHCAdoALgCCAkYBzgEmAlYCHgIOAPtoADgC1ALYBswC3AbQA
uAC5ALoAuwC8APwAvgG3APwBtwDAAMEAwgDDXU5TSXNTZXBhcmF0b3JcTlNJc0Rpc2FibGVkgCqANgmA
NgmAJIAogCHaAA4BvgC1ALYAtwC4ALkAugC7Ab8AvAGjAcIAvgD8AMAAwQDCAZIBx1lOU1N1Ym1lbnVY
TlNBY3Rpb26AKoBngGWANoAkgCiAZIBm1AAOALUAxQDGAMcBygHLAcyAeYCPgJ2AkF8QD1ZpcnR1YWwg
TWFjaGluZV5zdWJtZW51QWN0aW9uOtMADgC1AMYAxwHCAdKAeYBlgGjSAA4APgBnAdWAF6cBiwGhAY4B
pwGiAawBqIBpgGyAboBwgHGAc4B22AAOALUAtgC3ALgAuQC6ALsAvAHfAL4B4ADAAMEAwgGjgCqAaoBr
gCSAKIBnXlBhdXNlIC8gUmVzdW1lUXLYAA4AtQC2ALcAuAC5ALoAuwC8AegAvgD8AMAAwQDCAaOAKoBt
gDaAJIAogGdVUmVzZXTYAA4AtQC2ALcAuAC5ALoAuwC8AfAAvgD8AMAAwQDCAaOAKoBvgDaAJIAogGdf
EBVQYXVzZSBXaGVuIEZvY3VzIExvc3TaAA4AtQC2AbMAtwG0ALgAuQC6ALsAvAD8AL4BtwD8AbcAwADB
AMIBo4AqgDYJgDYJgCSAKIBn2AAOALUAtgC3ALgAuQC6ALsAvAIBAL4A/ADAAMEAwgGjgCqAcoA2gCSA
KIBnWlN0YXRlIFNsb3TYAA4AtQC2ALcAuAC5ALoAuwC8AgkAvgIKAMAAwQDCAaOAKoB0gHWAJIAogGda
U2F2ZSBTdGF0ZVFz2AAOALUAtgC3ALgAuQC6ALsAvAISAL4CEwDAAMEAwgGjgCqAd4B4gCSAKIBnWkxv
YWQgU3RhdGVRbNIANwA4AhoAu6IAuwA72gAOAb4AtQC2ALcAuAC5ALoAuwG/ALwBQAFDAL4A/ADAAMEA
wgGSAiOAKoBKgHuANoAkgCiAZIB8VEhlbHDSAA4APgBnAieAF6EBOIBJ2gAOALUAtgGzALcBtAC4ALkA
ugC7ALwA/AC+AbcA/AG3AMAAwQDCAMOAKoA2CYA2CYAkgCiAIdoADgG+ALUAtgC3ALgAuQC6ALsBvwC8
AMMAyAC+APwAwADBAMIBkgI6gCqAIYCAgDaAJIAogGSAgV5OZXdBcHBsaWNhdGlvbtIADgA+AGcCPoAX
qwFZAbABnQGJAa8BjwCyAXkA9wGTAUqAVICDgISAYoCHgH6AIIBegDSAjYBP2gAOALUAtgGzALcBtAC4
ALkAugC7ALwA/AC+AbcA/AG3AMAAwQDCAMOAKoA2CYA2CYAkgCiAIdgADgC1ALYAtwC4ALkAugC7ALwC
VQC+AlYAwADBAMIAw4AqgIWAhoAkgCiAIWwAUAByAGUAZgBlAHIAZQBuAGMAZQBzICZRLNoADgG+ALUA
tgC3ALgAuQC6ALsBvwC8AZQCXwC+APwAwADBAMIAwwJkgCqAioCIgDaAJIAogCGAiVhTZXJ2aWNlc9QA
DgC1AMUAxgDHAl8CaQJqgHmAiICMgIvSAA4APgBnAm2AF6BfEA9fTlNTZXJ2aWNlc01lbnXaAA4AtQC2
AbMAtwG0ALgAuQC6ALsAvAD8AL4BtwD8AbcAwADBAMIAw4AqgDYJgDYJgCSAKIAhXF9OU0FwcGxlTWVu
dVlBTWFpbk1lbnXSAA4APgBnAnyAF6UBkQGrAYoBngGMgH+AkYBjgJeAetoADgG+ALUAtgC3ALgAuQC6
ALsBvwC8AW8BcgC+APwAwADBAMIBkgKKgCqAWYCSgDaAJIAogGSAk1RGaWxl0gAOAD4AZwKOgBeiAa4B
Z4CVgFjYAA4AtQC2ALcAuAC5ALoAuwC8ApMAvgD8AMAAwQDCAW+AKoCWgDaAJIAogFlbQm9vdCBjZHJv
bTDaAA4BvgC1ALYAtwC4ALkAugC7Ab8AvAENARAAvgD8AMAAwQDCAZICoYAqgDqAmIA2gCSAKIBkgJlW
V2luZG930gAOAD4AZwKlgBekASQBFwGWAQWAQoA+gJuAOdoADgC1ALYBswC3AbQAuAC5ALoAuwC8APwA
vgG3APwBtwDAAMEAwgENgCqANgmANgmAJIAogDpeX05TV2luZG93c01lbnVbX05TTWFpbk1lbnXSADcA
OAK2AJOiAJMAO9IADgA+AYYCuYCerxAqAEwAwwGSAaMBkgDDAaMAwwAfAZIAHwDDAa8BDQENAZ4BDQGR
AMMBbwAfAMMBkgGMAasBowGjAYoAHwDDAMMBowGjAEEAwwGSAaMBQAFvAMMAwwENgAuAIYBkgGeAZIAh
gGeAIYACgGSAAoAhgIeAOoA6gJeAOoB/gCGAWYACgCGAZIB6gJGAZ4BngGOAAoAhgCGAZ4BngAeAIYBk
gGeASoBZgCGAIYA60gAOAD4BhgLmgJ6vECsAaQGKAYkBiwGMAVkBjgDnAY8BkQGSAZMBBQGUAMMBDQBB
AUoBlgEkAWcBQAGeAW8BoQGiAagBowDoAacAHwBMAZ0A9wF5AasAsgGsATgBrgGvAbABF4AOgGOAYoBp
gHqAVIBugC+AfoB/gGSAjYA5gIqAIYA6gAeAT4CbgEKAWIBKgJeAWYBsgHGAdoBngC6AcIACgAuAhIA0
gF6AkYAggHOASYCVgIeAg4A+0gAOAD4BhgMUgJ6vECsDFQMWAxcDGAMZAxoDGwMcAx0DHgMfAyADIQMi
AyMDJAMlAyYDJwMoAykDKgMrAywDLQMuAy8DMAMxAzIDMwM0AzUDNgM3AzgDOQM6AzsDPAM9Az4DP4Ci
gKOApIClgKaAp4CogKmAqoCrgKyArYCugK+AsICxgLKAs4C0gLWAtoC3gLiAuYC6gLuAvIC9gL6Av4DA
gMGAwoDDgMSAxYDGgMeAyIDJgMqAy4DMW09wZW5HTCBWaWV3XxAbTWVudSBJdGVtIChWaXJ0dWFsIE1h
Y2hpbmUpW1NlcGFyYXRvci0xXxAaTWVudSBJdGVtIChQYXVzZSAvIFJlc3VtZSlRMW8QFgBNAGUAbgB1
ACAASQB0AGUAbQAgACgAQQBiAG8AdQB0ACAw1zDsMKT/AQApXxAhTWVudSBJdGVtIChQYXVzZSBXaGVu
IEZvY3VzIExvc3QpXxAUQXBwbGljYXRpb24gRGVsZWdhdGVbU2VwYXJhdG9yLTJfEBpNZW51IEl0ZW0g
KE5ld0FwcGxpY2F0aW9uKVhNYWluTWVudVtTZXBhcmF0b3ItM18QHk1lbnUgSXRlbSAoQnJpbmcgQWxs
IHRvIEZyb250KV8QD01lbnUgKFNlcnZpY2VzKV8QFU1lbnUgKE5ld0FwcGxpY2F0aW9uKV1NZW51IChX
aW5kb3cpbxAdAFcAaQBuAGQAbwB3ACAAKDDXMOwwpP8BACAALQAgAE8AdQB0AHAAdQB0ACAAVwBpAG4A
ZABvAHcAKVQxMTExW1NlcGFyYXRvci01XxAUTWVudSBJdGVtIChNaW5pbWl6ZSlfEBhNZW51IEl0ZW0g
KExvYWQgLkVMRi4uLilRMl8QEk1lbnUgSXRlbSAoV2luZG93KVtNZW51IChGaWxlKV8QEU1lbnUgSXRl
bSAoUmVzZXQpXxAWTWVudSBJdGVtIChTdGF0ZSBTbG90KV8QFk1lbnUgSXRlbSAoTG9hZCBTdGF0ZSlf
EBZNZW51IChWaXJ0dWFsIE1hY2hpbmUpW0FwcGxpY2F0aW9uWVNlcGFyYXRvclxGaWxlJ3MgT3duZXJc
Q29udGVudCBWaWV3UzEyMV8QFE1lbnUgSXRlbSAoU2hvdyBBbGwpXxAXTWVudSBJdGVtIChIaWRlIE90
aGVycylfEBBNZW51IEl0ZW0gKEZpbGUpbxAVAE0AZQBuAHUAIABJAHQAZQBtACAAKABIAGkAZABlACAw
1zDsMKT/AQApXxAWTWVudSBJdGVtIChTYXZlIFN0YXRlKV8QH01lbnUgSXRlbSAoTmV3QXBwbGljYXRp
b24gSGVscClfEBdNZW51IEl0ZW0gKEJvb3QgY2Ryb20wKV8QFE1lbnUgSXRlbSAoU2VydmljZXMpW1Nl
cGFyYXRvci00XxAQTWVudSBJdGVtIChab29tKdIADgA+AYYDbYCeoNIADgA+AYYDcICeoNIADgA+AYYD
c4CerxA3AGkAqwGJAYoBiwCqAVkBjgCjAKwBkgEFAZQApgENASQBSgGdAZ4ApAGoAaMAqAAfAEwAsgGr
AawBOAGuAKIBrwEXAYwBjwDnAZEBkwCnAZYAwwFnAEEBQAGhAW8BogClAOgA9wF5AacAqQCtAbCADoBT
gGKAY4BpgE6AVIBugC2AV4BkgDmAioA9gDqAQoBPgISAl4AzgHaAZ4BGgAKAC4AggJGAc4BJgJWAH4CH
gD6AeoB+gC+Af4CNgEGAm4AhgFiAB4BKgGyAWYBxgDiALoA0gF6AcIBIgF2Ag9IADgA+AYYDrYCerxA3
A64DrwOwA7EDsgOzA7QDtQO2A7cDuAO5A7oDuwO8A70DvgO/A8ADwQPCA8MDxAPFA8YDxwPIA8kDygPL
A8wDzQPOA88D0APRA9ID0wPUA9UD1gPXA9gD2QPaA9sD3APdA94D3wPgA+ED4gPjA+SA0YDSgNOA1IDV
gNaA14DYgNmA2oDbgNyA3YDegN+A4IDhgOKA44DkgOWA5oDngOiA6YDqgOuA7IDtgO6A74DwgPGA8oDz
gPSA9YD2gPeA+ID5gPqA+4D8gP2A/oD/gQEAgQEBgQECgQEDgQEEgQEFgQEGgQEHEQF3EI4QjxEBfxEB
gREBcRA6EQGDEQGLEQGMEB0QBRCCEPAQGBAXEIgQgRATEQFyEQGHEQGAEQGNEQGOEQF0EIYQUxEBhhBv
EQF8EQFvEIMQ7xBnEJARAYoQOBCVECUQXBA5EQF9EQFzEGoRAYIRAXsRAYUQJxP//////////RCWEJER
AYQRAWgRAXAQ7NIADgA+AGcEHoAXoNIADgA+AYYEIYCeoNIADgA+AYYEJICeoNIANwA4BCYEJ6IEJwA7
Xk5TSUJPYmplY3REYXRhAAgAGQAiACcAMQA6AD8ARABSAFQAZgKCAogC0wLaAuEC7wMBAx0DKwM3A0MD
UQNcA2oDhgOUA6cDuQPTA90D6gPsA+8D8QPzA/YD+AP6A/wD/gQABAIEBQQHBAkECwQOBBEEEwQcBCgE
KgQsBDoEQwRMBFcEXARrBHQEhwSQBJsEnQSgBKIEywTYBOUE8wT9BQsFGAUqBT4FSgVMBU4FUAVSBVcF
WQVbBV0FXwVhBXwFpwWwBc0F3wXqBfMF/wYLBg0GDwYRBhQGFgYYBhoGIwYlBigGKgZLBlMGYQZuBnAG
cgZ0BnYGeQZ7Bn0GfwaEBoYGjwaUBp8GtwbABtQG1gbYBuEG6QbrBvAG+QcABw4HFQceByMHOQdCB0sH
WAdfB2sHdAd7B4oHkgedB6YHrQfFB84H0wfmB+8H9ggDCAkIEggUCC0ILwgxCDMINQg3CDkIOwg9CD8I
QQhDCEUIUghbCGMIZQhnCGkIigiSCKYIsQi/CMkI1gjdCN8I4QjmCOgI7QjvCPEI8wkECQsJFwkZCRsJ
HQkfCTIJNAlBCVAJUglUCVYJXglwCXkJfgmRCZ4JoAmiCaQJtwnACcUJ0AnWCd8J5gn+Cg0KHgosCi4K
MAoyCjQKPQo/CkEKSgpMCk4KZQpuCncKfgqVCqIKpAqmCqgKyQrLCs0KzwrRCtMK1QreCt8K+AsFCwcL
CQsLCywLLgswCzILNAs2CzgLSQtLC00LTwtRC2YLeAuFC4cLiQuLC6wLrguwC7ILtAu2C7gLvQvKC9cL
2QvbC90L/gwADAIMBAwGDAgMCgwTDBUMKww8DD4MQAxCDEQMUQxeDGAMYgxkDIUMhwyJDIsMjQyPDJEM
ngygDKIMpAy6DLwMxgzTDNUM1wzZDPoM/Az+DQANAg0EDQYNGQ0bDSYNNw05DTsNPQ0/DVwNXg1gDWIN
ZA1mDWgNfQ2dDa4NsA2yDbQNtg3XDdkN2w3dDd8N4Q3jDfAN8g30DfYOAw4FDg4OGw4dDh8OIQ5CDkQO
Rg5LDk0OTw5RDlMOXw54DoEOgw7aDtwO3g7gDuIO5A7mDugO6g7sDu4O8A7yDvQO9g74DvoO/A7+DwAP
Ag8EDwYPCA8KDwwPDg8QDxIPFA8WDxgPGg8cDx4PIA8iDyQPJg8oDyoPLA8uD1cPZQ9yD3QPdg93D3kP
eg98D34PgA+pD7MPvA++D8APwg/ED8YPyA/KD8wP3Q/fD+EP4w/lD/cQBhATEBUQFxAZECIQJBAzEDUQ
NxA5EDsQPRA/EEEQYhBkEGYQaBBqEGwQbhB9EH8QoBCiEKQQphCoEKoQrBCyENMQ1RDXENkQ2xDdEN8Q
9xEgESIRJBElEScRKBEqESwRLhFPEVERUxFVEVcRWRFbEWYRhxGJEYsRjRGPEZERkxGeEaARwRHDEcUR
xxHJEcsRzRHYEdoR4xHoEhESExIVEhcSGRIbEh0SHxIhEiYSLxIxEjQSNhJfEmESYxJkEmYSZxJpEmsS
bRKWEpgSmhKcEp4SoBKiEqQSphK1Er4SwBLXEtkS2xLdEt8S4RLjEuUS5xLpEusS7RMWExgTGhMbEx0T
HhMgEyITJBNFE0cTSRNLE00TTxNRE2oTbBOVE5cTmRObE50TnxOhE6MTpROuE78TwRPDE8UTxxPQE9IT
0xPlFA4UEBQSFBMUFRQWFBgUGhQcFCkUMxQ8FD4USRRLFE0UTxRRFFMUfBR+FIAUghSEFIYUiBSKFIwU
kRSaFJwUoRSjFKUUxhTIFMoUzBTOFNAU0hTeFQcVCRULFQ0VDxURFRMVFRUXFR4VJxUpFTIVNBU2FTgV
OhVjFWUVZxVoFWoVaxVtFW8VcRWAFYwVlRWaFaMVpRX8Ff4WABYCFgQWBhYIFgoWDBYOFhAWEhYUFhYW
GBYaFhwWHhYgFiIWJBYmFigWKhYsFi4WMBYyFjQWNhY4FjoWPBY+FkAWQhZEFkYWSBZKFkwWThZQFlkW
Wxa0FrYWuBa6FrwWvhbAFsIWxBbGFsgWyhbMFs4W0BbSFtQW1hbYFtoW3BbeFuAW4hbkFuYW6BbqFuwW
7hbwFvIW9Bb2FvgW+hb8Fv4XABcCFwQXBhcIFwoXExcVF24XcBdyF3QXdhd4F3oXfBd+F4AXgheEF4YX
dHJpYnV0ZXOAFYAT0gAOAIEAggCDV05TLmRhdGGAFE8QEAAAAAUAAAAMAAAAIAAAAADSADcAOACFAIaj
AIYAhwA7XU5TTXV0YWJsZURhdGFWTlNEYXRh0gA3ADgAiQCKogCKADtfEBNOU09wZW5HTFBpeGVsRm9y
bWF00gA3ADgAjACNpACNAI4AjwA7XE5TT3BlbkdMVmlld1ZOU1ZpZXdbTlNSZXNwb25kZXLSADcAOACR
AJKjAJIAkwA7Xk5TTXV0YWJsZUFycmF5V05TQXJyYXlaezQ4MCwgMzYwfdIANwA4AJYAjqMAjgCPADtf
EBV7ezAsIDB9LCB7MTI4MCwgNzc4fX3SADcAOACZAJqiAJoAO18QEE5TV2luZG93VGVtcGxhdGXSADcA
OACcAJ2jAJ0AngA7XE5TTXV0YWJsZVNldFVOU1NldNIADgA+AGcAoYAXrACiAKMApAClAKYApwCoAKkA
qgCrAKwArYAfgCSAMoA4gD6AQoBGgEqAUIBTgFiAXNQADgCvALAAsQCyAGkAtAC1XU5TRGVzdGluYXRp
b25YTlNTb3VyY2VXTlNMYWJlbIAjgA6AIIAi0gAOADIAMwC4gASAIV8QFENBcHBsaWNhdGlvbkRlbGVn
YXRlXG1fb3BlbkdsVmlld9IANwA4ALwAvaMAvQC+ADtfEBROU05pYk91dGxldENvbm5lY3Rvcl5OU05p
YkNvbm5lY3RvctMADgCwALEAwADBAMKAMYAlgDDYAA4AxADFAMYAxwDIAMkAygDLAMwAzQDOAM8A0ADR
ANJXTlNUaXRsZV8QEU5TS2V5RXF1aXZNb2RNYXNrWk5TS2V5RXF1aXZdTlNNbmVtb25pY0xvY1lOU09u
SW1hZ2VcTlNNaXhlZEltYWdlVk5TTWVudYAvgCcSABgAAIAoEn////+AKYAtgCbUAA4AxADUANUA1gDX
ANgA2VZOU05hbWVbTlNNZW51SXRlbXOAa4BwgHaAcVtIaWRlIE90aGVyc1Fo0wAOADIA3QDeAN8A4F5O
U1Jlc291cmNlTmFtZYAsgCqAK1dOU0ltYWdlXxAPTlNNZW51Q2hlY2ttYXJr0gA3ADgA5ADlogDlADtf
EBBOU0N1c3RvbVJlc291cmNl0wAOADIA3QDeAN8A6YAsgCqALl8QEE5TTWVudU1peGVkU3RhdGXSADcA
OADsAO2iAO0AO1pOU01lbnVJdGVtXxAWaGlkZU90aGVyQXBwbGljYXRpb25zOtIANwA4APAA8aMA8QC+
ADtfEBVOU05pYkNvbnRyb2xDb25uZWN0b3LTAA4AsACxAMAA9AD1gDGAM4A32AAOAMQAxQDGAMcAyADJ
AMoAywD4APkA+gDPANAA0QD9gC+ANRIAEAAAgDaAKYAtgDTTAA4AxADVANYBAAEBgGuAe4B8XxATTmV3
QXBwbGljYXRpb24gSGVscFE/WXNob3dIZWxwOtMADgCwALEAwAEHAQiAMYA5gD3YAA4AxADFAMYAxwDI
AMkAygDLAQsA+QEMAM8A0ADRAQ+AL4A7gDyAKYAtgDrUAA4AxADUANUA1gESARMBFIBrgJWAmICXVFpv
b21QXHBlcmZvcm1ab29tOtMADgCwALEAwAEaARuAMYA/gEHYAA4AxADFAMYAxwDIAMkAygDLAR4A+QEM
AM8A0ADRANKAL4BAgDyAKYAtgCZYU2hvdyBBbGxfEBZ1bmhpZGVBbGxBcHBsaWNhdGlvbnM61AAOAK8A
sACxAMAAHwEoASmAMYACgEOARdcADgDEAMYAxwDIAMkAygDLASwBDADPANAA0QDSgC+ARIA8gCmALYAm
agBBAGIAbwB1AHQAIDDXMOwwpP8BXxAdb3JkZXJGcm9udFN0YW5kYXJkQWJvdXRQYW5lbDrTAA4AsACx
AMABNQE2gDGAR4BJ2AAOAMQAxQDGAMcAyADJAMoAywE5APkAzgDPANAA0QDSgC+ASIAogCmALYAmaQBI
AGkAZABlACAw1zDsMKT/AVVoaWRlOtQADgCvALAAsQDAALQBQwFEgDGAIIBLgE/YAA4AxADFAMYAxwDI
AMkAygDLAUcA+QFIAM8A0ADRAUuAL4BNgE6AKYAtgEzTAA4AxADVANYBTgFPgGuAbIBtXExvYWQgLkVM
Ri4uLlFvWEJvb3RFbGY61AAOAK8AsACxALIAtAFWAVeAI4AggFGAUtIADgAyADMANIAEgANYZGVsZWdh
dGXTAA4AsACxAMABXgFfgDGAVIBX2AAOAMQAxQDGAMcAyADJAMoAywFiAPkBYwDPANAA0QDSgC+AVYBW
gCmALYAmaQBRAHUAaQB0ACAw1zDsMKT/AVFxWnRlcm1pbmF0ZTrTAA4AsACxAMABbAFtgDGAWYBb2AAO
AMQAxQDGAMcAyADJAMoAywFwAPkBDADPANAA0QEPgC+AWoA8gCmALYA6XxASQnJpbmcgQWxsIHRvIEZy
b250XxAPYXJyYW5nZUluRnJvbnQ60wAOALAAsQDAAXkBeoAxgF2AYNgADgDEAMUAxgDHAMgAyQDKAMsB
fQD5AX4AzwDQANEBD4AvgF6AX4ApgC2AOlhNaW5pbWl6ZVFtXxATcGVyZm9ybU1pbmlhdHVyaXplOtIA
DgA+AYYBh4CerxAqAMEBiQGKAPQBGgFLAVYBBwDSAV4BkgGTAEwBKAD9AZcBeQGZAZoBmwGcAZ0BbAGf
AaABoQGiAaMBQwGlAaYAaQGoAakAQQGrAawBrQE1AQ8BsAC0gCWAYoBlgDOAP4BMgFGAOYAmgFSAd4B6
gAuAQ4A0gH2AXYBzgHWAgIB4gISAWYCJgHKAkYBogHSAS4CLgI6ADoCHgJKAB4CUgG6AmYBHgDqAfoAg
2AAOAMQAxQDGAMcAyADJAMoAywG0APkBtQDPANAA0QDSgC+AY4BkgCmALYAmbABQAHIAZQBmAGUAcgBl
AG4AYwBlAHMgJlEs2gAOAbwAxADFAMYAxwDIAMkAygG9AMsBogHAAPkBDADPANAA0QDSAcVZTlNTdWJt
ZW51WE5TQWN0aW9ugC+AaIBmgDyAKYAtgCaAZ1hTZXJ2aWNlc15zdWJtZW51QWN0aW9uOtQADgDEANQA
1QDWAcABywHMgGuAZoBqgGnSAA4APgBnAc+AF6BfEA9fTlNTZXJ2aWNlc01lbnXSADcAOAHSAMqiAMoA
O1RGaWxl0gAOAD4AZwHWgBeiAawBQ4BugEvYAA4AxADFAMYAxwDIAMkAygDLAdsA+QEMAM8A0ADRAUuA
L4BvgDyAKYAtgExbQm9vdCBjZHJvbTBeTmV3QXBwbGljYXRpb27SAA4APgBnAeSAF6sBKAGgAYkBmQGK
AaMBNQDBARoBmgFegEOAcoBigHOAZYB0gEeAJYA/gHWAVNoADgDEAMUB8QDGAfIAxwDIAMkAygDLAQwA
+QH1AQwB9QDPANAA0QDSXU5TSXNTZXBhcmF0b3JcTlNJc0Rpc2FibGVkgC+APAmAPAmAKYAtgCbaAA4A
xADFAfEAxgHyAMcAyADJAMoAywEMAPkB9QEMAfUAzwDQANEA0oAvgDwJgDwJgCmALYAm2gAOAMQAxQHx
AMYB8gDHAMgAyQDKAMsBDAD5AfUBDAH1AM8A0ADRANKAL4A8CYA8CYApgC2AJtoADgDEAMUB8QDGAfIA
xwDIAMkAygDLAQwA+QH1AQwB9QDPANAA0QDSgC+APAmAPAmAKYAtgCZcX05TQXBwbGVNZW512AAOAMQA
xQDGAMcAyADJAMoAywIZAPkBDADPANAA0QGcgC+AeYA8gCmALYB40wAOAMQA1QDWAiACIYBrgIGAg18Q
FVBhdXNlIFdoZW4gRm9jdXMgTG9zdNoADgDEAMUB8QDGAfIAxwDIAMkAygDLAQwA+QH1AQwB9QDPANAA
0QGcgC+APAmAPAmAKYAtgHhUSGVscNIADgA+AGcCL4AXoQD0gDPaAA4BvADEAMUAxgDHAMgAyQDKAb0A
ywDSANcA+QEMAM8A0ADRAbACOYAvgCaAcIA8gCmALYB+gH/UAA4AxADUANUA1gI8Aj0CPoBrgJuAnYCc
2gAOAbwAxADFAMYAxwDIAMkAygG9AMsBnAIgAPkBDADPANAA0QGwAkeAL4B4gIGAPIApgC2AfoCCXxAP
VmlydHVhbCBNYWNoaW5l0gAOAD4AZwJLgBenAZ0BqAGSAZMBnwGlAaaAhICHgHeAeoCJgIuAjtgADgDE
AMUAxgDHAMgAyQDKAMsCVQD5AlYAzwDQANEBnIAvgIWAhoApgC2AeF5QYXVzZSAvIFJlc3VtZVFy2AAO
AMQAxQDGAMcAyADJAMoAywJeAPkBDADPANAA0QGcgC+AiIA8gCmALYB4VVJlc2V02AAOAMQAxQDGAMcA
yADJAMoAywJmAPkBDADPANAA0QGcgC+AioA8gCmALYB4WlN0YXRlIFNsb3TYAA4AxADFAMYAxwDIAMkA
ygDLAm4A+QJvAM8A0ADRAZyAL4CMgI2AKYAtgHhaU2F2ZSBTdGF0ZVFz2AAOAMQAxQDGAMcAyADJAMoA
ywJ3APkCeADPANAA0QGcgC+Aj4CQgCmALYB4WkxvYWQgU3RhdGVRbNoADgDEAMUB8QDGAfIAxwDIAMkA
ygDLAQwA+QH1AQwB9QDPANAA0QEPgC+APAmAPAmAKYAtgDraAA4BvADEAMUAxgDHAMgAyQDKAb0AywFL
AU4A+QEMAM8A0ADRAbACj4AvgEyAbIA8gCmALYB+gJPaAA4BvADEAMUAxgDHAMgAyQDKAb0AywEPARIA
+QEMAM8A0ADRAbACmIAvgDqAlYA8gCmALYB+gJZWV2luZG930gAOAD4AZwKcgBekAXkBBwGhAWyAXYA5
gJGAWV5fTlNXaW5kb3dzTWVuddoADgG8AMQAxQDGAMcAyADJAMoBvQDLAP0BAAD5AQwAzwDQANEBsAKq
gC+ANIB7gDyAKYAtgH6AmllBTWFpbk1lbnXSAA4APgBnAq6AF6UBlwGpAZsBqwGtgH2AkoCAgJSAmVtf
TlNNYWluTWVuddIANwA4ArYAk6IAkwA70gAOAD4BhgK5gJ6vECoA0gDSANIA/QDSAakAHwEPAZcA0gGc
AZwAQQDSAa0BsAEPANIA0gGwAZsBnAEPAZwA0gEPAYoA0gFLAZwBnABMAZwBsAAfAbABSwGwANIBqwAf
AB+AJoAmgCaANIAmgJKAAoA6gH2AJoB4gHiAB4AmgJmAfoA6gCaAJoB+gICAeIA6gHiAJoA6gGWAJoBM
gHiAeIALgHiAfoACgH6ATIB+gCaAlIACgALSAA4APgGGAuaAnq8QKwFLAMEBiQGKARoBkwFWANIBXgBM
AZIBBwAfAPQBKAGcAZcBmwD9AGkBmQGaAZ0BnwGlAaABpgF5AaMBQwFsAaEBogGoAEEBqQGrAawBrQE1
AQ8BsAC0gEyAJYBigGWAP4B6gFGAJoBUgAuAd4A5gAKAM4BDgHiAfYCAgDSADoBzgHWAhICJgIuAcoCO
gF2AdIBLgFmAkYBogIeAB4CSgJSAboCZgEeAOoB+gCDSAA4APgGGAxSAnq8QKwMVAxYDFwMYAxkDGgMb
AxwDHQMeAx8DIAMhAyIDIwMkAyUDJgMnAygDKQMqAysDLAMtAy4DLwMwAzEDMgMzAzQDNQM2AzcDOAM5
AzoDOwM8Az0DPgM/gKKAo4CkgKWApoCngKiAqYCqgKuArICtgK6Ar4CwgLGAsoCzgLSAtYC2gLeAuIC5
gLqAu4C8gL2AvoC/gMCAwYDCgMOAxIDFgMaAx4DIgMmAyoDLgMxbTWVudSAoRmlsZSlfEBdNZW51IEl0
ZW0gKEhpZGUgT3RoZXJzKVMxMjFfEBRNZW51IEl0ZW0gKFNlcnZpY2VzKV8QFE1lbnUgSXRlbSAoU2hv
dyBBbGwpW1NlcGFyYXRvci00W0FwcGxpY2F0aW9uXxAVTWVudSAoTmV3QXBwbGljYXRpb24pVDExMTFc
Q29udGVudCBWaWV3XxAhTWVudSBJdGVtIChQYXVzZSBXaGVuIEZvY3VzIExvc3QpXxAQTWVudSBJdGVt
IChab29tKVxGaWxlJ3MgT3duZXJfEB9NZW51IEl0ZW0gKE5ld0FwcGxpY2F0aW9uIEhlbHApbxAWAE0A
ZQBuAHUAIABJAHQAZQBtACAAKABBAGIAbwB1AHQAIDDXMOwwpP8BAClfEBZNZW51IChWaXJ0dWFsIE1h
Y2hpbmUpXxAaTWVudSBJdGVtIChOZXdBcHBsaWNhdGlvbilfEBtNZW51IEl0ZW0gKFZpcnR1YWwgTWFj
aGluZSlRMltPcGVuR0wgVmlld1lTZXBhcmF0b3JbU2VwYXJhdG9yLTFfEBpNZW51IEl0ZW0gKFBhdXNl
IC8gUmVzdW1lKV8QFk1lbnUgSXRlbSAoU3RhdGUgU2xvdClfEBZNZW51IEl0ZW0gKFNhdmUgU3RhdGUp
W1NlcGFyYXRvci0yXxAWTWVudSBJdGVtIChMb2FkIFN0YXRlKV8QFE1lbnUgSXRlbSAoTWluaW1pemUp
W1NlcGFyYXRvci0zXxAYTWVudSBJdGVtIChMb2FkIC5FTEYuLi4pXxAeTWVudSBJdGVtIChCcmluZyBB
bGwgdG8gRnJvbnQpW1NlcGFyYXRvci01XxAPTWVudSAoU2VydmljZXMpXxARTWVudSBJdGVtIChSZXNl
dClvEB0AVwBpAG4AZABvAHcAIAAoMNcw7DCk/wEAIAAtACAATwB1AHQAcAB1AHQAIABXAGkAbgBkAG8A
dwApXxAQTWVudSBJdGVtIChGaWxlKV8QEk1lbnUgSXRlbSAoV2luZG93KV8QF01lbnUgSXRlbSAoQm9v
dCBjZHJvbTApUTFvEBUATQBlAG4AdQAgAEkAdABlAG0AIAAoAEgAaQBkAGUAIDDXMOwwpP8BACldTWVu
dSAoV2luZG93KVhNYWluTWVudV8QFEFwcGxpY2F0aW9uIERlbGVnYXRl0gAOAD4BhgNtgJ6g0gAOAD4B
hgNwgJ6g0gAOAD4BhgNzgJ6vEDcBSwGJAYoA9AEaAZMBVgEHANIBkgCrAKwAHwCtASgA/QGcAXkBpgCp
AKoBpQGgAaIBowCiAagBrACoATUBDwGwALQAwQFeAEwApABpAZcBmQGaAZsBnQGfAKMBbAGhAUMApQGp
AEEApwGrAa0ApoBMgGKAZYAzgD+AeoBRgDmAJoB3gFOAWIACgFyAQ4A0gHiAXYCOgEqAUICLgHKAaIB0
gB+Ah4BugEaAR4A6gH6AIIAlgFSAC4AygA6AfYBzgHWAgICEgImAJIBZgJGAS4A4gJKAB4BCgJSAmYA+
0gAOAD4BhgOtgJ6vEDcDrgOvA7ADsQOyA7MDtAO1A7YDtwO4A7kDugO7A7wDvQO+A78DwAPBA8IDwwPE
A8UDxgPHA8gDyQPKA8sDzAPNA84DzwPQA9ED0gPTA9QD1QPWA9cD2APZA9oD2wPcA90D3gPfA+AD4QPi
A+MD5IDRgNKA04DUgNWA1oDXgNiA2YDagNuA3IDdgN6A34DggOGA4oDjgOSA5YDmgOeA6IDpgOqA64Ds
gO2A7oDvgPCA8YDygPOA9ID1gPaA94D4gPmA+oD7gPyA/YD+gP+BAQCBAQGBAQKBAQOBAQSBAQWBAQaB
AQcRAXsQgRCDEG8QlhEBhBP//////////RDvEDkRAYMRAXEQJxEBjhAlEDoQahEBgBAXEQGHEQGMEQGL
EQGGEOwQghCQEQGNEQGCEQF8EQFvEIYQGBAdEQGKEJEQiBEBdBEBaBEBdxA4EI8QlREBfxEBgREBhREB
cBAFEFwRAX0Q8BBTEQFzEI4QExBnEQFy0gAOAD4AZwQegBeg0gAOAD4BhgQhgJ6g0gAOAD4BhgQkgJ6g
0gA3ADgEJgQnogQnADteTlNJQk9iamVjdERhdGEACAAZACIAJwAxADoAPwBEAFIAVABmAoICiALTAtoC
4QLvAwEDHQMrAzcDQwNRA1wDagOGA5QDpwO5A9MD3QPqA+wD7wPxA/MD9gP4A/oD/AP+BAAEAgQFBAcE
CQQLBA4EEQQTBBwEKAQqBCwEOgRDBEwEVwRcBGsEdASHBJAEmwSdBKAEogTLBNgE5QTzBP0FCwUYBSoF
PgVKBUwFTgVQBVIFVwVZBVsFXQVfBWEFfAWnBbAFzQXfBeoF8wX/BgsGDQYPBhEGFAYWBhgGGgYjBiUG
KAYqBksGUwZhBm4GcAZyBnQGdgZ5BnsGfQZ/BoQGhgaPBpQGnwa3BsAG1AbWBtgG4QbpBusG/gcHBw4H
HAcjBywHMQdHB1AHWQdmB20HeQeCB4kHmAegB6sHtAe7B9MH3AfhB/QH/QgECBEIFwggCCIIOwg9CD8I
QQhDCEUIRwhJCEsITQhPCFEIUwhkCHIIewiDCIUIhwiJCIsIlAiWCJgIrwi8CMUIzAjjCPII/wkBCQMJ
BQkmCS4JQglNCVsJZQlyCXkJewl9CYIJhAmJCYsJjQmPCaAJpwmzCbUJtwm5CbsJxwnJCdYJ5QnnCekJ
6wnzCgUKDgoTCiYKMwo1CjcKOQpMClUKWgplCn4KhwqOCqYKswq1CrcKuQraCtwK3grjCuUK5wrpCusK
+Ar6CvwK/gsUCxYLIAstCy8LMQszC1QLVgtYC1oLXAteC2ALcQtzC3ULdwt5C34LfwuMC5kLmwudC58L
wAvCC8QLxgvIC8oLzAvVC+4L/wwBDAMMBQwHDCQMJgwoDCoMLAwuDDAMRQxlDHIMdAx2DHgMmQybDJ0M
nwyhDKMMpQy4DL4MzwzRDNMM1QzXDPgM+gz8DP4NAA0CDQQNEQ0TDRUNFw0kDSYNLw1ADUINRA1GDUgN
UQ1TDVUNXg1rDW0Nbw1xDZINlA2WDZgNmg2cDZ4NsQ2zDb4Nyw3NDc8N0Q3yDfQN9g34DfoN/A3+DhMO
JQ4yDjQONg44DlkOWw5dDl8OYQ5jDmUObg5wDoYOjw6RDugO6g7sDu4O8A7yDvQO9g74DvoO/A7+DwAP
Ag8EDwYPCA8KDwwPDg8QDxIPFA8WDxgPGg8cDx4PIA8iDyQPJg8oDyoPLA8uDzAPMg80DzYPOA86DzwP
XQ9fD2EPYw9lD2cPaQ+CD4QPrQ+3D8APwg/ED8YPyA/KD8wPzg/QD9kP6A/5D/sP/Q//EAEQChAMEA0Q
HxAoEC0QMhA7ED0QQhBEEEYQZxBpEGsQbRBvEHEQcxB/EI4QlxCZELAQshC0ELYQuBC6ELwQvhDAEMIQ
xBDGEO8Q/REKEQwRDhEPEREREhEUERYRGBFBEUMRRRFGEUgRSRFLEU0RTxF4EXoRfBF9EX8RgBGCEYQR
hhGvEbERsxG0EbYRtxG5EbsRvRHKEesR7RHvEfER8xH1EfcSBBIGEggSChIiEksSTRJPElASUhJTElUS
VxJZEl4SZxJpEmwSbhKXEpkSmxKdEp8SoRKjEqUSpxK4EroSvBK+EsAS6RLrEu0S7xLxEvMS9RL3EvkT
CxMUExYTJRMnEykTKxMtEy8TMRMzE1QTVhNYE1oTXBNeE2ATbxNxE5ITlBOWE5gTmhOcE54TpBPFE8cT
yRPLE80TzxPRE9wT/RP/FAEUAxQFFAcUCRQUFBYUNxQ5FDsUPRQ/FEEUQxROFFAUeRR7FH0UfhSAFIEU
gxSFFIcUsBSyFLQUthS4FLoUvBS+FMAU6RTrFO0U7xTxFPMU9RT3FPkVABUJFQsVFBUWFRgVGhUcFSsV
VBVWFVgVWhVcFV4VYBViFWQVbhV3FXkVhBWGFYgVihWMFY4VmhWjFagVsRWzFgoWDBYOFhAWEhYUFhYW
GBYaFhwWHhYgFiIWJBYmFigWKhYsFi4WMBYyFjQWNhY4FjoWPBY+FkAWQhZEFkYWSBZKFkwWThZQFlIW
VBZWFlgWWhZcFl4WZxZpFsIWxBbGFsgWyhbMFs4W0BbSFtQW1hbYFtoW3BbeFuAW4hbkFuYW6BbqFuwW
7hbwFvIW9Bb2FvgW+hb8Fv4XABcCFwQXBhcIFwoXDBcOFxAXEhcUFxYXGBchFyMXfBd+F4AXgheEF4YX
iBeKF4wXjheQF5IXlBeWF5gXmhecF54XoBeiF6QXpheoF6oXrBeuF7AXshe0F7YXuBe6F7wXvhfAF8IX
xBfQF+4X+hgXGBkYSBhsGIMYjxisGLUYwRjiGPQZDBkaGVcZXBloGX8ZmhmcGbEZvRnRGeoaAxocGiga
Mho/GkwaUBpnGoEalBrBGtoa/BsWGy0bORtMG1UbVxtYG2EbYxtkG20bbxvgG+Ib5BvmG+gb6hvsG+4b
xBfGF8gXyhfMF84X0BfSF94X+Bf8GBMYKhg2GEIYWhhfGGwYkBijGLAY0hkBGRoZNxlVGVcZYxltGXkZ
lhmvGcgZ1BntGgQaEBorGkwaWBpqGn4auxrOGuMa/Rr/GywbOhtDG1obYxtlG2YbbxtxG3Ibext9G+4b
8BvyG/Qb9hv4G/ob/Bv+HAAcAhwEHAYcCBwKHAwcDhwQHBIcFBwWHBgcGhwcHB4cIBwiHCQcJhwoHCoc
LBwuHDAcMhw0HDYcOBw6HDwcPhxAHEIcRBxGHEgcShxMHE4cVxxZHMoczBzOHNAc0hzUHNYc2BzaHNwc
LBwuHDAcMhw0HDYcOBw6HDwcPhxAHEIcRBxGHEgcShxMHE4cUBxSHFQcVhxYHFocXBxlHGcc2BzaHNwc
3hzgHOIc5BzmHOgc6hzsHO4c8BzyHPQc9hz4HPoc/Bz+HQAdAh0EHQYdCB0KHQwdDh0QHRIdFB0WHRgd
Gh0cHR4dIB0iHSQdJh0oHSsdLh0xHTQdNx06HT0dQB1DHUUdRx1KHU0dUB1SHVUdWB1bHV0dXx1hHWMd
ZR1nHWkdax1tHXAdcx12HXkdfB1/HYEdgx2GHYgdix2OHZAdkh2UHZYdmR2bHZ0dnx2hHaMdph2pHasd
rh2xHbQdth2/HcEdwx3GHckdzB3OHdcd2R3aHeMd5R3mHe8d8R3yHfseAAAAAAAAAAICAAAAAAAABCgA
AAAAAAAAAAAAAAAAAB4PA</bytes>
Gh0cHR4dIB0iHSQdJh0oHSodLB0uHTAdMh00HTYdOR08HT8dQh1FHUgdSx1OHVEdUx1VHVcdWR1cHWUd
Zx1pHWwdbx1xHXQddh14HXodfR1/HYIdhR2IHYsdjR2PHZEdlB2XHZodnR2fHaEdox2mHagdqh2tHbAd
sx21HbcduR28Hb8dwh3FHccdyR3MHc4d0B3THdUd1x3ZHdwd5R3nHegd8R3zHfQd/R3/HgAeCR4OAAAA
AAAAAgIAAAAAAAAEKAAAAAAAAAAAAAAAAAAAHh0</bytes>
</object>
</data>
</archive>

View File

@ -24,7 +24,6 @@ void CGSH_OpenGLMacOSX::InitializeImpl()
void CGSH_OpenGLMacOSX::FlipImpl()
{
glFlush();
CGLFlushDrawable(m_context);
}