From af363c50c64268f473aa5b595a0379f8590c4759 Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Mon, 11 Feb 2019 19:36:01 +0100 Subject: Remove persistent storage of Entry objects --- src/CMakeLists.txt | 3 - src/arguments.cpp | 65 - src/arguments.h | 3 - src/definition.cpp | 2 +- src/doxygen.cpp | 1320 ++++++------- src/entry.cpp | 126 +- src/entry.h | 63 +- src/filestorage.h | 135 -- src/htmlgen.cpp | 1 - src/logos.cpp | 1985 -------------------- src/logos.h | 27 - src/marshal.cpp | 857 --------- src/marshal.h | 97 - src/memberdef.cpp | 1 - src/membergroup.cpp | 35 - src/membergroup.h | 3 - src/memberlist.cpp | 70 - src/memberlist.h | 3 - src/store.cpp | 484 ----- src/store.h | 123 -- testing/009/bug.xml | 2 +- testing/009/class_bug.xml | 2 +- testing/009/class_deprecated.xml | 2 +- testing/009/class_reminder.xml | 2 +- testing/009/class_test.xml | 2 +- testing/009/class_todo.xml | 2 +- testing/009/deprecated.xml | 2 +- testing/009/reminders.xml | 6 +- testing/009/test.xml | 2 +- testing/009/todo.xml | 2 +- testing/011/category_integer_07_arithmetic_08.xml | 6 +- testing/011/interface_integer.xml | 8 +- testing/012/citelist.xml | 86 +- testing/012/indexpage.xml | 26 +- testing/014/indexpage.xml | 2 +- testing/015/015__cond_8c.xml | 2 +- testing/016/016__copydoc_8c.xml | 8 +- testing/018/018__def_8c.xml | 10 +- testing/019/group__g1.xml | 2 +- testing/019/group__g2.xml | 2 +- testing/019/group__g3.xml | 4 +- testing/020/indexpage.xml | 4 +- testing/025/class_test.xml | 2 +- testing/026/class_test.xml | 2 +- testing/027/struct_car.xml | 2 +- testing/027/struct_object.xml | 6 +- testing/027/struct_truck.xml | 2 +- testing/027/struct_vehicle.xml | 6 +- testing/029/029__hideinit_8c.xml | 4 +- testing/031/indexpage.xml | 108 +- testing/035/035__invariant_8c.xml | 2 +- testing/036/036__link_8c.xml | 2 +- testing/037/class_receiver.xml | 2 +- testing/037/class_sender.xml | 2 +- testing/039/class_test.xml | 6 +- testing/041/class_test.xml | 8 +- testing/042/namespaceorg_1_1doxygen_1_1_test.xml | 2 +- testing/044/struct_s.xml | 12 +- testing/046/046__related_8cpp.xml | 2 +- testing/046/class_test.xml | 6 +- testing/047/047__return_8cpp.xml | 6 +- testing/048/048__showinit_8c.xml | 4 +- testing/050/indexpage.xml | 90 +- testing/051/indexpage.xml | 2 +- testing/054/054__parblock_8cpp.xml | 4 +- testing/055/md_055_markdown.xml | 62 +- testing/064/struct_foo.xml | 6 +- testing/066/class_class1.xml | 106 +- testing/067/067__link__varargs_8cpp.xml | 4 +- testing/068/068__ref__varargs_8cpp.xml | 4 +- testing/069/069__link__variadic__template_8cpp.xml | 20 +- testing/070/070__ref__variadic__template_8cpp.xml | 20 +- testing/071/namespace_a_namespace_1_1_0D0.xml | 8 +- testing/072/072__using_8cpp.xml | 2 +- testing/073/073__typed__enum_8cpp.xml | 2 +- testing/074/namespacens.xml | 8 +- testing/074/struct_foo.xml | 22 +- testing/075/struct_foo.xml | 14 +- ...xml__namespace__members__in__file__scope_8h.xml | 4 +- testing/079/empty.xml | 2 +- testing/080/class_interface.xml | 12 +- testing/081/081__brief__lists_8h.xml | 8 +- testing/082/namespace_n.xml | 4 +- testing/083/namespace_n.xml | 4 +- testing/084/084__markdown__pre_8f90.xml | 102 +- testing/085/085__tooltip_8cpp.xml | 132 +- 86 files changed, 1057 insertions(+), 5358 deletions(-) delete mode 100644 src/filestorage.h delete mode 100644 src/logos.cpp delete mode 100644 src/logos.h delete mode 100644 src/marshal.cpp delete mode 100644 src/marshal.h delete mode 100644 src/store.cpp delete mode 100644 src/store.h mode change 100755 => 100644 testing/012/citelist.xml mode change 100755 => 100644 testing/012/indexpage.xml mode change 100755 => 100644 testing/031/indexpage.xml mode change 100755 => 100644 testing/050/indexpage.xml mode change 100755 => 100644 testing/055/md_055_markdown.xml mode change 100755 => 100644 testing/066/class_class1.xml mode change 100755 => 100644 testing/084/084__markdown__pre_8f90.xml mode change 100755 => 100644 testing/085/085__tooltip_8cpp.xml diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4dc31fa..92a302a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -204,12 +204,10 @@ add_library(_doxygen STATIC latexgen.cpp layout.cpp lodepng.cpp - logos.cpp mandocvisitor.cpp mangen.cpp sqlite3gen.cpp markdown.cpp - marshal.cpp memberdef.cpp membergroup.cpp memberlist.cpp @@ -230,7 +228,6 @@ add_library(_doxygen STATIC rtfgen.cpp rtfstyle.cpp searchindex.cpp - store.cpp tagreader.cpp template.cpp textdocvisitor.cpp diff --git a/src/arguments.cpp b/src/arguments.cpp index a828dab..6d3e13b 100644 --- a/src/arguments.cpp +++ b/src/arguments.cpp @@ -1,5 +1,4 @@ #include "arguments.h" -#include "marshal.h" #include /*! the argument list is documented if one of its @@ -38,67 +37,3 @@ ArgumentList *ArgumentList::deepCopy() const return argList; } -ArgumentList *ArgumentList::unmarshal(StorageIntf *s) -{ - uint i; - uint count = unmarshalUInt(s); - if (count==NULL_LIST) return 0; // null list - ArgumentList *result = new ArgumentList; - assert(count<1000000); - //printf("unmarshalArgumentList: %d\n",count); - for (i=0;iattrib = unmarshalQCString(s); - a->type = unmarshalQCString(s); - a->canType = unmarshalQCString(s); - a->name = unmarshalQCString(s); - a->array = unmarshalQCString(s); - a->defval = unmarshalQCString(s); - a->docs = unmarshalQCString(s); - a->typeConstraint = unmarshalQCString(s); - result->append(a); - } - result->constSpecifier = unmarshalBool(s); - result->volatileSpecifier = unmarshalBool(s); - result->pureSpecifier = unmarshalBool(s); - result->trailingReturnType = unmarshalQCString(s); - result->isDeleted = unmarshalBool(s); - result->refQualifier = (RefQualifierType)unmarshalInt(s); - return result; -} - -void ArgumentList::marshal(StorageIntf *s,ArgumentList *argList) -{ - if (argList==0) - { - marshalUInt(s,NULL_LIST); // null pointer representation - } - else - { - marshalUInt(s,argList->count()); - if (argList->count()>0) - { - ArgumentListIterator ali(*argList); - Argument *a; - for (ali.toFirst();(a=ali.current());++ali) - { - marshalQCString(s,a->attrib); - marshalQCString(s,a->type); - marshalQCString(s,a->canType); - marshalQCString(s,a->name); - marshalQCString(s,a->array); - marshalQCString(s,a->defval); - marshalQCString(s,a->docs); - marshalQCString(s,a->typeConstraint); - } - } - marshalBool(s,argList->constSpecifier); - marshalBool(s,argList->volatileSpecifier); - marshalBool(s,argList->pureSpecifier); - marshalQCString(s,argList->trailingReturnType); - marshalBool(s,argList->isDeleted); - marshalInt(s,(int)argList->refQualifier); - } -} - diff --git a/src/arguments.h b/src/arguments.h index 3af7134..7ef9642 100644 --- a/src/arguments.h +++ b/src/arguments.h @@ -115,9 +115,6 @@ class ArgumentList : public QList bool isDeleted; /*! C++11 ref qualifier */ RefQualifierType refQualifier; - - static ArgumentList *unmarshal(StorageIntf *s); - static void marshal(StorageIntf *s,ArgumentList *argList); }; typedef QListIterator ArgumentListIterator; diff --git a/src/definition.cpp b/src/definition.cpp index ae229ad..a649700 100644 --- a/src/definition.cpp +++ b/src/definition.cpp @@ -26,6 +26,7 @@ #include "doxygen.h" #include "language.h" #include "message.h" +#include "portable.h" #include "outputlist.h" #include "code.h" #include "util.h" @@ -34,7 +35,6 @@ #include "section.h" #include "htags.h" #include "parserintf.h" -#include "marshal.h" #include "debug.h" #include "vhdldocgen.h" #include "memberlist.h" diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 9cdad02..caa13a6 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -38,7 +38,6 @@ #include "scanner.h" #include "entry.h" #include "index.h" -#include "logos.h" #include "message.h" #include "config.h" #include "util.h" @@ -80,14 +79,11 @@ #include "tclscanner.h" #include "code.h" #include "objcache.h" -#include "store.h" -#include "marshal.h" #include "portable.h" #include "vhdljjparser.h" #include "vhdldocgen.h" #include "eclipsehelp.h" #include "cite.h" -#include "filestorage.h" #include "markdown.h" #include "arguments.h" #include "memberlist.h" @@ -111,7 +107,7 @@ extern void initResources(); #define RECURSE_ENTRYTREE(func,var) \ do { if (var->children()) { \ - EntryNavListIterator eli(*var->children()); \ + EntryListIterator eli(*var->children()); \ for (;eli.current();++eli) func(eli.current()); \ } } while(0) @@ -166,7 +162,7 @@ SDict Doxygen::dirRelations(257); ParserManager *Doxygen::parserManager = 0; QCString Doxygen::htmlFileExtension; bool Doxygen::suppressDocWarnings = FALSE; -Store *Doxygen::symbolStorage; +//Store *Doxygen::symbolStorage; QCString Doxygen::objDBFileName; QCString Doxygen::entryDBFileName; QCString Doxygen::filterDBFileName; @@ -180,12 +176,11 @@ bool Doxygen::markdownSupport = TRUE; GenericsSDict *Doxygen::genericsDict; // locally accessible globals -static QDict g_classEntries(1009); +static QDict g_classEntries(1009); static StringList g_inputFiles; static QDict g_compoundKeywordDict(7); // keywords recognised as compounds static OutputList *g_outputList = 0; // list of output generating objects static QDict g_usingDeclarations(1009); // used classes -static FileStorage *g_storage = 0; static bool g_successfulRun = FALSE; static bool g_dumpSymbolMap = FALSE; static bool g_useOutputTemplate = FALSE; @@ -301,9 +296,9 @@ void statistics() -static void addMemberDocs(EntryNav *rootNav,MemberDef *md, const char *funcDecl, +static void addMemberDocs(Entry *root,MemberDef *md, const char *funcDecl, ArgumentList *al,bool over_load,NamespaceSDict *nl=0); -static void findMember(EntryNav *rootNav, +static void findMember(Entry *root, QCString funcDecl, bool overloaded, bool isFunc @@ -317,7 +312,7 @@ enum FindBaseClassRelation_Mode }; static bool findClassRelation( - EntryNav *rootNav, + Entry *root, Definition *context, ClassDef *cd, BaseInfo *bi, @@ -424,7 +419,7 @@ static STLInfo g_stlinfo[] = { 0, 0, 0, 0, 0, 0, 0, FALSE, FALSE } }; -static void addSTLMember(EntryNav *rootNav,const char *type,const char *name) +static void addSTLMember(Entry *root,const char *type,const char *name) { Entry *memEntry = new Entry; memEntry->name = name; @@ -435,13 +430,13 @@ static void addSTLMember(EntryNav *rootNav,const char *type,const char *name) memEntry->hidden = FALSE; memEntry->artificial = TRUE; //memEntry->parent = root; - //root->addSubEntry(memEntry); - EntryNav *memEntryNav = new EntryNav(rootNav,memEntry); - memEntryNav->setEntry(memEntry); - rootNav->addChild(memEntryNav); + root->addSubEntry(memEntry); + //EntryNav *memEntryNav = new EntryNav(root,memEntry); + //memEntryNav->setEntry(memEntry); + //rootNav->addChild(memEntryNav); } -static void addSTLIterator(EntryNav *classEntryNav,const char *name) +static void addSTLIterator(Entry *classEntry,const char *name) { Entry *iteratorClassEntry = new Entry; iteratorClassEntry->fileName = "[STL]"; @@ -451,13 +446,14 @@ static void addSTLIterator(EntryNav *classEntryNav,const char *name) iteratorClassEntry->brief = "STL iterator class"; iteratorClassEntry->hidden = FALSE; iteratorClassEntry->artificial= TRUE; - EntryNav *iteratorClassEntryNav = new EntryNav(classEntryNav,iteratorClassEntry); - iteratorClassEntryNav->setEntry(iteratorClassEntry); - classEntryNav->addChild(iteratorClassEntryNav); + classEntry->addSubEntry(iteratorClassEntry); + //EntryNav *iteratorClassEntryNav = new EntryNav(classEntryNav,iteratorClassEntry); + //iteratorClassEntryNav->setEntry(iteratorClassEntry); + //classEntryNav->addChild(iteratorClassEntryNav); } -static void addSTLClasses(EntryNav *rootNav) +static void addSTLClasses(Entry *root) { Entry *namespaceEntry = new Entry; namespaceEntry->fileName = "[STL]"; @@ -468,10 +464,10 @@ static void addSTLClasses(EntryNav *rootNav) namespaceEntry->brief = "STL namespace"; namespaceEntry->hidden = FALSE; namespaceEntry->artificial= TRUE; - //root->addSubEntry(namespaceEntry); - EntryNav *namespaceEntryNav = new EntryNav(rootNav,namespaceEntry); - namespaceEntryNav->setEntry(namespaceEntry); - rootNav->addChild(namespaceEntryNav); + root->addSubEntry(namespaceEntry); + //EntryNav *namespaceEntryNav = new EntryNav(rootNav,namespaceEntry); + //namespaceEntryNav->setEntry(namespaceEntry); + //rootNav->addChild(namespaceEntryNav); STLInfo *info = g_stlinfo; while (info->className) @@ -485,15 +481,14 @@ static void addSTLClasses(EntryNav *rootNav) classEntry->fileName = "[STL]"; classEntry->startLine = 1; classEntry->name = fullName; - //classEntry->parent = namespaceEntry; classEntry->section = Entry::CLASS_SEC; classEntry->brief = "STL class"; classEntry->hidden = FALSE; classEntry->artificial= TRUE; - //namespaceEntry->addSubEntry(classEntry); - EntryNav *classEntryNav = new EntryNav(namespaceEntryNav,classEntry); - classEntryNav->setEntry(classEntry); - namespaceEntryNav->addChild(classEntryNav); + namespaceEntry->addSubEntry(classEntry); + //EntryNav *classEntryNav = new EntryNav(namespaceEntryNav,classEntry); + //classEntryNav->setEntry(classEntry); + //namespaceEntryNav->addChild(classEntryNav); // add template arguments to class if (info->templType1) @@ -517,11 +512,11 @@ static void addSTLClasses(EntryNav *rootNav) // add member variables if (info->templName1) { - addSTLMember(classEntryNav,info->templType1,info->templName1); + addSTLMember(classEntry,info->templType1,info->templName1); } if (info->templName2) { - addSTLMember(classEntryNav,info->templType2,info->templName2); + addSTLMember(classEntry,info->templType2,info->templName2); } if (fullName=="std::auto_ptr" || fullName=="std::smart_ptr" || fullName=="std::shared_ptr" || fullName=="std::unique_ptr" || fullName=="std::weak_ptr") @@ -535,9 +530,10 @@ static void addSTLClasses(EntryNav *rootNav) memEntry->brief = "STL member"; memEntry->hidden = FALSE; memEntry->artificial = FALSE; - EntryNav *memEntryNav = new EntryNav(classEntryNav,memEntry); - memEntryNav->setEntry(memEntry); - classEntryNav->addChild(memEntryNav); + classEntry->addSubEntry(memEntry); + //EntryNav *memEntryNav = new EntryNav(classEntryNav,memEntry); + //memEntryNav->setEntry(memEntry); + //classEntryNav->addChild(memEntryNav); } if (info->baseClass1) { @@ -550,10 +546,10 @@ static void addSTLClasses(EntryNav *rootNav) if (info->iterators) { // add iterator class - addSTLIterator(classEntryNav,fullName+"::iterator"); - addSTLIterator(classEntryNav,fullName+"::const_iterator"); - addSTLIterator(classEntryNav,fullName+"::reverse_iterator"); - addSTLIterator(classEntryNav,fullName+"::const_reverse_iterator"); + addSTLIterator(classEntry,fullName+"::iterator"); + addSTLIterator(classEntry,fullName+"::const_iterator"); + addSTLIterator(classEntry,fullName+"::reverse_iterator"); + addSTLIterator(classEntry,fullName+"::const_reverse_iterator"); } info++; } @@ -564,18 +560,18 @@ static void addSTLClasses(EntryNav *rootNav) static Definition *findScopeFromQualifiedName(Definition *startScope,const QCString &n, FileDef *fileScope,TagInfo *tagInfo); -static void addPageToContext(PageDef *pd,EntryNav *rootNav) +static void addPageToContext(PageDef *pd,Entry *root) { - if (rootNav->parent()) // add the page to it's scope + if (root->parent()) // add the page to it's scope { - QCString scope = rootNav->parent()->name(); - if (rootNav->parent()->section()==Entry::PACKAGEDOC_SEC) + QCString scope = root->parent()->name; + if (root->parent()->section==Entry::PACKAGEDOC_SEC) { scope=substitute(scope,".","::"); } scope = stripAnonymousNamespaceScope(scope); scope+="::"+pd->name(); - Definition *d = findScopeFromQualifiedName(Doxygen::globalScope,scope,0,rootNav->tagInfo()); + Definition *d = findScopeFromQualifiedName(Doxygen::globalScope,scope,0,root->tagInfo); if (d) { pd->setPageScope(d); @@ -583,9 +579,8 @@ static void addPageToContext(PageDef *pd,EntryNav *rootNav) } } -static void addRelatedPage(EntryNav *rootNav) +static void addRelatedPage(Entry *root) { - Entry *root = rootNav->entry(); GroupDef *gd=0; QListIterator gli(*root->groups); Grouping *g; @@ -606,7 +601,7 @@ static void addRelatedPage(EntryNav *rootNav) PageDef *pd = addRelatedPage(root->name,root->args,doc,root->anchors, root->docFile,root->docLine, root->sli, - gd,rootNav->tagInfo(), + gd,root->tagInfo, root->lang ); if (pd) @@ -614,20 +609,17 @@ static void addRelatedPage(EntryNav *rootNav) pd->setBriefDescription(root->brief,root->briefFile,root->briefLine); pd->addSectionsToDefinition(root->anchors); pd->setLocalToc(root->localToc); - addPageToContext(pd,rootNav); + addPageToContext(pd,root); } } -static void buildGroupListFiltered(EntryNav *rootNav,bool additional, bool includeExternal) +static void buildGroupListFiltered(Entry *root,bool additional, bool includeExternal) { - if (rootNav->section()==Entry::GROUPDOC_SEC && !rootNav->name().isEmpty() && - ((!includeExternal && rootNav->tagInfo()==0) || - ( includeExternal && rootNav->tagInfo()!=0)) + if (root->section==Entry::GROUPDOC_SEC && !root->name.isEmpty() && + ((!includeExternal && root->tagInfo==0) || + ( includeExternal && root->tagInfo!=0)) ) { - rootNav->loadEntry(g_storage); - Entry *root = rootNav->entry(); - if ((root->groupDocType==Entry::GROUPDOC_NORMAL && !additional) || (root->groupDocType!=Entry::GROUPDOC_NORMAL && additional)) { @@ -656,10 +648,10 @@ static void buildGroupListFiltered(EntryNav *rootNav,bool additional, bool inclu } else { - if (rootNav->tagInfo()) + if (root->tagInfo) { - gd = new GroupDef(root->fileName,root->startLine,root->name,root->type,rootNav->tagInfo()->fileName); - gd->setReference(rootNav->tagInfo()->tagName); + gd = new GroupDef(root->fileName,root->startLine,root->name,root->type,root->tagInfo->fileName); + gd->setReference(root->tagInfo->tagName); } else { @@ -675,13 +667,11 @@ static void buildGroupListFiltered(EntryNav *rootNav,bool additional, bool inclu gd->setLanguage(root->lang); } } - - rootNav->releaseEntry(); } - if (rootNav->children()) + if (root->children()) { - EntryNavListIterator eli(*rootNav->children()); - EntryNav *e; + EntryListIterator eli(*root->children()); + Entry *e; for (;(e=eli.current());++eli) { buildGroupListFiltered(e,additional,includeExternal); @@ -689,53 +679,50 @@ static void buildGroupListFiltered(EntryNav *rootNav,bool additional, bool inclu } } -static void buildGroupList(EntryNav *rootNav) +static void buildGroupList(Entry *root) { // --- first process only local groups // first process the @defgroups blocks - buildGroupListFiltered(rootNav,FALSE,FALSE); + buildGroupListFiltered(root,FALSE,FALSE); // then process the @addtogroup, @weakgroup blocks - buildGroupListFiltered(rootNav,TRUE,FALSE); + buildGroupListFiltered(root,TRUE,FALSE); // --- then also process external groups // first process the @defgroups blocks - buildGroupListFiltered(rootNav,FALSE,TRUE); + buildGroupListFiltered(root,FALSE,TRUE); // then process the @addtogroup, @weakgroup blocks - buildGroupListFiltered(rootNav,TRUE,TRUE); + buildGroupListFiltered(root,TRUE,TRUE); } -static void findGroupScope(EntryNav *rootNav) +static void findGroupScope(Entry *root) { - if (rootNav->section()==Entry::GROUPDOC_SEC && !rootNav->name().isEmpty() && - rootNav->parent() && !rootNav->parent()->name().isEmpty()) + if (root->section==Entry::GROUPDOC_SEC && !root->name.isEmpty() && + root->parent() && !root->parent()->name.isEmpty()) { GroupDef *gd; - if ((gd=Doxygen::groupSDict->find(rootNav->name()))) + if ((gd=Doxygen::groupSDict->find(root->name))) { - QCString scope = rootNav->parent()->name(); - if (rootNav->parent()->section()==Entry::PACKAGEDOC_SEC) + QCString scope = root->parent()->name; + if (root->parent()->section==Entry::PACKAGEDOC_SEC) { scope=substitute(scope,".","::"); } scope = stripAnonymousNamespaceScope(scope); scope+="::"+gd->name(); - Definition *d = findScopeFromQualifiedName(Doxygen::globalScope,scope,0,rootNav->tagInfo()); + Definition *d = findScopeFromQualifiedName(Doxygen::globalScope,scope,0,root->tagInfo); if (d) { gd->setGroupScope(d); } } } - RECURSE_ENTRYTREE(findGroupScope,rootNav); + RECURSE_ENTRYTREE(findGroupScope,root); } -static void organizeSubGroupsFiltered(EntryNav *rootNav,bool additional) +static void organizeSubGroupsFiltered(Entry *root,bool additional) { - if (rootNav->section()==Entry::GROUPDOC_SEC && !rootNav->name().isEmpty()) + if (root->section==Entry::GROUPDOC_SEC && !root->name.isEmpty()) { - rootNav->loadEntry(g_storage); - Entry *root = rootNav->entry(); - if ((root->groupDocType==Entry::GROUPDOC_NORMAL && !additional) || (root->groupDocType!=Entry::GROUPDOC_NORMAL && additional)) { @@ -746,13 +733,11 @@ static void organizeSubGroupsFiltered(EntryNav *rootNav,bool additional) addGroupToGroups(root,gd); } } - - rootNav->releaseEntry(); } - if (rootNav->children()) + if (root->children()) { - EntryNavListIterator eli(*rootNav->children()); - EntryNav *e; + EntryListIterator eli(*root->children()); + Entry *e; for (;(e=eli.current());++eli) { organizeSubGroupsFiltered(e,additional); @@ -760,66 +745,48 @@ static void organizeSubGroupsFiltered(EntryNav *rootNav,bool additional) } } -static void organizeSubGroups(EntryNav *rootNav) +static void organizeSubGroups(Entry *root) { //printf("Defining groups\n"); // first process the @defgroups blocks - organizeSubGroupsFiltered(rootNav,FALSE); + organizeSubGroupsFiltered(root,FALSE); //printf("Additional groups\n"); // then process the @addtogroup, @weakgroup blocks - organizeSubGroupsFiltered(rootNav,TRUE); + organizeSubGroupsFiltered(root,TRUE); } //---------------------------------------------------------------------- -static void buildFileList(EntryNav *rootNav) +static void buildFileList(Entry *root) { - if (((rootNav->section()==Entry::FILEDOC_SEC) || - ((rootNav->section() & Entry::FILE_MASK) && Config_getBool(EXTRACT_ALL))) && - !rootNav->name().isEmpty() && !rootNav->tagInfo() // skip any file coming from tag files + if (((root->section==Entry::FILEDOC_SEC) || + ((root->section & Entry::FILE_MASK) && Config_getBool(EXTRACT_ALL))) && + !root->name.isEmpty() && !root->tagInfo // skip any file coming from tag files ) { - rootNav->loadEntry(g_storage); - Entry *root = rootNav->entry(); - bool ambig; FileDef *fd=findFileDef(Doxygen::inputNameDict,root->name,ambig); //printf("**************** root->name=%s fd=%p\n",root->name.data(),fd); if (fd && !ambig) { -#if 0 - if ((!root->doc.isEmpty() && !fd->documentation().isEmpty()) || - (!root->brief.isEmpty() && !fd->briefDescription().isEmpty())) - { - warn( - root->fileName,root->startLine, - "file %s already documented. " - "Skipping documentation.", - root->name.data() - ); - } - else -#endif + //printf("Adding documentation!\n"); + // using FALSE in setDocumentation is small hack to make sure a file + // is documented even if a \file command is used without further + // documentation + fd->setDocumentation(root->doc,root->docFile,root->docLine,FALSE); + fd->setBriefDescription(root->brief,root->briefFile,root->briefLine); + fd->addSectionsToDefinition(root->anchors); + fd->setRefItems(root->sli); + QListIterator gli(*root->groups); + Grouping *g; + for (;(g=gli.current());++gli) { - //printf("Adding documentation!\n"); - // using FALSE in setDocumentation is small hack to make sure a file - // is documented even if a \file command is used without further - // documentation - fd->setDocumentation(root->doc,root->docFile,root->docLine,FALSE); - fd->setBriefDescription(root->brief,root->briefFile,root->briefLine); - fd->addSectionsToDefinition(root->anchors); - fd->setRefItems(root->sli); - QListIterator gli(*root->groups); - Grouping *g; - for (;(g=gli.current());++gli) + GroupDef *gd=0; + if (!g->groupname.isEmpty() && (gd=Doxygen::groupSDict->find(g->groupname))) { - GroupDef *gd=0; - if (!g->groupname.isEmpty() && (gd=Doxygen::groupSDict->find(g->groupname))) - { - gd->addFile(fd); - fd->makePartOfGroup(gd); - //printf("File %s: in group %s\n",fd->name().data(),s->data()); - } + gd->addFile(fd); + fd->makePartOfGroup(gd); + //printf("File %s: in group %s\n",fd->name().data(),s->data()); } } } @@ -843,10 +810,8 @@ static void buildFileList(EntryNav *rootNav) } warn(fn,root->startLine,text); } - - rootNav->releaseEntry(); } - RECURSE_ENTRYTREE(buildFileList,rootNav); + RECURSE_ENTRYTREE(buildFileList,root); } static void addIncludeFile(ClassDef *cd,FileDef *ifd,Entry *root) @@ -1242,19 +1207,15 @@ ClassDef::CompoundType convertToCompoundType(int section,uint64 specifier) } -static void addClassToContext(EntryNav *rootNav) +static void addClassToContext(Entry *root) { //printf("Loading entry for rootNav=%p name=%s\n",rootNav,rootNav->name().data()); - rootNav->loadEntry(g_storage); - Entry *root = rootNav->entry(); - - //NamespaceDef *nd = 0; - FileDef *fd = rootNav->fileDef(); + FileDef *fd = root->fileDef(); QCString scName; - if (rootNav->parent()->section()&Entry::SCOPE_MASK) + if (root->parent()->section&Entry::SCOPE_MASK) { - scName=rootNav->parent()->name(); + scName=root->parent()->name; } // name without parent's scope QCString fullName = root->name; @@ -1322,7 +1283,7 @@ static void addClassToContext(EntryNav *rootNav) QCString tagName; QCString refFileName; - TagInfo *tagInfo = rootNav->tagInfo(); + TagInfo *tagInfo = root->tagInfo; int i; if (tagInfo) { @@ -1408,34 +1369,32 @@ static void addClassToContext(EntryNav *rootNav) } addClassToGroups(root,cd); cd->setRefItems(root->sli); - - rootNav->releaseEntry(); } //---------------------------------------------------------------------- // build a list of all classes mentioned in the documentation // and all classes that have a documentation block before their definition. -static void buildClassList(EntryNav *rootNav) +static void buildClassList(Entry *root) { if ( - ((rootNav->section() & Entry::COMPOUND_MASK) || - rootNav->section()==Entry::OBJCIMPL_SEC) && !rootNav->name().isEmpty() + ((root->section & Entry::COMPOUND_MASK) || + root->section==Entry::OBJCIMPL_SEC) && !root->name.isEmpty() ) { - addClassToContext(rootNav); + addClassToContext(root); } - RECURSE_ENTRYTREE(buildClassList,rootNav); + RECURSE_ENTRYTREE(buildClassList,root); } -static void buildClassDocList(EntryNav *rootNav) +static void buildClassDocList(Entry *root) { if ( - (rootNav->section() & Entry::COMPOUNDDOC_MASK) && !rootNav->name().isEmpty() + (root->section & Entry::COMPOUNDDOC_MASK) && !root->name.isEmpty() ) { - addClassToContext(rootNav); + addClassToContext(root); } - RECURSE_ENTRYTREE(buildClassDocList,rootNav); + RECURSE_ENTRYTREE(buildClassDocList,root); } static void resolveClassNestingRelations() @@ -1721,19 +1680,16 @@ static void findTagLessClasses() //---------------------------------------------------------------------- // build a list of all namespaces mentioned in the documentation // and all namespaces that have a documentation block before their definition. -static void buildNamespaceList(EntryNav *rootNav) +static void buildNamespaceList(Entry *root) { if ( - (rootNav->section()==Entry::NAMESPACE_SEC || - rootNav->section()==Entry::NAMESPACEDOC_SEC || - rootNav->section()==Entry::PACKAGEDOC_SEC + (root->section==Entry::NAMESPACE_SEC || + root->section==Entry::NAMESPACEDOC_SEC || + root->section==Entry::PACKAGEDOC_SEC ) && - !rootNav->name().isEmpty() + !root->name.isEmpty() ) { - rootNav->loadEntry(g_storage); - Entry *root = rootNav->entry(); - //printf("** buildNamespaceList(%s)\n",root->name.data()); QCString fName = root->name; @@ -1758,7 +1714,7 @@ static void buildNamespaceList(EntryNav *rootNav) { nd->setLanguage(root->lang); } - if (rootNav->tagInfo()==0) // if we found the namespace in a tag file + if (root->tagInfo==0) // if we found the namespace in a tag file // and also in a project file, then remove // the tag file reference { @@ -1768,7 +1724,7 @@ static void buildNamespaceList(EntryNav *rootNav) nd->setMetaData(root->metaData); // file definition containing the namespace nd - FileDef *fd=rootNav->fileDef(); + FileDef *fd=root->fileDef(); // insert the namespace in the file definition if (fd) fd->insertNamespace(nd); addNamespaceToGroups(root,nd); @@ -1778,7 +1734,7 @@ static void buildNamespaceList(EntryNav *rootNav) { QCString tagName; QCString tagFileName; - TagInfo *tagInfo = rootNav->tagInfo(); + TagInfo *tagInfo = root->tagInfo; if (tagInfo) { tagName = tagInfo->tagName; @@ -1802,7 +1758,7 @@ static void buildNamespaceList(EntryNav *rootNav) nd->setRefItems(root->sli); // file definition containing the namespace nd - FileDef *fd=rootNav->fileDef(); + FileDef *fd=root->fileDef(); // insert the namespace in the file definition if (fd) fd->insertNamespace(nd); @@ -1833,10 +1789,8 @@ static void buildNamespaceList(EntryNav *rootNav) } } } - - rootNav->releaseEntry(); } - RECURSE_ENTRYTREE(buildNamespaceList,rootNav); + RECURSE_ENTRYTREE(buildNamespaceList,root); } //---------------------------------------------------------------------- @@ -1860,13 +1814,10 @@ static NamespaceDef *findUsedNamespace(NamespaceSDict *unl, return usingNd; } -static void findUsingDirectives(EntryNav *rootNav) +static void findUsingDirectives(Entry *root) { - if (rootNav->section()==Entry::USINGDIR_SEC) + if (root->section==Entry::USINGDIR_SEC) { - rootNav->loadEntry(g_storage); - Entry *root = rootNav->entry(); - //printf("Found using directive %s at line %d of %s\n", // root->name.data(),root->startLine,root->fileName.data()); QCString name=substitute(root->name,".","::"); @@ -1878,16 +1829,16 @@ static void findUsingDirectives(EntryNav *rootNav) { NamespaceDef *usingNd = 0; NamespaceDef *nd = 0; - FileDef *fd = rootNav->fileDef(); + FileDef *fd = root->fileDef(); QCString nsName; // see if the using statement was found inside a namespace or inside // the global file scope. - if (rootNav->parent() && rootNav->parent()->section()==Entry::NAMESPACE_SEC && + if (root->parent() && root->parent()->section==Entry::NAMESPACE_SEC && (fd==0 || fd->getLanguage()!=SrcLangExt_Java) // not a .java file ) { - nsName=stripAnonymousNamespaceScope(rootNav->parent()->name()); + nsName=stripAnonymousNamespaceScope(root->parent()->name); if (!nsName.isEmpty()) { nd = getResolvedNamespace(nsName); @@ -1997,49 +1948,39 @@ static void findUsingDirectives(EntryNav *rootNav) nd->setRefItems(root->sli); } } - - rootNav->releaseEntry(); } - RECURSE_ENTRYTREE(findUsingDirectives,rootNav); + RECURSE_ENTRYTREE(findUsingDirectives,root); } //---------------------------------------------------------------------- -static void buildListOfUsingDecls(EntryNav *rootNav) +static void buildListOfUsingDecls(Entry *root) { - if (rootNav->section()==Entry::USINGDECL_SEC && - !(rootNav->parent()->section()&Entry::COMPOUND_MASK) // not a class/struct member + if (root->section==Entry::USINGDECL_SEC && + !(root->parent()->section&Entry::COMPOUND_MASK) // not a class/struct member ) { - rootNav->loadEntry(g_storage); - Entry *root = rootNav->entry(); - QCString name = substitute(root->name,".","::"); if (g_usingDeclarations.find(name)==0) { - FileDef *fd = rootNav->fileDef(); + FileDef *fd = root->fileDef(); if (fd) { g_usingDeclarations.insert(name,fd); } } - - rootNav->releaseEntry(); } - RECURSE_ENTRYTREE(buildListOfUsingDecls,rootNav); + RECURSE_ENTRYTREE(buildListOfUsingDecls,root); } -static void findUsingDeclarations(EntryNav *rootNav) +static void findUsingDeclarations(Entry *root) { - if (rootNav->section()==Entry::USINGDECL_SEC && - !(rootNav->parent()->section()&Entry::COMPOUND_MASK) // not a class/struct member + if (root->section==Entry::USINGDECL_SEC && + !(root->parent()->section&Entry::COMPOUND_MASK) // not a class/struct member ) { - rootNav->loadEntry(g_storage); - Entry *root = rootNav->entry(); - //printf("Found using declaration %s at line %d of %s inside section %x\n", // root->name.data(),root->startLine,root->fileName.data(), // rootNav->parent()->section()); @@ -2047,14 +1988,14 @@ static void findUsingDeclarations(EntryNav *rootNav) { ClassDef *usingCd = 0; NamespaceDef *nd = 0; - FileDef *fd = rootNav->fileDef(); + FileDef *fd = root->fileDef(); QCString scName; // see if the using statement was found inside a namespace or inside // the global file scope. - if (rootNav->parent()->section() == Entry::NAMESPACE_SEC) + if (root->parent()->section == Entry::NAMESPACE_SEC) { - scName=rootNav->parent()->name(); + scName=root->parent()->name; if (!scName.isEmpty()) { nd = getResolvedNamespace(scName); @@ -2113,34 +2054,32 @@ static void findUsingDeclarations(EntryNav *rootNav) fd->addUsingDeclaration(usingCd); } } - - rootNav->releaseEntry(); } - RECURSE_ENTRYTREE(findUsingDeclarations,rootNav); + RECURSE_ENTRYTREE(findUsingDeclarations,root); } //---------------------------------------------------------------------- -static void findUsingDeclImports(EntryNav *rootNav) +static void findUsingDeclImports(Entry *root) { - if (rootNav->section()==Entry::USINGDECL_SEC && - (rootNav->parent()->section()&Entry::COMPOUND_MASK) // in a class/struct member + if (root->section==Entry::USINGDECL_SEC && + (root->parent()->section&Entry::COMPOUND_MASK) // in a class/struct member ) { //printf("Found using declaration %s inside section %x\n", // rootNav->name().data(), rootNav->parent()->section()); - QCString fullName=removeRedundantWhiteSpace(rootNav->parent()->name()); + QCString fullName=removeRedundantWhiteSpace(root->parent()->name); fullName=stripAnonymousNamespaceScope(fullName); fullName=stripTemplateSpecifiersFromScope(fullName); ClassDef *cd = getClass(fullName); if (cd) { //printf("found class %s\n",cd->name().data()); - int i=rootNav->name().find("::"); + int i=root->name.find("::"); if (i!=-1) { - QCString scope=rootNav->name().left(i); - QCString memName=rootNav->name().right(rootNav->name().length()-i-2); + QCString scope=root->name.left(i); + QCString memName=root->name.right(root->name.length()-i-2); ClassDef *bcd = getResolvedClass(cd,0,scope); // todo: file in fileScope parameter if (bcd) { @@ -2158,17 +2097,13 @@ static void findUsingDeclImports(EntryNav *rootNav) MemberDef *md = mi->memberDef; if (md && md->protection()!=Private) { - - rootNav->loadEntry(g_storage); - Entry *root = rootNav->entry(); - //printf("found member %s\n",mni->memberName()); MemberDef *newMd = 0; { QCString fileName = root->fileName; - if (fileName.isEmpty() && rootNav->tagInfo()) + if (fileName.isEmpty() && root->tagInfo) { - fileName = rootNav->tagInfo()->tagName; + fileName = root->tagInfo->tagName; } ArgumentList *templAl = md->templateArguments(); ArgumentList *al = md->templateArguments(); @@ -2209,8 +2144,6 @@ static void findUsingDeclImports(EntryNav *rootNav) newMd->setMemberSpecifiers(md->getMemberSpecifiers()); newMd->setLanguage(root->lang); newMd->setId(root->id); - - rootNav->releaseEntry(); } } } @@ -2220,7 +2153,7 @@ static void findUsingDeclImports(EntryNav *rootNav) } } - RECURSE_ENTRYTREE(findUsingDeclImports,rootNav); + RECURSE_ENTRYTREE(findUsingDeclImports,root); } //---------------------------------------------------------------------- @@ -2259,7 +2192,7 @@ static void findIncludedUsingDirectives() //---------------------------------------------------------------------- static MemberDef *addVariableToClass( - EntryNav *rootNav, + Entry *root, ClassDef *cd, MemberType mtype, const QCString &name, @@ -2268,8 +2201,6 @@ static MemberDef *addVariableToClass( Protection prot, Relationship related) { - Entry *root = rootNav->entry(); - QCString qualScope = cd->qualifiedNameWithTemplateParameters(); QCString scopeSeparator="::"; SrcLangExt lang = cd->getLanguage(); @@ -2354,7 +2285,7 @@ static MemberDef *addVariableToClass( md->setProtection(root->protection); cd->reclassifyMember(md,MemberType_Property); } - addMemberDocs(rootNav,md,def,0,FALSE); + addMemberDocs(root,md,def,0,FALSE); //printf(" Member already found!\n"); return md; } @@ -2362,9 +2293,9 @@ static MemberDef *addVariableToClass( } QCString fileName = root->fileName; - if (fileName.isEmpty() && rootNav->tagInfo()) + if (fileName.isEmpty() && root->tagInfo) { - fileName = rootNav->tagInfo()->tagName; + fileName = root->tagInfo->tagName; } // new member variable, typedef or enum value @@ -2373,7 +2304,7 @@ static MemberDef *addVariableToClass( root->type,name,root->args,root->exception, prot,Normal,root->stat,related, mtype,root->tArgLists ? root->tArgLists->getLast() : 0,0, root->metaData); - md->setTagInfo(rootNav->tagInfo()); + md->setTagInfo(root->tagInfo); md->setMemberClass(cd); // also sets outer scope (i.e. getOuterScope()) //md->setDefFile(root->fileName); //md->setDefLine(root->startLine); @@ -2407,7 +2338,7 @@ static MemberDef *addVariableToClass( // printf("memberdef %s in memberGroup %d\n",name.data(),root->mGrpId); // md->setMemberGroup(memberGroupDict[root->mGrpId]); // - md->setBodyDef(rootNav->fileDef()); + md->setBodyDef(root->fileDef()); //printf(" Adding member=%s\n",md->name().data()); // add the member to the global list @@ -2430,15 +2361,15 @@ static MemberDef *addVariableToClass( md->setRefItems(root->sli); //TODO: insert FileDef instead of filename strings. - cd->insertUsedFile(rootNav->fileDef()); - rootNav->changeSection(Entry::EMPTY_SEC); + cd->insertUsedFile(root->fileDef()); + root->changeSection(Entry::EMPTY_SEC); return md; } //---------------------------------------------------------------------- static MemberDef *addVariableToFile( - EntryNav *rootNav, + Entry *root, MemberType mtype, const QCString &scope, const QCString &name, @@ -2446,7 +2377,6 @@ static MemberDef *addVariableToFile( /*int indentDepth,*/ MemberDef *fromAnnMemb) { - Entry *root = rootNav->entry(); Debug::print(Debug::Variables,0, " global variable:\n" " file='%s' type=`%s' scope=`%s' name=`%s' args=`%s' prot=`%d mtype=%d lang=%d\n", @@ -2460,7 +2390,7 @@ static MemberDef *addVariableToFile( root->lang ); - FileDef *fd = rootNav->fileDef(); + FileDef *fd = root->fileDef(); // see if we have a typedef that should hide a struct or union if (mtype==MemberType_Typedef && Config_getBool(TYPEDEF_HIDES_STRUCT)) @@ -2596,7 +2526,7 @@ static MemberDef *addVariableToFile( { Debug::print(Debug::Variables,0, " variable already found: scope=%s\n",qPrint(md->getOuterScope()->name())); - addMemberDocs(rootNav,md,def,0,FALSE); + addMemberDocs(root,md,def,0,FALSE); md->setRefItems(root->sli); // if md is a variable forward declaration and root is the definition that // turn md into the defintion @@ -2618,20 +2548,20 @@ static MemberDef *addVariableToFile( } QCString fileName = root->fileName; - if (fileName.isEmpty() && rootNav->tagInfo()) + if (fileName.isEmpty() && root->tagInfo) { - fileName = rootNav->tagInfo()->tagName; + fileName = root->tagInfo->tagName; } Debug::print(Debug::Variables,0, - " new variable, nd=%s tagInfo=%p!\n",nd?qPrint(nd->name()):"",rootNav->tagInfo()); + " new variable, nd=%s tagInfo=%p!\n",nd?qPrint(nd->name()):"",root->tagInfo); // new global variable, enum value or typedef MemberDef *md=new MemberDef( fileName,root->startLine,root->startColumn, root->type,name,root->args,0, root->protection, Normal,root->stat,Member, mtype,root->tArgLists ? root->tArgLists->getLast() : 0,0, root->metaData); - md->setTagInfo(rootNav->tagInfo()); + md->setTagInfo(root->tagInfo); md->setMemberSpecifiers(root->spec); md->setDocumentation(root->doc,root->docFile,root->docLine); md->setBriefDescription(root->brief,root->briefFile,root->briefLine); @@ -2684,7 +2614,7 @@ static MemberDef *addVariableToFile( mn->append(md); Doxygen::functionNameSDict->append(name,mn); } - rootNav->changeSection(Entry::EMPTY_SEC); + root->changeSection(Entry::EMPTY_SEC); return md; } @@ -2725,7 +2655,7 @@ static int findFunctionPtr(const QCString &type,int lang, int *pLength=0) /*! Returns TRUE iff \a type is a class within scope \a context. * Used to detect variable declarations that look like function prototypes. */ -static bool isVarWithConstructor(EntryNav *rootNav) +static bool isVarWithConstructor(Entry *root) { static QRegExp initChars("[0-9\"'&*!^]+"); static QRegExp idChars("[a-z_A-Z][a-z_A-Z0-9]*"); @@ -2737,15 +2667,12 @@ static bool isVarWithConstructor(EntryNav *rootNav) int ti; //printf("isVarWithConstructor(%s)\n",rootNav->name().data()); - rootNav->loadEntry(g_storage); - Entry *root = rootNav->entry(); - - if (rootNav->parent()->section() & Entry::COMPOUND_MASK) + if (root->parent()->section & Entry::COMPOUND_MASK) { // inside a class result=FALSE; goto done; } - else if ((fd = rootNav->fileDef()) && + else if ((fd = root->fileDef()) && (fd->name().right(2)==".c" || fd->name().right(2)==".h") ) { // inside a .c file @@ -2757,9 +2684,9 @@ static bool isVarWithConstructor(EntryNav *rootNav) result=FALSE; goto done; } - if (!rootNav->parent()->name().isEmpty()) + if (!root->parent()->name.isEmpty()) { - ctx=Doxygen::namespaceSDict->find(rootNav->parent()->name()); + ctx=Doxygen::namespaceSDict->find(root->parent()->name); } type = root->type; // remove qualifiers @@ -2844,17 +2771,13 @@ static bool isVarWithConstructor(EntryNav *rootNav) done: //printf("isVarWithConstructor(%s,%s)=%d\n",rootNav->parent()->name().data(), // root->type.data(),result); - rootNav->releaseEntry(); return result; } -static void addVariable(EntryNav *rootNav,int isFuncPtr=-1) +static void addVariable(Entry *root,int isFuncPtr=-1) { static bool sliceOpt = Config_getBool(OPTIMIZE_OUTPUT_SLICE); - rootNav->loadEntry(g_storage); - Entry *root = rootNav->entry(); - Debug::print(Debug::Variables,0, "VARIABLE_SEC: \n" " type=`%s' name=`%s' args=`%s' bodyLine=`%d' mGrpId=%d relates=%s\n", @@ -2911,10 +2834,10 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1) QCString scope,name=removeRedundantWhiteSpace(root->name); // find the scope of this variable - EntryNav *p = rootNav->parent(); - while ((p->section() & Entry::SCOPE_MASK)) + Entry *p = root->parent(); + while ((p->section & Entry::SCOPE_MASK)) { - QCString scopeName = p->name(); + QCString scopeName = p->name; if (!scopeName.isEmpty()) { scope.prepend(scopeName); @@ -2941,7 +2864,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1) cd=getClass(scope); if (cd) { - addVariableToClass(rootNav, // entry + addVariableToClass(root, // entry cd, // class to add member to MemberType_Friend, // type of member name, // name of the member @@ -2952,8 +2875,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1) ); } } - goto nextMember; - /* skip this member, because it is a + return; /* skip this member, because it is a * static variable definition (always?), which will be * found in a class scope as well, but then we know the * correct protection level, so only then it will be @@ -3017,7 +2939,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1) { if (!pScope.isEmpty() && (pcd=getClass(pScope))) { - md=addVariableToClass(rootNav, // entry + md=addVariableToClass(root, // entry pcd, // class to add member to mtype, // member type name, // member name @@ -3032,7 +2954,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1) { if (mtype==MemberType_Variable) { - md=addVariableToFile(rootNav,mtype,pScope,name,TRUE,0); + md=addVariableToFile(root,mtype,pScope,name,TRUE,0); } //added=TRUE; } @@ -3042,7 +2964,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1) //printf("name=`%s' scope=%s scope.right=%s\n", // name.data(),scope.data(), // scope.right(scope.length()-si).data()); - addVariableToClass(rootNav, // entry + addVariableToClass(root, // entry cd, // class to add member to mtype, // member type name, // name of the member @@ -3054,33 +2976,31 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1) else if (!name.isEmpty()) // global variable { //printf("Inserting member in global scope %s!\n",scope.data()); - addVariableToFile(rootNav,mtype,scope,name,FALSE,/*0,*/0); + addVariableToFile(root,mtype,scope,name,FALSE,/*0,*/0); } -nextMember: - rootNav->releaseEntry(); } //---------------------------------------------------------------------- // Searches the Entry tree for typedef documentation sections. // If found they are stored in their class or in the global list. -static void buildTypedefList(EntryNav *rootNav) +static void buildTypedefList(Entry *root) { //printf("buildVarList(%s)\n",rootNav->name().data()); - if (!rootNav->name().isEmpty() && - rootNav->section()==Entry::VARIABLE_SEC && - rootNav->type().find("typedef ")!=-1 // its a typedef + if (!root->name.isEmpty() && + root->section==Entry::VARIABLE_SEC && + root->type.find("typedef ")!=-1 // its a typedef ) { - addVariable(rootNav); + addVariable(root); } - if (rootNav->children()) + if (root->children()) { - EntryNavListIterator eli(*rootNav->children()); - EntryNav *e; + EntryListIterator eli(*root->children()); + Entry *e; for (;(e=eli.current());++eli) { - if (e->section()!=Entry::ENUM_SEC) + if (e->section!=Entry::ENUM_SEC) { buildTypedefList(e); } @@ -3091,22 +3011,22 @@ static void buildTypedefList(EntryNav *rootNav) //---------------------------------------------------------------------- // Searches the Entry tree for sequence documentation sections. // If found they are stored in the global list. -static void buildSequenceList(EntryNav *rootNav) +static void buildSequenceList(Entry *root) { - if (!rootNav->name().isEmpty() && - rootNav->section()==Entry::VARIABLE_SEC && - rootNav->type().find("sequence<")!=-1 // it's a sequence + if (!root->name.isEmpty() && + root->section==Entry::VARIABLE_SEC && + root->type.find("sequence<")!=-1 // it's a sequence ) { - addVariable(rootNav); + addVariable(root); } - if (rootNav->children()) + if (root->children()) { - EntryNavListIterator eli(*rootNav->children()); - EntryNav *e; + EntryListIterator eli(*root->children()); + Entry *e; for (;(e=eli.current());++eli) { - if (e->section()!=Entry::ENUM_SEC) + if (e->section!=Entry::ENUM_SEC) { buildSequenceList(e); } @@ -3117,22 +3037,22 @@ static void buildSequenceList(EntryNav *rootNav) //---------------------------------------------------------------------- // Searches the Entry tree for dictionary documentation sections. // If found they are stored in the global list. -static void buildDictionaryList(EntryNav *rootNav) +static void buildDictionaryList(Entry *root) { - if (!rootNav->name().isEmpty() && - rootNav->section()==Entry::VARIABLE_SEC && - rootNav->type().find("dictionary<")!=-1 // it's a dictionary + if (!root->name.isEmpty() && + root->section==Entry::VARIABLE_SEC && + root->type.find("dictionary<")!=-1 // it's a dictionary ) { - addVariable(rootNav); + addVariable(root); } - if (rootNav->children()) + if (root->children()) { - EntryNavListIterator eli(*rootNav->children()); - EntryNav *e; + EntryListIterator eli(*root->children()); + Entry *e; for (;(e=eli.current());++eli) { - if (e->section()!=Entry::ENUM_SEC) + if (e->section!=Entry::ENUM_SEC) { buildDictionaryList(e); } @@ -3144,33 +3064,33 @@ static void buildDictionaryList(EntryNav *rootNav) // Searches the Entry tree for Variable documentation sections. // If found they are stored in their class or in the global list. -static void buildVarList(EntryNav *rootNav) +static void buildVarList(Entry *root) { //printf("buildVarList(%s) section=%08x\n",rootNav->name().data(),rootNav->section()); int isFuncPtr=-1; - if (!rootNav->name().isEmpty() && - (rootNav->type().isEmpty() || g_compoundKeywordDict.find(rootNav->type())==0) && + if (!root->name.isEmpty() && + (root->type.isEmpty() || g_compoundKeywordDict.find(root->type)==0) && ( - (rootNav->section()==Entry::VARIABLE_SEC // it's a variable + (root->section==Entry::VARIABLE_SEC // it's a variable ) || - (rootNav->section()==Entry::FUNCTION_SEC && // or maybe a function pointer variable - (isFuncPtr=findFunctionPtr(rootNav->type(),rootNav->lang()))!=-1 + (root->section==Entry::FUNCTION_SEC && // or maybe a function pointer variable + (isFuncPtr=findFunctionPtr(root->type,root->lang))!=-1 ) || - (rootNav->section()==Entry::FUNCTION_SEC && // class variable initialized by constructor - isVarWithConstructor(rootNav) + (root->section==Entry::FUNCTION_SEC && // class variable initialized by constructor + isVarWithConstructor(root) ) ) ) // documented variable { - addVariable(rootNav,isFuncPtr); + addVariable(root,isFuncPtr); } - if (rootNav->children()) + if (root->children()) { - EntryNavListIterator eli(*rootNav->children()); - EntryNav *e; + EntryListIterator eli(*root->children()); + Entry *e; for (;(e=eli.current());++eli) { - if (e->section()!=Entry::ENUM_SEC) + if (e->section!=Entry::ENUM_SEC) { buildVarList(e); } @@ -3184,25 +3104,24 @@ static void buildVarList(EntryNav *rootNav) // static void addInterfaceOrServiceToServiceOrSingleton( - EntryNav *const rootNav, + Entry *const root, ClassDef *const cd, QCString const& rname) { - Entry *const root = rootNav->entry(); - FileDef *const fd = rootNav->fileDef(); - enum MemberType const type = (rootNav->section()==Entry::EXPORTED_INTERFACE_SEC) + FileDef *fd = root->fileDef(); + enum MemberType type = (root->section==Entry::EXPORTED_INTERFACE_SEC) ? MemberType_Interface : MemberType_Service; QCString fileName = root->fileName; - if (fileName.isEmpty() && rootNav->tagInfo()) + if (fileName.isEmpty() && root->tagInfo) { - fileName = rootNav->tagInfo()->tagName; + fileName = root->tagInfo->tagName; } MemberDef *const md = new MemberDef( fileName, root->startLine, root->startColumn, root->type, rname, "", "", root->protection, root->virt, root->stat, Member, type, 0, root->argList, root->metaData); - md->setTagInfo(rootNav->tagInfo()); + md->setTagInfo(root->tagInfo); md->setMemberClass(cd); md->setDocumentation(root->doc,root->docFile,root->docLine); md->setDocsForDefinition(false); @@ -3252,29 +3171,25 @@ static void addInterfaceOrServiceToServiceOrSingleton( // "optional" interface/service get Protected which turns into dashed line BaseInfo base(rname, (root->spec & (Entry::Optional)) ? Protected : Public,Normal); - findClassRelation(rootNav,cd,cd,&base,0,DocumentedOnly,true) - || findClassRelation(rootNav,cd,cd,&base,0,Undocumented,true); + findClassRelation(root,cd,cd,&base,0,DocumentedOnly,true) || findClassRelation(root,cd,cd,&base,0,Undocumented,true); // add file to list of used files cd->insertUsedFile(fd); addMemberToGroups(root,md); - rootNav->changeSection(Entry::EMPTY_SEC); + root->changeSection(Entry::EMPTY_SEC); md->setRefItems(root->sli); } -static void buildInterfaceAndServiceList(EntryNav *const rootNav) +static void buildInterfaceAndServiceList(Entry *root) { - if (rootNav->section()==Entry::EXPORTED_INTERFACE_SEC || - rootNav->section()==Entry::INCLUDED_SERVICE_SEC) + if (root->section==Entry::EXPORTED_INTERFACE_SEC || + root->section==Entry::INCLUDED_SERVICE_SEC) { - rootNav->loadEntry(g_storage); - Entry *const root = rootNav->entry(); - Debug::print(Debug::Functions,0, "EXPORTED_INTERFACE_SEC:\n" " `%s' `%s'::`%s' `%s' relates=`%s' relatesType=`%d' file=`%s' line=`%d' bodyLine=`%d' #tArgLists=%d mGrpId=%d spec=%lld proto=%d docFile=%s\n", qPrint(root->type), - qPrint(rootNav->parent()->name()), + qPrint(root->parent()->name), qPrint(root->name), qPrint(root->args), qPrint(root->relates), @@ -3289,18 +3204,18 @@ static void buildInterfaceAndServiceList(EntryNav *const rootNav) qPrint(root->docFile) ); - QCString const rname = removeRedundantWhiteSpace(root->name); + QCString rname = removeRedundantWhiteSpace(root->name); if (!rname.isEmpty()) { - QCString const scope = rootNav->parent()->name(); - ClassDef *const cd = getClass(scope); + QCString scope = root->parent()->name; + ClassDef *cd = getClass(scope); assert(cd); if (cd && ((ClassDef::Interface == cd->compoundType()) || (ClassDef::Service == cd->compoundType()) || (ClassDef::Singleton == cd->compoundType()))) { - addInterfaceOrServiceToServiceOrSingleton(rootNav,cd,rname); + addInterfaceOrServiceToServiceOrSingleton(root,cd,rname); } else { @@ -3312,15 +3227,13 @@ static void buildInterfaceAndServiceList(EntryNav *const rootNav) warn(root->fileName,root->startLine, "Illegal member name found."); } - - rootNav->releaseEntry(); } // can only have these in IDL anyway - switch (rootNav->lang()) + switch (root->lang) { case SrcLangExt_Unknown: // fall through (root node always is Unknown) case SrcLangExt_IDL: - RECURSE_ENTRYTREE(buildInterfaceAndServiceList,rootNav); + RECURSE_ENTRYTREE(buildInterfaceAndServiceList,root); break; default: return; // nothing to do here @@ -3332,11 +3245,10 @@ static void buildInterfaceAndServiceList(EntryNav *const rootNav) // Searches the Entry tree for Function sections. // If found they are stored in their class or in the global list. -static void addMethodToClass(EntryNav *rootNav,ClassDef *cd, +static void addMethodToClass(Entry *root,ClassDef *cd, const QCString &rname,bool isFriend) { - Entry *root = rootNav->entry(); - FileDef *fd=rootNav->fileDef(); + FileDef *fd=root->fileDef(); int l; static QRegExp re("([a-z_A-Z0-9: ]*[ &*]+[ ]*"); @@ -3373,9 +3285,9 @@ static void addMethodToClass(EntryNav *rootNav,ClassDef *cd, } QCString fileName = root->fileName; - if (fileName.isEmpty() && rootNav->tagInfo()) + if (fileName.isEmpty() && root->tagInfo) { - fileName = rootNav->tagInfo()->tagName; + fileName = root->tagInfo->tagName; } //printf("root->name=`%s; root->args=`%s' root->argList=`%s'\n", @@ -3391,7 +3303,7 @@ static void addMethodToClass(EntryNav *rootNav,ClassDef *cd, root->relates.isEmpty() ? Member : root->relatesType == MemberOf ? Foreign : Related, mtype,root->tArgLists ? root->tArgLists->getLast() : 0,root->argList, root->metaData); - md->setTagInfo(rootNav->tagInfo()); + md->setTagInfo(root->tagInfo); md->setMemberClass(cd); md->setDocumentation(root->doc,root->docFile,root->docLine); md->setDocsForDefinition(!root->proto); @@ -3509,23 +3421,20 @@ static void addMethodToClass(EntryNav *rootNav,ClassDef *cd, cd->insertUsedFile(fd); addMemberToGroups(root,md); - rootNav->changeSection(Entry::EMPTY_SEC); + root->changeSection(Entry::EMPTY_SEC); md->setRefItems(root->sli); } -static void buildFunctionList(EntryNav *rootNav) +static void buildFunctionList(Entry *root) { - if (rootNav->section()==Entry::FUNCTION_SEC) + if (root->section==Entry::FUNCTION_SEC) { - rootNav->loadEntry(g_storage); - Entry *root = rootNav->entry(); - Debug::print(Debug::Functions,0, "FUNCTION_SEC:\n" " `%s' `%s'::`%s' `%s' relates=`%s' relatesType=`%d' file=`%s' line=`%d' bodyLine=`%d' #tArgLists=%d mGrpId=%d spec=%lld proto=%d docFile=%s\n", qPrint(root->type), - qPrint(rootNav->parent()->name()), + qPrint(root->parent()->name), qPrint(root->name), qPrint(root->args), qPrint(root->relates), @@ -3544,14 +3453,14 @@ static void buildFunctionList(EntryNav *rootNav) QCString rname = removeRedundantWhiteSpace(root->name); //printf("rname=%s\n",rname.data()); - QCString scope=rootNav->parent()->name(); //stripAnonymousNamespaceScope(root->parent->name); + QCString scope=root->parent()->name; //stripAnonymousNamespaceScope(root->parent->name); if (!rname.isEmpty() && scope.find('@')==-1) { ClassDef *cd=0; // check if this function's parent is a class scope=stripTemplateSpecifiersFromScope(scope,FALSE); - FileDef *rfd=rootNav->fileDef(); + FileDef *rfd=root->fileDef(); int memIndex=rname.findRev("::"); @@ -3559,7 +3468,7 @@ static void buildFunctionList(EntryNav *rootNav) if (cd && scope+"::"==rname.left(scope.length()+2)) // found A::f inside A { // strip scope from name - rname=rname.right(rname.length()-rootNav->parent()->name().length()-2); + rname=rname.right(rname.length()-root->parent()->name.length()-2); } NamespaceDef *nd = 0; @@ -3593,8 +3502,8 @@ static void buildFunctionList(EntryNav *rootNav) int ts=root->type.find('<'); int te=root->type.findRev('>'); int ti; - if (!rootNav->parent()->name().isEmpty() && - (rootNav->parent()->section() & Entry::COMPOUND_MASK) && + if (!root->parent()->name.isEmpty() && + (root->parent()->section & Entry::COMPOUND_MASK) && cd && // do some fuzzy things to exclude function pointers (root->type.isEmpty() || @@ -3608,10 +3517,10 @@ static void buildFunctionList(EntryNav *rootNav) { Debug::print(Debug::Functions,0," --> member %s of class %s!\n", qPrint(rname),qPrint(cd->name())); - addMethodToClass(rootNav,cd,rname,isFriend); + addMethodToClass(root,cd,rname,isFriend); } - else if (!((rootNav->parent()->section() & Entry::COMPOUND_MASK) - || rootNav->parent()->section()==Entry::OBJCIMPL_SEC + else if (!((root->parent()->section & Entry::COMPOUND_MASK) + || root->parent()->section==Entry::OBJCIMPL_SEC ) && !isMember && (root->relates.isEmpty() || root->relatesType == Duplicate) && @@ -3636,7 +3545,7 @@ static void buildFunctionList(EntryNav *rootNav) NamespaceDef *rnd = 0; //printf("root namespace=%s\n",rootNav->parent()->name().data()); QCString fullScope = scope; - QCString parentScope = rootNav->parent()->name(); + QCString parentScope = root->parent()->name; if (!parentScope.isEmpty() && !leftScopeMatch(parentScope,scope)) { if (!scope.isEmpty()) fullScope.prepend("::"); @@ -3792,7 +3701,7 @@ static void buildFunctionList(EntryNav *rootNav) root->protection,root->virt,root->stat,Member, MemberType_Function,tArgList,root->argList,root->metaData); - md->setTagInfo(rootNav->tagInfo()); + md->setTagInfo(root->tagInfo); md->setLanguage(root->lang); md->setId(root->id); //md->setDefFile(root->fileName); @@ -3805,7 +3714,7 @@ static void buildFunctionList(EntryNav *rootNav) md->setTypeConstraints(root->typeConstr); //md->setBody(root->body); md->setBodySegment(root->bodyLine,root->endBodyLine); - FileDef *fd=rootNav->fileDef(); + FileDef *fd=root->fileDef(); md->setBodyDef(fd); md->addSectionsToDefinition(root->anchors); md->setMemberSpecifiers(root->spec); @@ -3813,10 +3722,10 @@ static void buildFunctionList(EntryNav *rootNav) // see if the function is inside a namespace that was not part of // the name already (in that case nd should be non-zero already) - if (nd==0 && rootNav->parent()->section() == Entry::NAMESPACE_SEC ) + if (nd==0 && root->parent()->section == Entry::NAMESPACE_SEC ) { - //QCString nscope=removeAnonymousScopes(rootNav->parent()->name()); - QCString nscope=rootNav->parent()->name(); + //QCString nscope=removeAnonymousScopes(root->parent()->name); + QCString nscope=root->parent()->name; if (!nscope.isEmpty()) { nd = getResolvedNamespace(nscope); @@ -3861,7 +3770,7 @@ static void buildFunctionList(EntryNav *rootNav) " `%s' `%s'::`%s' `%s' proto=%d\n" " def=`%s'\n", qPrint(root->type), - qPrint(rootNav->parent()->name()), + qPrint(root->parent()->name), qPrint(rname), qPrint(root->args), root->proto, @@ -3909,14 +3818,14 @@ static void buildFunctionList(EntryNav *rootNav) if (root->relatesType == Simple) // if this is a relatesalso command, // allow find Member to pick it up { - rootNav->changeSection(Entry::EMPTY_SEC); // Otherwise we have finished - // with this entry. + root->changeSection(Entry::EMPTY_SEC); // Otherwise we have finished + // with this entry. } } else { - FileDef *fd=rootNav->fileDef(); + FileDef *fd=root->fileDef(); if (fd) { // add member to the file (we do this even if we have already @@ -3939,10 +3848,8 @@ static void buildFunctionList(EntryNav *rootNav) "Illegal member name found." ); } - - rootNav->releaseEntry(); } - RECURSE_ENTRYTREE(buildFunctionList,rootNav); + RECURSE_ENTRYTREE(buildFunctionList,root); } //---------------------------------------------------------------------- @@ -4285,7 +4192,7 @@ static ClassDef *findClassWithinClassContext(Definition *context,ClassDef *cd,co } -static void findUsedClassesForClass(EntryNav *rootNav, +static void findUsedClassesForClass(Entry *root, Definition *context, ClassDef *masterCd, ClassDef *instanceCd, @@ -4327,7 +4234,7 @@ static void findUsedClassesForClass(EntryNav *rootNav, } //printf(" template substitution gives=%s\n",type.data()); - while (!found && extractClassNameFromType(type,pos,usedClassName,templSpec,rootNav->lang())!=-1) + while (!found && extractClassNameFromType(type,pos,usedClassName,templSpec,root->lang)!=-1) { // find the type (if any) that matches usedClassName ClassDef *typeCd = getResolvedClass(masterCd, @@ -4362,7 +4269,7 @@ static void findUsedClassesForClass(EntryNav *rootNav, delTempNames=TRUE; } BaseInfo bi(usedName,Public,Normal); - findClassRelation(rootNav,context,instanceCd,&bi,templateNames,TemplateInstances,isArtificial); + findClassRelation(root,context,instanceCd,&bi,templateNames,TemplateInstances,isArtificial); if (masterCd->templateArguments()) { @@ -4455,7 +4362,7 @@ static void findUsedClassesForClass(EntryNav *rootNav, } static void findBaseClassesForClass( - EntryNav *rootNav, + Entry *root, Definition *context, ClassDef *masterCd, ClassDef *instanceCd, @@ -4465,7 +4372,6 @@ static void findBaseClassesForClass( QDict *templateNames=0 ) { - Entry *root = rootNav->entry(); //if (masterCd->visited) return; masterCd->visited=TRUE; // The base class could ofcouse also be a non-nested class @@ -4492,7 +4398,7 @@ static void findBaseClassesForClass( if (mode==DocumentedOnly) { // find a documented base class in the correct scope - if (!findClassRelation(rootNav,context,instanceCd,&tbi,templateNames,DocumentedOnly,isArtificial)) + if (!findClassRelation(root,context,instanceCd,&tbi,templateNames,DocumentedOnly,isArtificial)) { // 1.8.2: decided to show inheritance relations even if not documented, // we do make them artificial, so they do not appear in the index @@ -4500,13 +4406,13 @@ static void findBaseClassesForClass( bool b = Config_getBool(HIDE_UNDOC_RELATIONS) ? TRUE : isArtificial; //{ // no documented base class -> try to find an undocumented one - findClassRelation(rootNav,context,instanceCd,&tbi,templateNames,Undocumented,b); + findClassRelation(root,context,instanceCd,&tbi,templateNames,Undocumented,b); //} } } else if (mode==TemplateInstances) { - findClassRelation(rootNav,context,instanceCd,&tbi,templateNames,TemplateInstances,isArtificial); + findClassRelation(root,context,instanceCd,&tbi,templateNames,TemplateInstances,isArtificial); } if (delTempNames) { @@ -4558,34 +4464,19 @@ static bool findTemplateInstanceRelation(Entry *root, // search for new template instances caused by base classes of // instanceClass - EntryNav *templateRootNav = g_classEntries.find(templateClass->name()); - if (templateRootNav) + Entry *templateRoot = g_classEntries.find(templateClass->name()); + if (templateRoot) { - bool unloadNeeded=FALSE; - Entry *templateRoot = templateRootNav->entry(); - if (templateRoot==0) // not yet loaded - { - templateRootNav->loadEntry(g_storage); - templateRoot = templateRootNav->entry(); - ASSERT(templateRoot!=0); // now it should really be loaded - unloadNeeded=TRUE; - } - Debug::print(Debug::Classes,0," template root found %s templSpec=%s!\n", qPrint(templateRoot->name),qPrint(templSpec)); ArgumentList *templArgs = new ArgumentList; stringToArgumentList(templSpec,templArgs); - findBaseClassesForClass(templateRootNav,context,templateClass,instanceClass, + findBaseClassesForClass(templateRoot,context,templateClass,instanceClass, TemplateInstances,isArtificial,templArgs,templateNames); - findUsedClassesForClass(templateRootNav,context,templateClass,instanceClass, + findUsedClassesForClass(templateRoot,context,templateClass,instanceClass, isArtificial,templArgs,templateNames); delete templArgs; - - if (unloadNeeded) // still cleanup to do - { - templateRootNav->releaseEntry(); - } } else { @@ -4695,7 +4586,7 @@ static int findEndOfTemplate(const QCString &s,int startPos) } static bool findClassRelation( - EntryNav *rootNav, + Entry *root, Definition *context, ClassDef *cd, BaseInfo *bi, @@ -4717,8 +4608,6 @@ static bool findClassRelation( //} //printf("\n"); - Entry *root = rootNav->entry(); - QCString biName=bi->name; bool explicitGlobalScope=FALSE; //printf("findClassRelation: biName=`%s'\n",biName.data()); @@ -4728,12 +4617,12 @@ static bool findClassRelation( explicitGlobalScope=TRUE; } - EntryNav *parentNode=rootNav->parent(); + Entry *parentNode=root->parent(); bool lastParent=FALSE; do // for each parent scope, starting with the largest scope // (in case of nested classes) { - QCString scopeName= parentNode ? parentNode->name().data() : ""; + QCString scopeName= parentNode ? parentNode->name.data() : ""; int scopeOffset=explicitGlobalScope ? 0 : scopeName.length(); do // try all parent scope prefixes, starting with the largest scope { @@ -4772,18 +4661,18 @@ static bool findClassRelation( // ) // Check for base class with the same name. // // If found then look in the outer scope for a match // // and prevent recursion. - if (!isRecursiveBaseClass(rootNav->name(),baseClassName) + if (!isRecursiveBaseClass(root->name,baseClassName) || explicitGlobalScope // sadly isRecursiveBaseClass always true for UNO IDL ifc/svc members // (i.e. this is needed for addInterfaceOrServiceToServiceOrSingleton) - || (rootNav->lang()==SrcLangExt_IDL && - (rootNav->section()==Entry::EXPORTED_INTERFACE_SEC || - rootNav->section()==Entry::INCLUDED_SERVICE_SEC))) + || (root->lang==SrcLangExt_IDL && + (root->section==Entry::EXPORTED_INTERFACE_SEC || + root->section==Entry::INCLUDED_SERVICE_SEC))) { Debug::print( Debug::Classes,0," class relation %s inherited/used by %s found (%s and %s) templSpec='%s'\n", qPrint(baseClassName), - qPrint(rootNav->name()), + qPrint(root->name), (bi->prot==Private)?"private":((bi->prot==Protected)?"protected":"public"), (bi->virt==Normal)?"normal":"virtual", qPrint(templSpec) @@ -4980,7 +4869,7 @@ static bool findClassRelation( int si = baseClassName.findRev("::"); if (si!=-1) // class is nested { - Definition *sd = findScopeFromQualifiedName(Doxygen::globalScope,baseClassName.left(si),0,rootNav->tagInfo()); + Definition *sd = findScopeFromQualifiedName(Doxygen::globalScope,baseClassName.left(si),0,root->tagInfo); if (sd==0 || sd==Doxygen::globalScope) // outer scope not found { baseClass->setArtificial(TRUE); // see bug678139 @@ -4997,7 +4886,7 @@ static bool findClassRelation( // add this class as super class to the base class baseClass->insertSubClass(cd,bi->prot,bi->virt,templSpec); // the undocumented base was found in this file - baseClass->insertUsedFile(rootNav->fileDef()); + baseClass->insertUsedFile(root->fileDef()); baseClass->setOuterScope(Doxygen::globalScope); if (baseClassName.right(2)=="-p") { @@ -5051,22 +4940,19 @@ static bool findClassRelation( //---------------------------------------------------------------------- // Computes the base and super classes for each class in the tree -static bool isClassSection(EntryNav *rootNav) +static bool isClassSection(Entry *root) { - if ( !rootNav->name().isEmpty() ) + if ( !root->name.isEmpty() ) { - if (rootNav->section() & Entry::COMPOUND_MASK) + if (root->section & Entry::COMPOUND_MASK) // is it a compound (class, struct, union, interface ...) { return TRUE; } - else if (rootNav->section() & Entry::COMPOUNDDOC_MASK) + else if (root->section & Entry::COMPOUNDDOC_MASK) // is it a documentation block with inheritance info. { - rootNav->loadEntry(g_storage); - Entry *root = rootNav->entry(); bool extends = root->extends->count()>0; - rootNav->releaseEntry(); if (extends) return TRUE; } } @@ -5076,22 +4962,22 @@ static bool isClassSection(EntryNav *rootNav) /*! Builds a dictionary of all entry nodes in the tree starting with \a root */ -static void findClassEntries(EntryNav *rootNav) +static void findClassEntries(Entry *root) { - if (isClassSection(rootNav)) + if (isClassSection(root)) { - g_classEntries.insert(rootNav->name(),rootNav); + g_classEntries.insert(root->name,root); } - RECURSE_ENTRYTREE(findClassEntries,rootNav); + RECURSE_ENTRYTREE(findClassEntries,root); } -static QCString extractClassName(EntryNav *rootNav) +static QCString extractClassName(Entry *root) { // strip any anonymous scopes first - QCString bName=stripAnonymousNamespaceScope(rootNav->name()); + QCString bName=stripAnonymousNamespaceScope(root->name); bName=stripTemplateSpecifiersFromScope(bName); int i; - if ((rootNav->lang()==SrcLangExt_CSharp || rootNav->lang()==SrcLangExt_Java) && + if ((root->lang==SrcLangExt_CSharp || root->lang==SrcLangExt_Java) && (i=bName.find('<'))!=-1) { // a Java/C# generic class looks like a C++ specialization, so we need to strip the @@ -5110,19 +4996,17 @@ static void findInheritedTemplateInstances() { ClassSDict::Iterator cli(*Doxygen::classSDict); for (cli.toFirst();cli.current();++cli) cli.current()->visited=FALSE; - QDictIterator edi(g_classEntries); - EntryNav *rootNav; - for (;(rootNav=edi.current());++edi) + QDictIterator edi(g_classEntries); + Entry *root; + for (;(root=edi.current());++edi) { ClassDef *cd; - QCString bName = extractClassName(rootNav); + QCString bName = extractClassName(root); Debug::print(Debug::Classes,0," Inheritance: Class %s : \n",qPrint(bName)); if ((cd=getClass(bName))) { - rootNav->loadEntry(g_storage); //printf("Class %s %d\n",cd->name().data(),root->extends->count()); - findBaseClassesForClass(rootNav,cd,cd,cd,TemplateInstances,FALSE); - rootNav->releaseEntry(); + findBaseClassesForClass(root,cd,cd,cd,TemplateInstances,FALSE); } } } @@ -5131,19 +5015,17 @@ static void findUsedTemplateInstances() { ClassSDict::Iterator cli(*Doxygen::classSDict); for (cli.toFirst();cli.current();++cli) cli.current()->visited=FALSE; - QDictIterator edi(g_classEntries); - EntryNav *rootNav; - for (;(rootNav=edi.current());++edi) + QDictIterator edi(g_classEntries); + Entry *root; + for (;(root=edi.current());++edi) { ClassDef *cd; - QCString bName = extractClassName(rootNav); + QCString bName = extractClassName(root); Debug::print(Debug::Classes,0," Usage: Class %s : \n",qPrint(bName)); if ((cd=getClass(bName))) { - rootNav->loadEntry(g_storage); - findUsedClassesForClass(rootNav,cd,cd,cd,TRUE); + findUsedClassesForClass(root,cd,cd,cd,TRUE); cd->addTypeConstraints(); - rootNav->releaseEntry(); } } } @@ -5152,19 +5034,17 @@ static void computeClassRelations() { ClassSDict::Iterator cli(*Doxygen::classSDict); for (cli.toFirst();cli.current();++cli) cli.current()->visited=FALSE; - QDictIterator edi(g_classEntries); - EntryNav *rootNav; - for (;(rootNav=edi.current());++edi) + QDictIterator edi(g_classEntries); + Entry *root; + for (;(root=edi.current());++edi) { ClassDef *cd; - rootNav->loadEntry(g_storage); - Entry *root = rootNav->entry(); - QCString bName = extractClassName(rootNav); + QCString bName = extractClassName(root); Debug::print(Debug::Classes,0," Relations: Class %s : \n",qPrint(bName)); if ((cd=getClass(bName))) { - findBaseClassesForClass(rootNav,cd,cd,cd,DocumentedOnly,FALSE); + findBaseClassesForClass(root,cd,cd,cd,DocumentedOnly,FALSE); } int numMembers = cd && cd->memberNameInfoSDict() ? cd->memberNameInfoSDict()->count() : 0; if ((cd==0 || (!cd->hasDocumentation() && !cd->isReference())) && numMembers>0 && @@ -5182,20 +5062,15 @@ static void computeClassRelations() root->name.data() ); } - - rootNav->releaseEntry(); } } static void computeTemplateClassRelations() { - QDictIterator edi(g_classEntries); - EntryNav *rootNav; - for (;(rootNav=edi.current());++edi) + QDictIterator edi(g_classEntries); + Entry *root; + for (;(root=edi.current());++edi) { - rootNav->loadEntry(g_storage); - Entry *root = rootNav->entry(); - QCString bName=stripAnonymousNamespaceScope(root->name); bName=stripTemplateSpecifiersFromScope(bName); ClassDef *cd=getClass(bName); @@ -5250,10 +5125,10 @@ static void computeTemplateClassRelations() tbi.name = substituteTemplateArgumentsInString(bi->name,tl,templArgs); // find a documented base class in the correct scope - if (!findClassRelation(rootNav,cd,tcd,&tbi,actualTemplateNames,DocumentedOnly,FALSE)) + if (!findClassRelation(root,cd,tcd,&tbi,actualTemplateNames,DocumentedOnly,FALSE)) { // no documented base class -> try to find an undocumented one - findClassRelation(rootNav,cd,tcd,&tbi,actualTemplateNames,Undocumented,TRUE); + findClassRelation(root,cd,tcd,&tbi,actualTemplateNames,Undocumented,TRUE); } delete actualTemplateNames; } @@ -5261,8 +5136,6 @@ static void computeTemplateClassRelations() delete templArgs; } // class has no base classes } - - rootNav->releaseEntry(); } } @@ -5413,14 +5286,13 @@ static void generateXRefPages() // set the function declaration of the member to `funcDecl'. If the boolean // over_load is set the standard overload text is added. -static void addMemberDocs(EntryNav *rootNav, +static void addMemberDocs(Entry *root, MemberDef *md, const char *funcDecl, ArgumentList *al, bool over_load, NamespaceSDict * ) { - Entry *root = rootNav->entry(); //printf("addMemberDocs: `%s'::`%s' `%s' funcDecl=`%s' mSpec=%d\n", // root->parent->name.data(),md->name().data(),md->argsString(),funcDecl,root->spec); QCString fDecl=funcDecl; @@ -5441,7 +5313,7 @@ static void addMemberDocs(EntryNav *rootNav, if (!fullName.isEmpty()) fullName+="::"; fullName+=md->name(); - FileDef *rfd=rootNav->fileDef(); + FileDef *rfd=root->fileDef(); // TODO determine scope based on root not md Definition *rscope = md->getOuterScope(); @@ -5488,7 +5360,7 @@ static void addMemberDocs(EntryNav *rootNav, if ( (md->inbodyDocumentation().isEmpty() || - !rootNav->parent()->name().isEmpty() + !root->parent()->name.isEmpty() ) && !root->inbodyDocs.isEmpty() ) { @@ -5570,7 +5442,7 @@ static ClassDef *findClassDefinition(FileDef *fd,NamespaceDef *nd, // with name `name' and argument list `args' (for overloading) and // function declaration `decl' to the corresponding member definition. -static bool findGlobalMember(EntryNav *rootNav, +static bool findGlobalMember(Entry *root, const QCString &namespaceName, const char *type, const char *name, @@ -5578,7 +5450,6 @@ static bool findGlobalMember(EntryNav *rootNav, const char *, const char *decl) { - Entry *root = rootNav->entry(); Debug::print(Debug::FindMembers,0, "2. findGlobalMember(namespace=%s,type=%s,name=%s,tempArg=%s,decl=%s)\n", qPrint(namespaceName),qPrint(type),qPrint(name),qPrint(tempArg),qPrint(decl)); @@ -5604,7 +5475,7 @@ static bool findGlobalMember(EntryNav *rootNav, //printf("Namespace namespaceName=%s nd=%s\n", // namespaceName.data(),nd ? nd->name().data() : ""); - FileDef *fd=rootNav->fileDef(); + FileDef *fd=root->fileDef(); //printf("File %s\n",fd ? fd->name().data() : ""); NamespaceSDict *nl = fd ? fd->getUsedNamespaces() : 0; //SDict *cl = fd ? fd->getUsedClasses() : 0; @@ -5679,7 +5550,7 @@ static bool findGlobalMember(EntryNav *rootNav, if (matching) // add docs to the member { Debug::print(Debug::FindMembers,0,"5. Match found\n"); - addMemberDocs(rootNav,md,decl,root->argList,FALSE); + addMemberDocs(root,md,decl,root->argList,FALSE); found=TRUE; } } @@ -5889,14 +5760,12 @@ static void substituteTemplatesInArgList( * The boolean \a isFunc is a hint that indicates that this is a function * instead of a variable or typedef. */ -static void findMember(EntryNav *rootNav, +static void findMember(Entry *root, QCString funcDecl, bool overloaded, bool isFunc ) { - Entry *root = rootNav->entry(); - Debug::print(Debug::FindMembers,0, "findMember(root=%p,funcDecl=`%s',related=`%s',overload=%d," "isFunc=%d mGrpId=%d tArgList=%p (#=%d) " @@ -6009,14 +5878,14 @@ static void findMember(EntryNav *rootNav, } } - if (root->relates.isEmpty() && rootNav->parent() && - ((rootNav->parent()->section()&Entry::SCOPE_MASK) || - (rootNav->parent()->section()==Entry::OBJCIMPL_SEC) + if (root->relates.isEmpty() && root->parent() && + ((root->parent()->section&Entry::SCOPE_MASK) || + (root->parent()->section==Entry::OBJCIMPL_SEC) ) && - !rootNav->parent()->name().isEmpty()) // see if we can combine scopeName + !root->parent()->name.isEmpty()) // see if we can combine scopeName // with the scope in which it was found { - QCString joinedName = rootNav->parent()->name()+"::"+scopeName; + QCString joinedName = root->parent()->name+"::"+scopeName; if (!scopeName.isEmpty() && (getClass(joinedName) || Doxygen::namespaceSDict->find(joinedName))) { @@ -6024,12 +5893,12 @@ static void findMember(EntryNav *rootNav, } else { - scopeName = mergeScopes(rootNav->parent()->name(),scopeName); + scopeName = mergeScopes(root->parent()->name,scopeName); } } else // see if we can prefix a namespace or class that is used from the file { - FileDef *fd=rootNav->fileDef(); + FileDef *fd=root->fileDef(); if (fd) { NamespaceSDict *fnl = fd->getUsedNamespaces(); @@ -6235,7 +6104,7 @@ static void findMember(EntryNav *rootNav, qPrint(md->argsString()), qPrint(root->fileName)); //printf("Member %s (member scopeName=%s) (this scopeName=%s) classTempList=%s\n",md->name().data(),cd->name().data(),scopeName.data(),classTempList.data()); - FileDef *fd=rootNav->fileDef(); + FileDef *fd=root->fileDef(); NamespaceDef *nd=0; if (!namespaceName.isEmpty()) nd=getResolvedNamespace(namespaceName); @@ -6377,7 +6246,7 @@ static void findMember(EntryNav *rootNav, // TODO: copy other aspects? root->protection=md->protection(); // copy protection level - addMethodToClass(rootNav,cd,md->name(),isFriend); + addMethodToClass(root,cd,md->name(),isFriend); return; } delete argList; @@ -6385,7 +6254,7 @@ static void findMember(EntryNav *rootNav, } if (matching) { - addMemberDocs(rootNav,md,funcDecl,0,overloaded,0/* TODO */); + addMemberDocs(root,md,funcDecl,0,overloaded,0/* TODO */); count++; memFound=TRUE; } @@ -6396,8 +6265,8 @@ static void findMember(EntryNav *rootNav, noMatchCount++; } } - if (count==0 && rootNav->parent() && - rootNav->parent()->section()==Entry::OBJCIMPL_SEC) + if (count==0 && root->parent() && + root->parent()->section==Entry::OBJCIMPL_SEC) { goto localObjCMethod; } @@ -6420,7 +6289,7 @@ static void findMember(EntryNav *rootNav, if (root->tArgLists && templAl!=0 && root->tArgLists->getLast()->count()<=templAl->count()) { - addMethodToClass(rootNav,ccd,md->name(),isFriend); + addMethodToClass(root,ccd,md->name(),isFriend); return; } if (md->argsString()==argListToString(root->argList,TRUE,FALSE)) @@ -6450,7 +6319,7 @@ static void findMember(EntryNav *rootNav, { // we didn't find an actual match on argument lists, but there is only 1 member with this // name in the same scope, so that has to be the one. - addMemberDocs(rootNav,umd,funcDecl,0,overloaded,0); + addMemberDocs(root,umd,funcDecl,0,overloaded,0); return; } else if (candidates>1 && ecd && emd) @@ -6458,7 +6327,7 @@ static void findMember(EntryNav *rootNav, // we didn't find a unique match using type resolution, // but one of the matches has the exact same signature so // we take that one. - addMemberDocs(rootNav,emd,funcDecl,0,overloaded,0); + addMemberDocs(root,emd,funcDecl,0,overloaded,0); return; } } @@ -6548,7 +6417,7 @@ static void findMember(EntryNav *rootNav, root->virt,root->stat,Member, mtype,tArgList,root->argList,root->metaData); //printf("new specialized member %s args=`%s'\n",md->name().data(),funcArgs.data()); - md->setTagInfo(rootNav->tagInfo()); + md->setTagInfo(root->tagInfo); md->setLanguage(root->lang); md->setId(root->id); md->setMemberClass(cd); @@ -6566,7 +6435,7 @@ static void findMember(EntryNav *rootNav, md->setPrototype(root->proto,root->fileName,root->startLine,root->startColumn); md->addSectionsToDefinition(root->anchors); md->setBodySegment(root->bodyLine,root->endBodyLine); - FileDef *fd=rootNav->fileDef(); + FileDef *fd=root->fileDef(); md->setBodyDef(fd); md->setMemberSpecifiers(root->spec); md->setMemberGroupId(root->mGrpId); @@ -6616,7 +6485,7 @@ static void findMember(EntryNav *rootNav, funcType,funcName,funcArgs,exceptions, root->protection,root->virt,root->stat,Related, mtype,tArgList,root->argList,root->metaData); - md->setTagInfo(rootNav->tagInfo()); + md->setTagInfo(root->tagInfo); md->setLanguage(root->lang); md->setId(root->id); md->setTypeConstraints(root->typeConstr); @@ -6636,7 +6505,7 @@ static void findMember(EntryNav *rootNav, md->setPrototype(root->proto,root->fileName,root->startLine,root->startColumn); md->addSectionsToDefinition(root->anchors); md->setBodySegment(root->bodyLine,root->endBodyLine); - FileDef *fd=rootNav->fileDef(); + FileDef *fd=root->fileDef(); md->setBodyDef(fd); md->setMemberSpecifiers(root->spec); md->setMemberGroupId(root->mGrpId); @@ -6648,7 +6517,7 @@ static void findMember(EntryNav *rootNav, } else // unrelated function with the same name as a member { - if (!findGlobalMember(rootNav,namespaceName,funcType,funcName,funcTempList,funcArgs,funcDecl)) + if (!findGlobalMember(root,namespaceName,funcType,funcName,funcTempList,funcArgs,funcDecl)) { QCString fullFuncDecl=funcDecl.copy(); if (isFunc) fullFuncDecl+=argListToString(root->argList,TRUE); @@ -6686,7 +6555,7 @@ static void findMember(EntryNav *rootNav, } } - FileDef *fd=rootNav->fileDef(); + FileDef *fd=root->fileDef(); if ((mn=Doxygen::memberNameSDict->find(funcName))==0) { @@ -6712,7 +6581,7 @@ static void findMember(EntryNav *rootNav, { //printf("addMemberDocs for related member %s\n",root->name.data()); //rmd->setMemberDefTemplateArguments(root->mtArgList); - addMemberDocs(rootNav,rmd,funcDecl,0,overloaded); + addMemberDocs(root,rmd,funcDecl,0,overloaded); } } @@ -6775,7 +6644,7 @@ static void findMember(EntryNav *rootNav, // md->setDefinitionTemplateParameterLists(root->tArgLists); - md->setTagInfo(rootNav->tagInfo()); + md->setTagInfo(root->tagInfo); @@ -6861,7 +6730,7 @@ static void findMember(EntryNav *rootNav, } if (root->relatesType == Duplicate) { - if (!findGlobalMember(rootNav,namespaceName,funcType,funcName,funcTempList,funcArgs,funcDecl)) + if (!findGlobalMember(root,namespaceName,funcType,funcName,funcTempList,funcArgs,funcDecl)) { QCString fullFuncDecl=funcDecl.copy(); if (isFunc) fullFuncDecl+=argListToString(root->argList,TRUE); @@ -6881,7 +6750,7 @@ static void findMember(EntryNav *rootNav, ); } } - else if (rootNav->parent() && rootNav->parent()->section()==Entry::OBJCIMPL_SEC) + else if (root->parent() && root->parent()->section==Entry::OBJCIMPL_SEC) { localObjCMethod: ClassDef *cd; @@ -6896,7 +6765,7 @@ localObjCMethod: funcType,funcName,funcArgs,exceptions, root->protection,root->virt,root->stat,Member, MemberType_Function,0,root->argList,root->metaData); - md->setTagInfo(rootNav->tagInfo()); + md->setTagInfo(root->tagInfo); md->setLanguage(root->lang); md->setId(root->id); md->makeImplementationDetail(); @@ -6913,7 +6782,7 @@ localObjCMethod: md->setPrototype(root->proto,root->fileName,root->startLine,root->startColumn); md->addSectionsToDefinition(root->anchors); md->setBodySegment(root->bodyLine,root->endBodyLine); - FileDef *fd=rootNav->fileDef(); + FileDef *fd=root->fileDef(); md->setBodyDef(fd); md->setMemberSpecifiers(root->spec); md->setMemberGroupId(root->mGrpId); @@ -6938,7 +6807,7 @@ localObjCMethod: } else // unrelated not overloaded member found { - bool globMem = findGlobalMember(rootNav,namespaceName,funcType,funcName,funcTempList,funcArgs,funcDecl); + bool globMem = findGlobalMember(root,namespaceName,funcType,funcName,funcTempList,funcArgs,funcDecl); if (className.isEmpty() && !globMem) { warn(root->fileName,root->startLine, @@ -6967,22 +6836,21 @@ localObjCMethod: // find the members corresponding to the different documentation blocks // that are extracted from the sources. -static void filterMemberDocumentation(EntryNav *rootNav) +static void filterMemberDocumentation(Entry *root) { - Entry *root = rootNav->entry(); int i=-1,l; Debug::print(Debug::FindMembers,0, "findMemberDocumentation(): root->type=`%s' root->inside=`%s' root->name=`%s' root->args=`%s' section=%x root->spec=%lld root->mGrpId=%d\n", qPrint(root->type),qPrint(root->inside),qPrint(root->name),qPrint(root->args),root->section,root->spec,root->mGrpId ); - //printf("rootNav->parent()->name()=%s\n",rootNav->parent()->name().data()); + //printf("root->parent()->name=%s\n",root->parent()->name.data()); bool isFunc=TRUE; if (root->relatesType == Duplicate && !root->relates.isEmpty()) { QCString tmp = root->relates; root->relates.resize(0); - filterMemberDocumentation(rootNav); + filterMemberDocumentation(root); root->relates = tmp; } @@ -7011,17 +6879,17 @@ static void filterMemberDocumentation(EntryNav *rootNav) //if (root->relates.length()) printf(" Relates %s\n",root->relates.data()); if (root->type.isEmpty()) { - findMember(rootNav,root->name+root->args+root->exception,FALSE,isFunc); + findMember(root,root->name+root->args+root->exception,FALSE,isFunc); } else { - findMember(rootNav,root->type+" "+root->name+root->args+root->exception,FALSE,isFunc); + findMember(root,root->type+" "+root->name+root->args+root->exception,FALSE,isFunc); } } else if (root->section==Entry::OVERLOADDOC_SEC) { //printf("Overloaded member %s found\n",root->name.data()); - findMember(rootNav,root->name,TRUE,isFunc); + findMember(root,root->name,TRUE,isFunc); } else if ((root->section==Entry::FUNCTION_SEC // function @@ -7041,7 +6909,7 @@ static void filterMemberDocumentation(EntryNav *rootNav) if (root->type=="friend class" || root->type=="friend struct" || root->type=="friend union") { - findMember(rootNav, + findMember(root, root->type+" "+ root->name, FALSE,FALSE); @@ -7049,7 +6917,7 @@ static void filterMemberDocumentation(EntryNav *rootNav) } else if (!root->type.isEmpty()) { - findMember(rootNav, + findMember(root, root->type+" "+ root->inside+ root->name+ @@ -7059,7 +6927,7 @@ static void filterMemberDocumentation(EntryNav *rootNav) } else { - findMember(rootNav, + findMember(root, root->inside+ root->name+ root->args+ @@ -7069,18 +6937,18 @@ static void filterMemberDocumentation(EntryNav *rootNav) } else if (root->section==Entry::DEFINE_SEC && !root->relates.isEmpty()) { - findMember(rootNav,root->name+root->args,FALSE,!root->args.isEmpty()); + findMember(root,root->name+root->args,FALSE,!root->args.isEmpty()); } else if (root->section==Entry::VARIABLEDOC_SEC) { //printf("Documentation for variable %s found\n",root->name.data()); //if (!root->relates.isEmpty()) printf(" Relates %s\n",root->relates.data()); - findMember(rootNav,root->name,FALSE,FALSE); + findMember(root,root->name,FALSE,FALSE); } else if (root->section==Entry::EXPORTED_INTERFACE_SEC || root->section==Entry::INCLUDED_SERVICE_SEC) { - findMember(rootNav,root->type + " " + root->name,FALSE,FALSE); + findMember(root,root->type + " " + root->name,FALSE,FALSE); } else { @@ -7089,62 +6957,53 @@ static void filterMemberDocumentation(EntryNav *rootNav) } } -static void findMemberDocumentation(EntryNav *rootNav) +static void findMemberDocumentation(Entry *root) { - if (rootNav->section()==Entry::MEMBERDOC_SEC || - rootNav->section()==Entry::OVERLOADDOC_SEC || - rootNav->section()==Entry::FUNCTION_SEC || - rootNav->section()==Entry::VARIABLE_SEC || - rootNav->section()==Entry::VARIABLEDOC_SEC || - rootNav->section()==Entry::DEFINE_SEC || - rootNav->section()==Entry::INCLUDED_SERVICE_SEC || - rootNav->section()==Entry::EXPORTED_INTERFACE_SEC + if (root->section==Entry::MEMBERDOC_SEC || + root->section==Entry::OVERLOADDOC_SEC || + root->section==Entry::FUNCTION_SEC || + root->section==Entry::VARIABLE_SEC || + root->section==Entry::VARIABLEDOC_SEC || + root->section==Entry::DEFINE_SEC || + root->section==Entry::INCLUDED_SERVICE_SEC || + root->section==Entry::EXPORTED_INTERFACE_SEC ) { - rootNav->loadEntry(g_storage); - - filterMemberDocumentation(rootNav); - - rootNav->releaseEntry(); + filterMemberDocumentation(root); } - if (rootNav->children()) + if (root->children()) { - EntryNavListIterator eli(*rootNav->children()); - EntryNav *e; + EntryListIterator eli(*root->children()); + Entry *e; for (;(e=eli.current());++eli) { - if (e->section()!=Entry::ENUM_SEC) findMemberDocumentation(e); + if (e->section!=Entry::ENUM_SEC) findMemberDocumentation(e); } } } //---------------------------------------------------------------------- -static void findObjCMethodDefinitions(EntryNav *rootNav) +static void findObjCMethodDefinitions(Entry *root) { - if (rootNav->children()) + if (root->children()) { - EntryNavListIterator eli(*rootNav->children()); - EntryNav *objCImplNav; - for (;(objCImplNav=eli.current());++eli) + EntryListIterator eli(*root->children()); + Entry *objCImpl; + for (;(objCImpl=eli.current());++eli) { - if (objCImplNav->section()==Entry::OBJCIMPL_SEC && objCImplNav->children()) + if (objCImpl->section==Entry::OBJCIMPL_SEC && objCImpl->children()) { - EntryNavListIterator seli(*objCImplNav->children()); - EntryNav *objCMethodNav; - for (;(objCMethodNav=seli.current());++seli) + EntryListIterator seli(*objCImpl->children()); + Entry *objCMethod; + for (;(objCMethod=seli.current());++seli) { - if (objCMethodNav->section()==Entry::FUNCTION_SEC) + if (objCMethod->section==Entry::FUNCTION_SEC) { - objCMethodNav->loadEntry(g_storage); - Entry *objCMethod = objCMethodNav->entry(); - //Printf(" Found ObjC method definition %s\n",objCMethod->name.data()); - findMember(objCMethodNav, objCMethod->type+" "+objCImplNav->name()+"::"+ + findMember(objCMethod, objCMethod->type+" "+objCImpl->name+"::"+ objCMethod->name+" "+objCMethod->args, FALSE,TRUE); objCMethod->section=Entry::EMPTY_SEC; - - objCMethodNav->releaseEntry(); } } } @@ -7155,13 +7014,10 @@ static void findObjCMethodDefinitions(EntryNav *rootNav) //---------------------------------------------------------------------- // find and add the enumeration to their classes, namespaces or files -static void findEnums(EntryNav *rootNav) +static void findEnums(Entry *root) { - if (rootNav->section()==Entry::ENUM_SEC) + if (root->section==Entry::ENUM_SEC) { - rootNav->loadEntry(g_storage); - Entry *root = rootNav->entry(); - MemberDef *md=0; ClassDef *cd=0; FileDef *fd=0; @@ -7184,11 +7040,11 @@ static void findEnums(EntryNav *rootNav) } else // no scope, check the scope in which the docs where found { - if (( rootNav->parent()->section() & Entry::SCOPE_MASK ) - && !rootNav->parent()->name().isEmpty() + if (( root->parent()->section & Entry::SCOPE_MASK ) + && !root->parent()->name.isEmpty() ) // found enum docs inside a compound { - scope=rootNav->parent()->name(); + scope=root->parent()->name; if ((cd=getClass(scope))==0) nd=getResolvedNamespace(scope); } name=root->name; @@ -7219,7 +7075,7 @@ static void findEnums(EntryNav *rootNav) } else // found a global enum { - fd=rootNav->fileDef(); + fd=root->fileDef(); mnsd=Doxygen::functionNameSDict; isGlobal=TRUE; } @@ -7234,12 +7090,12 @@ static void findEnums(EntryNav *rootNav) isMemberOf ? Foreign : isRelated ? Related : Member, MemberType_Enumeration, 0,0,root->metaData); - md->setTagInfo(rootNav->tagInfo()); + md->setTagInfo(root->tagInfo); md->setLanguage(root->lang); md->setId(root->id); if (!isGlobal) md->setMemberClass(cd); else md->setFileDef(fd); md->setBodySegment(root->bodyLine,root->endBodyLine); - md->setBodyDef(rootNav->fileDef()); + md->setBodyDef(root->fileDef()); md->setMemberSpecifiers(root->spec); md->setEnumBaseType(root->args); //printf("Enum %s definition at line %d of %s: protection=%d scope=%s\n", @@ -7283,9 +7139,9 @@ static void findEnums(EntryNav *rootNav) if (isGlobal) { if (!defSet) md->setDefinition(name+baseType); - if (fd==0 && rootNav->parent()) + if (fd==0 && root->parent()) { - fd=rootNav->parent()->fileDef(); + fd=root->parent()->fileDef(); } if (fd) { @@ -7328,24 +7184,20 @@ static void findEnums(EntryNav *rootNav) } addMemberToGroups(root,md); } - rootNav->releaseEntry(); } else { - RECURSE_ENTRYTREE(findEnums,rootNav); + RECURSE_ENTRYTREE(findEnums,root); } } //---------------------------------------------------------------------- -static void addEnumValuesToEnums(EntryNav *rootNav) +static void addEnumValuesToEnums(Entry *root) { - if (rootNav->section()==Entry::ENUM_SEC) + if (root->section==Entry::ENUM_SEC) // non anonymous enumeration { - rootNav->loadEntry(g_storage); - Entry *root = rootNav->entry(); - ClassDef *cd=0; FileDef *fd=0; NamespaceDef *nd=0; @@ -7366,11 +7218,11 @@ static void addEnumValuesToEnums(EntryNav *rootNav) } else // no scope, check the scope in which the docs where found { - if (( rootNav->parent()->section() & Entry::SCOPE_MASK ) - && !rootNav->parent()->name().isEmpty() + if (( root->parent()->section & Entry::SCOPE_MASK ) + && !root->parent()->name.isEmpty() ) // found enum docs inside a compound { - scope=rootNav->parent()->name(); + scope=root->parent()->name; if ((cd=getClass(scope))==0) nd=getResolvedNamespace(scope); } name=root->name; @@ -7401,7 +7253,7 @@ static void addEnumValuesToEnums(EntryNav *rootNav) } else // found a global enum { - fd=rootNav->fileDef(); + fd=root->fileDef(); //printf("Enum in file `%s': `%s'\n",fd->name().data(),name.data()); mnsd=Doxygen::functionNameSDict; isGlobal=TRUE; @@ -7417,16 +7269,16 @@ static void addEnumValuesToEnums(EntryNav *rootNav) MemberDef *md; for (mni.toFirst(); (md=mni.current()) ; ++mni) // for each enum in this list { - if (md->isEnumerate() && rootNav->children()) + if (md->isEnumerate() && root->children()) { - //printf(" enum with %d children\n",rootNav->children()->count()); - EntryNavListIterator eli(*rootNav->children()); // for each enum value - EntryNav *e; + //printf(" enum with %d children\n",root->children()->count()); + EntryListIterator eli(*root->children()); // for each enum value + Entry *e; for (;(e=eli.current());++eli) { SrcLangExt sle; if ( - (sle=rootNav->lang())==SrcLangExt_CSharp || + (sle=root->lang)==SrcLangExt_CSharp || sle==SrcLangExt_Java || sle==SrcLangExt_XML || (root->spec&Entry::Strong) @@ -7435,12 +7287,10 @@ static void addEnumValuesToEnums(EntryNav *rootNav) // Unlike classic C/C++ enums, for C++11, C# & Java enum // values are only visible inside the enum scope, so we must create // them here and only add them to the enum - e->loadEntry(g_storage); - Entry *root = e->entry(); - //printf("md->qualifiedName()=%s rootNav->name()=%s tagInfo=%p name=%s\n", - // md->qualifiedName().data(),rootNav->name().data(),rootNav->tagInfo(),root->name.data()); - QCString qualifiedName = substitute(rootNav->name(),"::","."); - if (!scope.isEmpty() && rootNav->tagInfo()) + //printf("md->qualifiedName()=%s e->name=%s tagInfo=%p name=%s\n", + // md->qualifiedName().data(),e->name.data(),e->tagInfo,e->name.data()); + QCString qualifiedName = substitute(root->name,"::","."); + if (!scope.isEmpty() && root->tagInfo) { qualifiedName=substitute(scope,"::",".")+"."+qualifiedName; } @@ -7448,54 +7298,53 @@ static void addEnumValuesToEnums(EntryNav *rootNav) qualifiedName // enum value scope matches that of the enum ) { - QCString fileName = root->fileName; - if (fileName.isEmpty() && rootNav->tagInfo()) + QCString fileName = e->fileName; + if (fileName.isEmpty() && e->tagInfo) { - fileName = rootNav->tagInfo()->tagName; + fileName = e->tagInfo->tagName; } MemberDef *fmd=new MemberDef( - fileName,root->startLine,root->startColumn, - root->type,root->name,root->args,0, - root->protection, Normal,root->stat,Member, - MemberType_EnumValue,0,0,root->metaData); + fileName,e->startLine,e->startColumn, + e->type,e->name,e->args,0, + e->protection, Normal,e->stat,Member, + MemberType_EnumValue,0,0,e->metaData); if (md->getClassDef()) fmd->setMemberClass(md->getClassDef()); else if (md->getNamespaceDef()) fmd->setNamespace(md->getNamespaceDef()); else if (md->getFileDef()) fmd->setFileDef(md->getFileDef()); fmd->setOuterScope(md->getOuterScope()); - fmd->setTagInfo(e->tagInfo()); - fmd->setLanguage(root->lang); - fmd->setId(root->id); - fmd->setDocumentation(root->doc,root->docFile,root->docLine); - fmd->setBriefDescription(root->brief,root->briefFile,root->briefLine); - fmd->addSectionsToDefinition(root->anchors); - fmd->setInitializer(root->initializer); - fmd->setMaxInitLines(root->initLines); - fmd->setMemberGroupId(root->mGrpId); - fmd->setExplicitExternal(root->explicitExternal,fileName,root->startLine,root->startColumn); - fmd->setRefItems(root->sli); + fmd->setTagInfo(e->tagInfo); + fmd->setLanguage(e->lang); + fmd->setId(e->id); + fmd->setDocumentation(e->doc,e->docFile,e->docLine); + fmd->setBriefDescription(e->brief,e->briefFile,e->briefLine); + fmd->addSectionsToDefinition(e->anchors); + fmd->setInitializer(e->initializer); + fmd->setMaxInitLines(e->initLines); + fmd->setMemberGroupId(e->mGrpId); + fmd->setExplicitExternal(e->explicitExternal,fileName,e->startLine,e->startColumn); + fmd->setRefItems(e->sli); fmd->setAnchor(); md->insertEnumField(fmd); fmd->setEnumScope(md,TRUE); - MemberName *mn=mnsd->find(root->name); + MemberName *mn=mnsd->find(e->name); if (mn) { mn->append(fmd); } else { - mn = new MemberName(root->name); + mn = new MemberName(e->name); mn->append(fmd); - mnsd->append(root->name,mn); + mnsd->append(e->name,mn); } } - e->releaseEntry(); } else { //printf("e->name=%s isRelated=%d\n",e->name().data(),isRelated); MemberName *fmn=0; MemberNameSDict *emnsd = isRelated ? Doxygen::functionNameSDict : mnsd; - if (!e->name().isEmpty() && (fmn=(*emnsd)[e->name()])) + if (!e->name.isEmpty() && (fmn=(*emnsd)[e->name])) // get list of members with the same name as the field { MemberNameIterator fmni(*fmn); @@ -7554,12 +7403,10 @@ static void addEnumValuesToEnums(EntryNav *rootNav) } } } - - rootNav->releaseEntry(); } else { - RECURSE_ENTRYTREE(addEnumValuesToEnums,rootNav); + RECURSE_ENTRYTREE(addEnumValuesToEnums,root); } } @@ -7567,16 +7414,13 @@ static void addEnumValuesToEnums(EntryNav *rootNav) //---------------------------------------------------------------------- // find the documentation blocks for the enumerations -static void findEnumDocumentation(EntryNav *rootNav) +static void findEnumDocumentation(Entry *root) { - if (rootNav->section()==Entry::ENUMDOC_SEC - && !rootNav->name().isEmpty() - && rootNav->name().at(0)!='@' // skip anonymous enums + if (root->section==Entry::ENUMDOC_SEC + && !root->name.isEmpty() + && root->name.at(0)!='@' // skip anonymous enums ) { - rootNav->loadEntry(g_storage); - Entry *root = rootNav->entry(); - //printf("Found docs for enum with name `%s' in context %s\n", // root->name.data(),root->parent->name.data()); int i; @@ -7592,12 +7436,12 @@ static void findEnumDocumentation(EntryNav *rootNav) { name=root->name; } - if (( rootNav->parent()->section() & Entry::SCOPE_MASK ) - && !rootNav->parent()->name().isEmpty() + if (( root->parent()->section & Entry::SCOPE_MASK ) + && !root->parent()->name.isEmpty() ) // found enum docs inside a compound { if (!scope.isEmpty()) scope.prepend("::"); - scope.prepend(rootNav->parent()->name()); + scope.prepend(root->parent()->name); } ClassDef *cd=getClass(scope); @@ -7620,7 +7464,7 @@ static void findEnumDocumentation(EntryNav *rootNav) { // documentation outside a compound overrides the documentation inside it #if 0 - if (!md->documentation() || rootNav->parent()->name().isEmpty()) + if (!md->documentation() || root->parent()->name.isEmpty()) #endif { md->setDocumentation(root->doc,root->docFile,root->docLine); @@ -7630,13 +7474,13 @@ static void findEnumDocumentation(EntryNav *rootNav) // brief descriptions inside a compound override the documentation // outside it #if 0 - if (!md->briefDescription() || !rootNav->parent()->name().isEmpty()) + if (!md->briefDescription() || !root->parent()->name.isEmpty()) #endif { md->setBriefDescription(root->brief,root->briefFile,root->briefLine); } - if (!md->inbodyDocumentation() || !rootNav->parent()->name().isEmpty()) + if (!md->inbodyDocumentation() || !root->parent()->name.isEmpty()) { md->setInbodyDocumentation(root->inbodyDocs,root->inbodyFile,root->inbodyLine); } @@ -7702,10 +7546,8 @@ static void findEnumDocumentation(EntryNav *rootNav) ); } } - - rootNav->releaseEntry(); } - RECURSE_ENTRYTREE(findEnumDocumentation,rootNav); + RECURSE_ENTRYTREE(findEnumDocumentation,root); } // search for each enum (member or function) in mnl if it has documented @@ -8572,27 +8414,24 @@ static void flushUnresolvedRelations() //---------------------------------------------------------------------------- -static void findDefineDocumentation(EntryNav *rootNav) +static void findDefineDocumentation(Entry *root) { - if ((rootNav->section()==Entry::DEFINEDOC_SEC || - rootNav->section()==Entry::DEFINE_SEC) && !rootNav->name().isEmpty() + if ((root->section==Entry::DEFINEDOC_SEC || + root->section==Entry::DEFINE_SEC) && !root->name.isEmpty() ) { - rootNav->loadEntry(g_storage); - Entry *root = rootNav->entry(); - //printf("found define `%s' `%s' brief=`%s' doc=`%s'\n", // root->name.data(),root->args.data(),root->brief.data(),root->doc.data()); - if (rootNav->tagInfo() && !root->name.isEmpty()) // define read from a tag file + if (root->tagInfo && !root->name.isEmpty()) // define read from a tag file { - MemberDef *md=new MemberDef(rootNav->tagInfo()->tagName,1,1, + MemberDef *md=new MemberDef(root->tagInfo->tagName,1,1, "#define",root->name,root->args,0, Public,Normal,FALSE,Member,MemberType_Define,0,0,""); - md->setTagInfo(rootNav->tagInfo()); + md->setTagInfo(root->tagInfo); md->setLanguage(root->lang); //printf("Searching for `%s' fd=%p\n",filePathName.data(),fd); - md->setFileDef(rootNav->parent()->fileDef()); + md->setFileDef(root->parent()->fileDef()); //printf("Adding member=%s\n",md->name().data()); MemberName *mn; if ((mn=Doxygen::functionNameSDict->find(root->name))) @@ -8630,7 +8469,7 @@ static void findDefineDocumentation(EntryNav *rootNav) md->setInbodyDocumentation(root->inbodyDocs,root->inbodyFile,root->inbodyLine); } md->setBodySegment(root->bodyLine,root->endBodyLine); - md->setBodyDef(rootNav->fileDef()); + md->setBodyDef(root->fileDef()); md->addSectionsToDefinition(root->anchors); md->setMaxInitLines(root->initLines); md->setRefItems(root->sli); @@ -8674,7 +8513,7 @@ static void findDefineDocumentation(EntryNav *rootNav) md->setInbodyDocumentation(root->inbodyDocs,root->inbodyFile,root->inbodyLine); } md->setBodySegment(root->bodyLine,root->endBodyLine); - md->setBodyDef(rootNav->fileDef()); + md->setBodyDef(root->fileDef()); md->addSectionsToDefinition(root->anchors); md->setRefItems(root->sli); md->setLanguage(root->lang); @@ -8708,21 +8547,16 @@ static void findDefineDocumentation(EntryNav *rootNav) ); } } - - rootNav->releaseEntry(); } - RECURSE_ENTRYTREE(findDefineDocumentation,rootNav); + RECURSE_ENTRYTREE(findDefineDocumentation,root); } //---------------------------------------------------------------------------- -static void findDirDocumentation(EntryNav *rootNav) +static void findDirDocumentation(Entry *root) { - if (rootNav->section() == Entry::DIRDOC_SEC) + if (root->section == Entry::DIRDOC_SEC) { - rootNav->loadEntry(g_storage); - Entry *root = rootNav->entry(); - QCString normalizedName = root->name; normalizedName = substitute(normalizedName,"\\","/"); //printf("root->docFile=%s normalizedName=%s\n", @@ -8774,34 +8608,25 @@ static void findDirDocumentation(EntryNav *rootNav) warn(root->fileName,root->startLine,"No matching " "directory found for command \\dir %s\n",normalizedName.data()); } - rootNav->releaseEntry(); } - RECURSE_ENTRYTREE(findDirDocumentation,rootNav); + RECURSE_ENTRYTREE(findDirDocumentation,root); } //---------------------------------------------------------------------------- // create a (sorted) list of separate documentation pages -static void buildPageList(EntryNav *rootNav) +static void buildPageList(Entry *root) { - if (rootNav->section() == Entry::PAGEDOC_SEC) + if (root->section == Entry::PAGEDOC_SEC) { - rootNav->loadEntry(g_storage); - Entry *root = rootNav->entry(); - if (!root->name.isEmpty()) { - addRelatedPage(rootNav); + addRelatedPage(root); } - - rootNav->releaseEntry(); } - else if (rootNav->section() == Entry::MAINPAGEDOC_SEC) + else if (root->section == Entry::MAINPAGEDOC_SEC) { - rootNav->loadEntry(g_storage); - Entry *root = rootNav->entry(); - QCString title=root->args.stripWhiteSpace(); if (title.isEmpty()) title=theTranslator->trMainPage(); //QCString name = Config_getBool(GENERATE_TREEVIEW)?"main":"index"; @@ -8813,22 +8638,17 @@ static void buildPageList(EntryNav *rootNav) title, 0,0 ); - - rootNav->releaseEntry(); } - RECURSE_ENTRYTREE(buildPageList,rootNav); + RECURSE_ENTRYTREE(buildPageList,root); } // search for the main page defined in this project -static void findMainPage(EntryNav *rootNav) +static void findMainPage(Entry *root) { - if (rootNav->section() == Entry::MAINPAGEDOC_SEC) + if (root->section == Entry::MAINPAGEDOC_SEC) { - rootNav->loadEntry(g_storage); - - if (Doxygen::mainPage==0 && rootNav->tagInfo()==0) + if (Doxygen::mainPage==0 && root->tagInfo==0) { - Entry *root = rootNav->entry(); //printf("Found main page! \n======\n%s\n=======\n",root->doc.data()); QCString title=root->args.stripWhiteSpace(); //QCString indexName=Config_getBool(GENERATE_TREEVIEW)?"main":"index"; @@ -8839,7 +8659,7 @@ static void findMainPage(EntryNav *rootNav) Doxygen::mainPage->setBriefDescription(root->brief,root->briefFile,root->briefLine); Doxygen::mainPage->setFileName(indexName); Doxygen::mainPage->setLocalToc(root->localToc); - addPageToContext(Doxygen::mainPage,rootNav); + addPageToContext(Doxygen::mainPage,root); SectionInfo *si = Doxygen::sectionDict->find(Doxygen::mainPage->name()); if (si) @@ -8866,46 +8686,37 @@ static void findMainPage(EntryNav *rootNav) Doxygen::mainPage->addSectionsToDefinition(root->anchors); } } - else if (rootNav->tagInfo()==0) + else if (root->tagInfo==0) { - Entry *root = rootNav->entry(); warn(root->fileName,root->startLine, "found more than one \\mainpage comment block! (first occurrence: %s, line %d), Skipping current block!", Doxygen::mainPage->docFile().data(),Doxygen::mainPage->docLine()); } - - rootNav->releaseEntry(); } - RECURSE_ENTRYTREE(findMainPage,rootNav); + RECURSE_ENTRYTREE(findMainPage,root); } // search for the main page imported via tag files and add only the section labels -static void findMainPageTagFiles(EntryNav *rootNav) +static void findMainPageTagFiles(Entry *root) { - if (rootNav->section() == Entry::MAINPAGEDOC_SEC) + if (root->section == Entry::MAINPAGEDOC_SEC) { - rootNav->loadEntry(g_storage); - - if (Doxygen::mainPage && rootNav->tagInfo()) + if (Doxygen::mainPage && root->tagInfo) { - Entry *root = rootNav->entry(); Doxygen::mainPage->addSectionsToDefinition(root->anchors); } } - RECURSE_ENTRYTREE(findMainPageTagFiles,rootNav); + RECURSE_ENTRYTREE(findMainPageTagFiles,root); } -static void computePageRelations(EntryNav *rootNav) +static void computePageRelations(Entry *root) { - if ((rootNav->section()==Entry::PAGEDOC_SEC || - rootNav->section()==Entry::MAINPAGEDOC_SEC + if ((root->section==Entry::PAGEDOC_SEC || + root->section==Entry::MAINPAGEDOC_SEC ) - && !rootNav->name().isEmpty() + && !root->name.isEmpty() ) { - rootNav->loadEntry(g_storage); - Entry *root = rootNav->entry(); - PageDef *pd = root->section==Entry::PAGEDOC_SEC ? Doxygen::pageSDict->find(root->name) : Doxygen::mainPage; @@ -8924,10 +8735,8 @@ static void computePageRelations(EntryNav *rootNav) } } } - - rootNav->releaseEntry(); } - RECURSE_ENTRYTREE(computePageRelations,rootNav); + RECURSE_ENTRYTREE(computePageRelations,root); } static void checkPageRelations() @@ -9046,13 +8855,10 @@ static void generatePageDocs() //---------------------------------------------------------------------------- // create a (sorted) list & dictionary of example pages -static void buildExampleList(EntryNav *rootNav) +static void buildExampleList(Entry *root) { - if ((rootNav->section()==Entry::EXAMPLE_SEC || rootNav->section()==Entry::EXAMPLE_LINENO_SEC) && !rootNav->name().isEmpty()) + if ((root->section==Entry::EXAMPLE_SEC || root->section==Entry::EXAMPLE_LINENO_SEC) && !root->name.isEmpty()) { - rootNav->loadEntry(g_storage); - Entry *root = rootNav->entry(); - if (Doxygen::exampleSDict->find(root->name)) { warn(root->fileName,root->startLine, @@ -9069,32 +8875,30 @@ static void buildExampleList(EntryNav *rootNav) pd->setFileName(convertNameToFile(pd->name()+"-example",FALSE,TRUE)); pd->addSectionsToDefinition(root->anchors); pd->setLanguage(root->lang); - pd->setShowLineNo(rootNav->section()==Entry::EXAMPLE_LINENO_SEC); + pd->setShowLineNo(root->section==Entry::EXAMPLE_LINENO_SEC); Doxygen::exampleSDict->inSort(root->name,pd); //we don't add example to groups //addExampleToGroups(root,pd); } - - rootNav->releaseEntry(); } - RECURSE_ENTRYTREE(buildExampleList,rootNav); + RECURSE_ENTRYTREE(buildExampleList,root); } //---------------------------------------------------------------------------- // prints the Entry tree (for debugging) -void printNavTree(EntryNav *rootNav,int indent) +void printNavTree(Entry *root,int indent) { QCString indentStr; indentStr.fill(' ',indent); msg("%s%s (sec=0x%x)\n", indentStr.isEmpty()?"":indentStr.data(), - rootNav->name().isEmpty()?"":rootNav->name().data(), - rootNav->section()); - if (rootNav->children()) + root->name.isEmpty()?"":root->name.data(), + root->section); + if (root->children()) { - EntryNavListIterator eli(*rootNav->children()); + EntryListIterator eli(*root->children()); for (;eli.current();++eli) printNavTree(eli.current(),indent+2); } } @@ -9486,7 +9290,7 @@ static ParserInterface *getParserForFile(const char *fn) } static void parseFile(ParserInterface *parser, - Entry *root,EntryNav *rootNav,FileDef *fd,const char *fn, + Entry *root,FileDef *fd,const char *fn, bool sameTu,QStrList &filesInSameTu) { #if USE_LIBCLANG @@ -9539,17 +9343,15 @@ static void parseFile(ParserInterface *parser, fd->getAllIncludeFilesRecursively(filesInSameTu); } + Entry *fileRoot = new Entry; // use language parse to parse the file - parser->parseInput(fileName,convBuf.data(),root,sameTu,filesInSameTu); - - // store the Entry tree in a file and create an index to - // navigate/load entries - //printf("root->createNavigationIndex for %s\n",fd->name().data()); - root->createNavigationIndex(rootNav,g_storage,fd); + parser->parseInput(fileName,convBuf.data(),fileRoot,sameTu,filesInSameTu); + fileRoot->setFileDef(fd); + root->addSubEntry(fileRoot); } //! parse the list of input files -static void parseFiles(Entry *root,EntryNav *rootNav) +static void parseFiles(Entry *root) { #if USE_LIBCLANG static bool clangAssistedParsing = Config_getBool(CLANG_ASSISTED_PARSING); @@ -9577,7 +9379,7 @@ static void parseFiles(Entry *root,EntryNav *rootNav) QStrList filesInSameTu; ParserInterface * parser = getParserForFile(s->data()); parser->startTranslationUnit(s->data()); - parseFile(parser,root,rootNav,fd,s->data(),FALSE,filesInSameTu); + parseFile(parser,root,fd,s->data(),FALSE,filesInSameTu); //printf(" got %d extra files in tu\n",filesInSameTu.count()); // Now process any include files in the same translation unit @@ -9592,7 +9394,7 @@ static void parseFiles(Entry *root,EntryNav *rootNav) { QStrList moreFiles; //printf(" Processing %s in same translation unit as %s\n",incFile,s->data()); - parseFile(parser,root,rootNav,ifd,incFile,TRUE,moreFiles); + parseFile(parser,root,ifd,incFile,TRUE,moreFiles); g_processedFiles.insert(incFile,(void*)0x8); } } @@ -9613,7 +9415,7 @@ static void parseFiles(Entry *root,EntryNav *rootNav) ASSERT(fd!=0); ParserInterface * parser = getParserForFile(s->data()); parser->startTranslationUnit(s->data()); - parseFile(parser,root,rootNav,fd,s->data(),FALSE,filesInSameTu); + parseFile(parser,root,fd,s->data(),FALSE,filesInSameTu); parser->finishTranslationUnit(); g_processedFiles.insert(*s,(void*)0x8); } @@ -9632,7 +9434,7 @@ static void parseFiles(Entry *root,EntryNav *rootNav) ASSERT(fd!=0); ParserInterface * parser = getParserForFile(s->data()); parser->startTranslationUnit(s->data()); - parseFile(parser,root,rootNav,fd,s->data(),FALSE,filesInSameTu); + parseFile(parser,root,fd,s->data(),FALSE,filesInSameTu); } } } @@ -11178,7 +10980,7 @@ void parseInput() * Initialize global lists and dictionaries **************************************************************************/ - Doxygen::symbolStorage = new Store; + //Doxygen::symbolStorage = new Store; // also scale lookup cache with SYMBOL_CACHE_SIZE int cacheSize = Config_getInt(LOOKUP_CACHE_SIZE); @@ -11200,11 +11002,11 @@ void parseInput() Doxygen::filterDBFileName.sprintf("doxygen_filterdb_%d.tmp",pid); Doxygen::filterDBFileName.prepend(outputDirectory+"/"); - if (Doxygen::symbolStorage->open(Doxygen::objDBFileName)==-1) - { - err("Failed to open temporary file %s\n",Doxygen::objDBFileName.data()); - exit(1); - } +// if (Doxygen::symbolStorage->open(Doxygen::objDBFileName)==-1) +// { +// err("Failed to open temporary file %s\n",Doxygen::objDBFileName.data()); +// exit(1); +// } @@ -11332,17 +11134,7 @@ void parseInput() * Handle Tag Files * **************************************************************************/ - g_storage = new FileStorage; - g_storage->setName(Doxygen::entryDBFileName); - if (!g_storage->open(IO_WriteOnly)) - { - err("Failed to create temporary storage file %s\n", - Doxygen::entryDBFileName.data()); - exit(1); - } Entry *root=new Entry; - EntryNav *rootNav = new EntryNav(0,root); - rootNav->setEntry(root); msg("Reading and parsing tag files\n"); QStrList &tagFileList = Config_getList(TAGFILES); @@ -11350,7 +11142,6 @@ void parseInput() while (s) { readTagFile(root,s); - root->createNavigationIndex(rootNav,g_storage,0); s=tagFileList.next(); } @@ -11360,12 +11151,11 @@ void parseInput() if (Config_getBool(BUILTIN_STL_SUPPORT)) { - addSTLClasses(rootNav); + addSTLClasses(root); } g_s.begin("Parsing files\n"); - parseFiles(root,rootNav); - g_storage->close(); + parseFiles(root); g_s.end(); // we are done with input scanning now, so free up the buffers used by flex @@ -11374,46 +11164,39 @@ void parseInput() scanFreeScanner(); pyscanFreeScanner(); - if (!g_storage->open(IO_ReadOnly)) - { - err("Failed to open temporary storage file %s for reading", - Doxygen::entryDBFileName.data()); - exit(1); - } - /************************************************************************** * Gather information * **************************************************************************/ g_s.begin("Building group list...\n"); - buildGroupList(rootNav); - organizeSubGroups(rootNav); + buildGroupList(root); + organizeSubGroups(root); g_s.end(); g_s.begin("Building directory list...\n"); buildDirectories(); - findDirDocumentation(rootNav); + findDirDocumentation(root); g_s.end(); g_s.begin("Building namespace list...\n"); - buildNamespaceList(rootNav); - findUsingDirectives(rootNav); + buildNamespaceList(root); + findUsingDirectives(root); g_s.end(); g_s.begin("Building file list...\n"); - buildFileList(rootNav); + buildFileList(root); g_s.end(); //generateFileTree(); g_s.begin("Building class list...\n"); - buildClassList(rootNav); + buildClassList(root); g_s.end(); g_s.begin("Associating documentation with classes...\n"); - buildClassDocList(rootNav); + buildClassDocList(root); // build list of using declarations here (global list) - buildListOfUsingDecls(rootNav); + buildListOfUsingDecls(root); g_s.end(); g_s.begin("Computing nesting relations for classes...\n"); @@ -11430,11 +11213,11 @@ void parseInput() g_usingDeclarations.clear(); g_s.begin("Building example list...\n"); - buildExampleList(rootNav); + buildExampleList(root); g_s.end(); g_s.begin("Searching for enumerations...\n"); - findEnums(rootNav); + findEnums(root); g_s.end(); // Since buildVarList calls isVarWithConstructor @@ -11442,24 +11225,24 @@ void parseInput() // typedefs first so the relations between classes via typedefs // are properly resolved. See bug 536385 for an example. g_s.begin("Searching for documented typedefs...\n"); - buildTypedefList(rootNav); + buildTypedefList(root); g_s.end(); if (Config_getBool(OPTIMIZE_OUTPUT_SLICE)) { g_s.begin("Searching for documented sequences...\n"); - buildSequenceList(rootNav); + buildSequenceList(root); g_s.end(); g_s.begin("Searching for documented dictionaries...\n"); - buildDictionaryList(rootNav); + buildDictionaryList(root); g_s.end(); } g_s.begin("Searching for members imported via using declarations...\n"); // this should be after buildTypedefList in order to properly import // used typedefs - findUsingDeclarations(rootNav); + findUsingDeclarations(root); g_s.end(); g_s.begin("Searching for included using directives...\n"); @@ -11467,14 +11250,14 @@ void parseInput() g_s.end(); g_s.begin("Searching for documented variables...\n"); - buildVarList(rootNav); + buildVarList(root); g_s.end(); g_s.begin("Building interface member list...\n"); - buildInterfaceAndServiceList(rootNav); // UNO IDL + buildInterfaceAndServiceList(root); // UNO IDL g_s.begin("Building member list...\n"); // using class info only ! - buildFunctionList(rootNav); + buildFunctionList(root); g_s.end(); g_s.begin("Searching for friends...\n"); @@ -11482,11 +11265,11 @@ void parseInput() g_s.end(); g_s.begin("Searching for documented defines...\n"); - findDefineDocumentation(rootNav); + findDefineDocumentation(root); g_s.end(); g_s.begin("Computing class inheritance relations...\n"); - findClassEntries(rootNav); + findClassEntries(root); findInheritedTemplateInstances(); g_s.end(); @@ -11517,14 +11300,14 @@ void parseInput() g_s.end(); g_s.begin("Add enum values to enums...\n"); - addEnumValuesToEnums(rootNav); - findEnumDocumentation(rootNav); + addEnumValuesToEnums(root); + findEnumDocumentation(root); g_s.end(); g_s.begin("Searching for member function documentation...\n"); - findObjCMethodDefinitions(rootNav); - findMemberDocumentation(rootNav); // may introduce new members ! - findUsingDeclImports(rootNav); // may introduce new members ! + findObjCMethodDefinitions(root); + findMemberDocumentation(root); // may introduce new members ! + findUsingDeclImports(root); // may introduce new members ! transferRelatedFunctionDocumentation(); transferFunctionDocumentation(); @@ -11537,21 +11320,21 @@ void parseInput() g_s.end(); g_s.begin("Building page list...\n"); - buildPageList(rootNav); + buildPageList(root); g_s.end(); g_s.begin("Search for main page...\n"); - findMainPage(rootNav); - findMainPageTagFiles(rootNav); + findMainPage(root); + findMainPageTagFiles(root); g_s.end(); g_s.begin("Computing page relations...\n"); - computePageRelations(rootNav); + computePageRelations(root); checkPageRelations(); g_s.end(); g_s.begin("Determining the scope of groups...\n"); - findGroupScope(rootNav); + findGroupScope(root); g_s.end(); g_s.begin("Sorting lists...\n"); @@ -11561,12 +11344,6 @@ void parseInput() Doxygen::classSDict->sort(); g_s.end(); - msg("Freeing entry tree\n"); - delete rootNav; - g_storage->close(); - delete g_storage; - g_storage=0; - QDir thisDir; thisDir.remove(Doxygen::entryDBFileName); @@ -11742,11 +11519,6 @@ void generateOutput() * Generate documentation * **************************************************************************/ - if (generateHtml) writeDoxFont(Config_getString(HTML_OUTPUT)); - if (generateLatex) writeDoxFont(Config_getString(LATEX_OUTPUT)); - if (generateDocbook) writeDoxFont(Config_getString(DOCBOOK_OUTPUT)); - if (generateRtf) writeDoxFont(Config_getString(RTF_OUTPUT)); - g_s.begin("Generating style sheet...\n"); //printf("writing style info\n"); g_outputList->writeStyleInfo(0); // write first part @@ -11869,18 +11641,6 @@ void generateOutput() writeTagFile(); g_s.end(); - if (Config_getBool(DOT_CLEANUP)) - { - if (generateHtml) - removeDoxFont(Config_getString(HTML_OUTPUT)); - if (generateRtf) - removeDoxFont(Config_getString(RTF_OUTPUT)); - if (generateLatex) - removeDoxFont(Config_getString(LATEX_OUTPUT)); - if (generateDocbook) - removeDoxFont(Config_getString(DOCBOOK_OUTPUT)); - } - if (Config_getBool(GENERATE_XML)) { g_s.begin("Generating XML output...\n"); @@ -12049,7 +11809,7 @@ void generateOutput() cleanUpDoxygen(); finializeSearchIndexer(); - Doxygen::symbolStorage->close(); +// Doxygen::symbolStorage->close(); QDir thisDir; thisDir.remove(Doxygen::objDBFileName); thisDir.remove(Doxygen::filterDBFileName); @@ -12057,7 +11817,7 @@ void generateOutput() QTextCodec::deleteAllCodecs(); delete Doxygen::symbolMap; delete Doxygen::clangUsrMap; - delete Doxygen::symbolStorage; +// delete Doxygen::symbolStorage; g_successfulRun=TRUE; } diff --git a/src/entry.cpp b/src/entry.cpp index b3693cd..e2a21c6 100644 --- a/src/entry.cpp +++ b/src/entry.cpp @@ -18,11 +18,9 @@ #include #include #include "entry.h" -#include "marshal.h" #include "util.h" #include "section.h" #include "doxygen.h" -#include "filestorage.h" #include "arguments.h" #include "config.h" //------------------------------------------------------------------ @@ -185,6 +183,8 @@ Entry::Entry(const Entry &e) tArgLists = copyArgumentLists(e.tArgLists); } + m_fileDef = e.m_fileDef; + } Entry::~Entry() @@ -281,6 +281,7 @@ void Entry::reset() if (sli) { delete sli; sli=0; } if (typeConstr) { delete typeConstr; typeConstr=0; } //if (mtArgList) { delete mtArgList; mtArgList=0; } + m_fileDef = 0; } @@ -289,31 +290,20 @@ int Entry::getSize() return sizeof(Entry); } -void Entry::createSubtreeIndex(EntryNav *nav,FileStorage *storage,FileDef *fd) +void Entry::setFileDef(FileDef *fd) { - EntryNav *childNav = new EntryNav(nav,this); - nav->addChild(childNav); - childNav->setFileDef(fd); - childNav->saveEntry(this,storage); + m_fileDef = fd; if (m_sublist) { - //printf("saveEntry: %d children\n",node->sublist->count()); QListIterator eli(*m_sublist); Entry *childNode; for (eli.toFirst();(childNode=eli.current());++eli) { - childNode->createSubtreeIndex(childNav,storage,fd); + childNode->setFileDef(fd); } - //m_sublist->setAutoDelete(FALSE); - m_sublist->clear(); } } -void Entry::createNavigationIndex(EntryNav *rootNav,FileStorage *storage,FileDef *fd) -{ - createSubtreeIndex(rootNav,storage,fd); -} - void Entry::addSpecialListItem(const char *listName,int itemId) { if (sli==0) @@ -334,107 +324,3 @@ Entry *Entry::removeSubEntry(Entry *e) } //------------------------------------------------------------------ - - -EntryNav::EntryNav(EntryNav *parent, Entry *e) - : m_parent(parent), m_subList(0), m_section(e->section), m_type(e->type), - m_name(e->name), m_fileDef(0), m_lang(e->lang), - m_info(0), m_offset(-1), m_noLoad(FALSE) -{ - if (e->tagInfo) - { - m_tagInfo = new TagInfo; - m_tagInfo->tagName = e->tagInfo->tagName; - m_tagInfo->fileName = e->tagInfo->fileName; - m_tagInfo->anchor = e->tagInfo->anchor; - if (e->tagInfo) - { - //printf("tagInfo %p: tagName=%s fileName=%s anchor=%s\n", - // e->tagInfo, - // e->tagInfo->tagName.data(), - // e->tagInfo->fileName.data(), - // e->tagInfo->anchor.data()); - } - } - else - { - m_tagInfo = 0; - } -} - -EntryNav::~EntryNav() -{ - delete m_subList; - delete m_info; - delete m_tagInfo; -} - -void EntryNav::addChild(EntryNav *e) -{ - if (m_subList==0) - { - m_subList = new QList; - m_subList->setAutoDelete(TRUE); - } - m_subList->append(e); -} - -bool EntryNav::loadEntry(FileStorage *storage) -{ - if (m_noLoad) - { - return TRUE; - } - if (m_offset==-1) - { - //printf("offset not set!\n"); - return FALSE; - } - //delete m_info; - //printf("EntryNav::loadEntry: new entry %p: %s\n",m_info,m_name.data()); - //m_info->tagInfo = m_tagInfo; - //if (m_parent) - //{ - // m_info->parent = m_parent->m_info; - //} - //m_info->parent = 0; - //printf("load entry: seek to %llx\n",m_offset); - if (!storage->seek(m_offset)) - { - //printf("seek failed!\n"); - return FALSE; - } - if (m_info) delete m_info; - m_info = unmarshalEntry(storage); - m_info->name = m_name; - m_info->type = m_type; - m_info->section = m_section; - return TRUE; -} - -bool EntryNav::saveEntry(Entry *e,FileStorage *storage) -{ - m_offset = storage->pos(); - //printf("EntryNav::saveEntry offset=%llx\n",m_offset); - marshalEntry(storage,e); - return TRUE; -} - -void EntryNav::releaseEntry() -{ - if (!m_noLoad) - { - //printf("EntryNav::releaseEntry %p\n",m_info); - delete m_info; - m_info=0; - } -} - -void EntryNav::setEntry(Entry *e) -{ - delete m_info; - m_info = e; - //printf("EntryNav::setEntry %p\n",e); - m_noLoad=TRUE; -} - diff --git a/src/entry.h b/src/entry.h index ad91d0d..8810c18 100644 --- a/src/entry.h +++ b/src/entry.h @@ -25,7 +25,6 @@ struct SectionInfo; class QFile; -class EntryNav; class FileDef; class FileStorage; class StorageIntf; @@ -199,7 +198,6 @@ class Entry int getSize(); void addSpecialListItem(const char *listName,int index); - void createNavigationIndex(EntryNav *rootNav,FileStorage *storage,FileDef *fd); // while parsing a file these function can be used to navigate/build the tree void setParent(Entry *parent) { m_parent = parent; } @@ -226,11 +224,9 @@ class Entry */ void reset(); - /*! Serialize this entry to a persistent storage stream. */ - void marshall(StorageIntf *); - - /*! Reinitialize this entry from a persistent storage stream. */ - void unmarshall(StorageIntf *); + void changeSection(int sec) { section = sec; } + void setFileDef(FileDef *fd); + FileDef *fileDef() const { return m_fileDef; } public: @@ -326,64 +322,13 @@ class Entry } private: - void createSubtreeIndex(EntryNav *nav,FileStorage *storage,FileDef *fd); Entry *m_parent; //!< parent node in the tree QList *m_sublist; //!< entries that are children of this one Entry &operator=(const Entry &); + FileDef *m_fileDef; }; -/** Wrapper for a node in the Entry tree. - * - * Allows navigating through the Entry tree and load and storing Entry - * objects persistently to disk. - */ -class EntryNav -{ - public: - EntryNav(EntryNav *parent,Entry *e); - ~EntryNav(); - void addChild(EntryNav *); - bool loadEntry(FileStorage *storage); - bool saveEntry(Entry *e,FileStorage *storage); - void setEntry(Entry *e); - void releaseEntry(); - void changeSection(int section) { m_section = section; } - void setFileDef(FileDef *fd) { m_fileDef = fd; } - - Entry *entry() const { return m_info; } - int section() const { return m_section; } - SrcLangExt lang() const { return m_lang; } - const QCString &type() const { return m_type; } - const QCString &name() const { return m_name; } - TagInfo *tagInfo() const { return m_tagInfo; } - const QList *children() const { return m_subList; } - EntryNav *parent() const { return m_parent; } - FileDef *fileDef() const { return m_fileDef; } - - private: - - // navigation - EntryNav *m_parent; //!< parent node in the tree - QList *m_subList; //!< entries that are children of this one - - // identification - int m_section; //!< entry type (see Sections); - QCString m_type; //!< member type - QCString m_name; //!< member name - TagInfo *m_tagInfo; //!< tag file info - FileDef *m_fileDef; - SrcLangExt m_lang; //!< programming language in which this entry was found - - Entry *m_info; - int64 m_offset; - bool m_noLoad; -}; - - typedef QList EntryList; typedef QListIterator EntryListIterator; -typedef QList EntryNavList; -typedef QListIterator EntryNavListIterator; - #endif diff --git a/src/filestorage.h b/src/filestorage.h deleted file mode 100644 index 5c2a92d..0000000 --- a/src/filestorage.h +++ /dev/null @@ -1,135 +0,0 @@ -/****************************************************************************** - * - * Copyright (C) 1997-2015 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * Documents produced by Doxygen are derivative works derived from the - * input used in their production; they are not affected by this license. - * - */ - -#include -#include -#include "store.h" - - -#ifndef FILESTORAGE_H -#define FILESTORAGE_H - -/** @brief Store implementation based on a file. - Writing is linear, after that the file is re-opened for reading. - Reading is random (seek+read). - */ -class FileStorage : public StorageIntf -{ - public: - FileStorage() : m_readOnly(FALSE) {} - FileStorage( const QString &name) : - m_readOnly(FALSE) { m_file.setName(name); } - int read(char *buf,uint size) { return m_file.readBlock(buf,size); } - int write(const char *buf,uint size) { assert(m_readOnly==FALSE); return m_file.writeBlock(buf,size); } - bool open( int m ) { m_readOnly = m==IO_ReadOnly; return m_file.open(m); } - bool seek(int64 pos) { return m_file.seek(pos); } - int64 pos() const { return m_file.pos(); } - void close() { m_file.close(); } - void setName( const char *name ) { m_file.setName(name); } - private: - bool m_readOnly; - QFile m_file; -}; - -#if 0 // experimental version using mmap after opening the file as read only. -#include -#include -#include -#include -#include -#include - -class FileStorage : public StorageIntf -{ - public: - FileStorage() : m_readOnly(FALSE), m_map(0), m_off(0), m_size(0) {} - FileStorage( const QString &name) : - m_readOnly(FALSE) { m_file.setName(name); } - void setName( const char *name ) { m_file.setName(name); } - bool open( int m ) - { - if (m==IO_ReadOnly) - { - m_readOnly=TRUE; - QString name = m_file.name(); - m_file.close(); - m_fd = ::open(name.data(),O_RDONLY); - struct stat stat; - fstat(m_fd,&stat); - m_size = stat.st_size; - m_map = mmap(NULL,m_size,PROT_READ,MAP_SHARED,m_fd,0); - if (m_map==MAP_FAILED) perror("mmap failed"); - assert(m_map!=MAP_FAILED); - m_off = 0; - return TRUE; - } - else - { - m_readOnly = FALSE; - return m_file.open(m); - } - } - int write(const char *buf,uint size) - { - assert(m_map==0); - return m_file.writeBlock(buf,size); - } - int read(char *buf,uint size) - { - assert(m_map!=0); - memcpy(buf,((char *)m_map)+m_off,size); - m_off+=size; - return size; - } - bool seek(int64 pos) - { - m_off=pos; - return TRUE; - } - int64 pos() const - { - if (m_readOnly) - { - return m_off; - } - else - { - return m_file.pos(); - } - } - void close() - { - if (m_readOnly) - { - munmap(m_map,m_size); - ::close(m_fd); - exit(1); - } - else - { - m_file.close(); - } - } - private: - bool m_readOnly; - QFile m_file; - int m_fd; - void *m_map; - off_t m_off; - off_t m_size; -}; -#endif - -#endif diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp index 2be7c5f..513d9a4 100644 --- a/src/htmlgen.cpp +++ b/src/htmlgen.cpp @@ -25,7 +25,6 @@ #include "config.h" #include "util.h" #include "doxygen.h" -#include "logos.h" #include "diagram.h" #include "version.h" #include "dot.h" diff --git a/src/logos.cpp b/src/logos.cpp deleted file mode 100644 index e9e0905..0000000 --- a/src/logos.cpp +++ /dev/null @@ -1,1985 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2015 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * Documents produced by Doxygen are derivative works derived from the - * input used in their production; they are not affected by this license. - * - */ - -#include - -#include -#include - -// Stripped version of FreeSans.ttf part of FreeFonts package, -// see http://www.nongnu.org/freefont for more info -unsigned char FreeSans_ttf[] = { - 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x80, 0x00, 0x03, 0x00, 0x70, - 0x47, 0x44, 0x45, 0x46, 0x01, 0x0a, 0x00, 0xe3, 0x00, 0x00, 0x48, 0x28, - 0x00, 0x00, 0x00, 0x2a, 0x47, 0x50, 0x4f, 0x53, 0x9d, 0x1a, 0x99, 0x8a, - 0x00, 0x00, 0x49, 0x50, 0x00, 0x00, 0x10, 0x42, 0x47, 0x53, 0x55, 0x42, - 0xa8, 0x85, 0x92, 0x0c, 0x00, 0x00, 0x48, 0x54, 0x00, 0x00, 0x00, 0xfc, - 0x4f, 0x53, 0x2f, 0x32, 0x67, 0x3f, 0xcf, 0x10, 0x00, 0x00, 0x01, 0x78, - 0x00, 0x00, 0x00, 0x56, 0x63, 0x6d, 0x61, 0x70, 0xe6, 0xd7, 0x91, 0x3d, - 0x00, 0x00, 0x04, 0xec, 0x00, 0x00, 0x01, 0x8a, 0x63, 0x76, 0x74, 0x20, - 0x00, 0x21, 0x02, 0x79, 0x00, 0x00, 0x06, 0x78, 0x00, 0x00, 0x00, 0x04, - 0x67, 0x61, 0x73, 0x70, 0xff, 0xff, 0x00, 0x03, 0x00, 0x00, 0x48, 0x20, - 0x00, 0x00, 0x00, 0x08, 0x67, 0x6c, 0x79, 0x66, 0xb3, 0x58, 0xaf, 0x41, - 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x37, 0xca, 0x68, 0x65, 0x61, 0x64, - 0xe7, 0x18, 0xbe, 0xac, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x36, - 0x68, 0x68, 0x65, 0x61, 0x10, 0xbb, 0x06, 0xf2, 0x00, 0x00, 0x01, 0x34, - 0x00, 0x00, 0x00, 0x24, 0x68, 0x6d, 0x74, 0x78, 0x55, 0x0d, 0x49, 0xe2, - 0x00, 0x00, 0x01, 0xd0, 0x00, 0x00, 0x03, 0x1a, 0x6c, 0x6f, 0x63, 0x61, - 0x1f, 0xdd, 0x2c, 0xb6, 0x00, 0x00, 0x06, 0x7c, 0x00, 0x00, 0x01, 0x94, - 0x6d, 0x61, 0x78, 0x70, 0x01, 0x16, 0x00, 0xb3, 0x00, 0x00, 0x01, 0x58, - 0x00, 0x00, 0x00, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x85, 0x1f, 0xf3, 0x73, - 0x00, 0x00, 0x3f, 0xdc, 0x00, 0x00, 0x06, 0x69, 0x70, 0x6f, 0x73, 0x74, - 0x46, 0xf5, 0x10, 0xd8, 0x00, 0x00, 0x46, 0x48, 0x00, 0x00, 0x01, 0xd6, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0xc2, 0x8f, 0x00, 0x8a, 0xba, 0xad, - 0x5f, 0x0f, 0x3c, 0xf5, 0x00, 0x0b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc0, 0x44, 0xd8, 0x89, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x44, 0xd8, 0x89, - 0xff, 0xd3, 0xfe, 0x3d, 0x07, 0x9c, 0x07, 0xd1, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x07, 0xd1, 0xfe, 0x3d, 0x01, 0x78, 0x08, 0x1e, 0xff, 0xd3, 0xff, 0xd2, - 0x07, 0x9c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x00, 0x01, 0x00, 0x00, - 0x00, 0xc9, 0x00, 0x66, 0x00, 0x05, 0x00, 0x49, 0x00, 0x04, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x03, 0x87, 0x01, 0x90, 0x00, 0x05, - 0x00, 0x00, 0x05, 0x33, 0x05, 0x99, 0x00, 0x00, 0x03, 0xd7, 0x05, 0x33, - 0x05, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x02, 0x12, 0x00, 0x00, - 0x02, 0x0b, 0x05, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x00, 0x00, - 0x00, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x50, 0x66, 0x45, 0x64, 0x00, 0x40, 0x00, 0x0d, 0x02, 0xdc, - 0x06, 0x66, 0xfe, 0x66, 0x00, 0x00, 0x07, 0xd1, 0x01, 0xc3, 0x80, 0x02, - 0x00, 0xbf, 0xdf, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x89, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0xb2, 0x00, 0x00, - 0x02, 0x39, 0x00, 0x00, 0x02, 0x39, 0x00, 0xfe, 0x02, 0xd7, 0x00, 0x6a, - 0x04, 0x72, 0x00, 0x1d, 0x04, 0x72, 0x00, 0x44, 0x07, 0x1c, 0x00, 0x3b, - 0x05, 0x56, 0x00, 0x6a, 0x01, 0x87, 0x00, 0x62, 0x02, 0xa9, 0x00, 0x96, - 0x02, 0xa9, 0x00, 0x4e, 0x03, 0x1c, 0x00, 0x52, 0x04, 0xac, 0x00, 0x66, - 0x02, 0x39, 0x00, 0xb2, 0x02, 0xa9, 0x00, 0x5e, 0x02, 0x39, 0x00, 0xb2, - 0x02, 0x39, 0xff, 0xf0, 0x04, 0x72, 0x00, 0x58, 0x04, 0x72, 0x00, 0xd1, - 0x04, 0x72, 0x00, 0x46, 0x04, 0x72, 0x00, 0x42, 0x04, 0x72, 0x00, 0x39, - 0x04, 0x72, 0x00, 0x48, 0x04, 0x72, 0x00, 0x58, 0x04, 0x72, 0x00, 0x5e, - 0x04, 0x72, 0x00, 0x4c, 0x04, 0x72, 0x00, 0x4e, 0x02, 0x39, 0x00, 0xe1, - 0x02, 0x39, 0x00, 0xe1, 0x04, 0xac, 0x00, 0x5c, 0x04, 0xac, 0x00, 0x66, - 0x04, 0xac, 0x00, 0x66, 0x04, 0x72, 0x00, 0x9e, 0x08, 0x1e, 0x00, 0x46, - 0x05, 0x56, 0x00, 0x23, 0x05, 0x56, 0x00, 0xa2, 0x05, 0xc6, 0x00, 0x62, - 0x05, 0xc6, 0x00, 0xb6, 0x05, 0x56, 0x00, 0xb8, 0x04, 0xe3, 0x00, 0xb8, - 0x06, 0x39, 0x00, 0x5a, 0x05, 0xc6, 0x00, 0xaa, 0x02, 0x39, 0x00, 0xcd, - 0x04, 0x00, 0x00, 0x23, 0x05, 0x56, 0x00, 0xa2, 0x04, 0x72, 0x00, 0xa4, - 0x06, 0xa9, 0x00, 0x9a, 0x05, 0xc6, 0x00, 0x9c, 0x06, 0x39, 0x00, 0x4e, - 0x05, 0x56, 0x00, 0xba, 0x06, 0x39, 0x00, 0x4e, 0x05, 0xc6, 0x00, 0xbe, - 0x05, 0x56, 0x00, 0x62, 0x04, 0xe3, 0x00, 0x2b, 0x05, 0xc6, 0x00, 0xae, - 0x05, 0x56, 0x00, 0x3d, 0x07, 0x8d, 0x00, 0x2d, 0x05, 0x56, 0x00, 0x2d, - 0x05, 0x56, 0x00, 0x1b, 0x04, 0xe3, 0x00, 0x39, 0x02, 0x39, 0x00, 0x83, - 0x02, 0x39, 0xff, 0xf0, 0x02, 0x39, 0x00, 0x2f, 0x03, 0xc0, 0x00, 0x5a, - 0x04, 0x72, 0xff, 0xd3, 0x02, 0xa9, 0x00, 0x2d, 0x04, 0x72, 0x00, 0x56, - 0x04, 0x72, 0x00, 0x6f, 0x04, 0x00, 0x00, 0x3f, 0x04, 0x72, 0x00, 0x35, - 0x04, 0x72, 0x00, 0x52, 0x02, 0x39, 0x00, 0x25, 0x04, 0x72, 0x00, 0x3b, - 0x04, 0x72, 0x00, 0x8f, 0x01, 0xc6, 0x00, 0x87, 0x01, 0xc6, 0xff, 0xdb, - 0x04, 0x00, 0x00, 0x77, 0x01, 0xc6, 0x00, 0x8b, 0x06, 0xa9, 0x00, 0x8f, - 0x04, 0x72, 0x00, 0x8f, 0x04, 0x72, 0x00, 0x4a, 0x04, 0x72, 0x00, 0x6f, - 0x04, 0x72, 0x00, 0x35, 0x02, 0xa9, 0x00, 0x8d, 0x04, 0x00, 0x00, 0x46, - 0x02, 0x39, 0x00, 0x1d, 0x04, 0x72, 0x00, 0x85, 0x04, 0x00, 0x00, 0x14, - 0x05, 0xc6, 0x00, 0x0c, 0x04, 0x00, 0x00, 0x23, 0x04, 0x00, 0x00, 0x29, - 0x04, 0x00, 0x00, 0x3f, 0x02, 0xac, 0x00, 0x58, 0x02, 0x14, 0x00, 0xcd, - 0x02, 0xac, 0x00, 0x3b, 0x04, 0xac, 0x00, 0x9a, 0x02, 0x39, 0x00, 0x00, - 0x02, 0x39, 0x00, 0xfa, 0x04, 0x72, 0x00, 0x6a, 0x04, 0x72, 0x00, 0x35, - 0x04, 0x72, 0x00, 0x89, 0x04, 0x72, 0x00, 0x17, 0x02, 0x14, 0x00, 0xcd, - 0x04, 0x72, 0x00, 0x58, 0x02, 0xa9, 0x00, 0x3d, 0x05, 0xe5, 0xff, 0xe5, - 0x02, 0xf5, 0x00, 0x4c, 0x04, 0x72, 0x00, 0xc9, 0x04, 0xac, 0x00, 0x52, - 0x02, 0xa9, 0x00, 0x5e, 0x05, 0xe5, 0xff, 0xe5, 0x02, 0xa9, 0x00, 0x39, - 0x04, 0xd9, 0x01, 0x35, 0x04, 0xac, 0x00, 0x66, 0x02, 0xce, 0x00, 0x27, - 0x02, 0xce, 0x00, 0x21, 0x02, 0xa9, 0x00, 0xbc, 0x04, 0x72, 0x00, 0x85, - 0x04, 0x4b, 0x00, 0x62, 0x02, 0x39, 0x00, 0xb2, 0x02, 0xa9, 0x00, 0x50, - 0x02, 0xce, 0x00, 0x7d, 0x02, 0xeb, 0x00, 0x52, 0x04, 0x72, 0x00, 0xc9, - 0x06, 0xf3, 0x00, 0x7d, 0x06, 0xf3, 0x00, 0x7d, 0x06, 0xf3, 0x00, 0x21, - 0x04, 0x72, 0x00, 0xc5, 0x05, 0x56, 0x00, 0x23, 0x05, 0x56, 0x00, 0x23, - 0x05, 0x56, 0x00, 0x23, 0x05, 0x56, 0x00, 0x23, 0x05, 0x56, 0x00, 0x23, - 0x05, 0x56, 0x00, 0x23, 0x08, 0x00, 0x00, 0x17, 0x05, 0xc6, 0x00, 0x62, - 0x05, 0x56, 0x00, 0xb8, 0x05, 0x56, 0x00, 0xb8, 0x05, 0x56, 0x00, 0xb8, - 0x05, 0x56, 0x00, 0xb8, 0x02, 0x39, 0x00, 0xcd, 0x02, 0x39, 0x00, 0xcd, - 0x02, 0x39, 0x00, 0xcd, 0x02, 0x39, 0x00, 0x1c, 0x05, 0xc6, 0x00, 0x29, - 0x05, 0xc6, 0x00, 0x9c, 0x06, 0x39, 0x00, 0x4e, 0x06, 0x39, 0x00, 0x4e, - 0x06, 0x39, 0x00, 0x4e, 0x06, 0x39, 0x00, 0x4e, 0x06, 0x39, 0x00, 0x4e, - 0x04, 0xac, 0x00, 0xc3, 0x06, 0x39, 0x00, 0x3d, 0x05, 0xc6, 0x00, 0xae, - 0x05, 0xc6, 0x00, 0xae, 0x05, 0xc6, 0x00, 0xae, 0x05, 0xc6, 0x00, 0xae, - 0x05, 0x56, 0x00, 0x1b, 0x05, 0x53, 0x00, 0xba, 0x04, 0xe3, 0x00, 0x89, - 0x04, 0x72, 0x00, 0x56, 0x04, 0x72, 0x00, 0x56, 0x04, 0x72, 0x00, 0x56, - 0x04, 0x72, 0x00, 0x56, 0x04, 0x72, 0x00, 0x56, 0x04, 0x72, 0x00, 0x56, - 0x07, 0x1c, 0x00, 0x46, 0x04, 0x00, 0x00, 0x3f, 0x04, 0x72, 0x00, 0x52, - 0x04, 0x72, 0x00, 0x52, 0x04, 0x72, 0x00, 0x52, 0x04, 0x72, 0x00, 0x52, - 0x02, 0x39, 0x00, 0x00, 0x02, 0x39, 0x00, 0x00, 0x02, 0x39, 0x00, 0x00, - 0x02, 0x39, 0x00, 0x06, 0x04, 0x72, 0x00, 0x4a, 0x04, 0x72, 0x00, 0x8f, - 0x04, 0x72, 0x00, 0x4a, 0x04, 0x72, 0x00, 0x4a, 0x04, 0x72, 0x00, 0x4a, - 0x04, 0x72, 0x00, 0x4a, 0x04, 0x72, 0x00, 0x4a, 0x04, 0xac, 0x00, 0x66, - 0x04, 0xe3, 0x00, 0x25, 0x04, 0x72, 0x00, 0x85, 0x04, 0x72, 0x00, 0x85, - 0x04, 0x72, 0x00, 0x85, 0x04, 0x72, 0x00, 0x85, 0x04, 0x00, 0x00, 0x29, - 0x04, 0x70, 0x00, 0x6f, 0x04, 0x00, 0x00, 0x29, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1c, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x03, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x1c, 0x00, 0x04, 0x00, 0x68, 0x00, 0x00, 0x00, 0x16, - 0x00, 0x10, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0e, - 0x00, 0x7e, 0x00, 0xff, 0x01, 0x31, 0x02, 0xc6, 0x02, 0xcb, 0x02, 0xda, - 0x02, 0xdc, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0e, - 0x00, 0x20, 0x00, 0xa0, 0x01, 0x31, 0x02, 0xc6, 0x02, 0xca, 0x02, 0xda, - 0x02, 0xdc, 0xff, 0xff, 0x00, 0x01, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xe4, - 0xff, 0xc3, 0xff, 0x92, 0xfd, 0xfe, 0xfd, 0xfb, 0xfd, 0xed, 0xfd, 0xec, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x06, 0x00, 0x00, 0x01, 0x93, 0xb3, 0x00, 0x00, 0x00, - 0x00, 0xa0, 0xc0, 0x02, 0x00, 0xa1, 0xc1, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x7f, 0x7c, 0x81, 0x76, 0x75, 0x69, 0x70, 0x9a, - 0x00, 0x00, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, - 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, - 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, - 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, - 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, - 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, - 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, - 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, - 0x62, 0x00, 0x87, 0x88, 0x8a, 0x8c, 0x94, 0x99, 0x9f, 0xa4, 0xa3, 0xa5, - 0xa7, 0xa6, 0xa8, 0xaa, 0xac, 0xab, 0xad, 0xae, 0xb0, 0xaf, 0xb1, 0xb2, - 0xb4, 0xb6, 0xb5, 0xb7, 0xb9, 0xb8, 0xbd, 0xbc, 0xbe, 0xbf, 0x00, 0x73, - 0x65, 0x66, 0x6a, 0x00, 0x79, 0xa2, 0x71, 0x6c, 0x00, 0x77, 0x6b, 0x00, - 0x89, 0x9b, 0x00, 0x74, 0x00, 0x00, 0x68, 0x78, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x6d, 0x7d, 0x00, 0xa9, 0xbb, 0x82, 0x64, 0x6f, 0x00, 0x00, 0x00, - 0x00, 0x6e, 0x7e, 0x00, 0x63, 0x83, 0x86, 0x98, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xba, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x85, 0x8d, 0x84, 0x8e, 0x8b, - 0x90, 0x91, 0x92, 0x8f, 0x96, 0x97, 0x00, 0x95, 0x9d, 0x9e, 0x9c, 0x00, - 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x21, 0x02, 0x79, 0x00, 0x00, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, - 0x00, 0x16, 0x00, 0x16, 0x00, 0x2e, 0x00, 0x48, 0x00, 0x7f, 0x00, 0xe5, - 0x01, 0x5d, 0x01, 0xc9, 0x01, 0xd9, 0x01, 0xfd, 0x02, 0x20, 0x02, 0x3e, - 0x02, 0x56, 0x02, 0x6c, 0x02, 0x79, 0x02, 0x85, 0x02, 0x93, 0x02, 0xc3, - 0x02, 0xda, 0x03, 0x16, 0x03, 0x63, 0x03, 0x80, 0x03, 0xbe, 0x04, 0x0c, - 0x04, 0x2a, 0x04, 0x84, 0x04, 0xd4, 0x04, 0xe6, 0x05, 0x03, 0x05, 0x17, - 0x05, 0x2b, 0x05, 0x3f, 0x05, 0x7d, 0x06, 0x10, 0x06, 0x2c, 0x06, 0x6d, - 0x06, 0xaa, 0x06, 0xd3, 0x06, 0xec, 0x07, 0x02, 0x07, 0x50, 0x07, 0x68, - 0x07, 0x76, 0x07, 0x99, 0x07, 0xb5, 0x07, 0xc6, 0x07, 0xe2, 0x07, 0xfa, - 0x08, 0x47, 0x08, 0x72, 0x08, 0xc7, 0x09, 0x08, 0x09, 0x57, 0x09, 0x6a, - 0x09, 0x8f, 0x09, 0xa2, 0x09, 0xc1, 0x09, 0xe0, 0x09, 0xf7, 0x0a, 0x0e, - 0x0a, 0x20, 0x0a, 0x2f, 0x0a, 0x41, 0x0a, 0x54, 0x0a, 0x61, 0x0a, 0x70, - 0x0a, 0xd1, 0x0b, 0x0b, 0x0b, 0x3e, 0x0b, 0x79, 0x0b, 0xba, 0x0b, 0xdc, - 0x0c, 0x34, 0x0c, 0x5b, 0x0c, 0x6f, 0x0c, 0x91, 0x0c, 0xae, 0x0c, 0xbc, - 0x0c, 0xfb, 0x0d, 0x21, 0x0d, 0x55, 0x0d, 0x8c, 0x0d, 0xc6, 0x0d, 0xe3, - 0x0e, 0x2f, 0x0e, 0x55, 0x0e, 0x7b, 0x0e, 0x8e, 0x0e, 0xaa, 0x0e, 0xc9, - 0x0e, 0xec, 0x0f, 0x03, 0x0f, 0x43, 0x0f, 0x50, 0x0f, 0x8f, 0x0f, 0xc0, - 0x0f, 0xc8, 0x0f, 0xd2, 0x10, 0x13, 0x10, 0x73, 0x10, 0xbe, 0x10, 0xe8, - 0x10, 0xfb, 0x11, 0x77, 0x11, 0x89, 0x12, 0x03, 0x12, 0x5c, 0x12, 0x78, - 0x12, 0x88, 0x12, 0x95, 0x13, 0x17, 0x13, 0x24, 0x13, 0x55, 0x13, 0x74, - 0x13, 0xb1, 0x13, 0xf8, 0x14, 0x06, 0x14, 0x38, 0x14, 0x5a, 0x14, 0x68, - 0x14, 0x99, 0x14, 0xb1, 0x14, 0xea, 0x15, 0x07, 0x15, 0x3d, 0x15, 0x94, - 0x15, 0xf9, 0x16, 0x03, 0x16, 0x0f, 0x16, 0x1b, 0x16, 0x27, 0x16, 0x33, - 0x16, 0x3f, 0x16, 0x4b, 0x16, 0x72, 0x16, 0xdc, 0x16, 0xe8, 0x16, 0xf4, - 0x17, 0x00, 0x17, 0x0c, 0x17, 0x18, 0x17, 0x24, 0x17, 0x30, 0x17, 0x3c, - 0x17, 0x70, 0x17, 0x7c, 0x17, 0x88, 0x17, 0x94, 0x17, 0xa0, 0x17, 0xac, - 0x17, 0xb8, 0x17, 0xd9, 0x18, 0x2e, 0x18, 0x3a, 0x18, 0x46, 0x18, 0x52, - 0x18, 0x5e, 0x18, 0x6a, 0x18, 0x95, 0x18, 0xdf, 0x18, 0xeb, 0x18, 0xf7, - 0x19, 0x03, 0x19, 0x0f, 0x19, 0x1b, 0x19, 0x27, 0x19, 0xa9, 0x1a, 0x05, - 0x1a, 0x11, 0x1a, 0x1d, 0x1a, 0x29, 0x1a, 0x35, 0x1a, 0x40, 0x1a, 0x4b, - 0x1a, 0x56, 0x1a, 0x61, 0x1a, 0xb5, 0x1a, 0xc1, 0x1a, 0xcd, 0x1a, 0xd9, - 0x1a, 0xe5, 0x1a, 0xf1, 0x1a, 0xfd, 0x1b, 0x17, 0x1b, 0x60, 0x1b, 0x6c, - 0x1b, 0x78, 0x1b, 0x84, 0x1b, 0x90, 0x1b, 0x9c, 0x1b, 0xd7, 0x1b, 0xe3, - 0x1b, 0xe3, 0x1b, 0xe3, 0x1b, 0xe3, 0x1b, 0xe3, 0x1b, 0xe3, 0x1b, 0xe3, - 0x00, 0x02, 0x00, 0x89, 0x00, 0x00, 0x03, 0xbe, 0x07, 0xd1, 0x00, 0x03, - 0x00, 0x07, 0x00, 0x00, 0x01, 0x11, 0x21, 0x11, 0x05, 0x21, 0x11, 0x21, - 0x03, 0xbe, 0xfc, 0xcb, 0x02, 0xac, 0xfd, 0xdd, 0x02, 0x23, 0x07, 0xd1, - 0xf8, 0x2f, 0x07, 0xd1, 0x89, 0xf9, 0x41, 0x00, 0x00, 0x02, 0x00, 0xfe, - 0x00, 0x00, 0x01, 0xaa, 0x05, 0xd5, 0x00, 0x05, 0x00, 0x09, 0x00, 0x00, - 0x01, 0x11, 0x03, 0x23, 0x03, 0x11, 0x13, 0x15, 0x23, 0x35, 0x01, 0xaa, - 0x2d, 0x50, 0x2d, 0xaa, 0xac, 0x05, 0xd5, 0xfd, 0x4c, 0xfe, 0x37, 0x01, - 0xc9, 0x02, 0xb4, 0xfb, 0x00, 0xd5, 0xd5, 0x00, 0x00, 0x02, 0x00, 0x6a, - 0x03, 0xb6, 0x02, 0x71, 0x05, 0xac, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x00, - 0x13, 0x33, 0x15, 0x03, 0x23, 0x03, 0x25, 0x33, 0x15, 0x03, 0x23, 0x03, - 0x6a, 0xbf, 0x37, 0x50, 0x38, 0x01, 0x48, 0xbf, 0x38, 0x50, 0x37, 0x05, - 0xac, 0xe3, 0xfe, 0xed, 0x01, 0x13, 0xe3, 0xe3, 0xfe, 0xed, 0x01, 0x13, - 0x00, 0x02, 0x00, 0x1d, 0xff, 0xd7, 0x04, 0x56, 0x05, 0x93, 0x00, 0x1b, - 0x00, 0x1f, 0x00, 0x00, 0x01, 0x03, 0x33, 0x15, 0x23, 0x03, 0x33, 0x15, - 0x23, 0x03, 0x23, 0x13, 0x23, 0x03, 0x23, 0x13, 0x23, 0x35, 0x33, 0x13, - 0x23, 0x35, 0x33, 0x13, 0x33, 0x03, 0x21, 0x13, 0x03, 0x23, 0x03, 0x21, - 0x03, 0xe1, 0x49, 0xbe, 0xd9, 0x40, 0xd7, 0xef, 0x50, 0x9c, 0x4e, 0xfe, - 0x50, 0x9b, 0x4e, 0xcf, 0xe9, 0x40, 0xde, 0xf8, 0x4a, 0x9c, 0x4a, 0x01, - 0x00, 0x48, 0x63, 0xfe, 0x41, 0x01, 0x00, 0x05, 0x93, 0xfe, 0x6f, 0x8b, - 0xfe, 0x9b, 0x8b, 0xfe, 0x50, 0x01, 0xb0, 0xfe, 0x50, 0x01, 0xb0, 0x8b, - 0x01, 0x65, 0x8b, 0x01, 0x91, 0xfe, 0x6f, 0x01, 0x91, 0xfd, 0xe4, 0xfe, - 0x9b, 0x00, 0x00, 0x03, 0x00, 0x44, 0xfe, 0xfe, 0x04, 0x25, 0x06, 0x29, - 0x00, 0x2f, 0x00, 0x38, 0x00, 0x41, 0x00, 0x00, 0x01, 0x14, 0x07, 0x06, - 0x07, 0x15, 0x23, 0x35, 0x24, 0x27, 0x26, 0x3d, 0x01, 0x33, 0x16, 0x17, - 0x16, 0x17, 0x16, 0x17, 0x11, 0x26, 0x27, 0x26, 0x27, 0x26, 0x35, 0x34, - 0x37, 0x36, 0x37, 0x35, 0x33, 0x15, 0x16, 0x17, 0x16, 0x15, 0x23, 0x26, - 0x27, 0x26, 0x27, 0x11, 0x17, 0x16, 0x17, 0x16, 0x01, 0x11, 0x06, 0x07, - 0x06, 0x15, 0x14, 0x17, 0x16, 0x13, 0x36, 0x37, 0x36, 0x35, 0x34, 0x27, - 0x26, 0x27, 0x04, 0x25, 0xb0, 0x6a, 0xa1, 0x78, 0xfe, 0xec, 0x66, 0x34, - 0xa1, 0x0b, 0x12, 0x2e, 0x9b, 0x13, 0x14, 0xab, 0x3e, 0x0c, 0x0d, 0x92, - 0xcc, 0x54, 0x74, 0x78, 0xdb, 0x69, 0x4a, 0xa2, 0x02, 0x59, 0x3c, 0x55, - 0x8a, 0xde, 0x3c, 0x17, 0xfd, 0xcd, 0xa9, 0x33, 0x12, 0xbe, 0x16, 0x92, - 0xbd, 0x3e, 0x18, 0x41, 0x3c, 0x96, 0x01, 0x8f, 0xf9, 0x74, 0x46, 0x0b, - 0xd3, 0xd3, 0x12, 0xbd, 0x61, 0x86, 0x23, 0x77, 0x31, 0x7d, 0x20, 0x04, - 0x03, 0x02, 0x2d, 0x33, 0x27, 0x08, 0x09, 0x68, 0xc3, 0xf8, 0x68, 0x2b, - 0x0e, 0x6f, 0x6f, 0x10, 0x8f, 0x64, 0x90, 0x85, 0x49, 0x32, 0x04, 0xfe, - 0x02, 0x27, 0x49, 0xa1, 0x3f, 0x01, 0x60, 0x01, 0xec, 0x17, 0x7a, 0x2d, - 0x36, 0xa6, 0x43, 0x08, 0xfd, 0x1a, 0x17, 0x89, 0x36, 0x43, 0x69, 0x39, - 0x33, 0x2d, 0x00, 0x05, 0x00, 0x3b, 0xff, 0xd7, 0x06, 0xdf, 0x05, 0xac, - 0x00, 0x15, 0x00, 0x25, 0x00, 0x29, 0x00, 0x3f, 0x00, 0x4f, 0x00, 0x00, - 0x01, 0x32, 0x17, 0x16, 0x17, 0x14, 0x07, 0x06, 0x07, 0x06, 0x23, 0x22, - 0x27, 0x26, 0x27, 0x34, 0x35, 0x34, 0x37, 0x36, 0x37, 0x36, 0x17, 0x22, - 0x07, 0x06, 0x15, 0x14, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x35, 0x34, - 0x27, 0x26, 0x25, 0x33, 0x01, 0x23, 0x01, 0x32, 0x17, 0x16, 0x17, 0x14, - 0x07, 0x06, 0x07, 0x06, 0x23, 0x22, 0x27, 0x26, 0x27, 0x34, 0x35, 0x34, - 0x37, 0x36, 0x37, 0x36, 0x17, 0x22, 0x07, 0x06, 0x15, 0x14, 0x17, 0x16, - 0x33, 0x32, 0x37, 0x36, 0x35, 0x34, 0x27, 0x26, 0x01, 0x98, 0x91, 0x65, - 0x65, 0x03, 0x60, 0x60, 0x87, 0x0b, 0x0a, 0x8d, 0x66, 0x65, 0x07, 0x62, - 0x60, 0x88, 0x0a, 0x09, 0x5e, 0x3e, 0x33, 0x48, 0x3b, 0x4e, 0x5c, 0x3f, - 0x33, 0x48, 0x3a, 0x02, 0xf9, 0x87, 0xfc, 0xd7, 0x87, 0x03, 0xcb, 0x93, - 0x65, 0x64, 0x02, 0x61, 0x5f, 0x85, 0x0b, 0x0c, 0x8c, 0x65, 0x65, 0x08, - 0x61, 0x60, 0x88, 0x0a, 0x09, 0x5e, 0x3e, 0x33, 0x48, 0x3b, 0x4e, 0x5d, - 0x3f, 0x33, 0x4a, 0x39, 0x05, 0x7b, 0x65, 0x6b, 0x92, 0x89, 0x65, 0x64, - 0x08, 0x01, 0x62, 0x61, 0x8a, 0x09, 0x09, 0x8b, 0x66, 0x65, 0x07, 0x01, - 0x8f, 0x47, 0x3b, 0x4d, 0x5d, 0x3f, 0x33, 0x46, 0x3a, 0x4d, 0x61, 0x3e, - 0x32, 0xc0, 0xfa, 0x2b, 0x02, 0xbc, 0x65, 0x69, 0x92, 0x88, 0x65, 0x63, - 0x09, 0x01, 0x62, 0x60, 0x89, 0x0a, 0x09, 0x8b, 0x65, 0x64, 0x07, 0x01, - 0x8f, 0x47, 0x3a, 0x4c, 0x5e, 0x3e, 0x33, 0x47, 0x39, 0x4b, 0x62, 0x3e, - 0x31, 0x00, 0x00, 0x03, 0x00, 0x6a, 0xff, 0xd1, 0x05, 0x19, 0x05, 0xac, - 0x00, 0x29, 0x00, 0x39, 0x00, 0x46, 0x00, 0x00, 0x25, 0x06, 0x07, 0x06, - 0x23, 0x22, 0x27, 0x26, 0x35, 0x34, 0x37, 0x36, 0x37, 0x26, 0x27, 0x26, - 0x35, 0x34, 0x37, 0x36, 0x33, 0x32, 0x17, 0x16, 0x15, 0x14, 0x07, 0x06, - 0x07, 0x01, 0x36, 0x37, 0x34, 0x3d, 0x01, 0x33, 0x14, 0x07, 0x06, 0x07, - 0x13, 0x23, 0x01, 0x36, 0x37, 0x36, 0x35, 0x34, 0x27, 0x26, 0x23, 0x22, - 0x07, 0x06, 0x15, 0x14, 0x17, 0x16, 0x09, 0x01, 0x06, 0x07, 0x06, 0x15, - 0x14, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x03, 0xba, 0x4a, 0x27, 0x8e, - 0xad, 0xc8, 0x74, 0x68, 0x49, 0x46, 0xbd, 0x7c, 0x1c, 0x0e, 0x65, 0x66, - 0x94, 0x9c, 0x5e, 0x53, 0x4b, 0x3f, 0x90, 0x01, 0x10, 0x3a, 0x06, 0xa4, - 0x6d, 0x05, 0x05, 0xfa, 0xe0, 0xfe, 0x0f, 0x8f, 0x29, 0x1b, 0x46, 0x2f, - 0x3e, 0x67, 0x2f, 0x1a, 0x1f, 0x1b, 0x01, 0x66, 0xfe, 0xb8, 0xa9, 0x31, - 0x1f, 0x53, 0x4e, 0x6b, 0x75, 0x6e, 0x27, 0xa0, 0x49, 0x1d, 0x69, 0x7b, - 0x6e, 0xae, 0x8e, 0x5d, 0x5c, 0x6e, 0x9c, 0x56, 0x2b, 0x30, 0x86, 0x5d, - 0x5f, 0x65, 0x59, 0x84, 0x79, 0x53, 0x46, 0x52, 0xfe, 0xb2, 0x68, 0x73, - 0x09, 0x08, 0x08, 0xb4, 0xb3, 0x08, 0x08, 0xfe, 0xcb, 0x03, 0x73, 0x5a, - 0x40, 0x2b, 0x37, 0x5a, 0x32, 0x22, 0x4c, 0x2b, 0x39, 0x3a, 0x32, 0x2c, - 0xfd, 0x44, 0x01, 0x99, 0x6c, 0x57, 0x36, 0x42, 0x70, 0x4d, 0x49, 0x5b, - 0x1f, 0x00, 0x00, 0x01, 0x00, 0x62, 0x03, 0xb6, 0x01, 0x23, 0x05, 0xac, - 0x00, 0x05, 0x00, 0x00, 0x13, 0x33, 0x15, 0x03, 0x23, 0x03, 0x62, 0xc1, - 0x37, 0x52, 0x38, 0x05, 0xac, 0xe3, 0xfe, 0xed, 0x01, 0x13, 0x00, 0x01, - 0x00, 0x96, 0xfe, 0x4e, 0x02, 0x54, 0x05, 0xd5, 0x00, 0x11, 0x00, 0x00, - 0x01, 0x33, 0x02, 0x03, 0x06, 0x15, 0x10, 0x13, 0x16, 0x17, 0x23, 0x26, - 0x03, 0x26, 0x35, 0x10, 0x13, 0x36, 0x01, 0xe3, 0x71, 0xd3, 0x36, 0x10, - 0xb3, 0x2e, 0x38, 0x71, 0xbe, 0x58, 0x37, 0x89, 0x51, 0x05, 0xd5, 0xfe, - 0xab, 0xfe, 0x77, 0x74, 0x71, 0xfe, 0x76, 0xfe, 0x82, 0x61, 0x5b, 0xfa, - 0x01, 0x47, 0xc9, 0xba, 0x01, 0x31, 0x01, 0x3f, 0xbd, 0x00, 0x00, 0x01, - 0x00, 0x4e, 0xfe, 0x4e, 0x02, 0x0c, 0x05, 0xd5, 0x00, 0x11, 0x00, 0x00, - 0x13, 0x23, 0x12, 0x13, 0x36, 0x35, 0x10, 0x03, 0x26, 0x27, 0x33, 0x16, - 0x13, 0x16, 0x15, 0x10, 0x03, 0x06, 0xbe, 0x70, 0xd2, 0x36, 0x10, 0xb4, - 0x2d, 0x37, 0x70, 0xbf, 0x59, 0x36, 0x89, 0x52, 0xfe, 0x4e, 0x01, 0x53, - 0x01, 0x8a, 0x74, 0x71, 0x01, 0x8e, 0x01, 0x7e, 0x60, 0x59, 0xfa, 0xfe, - 0xb9, 0xca, 0xba, 0xfe, 0xd1, 0xfe, 0xc2, 0xbe, 0x00, 0x01, 0x00, 0x52, - 0x03, 0x87, 0x02, 0xbe, 0x05, 0xd5, 0x00, 0x0e, 0x00, 0x00, 0x01, 0x33, - 0x07, 0x37, 0x17, 0x07, 0x17, 0x07, 0x27, 0x07, 0x27, 0x37, 0x27, 0x37, - 0x17, 0x01, 0x48, 0x81, 0x0b, 0xda, 0x26, 0xdd, 0x90, 0x69, 0x7f, 0x81, - 0x66, 0x8d, 0xdd, 0x27, 0xd9, 0x05, 0xd5, 0xe5, 0x4d, 0x78, 0x3e, 0xb6, - 0x4a, 0xbf, 0xbf, 0x4a, 0xb6, 0x3e, 0x78, 0x4d, 0x00, 0x01, 0x00, 0x66, - 0xff, 0xec, 0x04, 0x46, 0x03, 0xcb, 0x00, 0x0b, 0x00, 0x00, 0x01, 0x15, - 0x21, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x11, 0x33, 0x11, 0x04, 0x46, - 0xfe, 0x58, 0x90, 0xfe, 0x58, 0x01, 0xa8, 0x90, 0x02, 0x23, 0x90, 0xfe, - 0x59, 0x01, 0xa7, 0x90, 0x01, 0xa8, 0xfe, 0x58, 0x00, 0x01, 0x00, 0xb2, - 0xfe, 0xd3, 0x01, 0x89, 0x00, 0xd5, 0x00, 0x0b, 0x00, 0x00, 0x37, 0x33, - 0x15, 0x10, 0x23, 0x35, 0x36, 0x37, 0x36, 0x3d, 0x01, 0x23, 0xb2, 0xd7, - 0xd7, 0x4c, 0x19, 0x16, 0x7b, 0xd5, 0xf6, 0xfe, 0xf4, 0x4e, 0x03, 0x2c, - 0x27, 0x64, 0x25, 0x00, 0x00, 0x01, 0x00, 0x5e, 0x01, 0xec, 0x02, 0x46, - 0x02, 0x7f, 0x00, 0x03, 0x00, 0x00, 0x01, 0x15, 0x21, 0x35, 0x02, 0x46, - 0xfe, 0x18, 0x02, 0x7f, 0x93, 0x93, 0x00, 0x01, 0x00, 0xb2, 0x00, 0x00, - 0x01, 0x87, 0x00, 0xd5, 0x00, 0x03, 0x00, 0x00, 0x25, 0x15, 0x23, 0x35, - 0x01, 0x87, 0xd5, 0xd5, 0xd5, 0xd5, 0x00, 0x01, 0xff, 0xf0, 0xff, 0xd7, - 0x02, 0x46, 0x05, 0xd5, 0x00, 0x03, 0x00, 0x00, 0x01, 0x33, 0x01, 0x23, - 0x01, 0xd5, 0x71, 0xfe, 0x1a, 0x70, 0x05, 0xd5, 0xfa, 0x02, 0x00, 0x02, - 0x00, 0x58, 0xff, 0xd1, 0x04, 0x0e, 0x05, 0xac, 0x00, 0x0f, 0x00, 0x19, - 0x00, 0x00, 0x13, 0x10, 0x25, 0x36, 0x33, 0x20, 0x13, 0x16, 0x15, 0x10, - 0x07, 0x06, 0x23, 0x20, 0x03, 0x26, 0x01, 0x20, 0x11, 0x10, 0x21, 0x32, - 0x13, 0x36, 0x35, 0x10, 0x58, 0x01, 0x24, 0x52, 0x65, 0x01, 0x7d, 0x4c, - 0x12, 0xd1, 0x6c, 0x9e, 0xfe, 0xcf, 0x6f, 0x3b, 0x01, 0xdb, 0xfe, 0xdd, - 0x01, 0x1f, 0xc7, 0x3f, 0x21, 0x02, 0xbe, 0x02, 0x43, 0x86, 0x25, 0xfe, - 0x10, 0x77, 0x93, 0xfe, 0x27, 0xae, 0x5a, 0x01, 0x44, 0xab, 0x03, 0x4c, - 0xfd, 0xb0, 0xfd, 0xaa, 0x01, 0x06, 0x86, 0xd1, 0x02, 0x49, 0x00, 0x01, - 0x00, 0xd1, 0x00, 0x00, 0x02, 0xc7, 0x05, 0xac, 0x00, 0x0a, 0x00, 0x00, - 0x01, 0x21, 0x35, 0x3e, 0x01, 0x37, 0x36, 0x37, 0x33, 0x11, 0x23, 0x02, - 0x12, 0xfe, 0xbf, 0xb3, 0x7f, 0x24, 0x12, 0x17, 0x77, 0xb5, 0x04, 0x0a, - 0x81, 0x16, 0x43, 0x50, 0x29, 0x4f, 0xfa, 0x54, 0x00, 0x01, 0x00, 0x46, - 0x00, 0x00, 0x04, 0x17, 0x05, 0xac, 0x00, 0x23, 0x00, 0x00, 0x13, 0x12, - 0x21, 0x32, 0x17, 0x16, 0x15, 0x10, 0x05, 0x06, 0x0f, 0x01, 0x06, 0x07, - 0x06, 0x07, 0x21, 0x15, 0x21, 0x36, 0x37, 0x36, 0x37, 0x36, 0x3f, 0x01, - 0x36, 0x35, 0x34, 0x27, 0x26, 0x23, 0x20, 0x03, 0x06, 0x07, 0x66, 0x0f, - 0x01, 0xd1, 0xd0, 0x82, 0x7f, 0xfe, 0xec, 0x0f, 0x11, 0xcc, 0xa8, 0x37, - 0x1d, 0x0b, 0x02, 0xfc, 0xfc, 0x3a, 0x0b, 0x48, 0x45, 0xa7, 0x28, 0x30, - 0xbd, 0xc4, 0x5b, 0x51, 0x73, 0xfe, 0xfe, 0x1f, 0x02, 0x01, 0x03, 0xb4, - 0x01, 0xf8, 0x79, 0x76, 0xbb, 0xff, 0x00, 0xa4, 0x09, 0x09, 0x6f, 0x5a, - 0x5e, 0x31, 0x42, 0xb2, 0xe0, 0x7d, 0x78, 0x6b, 0x1a, 0x1b, 0x6a, 0x70, - 0xaf, 0x7c, 0x4f, 0x45, 0xfe, 0xcd, 0x12, 0x15, 0x00, 0x01, 0x00, 0x42, - 0xff, 0xd1, 0x04, 0x0c, 0x05, 0xac, 0x00, 0x32, 0x00, 0x00, 0x01, 0x22, - 0x07, 0x06, 0x07, 0x23, 0x12, 0x25, 0x36, 0x33, 0x32, 0x17, 0x16, 0x15, - 0x14, 0x07, 0x16, 0x17, 0x16, 0x15, 0x14, 0x07, 0x06, 0x23, 0x20, 0x03, - 0x26, 0x27, 0x33, 0x16, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x35, 0x34, - 0x27, 0x26, 0x23, 0x07, 0x23, 0x35, 0x36, 0x37, 0x36, 0x35, 0x34, 0x27, - 0x26, 0x02, 0x29, 0xd2, 0x32, 0x0f, 0x02, 0xb4, 0x07, 0x01, 0x1a, 0x4a, - 0x5c, 0xf3, 0x75, 0x52, 0xca, 0xa3, 0x34, 0x1e, 0x8e, 0x85, 0xd8, 0xfe, - 0xa3, 0x5f, 0x1c, 0x07, 0xb4, 0x0d, 0xa0, 0x38, 0x4c, 0xb3, 0x4d, 0x2d, - 0xff, 0x16, 0x18, 0x4c, 0x16, 0xc4, 0x4b, 0x55, 0x6b, 0x3e, 0x05, 0x0e, - 0xb3, 0x36, 0x4e, 0x01, 0x70, 0x50, 0x15, 0x8f, 0x65, 0x9b, 0xde, 0x4f, - 0x38, 0x77, 0x45, 0x66, 0xd6, 0x7c, 0x73, 0x01, 0x18, 0x52, 0x6b, 0xea, - 0x38, 0x13, 0x77, 0x46, 0x65, 0xf3, 0x14, 0x02, 0x02, 0x99, 0x03, 0x2b, - 0x32, 0x84, 0x93, 0x40, 0x24, 0x00, 0x00, 0x02, 0x00, 0x39, 0x00, 0x00, - 0x04, 0x29, 0x05, 0xac, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x00, 0x01, 0x21, - 0x35, 0x01, 0x33, 0x11, 0x33, 0x15, 0x23, 0x11, 0x23, 0x19, 0x01, 0x01, - 0x02, 0x9e, 0xfd, 0x9b, 0x02, 0x94, 0x85, 0xd7, 0xd7, 0xb4, 0xfe, 0x39, - 0x01, 0x5c, 0xbf, 0x03, 0x91, 0xfc, 0x52, 0xa2, 0xfe, 0xa4, 0x01, 0xfe, - 0x02, 0x7b, 0xfd, 0x85, 0x00, 0x01, 0x00, 0x48, 0xff, 0xd1, 0x04, 0x1b, - 0x05, 0xac, 0x00, 0x26, 0x00, 0x00, 0x01, 0x15, 0x21, 0x03, 0x36, 0x37, - 0x32, 0x17, 0x16, 0x17, 0x14, 0x07, 0x06, 0x07, 0x06, 0x23, 0x20, 0x03, - 0x26, 0x27, 0x33, 0x16, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x35, 0x34, - 0x27, 0x26, 0x23, 0x22, 0x07, 0x06, 0x07, 0x23, 0x13, 0x03, 0xcf, 0xfd, - 0xa4, 0x3a, 0x7c, 0x91, 0xcf, 0x82, 0x83, 0x01, 0x85, 0x82, 0xce, 0x0e, - 0x0f, 0xfe, 0x71, 0x4d, 0x02, 0x03, 0xb4, 0x3d, 0xd5, 0x0b, 0x0c, 0xb0, - 0x54, 0x39, 0x74, 0x51, 0x78, 0x71, 0x4d, 0x24, 0x28, 0xa6, 0x6c, 0x05, - 0xac, 0xb2, 0xfe, 0x6a, 0x56, 0x02, 0x84, 0x86, 0xd9, 0xe0, 0x91, 0x8c, - 0x0a, 0x01, 0x01, 0x7b, 0x06, 0x12, 0xe7, 0x0b, 0x01, 0x7c, 0x55, 0x7f, - 0xbe, 0x5d, 0x41, 0x3b, 0x1d, 0x2f, 0x03, 0x16, 0x00, 0x02, 0x00, 0x58, - 0xff, 0xd1, 0x04, 0x1b, 0x05, 0xac, 0x00, 0x22, 0x00, 0x32, 0x00, 0x00, - 0x13, 0x10, 0x25, 0x36, 0x33, 0x32, 0x17, 0x16, 0x17, 0x23, 0x26, 0x27, - 0x26, 0x23, 0x22, 0x07, 0x06, 0x07, 0x36, 0x33, 0x32, 0x17, 0x16, 0x17, - 0x14, 0x15, 0x14, 0x07, 0x06, 0x07, 0x06, 0x23, 0x20, 0x03, 0x26, 0x25, - 0x22, 0x07, 0x06, 0x15, 0x14, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x35, - 0x34, 0x27, 0x26, 0x58, 0x01, 0x17, 0x69, 0x88, 0xc8, 0x72, 0x4d, 0x15, - 0xb4, 0x20, 0x76, 0x2b, 0x33, 0xc2, 0x51, 0x30, 0x01, 0x76, 0xd8, 0xbf, - 0x7c, 0x7e, 0x04, 0x7d, 0x7b, 0xc1, 0x11, 0x12, 0xfe, 0x42, 0x26, 0x03, - 0x01, 0xf0, 0x93, 0x55, 0x45, 0x5d, 0x53, 0x77, 0x81, 0x53, 0x4c, 0x6f, - 0x46, 0x02, 0x96, 0x02, 0x33, 0xa5, 0x3e, 0x8d, 0x5f, 0x8f, 0x9b, 0x2f, - 0x11, 0xdb, 0x84, 0xc8, 0xa2, 0x7c, 0x7e, 0xc7, 0x06, 0x06, 0xcd, 0x89, - 0x86, 0x0c, 0x01, 0x02, 0x56, 0x35, 0x8b, 0x65, 0x52, 0x7a, 0x93, 0x5e, - 0x54, 0x60, 0x59, 0x82, 0xb4, 0x53, 0x34, 0x00, 0x00, 0x01, 0x00, 0x5e, - 0x00, 0x00, 0x04, 0x29, 0x05, 0xac, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x15, - 0x00, 0x03, 0x06, 0x07, 0x23, 0x12, 0x13, 0x12, 0x13, 0x21, 0x35, 0x04, - 0x29, 0xfe, 0xa5, 0x94, 0x3c, 0x23, 0xc0, 0x56, 0x8b, 0x7e, 0xf5, 0xfc, - 0xef, 0x05, 0xac, 0x98, 0xfe, 0x33, 0xfe, 0x3c, 0xba, 0xc9, 0x01, 0x7a, - 0x01, 0x20, 0x01, 0x03, 0x01, 0x5d, 0xb2, 0x00, 0x00, 0x03, 0x00, 0x4c, - 0xff, 0xd1, 0x04, 0x1b, 0x05, 0xac, 0x00, 0x1c, 0x00, 0x2c, 0x00, 0x3c, - 0x00, 0x00, 0x01, 0x16, 0x15, 0x14, 0x07, 0x06, 0x07, 0x22, 0x23, 0x22, - 0x27, 0x26, 0x27, 0x34, 0x37, 0x26, 0x27, 0x26, 0x35, 0x34, 0x36, 0x33, - 0x32, 0x17, 0x16, 0x15, 0x14, 0x07, 0x06, 0x01, 0x22, 0x07, 0x06, 0x15, - 0x14, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x35, 0x34, 0x27, 0x26, 0x03, - 0x22, 0x07, 0x06, 0x15, 0x14, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x35, - 0x34, 0x27, 0x26, 0x03, 0x21, 0xfa, 0x83, 0x85, 0xd5, 0x05, 0x06, 0xd7, - 0x88, 0x85, 0x03, 0xf8, 0x7e, 0x29, 0x1e, 0xf4, 0xc0, 0xc8, 0x7a, 0x72, - 0x3e, 0x2c, 0xfe, 0xb6, 0x8b, 0x44, 0x2d, 0x5e, 0x41, 0x5d, 0x8b, 0x45, - 0x2c, 0x63, 0x3f, 0x5a, 0x99, 0x54, 0x42, 0x63, 0x51, 0x77, 0x9f, 0x55, - 0x3f, 0x66, 0x51, 0x02, 0xfc, 0x77, 0xf4, 0xc2, 0x7c, 0x7e, 0x04, 0x7d, - 0x83, 0xc2, 0xf1, 0x78, 0x4f, 0x4d, 0x3a, 0x57, 0xaa, 0xd9, 0x73, 0x6b, - 0xa5, 0x78, 0x49, 0x34, 0x01, 0xd8, 0x59, 0x3a, 0x52, 0x7a, 0x3e, 0x2b, - 0x58, 0x39, 0x50, 0x82, 0x3e, 0x27, 0xfd, 0xa0, 0x62, 0x4c, 0x6f, 0x8c, - 0x51, 0x41, 0x65, 0x4b, 0x6e, 0x8e, 0x50, 0x3f, 0x00, 0x02, 0x00, 0x4e, - 0xff, 0xd1, 0x04, 0x12, 0x05, 0xac, 0x00, 0x22, 0x00, 0x32, 0x00, 0x00, - 0x01, 0x10, 0x05, 0x06, 0x23, 0x22, 0x27, 0x26, 0x27, 0x33, 0x16, 0x17, - 0x16, 0x33, 0x32, 0x37, 0x36, 0x37, 0x06, 0x07, 0x06, 0x23, 0x22, 0x27, - 0x26, 0x27, 0x34, 0x37, 0x36, 0x37, 0x36, 0x33, 0x20, 0x13, 0x16, 0x01, - 0x22, 0x07, 0x06, 0x15, 0x14, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x35, - 0x34, 0x27, 0x26, 0x04, 0x12, 0xfe, 0xea, 0x6a, 0x8a, 0xc7, 0x72, 0x4d, - 0x15, 0xb4, 0x1e, 0x72, 0x2d, 0x36, 0xc2, 0x51, 0x30, 0x01, 0x6e, 0x8e, - 0x25, 0x2b, 0xc2, 0x7d, 0x7d, 0x02, 0x7d, 0x7a, 0xc1, 0x11, 0x12, 0x01, - 0x9e, 0x40, 0x0b, 0xfe, 0x15, 0x83, 0x53, 0x4b, 0x6e, 0x47, 0x66, 0x8f, - 0x55, 0x49, 0x5d, 0x53, 0x02, 0xe7, 0xfd, 0xd0, 0xa6, 0x40, 0x8c, 0x5f, - 0x90, 0x97, 0x31, 0x13, 0xdb, 0x84, 0xc8, 0x84, 0x18, 0x06, 0x7e, 0x86, - 0xc9, 0xcd, 0x89, 0x86, 0x0c, 0x01, 0xfe, 0x01, 0x5b, 0x01, 0xbc, 0x62, - 0x58, 0x83, 0xb3, 0x53, 0x35, 0x62, 0x53, 0x7c, 0x95, 0x5e, 0x54, 0x00, - 0x00, 0x02, 0x00, 0xe1, 0x00, 0x00, 0x01, 0xb6, 0x04, 0x31, 0x00, 0x03, - 0x00, 0x07, 0x00, 0x00, 0x25, 0x15, 0x23, 0x35, 0x13, 0x15, 0x23, 0x35, - 0x01, 0xb6, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0x03, 0x5c, 0xd5, 0xd5, - 0x00, 0x02, 0x00, 0xe1, 0xfe, 0xd3, 0x01, 0xb8, 0x04, 0x31, 0x00, 0x03, - 0x00, 0x0f, 0x00, 0x00, 0x01, 0x15, 0x23, 0x35, 0x03, 0x33, 0x15, 0x10, - 0x23, 0x35, 0x36, 0x37, 0x36, 0x3d, 0x01, 0x23, 0x01, 0xb8, 0xd5, 0x02, - 0xd7, 0xd7, 0x4d, 0x18, 0x16, 0x7b, 0x04, 0x31, 0xd5, 0xd5, 0xfc, 0xa4, - 0xf6, 0xfe, 0xf4, 0x4e, 0x03, 0x2c, 0x27, 0x64, 0x25, 0x00, 0x00, 0x01, - 0x00, 0x5c, 0xff, 0xee, 0x04, 0x46, 0x03, 0xcb, 0x00, 0x06, 0x00, 0x00, - 0x13, 0x35, 0x01, 0x15, 0x09, 0x01, 0x15, 0x5c, 0x03, 0xea, 0xfc, 0xd9, - 0x03, 0x27, 0x01, 0x96, 0x8d, 0x01, 0xa8, 0xa2, 0xfe, 0xb6, 0xfe, 0xb0, - 0xa1, 0x00, 0x00, 0x02, 0x00, 0x66, 0x00, 0xe3, 0x04, 0x46, 0x02, 0xd3, - 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x01, 0x15, 0x21, 0x35, 0x01, 0x15, - 0x21, 0x35, 0x04, 0x46, 0xfc, 0x20, 0x03, 0xe0, 0xfc, 0x20, 0x02, 0xd3, - 0x8f, 0x8f, 0xfe, 0xa0, 0x90, 0x90, 0x00, 0x01, 0x00, 0x66, 0xff, 0xee, - 0x04, 0x50, 0x03, 0xcb, 0x00, 0x06, 0x00, 0x00, 0x01, 0x15, 0x01, 0x35, - 0x09, 0x01, 0x35, 0x04, 0x50, 0xfc, 0x16, 0x03, 0x27, 0xfc, 0xd9, 0x02, - 0x23, 0x8d, 0xfe, 0x58, 0xa1, 0x01, 0x4a, 0x01, 0x50, 0xa2, 0x00, 0x02, - 0x00, 0x9e, 0x00, 0x00, 0x04, 0x12, 0x05, 0xee, 0x00, 0x23, 0x00, 0x27, - 0x00, 0x00, 0x01, 0x14, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x1d, 0x01, - 0x23, 0x35, 0x34, 0x37, 0x36, 0x37, 0x36, 0x37, 0x36, 0x35, 0x34, 0x27, - 0x26, 0x23, 0x22, 0x07, 0x06, 0x15, 0x23, 0x10, 0x25, 0x36, 0x33, 0x32, - 0x17, 0x16, 0x01, 0x15, 0x23, 0x35, 0x04, 0x12, 0x6e, 0x1a, 0x5b, 0x58, - 0x1c, 0x17, 0xb8, 0x66, 0x14, 0x5d, 0x61, 0x1f, 0x17, 0x5f, 0x44, 0x63, - 0xc4, 0x31, 0x13, 0xae, 0x01, 0x1f, 0x48, 0x59, 0xdc, 0x77, 0x61, 0xfe, - 0x92, 0xb8, 0x04, 0x64, 0x99, 0x7a, 0x1c, 0x51, 0x50, 0x3a, 0x2e, 0x34, - 0x60, 0x70, 0x78, 0x6f, 0x15, 0x58, 0x5a, 0x43, 0x33, 0x38, 0x7b, 0x41, - 0x2e, 0xa2, 0x3f, 0x5f, 0x01, 0x7c, 0x50, 0x14, 0x80, 0x68, 0xfb, 0xcf, - 0xd5, 0xd5, 0x00, 0x02, 0x00, 0x46, 0xfe, 0xdd, 0x07, 0x9c, 0x05, 0xee, - 0x00, 0x51, 0x00, 0x65, 0x00, 0x00, 0x01, 0x33, 0x03, 0x06, 0x15, 0x14, - 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x37, 0x36, 0x35, 0x34, 0x27, 0x26, - 0x27, 0x26, 0x23, 0x22, 0x07, 0x06, 0x07, 0x06, 0x15, 0x14, 0x17, 0x16, - 0x17, 0x16, 0x33, 0x32, 0x37, 0x17, 0x06, 0x23, 0x20, 0x27, 0x26, 0x27, - 0x26, 0x35, 0x10, 0x37, 0x36, 0x37, 0x36, 0x37, 0x36, 0x33, 0x20, 0x17, - 0x16, 0x17, 0x16, 0x15, 0x14, 0x07, 0x06, 0x07, 0x06, 0x23, 0x22, 0x27, - 0x06, 0x07, 0x06, 0x23, 0x22, 0x27, 0x26, 0x35, 0x34, 0x37, 0x36, 0x37, - 0x36, 0x33, 0x32, 0x17, 0x01, 0x32, 0x37, 0x36, 0x37, 0x36, 0x35, 0x34, - 0x27, 0x26, 0x23, 0x22, 0x07, 0x06, 0x07, 0x06, 0x15, 0x14, 0x17, 0x16, - 0x05, 0x52, 0xaa, 0xb8, 0x19, 0x2e, 0x1a, 0x1e, 0x6f, 0x62, 0x65, 0x1b, - 0x07, 0x92, 0x8c, 0xd9, 0x6a, 0x6f, 0xfd, 0xd4, 0xc1, 0x59, 0x3a, 0x9e, - 0x97, 0xf1, 0x69, 0x71, 0xa3, 0xe8, 0x39, 0xe6, 0xe9, 0xfe, 0xc9, 0xf6, - 0xd9, 0x60, 0x3d, 0x8d, 0x4c, 0x6a, 0xb6, 0xfc, 0x7e, 0x7a, 0x01, 0x1e, - 0xe9, 0xcd, 0x5b, 0x3a, 0x7b, 0x18, 0x1d, 0x9b, 0xe2, 0xc5, 0x1d, 0x75, - 0x7f, 0x17, 0x18, 0x8d, 0x5f, 0x61, 0x78, 0x6d, 0x9e, 0x45, 0x46, 0xac, - 0x4e, 0xfe, 0x7b, 0x79, 0x5f, 0x4e, 0x14, 0x05, 0x47, 0x33, 0x46, 0x72, - 0x5f, 0x61, 0x14, 0x04, 0x48, 0x39, 0x04, 0x02, 0xfd, 0xc3, 0x45, 0x22, - 0x2f, 0x1c, 0x0f, 0x6e, 0x72, 0x9f, 0x2c, 0x2c, 0xcf, 0xa9, 0xa1, 0x3e, - 0x1e, 0x9a, 0x8d, 0xd8, 0x8d, 0x95, 0xf3, 0xb9, 0xb0, 0x3d, 0x1b, 0x41, - 0x89, 0x56, 0xa1, 0x8e, 0xdf, 0x8c, 0x99, 0x01, 0x07, 0xee, 0x80, 0x60, - 0xa6, 0x42, 0x21, 0x99, 0x86, 0xce, 0x82, 0x8b, 0xcc, 0xb7, 0x25, 0x21, - 0xb6, 0x9d, 0x7f, 0x11, 0x03, 0x6a, 0x6c, 0xa1, 0xbc, 0x9f, 0x90, 0x35, - 0x17, 0xb2, 0xfd, 0x87, 0x99, 0x7e, 0x98, 0x23, 0x1e, 0x5b, 0x36, 0x27, - 0x6c, 0x6f, 0x9c, 0x20, 0x1f, 0x72, 0x48, 0x38, 0x00, 0x02, 0x00, 0x23, - 0x00, 0x00, 0x05, 0x39, 0x05, 0xd5, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x00, - 0x01, 0x21, 0x03, 0x23, 0x01, 0x33, 0x01, 0x23, 0x0b, 0x02, 0x03, 0xcb, - 0xfd, 0xc0, 0x9d, 0xcb, 0x02, 0x14, 0xf6, 0x02, 0x0c, 0xd5, 0xce, 0xe6, - 0xf6, 0x01, 0xc1, 0xfe, 0x3f, 0x05, 0xd5, 0xfa, 0x2b, 0x02, 0x60, 0x02, - 0xa8, 0xfd, 0x58, 0x00, 0x00, 0x03, 0x00, 0xa2, 0x00, 0x00, 0x04, 0xfc, - 0x05, 0xd5, 0x00, 0x10, 0x00, 0x1b, 0x00, 0x26, 0x00, 0x00, 0x01, 0x14, - 0x07, 0x06, 0x23, 0x21, 0x11, 0x21, 0x20, 0x17, 0x16, 0x15, 0x14, 0x07, - 0x16, 0x17, 0x16, 0x01, 0x34, 0x27, 0x26, 0x23, 0x21, 0x11, 0x21, 0x32, - 0x37, 0x36, 0x03, 0x32, 0x37, 0x36, 0x35, 0x34, 0x27, 0x26, 0x23, 0x21, - 0x11, 0x04, 0xfc, 0x82, 0x77, 0xbf, 0xfd, 0x5e, 0x02, 0x5e, 0x01, 0x17, - 0x6d, 0x36, 0xce, 0xbd, 0x37, 0x1c, 0xff, 0x00, 0xd0, 0x29, 0x32, 0xfe, - 0x8f, 0x01, 0x71, 0xf7, 0x2b, 0x09, 0xcb, 0xb8, 0x3d, 0x17, 0x67, 0x42, - 0x63, 0xfe, 0x2f, 0x01, 0xaa, 0xc7, 0x76, 0x6d, 0x05, 0xd5, 0xb4, 0x59, - 0x6e, 0xe4, 0x62, 0x48, 0x85, 0x43, 0x02, 0x3b, 0xc9, 0x1f, 0x06, 0xfe, - 0x25, 0x9f, 0x23, 0xfc, 0x94, 0x8c, 0x35, 0x3f, 0x92, 0x44, 0x2c, 0xfd, - 0xfe, 0x00, 0x00, 0x01, 0x00, 0x62, 0xff, 0xd1, 0x05, 0x6a, 0x05, 0xee, - 0x00, 0x23, 0x00, 0x00, 0x13, 0x34, 0x37, 0x12, 0x25, 0x36, 0x33, 0x20, - 0x13, 0x16, 0x17, 0x23, 0x26, 0x27, 0x26, 0x23, 0x22, 0x07, 0x06, 0x11, - 0x10, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x37, 0x33, 0x02, 0x21, 0x20, - 0x03, 0x26, 0x03, 0x26, 0x62, 0x65, 0x92, 0x01, 0x3a, 0x3a, 0x3f, 0x01, - 0xa2, 0x7c, 0x15, 0x0d, 0xc3, 0x2f, 0xb2, 0x4c, 0x66, 0xde, 0x7e, 0x79, - 0x91, 0x81, 0xd3, 0xec, 0x66, 0x36, 0x18, 0xc4, 0x43, 0xfd, 0xdd, 0xfe, - 0x8f, 0xb1, 0x76, 0x09, 0x01, 0x02, 0xd9, 0xfc, 0xc5, 0x01, 0x1d, 0x2e, - 0x09, 0xfe, 0x9b, 0x3c, 0x47, 0xe6, 0x3f, 0x1b, 0xad, 0xa5, 0xfe, 0xe7, - 0xfe, 0xd9, 0xa6, 0x95, 0xb2, 0x5e, 0x98, 0xfd, 0xb0, 0x01, 0x1d, 0xbc, - 0x01, 0x08, 0x14, 0x00, 0x00, 0x02, 0x00, 0xb6, 0x00, 0x00, 0x05, 0x56, - 0x05, 0xd5, 0x00, 0x09, 0x00, 0x14, 0x00, 0x00, 0x33, 0x11, 0x21, 0x20, - 0x00, 0x11, 0x10, 0x07, 0x06, 0x21, 0x25, 0x21, 0x20, 0x13, 0x36, 0x35, - 0x10, 0x25, 0x26, 0x23, 0x21, 0xb6, 0x02, 0x40, 0x01, 0x1b, 0x01, 0x45, - 0xaf, 0xa2, 0xfe, 0xf1, 0xfe, 0x7f, 0x01, 0x60, 0x01, 0x2f, 0x65, 0x2f, - 0xff, 0x00, 0x55, 0x6e, 0xfe, 0xa0, 0x05, 0xd5, 0xfe, 0x72, 0xfe, 0xa5, - 0xfe, 0x95, 0xc9, 0xb8, 0xa8, 0x01, 0x10, 0x7d, 0xb4, 0x01, 0xaf, 0x70, - 0x25, 0x00, 0x00, 0x01, 0x00, 0xb8, 0x00, 0x00, 0x04, 0xe7, 0x05, 0xd5, - 0x00, 0x0b, 0x00, 0x00, 0x01, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, - 0x21, 0x11, 0x21, 0x15, 0x01, 0x77, 0x03, 0x70, 0xfb, 0xd1, 0x04, 0x0b, - 0xfc, 0xb4, 0x03, 0x2d, 0x02, 0xa8, 0xfe, 0x00, 0xa8, 0x05, 0xd5, 0xa8, - 0xfe, 0x23, 0xa8, 0x00, 0x00, 0x01, 0x00, 0xb8, 0x00, 0x00, 0x04, 0xa2, - 0x05, 0xd5, 0x00, 0x09, 0x00, 0x00, 0x01, 0x11, 0x23, 0x11, 0x21, 0x15, - 0x21, 0x11, 0x21, 0x15, 0x01, 0x77, 0xbf, 0x03, 0xea, 0xfc, 0xd5, 0x02, - 0xc8, 0x02, 0xa8, 0xfd, 0x58, 0x05, 0xd5, 0xa8, 0xfe, 0x23, 0xa8, 0x00, - 0x00, 0x01, 0x00, 0x5a, 0xff, 0xd1, 0x05, 0xac, 0x05, 0xee, 0x00, 0x31, - 0x00, 0x00, 0x01, 0x14, 0x17, 0x16, 0x05, 0x32, 0x33, 0x32, 0x37, 0x36, - 0x37, 0x36, 0x3d, 0x01, 0x21, 0x35, 0x21, 0x11, 0x23, 0x27, 0x06, 0x07, - 0x06, 0x23, 0x20, 0x27, 0x26, 0x03, 0x26, 0x35, 0x34, 0x37, 0x12, 0x25, - 0x36, 0x33, 0x20, 0x17, 0x16, 0x17, 0x23, 0x26, 0x27, 0x26, 0x23, 0x22, - 0x07, 0x06, 0x03, 0x14, 0x01, 0x19, 0x58, 0x88, 0x01, 0x28, 0x07, 0x07, - 0xc6, 0x84, 0x81, 0x09, 0x01, 0xfe, 0x39, 0x02, 0x6f, 0x79, 0x2f, 0xbe, - 0xfb, 0x22, 0x23, 0xfe, 0xf7, 0xb7, 0xb4, 0x2c, 0x0c, 0x61, 0x8d, 0x01, - 0x30, 0x52, 0x5d, 0x01, 0x35, 0xaa, 0x72, 0x20, 0xc3, 0x24, 0x95, 0x6a, - 0x8d, 0xe5, 0x8f, 0x93, 0x05, 0x02, 0xe5, 0xd1, 0xa0, 0xf5, 0x06, 0x7b, - 0x79, 0xbc, 0x0e, 0x0d, 0x29, 0xa7, 0xfc, 0xe4, 0xc6, 0xd3, 0x17, 0x03, - 0xab, 0xa7, 0x01, 0x17, 0x4e, 0x53, 0xea, 0xc0, 0x01, 0x19, 0x3f, 0x11, - 0xb2, 0x76, 0xb6, 0xaa, 0x52, 0x3a, 0x9d, 0xa2, 0xfe, 0xef, 0x08, 0x00, - 0x00, 0x01, 0x00, 0xaa, 0x00, 0x00, 0x05, 0x27, 0x05, 0xd5, 0x00, 0x0b, - 0x00, 0x00, 0x01, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, - 0x11, 0x23, 0x04, 0x68, 0xfd, 0x00, 0xbe, 0xbe, 0x03, 0x00, 0xbf, 0xbf, - 0x02, 0xa8, 0xfd, 0x58, 0x05, 0xd5, 0xfd, 0x7b, 0x02, 0x85, 0xfa, 0x2b, - 0x00, 0x01, 0x00, 0xcd, 0x00, 0x00, 0x01, 0x8d, 0x05, 0xd5, 0x00, 0x03, - 0x00, 0x00, 0x01, 0x11, 0x23, 0x11, 0x01, 0x8d, 0xc0, 0x05, 0xd5, 0xfa, - 0x2b, 0x05, 0xd5, 0x00, 0x00, 0x01, 0x00, 0x23, 0xff, 0xd1, 0x03, 0x68, - 0x05, 0xd5, 0x00, 0x15, 0x00, 0x00, 0x25, 0x32, 0x37, 0x36, 0x35, 0x11, - 0x33, 0x11, 0x14, 0x07, 0x06, 0x23, 0x22, 0x27, 0x26, 0x3d, 0x01, 0x33, - 0x15, 0x14, 0x17, 0x16, 0x01, 0xc5, 0xa7, 0x2c, 0x12, 0xbe, 0x88, 0x6f, - 0xae, 0xd6, 0x71, 0x59, 0xc2, 0x80, 0x2a, 0x71, 0xa0, 0x42, 0x67, 0x04, - 0x1b, 0xfb, 0xa0, 0xd6, 0x72, 0x5c, 0x83, 0x67, 0xa1, 0x83, 0x60, 0xc6, - 0x36, 0x12, 0x00, 0x01, 0x00, 0xa2, 0x00, 0x00, 0x05, 0x44, 0x05, 0xd5, - 0x00, 0x0b, 0x00, 0x00, 0x01, 0x11, 0x23, 0x11, 0x33, 0x11, 0x01, 0x33, - 0x09, 0x01, 0x23, 0x01, 0x01, 0x60, 0xbe, 0xbe, 0x02, 0xe8, 0xf5, 0xfd, - 0xa0, 0x02, 0x67, 0xe2, 0xfd, 0xf2, 0x02, 0x0a, 0xfd, 0xf6, 0x05, 0xd5, - 0xfd, 0x0c, 0x02, 0xf4, 0xfd, 0xa0, 0xfc, 0x8b, 0x02, 0xfe, 0x00, 0x01, - 0x00, 0xa4, 0x00, 0x00, 0x04, 0x44, 0x05, 0xd5, 0x00, 0x05, 0x00, 0x00, - 0x01, 0x11, 0x21, 0x15, 0x21, 0x11, 0x01, 0x62, 0x02, 0xe2, 0xfc, 0x60, - 0x05, 0xd5, 0xfa, 0xd3, 0xa8, 0x05, 0xd5, 0x00, 0x00, 0x01, 0x00, 0x9a, - 0x00, 0x00, 0x06, 0x17, 0x05, 0xd5, 0x00, 0x0c, 0x00, 0x00, 0x21, 0x23, - 0x01, 0x11, 0x23, 0x11, 0x21, 0x09, 0x01, 0x21, 0x11, 0x23, 0x11, 0x03, - 0xbe, 0xc8, 0xfe, 0x58, 0xb4, 0x01, 0x08, 0x01, 0xba, 0x01, 0xb2, 0x01, - 0x09, 0xb5, 0x04, 0xe3, 0xfb, 0x1d, 0x05, 0xd5, 0xfa, 0xec, 0x05, 0x14, - 0xfa, 0x2b, 0x04, 0xe3, 0x00, 0x01, 0x00, 0x9c, 0x00, 0x00, 0x05, 0x2b, - 0x05, 0xd5, 0x00, 0x09, 0x00, 0x00, 0x01, 0x11, 0x23, 0x01, 0x11, 0x23, - 0x11, 0x33, 0x01, 0x11, 0x05, 0x2b, 0xd7, 0xfc, 0xfc, 0xb4, 0xce, 0x03, - 0x0d, 0x05, 0xd5, 0xfa, 0x2b, 0x04, 0xba, 0xfb, 0x46, 0x05, 0xd5, 0xfb, - 0x3b, 0x04, 0xc5, 0x00, 0x00, 0x02, 0x00, 0x4e, 0xff, 0xd1, 0x05, 0xf0, - 0x05, 0xee, 0x00, 0x16, 0x00, 0x2c, 0x00, 0x00, 0x01, 0x10, 0x00, 0x07, - 0x06, 0x23, 0x20, 0x27, 0x26, 0x03, 0x26, 0x35, 0x10, 0x37, 0x36, 0x25, - 0x36, 0x33, 0x20, 0x17, 0x16, 0x13, 0x16, 0x01, 0x22, 0x07, 0x06, 0x03, - 0x06, 0x15, 0x10, 0x17, 0x16, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x37, - 0x36, 0x35, 0x10, 0x27, 0x26, 0x05, 0xf0, 0xfe, 0xd4, 0xfc, 0x51, 0x58, - 0xfe, 0xe0, 0xc1, 0xbd, 0x29, 0x0a, 0xa8, 0x9d, 0x01, 0x03, 0x41, 0x46, - 0x01, 0x2d, 0xc2, 0xbf, 0x20, 0x05, 0xfd, 0x2d, 0xe2, 0x90, 0x94, 0x0a, - 0x01, 0x8f, 0x88, 0xdd, 0x0f, 0x10, 0xde, 0x91, 0x93, 0x0f, 0x01, 0x94, - 0x96, 0x02, 0xd3, 0xfe, 0xe0, 0xfe, 0x66, 0x36, 0x12, 0xb0, 0xac, 0x01, - 0x20, 0x47, 0x4b, 0x01, 0x3f, 0xd3, 0xc6, 0x2c, 0x0b, 0xb9, 0xb8, 0xfe, - 0xc7, 0x37, 0x02, 0x39, 0x9a, 0x9f, 0xfe, 0xf7, 0x12, 0x13, 0xfe, 0xf0, - 0xa9, 0xa1, 0x0b, 0x01, 0x97, 0x98, 0xfc, 0x19, 0x1a, 0x01, 0x1e, 0xab, - 0xa3, 0x00, 0x00, 0x02, 0x00, 0xba, 0x00, 0x00, 0x04, 0xf0, 0x05, 0xd5, - 0x00, 0x0c, 0x00, 0x17, 0x00, 0x00, 0x01, 0x14, 0x07, 0x06, 0x23, 0x21, - 0x11, 0x23, 0x11, 0x21, 0x20, 0x17, 0x16, 0x01, 0x21, 0x32, 0x37, 0x36, - 0x35, 0x34, 0x27, 0x26, 0x23, 0x21, 0x04, 0xf0, 0x7e, 0x72, 0xb2, 0xfe, - 0x2b, 0xbf, 0x02, 0x69, 0x01, 0x17, 0x73, 0x43, 0xfc, 0x89, 0x01, 0x8d, - 0xb1, 0x4a, 0x28, 0x77, 0x46, 0x66, 0xfe, 0x73, 0x04, 0x1f, 0xc7, 0x75, - 0x6a, 0xfd, 0x87, 0x05, 0xd5, 0xb1, 0x69, 0xfe, 0x66, 0x71, 0x3e, 0x57, - 0x9b, 0x43, 0x28, 0x00, 0x00, 0x02, 0x00, 0x4e, 0xff, 0x87, 0x05, 0xf0, - 0x05, 0xee, 0x00, 0x18, 0x00, 0x33, 0x00, 0x00, 0x05, 0x07, 0x27, 0x06, - 0x23, 0x20, 0x27, 0x26, 0x03, 0x26, 0x35, 0x10, 0x37, 0x36, 0x25, 0x36, - 0x33, 0x20, 0x17, 0x16, 0x13, 0x16, 0x15, 0x10, 0x07, 0x01, 0x17, 0x36, - 0x11, 0x10, 0x27, 0x26, 0x27, 0x26, 0x23, 0x22, 0x07, 0x06, 0x03, 0x06, - 0x15, 0x10, 0x17, 0x16, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x37, 0x27, - 0x05, 0xdd, 0x60, 0xd7, 0xb1, 0xd6, 0xfe, 0xe0, 0xc1, 0xbd, 0x29, 0x0a, - 0xa8, 0x9e, 0x01, 0x04, 0x41, 0x46, 0x01, 0x1f, 0xc2, 0xbb, 0x2a, 0x0b, - 0xd3, 0xfe, 0xbc, 0xb6, 0xa2, 0x8e, 0x87, 0xdc, 0x10, 0x11, 0xe4, 0x90, - 0x94, 0x0a, 0x01, 0x8f, 0x89, 0xdf, 0x0d, 0x0d, 0x75, 0x6f, 0x08, 0x09, - 0x97, 0x02, 0x77, 0xb2, 0x68, 0xb0, 0xac, 0x01, 0x20, 0x47, 0x4b, 0x01, - 0x3f, 0xd3, 0xc6, 0x2c, 0x0b, 0xaf, 0xaa, 0xfe, 0xe3, 0x48, 0x4d, 0xfe, - 0xa1, 0xe8, 0x01, 0x08, 0x96, 0xb6, 0x01, 0x1d, 0x01, 0x0f, 0xa8, 0xa1, - 0x0c, 0x01, 0x9b, 0x9f, 0xfe, 0xf6, 0x11, 0x12, 0xfe, 0xee, 0xa9, 0xa1, - 0x09, 0x01, 0x31, 0x04, 0x04, 0x7f, 0x00, 0x02, 0x00, 0xbe, 0x00, 0x00, - 0x05, 0x6f, 0x05, 0xd5, 0x00, 0x1d, 0x00, 0x28, 0x00, 0x00, 0x01, 0x16, - 0x17, 0x16, 0x07, 0x06, 0x17, 0x16, 0x17, 0x15, 0x23, 0x26, 0x3d, 0x01, - 0x34, 0x27, 0x26, 0x23, 0x21, 0x11, 0x23, 0x11, 0x21, 0x20, 0x17, 0x16, - 0x15, 0x14, 0x07, 0x06, 0x03, 0x34, 0x27, 0x26, 0x23, 0x21, 0x11, 0x21, - 0x32, 0x37, 0x36, 0x04, 0x4a, 0x9d, 0x23, 0x0e, 0x02, 0x02, 0x14, 0x15, - 0x32, 0xe8, 0x29, 0x7b, 0x32, 0x49, 0xfe, 0x15, 0xbf, 0x02, 0xb1, 0x01, - 0x28, 0x6a, 0x34, 0x67, 0x32, 0x2d, 0xa6, 0x35, 0x4a, 0xfe, 0x33, 0x01, - 0xcd, 0xdb, 0x36, 0x14, 0x02, 0xe1, 0x44, 0x91, 0x3d, 0x89, 0x81, 0x39, - 0x3a, 0x23, 0x2f, 0x60, 0x94, 0x85, 0xc3, 0x32, 0x15, 0xfd, 0x7d, 0x05, - 0xd5, 0xb6, 0x5a, 0x7f, 0xab, 0x62, 0x30, 0x01, 0x22, 0xc9, 0x2b, 0x0e, - 0xfd, 0xfe, 0x86, 0x32, 0x00, 0x01, 0x00, 0x62, 0xff, 0xd1, 0x04, 0xf8, - 0x05, 0xee, 0x00, 0x32, 0x00, 0x00, 0x25, 0x20, 0x37, 0x36, 0x35, 0x34, - 0x27, 0x26, 0x27, 0x25, 0x24, 0x11, 0x34, 0x37, 0x36, 0x33, 0x20, 0x17, - 0x16, 0x17, 0x23, 0x26, 0x27, 0x26, 0x23, 0x22, 0x07, 0x06, 0x15, 0x14, - 0x17, 0x16, 0x17, 0x05, 0x16, 0x17, 0x16, 0x15, 0x14, 0x07, 0x06, 0x21, - 0x20, 0x27, 0x26, 0x27, 0x33, 0x15, 0x14, 0x17, 0x16, 0x02, 0xbc, 0x01, - 0x22, 0x47, 0x14, 0xa5, 0x2f, 0x3e, 0xfe, 0x8d, 0xfe, 0xdb, 0x9e, 0x8d, - 0xe8, 0x01, 0x31, 0x8e, 0x63, 0x01, 0xb5, 0x02, 0xa5, 0x54, 0x79, 0xb2, - 0x5c, 0x40, 0x4b, 0x37, 0x74, 0x01, 0x76, 0xd2, 0x4a, 0x22, 0x62, 0x97, - 0xfe, 0xb1, 0xfe, 0xe4, 0x9c, 0x93, 0x03, 0xb5, 0x74, 0x6c, 0x79, 0xa8, - 0x2f, 0x37, 0x87, 0x47, 0x14, 0x10, 0x62, 0x4c, 0x01, 0x10, 0xd7, 0x76, - 0x6a, 0xa7, 0x74, 0xb4, 0xc1, 0x49, 0x25, 0x5e, 0x41, 0x5d, 0x62, 0x35, - 0x27, 0x1f, 0x65, 0x39, 0x9d, 0x49, 0x57, 0x9f, 0x75, 0xb5, 0x8d, 0x86, - 0xf7, 0x0a, 0xa7, 0x5c, 0x55, 0x00, 0x00, 0x01, 0x00, 0x2b, 0x00, 0x00, - 0x04, 0xbe, 0x05, 0xd5, 0x00, 0x07, 0x00, 0x00, 0x01, 0x11, 0x23, 0x11, - 0x21, 0x35, 0x21, 0x15, 0x02, 0xd5, 0xbe, 0xfe, 0x14, 0x04, 0x93, 0x05, - 0x2d, 0xfa, 0xd3, 0x05, 0x2d, 0xa8, 0xa8, 0x00, 0x00, 0x01, 0x00, 0xae, - 0xff, 0xd1, 0x05, 0x29, 0x05, 0xd5, 0x00, 0x15, 0x00, 0x00, 0x01, 0x33, - 0x11, 0x14, 0x07, 0x06, 0x21, 0x20, 0x27, 0x26, 0x35, 0x11, 0x33, 0x11, - 0x14, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x35, 0x04, 0x6a, 0xbf, 0x9d, - 0x9d, 0xfe, 0xfa, 0xfe, 0xe0, 0x9a, 0x81, 0xbf, 0xae, 0x56, 0x78, 0xd9, - 0x66, 0x42, 0x05, 0xd5, 0xfb, 0xe7, 0xe1, 0x86, 0x84, 0x9a, 0x81, 0xd0, - 0x04, 0x19, 0xfb, 0xe7, 0xd0, 0x4d, 0x26, 0x7b, 0x50, 0x78, 0x00, 0x01, - 0x00, 0x3d, 0x00, 0x00, 0x05, 0x29, 0x05, 0xd5, 0x00, 0x06, 0x00, 0x00, - 0x21, 0x23, 0x01, 0x33, 0x09, 0x01, 0x33, 0x03, 0x23, 0xcd, 0xfd, 0xe7, - 0xcd, 0x01, 0xb7, 0x01, 0x9d, 0xcb, 0x05, 0xd5, 0xfb, 0x10, 0x04, 0xf0, - 0x00, 0x01, 0x00, 0x2d, 0x00, 0x00, 0x07, 0x6f, 0x05, 0xd5, 0x00, 0x0c, - 0x00, 0x00, 0x21, 0x23, 0x09, 0x01, 0x23, 0x01, 0x33, 0x09, 0x01, 0x33, - 0x09, 0x01, 0x33, 0x05, 0xf4, 0xd1, 0xfe, 0xa8, 0xfe, 0xb2, 0xd1, 0xfe, - 0x81, 0xd5, 0x01, 0x19, 0x01, 0x4b, 0xcd, 0x01, 0x54, 0x01, 0x13, 0xd5, - 0x04, 0xcb, 0xfb, 0x35, 0x05, 0xd5, 0xfb, 0x44, 0x04, 0xbc, 0xfb, 0x44, - 0x04, 0xbc, 0x00, 0x01, 0x00, 0x2d, 0x00, 0x00, 0x05, 0x31, 0x05, 0xd5, - 0x00, 0x0b, 0x00, 0x00, 0x09, 0x01, 0x23, 0x09, 0x01, 0x23, 0x09, 0x01, - 0x33, 0x09, 0x01, 0x33, 0x03, 0x21, 0x02, 0x10, 0xeb, 0xfe, 0x68, 0xfe, - 0x66, 0xe7, 0x02, 0x10, 0xfe, 0x11, 0xe7, 0x01, 0x7f, 0x01, 0x81, 0xe4, - 0x02, 0xfe, 0xfd, 0x02, 0x02, 0x6f, 0xfd, 0x91, 0x02, 0xfe, 0x02, 0xd7, - 0xfd, 0xb6, 0x02, 0x4a, 0x00, 0x01, 0x00, 0x1b, 0x00, 0x00, 0x05, 0x4a, - 0x05, 0xd5, 0x00, 0x08, 0x00, 0x00, 0x01, 0x11, 0x23, 0x11, 0x01, 0x33, - 0x09, 0x01, 0x33, 0x03, 0x19, 0xbf, 0xfd, 0xc1, 0xeb, 0x01, 0xb6, 0x01, - 0xaa, 0xe4, 0x02, 0x4a, 0xfd, 0xb6, 0x02, 0x4a, 0x03, 0x8b, 0xfd, 0x29, - 0x02, 0xd7, 0x00, 0x01, 0x00, 0x39, 0x00, 0x00, 0x04, 0xaa, 0x05, 0xd5, - 0x00, 0x09, 0x00, 0x00, 0x01, 0x15, 0x01, 0x21, 0x15, 0x21, 0x35, 0x01, - 0x21, 0x35, 0x04, 0xa6, 0xfc, 0x83, 0x03, 0x81, 0xfb, 0x8f, 0x03, 0x81, - 0xfc, 0xb9, 0x05, 0xd5, 0xac, 0xfb, 0x7f, 0xa8, 0xa8, 0x04, 0x85, 0xa8, - 0x00, 0x01, 0x00, 0x83, 0xfe, 0x4e, 0x02, 0x00, 0x05, 0xd5, 0x00, 0x07, - 0x00, 0x00, 0x01, 0x15, 0x23, 0x11, 0x33, 0x15, 0x21, 0x11, 0x02, 0x00, - 0xd3, 0xd3, 0xfe, 0x83, 0x05, 0xd5, 0x93, 0xf9, 0x9f, 0x93, 0x07, 0x87, - 0x00, 0x01, 0xff, 0xf0, 0xff, 0xd7, 0x02, 0x46, 0x05, 0xd5, 0x00, 0x03, - 0x00, 0x00, 0x13, 0x01, 0x23, 0x01, 0x60, 0x01, 0xe6, 0x71, 0xfe, 0x1b, - 0x05, 0xd5, 0xfa, 0x02, 0x05, 0xfe, 0x00, 0x01, 0x00, 0x2f, 0xfe, 0x4e, - 0x01, 0xac, 0x05, 0xd5, 0x00, 0x07, 0x00, 0x00, 0x13, 0x35, 0x33, 0x11, - 0x23, 0x35, 0x21, 0x11, 0x2f, 0xd3, 0xd3, 0x01, 0x7d, 0xfe, 0x4e, 0x93, - 0x06, 0x61, 0x93, 0xf8, 0x79, 0x00, 0x00, 0x01, 0x00, 0x5a, 0x02, 0xa2, - 0x03, 0x66, 0x05, 0xac, 0x00, 0x06, 0x00, 0x00, 0x01, 0x33, 0x01, 0x23, - 0x0b, 0x01, 0x23, 0x01, 0x93, 0x96, 0x01, 0x3d, 0x8d, 0xfa, 0xf8, 0x8d, - 0x05, 0xac, 0xfc, 0xf6, 0x02, 0x66, 0xfd, 0x9a, 0x00, 0x01, 0xff, 0xd3, - 0xfe, 0x98, 0x04, 0xa0, 0xfe, 0xfe, 0x00, 0x03, 0x00, 0x00, 0x01, 0x15, - 0x21, 0x35, 0x04, 0xa0, 0xfb, 0x33, 0xfe, 0xfe, 0x66, 0x66, 0x00, 0x01, - 0x00, 0x2d, 0x04, 0xbc, 0x01, 0xd9, 0x05, 0xec, 0x00, 0x03, 0x00, 0x00, - 0x01, 0x13, 0x23, 0x01, 0x01, 0x14, 0xc5, 0x7b, 0xfe, 0xcf, 0x05, 0xec, - 0xfe, 0xd0, 0x01, 0x30, 0x00, 0x02, 0x00, 0x56, 0xff, 0xd1, 0x04, 0x48, - 0x04, 0x50, 0x00, 0x31, 0x00, 0x40, 0x00, 0x00, 0x13, 0x12, 0x25, 0x36, - 0x33, 0x20, 0x17, 0x16, 0x15, 0x11, 0x14, 0x17, 0x16, 0x33, 0x32, 0x37, - 0x15, 0x06, 0x23, 0x22, 0x27, 0x26, 0x27, 0x06, 0x07, 0x06, 0x23, 0x22, - 0x27, 0x26, 0x35, 0x34, 0x37, 0x36, 0x37, 0x36, 0x37, 0x36, 0x37, 0x36, - 0x3d, 0x01, 0x34, 0x27, 0x26, 0x23, 0x22, 0x07, 0x06, 0x07, 0x13, 0x32, - 0x37, 0x36, 0x3d, 0x01, 0x06, 0x07, 0x06, 0x07, 0x06, 0x15, 0x14, 0x17, - 0x16, 0x85, 0x0a, 0x01, 0x43, 0x2e, 0x33, 0x01, 0x31, 0x4c, 0x17, 0x46, - 0x0a, 0x0c, 0x12, 0x13, 0x48, 0x2d, 0x7f, 0x23, 0x0a, 0x04, 0x90, 0x94, - 0x23, 0x26, 0xc0, 0x5e, 0x42, 0x77, 0x54, 0xc6, 0x25, 0x5e, 0x84, 0x20, - 0x0f, 0x82, 0x30, 0x3e, 0xb7, 0x31, 0x0f, 0x05, 0xaa, 0x9b, 0x61, 0x46, - 0x38, 0x98, 0x9c, 0x3c, 0x6d, 0x66, 0x2e, 0x02, 0xf4, 0x01, 0x30, 0x27, - 0x05, 0xae, 0x34, 0x43, 0xfd, 0x89, 0x48, 0x0a, 0x02, 0x04, 0x81, 0x12, - 0x5e, 0x1c, 0x24, 0x84, 0x15, 0x05, 0x74, 0x51, 0x78, 0xb0, 0x4c, 0x36, - 0x1d, 0x06, 0x0c, 0x10, 0x2d, 0x16, 0x23, 0x2d, 0x72, 0x22, 0x0c, 0x70, - 0x21, 0x2d, 0xfd, 0x72, 0x5d, 0x43, 0x4c, 0xc0, 0x19, 0x17, 0x17, 0x1b, - 0x31, 0x6d, 0x70, 0x29, 0x13, 0x00, 0x00, 0x02, 0x00, 0x6f, 0xff, 0xd1, - 0x04, 0x2f, 0x05, 0xd5, 0x00, 0x14, 0x00, 0x24, 0x00, 0x00, 0x13, 0x33, - 0x11, 0x36, 0x37, 0x36, 0x33, 0x32, 0x17, 0x16, 0x15, 0x10, 0x07, 0x06, - 0x23, 0x22, 0x27, 0x26, 0x27, 0x15, 0x23, 0x01, 0x22, 0x07, 0x06, 0x15, - 0x14, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x35, 0x34, 0x27, 0x26, 0x6f, - 0xaa, 0x68, 0xb6, 0x16, 0x17, 0xdd, 0x7c, 0x72, 0x8a, 0x7e, 0xcb, 0xd5, - 0x77, 0x04, 0x04, 0x99, 0x01, 0xd5, 0x91, 0x53, 0x47, 0x6b, 0x4d, 0x73, - 0x90, 0x57, 0x52, 0x6e, 0x51, 0x05, 0xd5, 0xfd, 0xcb, 0x9f, 0x0f, 0x02, - 0xa3, 0x96, 0xfa, 0xfe, 0xe8, 0xa1, 0x93, 0xac, 0x06, 0x06, 0x89, 0x03, - 0xb0, 0x81, 0x6f, 0xb0, 0xdb, 0x72, 0x52, 0x78, 0x71, 0xb0, 0xdd, 0x73, - 0x56, 0x00, 0x00, 0x01, 0x00, 0x3f, 0xff, 0xd1, 0x03, 0xd1, 0x04, 0x50, - 0x00, 0x1f, 0x00, 0x00, 0x01, 0x23, 0x26, 0x27, 0x26, 0x23, 0x22, 0x07, - 0x06, 0x15, 0x14, 0x17, 0x16, 0x33, 0x32, 0x13, 0x33, 0x06, 0x07, 0x06, - 0x23, 0x22, 0x27, 0x26, 0x11, 0x10, 0x37, 0x36, 0x33, 0x32, 0x17, 0x16, - 0x03, 0xc5, 0xac, 0x18, 0x83, 0x2c, 0x37, 0xa5, 0x4d, 0x37, 0x7a, 0x49, - 0x6a, 0xdb, 0x2b, 0xac, 0x13, 0xa3, 0x69, 0x97, 0xde, 0x81, 0x7d, 0x8b, - 0x82, 0xd1, 0xf3, 0x6d, 0x3d, 0x02, 0xc9, 0xa9, 0x30, 0x10, 0x99, 0x6c, - 0xa7, 0xf0, 0x69, 0x3e, 0x01, 0x02, 0xf0, 0x6b, 0x45, 0x9d, 0x99, 0x00, - 0xff, 0x01, 0x14, 0xa1, 0x95, 0xa5, 0x5c, 0x00, 0x00, 0x02, 0x00, 0x35, - 0xff, 0xd1, 0x03, 0xf6, 0x05, 0xd5, 0x00, 0x14, 0x00, 0x24, 0x00, 0x00, - 0x01, 0x11, 0x23, 0x35, 0x06, 0x07, 0x06, 0x23, 0x22, 0x27, 0x26, 0x11, - 0x10, 0x37, 0x36, 0x33, 0x32, 0x17, 0x16, 0x17, 0x11, 0x01, 0x22, 0x07, - 0x06, 0x15, 0x14, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x35, 0x34, 0x27, - 0x26, 0x03, 0xf6, 0x98, 0x62, 0x85, 0x32, 0x3d, 0xe2, 0x7e, 0x73, 0x87, - 0x7d, 0xc9, 0xd4, 0x6e, 0x04, 0x04, 0xfe, 0xd3, 0x93, 0x57, 0x4e, 0x6b, - 0x53, 0x7c, 0x8f, 0x53, 0x49, 0x6e, 0x4d, 0x05, 0xd5, 0xfa, 0x2b, 0x8d, - 0x8e, 0x21, 0x0d, 0xaa, 0x9b, 0x01, 0x05, 0x01, 0x0a, 0x9c, 0x8f, 0x9a, - 0x06, 0x06, 0x02, 0x2b, 0xfd, 0xdb, 0x7d, 0x71, 0xb2, 0xd2, 0x73, 0x5a, - 0x7d, 0x6f, 0xaf, 0xe2, 0x72, 0x50, 0x00, 0x02, 0x00, 0x52, 0xff, 0xd1, - 0x04, 0x1b, 0x04, 0x50, 0x00, 0x1d, 0x00, 0x28, 0x00, 0x00, 0x01, 0x21, - 0x16, 0x17, 0x16, 0x17, 0x16, 0x17, 0x16, 0x33, 0x32, 0x37, 0x33, 0x06, - 0x07, 0x06, 0x23, 0x22, 0x27, 0x26, 0x35, 0x10, 0x37, 0x36, 0x33, 0x32, - 0x17, 0x16, 0x17, 0x16, 0x05, 0x21, 0x36, 0x35, 0x34, 0x27, 0x26, 0x23, - 0x22, 0x07, 0x06, 0x04, 0x1b, 0xfc, 0xe9, 0x02, 0x28, 0x07, 0x08, 0x4f, - 0x90, 0x11, 0x12, 0xd2, 0x47, 0xac, 0x27, 0xa3, 0x6d, 0x94, 0xec, 0x83, - 0x78, 0x8d, 0x85, 0xd9, 0xc5, 0x83, 0x46, 0x25, 0x2b, 0xfc, 0xed, 0x02, - 0x5a, 0x02, 0x5a, 0x55, 0x7a, 0x95, 0x56, 0x3e, 0x01, 0xdf, 0x84, 0x48, - 0x0d, 0x0c, 0x7b, 0x0e, 0x02, 0xd7, 0xd3, 0x61, 0x41, 0xa6, 0x97, 0xfc, - 0x01, 0x11, 0x9f, 0x96, 0x7c, 0x42, 0x5d, 0x73, 0x58, 0x05, 0x08, 0x88, - 0x5c, 0x57, 0x74, 0x55, 0x00, 0x01, 0x00, 0x25, 0x00, 0x00, 0x02, 0x10, - 0x05, 0xdb, 0x00, 0x15, 0x00, 0x00, 0x01, 0x15, 0x23, 0x11, 0x23, 0x11, - 0x23, 0x35, 0x33, 0x35, 0x34, 0x37, 0x36, 0x33, 0x32, 0x17, 0x15, 0x26, - 0x23, 0x22, 0x1d, 0x01, 0x02, 0x10, 0xb2, 0xaa, 0x8f, 0x8f, 0x72, 0x3a, - 0x50, 0x2f, 0x31, 0x27, 0x14, 0x77, 0x04, 0x31, 0x8b, 0xfc, 0x5a, 0x03, - 0xa6, 0x8b, 0xb6, 0x9a, 0x3c, 0x1e, 0x0a, 0x8d, 0x02, 0x6d, 0xa8, 0x00, - 0x00, 0x02, 0x00, 0x3b, 0xfe, 0x42, 0x03, 0xe9, 0x04, 0x50, 0x00, 0x2a, - 0x00, 0x3a, 0x00, 0x00, 0x05, 0x22, 0x27, 0x26, 0x27, 0x26, 0x35, 0x10, - 0x37, 0x36, 0x37, 0x32, 0x33, 0x32, 0x17, 0x16, 0x17, 0x35, 0x33, 0x11, - 0x10, 0x07, 0x06, 0x07, 0x06, 0x23, 0x22, 0x27, 0x26, 0x27, 0x33, 0x16, - 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x3d, 0x01, 0x06, 0x07, 0x06, 0x03, - 0x22, 0x07, 0x06, 0x15, 0x14, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x35, - 0x10, 0x27, 0x26, 0x01, 0xf6, 0xac, 0x79, 0x89, 0x0c, 0x01, 0x80, 0x78, - 0xbf, 0x09, 0x09, 0xc4, 0x7e, 0x03, 0x03, 0x9d, 0x45, 0x5a, 0xf0, 0x26, - 0x2a, 0xf3, 0x70, 0x3f, 0x0a, 0xae, 0x18, 0xa2, 0x22, 0x28, 0xbe, 0x41, - 0x2c, 0x64, 0x73, 0x32, 0x1b, 0x99, 0x50, 0x40, 0x78, 0x49, 0x6a, 0x9b, - 0x4d, 0x3a, 0x80, 0x44, 0x2f, 0x81, 0x91, 0xf8, 0x15, 0x16, 0x01, 0x07, - 0xa3, 0x98, 0x08, 0xb1, 0x04, 0x05, 0x9b, 0xfc, 0x7f, 0xfe, 0xe3, 0x87, - 0xb0, 0x16, 0x04, 0x89, 0x4c, 0x6e, 0x92, 0x1c, 0x06, 0x82, 0x58, 0xaf, - 0x37, 0x8d, 0x24, 0x0f, 0x03, 0xe1, 0x89, 0x6d, 0xac, 0xf4, 0x6c, 0x41, - 0x8d, 0x69, 0xa5, 0x01, 0x09, 0x68, 0x37, 0x00, 0x00, 0x01, 0x00, 0x8f, - 0x00, 0x00, 0x03, 0xe3, 0x05, 0xd5, 0x00, 0x17, 0x00, 0x00, 0x01, 0x34, - 0x27, 0x26, 0x23, 0x22, 0x07, 0x06, 0x15, 0x11, 0x23, 0x11, 0x33, 0x11, - 0x36, 0x37, 0x36, 0x33, 0x32, 0x17, 0x16, 0x15, 0x11, 0x23, 0x03, 0x39, - 0x79, 0x2f, 0x35, 0x91, 0x50, 0x42, 0xaa, 0xaa, 0x5e, 0x67, 0x3e, 0x55, - 0xbe, 0x59, 0x3b, 0xaa, 0x02, 0xe7, 0x90, 0x30, 0x13, 0x75, 0x61, 0x94, - 0xfd, 0xb0, 0x05, 0xd5, 0xfd, 0xc9, 0x7a, 0x23, 0x15, 0x70, 0x4a, 0x6b, - 0xfc, 0xd5, 0x00, 0x02, 0x00, 0x87, 0x00, 0x00, 0x01, 0x33, 0x05, 0xd5, - 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x01, 0x15, 0x23, 0x35, 0x13, 0x11, - 0x23, 0x11, 0x01, 0x33, 0xac, 0xac, 0xa9, 0x05, 0xd5, 0xd7, 0xd7, 0xfe, - 0x5c, 0xfb, 0xcf, 0x04, 0x31, 0x00, 0x00, 0x02, 0xff, 0xdb, 0xfe, 0x42, - 0x01, 0x39, 0x05, 0xd5, 0x00, 0x03, 0x00, 0x13, 0x00, 0x00, 0x01, 0x15, - 0x23, 0x35, 0x11, 0x33, 0x11, 0x14, 0x07, 0x06, 0x23, 0x22, 0x27, 0x35, - 0x16, 0x33, 0x32, 0x37, 0x36, 0x35, 0x01, 0x39, 0xaa, 0xaa, 0xce, 0x28, - 0x2f, 0x1a, 0x1f, 0x23, 0x06, 0x5d, 0x1c, 0x12, 0x05, 0xd5, 0xd7, 0xd7, - 0xfe, 0x5c, 0xfa, 0xf0, 0xb9, 0x20, 0x06, 0x06, 0x91, 0x02, 0x2e, 0x1f, - 0x40, 0x00, 0x00, 0x01, 0x00, 0x77, 0x00, 0x00, 0x04, 0x04, 0x05, 0xd5, - 0x00, 0x0b, 0x00, 0x00, 0x01, 0x11, 0x01, 0x33, 0x09, 0x01, 0x23, 0x01, - 0x07, 0x11, 0x23, 0x11, 0x01, 0x21, 0x01, 0xc6, 0xdc, 0xfe, 0x8b, 0x01, - 0xb6, 0xd3, 0xfe, 0x96, 0xa6, 0xaa, 0x05, 0xd5, 0xfc, 0x95, 0x01, 0xc7, - 0xfe, 0x8d, 0xfd, 0x42, 0x02, 0x46, 0xa4, 0xfe, 0x5e, 0x05, 0xd5, 0x00, - 0x00, 0x01, 0x00, 0x8b, 0x00, 0x00, 0x01, 0x37, 0x05, 0xd5, 0x00, 0x03, - 0x00, 0x00, 0x01, 0x11, 0x23, 0x11, 0x01, 0x37, 0xac, 0x05, 0xd5, 0xfa, - 0x2b, 0x05, 0xd5, 0x00, 0x00, 0x01, 0x00, 0x8f, 0x00, 0x00, 0x06, 0x19, - 0x04, 0x50, 0x00, 0x2a, 0x00, 0x00, 0x13, 0x33, 0x15, 0x36, 0x37, 0x36, - 0x33, 0x32, 0x17, 0x16, 0x17, 0x36, 0x37, 0x36, 0x33, 0x32, 0x17, 0x16, - 0x15, 0x11, 0x23, 0x11, 0x34, 0x27, 0x26, 0x23, 0x22, 0x07, 0x06, 0x15, - 0x11, 0x23, 0x11, 0x34, 0x27, 0x26, 0x23, 0x22, 0x07, 0x06, 0x15, 0x11, - 0x23, 0x8f, 0x9e, 0x5d, 0x72, 0x36, 0x45, 0x9d, 0x54, 0x1a, 0x16, 0x5e, - 0x62, 0x3a, 0x4f, 0xd4, 0x46, 0x1e, 0xac, 0x62, 0x2b, 0x3a, 0x6c, 0x4a, - 0x46, 0xac, 0x71, 0x25, 0x31, 0x6c, 0x4a, 0x46, 0xac, 0x04, 0x31, 0x97, - 0x83, 0x22, 0x11, 0x5e, 0x1e, 0x28, 0x71, 0x20, 0x13, 0x95, 0x40, 0x56, - 0xfc, 0xdb, 0x02, 0xe3, 0x8e, 0x32, 0x17, 0x56, 0x51, 0x71, 0xfd, 0x5e, - 0x02, 0xe3, 0x9c, 0x2c, 0x0f, 0x56, 0x51, 0x71, 0xfd, 0x5e, 0x00, 0x01, - 0x00, 0x8f, 0x00, 0x00, 0x03, 0xe5, 0x04, 0x50, 0x00, 0x17, 0x00, 0x00, - 0x13, 0x33, 0x15, 0x36, 0x37, 0x36, 0x33, 0x32, 0x17, 0x16, 0x15, 0x11, - 0x23, 0x11, 0x34, 0x27, 0x26, 0x23, 0x22, 0x07, 0x06, 0x15, 0x11, 0x23, - 0x8f, 0x9e, 0x5d, 0x7a, 0x3d, 0x50, 0xb6, 0x5d, 0x41, 0xaa, 0x5c, 0x35, - 0x4c, 0x91, 0x50, 0x42, 0xac, 0x04, 0x31, 0xb4, 0x94, 0x2a, 0x15, 0x6b, - 0x4b, 0x6f, 0xfc, 0xd5, 0x02, 0xe7, 0x7a, 0x38, 0x21, 0x75, 0x61, 0x94, - 0xfd, 0xb0, 0x00, 0x02, 0x00, 0x4a, 0xff, 0xd1, 0x04, 0x14, 0x04, 0x50, - 0x00, 0x0f, 0x00, 0x1f, 0x00, 0x00, 0x01, 0x20, 0x17, 0x16, 0x15, 0x10, - 0x07, 0x06, 0x23, 0x22, 0x27, 0x26, 0x35, 0x10, 0x37, 0x36, 0x17, 0x22, - 0x07, 0x06, 0x15, 0x14, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x35, 0x34, - 0x27, 0x26, 0x02, 0x2d, 0x01, 0x08, 0x7f, 0x60, 0x9a, 0x7f, 0xcc, 0xf9, - 0x81, 0x6b, 0xa0, 0x7c, 0xc9, 0x9f, 0x53, 0x41, 0x77, 0x4c, 0x70, 0x9d, - 0x53, 0x43, 0x7e, 0x4a, 0x04, 0x50, 0xc3, 0x95, 0xf0, 0xfe, 0xde, 0x98, - 0x7d, 0xb4, 0x95, 0xf6, 0x01, 0x2f, 0x99, 0x78, 0x9e, 0x8a, 0x6d, 0xab, - 0xee, 0x6d, 0x46, 0x86, 0x6c, 0xa9, 0xfd, 0x6c, 0x3f, 0x00, 0x00, 0x02, - 0x00, 0x6f, 0xfe, 0x42, 0x04, 0x2f, 0x04, 0x50, 0x00, 0x11, 0x00, 0x21, - 0x00, 0x00, 0x13, 0x11, 0x33, 0x15, 0x36, 0x20, 0x17, 0x16, 0x11, 0x10, - 0x07, 0x06, 0x23, 0x22, 0x27, 0x26, 0x27, 0x11, 0x01, 0x22, 0x07, 0x06, - 0x15, 0x14, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x35, 0x34, 0x27, 0x26, - 0x6f, 0x9d, 0x7a, 0x01, 0xb8, 0x7d, 0x74, 0x88, 0x7c, 0xc7, 0xa9, 0x72, - 0x17, 0x17, 0x01, 0x2b, 0x91, 0x53, 0x47, 0x6b, 0x4d, 0x73, 0x91, 0x57, - 0x4f, 0x6d, 0x51, 0xfe, 0x42, 0x05, 0xef, 0xa2, 0xc1, 0xa7, 0x9d, 0xfe, - 0xfa, 0xfe, 0xf5, 0x9c, 0x8e, 0x6d, 0x17, 0x1c, 0xfd, 0xd1, 0x05, 0x6e, - 0x81, 0x6f, 0xb0, 0xdb, 0x72, 0x52, 0x7a, 0x70, 0xaf, 0xdc, 0x73, 0x57, - 0x00, 0x02, 0x00, 0x35, 0xfe, 0x42, 0x03, 0xf6, 0x04, 0x50, 0x00, 0x14, - 0x00, 0x24, 0x00, 0x00, 0x01, 0x23, 0x11, 0x06, 0x07, 0x06, 0x23, 0x22, - 0x27, 0x26, 0x35, 0x10, 0x37, 0x36, 0x33, 0x32, 0x17, 0x16, 0x17, 0x35, - 0x33, 0x05, 0x22, 0x07, 0x06, 0x15, 0x14, 0x17, 0x16, 0x33, 0x32, 0x37, - 0x36, 0x35, 0x34, 0x27, 0x26, 0x03, 0xf6, 0xaa, 0x60, 0x9d, 0x25, 0x2a, - 0xdd, 0x7c, 0x72, 0x89, 0x7f, 0xcb, 0xc3, 0x7a, 0x0d, 0x0c, 0x98, 0xfe, - 0x2b, 0x94, 0x57, 0x4f, 0x6b, 0x53, 0x7c, 0x8f, 0x53, 0x49, 0x6d, 0x4d, - 0xfe, 0x42, 0x02, 0x39, 0x8d, 0x17, 0x06, 0xa3, 0x96, 0xfa, 0x01, 0x15, - 0xa2, 0x95, 0x8e, 0x0f, 0x11, 0x8f, 0x81, 0x7d, 0x71, 0xb2, 0xd2, 0x73, - 0x5a, 0x7d, 0x6e, 0xae, 0xe3, 0x73, 0x50, 0x00, 0x00, 0x01, 0x00, 0x8d, - 0x00, 0x00, 0x02, 0x91, 0x04, 0x50, 0x00, 0x0f, 0x00, 0x00, 0x01, 0x06, - 0x07, 0x06, 0x15, 0x11, 0x23, 0x11, 0x33, 0x15, 0x36, 0x37, 0x36, 0x33, - 0x32, 0x17, 0x02, 0x91, 0xb0, 0x4e, 0x5a, 0xac, 0x9e, 0x64, 0x5f, 0x2d, - 0x35, 0x17, 0x2a, 0x03, 0x9c, 0x03, 0x49, 0x55, 0xce, 0xfd, 0xd3, 0x04, - 0x31, 0xc2, 0xa2, 0x2b, 0x14, 0x06, 0x00, 0x01, 0x00, 0x46, 0xff, 0xd1, - 0x03, 0xac, 0x04, 0x50, 0x00, 0x32, 0x00, 0x00, 0x13, 0x1e, 0x01, 0x33, - 0x32, 0x37, 0x36, 0x35, 0x34, 0x27, 0x26, 0x2f, 0x01, 0x26, 0x27, 0x26, - 0x35, 0x34, 0x37, 0x36, 0x33, 0x32, 0x17, 0x16, 0x17, 0x23, 0x26, 0x27, - 0x26, 0x23, 0x22, 0x07, 0x06, 0x15, 0x14, 0x17, 0x16, 0x1f, 0x01, 0x16, - 0x17, 0x16, 0x15, 0x14, 0x07, 0x06, 0x23, 0x20, 0x27, 0x26, 0x27, 0xfa, - 0x0f, 0x7e, 0x79, 0x93, 0x42, 0x25, 0x4f, 0x22, 0x35, 0xa0, 0xd4, 0x48, - 0x38, 0x80, 0x6f, 0xad, 0xfc, 0x5c, 0x2c, 0x01, 0xb4, 0x05, 0xa3, 0x16, - 0x19, 0x8f, 0x3a, 0x1b, 0x65, 0x28, 0x3a, 0xa4, 0xd1, 0x3e, 0x20, 0x88, - 0x76, 0xbc, 0xfe, 0xa4, 0x41, 0x0d, 0x02, 0x01, 0x3f, 0x72, 0x5e, 0x4a, - 0x28, 0x36, 0x50, 0x27, 0x11, 0x0d, 0x27, 0x33, 0x52, 0x41, 0x6f, 0xa1, - 0x5a, 0x4d, 0x9a, 0x49, 0x67, 0x96, 0x13, 0x03, 0x4d, 0x25, 0x30, 0x50, - 0x2b, 0x10, 0x0e, 0x27, 0x32, 0x6d, 0x3a, 0x52, 0xa6, 0x5d, 0x51, 0xfc, - 0x34, 0x3e, 0x00, 0x01, 0x00, 0x1d, 0xff, 0xd1, 0x02, 0x08, 0x05, 0x58, - 0x00, 0x17, 0x00, 0x00, 0x01, 0x15, 0x23, 0x11, 0x14, 0x17, 0x16, 0x33, - 0x32, 0x37, 0x15, 0x06, 0x23, 0x22, 0x27, 0x26, 0x35, 0x11, 0x23, 0x35, - 0x33, 0x11, 0x33, 0x11, 0x02, 0x08, 0xb0, 0x1f, 0x14, 0x2b, 0x36, 0x1c, - 0x50, 0x3b, 0x9e, 0x26, 0x0b, 0x91, 0x91, 0xaa, 0x04, 0x31, 0x8b, 0xfd, - 0x21, 0x45, 0x11, 0x0b, 0x09, 0x90, 0x0e, 0x69, 0x1d, 0x24, 0x03, 0x2b, - 0x8b, 0x01, 0x27, 0xfe, 0xd9, 0x00, 0x00, 0x01, 0x00, 0x85, 0xff, 0xd1, - 0x03, 0xdb, 0x04, 0x31, 0x00, 0x17, 0x00, 0x00, 0x21, 0x23, 0x35, 0x06, - 0x07, 0x06, 0x23, 0x22, 0x27, 0x26, 0x35, 0x11, 0x33, 0x11, 0x14, 0x17, - 0x16, 0x33, 0x32, 0x37, 0x36, 0x35, 0x11, 0x33, 0x03, 0xdb, 0x99, 0x60, - 0x71, 0x41, 0x55, 0xb9, 0x5c, 0x41, 0xaa, 0x5c, 0x35, 0x4c, 0x93, 0x50, - 0x42, 0xaa, 0x96, 0x87, 0x28, 0x16, 0x6c, 0x4b, 0x6e, 0x03, 0x3b, 0xfd, - 0x08, 0x7a, 0x38, 0x21, 0x76, 0x61, 0x94, 0x02, 0x60, 0x00, 0x00, 0x01, - 0x00, 0x14, 0x00, 0x00, 0x03, 0xe3, 0x04, 0x31, 0x00, 0x06, 0x00, 0x00, - 0x21, 0x23, 0x01, 0x33, 0x09, 0x01, 0x33, 0x02, 0x48, 0xbb, 0xfe, 0x87, - 0xc1, 0x01, 0x1f, 0x01, 0x2f, 0xc0, 0x04, 0x31, 0xfc, 0x9a, 0x03, 0x66, - 0x00, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x05, 0xaa, 0x04, 0x31, 0x00, 0x0c, - 0x00, 0x00, 0x21, 0x23, 0x0b, 0x01, 0x23, 0x01, 0x33, 0x1b, 0x01, 0x33, - 0x1b, 0x01, 0x33, 0x04, 0x6f, 0xc3, 0xd9, 0xcf, 0xc0, 0xfe, 0xc8, 0xbd, - 0xdb, 0xcd, 0xd1, 0xd2, 0xd5, 0xc1, 0x03, 0x4a, 0xfc, 0xb6, 0x04, 0x31, - 0xfc, 0xbd, 0x03, 0x43, 0xfc, 0xbd, 0x03, 0x43, 0x00, 0x01, 0x00, 0x23, - 0x00, 0x00, 0x03, 0xc9, 0x04, 0x31, 0x00, 0x0b, 0x00, 0x00, 0x09, 0x01, - 0x23, 0x09, 0x01, 0x23, 0x09, 0x01, 0x33, 0x09, 0x01, 0x33, 0x02, 0x56, - 0x01, 0x73, 0xc7, 0xfe, 0xf4, 0xfe, 0xef, 0xc2, 0x01, 0x7b, 0xfe, 0x99, - 0xc3, 0x01, 0x02, 0x01, 0x02, 0xc0, 0x02, 0x2b, 0xfd, 0xd5, 0x01, 0x9c, - 0xfe, 0x64, 0x02, 0x23, 0x02, 0x0e, 0xfe, 0x7b, 0x01, 0x85, 0x00, 0x01, - 0x00, 0x29, 0xfe, 0x42, 0x03, 0xd3, 0x04, 0x31, 0x00, 0x11, 0x00, 0x00, - 0x01, 0x33, 0x01, 0x06, 0x23, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, 0x37, - 0x36, 0x3f, 0x01, 0x01, 0x33, 0x01, 0x03, 0x1b, 0xb8, 0xfe, 0x23, 0x54, - 0xc1, 0x41, 0x31, 0x3b, 0x1f, 0x4c, 0x24, 0x0d, 0x0c, 0x41, 0xfe, 0x96, - 0xb6, 0x01, 0x13, 0x04, 0x31, 0xfa, 0xee, 0xdd, 0x1a, 0x9a, 0x0d, 0x36, - 0x15, 0x1e, 0xaa, 0x04, 0x35, 0xfc, 0xbd, 0x00, 0x00, 0x01, 0x00, 0x3f, - 0x00, 0x00, 0x03, 0xa8, 0x04, 0x31, 0x00, 0x09, 0x00, 0x00, 0x01, 0x15, - 0x01, 0x21, 0x15, 0x21, 0x35, 0x01, 0x21, 0x35, 0x03, 0x8b, 0xfd, 0x83, - 0x02, 0x9a, 0xfc, 0x97, 0x02, 0x82, 0xfd, 0xa9, 0x04, 0x31, 0x97, 0xfc, - 0xfc, 0x96, 0x9a, 0x03, 0x02, 0x95, 0x00, 0x01, 0x00, 0x58, 0xfe, 0x4e, - 0x02, 0x35, 0x05, 0xd5, 0x00, 0x2a, 0x00, 0x00, 0x01, 0x15, 0x23, 0x22, - 0x07, 0x06, 0x15, 0x11, 0x14, 0x07, 0x06, 0x07, 0x16, 0x17, 0x16, 0x15, - 0x11, 0x14, 0x17, 0x16, 0x3b, 0x01, 0x15, 0x23, 0x22, 0x27, 0x26, 0x35, - 0x11, 0x34, 0x27, 0x26, 0x27, 0x35, 0x36, 0x37, 0x36, 0x35, 0x11, 0x34, - 0x37, 0x36, 0x33, 0x02, 0x35, 0x1e, 0x55, 0x19, 0x13, 0x3d, 0x25, 0x46, - 0x8b, 0x18, 0x05, 0x25, 0x1b, 0x41, 0x1e, 0x5e, 0x8e, 0x36, 0x1b, 0x32, - 0x23, 0x4b, 0x5e, 0x22, 0x20, 0x6f, 0x30, 0x40, 0x05, 0xd5, 0x85, 0x26, - 0x1e, 0x45, 0xfe, 0x8d, 0xae, 0x4a, 0x2e, 0x1c, 0x41, 0xad, 0x27, 0x2e, - 0xfe, 0x8d, 0x5b, 0x1a, 0x14, 0x85, 0x7a, 0x3d, 0x55, 0x01, 0x56, 0xa6, - 0x3c, 0x2a, 0x0f, 0x8d, 0x13, 0x41, 0x3d, 0x8a, 0x01, 0x56, 0xb3, 0x3e, - 0x1b, 0x00, 0x00, 0x01, 0x00, 0xcd, 0xfe, 0x4e, 0x01, 0x48, 0x05, 0xd5, - 0x00, 0x03, 0x00, 0x00, 0x13, 0x33, 0x11, 0x23, 0xcd, 0x7b, 0x7b, 0x05, - 0xd5, 0xf8, 0x79, 0x00, 0x00, 0x01, 0x00, 0x3b, 0xfe, 0x4e, 0x02, 0x19, - 0x05, 0xd5, 0x00, 0x2a, 0x00, 0x00, 0x13, 0x35, 0x33, 0x32, 0x37, 0x36, - 0x35, 0x11, 0x34, 0x37, 0x36, 0x37, 0x26, 0x27, 0x26, 0x35, 0x11, 0x34, - 0x27, 0x26, 0x2b, 0x01, 0x35, 0x33, 0x32, 0x17, 0x16, 0x15, 0x11, 0x14, - 0x17, 0x16, 0x17, 0x15, 0x06, 0x07, 0x06, 0x15, 0x11, 0x14, 0x07, 0x06, - 0x23, 0x3b, 0x21, 0x56, 0x1a, 0x13, 0x79, 0x15, 0x1a, 0x8f, 0x15, 0x04, - 0x25, 0x1c, 0x42, 0x21, 0x61, 0x92, 0x35, 0x1a, 0x33, 0x22, 0x47, 0x5d, - 0x21, 0x1e, 0x71, 0x30, 0x40, 0xfe, 0x4e, 0x85, 0x26, 0x1d, 0x46, 0x01, - 0x73, 0xd4, 0x53, 0x0f, 0x0b, 0x43, 0xb7, 0x22, 0x28, 0x01, 0x73, 0x5b, - 0x1a, 0x14, 0x85, 0x7d, 0x3c, 0x53, 0xfe, 0xaa, 0xa7, 0x3c, 0x29, 0x0f, - 0x8d, 0x14, 0x44, 0x3e, 0x85, 0xfe, 0xaa, 0xb4, 0x3e, 0x1a, 0x00, 0x01, - 0x00, 0x9a, 0x02, 0x25, 0x04, 0x10, 0x03, 0x81, 0x00, 0x1f, 0x00, 0x00, - 0x01, 0x22, 0x07, 0x06, 0x15, 0x23, 0x36, 0x37, 0x36, 0x33, 0x32, 0x1f, - 0x01, 0x16, 0x33, 0x32, 0x37, 0x36, 0x3d, 0x01, 0x33, 0x15, 0x14, 0x07, - 0x06, 0x23, 0x22, 0x2f, 0x01, 0x26, 0x27, 0x26, 0x01, 0x73, 0x5e, 0x0e, - 0x01, 0x6c, 0x0c, 0x87, 0x22, 0x28, 0x39, 0x35, 0xf0, 0x39, 0x2d, 0x51, - 0x12, 0x06, 0x6c, 0x59, 0x35, 0x49, 0x4f, 0x57, 0xc8, 0x28, 0x28, 0x05, - 0x02, 0xf8, 0x95, 0x05, 0x06, 0xea, 0x32, 0x0d, 0x21, 0x8d, 0x23, 0x4d, - 0x1b, 0x27, 0x0b, 0x21, 0x96, 0x45, 0x29, 0x35, 0x81, 0x17, 0x05, 0x01, - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x06, - 0x00, 0x04, 0x00, 0x00, 0xff, 0xff, 0x00, 0xfa, 0xfe, 0x5c, 0x01, 0xa6, - 0x04, 0x31, 0x10, 0x0f, 0x00, 0x05, 0x02, 0xa4, 0x04, 0x31, 0xc0, 0x00, - 0x00, 0x02, 0x00, 0x6a, 0xff, 0x0a, 0x04, 0x14, 0x05, 0x06, 0x00, 0x1e, - 0x00, 0x27, 0x00, 0x00, 0x01, 0x11, 0x36, 0x37, 0x33, 0x06, 0x07, 0x06, - 0x07, 0x15, 0x23, 0x35, 0x26, 0x27, 0x26, 0x35, 0x10, 0x37, 0x36, 0x37, - 0x35, 0x33, 0x15, 0x16, 0x17, 0x16, 0x17, 0x23, 0x26, 0x27, 0x26, 0x03, - 0x11, 0x06, 0x03, 0x06, 0x15, 0x14, 0x17, 0x16, 0x02, 0x7f, 0xc6, 0x23, - 0xac, 0x0c, 0x8f, 0x65, 0x95, 0x56, 0xe0, 0x78, 0x67, 0x96, 0x73, 0xb6, - 0x56, 0xef, 0x62, 0x32, 0x06, 0xac, 0x0f, 0x6b, 0x2c, 0x8d, 0xe7, 0x20, - 0x05, 0x80, 0x3b, 0x03, 0xb2, 0xfc, 0xbb, 0x15, 0xef, 0xd8, 0x71, 0x50, - 0x07, 0xc7, 0xc9, 0x14, 0xac, 0x93, 0xe0, 0x01, 0x1a, 0xa0, 0x7b, 0x13, - 0xb8, 0xb6, 0x11, 0xa9, 0x56, 0x77, 0x93, 0x3a, 0x18, 0xfc, 0xc3, 0x03, - 0x3f, 0x2b, 0xfe, 0xdf, 0x2c, 0x32, 0xef, 0x69, 0x31, 0x00, 0x00, 0x01, - 0x00, 0x35, 0xff, 0xd1, 0x04, 0x48, 0x05, 0xd5, 0x00, 0x41, 0x00, 0x00, - 0x01, 0x14, 0x1f, 0x01, 0x16, 0x17, 0x21, 0x15, 0x21, 0x16, 0x15, 0x14, - 0x07, 0x06, 0x07, 0x36, 0x33, 0x32, 0x17, 0x16, 0x33, 0x32, 0x37, 0x17, - 0x06, 0x07, 0x06, 0x23, 0x22, 0x27, 0x26, 0x27, 0x26, 0x23, 0x22, 0x07, - 0x27, 0x36, 0x37, 0x36, 0x35, 0x34, 0x27, 0x23, 0x35, 0x33, 0x26, 0x27, - 0x26, 0x35, 0x34, 0x37, 0x36, 0x37, 0x36, 0x33, 0x32, 0x17, 0x16, 0x17, - 0x23, 0x02, 0x21, 0x22, 0x07, 0x06, 0x01, 0x2d, 0x34, 0x3e, 0x04, 0x03, - 0x01, 0x48, 0xfe, 0xe9, 0x1f, 0x4f, 0x35, 0x6e, 0x79, 0x81, 0x45, 0x72, - 0x60, 0x33, 0x4f, 0x5b, 0x56, 0x67, 0x7b, 0x15, 0x16, 0x58, 0x82, 0x75, - 0x36, 0x17, 0x16, 0x6d, 0x72, 0x62, 0xb3, 0x31, 0x1c, 0x31, 0xe2, 0xa6, - 0x54, 0x0f, 0x09, 0x7a, 0x7a, 0xba, 0x1c, 0x1d, 0xf8, 0x74, 0x54, 0x03, - 0xb5, 0x09, 0xfe, 0xf3, 0x9a, 0x50, 0x37, 0x04, 0x2f, 0x56, 0x5d, 0x6d, - 0x06, 0x07, 0x71, 0x57, 0x3a, 0x5f, 0x6c, 0x49, 0x6f, 0x50, 0x23, 0x1d, - 0x3e, 0x87, 0x65, 0x0c, 0x02, 0x2c, 0x29, 0x06, 0x03, 0x4c, 0x87, 0x9a, - 0x6e, 0x3d, 0x43, 0x4c, 0x53, 0x71, 0x8b, 0x3a, 0x24, 0x34, 0xac, 0x7b, - 0x7a, 0x12, 0x03, 0xa1, 0x76, 0xc4, 0x01, 0x3b, 0x61, 0x43, 0x00, 0x02, - 0x00, 0x89, 0x01, 0x10, 0x03, 0xe9, 0x04, 0x68, 0x00, 0x1f, 0x00, 0x2f, - 0x00, 0x00, 0x01, 0x07, 0x27, 0x06, 0x23, 0x22, 0x27, 0x07, 0x27, 0x37, - 0x26, 0x27, 0x34, 0x35, 0x34, 0x37, 0x36, 0x37, 0x27, 0x37, 0x17, 0x36, - 0x33, 0x32, 0x17, 0x37, 0x17, 0x07, 0x16, 0x17, 0x14, 0x07, 0x01, 0x22, - 0x07, 0x06, 0x15, 0x14, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x35, 0x34, - 0x27, 0x26, 0x03, 0xe1, 0x77, 0x6c, 0x52, 0x7b, 0x6e, 0x52, 0x69, 0x72, - 0x62, 0x3c, 0x06, 0x3f, 0x01, 0x02, 0x6f, 0x73, 0x71, 0x59, 0x6d, 0x77, - 0x52, 0x79, 0x74, 0x70, 0x32, 0x03, 0x3b, 0xfe, 0xbe, 0x62, 0x41, 0x36, - 0x4a, 0x3e, 0x53, 0x5e, 0x42, 0x39, 0x4b, 0x3d, 0x01, 0x85, 0x6e, 0x6c, - 0x3d, 0x33, 0x69, 0x75, 0x64, 0x52, 0x6e, 0x09, 0x08, 0x71, 0x5b, 0x03, - 0x02, 0x71, 0x6c, 0x70, 0x35, 0x39, 0x6c, 0x77, 0x70, 0x57, 0x68, 0x67, - 0x5f, 0x01, 0x9b, 0x49, 0x3d, 0x51, 0x5f, 0x40, 0x36, 0x47, 0x3d, 0x4f, - 0x64, 0x41, 0x34, 0x00, 0x00, 0x01, 0x00, 0x17, 0x00, 0x00, 0x04, 0x5c, - 0x05, 0xac, 0x00, 0x16, 0x00, 0x00, 0x01, 0x15, 0x21, 0x15, 0x21, 0x15, - 0x21, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x35, 0x21, 0x35, 0x21, 0x01, - 0x33, 0x09, 0x01, 0x33, 0x01, 0x03, 0xf6, 0xfe, 0xa4, 0x01, 0x5c, 0xfe, - 0xa4, 0xb5, 0xfe, 0xa0, 0x01, 0x60, 0xfe, 0xa0, 0x01, 0x35, 0xfe, 0x5d, - 0xae, 0x01, 0x7a, 0x01, 0x6f, 0xae, 0xfe, 0x65, 0x02, 0xd5, 0x68, 0x9e, - 0x69, 0xfe, 0x9a, 0x01, 0x66, 0x69, 0x9e, 0x68, 0x02, 0xd7, 0xfd, 0x6d, - 0x02, 0x93, 0xfd, 0x29, 0x00, 0x02, 0x00, 0xcd, 0xfe, 0x4e, 0x01, 0x48, - 0x05, 0xd5, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x13, 0x33, 0x11, 0x23, - 0x11, 0x33, 0x11, 0x23, 0xcd, 0x7b, 0x7b, 0x7b, 0x7b, 0x05, 0xd5, 0xfc, - 0xcb, 0xfe, 0xe3, 0xfc, 0xcb, 0x00, 0x00, 0x02, 0x00, 0x58, 0xfe, 0x4c, - 0x04, 0x0c, 0x05, 0xd5, 0x00, 0x45, 0x00, 0x55, 0x00, 0x00, 0x05, 0x14, - 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x35, 0x34, 0x27, 0x26, 0x27, 0x25, - 0x26, 0x27, 0x26, 0x35, 0x34, 0x37, 0x36, 0x37, 0x26, 0x27, 0x26, 0x35, - 0x34, 0x37, 0x36, 0x37, 0x32, 0x33, 0x32, 0x17, 0x16, 0x1d, 0x01, 0x23, - 0x35, 0x34, 0x27, 0x26, 0x23, 0x22, 0x07, 0x06, 0x15, 0x14, 0x17, 0x16, - 0x17, 0x05, 0x16, 0x17, 0x16, 0x15, 0x14, 0x07, 0x16, 0x17, 0x16, 0x15, - 0x14, 0x07, 0x06, 0x23, 0x22, 0x27, 0x26, 0x35, 0x13, 0x05, 0x36, 0x37, - 0x36, 0x35, 0x34, 0x27, 0x25, 0x06, 0x07, 0x06, 0x15, 0x14, 0x17, 0x16, - 0x01, 0x4c, 0x92, 0x1d, 0x22, 0x6d, 0x36, 0x21, 0x54, 0x0d, 0x0f, 0xfe, - 0xa3, 0x91, 0x20, 0x0b, 0x71, 0x2a, 0x3c, 0x4d, 0x0a, 0x03, 0x68, 0x6b, - 0x9d, 0x06, 0x05, 0xac, 0x63, 0x57, 0xac, 0x54, 0x30, 0x42, 0x60, 0x34, - 0x23, 0x3b, 0x17, 0x23, 0x01, 0x2b, 0x90, 0x2e, 0x21, 0xdf, 0x56, 0x11, - 0x06, 0x6c, 0x6d, 0xa6, 0xc0, 0x64, 0x59, 0xe3, 0x01, 0x54, 0x7b, 0x16, - 0x04, 0x95, 0xfe, 0xb6, 0x6b, 0x1a, 0x0c, 0x27, 0x1c, 0x1d, 0xcc, 0x26, - 0x08, 0x49, 0x2c, 0x3c, 0x5b, 0x44, 0x0a, 0x0b, 0xef, 0x65, 0x7d, 0x2c, - 0x34, 0x93, 0x5e, 0x22, 0x20, 0x5a, 0x4f, 0x13, 0x15, 0x89, 0x61, 0x64, - 0x04, 0x71, 0x63, 0x97, 0x39, 0x35, 0x7a, 0x37, 0x20, 0x44, 0x2d, 0x3d, - 0x3e, 0x34, 0x14, 0x17, 0xc1, 0x5c, 0x5c, 0x41, 0x5d, 0xec, 0x53, 0x62, - 0x4e, 0x1e, 0x24, 0x92, 0x62, 0x64, 0x75, 0x68, 0xba, 0x01, 0xf2, 0xfc, - 0x41, 0x69, 0x13, 0x14, 0x7e, 0x67, 0xe0, 0x47, 0x42, 0x20, 0x26, 0x48, - 0x2f, 0x22, 0x00, 0x02, 0x00, 0x3d, 0x04, 0xe5, 0x02, 0x5e, 0x05, 0xb8, - 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x01, 0x15, 0x23, 0x35, 0x21, 0x15, - 0x23, 0x35, 0x01, 0x12, 0xd5, 0x02, 0x21, 0xd5, 0x05, 0xb8, 0xd3, 0xd3, - 0xd3, 0xd3, 0x00, 0x03, 0xff, 0xe5, 0xff, 0xd3, 0x06, 0x02, 0x05, 0xf0, - 0x00, 0x21, 0x00, 0x39, 0x00, 0x51, 0x00, 0x00, 0x01, 0x06, 0x07, 0x06, - 0x23, 0x22, 0x27, 0x26, 0x35, 0x34, 0x37, 0x36, 0x33, 0x32, 0x17, 0x16, - 0x17, 0x23, 0x26, 0x27, 0x26, 0x23, 0x22, 0x07, 0x06, 0x15, 0x14, 0x17, - 0x16, 0x33, 0x32, 0x37, 0x36, 0x37, 0x03, 0x20, 0x17, 0x16, 0x17, 0x16, - 0x15, 0x10, 0x07, 0x06, 0x07, 0x06, 0x23, 0x22, 0x27, 0x26, 0x27, 0x26, - 0x35, 0x10, 0x37, 0x36, 0x37, 0x36, 0x17, 0x22, 0x07, 0x06, 0x07, 0x06, - 0x15, 0x14, 0x17, 0x16, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x37, 0x36, - 0x35, 0x34, 0x27, 0x26, 0x27, 0x26, 0x04, 0x6a, 0x1c, 0x28, 0x5e, 0xc8, - 0xaf, 0x6f, 0x6f, 0x79, 0x6e, 0xac, 0xd7, 0x56, 0x18, 0x0f, 0x91, 0x24, - 0x4d, 0x24, 0x34, 0x84, 0x46, 0x36, 0x51, 0x46, 0x69, 0x96, 0x35, 0x08, - 0x06, 0xe5, 0x01, 0x04, 0xd0, 0xbf, 0x4f, 0x2c, 0x9f, 0x92, 0xe8, 0x7b, - 0x85, 0xf8, 0xcd, 0xbc, 0x52, 0x31, 0x9c, 0x8e, 0xe0, 0x7e, 0x87, 0xde, - 0xaf, 0xa4, 0x39, 0x19, 0x88, 0x7e, 0xc0, 0x58, 0x5d, 0xe7, 0xb1, 0xa6, - 0x37, 0x16, 0x8b, 0x80, 0xc5, 0x58, 0x02, 0x7f, 0x8a, 0x49, 0xaa, 0x83, - 0x84, 0xd2, 0xe2, 0x86, 0x79, 0xc4, 0x35, 0x44, 0x89, 0x24, 0x11, 0x78, - 0x5c, 0x8c, 0xa2, 0x64, 0x56, 0xbc, 0x1f, 0x23, 0x03, 0x71, 0x9c, 0x8e, - 0xdf, 0x7e, 0x86, 0xfe, 0xf6, 0xd1, 0xc0, 0x4c, 0x29, 0x99, 0x8c, 0xdb, - 0x83, 0x8b, 0x01, 0x04, 0xd0, 0xbf, 0x4f, 0x2d, 0x7f, 0x8d, 0x83, 0xcb, - 0x58, 0x5d, 0xdf, 0xb3, 0xa5, 0x3c, 0x1c, 0x8f, 0x86, 0xcf, 0x54, 0x59, - 0xe2, 0xb2, 0xa6, 0x3a, 0x1a, 0x00, 0x00, 0x03, 0x00, 0x4c, 0x02, 0x6d, - 0x02, 0xaa, 0x05, 0xf0, 0x00, 0x03, 0x00, 0x2d, 0x00, 0x3c, 0x00, 0x00, - 0x01, 0x15, 0x21, 0x35, 0x25, 0x15, 0x06, 0x23, 0x22, 0x27, 0x26, 0x27, - 0x06, 0x23, 0x22, 0x27, 0x26, 0x35, 0x34, 0x37, 0x36, 0x37, 0x36, 0x37, - 0x36, 0x3d, 0x01, 0x34, 0x27, 0x26, 0x23, 0x22, 0x07, 0x06, 0x07, 0x23, - 0x36, 0x37, 0x36, 0x33, 0x32, 0x15, 0x11, 0x14, 0x33, 0x32, 0x27, 0x06, - 0x07, 0x06, 0x07, 0x06, 0x15, 0x14, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, - 0x35, 0x02, 0x8f, 0xfd, 0xc9, 0x02, 0x52, 0x20, 0x22, 0x50, 0x17, 0x06, - 0x03, 0x65, 0x72, 0x81, 0x37, 0x1d, 0x4b, 0x4a, 0xac, 0x4f, 0x10, 0x06, - 0x54, 0x18, 0x1e, 0x53, 0x1d, 0x12, 0x09, 0x79, 0x05, 0xab, 0x29, 0x30, - 0xf9, 0x30, 0x09, 0xad, 0x25, 0x6a, 0x63, 0x20, 0x1d, 0x4e, 0x11, 0x15, - 0x5b, 0x39, 0x27, 0x02, 0xd5, 0x68, 0x68, 0xc3, 0x5b, 0x0c, 0x38, 0x0e, - 0x12, 0x58, 0x57, 0x2f, 0x3f, 0x6b, 0x30, 0x2f, 0x0d, 0x06, 0x1d, 0x0c, - 0x14, 0x1b, 0x44, 0x11, 0x05, 0x27, 0x19, 0x33, 0xb2, 0x24, 0x08, 0xc1, - 0xfe, 0x92, 0x30, 0xfa, 0x10, 0x0f, 0x0e, 0x1b, 0x1a, 0x2d, 0x4c, 0x10, - 0x04, 0x36, 0x25, 0x2c, 0x00, 0x02, 0x00, 0xc9, 0x00, 0xd9, 0x03, 0xa4, - 0x03, 0x81, 0x00, 0x06, 0x00, 0x0d, 0x00, 0x00, 0x13, 0x35, 0x25, 0x15, - 0x07, 0x17, 0x15, 0x37, 0x35, 0x25, 0x15, 0x07, 0x17, 0x15, 0xc9, 0x01, - 0x37, 0xd9, 0xd9, 0x6d, 0x01, 0x37, 0xd9, 0xd9, 0x01, 0xd1, 0xb6, 0xfa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xf8, 0xb6, 0xfa, 0xaa, 0xaa, 0xaa, 0xaa, 0x00, - 0x00, 0x01, 0x00, 0x52, 0x00, 0xb0, 0x04, 0x5a, 0x03, 0x00, 0x00, 0x05, - 0x00, 0x00, 0x13, 0x21, 0x11, 0x23, 0x11, 0x21, 0x52, 0x04, 0x08, 0x8f, - 0xfc, 0x87, 0x03, 0x00, 0xfd, 0xb0, 0x01, 0xc1, 0x00, 0x01, 0x00, 0x5e, - 0x01, 0xec, 0x02, 0x46, 0x02, 0x7f, 0x00, 0x03, 0x00, 0x00, 0x01, 0x15, - 0x21, 0x35, 0x02, 0x46, 0xfe, 0x18, 0x02, 0x7f, 0x93, 0x93, 0x00, 0x04, - 0xff, 0xe5, 0xff, 0xd3, 0x06, 0x02, 0x05, 0xf0, 0x00, 0x1a, 0x00, 0x25, - 0x00, 0x3d, 0x00, 0x55, 0x00, 0x00, 0x01, 0x16, 0x1f, 0x01, 0x16, 0x17, - 0x15, 0x23, 0x26, 0x3f, 0x01, 0x34, 0x27, 0x26, 0x23, 0x21, 0x11, 0x23, - 0x11, 0x21, 0x20, 0x17, 0x16, 0x15, 0x14, 0x07, 0x06, 0x25, 0x21, 0x32, - 0x37, 0x36, 0x35, 0x34, 0x27, 0x26, 0x23, 0x21, 0x13, 0x20, 0x17, 0x16, - 0x17, 0x16, 0x15, 0x10, 0x07, 0x06, 0x07, 0x06, 0x23, 0x22, 0x27, 0x26, - 0x27, 0x26, 0x35, 0x10, 0x37, 0x36, 0x37, 0x36, 0x17, 0x22, 0x07, 0x06, - 0x07, 0x06, 0x15, 0x14, 0x17, 0x16, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, - 0x37, 0x36, 0x35, 0x34, 0x27, 0x26, 0x27, 0x26, 0x03, 0xf6, 0x55, 0x07, - 0x01, 0x05, 0x29, 0xa2, 0x22, 0x04, 0x02, 0x45, 0x1a, 0x25, 0xfe, 0xee, - 0x8f, 0x01, 0xa6, 0x01, 0x07, 0x17, 0x02, 0x2b, 0x17, 0xfe, 0x0b, 0x01, - 0x08, 0x7f, 0x16, 0x05, 0x4d, 0x1f, 0x2e, 0xfe, 0xf8, 0xc7, 0x01, 0x04, - 0xd0, 0xbf, 0x4f, 0x2c, 0x9f, 0x92, 0xe8, 0x7b, 0x85, 0xf8, 0xcd, 0xbc, - 0x52, 0x31, 0x9c, 0x8e, 0xe0, 0x7e, 0x87, 0xde, 0xaf, 0xa4, 0x39, 0x19, - 0x88, 0x7e, 0xc0, 0x58, 0x5d, 0xe7, 0xb1, 0xa6, 0x37, 0x16, 0x8b, 0x80, - 0xc5, 0x58, 0x02, 0xe1, 0x37, 0x6c, 0x8d, 0x41, 0x1e, 0x33, 0x51, 0x4c, - 0x52, 0x6b, 0x18, 0x09, 0xfe, 0x85, 0x03, 0x8f, 0xd5, 0x15, 0x18, 0x5a, - 0x35, 0x1c, 0x1a, 0x59, 0x15, 0x1b, 0x66, 0x19, 0x0a, 0x01, 0xc3, 0x9c, - 0x8e, 0xdf, 0x7e, 0x86, 0xfe, 0xf6, 0xd1, 0xc0, 0x4c, 0x29, 0x99, 0x8c, - 0xdb, 0x83, 0x8b, 0x01, 0x04, 0xd0, 0xbf, 0x4f, 0x2d, 0x7f, 0x8d, 0x83, - 0xcb, 0x58, 0x5d, 0xdf, 0xb3, 0xa5, 0x3c, 0x1c, 0x8f, 0x86, 0xcf, 0x54, - 0x59, 0xe2, 0xb2, 0xa6, 0x3a, 0x1a, 0x00, 0x01, 0x00, 0x39, 0x05, 0x0c, - 0x02, 0x6a, 0x05, 0x9c, 0x00, 0x03, 0x00, 0x00, 0x01, 0x15, 0x21, 0x35, - 0x02, 0x6a, 0xfd, 0xcf, 0x05, 0x9c, 0x90, 0x90, 0x00, 0x02, 0x01, 0x35, - 0x03, 0x10, 0x03, 0xa2, 0x05, 0x7d, 0x00, 0x0e, 0x00, 0x1e, 0x00, 0x00, - 0x01, 0x32, 0x17, 0x16, 0x15, 0x14, 0x07, 0x06, 0x23, 0x22, 0x27, 0x26, - 0x27, 0x34, 0x36, 0x17, 0x22, 0x07, 0x06, 0x15, 0x14, 0x17, 0x16, 0x33, - 0x32, 0x37, 0x36, 0x35, 0x34, 0x27, 0x26, 0x02, 0x6d, 0x80, 0x5b, 0x5a, - 0x5e, 0x5b, 0x81, 0x7c, 0x5a, 0x5b, 0x02, 0xb7, 0x81, 0x59, 0x3c, 0x2e, - 0x44, 0x36, 0x44, 0x5f, 0x3a, 0x2c, 0x45, 0x35, 0x05, 0x7d, 0x5b, 0x5b, - 0x7f, 0x84, 0x5b, 0x59, 0x5a, 0x60, 0x7e, 0x80, 0xb5, 0x75, 0x45, 0x36, - 0x45, 0x59, 0x3c, 0x2e, 0x47, 0x35, 0x47, 0x5a, 0x39, 0x2d, 0x00, 0x02, - 0x00, 0x66, 0xff, 0xe9, 0x04, 0x46, 0x04, 0xfc, 0x00, 0x0b, 0x00, 0x0f, - 0x00, 0x00, 0x01, 0x15, 0x21, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x11, - 0x33, 0x11, 0x01, 0x15, 0x21, 0x35, 0x04, 0x46, 0xfe, 0x58, 0x90, 0xfe, - 0x58, 0x01, 0xa8, 0x90, 0x01, 0xa8, 0xfc, 0x20, 0x03, 0x54, 0x8f, 0xfe, - 0x58, 0x01, 0xa8, 0x8f, 0x01, 0xa8, 0xfe, 0x58, 0xfd, 0x25, 0x90, 0x90, - 0x00, 0x01, 0x00, 0x27, 0x02, 0x46, 0x02, 0x9c, 0x05, 0xac, 0x00, 0x25, - 0x00, 0x00, 0x01, 0x22, 0x07, 0x06, 0x07, 0x23, 0x36, 0x37, 0x36, 0x33, - 0x32, 0x17, 0x16, 0x15, 0x14, 0x07, 0x06, 0x0f, 0x01, 0x06, 0x07, 0x06, - 0x07, 0x21, 0x15, 0x21, 0x36, 0x37, 0x36, 0x37, 0x36, 0x3f, 0x01, 0x36, - 0x35, 0x34, 0x27, 0x26, 0x01, 0x6d, 0x8b, 0x1e, 0x07, 0x03, 0x7f, 0x08, - 0xc6, 0x2e, 0x3a, 0x96, 0x55, 0x40, 0xaa, 0x0d, 0x0e, 0x81, 0x59, 0x21, - 0x10, 0x0b, 0x01, 0xd5, 0xfd, 0x91, 0x08, 0x35, 0x34, 0x8f, 0x02, 0x02, - 0x77, 0x79, 0x43, 0x2f, 0x05, 0x3f, 0x85, 0x1c, 0x29, 0xfe, 0x2e, 0x0b, - 0x5b, 0x44, 0x63, 0x9b, 0x5f, 0x07, 0x07, 0x42, 0x2f, 0x36, 0x1a, 0x25, - 0x76, 0x96, 0x4e, 0x4c, 0x4d, 0x01, 0x01, 0x3f, 0x41, 0x61, 0x4e, 0x2d, - 0x1e, 0x00, 0x00, 0x01, 0x00, 0x21, 0x02, 0x29, 0x02, 0x93, 0x05, 0xac, - 0x00, 0x30, 0x00, 0x00, 0x01, 0x22, 0x07, 0x06, 0x15, 0x23, 0x12, 0x37, - 0x36, 0x33, 0x32, 0x17, 0x16, 0x15, 0x14, 0x07, 0x16, 0x15, 0x14, 0x07, - 0x06, 0x23, 0x22, 0x27, 0x26, 0x35, 0x33, 0x16, 0x17, 0x16, 0x33, 0x32, - 0x37, 0x36, 0x35, 0x34, 0x27, 0x26, 0x27, 0x26, 0x23, 0x35, 0x32, 0x37, - 0x36, 0x35, 0x34, 0x27, 0x26, 0x01, 0x5a, 0x7e, 0x1d, 0x0b, 0x81, 0x06, - 0xf4, 0x16, 0x17, 0xa7, 0x4a, 0x2c, 0x75, 0x91, 0x6d, 0x53, 0x7d, 0xc8, - 0x49, 0x24, 0x7f, 0x07, 0x61, 0x22, 0x30, 0x7d, 0x2a, 0x11, 0x3f, 0x18, - 0x1f, 0x1f, 0x69, 0x99, 0x2b, 0x1e, 0x4d, 0x22, 0x05, 0x3f, 0x5d, 0x23, - 0x36, 0x01, 0x0b, 0x16, 0x02, 0x65, 0x3c, 0x55, 0x78, 0x36, 0x31, 0x9c, - 0x8d, 0x4b, 0x3a, 0x87, 0x41, 0x5b, 0x8b, 0x20, 0x0b, 0x56, 0x22, 0x2d, - 0x51, 0x29, 0x10, 0x06, 0x04, 0x68, 0x26, 0x1b, 0x3c, 0x5a, 0x22, 0x0f, - 0x00, 0x01, 0x00, 0xbc, 0x04, 0xbc, 0x02, 0x68, 0x05, 0xec, 0x00, 0x03, - 0x00, 0x00, 0x01, 0x33, 0x01, 0x23, 0x01, 0x81, 0xe7, 0xfe, 0xcf, 0x7b, - 0x05, 0xec, 0xfe, 0xd0, 0x00, 0x01, 0x00, 0x85, 0xfe, 0x3d, 0x04, 0x5a, - 0x04, 0x31, 0x00, 0x20, 0x00, 0x00, 0x25, 0x15, 0x06, 0x23, 0x22, 0x27, - 0x26, 0x27, 0x06, 0x23, 0x22, 0x27, 0x11, 0x23, 0x11, 0x33, 0x11, 0x14, - 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x35, 0x11, 0x33, 0x11, 0x14, 0x17, - 0x16, 0x33, 0x32, 0x04, 0x5a, 0x44, 0x31, 0x8f, 0x1a, 0x06, 0x01, 0x78, - 0xd6, 0x6f, 0x49, 0xaa, 0xaa, 0x5a, 0x36, 0x4b, 0x93, 0x50, 0x42, 0xaa, - 0x4f, 0x06, 0x07, 0x11, 0x64, 0x81, 0x12, 0x74, 0x18, 0x1e, 0xaa, 0x35, - 0xfe, 0x37, 0x05, 0xf4, 0xfd, 0x08, 0x79, 0x39, 0x21, 0x76, 0x61, 0x94, - 0x02, 0x60, 0xfc, 0x83, 0x4d, 0x06, 0x01, 0x00, 0x00, 0x01, 0x00, 0x62, - 0xfe, 0x96, 0x04, 0x2d, 0x05, 0xd5, 0x00, 0x13, 0x00, 0x00, 0x01, 0x26, - 0x27, 0x26, 0x35, 0x34, 0x37, 0x36, 0x37, 0x36, 0x33, 0x21, 0x15, 0x23, - 0x11, 0x23, 0x11, 0x23, 0x11, 0x23, 0x02, 0x0a, 0xd1, 0x75, 0x62, 0x75, - 0x6f, 0xa8, 0x1f, 0x20, 0x02, 0x00, 0x75, 0x83, 0xa8, 0x83, 0x02, 0x12, - 0x0b, 0x98, 0x7f, 0xb5, 0xc1, 0x8b, 0x84, 0x18, 0x04, 0x83, 0xf9, 0x44, - 0x06, 0xbc, 0xf9, 0x44, 0x00, 0x01, 0x00, 0xb2, 0x02, 0x6a, 0x01, 0xb0, - 0x03, 0x6a, 0x00, 0x03, 0x00, 0x00, 0x01, 0x11, 0x23, 0x11, 0x01, 0xb0, - 0xfe, 0x03, 0x6a, 0xff, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x50, - 0xfe, 0x4a, 0x02, 0x4c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x13, 0x17, - 0x16, 0x33, 0x32, 0x37, 0x36, 0x35, 0x34, 0x27, 0x26, 0x23, 0x22, 0x07, - 0x27, 0x37, 0x33, 0x07, 0x36, 0x33, 0x32, 0x17, 0x16, 0x15, 0x14, 0x07, - 0x06, 0x23, 0x22, 0x27, 0x26, 0x27, 0x7b, 0x6e, 0x2e, 0x2d, 0x43, 0x1e, - 0x0d, 0x3c, 0x0f, 0x13, 0x1f, 0x21, 0x18, 0x56, 0x4e, 0x2f, 0x1a, 0x1f, - 0x7a, 0x1f, 0x09, 0x67, 0x3d, 0x58, 0x50, 0x58, 0x22, 0x36, 0xfe, 0xe1, - 0x32, 0x11, 0x2e, 0x15, 0x19, 0x3a, 0x0e, 0x04, 0x11, 0x0f, 0xbc, 0x73, - 0x04, 0x54, 0x18, 0x1d, 0x6f, 0x31, 0x1e, 0x21, 0x0d, 0x17, 0x00, 0x01, - 0x00, 0x7d, 0x02, 0x46, 0x01, 0xc7, 0x05, 0xac, 0x00, 0x0b, 0x00, 0x00, - 0x01, 0x23, 0x35, 0x37, 0x3e, 0x01, 0x37, 0x36, 0x37, 0x33, 0x11, 0x23, - 0x01, 0x48, 0xcb, 0x1f, 0x6c, 0x4a, 0x18, 0x03, 0x02, 0x58, 0x7f, 0x04, - 0xa4, 0x5e, 0x02, 0x0a, 0x38, 0x56, 0x07, 0x09, 0xfc, 0x9a, 0x00, 0x03, - 0x00, 0x52, 0x02, 0x6d, 0x02, 0x98, 0x05, 0xf0, 0x00, 0x03, 0x00, 0x13, - 0x00, 0x23, 0x00, 0x00, 0x01, 0x15, 0x21, 0x35, 0x01, 0x32, 0x17, 0x16, - 0x15, 0x14, 0x07, 0x06, 0x23, 0x22, 0x27, 0x26, 0x35, 0x34, 0x37, 0x36, - 0x17, 0x22, 0x07, 0x06, 0x15, 0x14, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, - 0x35, 0x34, 0x27, 0x26, 0x02, 0x83, 0xfd, 0xe5, 0x01, 0x0d, 0xbb, 0x45, - 0x23, 0x79, 0x46, 0x64, 0xb1, 0x49, 0x29, 0x82, 0x43, 0x5e, 0x68, 0x2c, - 0x18, 0x56, 0x25, 0x31, 0x65, 0x2d, 0x1a, 0x5b, 0x23, 0x02, 0xd5, 0x68, - 0x68, 0x03, 0x1b, 0xa1, 0x51, 0x73, 0xcf, 0x58, 0x33, 0x92, 0x54, 0x7a, - 0xde, 0x55, 0x2c, 0x6b, 0x68, 0x3a, 0x52, 0xa2, 0x3a, 0x19, 0x64, 0x3a, - 0x53, 0xaa, 0x38, 0x16, 0x00, 0x02, 0x00, 0xc9, 0x00, 0xd9, 0x03, 0x9c, - 0x03, 0x81, 0x00, 0x06, 0x00, 0x0d, 0x00, 0x00, 0x01, 0x15, 0x05, 0x35, - 0x37, 0x27, 0x35, 0x05, 0x15, 0x05, 0x35, 0x37, 0x27, 0x35, 0x02, 0x04, - 0xfe, 0xc5, 0xdd, 0xdd, 0x02, 0xd3, 0xfe, 0xc4, 0xdd, 0xdd, 0x02, 0x89, - 0xb6, 0xfa, 0xaa, 0xaa, 0xaa, 0xaa, 0xf8, 0xb6, 0xfa, 0xaa, 0xaa, 0xaa, - 0xaa, 0x00, 0x00, 0x04, 0x00, 0x7d, 0xff, 0xd7, 0x06, 0xcb, 0x05, 0xac, - 0x00, 0x0b, 0x00, 0x0f, 0x00, 0x1a, 0x00, 0x1d, 0x00, 0x00, 0x01, 0x23, - 0x35, 0x37, 0x3e, 0x01, 0x37, 0x36, 0x37, 0x33, 0x11, 0x23, 0x01, 0x33, - 0x01, 0x23, 0x25, 0x21, 0x35, 0x01, 0x33, 0x11, 0x33, 0x15, 0x23, 0x15, - 0x23, 0x19, 0x01, 0x01, 0x01, 0x48, 0xcb, 0x1f, 0x6c, 0x4a, 0x18, 0x03, - 0x02, 0x58, 0x7f, 0x03, 0xdd, 0x77, 0xfc, 0x62, 0x77, 0x04, 0x3c, 0xfe, - 0x7f, 0x01, 0xa1, 0x5f, 0x89, 0x89, 0x7f, 0xfe, 0xf7, 0x04, 0xa4, 0x5e, - 0x02, 0x0a, 0x38, 0x56, 0x07, 0x09, 0xfc, 0x9a, 0x03, 0x66, 0xfa, 0x2b, - 0xf6, 0x79, 0x02, 0x20, 0xfd, 0xd3, 0x6c, 0xcd, 0x01, 0x39, 0x01, 0x5d, - 0xfe, 0xa3, 0x00, 0x03, 0x00, 0x7d, 0xff, 0xd7, 0x06, 0xc1, 0x05, 0xac, - 0x00, 0x0b, 0x00, 0x0f, 0x00, 0x35, 0x00, 0x00, 0x01, 0x23, 0x35, 0x37, - 0x3e, 0x01, 0x37, 0x36, 0x37, 0x33, 0x11, 0x23, 0x01, 0x33, 0x01, 0x23, - 0x01, 0x22, 0x07, 0x06, 0x07, 0x23, 0x12, 0x37, 0x36, 0x33, 0x32, 0x17, - 0x16, 0x15, 0x14, 0x07, 0x06, 0x0f, 0x01, 0x06, 0x07, 0x06, 0x07, 0x21, - 0x15, 0x21, 0x36, 0x37, 0x36, 0x37, 0x36, 0x3f, 0x01, 0x36, 0x35, 0x34, - 0x27, 0x26, 0x01, 0x48, 0xcb, 0x1f, 0x6c, 0x4a, 0x18, 0x03, 0x02, 0x58, - 0x7f, 0x03, 0xac, 0x76, 0xfc, 0x63, 0x77, 0x04, 0x3b, 0x8f, 0x1c, 0x05, - 0x02, 0x7f, 0x07, 0xd3, 0x2a, 0x32, 0x96, 0x55, 0x40, 0xaa, 0x0d, 0x0e, - 0x81, 0x59, 0x21, 0x10, 0x0c, 0x01, 0xd5, 0xfd, 0x92, 0x08, 0x35, 0x34, - 0x8d, 0x03, 0x03, 0x77, 0x78, 0x43, 0x2e, 0x04, 0xa4, 0x5e, 0x02, 0x0a, - 0x38, 0x56, 0x07, 0x09, 0xfc, 0x9a, 0x03, 0x66, 0xfa, 0x2b, 0x03, 0x23, - 0x8e, 0x1a, 0x23, 0x01, 0x06, 0x29, 0x08, 0x5b, 0x44, 0x63, 0x9a, 0x60, - 0x07, 0x07, 0x41, 0x2f, 0x36, 0x1a, 0x25, 0x77, 0x97, 0x4d, 0x4d, 0x4b, - 0x01, 0x02, 0x3f, 0x40, 0x62, 0x4e, 0x2d, 0x1f, 0x00, 0x04, 0x00, 0x21, - 0xff, 0xd7, 0x06, 0xcb, 0x05, 0xac, 0x00, 0x30, 0x00, 0x34, 0x00, 0x3f, - 0x00, 0x42, 0x00, 0x00, 0x01, 0x22, 0x07, 0x06, 0x15, 0x23, 0x12, 0x37, - 0x36, 0x33, 0x32, 0x17, 0x16, 0x15, 0x14, 0x07, 0x16, 0x15, 0x14, 0x07, - 0x06, 0x23, 0x22, 0x27, 0x26, 0x35, 0x33, 0x16, 0x17, 0x16, 0x33, 0x32, - 0x37, 0x36, 0x35, 0x34, 0x27, 0x26, 0x27, 0x26, 0x23, 0x35, 0x32, 0x37, - 0x36, 0x35, 0x34, 0x27, 0x26, 0x25, 0x33, 0x01, 0x23, 0x25, 0x21, 0x35, - 0x01, 0x33, 0x11, 0x33, 0x15, 0x23, 0x15, 0x23, 0x19, 0x01, 0x01, 0x01, - 0x5a, 0x7e, 0x1d, 0x0b, 0x81, 0x06, 0xf4, 0x16, 0x17, 0xa7, 0x4a, 0x2c, - 0x75, 0x91, 0x6d, 0x53, 0x7d, 0xc8, 0x49, 0x24, 0x7f, 0x07, 0x61, 0x22, - 0x30, 0x7d, 0x2a, 0x11, 0x3f, 0x18, 0x1f, 0x1f, 0x69, 0x99, 0x2b, 0x1e, - 0x4d, 0x22, 0x03, 0xb2, 0x77, 0xfc, 0x62, 0x76, 0x04, 0x27, 0xfe, 0x7f, - 0x01, 0xa1, 0x5f, 0x89, 0x89, 0x7f, 0xfe, 0xf7, 0x05, 0x3f, 0x5d, 0x23, - 0x36, 0x01, 0x0b, 0x16, 0x02, 0x65, 0x3c, 0x55, 0x78, 0x36, 0x31, 0x9c, - 0x8d, 0x4b, 0x3a, 0x87, 0x41, 0x5b, 0x8b, 0x20, 0x0b, 0x56, 0x22, 0x2d, - 0x51, 0x29, 0x10, 0x06, 0x04, 0x68, 0x26, 0x1b, 0x3c, 0x5a, 0x22, 0x0f, - 0x6d, 0xfa, 0x2b, 0xf6, 0x79, 0x02, 0x20, 0xfd, 0xd3, 0x6c, 0xcd, 0x01, - 0x39, 0x01, 0x5d, 0xfe, 0xa3, 0x00, 0xff, 0xff, 0x00, 0xc5, 0xfe, 0x43, - 0x04, 0x39, 0x04, 0x31, 0x10, 0x0f, 0x00, 0x23, 0x04, 0xd7, 0x04, 0x31, - 0xc0, 0x00, 0xff, 0xff, 0x00, 0x23, 0x00, 0x00, 0x05, 0x39, 0x05, 0xd5, - 0x10, 0x27, 0x00, 0xc6, 0x01, 0x58, 0x01, 0x98, 0x10, 0x06, 0x00, 0x25, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x23, 0x00, 0x00, 0x05, 0x39, 0x05, 0xd5, - 0x10, 0x27, 0x00, 0xc5, 0x01, 0x75, 0x01, 0x98, 0x10, 0x06, 0x00, 0x25, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x23, 0x00, 0x00, 0x05, 0x39, 0x05, 0xd5, - 0x10, 0x27, 0x00, 0xc4, 0x01, 0x60, 0x01, 0x98, 0x10, 0x06, 0x00, 0x25, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x23, 0x00, 0x00, 0x05, 0x39, 0x05, 0xd5, - 0x10, 0x27, 0x00, 0xc8, 0x01, 0x66, 0x01, 0x81, 0x10, 0x06, 0x00, 0x25, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x23, 0x00, 0x00, 0x05, 0x39, 0x07, 0x3b, - 0x10, 0x27, 0x00, 0x6b, 0x01, 0x64, 0x01, 0x83, 0x10, 0x06, 0x00, 0x25, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x23, 0x00, 0x00, 0x05, 0x39, 0x05, 0xd5, - 0x10, 0x27, 0x00, 0xc7, 0x01, 0x58, 0x01, 0x98, 0x10, 0x06, 0x00, 0x25, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x17, 0x00, 0x00, 0x07, 0x9a, 0x05, 0xd5, - 0x00, 0x0f, 0x00, 0x13, 0x00, 0x00, 0x01, 0x21, 0x03, 0x23, 0x01, 0x21, - 0x15, 0x21, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x21, 0x19, 0x01, - 0x23, 0x01, 0x03, 0xbe, 0xfd, 0xda, 0xaf, 0xd2, 0x02, 0x64, 0x04, 0xfa, - 0xfd, 0x08, 0x02, 0xd1, 0xfd, 0x2f, 0x03, 0x1d, 0xfc, 0x24, 0xcc, 0xfe, - 0xe5, 0x01, 0xb6, 0xfe, 0x4a, 0x05, 0xd5, 0xa8, 0xfe, 0x23, 0xa8, 0xfe, - 0x00, 0xa8, 0x02, 0x5e, 0x02, 0xcf, 0xfd, 0x31, 0x00, 0x01, 0x00, 0x62, - 0xfe, 0x4a, 0x05, 0x6a, 0x05, 0xee, 0x00, 0x46, 0x00, 0x00, 0x25, 0x32, - 0x37, 0x36, 0x37, 0x33, 0x02, 0x05, 0x06, 0x23, 0x07, 0x36, 0x33, 0x32, - 0x17, 0x16, 0x15, 0x14, 0x07, 0x06, 0x23, 0x22, 0x27, 0x26, 0x27, 0x37, - 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x35, 0x34, 0x27, 0x26, 0x23, 0x22, - 0x07, 0x27, 0x37, 0x26, 0x27, 0x26, 0x27, 0x26, 0x27, 0x26, 0x35, 0x34, - 0x37, 0x12, 0x25, 0x36, 0x33, 0x20, 0x13, 0x16, 0x17, 0x23, 0x26, 0x27, - 0x26, 0x23, 0x22, 0x07, 0x06, 0x11, 0x10, 0x17, 0x16, 0x03, 0x06, 0xdf, - 0x66, 0x3f, 0x1c, 0xc4, 0x3f, 0xfe, 0x31, 0x29, 0x2b, 0x1a, 0x1a, 0x1f, - 0x7a, 0x1f, 0x09, 0x65, 0x3e, 0x59, 0x53, 0x5d, 0x21, 0x2f, 0x2b, 0x68, - 0x32, 0x2f, 0x43, 0x1e, 0x0d, 0x3c, 0x0f, 0x13, 0x1f, 0x21, 0x16, 0x3f, - 0x9a, 0x4f, 0x21, 0x27, 0xb7, 0x49, 0x27, 0x65, 0x92, 0x01, 0x3a, 0x3a, - 0x3f, 0x01, 0xa2, 0x7c, 0x15, 0x0d, 0xc3, 0x2d, 0xa3, 0x50, 0x71, 0xe0, - 0x7e, 0x79, 0x91, 0x82, 0x77, 0x9d, 0x61, 0xac, 0xfd, 0xe0, 0x2c, 0x04, - 0x44, 0x04, 0x54, 0x18, 0x1d, 0x6d, 0x32, 0x1f, 0x24, 0x0c, 0x15, 0x52, - 0x30, 0x13, 0x2e, 0x15, 0x19, 0x3a, 0x0e, 0x04, 0x11, 0x0f, 0x8d, 0x16, - 0x28, 0x11, 0x1b, 0x84, 0xfc, 0x86, 0x98, 0xfc, 0xc5, 0x01, 0x1d, 0x2e, - 0x09, 0xfe, 0x9b, 0x3c, 0x47, 0xdd, 0x42, 0x21, 0xae, 0xa5, 0xfe, 0xe8, - 0xfe, 0xd6, 0xa6, 0x94, 0xff, 0xff, 0x00, 0xb8, 0x00, 0x00, 0x04, 0xe7, - 0x05, 0xd5, 0x10, 0x27, 0x00, 0xc6, 0x01, 0x7b, 0x01, 0x98, 0x10, 0x06, - 0x00, 0x29, 0x00, 0x00, 0xff, 0xff, 0x00, 0xb8, 0x00, 0x00, 0x04, 0xe7, - 0x05, 0xd5, 0x10, 0x27, 0x00, 0xc5, 0x01, 0x6d, 0x01, 0x98, 0x10, 0x06, - 0x00, 0x29, 0x00, 0x00, 0xff, 0xff, 0x00, 0xb8, 0x00, 0x00, 0x04, 0xe7, - 0x05, 0xd5, 0x10, 0x27, 0x00, 0xc4, 0x01, 0x73, 0x01, 0x96, 0x10, 0x06, - 0x00, 0x29, 0x00, 0x00, 0xff, 0xff, 0x00, 0xb8, 0x00, 0x00, 0x04, 0xe7, - 0x07, 0x3b, 0x10, 0x27, 0x00, 0x6b, 0x01, 0x71, 0x01, 0x83, 0x10, 0x06, - 0x00, 0x29, 0x00, 0x00, 0xff, 0xff, 0x00, 0xcd, 0x00, 0x00, 0x01, 0x8d, - 0x05, 0xd5, 0x10, 0x27, 0x00, 0xc6, 0xff, 0xd3, 0x01, 0x98, 0x10, 0x06, - 0x00, 0x2d, 0x00, 0x00, 0xff, 0xff, 0x00, 0xcd, 0x00, 0x00, 0x01, 0x8d, - 0x05, 0xd5, 0x10, 0x27, 0x00, 0xc5, 0xff, 0xd5, 0x01, 0x98, 0x10, 0x06, - 0x00, 0x2d, 0x00, 0x00, 0xff, 0xff, 0x00, 0xcd, 0x00, 0x00, 0x01, 0x8d, - 0x05, 0xd5, 0x10, 0x27, 0x00, 0xc4, 0xff, 0xd5, 0x01, 0x98, 0x10, 0x06, - 0x00, 0x2d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x1c, 0x00, 0x00, 0x02, 0x3d, - 0x07, 0x3b, 0x10, 0x27, 0x00, 0x6b, 0xff, 0xdf, 0x01, 0x83, 0x10, 0x06, - 0x00, 0x2d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x29, 0x00, 0x00, 0x05, 0x56, - 0x05, 0xd5, 0x00, 0x0e, 0x00, 0x1d, 0x00, 0x00, 0x13, 0x23, 0x35, 0x33, - 0x11, 0x21, 0x20, 0x17, 0x16, 0x11, 0x10, 0x07, 0x06, 0x29, 0x01, 0x13, - 0x11, 0x21, 0x20, 0x13, 0x36, 0x35, 0x10, 0x27, 0x26, 0x23, 0x21, 0x11, - 0x21, 0x15, 0xb6, 0x8d, 0x8d, 0x02, 0x42, 0x01, 0x19, 0xa2, 0xa3, 0xb0, - 0xa1, 0xfe, 0xf3, 0xfd, 0xbe, 0xbf, 0x01, 0x62, 0x01, 0x37, 0x61, 0x29, - 0xf2, 0x58, 0x77, 0xfe, 0x9e, 0x01, 0x5e, 0x02, 0xb6, 0x89, 0x02, 0x96, - 0xc6, 0xc7, 0xfe, 0xa4, 0xfe, 0x93, 0xc9, 0xb6, 0x02, 0xb6, 0xfd, 0xf2, - 0x01, 0x20, 0x7a, 0xaa, 0x01, 0xa0, 0x76, 0x2b, 0xfe, 0x12, 0x89, 0x00, - 0xff, 0xff, 0x00, 0x9c, 0x00, 0x00, 0x05, 0x2b, 0x05, 0xd5, 0x10, 0x27, - 0x00, 0xc8, 0x01, 0x98, 0x01, 0x81, 0x10, 0x06, 0x00, 0x32, 0x00, 0x00, - 0xff, 0xff, 0x00, 0x4e, 0xff, 0xd1, 0x05, 0xf0, 0x05, 0xee, 0x10, 0x27, - 0x00, 0xc6, 0x01, 0xcb, 0x01, 0x98, 0x10, 0x06, 0x00, 0x33, 0x00, 0x00, - 0xff, 0xff, 0x00, 0x4e, 0xff, 0xd1, 0x05, 0xf0, 0x05, 0xee, 0x10, 0x27, - 0x00, 0xc5, 0x01, 0xd5, 0x01, 0x98, 0x10, 0x06, 0x00, 0x33, 0x00, 0x00, - 0xff, 0xff, 0x00, 0x4e, 0xff, 0xd1, 0x05, 0xf0, 0x05, 0xee, 0x10, 0x27, - 0x00, 0xc4, 0x01, 0xd1, 0x01, 0x98, 0x10, 0x06, 0x00, 0x33, 0x00, 0x00, - 0xff, 0xff, 0x00, 0x4e, 0xff, 0xd1, 0x05, 0xf0, 0x05, 0xee, 0x10, 0x27, - 0x00, 0xc8, 0x01, 0xd1, 0x01, 0x81, 0x10, 0x06, 0x00, 0x33, 0x00, 0x00, - 0xff, 0xff, 0x00, 0x4e, 0xff, 0xd1, 0x05, 0xf0, 0x07, 0x3b, 0x10, 0x27, - 0x00, 0x6b, 0x01, 0xcf, 0x01, 0x83, 0x10, 0x06, 0x00, 0x33, 0x00, 0x00, - 0x00, 0x01, 0x00, 0xc3, 0x00, 0x46, 0x03, 0xe7, 0x03, 0x6a, 0x00, 0x0b, - 0x00, 0x00, 0x01, 0x17, 0x09, 0x01, 0x07, 0x09, 0x01, 0x27, 0x09, 0x01, - 0x37, 0x01, 0x03, 0x81, 0x64, 0xfe, 0xd5, 0x01, 0x2d, 0x66, 0xfe, 0xd3, - 0xfe, 0xd5, 0x66, 0x01, 0x2d, 0xfe, 0xd5, 0x64, 0x01, 0x2b, 0x03, 0x6a, - 0x66, 0xfe, 0xd5, 0xfe, 0xd3, 0x66, 0x01, 0x2d, 0xfe, 0xd5, 0x64, 0x01, - 0x2d, 0x01, 0x2b, 0x64, 0xfe, 0xd7, 0x00, 0x03, 0x00, 0x3d, 0xff, 0xd1, - 0x05, 0xf4, 0x06, 0x0a, 0x00, 0x1b, 0x00, 0x26, 0x00, 0x31, 0x00, 0x00, - 0x3f, 0x01, 0x26, 0x11, 0x10, 0x37, 0x36, 0x25, 0x36, 0x33, 0x20, 0x17, - 0x37, 0x17, 0x07, 0x16, 0x13, 0x16, 0x15, 0x10, 0x07, 0x06, 0x05, 0x06, - 0x23, 0x20, 0x27, 0x07, 0x13, 0x01, 0x26, 0x23, 0x22, 0x07, 0x06, 0x03, - 0x06, 0x15, 0x14, 0x09, 0x01, 0x16, 0x33, 0x32, 0x37, 0x36, 0x13, 0x36, - 0x35, 0x34, 0x3d, 0xa6, 0x9b, 0xa8, 0x9e, 0x01, 0x05, 0x41, 0x45, 0x01, - 0x17, 0xc0, 0xb2, 0x52, 0xb7, 0x92, 0x16, 0x04, 0xa8, 0x9e, 0xfe, 0xfb, - 0x40, 0x45, 0xfe, 0xd9, 0xc7, 0x9e, 0xd7, 0x03, 0x13, 0x97, 0xc7, 0xe4, - 0x90, 0x94, 0x0a, 0x01, 0x03, 0xb8, 0xfc, 0xe8, 0x97, 0xdc, 0xe2, 0x91, - 0x93, 0x0b, 0x01, 0x27, 0xb6, 0xdb, 0x01, 0x29, 0x01, 0x3e, 0xd2, 0xc7, - 0x2b, 0x0b, 0xa6, 0xc2, 0x49, 0xc7, 0xb7, 0xfe, 0xf1, 0x2b, 0x2c, 0xfe, - 0xc2, 0xd2, 0xc6, 0x2b, 0x0b, 0xb8, 0xac, 0x01, 0x8b, 0x03, 0x5b, 0x83, - 0x9b, 0x9e, 0xfe, 0xf8, 0x12, 0x12, 0xd4, 0x02, 0x62, 0xfc, 0xa1, 0x97, - 0x9a, 0x9e, 0x01, 0x06, 0x13, 0x13, 0xea, 0x00, 0xff, 0xff, 0x00, 0xae, - 0xff, 0xd1, 0x05, 0x29, 0x05, 0xd5, 0x10, 0x27, 0x00, 0xc6, 0x01, 0x98, - 0x01, 0x98, 0x10, 0x06, 0x00, 0x39, 0x00, 0x00, 0xff, 0xff, 0x00, 0xae, - 0xff, 0xd1, 0x05, 0x29, 0x05, 0xd5, 0x10, 0x27, 0x00, 0xc5, 0x01, 0x98, - 0x01, 0x98, 0x10, 0x06, 0x00, 0x39, 0x00, 0x00, 0xff, 0xff, 0x00, 0xae, - 0xff, 0xd1, 0x05, 0x29, 0x05, 0xd5, 0x10, 0x27, 0x00, 0xc4, 0x01, 0x9e, - 0x01, 0x96, 0x10, 0x06, 0x00, 0x39, 0x00, 0x00, 0xff, 0xff, 0x00, 0xae, - 0xff, 0xd1, 0x05, 0x29, 0x07, 0x3b, 0x10, 0x27, 0x00, 0x6b, 0x01, 0x9e, - 0x01, 0x83, 0x10, 0x06, 0x00, 0x39, 0x00, 0x00, 0xff, 0xff, 0x00, 0x1b, - 0x00, 0x00, 0x05, 0x4a, 0x05, 0xd5, 0x10, 0x27, 0x00, 0xc5, 0x01, 0x6a, - 0x01, 0x98, 0x10, 0x06, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x02, 0x00, 0xba, - 0x00, 0x00, 0x04, 0xee, 0x05, 0xd5, 0x00, 0x0e, 0x00, 0x19, 0x00, 0x00, - 0x01, 0x11, 0x23, 0x11, 0x33, 0x15, 0x21, 0x32, 0x17, 0x16, 0x15, 0x14, - 0x07, 0x06, 0x23, 0x25, 0x21, 0x32, 0x37, 0x36, 0x35, 0x34, 0x27, 0x26, - 0x23, 0x21, 0x01, 0x79, 0xbf, 0xbf, 0x01, 0xaa, 0xf0, 0x7b, 0x60, 0x77, - 0x74, 0xb5, 0xfe, 0x2b, 0x01, 0x8d, 0xae, 0x47, 0x26, 0x77, 0x43, 0x61, - 0xfe, 0x73, 0x01, 0x83, 0xfe, 0x7d, 0x05, 0xd5, 0xf6, 0x90, 0x71, 0xb1, - 0xbd, 0x78, 0x75, 0xa8, 0x72, 0x3e, 0x56, 0x9e, 0x43, 0x25, 0x00, 0x01, - 0x00, 0x89, 0xff, 0xe1, 0x04, 0x91, 0x05, 0xd3, 0x00, 0x31, 0x00, 0x00, - 0x01, 0x20, 0x37, 0x36, 0x35, 0x34, 0x27, 0x26, 0x23, 0x22, 0x07, 0x06, - 0x15, 0x11, 0x23, 0x11, 0x34, 0x37, 0x36, 0x33, 0x20, 0x17, 0x16, 0x15, - 0x14, 0x07, 0x06, 0x07, 0x16, 0x17, 0x16, 0x15, 0x10, 0x07, 0x06, 0x23, - 0x22, 0x27, 0x35, 0x16, 0x33, 0x20, 0x37, 0x36, 0x35, 0x34, 0x27, 0x26, - 0x2b, 0x01, 0x02, 0x5a, 0x01, 0x0e, 0x29, 0x07, 0x71, 0x4e, 0x79, 0xd1, - 0x39, 0x19, 0xb4, 0x8b, 0x7d, 0xd1, 0x01, 0x00, 0x85, 0x65, 0x97, 0x03, - 0x0e, 0x71, 0x46, 0x36, 0xdf, 0x79, 0xac, 0x31, 0x3b, 0x2d, 0x2d, 0x01, - 0x23, 0x30, 0x09, 0xec, 0x32, 0x3e, 0x21, 0x03, 0x6a, 0xac, 0x1c, 0x20, - 0x7e, 0x3d, 0x2a, 0x87, 0x3c, 0x60, 0xfb, 0xec, 0x04, 0x42, 0xc2, 0x6d, - 0x62, 0x7e, 0x60, 0x93, 0xbe, 0x66, 0x02, 0x09, 0x1f, 0x7a, 0x5e, 0x5d, - 0xfe, 0xbf, 0x7b, 0x42, 0x0f, 0x99, 0x06, 0xda, 0x29, 0x30, 0xef, 0x27, - 0x09, 0x00, 0xff, 0xff, 0x00, 0x56, 0xff, 0xd1, 0x04, 0x48, 0x04, 0x50, - 0x10, 0x27, 0x00, 0xc6, 0x00, 0xec, 0x00, 0x00, 0x10, 0x06, 0x00, 0x45, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x56, 0xff, 0xd1, 0x04, 0x48, 0x04, 0x50, - 0x10, 0x27, 0x00, 0xc5, 0x00, 0xec, 0xff, 0xfe, 0x10, 0x06, 0x00, 0x45, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x56, 0xff, 0xd1, 0x04, 0x48, 0x04, 0x50, - 0x10, 0x27, 0x00, 0xc4, 0x00, 0xe5, 0x00, 0x00, 0x10, 0x06, 0x00, 0x45, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x56, 0xff, 0xd1, 0x04, 0x48, 0x04, 0x50, - 0x10, 0x27, 0x00, 0xc8, 0x00, 0xe7, 0xff, 0xe3, 0x10, 0x06, 0x00, 0x45, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x56, 0xff, 0xd1, 0x04, 0x48, 0x05, 0x9d, - 0x10, 0x27, 0x00, 0x6b, 0x00, 0xe5, 0xff, 0xe5, 0x10, 0x06, 0x00, 0x45, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x56, 0xff, 0xd1, 0x04, 0x48, 0x04, 0x50, - 0x10, 0x27, 0x00, 0xc7, 0x00, 0xdd, 0x00, 0x00, 0x10, 0x06, 0x00, 0x45, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x46, 0xff, 0xd1, 0x06, 0xc3, 0x04, 0x50, - 0x00, 0x3c, 0x00, 0x4d, 0x00, 0x56, 0x00, 0x00, 0x01, 0x16, 0x17, 0x16, - 0x33, 0x32, 0x37, 0x33, 0x06, 0x07, 0x06, 0x23, 0x22, 0x27, 0x26, 0x2f, - 0x01, 0x06, 0x07, 0x06, 0x23, 0x22, 0x27, 0x26, 0x35, 0x34, 0x37, 0x36, - 0x25, 0x36, 0x33, 0x36, 0x37, 0x36, 0x3d, 0x01, 0x34, 0x27, 0x26, 0x23, - 0x22, 0x07, 0x06, 0x07, 0x23, 0x12, 0x25, 0x36, 0x33, 0x20, 0x17, 0x36, - 0x37, 0x36, 0x33, 0x32, 0x17, 0x16, 0x17, 0x16, 0x15, 0x01, 0x32, 0x37, - 0x36, 0x37, 0x36, 0x3d, 0x01, 0x06, 0x07, 0x06, 0x07, 0x06, 0x15, 0x14, - 0x17, 0x16, 0x01, 0x21, 0x34, 0x27, 0x26, 0x23, 0x22, 0x07, 0x06, 0x03, - 0xac, 0x05, 0xa7, 0x41, 0x4e, 0xd1, 0x4a, 0xac, 0x26, 0x9f, 0x6e, 0x96, - 0xb7, 0x77, 0x24, 0x1a, 0x21, 0xa2, 0x97, 0x3d, 0x44, 0xb3, 0x5e, 0x47, - 0x98, 0x70, 0x01, 0x02, 0x05, 0x05, 0x7e, 0x20, 0x14, 0xa4, 0x23, 0x2a, - 0xb7, 0x31, 0x0d, 0x05, 0xac, 0x0a, 0x01, 0x20, 0x3a, 0x46, 0x01, 0x07, - 0x5f, 0x51, 0x96, 0x3c, 0x3f, 0xc0, 0x83, 0x48, 0x26, 0x2b, 0xfb, 0x02, - 0x9e, 0x6a, 0x36, 0x08, 0x01, 0x43, 0x9f, 0x94, 0x37, 0x67, 0x5b, 0x30, - 0x02, 0x2d, 0x02, 0x5a, 0x63, 0x4f, 0x75, 0x93, 0x56, 0x41, 0x01, 0xdf, - 0xfe, 0x52, 0x20, 0xd7, 0xcf, 0x62, 0x44, 0x65, 0x1f, 0x26, 0x37, 0xa8, - 0x29, 0x10, 0x6e, 0x53, 0x7c, 0xbc, 0x50, 0x3b, 0x17, 0x01, 0x0b, 0x27, - 0x18, 0x2e, 0x2d, 0x82, 0x19, 0x05, 0x73, 0x20, 0x2b, 0x01, 0x1e, 0x34, - 0x0a, 0xa8, 0x72, 0x27, 0x0f, 0x79, 0x44, 0x5e, 0x73, 0xe3, 0xfe, 0x87, - 0x6f, 0x38, 0x2d, 0x05, 0x03, 0xce, 0x1d, 0x17, 0x16, 0x18, 0x2e, 0x6e, - 0x69, 0x2c, 0x17, 0x02, 0x04, 0xa2, 0x5c, 0x4a, 0x72, 0x55, 0x00, 0x01, - 0x00, 0x3f, 0xfe, 0x4a, 0x03, 0xd1, 0x04, 0x50, 0x00, 0x3e, 0x00, 0x00, - 0x05, 0x24, 0x03, 0x26, 0x35, 0x10, 0x37, 0x36, 0x33, 0x32, 0x17, 0x16, - 0x17, 0x23, 0x26, 0x27, 0x26, 0x23, 0x22, 0x07, 0x06, 0x15, 0x14, 0x17, - 0x16, 0x33, 0x32, 0x13, 0x33, 0x06, 0x07, 0x06, 0x23, 0x07, 0x36, 0x33, - 0x32, 0x17, 0x16, 0x15, 0x14, 0x07, 0x06, 0x23, 0x22, 0x27, 0x26, 0x27, - 0x37, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x35, 0x34, 0x27, 0x26, 0x23, - 0x22, 0x07, 0x27, 0x01, 0xcd, 0xfe, 0xf2, 0x59, 0x27, 0x8b, 0x82, 0xd1, - 0xf3, 0x6d, 0x3d, 0x0b, 0xac, 0x18, 0x83, 0x2c, 0x37, 0xa5, 0x4e, 0x36, - 0x7a, 0x49, 0x6a, 0xda, 0x2c, 0xac, 0x0c, 0x8b, 0x72, 0xab, 0x1b, 0x1d, - 0x1c, 0x77, 0x21, 0x0a, 0x67, 0x3d, 0x58, 0x4f, 0x53, 0x24, 0x3a, 0x2b, - 0x69, 0x31, 0x2f, 0x42, 0x1f, 0x0e, 0x3d, 0x0f, 0x13, 0x20, 0x1f, 0x19, - 0x2b, 0x32, 0x01, 0x05, 0x70, 0x8a, 0x01, 0x14, 0xa1, 0x95, 0xa5, 0x5c, - 0x86, 0xa9, 0x30, 0x10, 0x9b, 0x6c, 0xa7, 0xf0, 0x69, 0x3e, 0x01, 0x04, - 0xd3, 0x71, 0x5c, 0x44, 0x04, 0x51, 0x19, 0x1f, 0x6f, 0x31, 0x1e, 0x1e, - 0x0c, 0x19, 0x54, 0x30, 0x13, 0x2e, 0x15, 0x19, 0x3a, 0x0e, 0x04, 0x11, - 0x0f, 0x00, 0xff, 0xff, 0x00, 0x52, 0xff, 0xd1, 0x04, 0x1b, 0x04, 0x50, - 0x10, 0x27, 0x00, 0xc6, 0x00, 0xf2, 0x00, 0x00, 0x10, 0x06, 0x00, 0x49, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x52, 0xff, 0xd1, 0x04, 0x1b, 0x04, 0x50, - 0x10, 0x27, 0x00, 0xc5, 0x00, 0xf6, 0xff, 0xfe, 0x10, 0x06, 0x00, 0x49, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x52, 0xff, 0xd1, 0x04, 0x1b, 0x04, 0x50, - 0x10, 0x27, 0x00, 0xc4, 0x00, 0xfc, 0x00, 0x02, 0x10, 0x06, 0x00, 0x49, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x52, 0xff, 0xd1, 0x04, 0x1b, 0x05, 0x9d, - 0x10, 0x27, 0x00, 0x6b, 0x00, 0xf0, 0xff, 0xe5, 0x10, 0x06, 0x00, 0x49, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x26, 0x00, 0xc6, 0xcb, 0xfc, 0x10, 0x06, 0x00, 0xc3, 0x00, 0x00, - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x26, - 0x00, 0xc5, 0xc9, 0xfe, 0x10, 0x06, 0x00, 0xc3, 0x00, 0x00, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x26, 0x00, 0xc4, - 0xc9, 0x00, 0x10, 0x06, 0x00, 0xc3, 0x00, 0x00, 0xff, 0xff, 0x00, 0x06, - 0x04, 0xca, 0x02, 0x27, 0x05, 0x9d, 0x10, 0x26, 0x00, 0x6b, 0xc9, 0xe5, - 0x10, 0x06, 0x00, 0xc3, 0x00, 0x00, 0x00, 0x02, 0x00, 0x4a, 0xff, 0xd1, - 0x04, 0x14, 0x05, 0xf2, 0x00, 0x24, 0x00, 0x34, 0x00, 0x00, 0x13, 0x10, - 0x37, 0x36, 0x33, 0x32, 0x17, 0x26, 0x27, 0x26, 0x27, 0x07, 0x27, 0x37, - 0x26, 0x27, 0x26, 0x27, 0x37, 0x16, 0x17, 0x16, 0x17, 0x37, 0x17, 0x07, - 0x16, 0x17, 0x16, 0x11, 0x10, 0x07, 0x06, 0x23, 0x20, 0x27, 0x26, 0x01, - 0x22, 0x07, 0x06, 0x15, 0x14, 0x17, 0x16, 0x33, 0x32, 0x37, 0x36, 0x35, - 0x34, 0x27, 0x26, 0x4a, 0xc7, 0x6d, 0x8a, 0x33, 0x4e, 0x48, 0x64, 0x0b, - 0x11, 0xc7, 0x4a, 0xae, 0x38, 0x64, 0x05, 0x07, 0x5a, 0x45, 0x5f, 0x19, - 0x27, 0xc6, 0x52, 0xb8, 0x99, 0x57, 0xd0, 0xb7, 0x77, 0xb7, 0xfe, 0xf3, - 0x7d, 0x5b, 0x01, 0xe5, 0x9f, 0x53, 0x41, 0x75, 0x4c, 0x72, 0x9d, 0x53, - 0x43, 0x7e, 0x4a, 0x02, 0x10, 0x01, 0x5d, 0x90, 0x4f, 0x1b, 0x4a, 0x54, - 0x09, 0x0f, 0x5c, 0x50, 0x52, 0x2b, 0x39, 0x03, 0x04, 0x5a, 0x1d, 0x3b, - 0x10, 0x19, 0x5c, 0x4c, 0x54, 0x75, 0x6a, 0xfb, 0xfe, 0xbf, 0xfe, 0xb1, - 0x92, 0x60, 0xc7, 0x91, 0x02, 0x89, 0x8a, 0x6d, 0xab, 0xea, 0x6e, 0x49, - 0x86, 0x6c, 0xa9, 0xfd, 0x6c, 0x3f, 0xff, 0xff, 0x00, 0x8f, 0x00, 0x00, - 0x03, 0xe5, 0x04, 0x50, 0x10, 0x27, 0x00, 0xc8, 0x00, 0xee, 0xff, 0xe3, - 0x10, 0x06, 0x00, 0x52, 0x00, 0x00, 0xff, 0xff, 0x00, 0x4a, 0xff, 0xd1, - 0x04, 0x14, 0x04, 0x50, 0x10, 0x27, 0x00, 0xc6, 0x00, 0xdf, 0x00, 0x02, - 0x10, 0x06, 0x00, 0x53, 0x00, 0x00, 0xff, 0xff, 0x00, 0x4a, 0xff, 0xd1, - 0x04, 0x14, 0x04, 0x50, 0x10, 0x27, 0x00, 0xc5, 0x00, 0xe1, 0x00, 0x00, - 0x10, 0x06, 0x00, 0x53, 0x00, 0x00, 0xff, 0xff, 0x00, 0x4a, 0xff, 0xd1, - 0x04, 0x14, 0x04, 0x50, 0x10, 0x27, 0x00, 0xc4, 0x00, 0xe1, 0x00, 0x02, - 0x10, 0x06, 0x00, 0x53, 0x00, 0x00, 0xff, 0xff, 0x00, 0x4a, 0xff, 0xd1, - 0x04, 0x14, 0x04, 0x50, 0x10, 0x27, 0x00, 0xc8, 0x00, 0xe1, 0xff, 0xe3, - 0x10, 0x06, 0x00, 0x53, 0x00, 0x00, 0xff, 0xff, 0x00, 0x4a, 0xff, 0xd1, - 0x04, 0x14, 0x05, 0x9d, 0x10, 0x27, 0x00, 0x6b, 0x00, 0xdf, 0xff, 0xe5, - 0x10, 0x06, 0x00, 0x53, 0x00, 0x00, 0x00, 0x03, 0x00, 0x66, 0x00, 0x00, - 0x04, 0x46, 0x03, 0xc7, 0x00, 0x03, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x00, - 0x01, 0x15, 0x21, 0x35, 0x01, 0x15, 0x23, 0x35, 0x13, 0x15, 0x23, 0x35, - 0x04, 0x46, 0xfc, 0x20, 0x02, 0x5b, 0xd5, 0xd5, 0xd5, 0x02, 0x2b, 0x8f, - 0x8f, 0xfe, 0xaa, 0xd5, 0xd5, 0x02, 0xf2, 0xd5, 0xd5, 0x00, 0x00, 0x03, - 0x00, 0x25, 0xff, 0xc3, 0x04, 0x3b, 0x04, 0x50, 0x00, 0x17, 0x00, 0x20, - 0x00, 0x2b, 0x00, 0x00, 0x01, 0x07, 0x16, 0x15, 0x10, 0x07, 0x06, 0x23, - 0x22, 0x27, 0x07, 0x27, 0x37, 0x26, 0x35, 0x10, 0x37, 0x36, 0x33, 0x32, - 0x17, 0x16, 0x17, 0x37, 0x03, 0x01, 0x16, 0x33, 0x32, 0x37, 0x36, 0x35, - 0x34, 0x09, 0x01, 0x26, 0x27, 0x26, 0x23, 0x22, 0x07, 0x06, 0x15, 0x14, - 0x04, 0x3b, 0x81, 0x5a, 0xa1, 0x7c, 0xc6, 0xd2, 0x7c, 0x7d, 0x41, 0x87, - 0x62, 0xa1, 0x7d, 0xc7, 0xc6, 0x81, 0x07, 0x06, 0x77, 0xbd, 0xfe, 0x19, - 0x58, 0x81, 0xa3, 0x52, 0x3e, 0xfd, 0xc5, 0x01, 0xe9, 0x49, 0x79, 0x0f, - 0x10, 0x9f, 0x53, 0x41, 0x04, 0x17, 0x92, 0x94, 0xe1, 0xfe, 0xce, 0x98, - 0x75, 0x7f, 0x8d, 0x39, 0x97, 0x92, 0xeb, 0x01, 0x31, 0x98, 0x77, 0x78, - 0x07, 0x06, 0x85, 0xfe, 0xa8, 0xfd, 0xd9, 0x62, 0x8e, 0x6b, 0xa8, 0x89, - 0xfe, 0x88, 0x02, 0x27, 0x5c, 0x0c, 0x02, 0x8a, 0x6d, 0xab, 0x8c, 0x00, - 0xff, 0xff, 0x00, 0x85, 0xff, 0xd1, 0x03, 0xdb, 0x04, 0x31, 0x10, 0x27, - 0x00, 0xc6, 0x00, 0xdd, 0xff, 0xfe, 0x10, 0x06, 0x00, 0x59, 0x00, 0x00, - 0xff, 0xff, 0x00, 0x85, 0xff, 0xd1, 0x03, 0xdb, 0x04, 0x31, 0x10, 0x27, - 0x00, 0xc5, 0x00, 0xdd, 0x00, 0x00, 0x10, 0x06, 0x00, 0x59, 0x00, 0x00, - 0xff, 0xff, 0x00, 0x85, 0xff, 0xd1, 0x03, 0xdb, 0x04, 0x31, 0x10, 0x27, - 0x00, 0xc4, 0x00, 0xe3, 0x00, 0x02, 0x10, 0x06, 0x00, 0x59, 0x00, 0x00, - 0xff, 0xff, 0x00, 0x85, 0xff, 0xd1, 0x03, 0xdb, 0x05, 0x9d, 0x10, 0x27, - 0x00, 0x6b, 0x00, 0xe1, 0xff, 0xe5, 0x10, 0x06, 0x00, 0x59, 0x00, 0x00, - 0xff, 0xff, 0x00, 0x29, 0xfe, 0x42, 0x03, 0xd3, 0x04, 0x31, 0x10, 0x27, - 0x00, 0xc5, 0x00, 0xa6, 0xff, 0xfe, 0x10, 0x06, 0x00, 0x5d, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x6f, 0xfe, 0x42, 0x04, 0x2d, 0x05, 0xb6, 0x00, 0x14, - 0x00, 0x24, 0x00, 0x00, 0x13, 0x11, 0x33, 0x11, 0x36, 0x37, 0x36, 0x33, - 0x32, 0x17, 0x16, 0x11, 0x10, 0x07, 0x06, 0x23, 0x22, 0x27, 0x26, 0x27, - 0x11, 0x01, 0x22, 0x07, 0x06, 0x15, 0x14, 0x17, 0x16, 0x33, 0x32, 0x37, - 0x36, 0x35, 0x34, 0x27, 0x26, 0x6f, 0xaa, 0x59, 0x9f, 0x27, 0x2a, 0xd0, - 0x7c, 0x7f, 0x88, 0x7c, 0xc7, 0xa9, 0x72, 0x17, 0x17, 0x01, 0x2b, 0x91, - 0x53, 0x47, 0x6b, 0x4d, 0x73, 0x91, 0x57, 0x4f, 0x6d, 0x51, 0xfe, 0x42, - 0x07, 0x74, 0xfd, 0xf6, 0x7f, 0x1e, 0x07, 0x9d, 0xa0, 0xfe, 0xf3, 0xfe, - 0xf5, 0x9c, 0x8e, 0x6d, 0x17, 0x1c, 0xfd, 0xd1, 0x05, 0x6e, 0x81, 0x6f, - 0xb0, 0xdb, 0x72, 0x52, 0x7a, 0x70, 0xaf, 0xdc, 0x73, 0x57, 0xff, 0xff, - 0x00, 0x29, 0xfe, 0x42, 0x03, 0xd3, 0x05, 0x9d, 0x10, 0x27, 0x00, 0x6b, - 0x00, 0xb0, 0xff, 0xe5, 0x10, 0x06, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x01, 0x9e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x00, 0x9c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0c, 0x00, 0xb7, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x4a, 0x00, 0xcc, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, 0x01, 0x3e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x34, 0x01, 0x5c, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x01, 0xad, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x8c, 0x01, 0xc8, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x48, 0x02, 0x9d, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x58, 0x03, 0x0c, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x68, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x00, 0xae, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0xc5, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x25, 0x01, 0x18, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x09, 0x01, 0x52, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x1a, 0x01, 0x92, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x08, 0x01, 0xbf, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x46, 0x02, 0x56, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x24, 0x02, 0xe7, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x2c, 0x03, 0x66, 0x00, 0x03, - 0x00, 0x01, 0x04, 0x09, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x01, 0x04, 0x09, 0x00, 0x01, 0x00, 0x10, 0x00, 0x9c, 0x00, 0x03, - 0x00, 0x01, 0x04, 0x09, 0x00, 0x02, 0x00, 0x0c, 0x00, 0xb7, 0x00, 0x03, - 0x00, 0x01, 0x04, 0x09, 0x00, 0x03, 0x00, 0x4a, 0x00, 0xcc, 0x00, 0x03, - 0x00, 0x01, 0x04, 0x09, 0x00, 0x04, 0x00, 0x12, 0x01, 0x3e, 0x00, 0x03, - 0x00, 0x01, 0x04, 0x09, 0x00, 0x05, 0x00, 0x34, 0x01, 0x5c, 0x00, 0x03, - 0x00, 0x01, 0x04, 0x09, 0x00, 0x06, 0x00, 0x10, 0x01, 0xad, 0x00, 0x03, - 0x00, 0x01, 0x04, 0x09, 0x00, 0x0d, 0x00, 0x8c, 0x01, 0xc8, 0x00, 0x03, - 0x00, 0x01, 0x04, 0x09, 0x00, 0x0e, 0x00, 0x48, 0x02, 0x9d, 0x00, 0x03, - 0x00, 0x01, 0x04, 0x09, 0x00, 0x13, 0x00, 0x58, 0x03, 0x0c, 0x00, 0x03, - 0x00, 0x01, 0x04, 0x24, 0x00, 0x02, 0x00, 0x0e, 0x03, 0x93, 0x00, 0x03, - 0x00, 0x01, 0x04, 0x24, 0x00, 0x0d, 0x00, 0x86, 0x03, 0xa3, 0x00, 0x03, - 0x00, 0x01, 0x04, 0x24, 0x00, 0x0e, 0x00, 0x48, 0x04, 0x2b, 0x00, 0x03, - 0x00, 0x01, 0x04, 0x24, 0x00, 0x13, 0x00, 0x54, 0x04, 0x75, 0x00, 0x43, - 0x00, 0x6f, 0x00, 0x70, 0x00, 0x79, 0x00, 0x6c, 0x00, 0x65, 0x00, 0x66, - 0x00, 0x74, 0x00, 0x20, 0x00, 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, 0x32, - 0x00, 0x2c, 0x00, 0x20, 0x00, 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, 0x33, - 0x00, 0x2c, 0x00, 0x20, 0x00, 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, 0x35, - 0x00, 0x20, 0x00, 0x46, 0x00, 0x72, 0x00, 0x65, 0x00, 0x65, 0x00, 0x20, - 0x00, 0x53, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x74, 0x00, 0x77, 0x00, 0x61, - 0x00, 0x72, 0x00, 0x65, 0x00, 0x20, 0x00, 0x46, 0x00, 0x6f, 0x00, 0x75, - 0x00, 0x6e, 0x00, 0x64, 0x00, 0x61, 0x00, 0x74, 0x00, 0x69, 0x00, 0x6f, - 0x00, 0x6e, 0x00, 0x2e, 0x00, 0x00, 0x43, 0x6f, 0x70, 0x79, 0x6c, 0x65, - 0x66, 0x74, 0x20, 0x32, 0x30, 0x30, 0x32, 0x2c, 0x20, 0x32, 0x30, 0x30, - 0x33, 0x2c, 0x20, 0x32, 0x30, 0x30, 0x35, 0x20, 0x46, 0x72, 0x65, 0x65, - 0x20, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x20, 0x46, 0x6f, - 0x75, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x00, 0x00, 0x46, - 0x00, 0x72, 0x00, 0x65, 0x00, 0x65, 0x00, 0x53, 0x00, 0x61, 0x00, 0x6e, - 0x00, 0x73, 0x00, 0x00, 0x46, 0x72, 0x65, 0x65, 0x53, 0x61, 0x6e, 0x73, - 0x00, 0x00, 0x4d, 0x00, 0x65, 0x00, 0x64, 0x00, 0x69, 0x00, 0x75, 0x00, - 0x6d, 0x00, 0x00, 0x4d, 0x65, 0x64, 0x69, 0x75, 0x6d, 0x00, 0x00, 0x46, - 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x46, 0x00, 0x6f, 0x00, 0x72, - 0x00, 0x67, 0x00, 0x65, 0x00, 0x20, 0x00, 0x31, 0x00, 0x2e, 0x00, 0x30, - 0x00, 0x20, 0x00, 0x3a, 0x00, 0x20, 0x00, 0x46, 0x00, 0x72, 0x00, 0x65, - 0x00, 0x65, 0x00, 0x20, 0x00, 0x53, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x73, - 0x00, 0x20, 0x00, 0x3a, 0x00, 0x20, 0x00, 0x32, 0x00, 0x36, 0x00, 0x2d, - 0x00, 0x31, 0x00, 0x2d, 0x00, 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, 0x36, - 0x00, 0x00, 0x46, 0x6f, 0x6e, 0x74, 0x46, 0x6f, 0x72, 0x67, 0x65, 0x20, - 0x31, 0x2e, 0x30, 0x20, 0x3a, 0x20, 0x46, 0x72, 0x65, 0x65, 0x20, 0x53, - 0x61, 0x6e, 0x73, 0x20, 0x3a, 0x20, 0x32, 0x36, 0x2d, 0x31, 0x2d, 0x32, - 0x30, 0x30, 0x36, 0x00, 0x00, 0x46, 0x00, 0x72, 0x00, 0x65, 0x00, 0x65, - 0x00, 0x20, 0x00, 0x53, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x73, 0x00, 0x00, - 0x46, 0x72, 0x65, 0x65, 0x20, 0x53, 0x61, 0x6e, 0x73, 0x00, 0x00, 0x56, - 0x00, 0x65, 0x00, 0x72, 0x00, 0x73, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e, - 0x00, 0x20, 0x00, 0x24, 0x00, 0x52, 0x00, 0x65, 0x00, 0x76, 0x00, 0x69, - 0x00, 0x73, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x3a, 0x00, 0x20, - 0x00, 0x31, 0x00, 0x2e, 0x00, 0x37, 0x00, 0x36, 0x00, 0x20, 0x00, 0x24, - 0x00, 0x20, 0x00, 0x00, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, - 0x24, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x31, - 0x2e, 0x37, 0x36, 0x20, 0x24, 0x20, 0x00, 0x00, 0x46, 0x00, 0x72, 0x00, - 0x65, 0x00, 0x65, 0x00, 0x53, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x73, 0x00, - 0x00, 0x46, 0x72, 0x65, 0x65, 0x53, 0x61, 0x6e, 0x73, 0x00, 0x00, 0x54, - 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x75, 0x00, 0x73, 0x00, 0x65, - 0x00, 0x20, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, - 0x00, 0x69, 0x00, 0x73, 0x00, 0x20, 0x00, 0x66, 0x00, 0x6f, 0x00, 0x6e, - 0x00, 0x74, 0x00, 0x20, 0x00, 0x69, 0x00, 0x73, 0x00, 0x20, 0x00, 0x67, - 0x00, 0x72, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x65, 0x00, 0x64, - 0x00, 0x20, 0x00, 0x73, 0x00, 0x75, 0x00, 0x62, 0x00, 0x6a, 0x00, 0x65, - 0x00, 0x63, 0x00, 0x74, 0x00, 0x20, 0x00, 0x74, 0x00, 0x6f, 0x00, 0x20, - 0x00, 0x47, 0x00, 0x4e, 0x00, 0x55, 0x00, 0x20, 0x00, 0x47, 0x00, 0x65, - 0x00, 0x6e, 0x00, 0x65, 0x00, 0x72, 0x00, 0x61, 0x00, 0x6c, 0x00, 0x20, - 0x00, 0x50, 0x00, 0x75, 0x00, 0x62, 0x00, 0x6c, 0x00, 0x69, 0x00, 0x63, - 0x00, 0x20, 0x00, 0x4c, 0x00, 0x69, 0x00, 0x63, 0x00, 0x65, 0x00, 0x6e, - 0x00, 0x73, 0x00, 0x65, 0x00, 0x2e, 0x00, 0x00, 0x54, 0x68, 0x65, 0x20, - 0x75, 0x73, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, - 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x69, 0x73, 0x20, 0x67, 0x72, 0x61, 0x6e, - 0x74, 0x65, 0x64, 0x20, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x20, - 0x74, 0x6f, 0x20, 0x47, 0x4e, 0x55, 0x20, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x6c, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x4c, 0x69, - 0x63, 0x65, 0x6e, 0x73, 0x65, 0x2e, 0x00, 0x00, 0x68, 0x00, 0x74, 0x00, - 0x74, 0x00, 0x70, 0x00, 0x3a, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x77, 0x00, - 0x77, 0x00, 0x77, 0x00, 0x2e, 0x00, 0x67, 0x00, 0x6e, 0x00, 0x75, 0x00, - 0x2e, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x67, 0x00, 0x2f, 0x00, 0x63, 0x00, - 0x6f, 0x00, 0x70, 0x00, 0x79, 0x00, 0x6c, 0x00, 0x65, 0x00, 0x66, 0x00, - 0x74, 0x00, 0x2f, 0x00, 0x67, 0x00, 0x70, 0x00, 0x6c, 0x00, 0x2e, 0x00, - 0x68, 0x00, 0x74, 0x00, 0x6d, 0x00, 0x6c, 0x00, 0x00, 0x68, 0x74, 0x74, - 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6e, 0x75, 0x2e, - 0x6f, 0x72, 0x67, 0x2f, 0x63, 0x6f, 0x70, 0x79, 0x6c, 0x65, 0x66, 0x74, - 0x2f, 0x67, 0x70, 0x6c, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x00, 0x00, 0x54, - 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x71, 0x00, 0x75, 0x00, 0x69, - 0x00, 0x63, 0x00, 0x6b, 0x00, 0x20, 0x00, 0x62, 0x00, 0x72, 0x00, 0x6f, - 0x00, 0x77, 0x00, 0x6e, 0x00, 0x20, 0x00, 0x66, 0x00, 0x6f, 0x00, 0x78, - 0x00, 0x20, 0x00, 0x6a, 0x00, 0x75, 0x00, 0x6d, 0x00, 0x70, 0x00, 0x73, - 0x00, 0x20, 0x00, 0x6f, 0x00, 0x76, 0x00, 0x65, 0x00, 0x72, 0x00, 0x20, - 0x00, 0x74, 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x6c, 0x00, 0x61, - 0x00, 0x7a, 0x00, 0x79, 0x00, 0x20, 0x00, 0x64, 0x00, 0x6f, 0x00, 0x67, - 0x00, 0x2e, 0x00, 0x00, 0x54, 0x68, 0x65, 0x20, 0x71, 0x75, 0x69, 0x63, - 0x6b, 0x20, 0x62, 0x72, 0x6f, 0x77, 0x6e, 0x20, 0x66, 0x6f, 0x78, 0x20, - 0x6a, 0x75, 0x6d, 0x70, 0x73, 0x20, 0x6f, 0x76, 0x65, 0x72, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x6c, 0x61, 0x7a, 0x79, 0x20, 0x64, 0x6f, 0x67, 0x2e, - 0x00, 0x00, 0x6e, 0x00, 0x61, 0x00, 0x76, 0x00, 0x61, 0x00, 0x64, 0x00, - 0x6e, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x44, 0x00, 0x6f, 0x00, 0x76, 0x00, - 0x6f, 0x00, 0x6c, 0x00, 0x6a, 0x00, 0x65, 0x00, 0x6e, 0x00, 0x61, 0x00, - 0x20, 0x00, 0x6a, 0x00, 0x65, 0x00, 0x20, 0x00, 0x75, 0x00, 0x70, 0x00, - 0x6f, 0x00, 0x72, 0x00, 0x61, 0x00, 0x62, 0x00, 0x61, 0x00, 0x20, 0x00, - 0x76, 0x00, 0x20, 0x00, 0x73, 0x00, 0x6b, 0x00, 0x6c, 0x00, 0x61, 0x00, - 0x64, 0x00, 0x75, 0x00, 0x20, 0x00, 0x7a, 0x00, 0x20, 0x00, 0x6c, 0x00, - 0x69, 0x00, 0x63, 0x00, 0x65, 0x00, 0x6e, 0x00, 0x63, 0x00, 0x6f, 0x00, - 0x20, 0x00, 0x47, 0x00, 0x4e, 0x00, 0x55, 0x00, 0x20, 0x00, 0x47, 0x00, - 0x65, 0x00, 0x6e, 0x00, 0x65, 0x00, 0x72, 0x00, 0x61, 0x00, 0x6c, 0x00, - 0x20, 0x00, 0x50, 0x00, 0x75, 0x00, 0x62, 0x00, 0x6c, 0x00, 0x69, 0x00, - 0x63, 0x00, 0x20, 0x00, 0x4c, 0x00, 0x69, 0x00, 0x63, 0x00, 0x65, 0x00, - 0x6e, 0x00, 0x73, 0x00, 0x65, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x68, 0x00, - 0x74, 0x00, 0x74, 0x00, 0x70, 0x00, 0x3a, 0x00, 0x2f, 0x00, 0x2f, 0x00, - 0x77, 0x00, 0x77, 0x00, 0x77, 0x00, 0x2e, 0x00, 0x67, 0x00, 0x6e, 0x00, - 0x75, 0x00, 0x2e, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x67, 0x00, 0x2f, 0x00, - 0x63, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x79, 0x00, 0x6c, 0x00, 0x65, 0x00, - 0x66, 0x00, 0x74, 0x00, 0x2f, 0x00, 0x67, 0x00, 0x70, 0x00, 0x6c, 0x00, - 0x2e, 0x00, 0x68, 0x00, 0x74, 0x00, 0x6d, 0x00, 0x6c, 0x00, 0x00, 0x01, - 0x60, 0x00, 0x65, 0x00, 0x72, 0x00, 0x69, 0x00, 0x66, 0x00, 0x20, 0x00, - 0x62, 0x00, 0x6f, 0x00, 0x20, 0x00, 0x7a, 0x00, 0x61, 0x00, 0x20, 0x00, - 0x76, 0x00, 0x61, 0x00, 0x6a, 0x00, 0x6f, 0x00, 0x20, 0x00, 0x73, 0x00, - 0x70, 0x00, 0x65, 0x00, 0x74, 0x00, 0x20, 0x00, 0x6b, 0x00, 0x75, 0x00, - 0x68, 0x00, 0x61, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x64, 0x00, 0x6f, 0x00, - 0x6d, 0x00, 0x61, 0x01, 0x0d, 0x00, 0x65, 0x00, 0x20, 0x01, 0x7e, 0x00, - 0x67, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x63, 0x00, 0x65, 0x00, 0x2e, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xfe, 0xcb, 0x00, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xc9, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x01, 0x02, 0x00, 0x03, - 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, - 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, - 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, - 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, - 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, - 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, - 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, - 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, - 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x39, - 0x00, 0x3a, 0x00, 0x3b, 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3f, - 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, - 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00, 0x49, 0x00, 0x4a, 0x00, 0x4b, - 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x51, - 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, - 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5d, - 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x60, 0x00, 0x61, 0x00, 0xac, 0x00, 0xa3, - 0x00, 0x84, 0x00, 0x85, 0x00, 0xbd, 0x00, 0x96, 0x00, 0xe8, 0x00, 0x86, - 0x00, 0x8e, 0x00, 0x8b, 0x00, 0x9d, 0x00, 0xa9, 0x00, 0xa4, 0x01, 0x03, - 0x00, 0x8a, 0x00, 0xda, 0x00, 0x83, 0x00, 0x93, 0x00, 0xf2, 0x00, 0xf3, - 0x00, 0x8d, 0x00, 0x97, 0x00, 0x88, 0x00, 0xc3, 0x00, 0xde, 0x00, 0xf1, - 0x00, 0x9e, 0x00, 0xaa, 0x00, 0xf5, 0x00, 0xf4, 0x00, 0xf6, 0x00, 0xa2, - 0x00, 0xad, 0x00, 0xc9, 0x00, 0xc7, 0x00, 0xae, 0x00, 0x62, 0x00, 0x63, - 0x00, 0x90, 0x00, 0x64, 0x00, 0xcb, 0x00, 0x65, 0x00, 0xc8, 0x00, 0xca, - 0x00, 0xcf, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, 0xe9, 0x00, 0x66, - 0x00, 0xd3, 0x00, 0xd0, 0x00, 0xd1, 0x00, 0xaf, 0x00, 0x67, 0x00, 0xf0, - 0x00, 0x91, 0x00, 0xd6, 0x00, 0xd4, 0x00, 0xd5, 0x00, 0x68, 0x00, 0xeb, - 0x00, 0xed, 0x00, 0x89, 0x00, 0x6a, 0x00, 0x69, 0x00, 0x6b, 0x00, 0x6d, - 0x00, 0x6c, 0x00, 0x6e, 0x00, 0xa0, 0x00, 0x6f, 0x00, 0x71, 0x00, 0x70, - 0x00, 0x72, 0x00, 0x73, 0x00, 0x75, 0x00, 0x74, 0x00, 0x76, 0x00, 0x77, - 0x00, 0xea, 0x00, 0x78, 0x00, 0x7a, 0x00, 0x79, 0x00, 0x7b, 0x00, 0x7d, - 0x00, 0x7c, 0x00, 0xb8, 0x00, 0xa1, 0x00, 0x7f, 0x00, 0x7e, 0x00, 0x80, - 0x00, 0x81, 0x00, 0xec, 0x00, 0xee, 0x00, 0xba, 0x00, 0xd7, 0x00, 0xd8, - 0x01, 0x04, 0x01, 0x05, 0x00, 0xdd, 0x00, 0xd9, 0x06, 0x67, 0x6c, 0x79, - 0x70, 0x68, 0x33, 0x0a, 0x73, 0x6f, 0x66, 0x74, 0x68, 0x79, 0x70, 0x68, - 0x65, 0x6e, 0x07, 0x75, 0x6e, 0x69, 0x30, 0x32, 0x43, 0x41, 0x07, 0x75, - 0x6e, 0x69, 0x30, 0x32, 0x43, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0xff, 0xff, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, - 0x00, 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x6a, - 0x00, 0x01, 0x00, 0x6b, 0x00, 0x6b, 0x00, 0x03, 0x00, 0x6c, 0x00, 0x02, - 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x8e, 0x00, 0x9c, 0x00, 0x08, - 0x44, 0x46, 0x4c, 0x54, 0x00, 0x32, 0x61, 0x72, 0x6d, 0x6e, 0x00, 0x3c, - 0x62, 0x65, 0x6e, 0x67, 0x00, 0x46, 0x64, 0x65, 0x76, 0x61, 0x00, 0x50, - 0x67, 0x75, 0x6a, 0x72, 0x00, 0x5a, 0x67, 0x75, 0x72, 0x75, 0x00, 0x64, - 0x68, 0x65, 0x62, 0x72, 0x00, 0x6e, 0x6c, 0x61, 0x74, 0x6e, 0x00, 0x78, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x63, 0x63, 0x6d, 0x70, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x46, 0x00, 0x02, - 0x00, 0x12, 0x00, 0x1a, 0x00, 0x22, 0x00, 0x22, 0x00, 0x03, 0x00, 0x00, - 0x00, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x4e, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, - 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x01, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x01, 0x00, 0x06, 0x00, 0x76, 0x00, 0x01, 0x00, 0x01, 0x00, 0x4d, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x90, 0x00, 0xaa, 0x00, 0x08, - 0x44, 0x46, 0x4c, 0x54, 0x00, 0x32, 0x61, 0x72, 0x6d, 0x6e, 0x00, 0x3e, - 0x62, 0x65, 0x6e, 0x67, 0x00, 0x48, 0x64, 0x65, 0x76, 0x61, 0x00, 0x52, - 0x67, 0x75, 0x6a, 0x72, 0x00, 0x5c, 0x67, 0x75, 0x72, 0x75, 0x00, 0x66, - 0x68, 0x65, 0x62, 0x72, 0x00, 0x70, 0x6c, 0x61, 0x74, 0x6e, 0x00, 0x7a, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x01, 0x00, 0x01, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x6b, 0x65, 0x72, 0x6e, 0x00, 0x0e, 0x6b, 0x65, 0x72, 0x6e, - 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x8e, - 0x00, 0x01, 0x00, 0x7a, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x12, - 0x00, 0x20, 0x00, 0x46, 0x00, 0x54, 0x00, 0x03, 0xff, 0xff, 0xff, 0x33, - 0xff, 0xff, 0xff, 0xac, 0xff, 0xff, 0xff, 0x9a, 0x00, 0x09, 0x00, 0x25, - 0xff, 0xf2, 0x00, 0x38, 0xff, 0x5c, 0x00, 0x3a, 0xff, 0xa2, 0x00, 0x3b, - 0xff, 0xd9, 0x00, 0x3d, 0xff, 0x44, 0x00, 0x84, 0xff, 0xf2, 0x00, 0x87, - 0xff, 0xf2, 0x00, 0x88, 0xff, 0xf2, 0x00, 0x89, 0xff, 0xe9, 0x00, 0x03, - 0xff, 0xff, 0xff, 0x31, 0xff, 0xff, 0xff, 0xac, 0xff, 0xff, 0xff, 0x98, - 0x00, 0x09, 0x00, 0x25, 0xff, 0x9a, 0x00, 0x38, 0xfe, 0xfe, 0x00, 0x3a, - 0xff, 0x42, 0x00, 0x3b, 0xff, 0x79, 0x00, 0x3d, 0xfe, 0xf0, 0x00, 0x84, - 0xff, 0x9a, 0x00, 0x87, 0xff, 0x9a, 0x00, 0x88, 0xff, 0x9a, 0x00, 0x89, - 0xff, 0x91, 0x00, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, - 0x00, 0x7e, 0x00, 0x01, 0x0e, 0x92, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, - 0x00, 0x9a, 0x01, 0x34, 0x01, 0x7a, 0x01, 0xa4, 0x01, 0xda, 0x02, 0x50, - 0x02, 0x82, 0x02, 0x94, 0x02, 0xe6, 0x03, 0x5c, 0x03, 0xae, 0x03, 0xd8, - 0x04, 0x2e, 0x04, 0xa4, 0x04, 0xce, 0x05, 0x8c, 0x05, 0xc2, 0x06, 0x5c, - 0x06, 0xee, 0x07, 0x18, 0x07, 0xaa, 0x07, 0xb4, 0x07, 0xca, 0x07, 0xd8, - 0x07, 0xe2, 0x07, 0xfc, 0x08, 0x42, 0x08, 0x5c, 0x08, 0x66, 0x08, 0x70, - 0x08, 0xae, 0x08, 0xb4, 0x08, 0xc6, 0x08, 0xe0, 0x08, 0xfe, 0x09, 0x08, - 0x09, 0x12, 0x09, 0xc0, 0x09, 0xca, 0x0a, 0x08, 0x0a, 0x0e, 0x0a, 0x78, - 0x0a, 0xde, 0x0a, 0xf8, 0x0b, 0x62, 0x0b, 0x90, 0x0c, 0x02, 0x0c, 0x30, - 0x0c, 0x5e, 0x0c, 0xd0, 0x0d, 0x46, 0x0d, 0x4c, 0x0d, 0x5a, 0x0d, 0x70, - 0x0d, 0x7e, 0x0d, 0x8c, 0x0d, 0xa6, 0x0d, 0xac, 0x0d, 0xb2, 0x0d, 0xd0, - 0x0d, 0xd6, 0x0d, 0xf8, 0x0e, 0x06, 0x0e, 0x14, 0x0e, 0x22, 0x0e, 0x30, - 0x0e, 0x3e, 0x0e, 0x4c, 0x0e, 0x5a, 0x0e, 0x68, 0x0e, 0x76, 0x0e, 0x7c, - 0x00, 0x26, 0xff, 0xff, 0xff, 0xae, 0xff, 0xff, 0xff, 0x8d, 0xff, 0xff, - 0xff, 0x7b, 0xff, 0xff, 0xff, 0xe9, 0xff, 0xff, 0xff, 0xb6, 0x00, 0x10, - 0x00, 0x0a, 0x00, 0x11, 0xff, 0xfa, 0x00, 0x12, 0x00, 0x0a, 0x00, 0x27, - 0xff, 0xb6, 0x00, 0x2b, 0xff, 0xb8, 0x00, 0x33, 0xff, 0xbc, 0x00, 0x35, - 0xff, 0xbe, 0x00, 0x38, 0xff, 0x42, 0x00, 0x39, 0xff, 0xb4, 0x00, 0x3a, - 0xff, 0x66, 0x00, 0x3b, 0xff, 0x98, 0x00, 0x3d, 0xff, 0x35, 0x00, 0x45, - 0xff, 0xf8, 0x00, 0x46, 0x00, 0x08, 0x00, 0x47, 0xff, 0xe9, 0x00, 0x48, - 0xff, 0xf0, 0x00, 0x49, 0xff, 0xdf, 0x00, 0x4b, 0xff, 0xec, 0x00, 0x53, - 0xff, 0xe5, 0x00, 0x55, 0xff, 0xf0, 0x00, 0x58, 0xff, 0xdf, 0x00, 0x59, - 0xff, 0xe7, 0x00, 0x5a, 0xff, 0xc1, 0x00, 0x5b, 0xff, 0xd5, 0x00, 0x5d, - 0xff, 0xba, 0x00, 0x6e, 0xff, 0xa6, 0x00, 0x8a, 0xff, 0xb6, 0x00, 0x99, - 0xff, 0xbc, 0x00, 0x9c, 0xff, 0xb4, 0x00, 0x9d, 0xff, 0xb4, 0x00, 0x9e, - 0xff, 0xb4, 0x00, 0x9f, 0xff, 0xb4, 0x00, 0xaa, 0xff, 0xec, 0x00, 0x11, - 0xff, 0xff, 0xff, 0xf6, 0x00, 0x25, 0xff, 0xd5, 0x00, 0x33, 0xff, 0xf2, - 0x00, 0x3a, 0xff, 0xac, 0x00, 0x3b, 0xff, 0xcd, 0x00, 0x3d, 0xff, 0xa6, - 0x00, 0x84, 0xff, 0xd5, 0x00, 0x85, 0xff, 0xd5, 0x00, 0x86, 0xff, 0xd5, - 0x00, 0x87, 0xff, 0xd5, 0x00, 0x88, 0xff, 0xd5, 0x00, 0x89, 0xff, 0xd5, - 0x00, 0x95, 0xff, 0xf2, 0x00, 0x96, 0xff, 0xf2, 0x00, 0x97, 0xff, 0xf2, - 0x00, 0x99, 0xff, 0xf2, 0x00, 0x9b, 0xff, 0xfe, 0x00, 0x0a, 0x00, 0x25, - 0xff, 0xbe, 0x00, 0x2c, 0xff, 0xe7, 0x00, 0x2f, 0xff, 0xec, 0x00, 0x33, - 0xff, 0xf0, 0x00, 0x84, 0xff, 0xbe, 0x00, 0x87, 0xff, 0xbe, 0x00, 0x88, - 0xff, 0xbe, 0x00, 0x89, 0xff, 0xbc, 0x00, 0x96, 0xff, 0xf0, 0x00, 0x99, - 0xff, 0xf0, 0x00, 0x0d, 0x00, 0x25, 0xff, 0xaa, 0x00, 0x2e, 0xff, 0xf6, - 0x00, 0x38, 0xff, 0xa4, 0x00, 0x3a, 0xff, 0x98, 0x00, 0x3b, 0xff, 0xc5, - 0x00, 0x3c, 0xff, 0x93, 0x00, 0x3d, 0xff, 0x7f, 0x00, 0x83, 0xff, 0xaa, - 0x00, 0x84, 0xff, 0xaa, 0x00, 0x85, 0xff, 0xaa, 0x00, 0x86, 0xff, 0xaa, - 0x00, 0x87, 0xff, 0xaa, 0x00, 0x88, 0xff, 0xaa, 0x00, 0x1d, 0xff, 0xff, - 0xff, 0xd1, 0x00, 0x10, 0xff, 0x23, 0x00, 0x11, 0xff, 0xe3, 0x00, 0x12, - 0xff, 0x23, 0x00, 0x25, 0xff, 0x73, 0x00, 0x2e, 0xff, 0x98, 0x00, 0x33, - 0xff, 0xd3, 0x00, 0x45, 0xff, 0xbc, 0x00, 0x49, 0xff, 0xcf, 0x00, 0x4d, - 0xff, 0xec, 0x00, 0x4e, 0xff, 0xe7, 0x00, 0x53, 0xff, 0xd5, 0x00, 0x56, - 0xff, 0xb8, 0x00, 0x59, 0xff, 0xbc, 0x00, 0x83, 0xff, 0x73, 0x00, 0x84, - 0xff, 0x73, 0x00, 0x85, 0xff, 0x73, 0x00, 0x86, 0xff, 0x73, 0x00, 0x87, - 0xff, 0x73, 0x00, 0x88, 0xff, 0x73, 0x00, 0x99, 0xff, 0xd3, 0x00, 0xa4, - 0xff, 0xbc, 0x00, 0xa7, 0xff, 0xbc, 0x00, 0xa8, 0xff, 0xbc, 0x00, 0xa9, - 0xff, 0xc5, 0x00, 0xac, 0xff, 0xcf, 0x00, 0xb6, 0xff, 0xd5, 0x00, 0xb9, - 0xff, 0xd5, 0x00, 0xbb, 0xff, 0xd5, 0x00, 0x0c, 0x00, 0x25, 0xff, 0xf4, - 0x00, 0x38, 0xff, 0xa6, 0x00, 0x3a, 0xff, 0x9a, 0x00, 0x3b, 0xff, 0xc7, - 0x00, 0x3d, 0xff, 0x81, 0x00, 0x83, 0xff, 0xf4, 0x00, 0x84, 0xff, 0xf4, - 0x00, 0x85, 0xff, 0xf4, 0x00, 0x86, 0xff, 0xf4, 0x00, 0x87, 0xff, 0xf4, - 0x00, 0x88, 0xff, 0xf4, 0x00, 0x89, 0xff, 0xfa, 0x00, 0x04, 0x00, 0x25, - 0xff, 0xbe, 0x00, 0x87, 0xff, 0xbe, 0x00, 0x88, 0xff, 0xbe, 0x00, 0x89, - 0xff, 0xc1, 0x00, 0x14, 0xff, 0xff, 0xff, 0xa4, 0x00, 0x11, 0xff, 0xa0, - 0x00, 0x27, 0xff, 0x98, 0x00, 0x2b, 0xff, 0x98, 0x00, 0x33, 0xff, 0x9e, - 0x00, 0x37, 0xff, 0xb2, 0x00, 0x38, 0x00, 0x29, 0x00, 0x45, 0xff, 0xe9, - 0x00, 0x49, 0xff, 0xbe, 0x00, 0x53, 0xff, 0xc5, 0x00, 0x59, 0xff, 0xd9, - 0x00, 0x5d, 0xff, 0x81, 0x00, 0x96, 0xff, 0x9e, 0x00, 0x99, 0xff, 0x9e, - 0x00, 0xa7, 0xff, 0xe9, 0x00, 0xa8, 0xff, 0xe9, 0x00, 0xa9, 0xff, 0xf2, - 0x00, 0xb6, 0xff, 0xc5, 0x00, 0xb9, 0xff, 0xc5, 0x00, 0xbf, 0xff, 0xd9, - 0x00, 0x1d, 0xff, 0xff, 0xfe, 0xdf, 0xff, 0xff, 0xfe, 0xcf, 0xff, 0xff, - 0xff, 0xd9, 0xff, 0xff, 0xff, 0xac, 0x00, 0x11, 0xff, 0x00, 0x00, 0x25, - 0x00, 0x23, 0x00, 0x27, 0xff, 0xac, 0x00, 0x2b, 0xff, 0xaa, 0x00, 0x33, - 0xff, 0xac, 0x00, 0x37, 0xff, 0xd9, 0x00, 0x38, 0xff, 0x29, 0x00, 0x39, - 0xff, 0xb8, 0x00, 0x3a, 0xff, 0x29, 0x00, 0x3b, 0xff, 0x75, 0x00, 0x3d, - 0xff, 0x08, 0x00, 0x59, 0xff, 0xf2, 0x00, 0x5d, 0xff, 0x8d, 0x00, 0x84, - 0x00, 0x23, 0x00, 0x87, 0x00, 0x23, 0x00, 0x88, 0x00, 0x23, 0x00, 0x89, - 0x00, 0x29, 0x00, 0x8a, 0xff, 0xb4, 0x00, 0x95, 0xff, 0xac, 0x00, 0x96, - 0xff, 0xac, 0x00, 0x97, 0xff, 0xac, 0x00, 0x98, 0xff, 0xac, 0x00, 0x99, - 0xff, 0xac, 0x00, 0x9f, 0xff, 0xb8, 0x00, 0xbf, 0xff, 0xf2, 0x00, 0x14, - 0xff, 0xff, 0xff, 0xfa, 0x00, 0x10, 0xff, 0xf2, 0x00, 0x12, 0xff, 0xf2, - 0x00, 0x25, 0xff, 0xee, 0x00, 0x27, 0xff, 0xfa, 0x00, 0x2b, 0xff, 0xfc, - 0x00, 0x45, 0xff, 0xf6, 0x00, 0x53, 0x00, 0x04, 0x00, 0x84, 0xff, 0xee, - 0x00, 0x87, 0xff, 0xee, 0x00, 0x88, 0xff, 0xee, 0x00, 0x89, 0xff, 0xf4, - 0x00, 0x8a, 0xff, 0xfa, 0x00, 0xa4, 0xff, 0xf6, 0x00, 0xa7, 0xff, 0xf6, - 0x00, 0xa8, 0xff, 0xf6, 0x00, 0xa9, 0xff, 0xfc, 0x00, 0xb6, 0x00, 0x04, - 0x00, 0xb9, 0x00, 0x04, 0x00, 0xbb, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x25, - 0xff, 0xb8, 0x00, 0x38, 0xff, 0xaa, 0x00, 0x3a, 0xff, 0xa4, 0x00, 0x3b, - 0xff, 0xd1, 0x00, 0x3c, 0xff, 0xa2, 0x00, 0x3d, 0xff, 0x87, 0x00, 0x84, - 0xff, 0xb8, 0x00, 0x87, 0xff, 0xb8, 0x00, 0x88, 0xff, 0xb8, 0x00, 0x89, - 0xff, 0xb0, 0x00, 0x15, 0xff, 0xff, 0xff, 0xc7, 0x00, 0x10, 0xfe, 0xec, - 0x00, 0x11, 0xff, 0xae, 0x00, 0x12, 0xfe, 0xec, 0x00, 0x25, 0xff, 0x60, - 0x00, 0x2e, 0xff, 0x60, 0x00, 0x45, 0xff, 0xc7, 0x00, 0x49, 0xff, 0xc1, - 0x00, 0x53, 0xff, 0xc9, 0x00, 0x84, 0xff, 0x60, 0x00, 0x87, 0xff, 0x60, - 0x00, 0x88, 0xff, 0x60, 0x00, 0x89, 0xff, 0x50, 0x00, 0xa4, 0xff, 0xc7, - 0x00, 0xa7, 0xff, 0xc7, 0x00, 0xa8, 0xff, 0xc7, 0x00, 0xa9, 0xff, 0xcf, - 0x00, 0xac, 0xff, 0xc1, 0x00, 0xb6, 0xff, 0xc9, 0x00, 0xb9, 0xff, 0xc9, - 0x00, 0xbb, 0xff, 0xc9, 0x00, 0x1d, 0xff, 0xff, 0xff, 0xe9, 0xff, 0xff, - 0xff, 0xe9, 0x00, 0x11, 0xff, 0xfc, 0x00, 0x27, 0xff, 0xdf, 0x00, 0x2b, - 0xff, 0xe1, 0x00, 0x33, 0xff, 0xe5, 0x00, 0x38, 0xff, 0xd1, 0x00, 0x39, - 0xff, 0xdd, 0x00, 0x3a, 0xff, 0xb0, 0x00, 0x3b, 0xff, 0xc9, 0x00, 0x3d, - 0xff, 0xa8, 0x00, 0x45, 0xff, 0xe1, 0x00, 0x49, 0xff, 0xe7, 0x00, 0x53, - 0xff, 0xee, 0x00, 0x59, 0xff, 0xee, 0x00, 0x5d, 0xff, 0xf0, 0x00, 0x8a, - 0xff, 0xdf, 0x00, 0x96, 0xff, 0xe5, 0x00, 0x99, 0xff, 0xe5, 0x00, 0x9f, - 0xff, 0xdd, 0x00, 0xa4, 0xff, 0xe1, 0x00, 0xa7, 0xff, 0xe1, 0x00, 0xa8, - 0xff, 0xe1, 0x00, 0xa9, 0xff, 0xe7, 0x00, 0xac, 0xff, 0xe7, 0x00, 0xb6, - 0xff, 0xee, 0x00, 0xb9, 0xff, 0xee, 0x00, 0xbd, 0xff, 0xee, 0x00, 0xbf, - 0xff, 0xee, 0x00, 0x0a, 0x00, 0x25, 0xff, 0xd3, 0x00, 0x38, 0xff, 0xc7, - 0x00, 0x3a, 0xff, 0xaa, 0x00, 0x3b, 0xff, 0xc7, 0x00, 0x3d, 0xff, 0x9e, - 0x00, 0x58, 0xff, 0xfa, 0x00, 0x84, 0xff, 0xd3, 0x00, 0x87, 0xff, 0xd3, - 0x00, 0x88, 0xff, 0xd3, 0x00, 0x89, 0xff, 0xd3, 0x00, 0x2f, 0xff, 0xff, - 0xff, 0x10, 0xff, 0xff, 0xff, 0x85, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xff, - 0xff, 0xb8, 0x00, 0x10, 0xff, 0x33, 0x00, 0x11, 0xff, 0x62, 0x00, 0x12, - 0xff, 0x33, 0x00, 0x1e, 0xfe, 0xf0, 0x00, 0x1f, 0xfe, 0xf8, 0x00, 0x25, - 0xff, 0x3d, 0x00, 0x27, 0xff, 0xa6, 0x00, 0x2b, 0xff, 0xa4, 0x00, 0x2e, - 0xff, 0x33, 0x00, 0x33, 0xff, 0xaa, 0x00, 0x37, 0xff, 0xcf, 0x00, 0x3a, - 0x00, 0x19, 0x00, 0x3b, 0x00, 0x21, 0x00, 0x3d, 0x00, 0x29, 0x00, 0x45, - 0xff, 0x33, 0x00, 0x47, 0xff, 0x48, 0x00, 0x49, 0xff, 0x3d, 0x00, 0x4b, - 0xff, 0x4a, 0x00, 0x4d, 0xff, 0xfa, 0x00, 0x4e, 0xff, 0xf6, 0x00, 0x53, - 0xff, 0x44, 0x00, 0x56, 0xff, 0x44, 0x00, 0x57, 0xff, 0x44, 0x00, 0x59, - 0xff, 0x46, 0x00, 0x5a, 0xff, 0x3d, 0x00, 0x5b, 0xff, 0x42, 0x00, 0x5d, - 0xff, 0x33, 0x00, 0x6e, 0xff, 0x08, 0x00, 0x83, 0xff, 0x3d, 0x00, 0x84, - 0xff, 0x3d, 0x00, 0x85, 0xff, 0x3d, 0x00, 0x86, 0xff, 0x3d, 0x00, 0x87, - 0xff, 0x3d, 0x00, 0x88, 0xff, 0x3d, 0x00, 0x89, 0xff, 0x39, 0x00, 0x95, - 0xff, 0xaa, 0x00, 0x96, 0xff, 0xaa, 0x00, 0x97, 0xff, 0xaa, 0x00, 0x98, - 0xff, 0xaa, 0x00, 0x99, 0xff, 0xaa, 0x00, 0x9b, 0xff, 0xac, 0x00, 0xa9, - 0xff, 0x39, 0x00, 0xbb, 0xff, 0x4e, 0x00, 0x0d, 0x00, 0x10, 0xff, 0xc9, - 0x00, 0x12, 0xff, 0xcd, 0x00, 0x25, 0xff, 0xb6, 0x00, 0x51, 0xff, 0xf8, - 0x00, 0x52, 0xff, 0xf8, 0x00, 0x54, 0x00, 0x06, 0x00, 0x56, 0xff, 0xf8, - 0x00, 0x84, 0xff, 0xb6, 0x00, 0x85, 0xff, 0xb6, 0x00, 0x86, 0xff, 0xb6, - 0x00, 0x87, 0xff, 0xb6, 0x00, 0x88, 0xff, 0xb6, 0x00, 0x89, 0xff, 0xb0, - 0x00, 0x26, 0xff, 0xff, 0xff, 0x5c, 0xff, 0xff, 0xff, 0xb8, 0xff, 0xff, - 0xff, 0xa8, 0x00, 0x10, 0xff, 0x4a, 0x00, 0x11, 0xff, 0xb2, 0x00, 0x12, - 0xff, 0x4a, 0x00, 0x1e, 0xff, 0x79, 0x00, 0x1f, 0xff, 0x79, 0x00, 0x25, - 0xff, 0x6f, 0x00, 0x27, 0xff, 0xa8, 0x00, 0x2b, 0xff, 0xaa, 0x00, 0x33, - 0xff, 0xae, 0x00, 0x37, 0xff, 0xb8, 0x00, 0x38, 0x00, 0x1f, 0x00, 0x45, - 0xff, 0x87, 0x00, 0x49, 0xff, 0x8b, 0x00, 0x4b, 0xff, 0x9a, 0x00, 0x4d, - 0xff, 0xf6, 0x00, 0x53, 0xff, 0x91, 0x00, 0x56, 0xff, 0xaa, 0x00, 0x59, - 0xff, 0xac, 0x00, 0x5d, 0xff, 0xd7, 0x00, 0x6e, 0xff, 0x56, 0x00, 0x83, - 0xff, 0x6f, 0x00, 0x84, 0xff, 0x6f, 0x00, 0x85, 0xff, 0x6f, 0x00, 0x86, - 0xff, 0x6f, 0x00, 0x87, 0xff, 0x6f, 0x00, 0x88, 0xff, 0x6f, 0x00, 0x89, - 0xff, 0x60, 0x00, 0x95, 0xff, 0xae, 0x00, 0x96, 0xff, 0xae, 0x00, 0x97, - 0xff, 0xae, 0x00, 0x98, 0xff, 0xae, 0x00, 0x99, 0xff, 0xae, 0x00, 0x9b, - 0xff, 0xbc, 0x00, 0xa9, 0xff, 0x8f, 0x00, 0xbb, 0xff, 0x9a, 0x00, 0x24, - 0xff, 0xff, 0xff, 0x91, 0x00, 0x10, 0xff, 0x8d, 0x00, 0x11, 0xff, 0xe5, - 0x00, 0x12, 0xff, 0x8d, 0x00, 0x1e, 0xff, 0x96, 0x00, 0x1f, 0xff, 0x93, - 0x00, 0x25, 0xff, 0x9a, 0x00, 0x27, 0xff, 0xd1, 0x00, 0x2b, 0xff, 0xd3, - 0x00, 0x33, 0xff, 0xd7, 0x00, 0x37, 0xff, 0xcf, 0x00, 0x38, 0x00, 0x27, - 0x00, 0x45, 0xff, 0xb2, 0x00, 0x49, 0xff, 0xbe, 0x00, 0x4b, 0xff, 0xcd, - 0x00, 0x4d, 0xff, 0xfe, 0x00, 0x53, 0xff, 0xc5, 0x00, 0x56, 0xff, 0xc7, - 0x00, 0x59, 0xff, 0xc7, 0x00, 0x5d, 0xff, 0xf4, 0x00, 0x6e, 0xff, 0x89, - 0x00, 0x83, 0xff, 0x9a, 0x00, 0x84, 0xff, 0x9a, 0x00, 0x85, 0xff, 0x9a, - 0x00, 0x86, 0xff, 0x9a, 0x00, 0x87, 0xff, 0x9a, 0x00, 0x88, 0xff, 0x9a, - 0x00, 0x89, 0xff, 0x8d, 0x00, 0x95, 0xff, 0xd7, 0x00, 0x96, 0xff, 0xd7, - 0x00, 0x97, 0xff, 0xd7, 0x00, 0x98, 0xff, 0xd7, 0x00, 0x99, 0xff, 0xd7, - 0x00, 0x9b, 0xff, 0xe5, 0x00, 0xa9, 0xff, 0xba, 0x00, 0xbb, 0xff, 0xcd, - 0x00, 0x0a, 0x00, 0x11, 0xff, 0x98, 0x00, 0x27, 0xff, 0x9e, 0x00, 0x33, - 0xff, 0xa4, 0x00, 0x35, 0xff, 0xa6, 0x00, 0x45, 0xff, 0xe1, 0x00, 0x49, - 0xff, 0xb6, 0x00, 0x53, 0xff, 0xbc, 0x00, 0x59, 0xff, 0xcf, 0x00, 0x5d, - 0xff, 0x83, 0x00, 0x99, 0xff, 0xa4, 0x00, 0x24, 0xff, 0xff, 0xff, 0x0c, - 0x00, 0x10, 0xff, 0x1d, 0x00, 0x11, 0xff, 0x54, 0x00, 0x12, 0xff, 0x1d, - 0x00, 0x1e, 0xff, 0x4e, 0x00, 0x1f, 0xff, 0x4c, 0x00, 0x25, 0xff, 0x3b, - 0x00, 0x27, 0xff, 0x89, 0x00, 0x2b, 0xff, 0x89, 0x00, 0x33, 0xff, 0x8d, - 0x00, 0x37, 0xff, 0xac, 0x00, 0x38, 0x00, 0x2f, 0x00, 0x45, 0xff, 0x4c, - 0x00, 0x49, 0xff, 0x4a, 0x00, 0x4b, 0xff, 0x56, 0x00, 0x4d, 0x00, 0x06, - 0x00, 0x53, 0xff, 0x50, 0x00, 0x54, 0xff, 0x91, 0x00, 0x59, 0xff, 0x7f, - 0x00, 0x5a, 0xff, 0xb6, 0x00, 0x6e, 0xff, 0x04, 0x00, 0x83, 0xff, 0x3b, - 0x00, 0x84, 0xff, 0x3b, 0x00, 0x85, 0xff, 0x3b, 0x00, 0x86, 0xff, 0x3b, - 0x00, 0x87, 0xff, 0x3b, 0x00, 0x88, 0xff, 0x3b, 0x00, 0x89, 0xff, 0x2d, - 0x00, 0x95, 0xff, 0x8d, 0x00, 0x96, 0xff, 0x8d, 0x00, 0x97, 0xff, 0x8d, - 0x00, 0x98, 0xff, 0x8d, 0x00, 0x99, 0xff, 0x8d, 0x00, 0x9b, 0xff, 0x91, - 0x00, 0xa9, 0xff, 0x54, 0x00, 0xbb, 0xff, 0x58, 0x00, 0x02, 0x00, 0x5a, - 0xff, 0xbc, 0x00, 0x5d, 0xff, 0xb2, 0x00, 0x05, 0xff, 0xff, 0xff, 0xd1, - 0x00, 0x4e, 0xff, 0xf8, 0x00, 0x5a, 0xff, 0xd5, 0x00, 0x5b, 0xff, 0xe5, - 0x00, 0x5d, 0xff, 0xcb, 0x00, 0x03, 0x00, 0x5a, 0xff, 0xe9, 0x00, 0x5b, - 0xff, 0xfa, 0x00, 0x5d, 0xff, 0xe1, 0x00, 0x02, 0x00, 0x4c, 0x00, 0x02, - 0x00, 0x4f, 0x00, 0x0e, 0x00, 0x06, 0xff, 0xff, 0xff, 0xdb, 0x00, 0x58, - 0xff, 0xec, 0x00, 0x5a, 0xff, 0xe1, 0x00, 0x5b, 0xff, 0xee, 0x00, 0x5c, - 0xff, 0xc9, 0x00, 0x5d, 0xff, 0xd9, 0x00, 0x11, 0xff, 0xff, 0xff, 0xe7, - 0x00, 0x45, 0xff, 0xee, 0x00, 0x49, 0xff, 0xe1, 0x00, 0x4a, 0x00, 0x2d, - 0x00, 0x4d, 0xff, 0xfc, 0x00, 0x4e, 0xff, 0xf8, 0x00, 0x50, 0xff, 0xfa, - 0x00, 0x53, 0xff, 0xec, 0x00, 0x58, 0x00, 0x31, 0x00, 0xa4, 0xff, 0xee, - 0x00, 0xa7, 0xff, 0xee, 0x00, 0xa8, 0xff, 0xee, 0x00, 0xa9, 0xff, 0xf6, - 0x00, 0xac, 0xff, 0xe1, 0x00, 0xb6, 0xff, 0xec, 0x00, 0xb9, 0xff, 0xec, - 0x00, 0xbb, 0xff, 0xee, 0x00, 0x06, 0x00, 0x45, 0xff, 0xf6, 0x00, 0xa7, - 0xff, 0xf6, 0x00, 0xa8, 0xff, 0xf6, 0x00, 0xa9, 0xff, 0xfe, 0x00, 0xb6, - 0x00, 0x06, 0x00, 0xb9, 0x00, 0x06, 0x00, 0x02, 0xff, 0xff, 0xff, 0xe1, - 0x00, 0x5d, 0xff, 0xdb, 0x00, 0x02, 0x00, 0x38, 0xff, 0xf2, 0x00, 0x4e, - 0xff, 0xfa, 0x00, 0x0f, 0x00, 0x11, 0xff, 0xac, 0x00, 0x45, 0xff, 0xfc, - 0x00, 0x49, 0xff, 0xd5, 0x00, 0x4b, 0xff, 0xdf, 0x00, 0x53, 0xff, 0xd9, - 0x00, 0x57, 0xff, 0xfa, 0x00, 0x59, 0xff, 0xe9, 0x00, 0xa4, 0xff, 0xfc, - 0x00, 0xa7, 0xff, 0xfc, 0x00, 0xa8, 0xff, 0xfc, 0x00, 0xa9, 0x00, 0x04, - 0x00, 0xac, 0xff, 0xd5, 0x00, 0xb6, 0xff, 0xd9, 0x00, 0xb9, 0xff, 0xd9, - 0x00, 0xbf, 0xff, 0xf4, 0x00, 0x01, 0x00, 0x5d, 0xff, 0xf6, 0x00, 0x04, - 0x00, 0x54, 0x00, 0x0a, 0x00, 0x5a, 0xff, 0xe5, 0x00, 0x5b, 0xff, 0xf2, - 0x00, 0x5d, 0xff, 0xdb, 0x00, 0x06, 0xff, 0xff, 0xff, 0xe3, 0x00, 0x38, - 0xff, 0x3b, 0x00, 0x54, 0x00, 0x0a, 0x00, 0x5a, 0xff, 0xe5, 0x00, 0x5b, - 0xff, 0xf2, 0x00, 0x5d, 0xff, 0xdb, 0x00, 0x07, 0xff, 0xff, 0xff, 0xd5, - 0x00, 0x38, 0xff, 0x35, 0x00, 0x58, 0xff, 0xec, 0x00, 0x5a, 0xff, 0xdb, - 0x00, 0x5b, 0xff, 0xec, 0x00, 0x5c, 0xff, 0xc9, 0x00, 0x5d, 0xff, 0xd3, - 0x00, 0x02, 0x00, 0x58, 0xff, 0xf8, 0x00, 0x5d, 0xff, 0xdf, 0x00, 0x02, - 0x00, 0x47, 0x00, 0x10, 0x00, 0x59, 0x00, 0x08, 0x00, 0x2b, 0xff, 0xff, - 0x00, 0x02, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xf4, 0x00, 0x10, - 0xff, 0x73, 0x00, 0x11, 0xff, 0xa0, 0x00, 0x12, 0xff, 0x73, 0x00, 0x1e, - 0xff, 0xd3, 0x00, 0x1f, 0xff, 0xd3, 0x00, 0x45, 0xff, 0xf6, 0x00, 0x47, - 0xff, 0xf4, 0x00, 0x48, 0xff, 0xfe, 0x00, 0x49, 0xff, 0xe9, 0x00, 0x4a, - 0x00, 0x35, 0x00, 0x4b, 0xff, 0xf8, 0x00, 0x4d, 0x00, 0x02, 0x00, 0x4f, - 0x00, 0x0c, 0x00, 0x50, 0x00, 0x02, 0x00, 0x53, 0xff, 0xf4, 0x00, 0x54, - 0x00, 0x10, 0x00, 0x55, 0xff, 0xfa, 0x00, 0x57, 0x00, 0x08, 0x00, 0x58, - 0x00, 0x39, 0x00, 0x59, 0x00, 0x04, 0x00, 0x5a, 0x00, 0x3b, 0x00, 0x5b, - 0x00, 0x3f, 0x00, 0x5c, 0x00, 0x29, 0x00, 0x5d, 0x00, 0x31, 0x00, 0x5e, - 0x00, 0x12, 0x00, 0xa3, 0xff, 0xf6, 0x00, 0xa4, 0xff, 0xf6, 0x00, 0xa5, - 0xff, 0xf6, 0x00, 0xa7, 0xff, 0xf6, 0x00, 0xa8, 0xff, 0xf6, 0x00, 0xa9, - 0xff, 0xfe, 0x00, 0xaa, 0xff, 0xee, 0x00, 0xab, 0xff, 0xe9, 0x00, 0xac, - 0xff, 0xe9, 0x00, 0xad, 0xff, 0xe9, 0x00, 0xb5, 0xff, 0xf4, 0x00, 0xb6, - 0xff, 0xf4, 0x00, 0xb7, 0xff, 0xf4, 0x00, 0xb9, 0xff, 0xf4, 0x00, 0xbb, - 0xff, 0xf4, 0x00, 0x02, 0xff, 0xff, 0xff, 0xd3, 0x00, 0x58, 0xff, 0xfa, - 0x00, 0x0f, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x1e, 0xff, 0xc7, 0x00, 0x1f, - 0xff, 0xc7, 0x00, 0x37, 0xff, 0xf0, 0x00, 0x45, 0xff, 0xfe, 0x00, 0x49, - 0xff, 0xe3, 0x00, 0x4c, 0xff, 0xfa, 0x00, 0x53, 0xff, 0xe7, 0x00, 0xa4, - 0xff, 0xfe, 0x00, 0xa7, 0xff, 0xfe, 0x00, 0xa8, 0xff, 0xfe, 0x00, 0xa9, - 0x00, 0x04, 0x00, 0xac, 0xff, 0xe3, 0x00, 0xb6, 0xff, 0xe7, 0x00, 0xb9, - 0xff, 0xe7, 0x00, 0x01, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x1a, 0xff, 0xff, - 0xff, 0xdf, 0x00, 0x10, 0xff, 0x73, 0x00, 0x11, 0xff, 0xe7, 0x00, 0x12, - 0xff, 0x73, 0x00, 0x1e, 0xff, 0xd1, 0x00, 0x1f, 0xff, 0xd1, 0x00, 0x45, - 0xff, 0xdb, 0x00, 0x47, 0xff, 0xdf, 0x00, 0x49, 0xff, 0xd5, 0x00, 0x4b, - 0xff, 0xe3, 0x00, 0x53, 0xff, 0xdd, 0x00, 0x57, 0xff, 0xee, 0x00, 0xa3, - 0xff, 0xdb, 0x00, 0xa4, 0xff, 0xdb, 0x00, 0xa5, 0xff, 0xdb, 0x00, 0xa6, - 0xff, 0xdb, 0x00, 0xa7, 0xff, 0xdb, 0x00, 0xa8, 0xff, 0xdb, 0x00, 0xa9, - 0xff, 0xe3, 0x00, 0xab, 0xff, 0xd5, 0x00, 0xac, 0xff, 0xd5, 0x00, 0xad, - 0xff, 0xd5, 0x00, 0xb5, 0xff, 0xdd, 0x00, 0xb6, 0xff, 0xdd, 0x00, 0xb9, - 0xff, 0xdd, 0x00, 0xbb, 0xff, 0xdd, 0x00, 0x19, 0x00, 0x10, 0xff, 0x9a, - 0x00, 0x11, 0xff, 0xfe, 0x00, 0x12, 0xff, 0x9a, 0x00, 0x1e, 0xff, 0xd1, - 0x00, 0x1f, 0xff, 0xd1, 0x00, 0x45, 0xff, 0xe1, 0x00, 0x47, 0xff, 0xf2, - 0x00, 0x49, 0xff, 0xe7, 0x00, 0x4b, 0xff, 0xf4, 0x00, 0x53, 0xff, 0xee, - 0x00, 0x57, 0xff, 0xf6, 0x00, 0xa3, 0xff, 0xe1, 0x00, 0xa4, 0xff, 0xe1, - 0x00, 0xa5, 0xff, 0xe1, 0x00, 0xa6, 0xff, 0xe1, 0x00, 0xa7, 0xff, 0xe1, - 0x00, 0xa8, 0xff, 0xe1, 0x00, 0xa9, 0xff, 0xe9, 0x00, 0xab, 0xff, 0xe7, - 0x00, 0xac, 0xff, 0xe7, 0x00, 0xad, 0xff, 0xe7, 0x00, 0xb5, 0xff, 0xee, - 0x00, 0xb6, 0xff, 0xee, 0x00, 0xb9, 0xff, 0xee, 0x00, 0xbb, 0xff, 0xf4, - 0x00, 0x06, 0x00, 0x45, 0xff, 0xdd, 0x00, 0x47, 0xff, 0xd1, 0x00, 0x49, - 0xff, 0xc7, 0x00, 0x53, 0xff, 0xcd, 0x00, 0x55, 0xff, 0xd7, 0x00, 0xac, - 0xff, 0xc7, 0x00, 0x1a, 0x00, 0x10, 0xff, 0x71, 0x00, 0x11, 0xff, 0xe3, - 0x00, 0x12, 0xff, 0x71, 0x00, 0x1e, 0xff, 0xc9, 0x00, 0x1f, 0xff, 0xc9, - 0x00, 0x45, 0xff, 0xd3, 0x00, 0x47, 0xff, 0xd9, 0x00, 0x49, 0xff, 0xcf, - 0x00, 0x4b, 0xff, 0xdd, 0x00, 0x50, 0xff, 0xf8, 0x00, 0x53, 0xff, 0xd7, - 0x00, 0x57, 0xff, 0xe7, 0x00, 0xa3, 0xff, 0xd3, 0x00, 0xa4, 0xff, 0xd3, - 0x00, 0xa5, 0xff, 0xd3, 0x00, 0xa6, 0xff, 0xd3, 0x00, 0xa7, 0xff, 0xd3, - 0x00, 0xa8, 0xff, 0xd3, 0x00, 0xa9, 0xff, 0xdb, 0x00, 0xab, 0xff, 0xcf, - 0x00, 0xac, 0xff, 0xcf, 0x00, 0xad, 0xff, 0xcf, 0x00, 0xb5, 0xff, 0xd7, - 0x00, 0xb6, 0xff, 0xd7, 0x00, 0xb9, 0xff, 0xd7, 0x00, 0xbb, 0xff, 0xd9, - 0x00, 0x0b, 0x00, 0x10, 0x00, 0x0a, 0x00, 0x12, 0x00, 0x0a, 0x00, 0x27, - 0xff, 0xb6, 0x00, 0x2b, 0xff, 0xb8, 0x00, 0x33, 0xff, 0xbc, 0x00, 0x35, - 0xff, 0xbe, 0x00, 0x38, 0xff, 0x42, 0x00, 0x39, 0xff, 0xb4, 0x00, 0x3a, - 0xff, 0x66, 0x00, 0x3b, 0xff, 0x98, 0x00, 0x3d, 0xff, 0x35, 0x00, 0x1c, - 0xff, 0xff, 0xff, 0xae, 0xff, 0xff, 0xff, 0x7b, 0x00, 0x10, 0x00, 0x0a, - 0x00, 0x11, 0xff, 0xfa, 0x00, 0x12, 0x00, 0x0a, 0x00, 0x27, 0xff, 0xb6, - 0x00, 0x2b, 0xff, 0xb8, 0x00, 0x33, 0xff, 0xbc, 0x00, 0x35, 0xff, 0xbe, - 0x00, 0x38, 0xff, 0x42, 0x00, 0x39, 0xff, 0xb4, 0x00, 0x3a, 0xff, 0x66, - 0x00, 0x3b, 0xff, 0x98, 0x00, 0x3d, 0xff, 0x35, 0x00, 0x45, 0xff, 0xf8, - 0x00, 0x46, 0x00, 0x08, 0x00, 0x47, 0xff, 0xe9, 0x00, 0x48, 0xff, 0xf0, - 0x00, 0x49, 0xff, 0xdf, 0x00, 0x4b, 0xff, 0xec, 0x00, 0x53, 0xff, 0xe5, - 0x00, 0x55, 0xff, 0xf0, 0x00, 0x58, 0xff, 0xdf, 0x00, 0x59, 0xff, 0xe7, - 0x00, 0x5a, 0xff, 0xc1, 0x00, 0x5b, 0xff, 0xd5, 0x00, 0x5d, 0xff, 0xba, - 0x00, 0x6e, 0xff, 0xa6, 0x00, 0x0b, 0x00, 0x10, 0x00, 0x0a, 0x00, 0x12, - 0x00, 0x0a, 0x00, 0x27, 0xff, 0xb6, 0x00, 0x2b, 0xff, 0xb8, 0x00, 0x33, - 0xff, 0xbc, 0x00, 0x35, 0xff, 0xbe, 0x00, 0x38, 0xff, 0x42, 0x00, 0x39, - 0xff, 0xb4, 0x00, 0x3a, 0xff, 0x66, 0x00, 0x3b, 0xff, 0x98, 0x00, 0x3d, - 0xff, 0x35, 0x00, 0x0b, 0x00, 0x10, 0x00, 0x0a, 0x00, 0x12, 0x00, 0x0a, - 0x00, 0x27, 0xff, 0xb6, 0x00, 0x2b, 0xff, 0xb8, 0x00, 0x33, 0xff, 0xbc, - 0x00, 0x35, 0xff, 0xbe, 0x00, 0x38, 0xff, 0x42, 0x00, 0x39, 0xff, 0xb4, - 0x00, 0x3a, 0xff, 0x66, 0x00, 0x3b, 0xff, 0x98, 0x00, 0x3d, 0xff, 0x35, - 0x00, 0x1c, 0xff, 0xff, 0xff, 0xae, 0xff, 0xff, 0xff, 0x8d, 0xff, 0xff, - 0xff, 0x7b, 0x00, 0x10, 0x00, 0x0a, 0x00, 0x11, 0xff, 0xfa, 0x00, 0x12, - 0x00, 0x0a, 0x00, 0x27, 0xff, 0xb6, 0x00, 0x2b, 0xff, 0xb8, 0x00, 0x33, - 0xff, 0xbc, 0x00, 0x35, 0xff, 0xbe, 0x00, 0x38, 0xff, 0x42, 0x00, 0x39, - 0xff, 0xb4, 0x00, 0x3a, 0xff, 0x66, 0x00, 0x3b, 0xff, 0x98, 0x00, 0x3d, - 0xff, 0x35, 0x00, 0x45, 0xff, 0xf8, 0x00, 0x46, 0x00, 0x08, 0x00, 0x47, - 0xff, 0xe9, 0x00, 0x48, 0xff, 0xf0, 0x00, 0x4b, 0xff, 0xec, 0x00, 0x53, - 0xff, 0xe5, 0x00, 0x55, 0xff, 0xf0, 0x00, 0x58, 0xff, 0xdf, 0x00, 0x59, - 0xff, 0xe7, 0x00, 0x5a, 0xff, 0xc1, 0x00, 0x5b, 0xff, 0xd5, 0x00, 0x5d, - 0xff, 0xba, 0x00, 0x6e, 0xff, 0xa6, 0x00, 0x1d, 0xff, 0xff, 0xff, 0xae, - 0xff, 0xff, 0xff, 0x8d, 0xff, 0xff, 0xff, 0x7b, 0x00, 0x10, 0x00, 0x0a, - 0x00, 0x11, 0xff, 0xfa, 0x00, 0x12, 0x00, 0x0a, 0x00, 0x27, 0xff, 0xb6, - 0x00, 0x2b, 0xff, 0xb8, 0x00, 0x33, 0xff, 0xbc, 0x00, 0x35, 0xff, 0xbe, - 0x00, 0x38, 0xff, 0x42, 0x00, 0x39, 0xff, 0xb4, 0x00, 0x3a, 0xff, 0x66, - 0x00, 0x3b, 0xff, 0x98, 0x00, 0x3d, 0xff, 0x35, 0x00, 0x45, 0xff, 0xf8, - 0x00, 0x46, 0x00, 0x08, 0x00, 0x47, 0xff, 0xe9, 0x00, 0x48, 0xff, 0xf0, - 0x00, 0x49, 0xff, 0xdf, 0x00, 0x4b, 0xff, 0xec, 0x00, 0x53, 0xff, 0xe5, - 0x00, 0x55, 0xff, 0xf0, 0x00, 0x58, 0xff, 0xdf, 0x00, 0x59, 0xff, 0xe7, - 0x00, 0x5a, 0xff, 0xc1, 0x00, 0x5b, 0xff, 0xd5, 0x00, 0x5d, 0xff, 0xba, - 0x00, 0x6e, 0xff, 0xa6, 0x00, 0x01, 0x00, 0x25, 0xff, 0xc1, 0x00, 0x03, - 0x00, 0x38, 0xff, 0xaa, 0x00, 0x3a, 0xff, 0xa4, 0x00, 0x3d, 0xff, 0x87, - 0x00, 0x05, 0x00, 0x25, 0xff, 0xb8, 0x00, 0x38, 0xff, 0xaa, 0x00, 0x3a, - 0xff, 0xa4, 0x00, 0x3b, 0xff, 0xd1, 0x00, 0x3d, 0xff, 0x87, 0x00, 0x03, - 0x00, 0x38, 0xff, 0xaa, 0x00, 0x3a, 0xff, 0xa4, 0x00, 0x3d, 0xff, 0x87, - 0x00, 0x03, 0x00, 0x38, 0xff, 0xaa, 0x00, 0x3a, 0xff, 0xa4, 0x00, 0x3d, - 0xff, 0x87, 0x00, 0x06, 0x00, 0x25, 0xff, 0xb8, 0x00, 0x38, 0xff, 0xaa, - 0x00, 0x3a, 0xff, 0xa4, 0x00, 0x3b, 0xff, 0xd1, 0x00, 0x3c, 0xff, 0xa2, - 0x00, 0x3d, 0xff, 0x87, 0x00, 0x01, 0x00, 0x25, 0xff, 0xbc, 0x00, 0x01, - 0x00, 0x25, 0xff, 0xb6, 0x00, 0x07, 0x00, 0x10, 0xff, 0xc9, 0x00, 0x12, - 0xff, 0xcd, 0x00, 0x25, 0xff, 0xb6, 0x00, 0x51, 0xff, 0xf8, 0x00, 0x52, - 0xff, 0xf8, 0x00, 0x54, 0x00, 0x06, 0x00, 0x56, 0xff, 0xf8, 0x00, 0x01, - 0x00, 0x25, 0xff, 0xb6, 0x00, 0x08, 0x00, 0x10, 0xff, 0xc9, 0x00, 0x12, - 0xff, 0xcd, 0x00, 0x25, 0xff, 0xb6, 0x00, 0x46, 0x00, 0x06, 0x00, 0x51, - 0xff, 0xf8, 0x00, 0x52, 0xff, 0xf8, 0x00, 0x54, 0x00, 0x06, 0x00, 0x56, - 0xff, 0xf8, 0x00, 0x03, 0x00, 0x5a, 0xff, 0xd5, 0x00, 0x5b, 0xff, 0xe5, - 0x00, 0x5d, 0xff, 0xcb, 0x00, 0x03, 0x00, 0x5a, 0xff, 0xd5, 0x00, 0x5b, - 0xff, 0xe5, 0x00, 0x5d, 0xff, 0xcb, 0x00, 0x03, 0x00, 0x5a, 0xff, 0xd5, - 0x00, 0x5b, 0xff, 0xe5, 0x00, 0x5d, 0xff, 0xcb, 0x00, 0x03, 0x00, 0x5a, - 0xff, 0xd5, 0x00, 0x5b, 0xff, 0xe5, 0x00, 0x5d, 0xff, 0xcb, 0x00, 0x03, - 0x00, 0x5a, 0xff, 0xdf, 0x00, 0x5b, 0xff, 0xec, 0x00, 0x5d, 0xff, 0xd7, - 0x00, 0x03, 0x00, 0x5a, 0xff, 0xe1, 0x00, 0x5b, 0xff, 0xee, 0x00, 0x5d, - 0xff, 0xd9, 0x00, 0x03, 0x00, 0x5a, 0xff, 0xe1, 0x00, 0x5b, 0xff, 0xee, - 0x00, 0x5d, 0xff, 0xd9, 0x00, 0x03, 0x00, 0x5a, 0xff, 0xdb, 0x00, 0x5b, - 0xff, 0xec, 0x00, 0x5d, 0xff, 0xd3, 0x00, 0x03, 0x00, 0x5a, 0xff, 0xdb, - 0x00, 0x5b, 0xff, 0xec, 0x00, 0x5d, 0xff, 0xd3, 0x00, 0x01, 0x00, 0x58, - 0xff, 0xec, 0x00, 0x05, 0x00, 0x58, 0xff, 0xec, 0x00, 0x5a, 0xff, 0xdb, - 0x00, 0x5b, 0xff, 0xec, 0x00, 0x5c, 0xff, 0xc9, 0x00, 0x5d, 0xff, 0xd3, - 0x00, 0x02, 0x00, 0x11, 0x00, 0x25, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2a, - 0x00, 0x2b, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x06, 0x00, 0x32, - 0x00, 0x34, 0x00, 0x09, 0x00, 0x36, 0x00, 0x3e, 0x00, 0x0c, 0x00, 0x45, - 0x00, 0x47, 0x00, 0x15, 0x00, 0x49, 0x00, 0x4d, 0x00, 0x18, 0x00, 0x4f, - 0x00, 0x5d, 0x00, 0x1d, 0x00, 0x83, 0x00, 0x88, 0x00, 0x2c, 0x00, 0x8a, - 0x00, 0x8a, 0x00, 0x32, 0x00, 0x95, 0x00, 0x99, 0x00, 0x33, 0x00, 0x9b, - 0x00, 0x9f, 0x00, 0x38, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0x3d, 0x00, 0xa7, - 0x00, 0xa9, 0x00, 0x3f, 0x00, 0xac, 0x00, 0xad, 0x00, 0x42, 0x00, 0xb5, - 0x00, 0xb7, 0x00, 0x44, 0x00, 0xb9, 0x00, 0xb9, 0x00, 0x47, 0x00, 0x00 -}; -unsigned int FreeSans_ttf_len = 22932; - -#if 0 -void writeLogo(const char *dir) -{ - QCString fileName=(QCString)dir+"/doxygen.png"; - QFile f(fileName); - if (f.open(IO_WriteOnly)) - f.writeBlock((char *)doxygen_png_data,doxygen_png_len); - else - { - fprintf(stderr,"warning: Cannot open file %s for writing\n",fileName.data()); - } - f.close(); -} - -void writeSearchButton(const char *dir) -{ - QCString fileName=(QCString)dir+"/search.png"; - QFile f(fileName); - if (f.open(IO_WriteOnly)) - f.writeBlock((char *)search_png,search_png_len); - else - { - fprintf(stderr,"warning: Cannot open file %s for writing\n",fileName.data()); - } - f.close(); -} -#endif - -void writeDoxFont(const char *dir) -{ - QCString fileName=(QCString)dir+"/FreeSans.ttf"; - QFile f(fileName); - if (f.open(IO_WriteOnly)) - f.writeBlock((char *)FreeSans_ttf,FreeSans_ttf_len); - else - { - fprintf(stderr,"error: Cannot open file %s for writing\n",fileName.data()); - } - f.close(); -} - -void removeDoxFont(const char *dir) -{ - QDir d(dir); - d.remove("FreeSans.ttf"); -} diff --git a/src/logos.h b/src/logos.h deleted file mode 100644 index 95a8a39..0000000 --- a/src/logos.h +++ /dev/null @@ -1,27 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2015 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * Documents produced by Doxygen are derivative works derived from the - * input used in their production; they are not affected by this license. - * - */ - -#ifndef LOGOS_H -#define LOGOS_H - -extern void writeLogo(const char *dir); -//extern void writeNullImage(const char *dir); -extern void writeSearchButton(const char *dir); -extern void writeDoxFont(const char *dir); -extern void removeDoxFont(const char *dir); - -#endif diff --git a/src/marshal.cpp b/src/marshal.cpp deleted file mode 100644 index c68718a..0000000 --- a/src/marshal.cpp +++ /dev/null @@ -1,857 +0,0 @@ -#include -#include - -#include "sortdict.h" -#include "marshal.h" -#include "entry.h" -#include "section.h" -#include "memberlist.h" -#include "definition.h" -#include "groupdef.h" -#include "example.h" -#include "arguments.h" -#include "doxygen.h" - -#define HEADER ('D'<<24)+('O'<<16)+('X'<<8)+'!' - -void marshalInt(StorageIntf *s,int v) -{ - uchar b[4]; - b[0]=((uint)v)>>24; - b[1]=(((uint)v)>>16)&0xff; - b[2]=(((uint)v)>>8)&0xff; - b[3]=v&0xff; - s->write((const char *)b,4); -} - -void marshalUInt(StorageIntf *s,uint v) -{ - uchar b[4]; - b[0]=v>>24; - b[1]=(v>>16)&0xff; - b[2]=(v>>8)&0xff; - b[3]=v&0xff; - s->write((const char *)b,4); -} - -void marshalUInt64(StorageIntf *s,uint64 v) -{ - marshalUInt(s, uint(v>>32)); - marshalUInt(s, uint(v&0xFFFFFFFF)); -} - -void marshalBool(StorageIntf *s,bool b) -{ - char c = b; - s->write(&c,sizeof(char)); -} - -void marshalQCString(StorageIntf *s,const QCString &str) -{ - uint l=str.length(); - marshalUInt(s,l); - if (l>0) s->write(str.data(),l); -} - -void marshalQGString(StorageIntf *s,const QGString &str) -{ - uint l=str.length(); - marshalUInt(s,l); - if (l>0) s->write(str.data(),l); -} - -void marshalArgumentList(StorageIntf *s,ArgumentList *argList) -{ - ArgumentList::marshal(s,argList); -} - -void marshalArgumentLists(StorageIntf *s,QList *argLists) -{ - if (argLists==0) - { - marshalUInt(s,NULL_LIST); // null pointer representation - } - else - { - marshalUInt(s,argLists->count()); - QListIterator ali(*argLists); - ArgumentList *al; - for (ali.toFirst();(al=ali.current());++ali) - { - marshalArgumentList(s,al); - } - } -} - -void marshalBaseInfoList(StorageIntf *s, QList *baseList) -{ - if (baseList==0) - { - marshalUInt(s,NULL_LIST); // null pointer representation - } - else - { - marshalUInt(s,baseList->count()); - QListIterator bli(*baseList); - BaseInfo *bi; - for (bli.toFirst();(bi=bli.current());++bli) - { - marshalQCString(s,bi->name); - marshalInt(s,(int)bi->prot); - marshalInt(s,(int)bi->virt); - } - } -} - -void marshalGroupingList(StorageIntf *s, QList *groups) -{ - if (groups==0) - { - marshalUInt(s,NULL_LIST); // null pointer representation - } - else - { - marshalUInt(s,groups->count()); - QListIterator gli(*groups); - Grouping *g; - for (gli.toFirst();(g=gli.current());++gli) - { - marshalQCString(s,g->groupname); - marshalInt(s,(int)g->pri); - } - } -} - -void marshalSectionInfoList(StorageIntf *s, QList *anchors) -{ - if (anchors==0) - { - marshalUInt(s,NULL_LIST); // null pointer representation - } - else - { - marshalUInt(s,anchors->count()); - QListIterator sli(*anchors); - SectionInfo *si; - for (sli.toFirst();(si=sli.current());++sli) - { - marshalQCString(s,si->label); - marshalQCString(s,si->title); - marshalQCString(s,si->ref); - marshalInt(s,(int)si->type); - marshalQCString(s,si->fileName); - marshalInt(s,si->lineNr); - marshalInt(s,si->level); - } - anchors->clear(); - } -} - -void marshalItemInfoList(StorageIntf *s, QList *sli) -{ - if (sli==0) - { - marshalUInt(s,NULL_LIST); // null pointer representation - } - else - { - marshalUInt(s,sli->count()); - QListIterator liii(*sli); - ListItemInfo *lii; - for (liii.toFirst();(lii=liii.current());++liii) - { - marshalQCString(s,lii->type); - marshalInt(s,lii->itemId); - } - } -} - -void marshalObjPointer(StorageIntf *s,void *obj) -{ - char *b = (char *)&obj; - s->write(b,sizeof(void *)); -} - -void marshalSectionDict(StorageIntf *s,SectionDict *sections) -{ - if (sections==0) - { - marshalUInt(s,NULL_LIST); // null pointer representation - } - else - { - marshalUInt(s,sections->count()); - SDict::IteratorDict sli(*sections); - SectionInfo *si; - for (sli.toFirst();(si=sli.current());++sli) - { - marshalQCString(s,sli.currentKey()); - marshalObjPointer(s,si); - } - } -} - -void marshalMemberSDict(StorageIntf *s,MemberSDict *memberSDict) -{ - if (memberSDict==0) - { - marshalUInt(s,NULL_LIST); // null pointer representation - } - else - { - marshalUInt(s,memberSDict->count()); - //printf(" marshalMemberSDict: items=%d\n",memberSDict->count()); - SDict::IteratorDict mdi(*memberSDict); - MemberDef *md; - int count=0; - for (mdi.toFirst();(md=mdi.current());++mdi) - { - //printf(" marshalMemberSDict: %d: key=%s value=%p\n",count,mdi.currentKey().data(),md); - marshalQCString(s,mdi.currentKey()); - marshalObjPointer(s,md); - count++; - } - assert(count==memberSDict->count()); - } -} - -void marshalDocInfo(StorageIntf *s,DocInfo *docInfo) -{ - if (docInfo==0) - { - marshalUInt(s,NULL_LIST); // null pointer representation - } - else - { - marshalUInt(s,1); - marshalQCString(s,docInfo->doc); - marshalInt(s,docInfo->line); - marshalQCString(s,docInfo->file); - } -} - -void marshalBriefInfo(StorageIntf *s,BriefInfo *briefInfo) -{ - if (briefInfo==0) - { - marshalUInt(s,NULL_LIST); // null pointer representation - } - else - { - marshalUInt(s,1); - marshalQCString(s,briefInfo->doc); - marshalQCString(s,briefInfo->tooltip); - marshalInt(s,briefInfo->line); - marshalQCString(s,briefInfo->file); - } -} - -void marshalBodyInfo(StorageIntf *s,BodyInfo *bodyInfo) -{ - if (bodyInfo==0) - { - marshalUInt(s,NULL_LIST); // null pointer representation - } - else - { - marshalUInt(s,1); - marshalInt(s,bodyInfo->startLine); - marshalInt(s,bodyInfo->endLine); - marshalObjPointer(s,bodyInfo->fileDef); - } -} - -void marshalGroupList(StorageIntf *s,GroupList *groupList) -{ - if (groupList==0) - { - marshalUInt(s,NULL_LIST); // null pointer representation - } - else - { - marshalUInt(s,groupList->count()); - QListIterator gli(*groupList); - GroupDef *gd=0; - for (gli.toFirst();(gd=gli.current());++gli) - { - marshalObjPointer(s,gd); - } - } -} - -void marshalMemberList(StorageIntf *s,MemberList *ml) -{ - if (ml==0) - { - marshalUInt(s,NULL_LIST); // null pointer representation - } - else - { - marshalUInt(s,ml->count()); - MemberListIterator mli(*ml); - MemberDef *md; - uint count=0; - for (mli.toFirst();(md=mli.current());++mli) - { - marshalObjPointer(s,md); - count++; - } - assert(count==ml->count()); - - ml->marshal(s); - } -} - -void marshalExampleSDict(StorageIntf *s,ExampleSDict *ed) -{ - if (ed==0) - { - marshalUInt(s,NULL_LIST); // null pointer representation - } - else - { - marshalUInt(s,ed->count()); - //printf(" marshalMemberSDict: items=%d\n",memberSDict->count()); - SDict::IteratorDict edi(*ed); - Example *e; - for (edi.toFirst();(e=edi.current());++edi) - { - //printf(" marshalMemberSDict: %d: key=%s value=%p\n",count,mdi.currentKey().data(),md); - marshalQCString(s,edi.currentKey()); - marshalQCString(s,e->anchor); - marshalQCString(s,e->name); - marshalQCString(s,e->file); - } - } -} - -void marshalMemberLists(StorageIntf *s,SDict *mls) -{ - if (mls==0) - { - marshalUInt(s,NULL_LIST); // null pointer representation - } - else - { - marshalUInt(s,mls->count()); - //printf(" marshalMemberSDict: items=%d\n",memberSDict->count()); - SDict::IteratorDict mli(*mls); - MemberList *ml; - for (mli.toFirst();(ml=mli.current());++mli) - { - //printf(" marshalMemberSDict: %d: key=%s value=%p\n",count,mdi.currentKey().data(),md); - marshalQCString(s,mli.currentKey()); - marshalObjPointer(s,ml); // assume we are not owner of the list - } - } -} - -void marshalLocalToc(StorageIntf *s,const LocalToc <) -{ - marshalInt(s,lt.mask()); - marshalInt(s,lt.htmlLevel()); - marshalInt(s,lt.latexLevel()); - marshalInt(s,lt.xmlLevel()); - marshalInt(s,lt.docbookLevel()); -} - -void marshalEntry(StorageIntf *s,Entry *e) -{ - marshalUInt(s,HEADER); - marshalQCString(s,e->name); - marshalQCString(s,e->type); - marshalInt(s,e->section); - marshalInt(s,(int)e->protection); - marshalInt(s,(int)e->mtype); - marshalUInt64(s,e->spec); - marshalInt(s,e->initLines); - marshalBool(s,e->stat); - marshalLocalToc(s,e->localToc); - marshalBool(s,e->explicitExternal); - marshalBool(s,e->proto); - marshalBool(s,e->subGrouping); - marshalBool(s,e->callGraph); - marshalBool(s,e->callerGraph); - marshalBool(s,e->referencedByRelation); - marshalBool(s,e->referencesRelation); - marshalInt(s,(int)e->virt); - marshalQCString(s,e->args); - marshalQCString(s,e->bitfields); - marshalArgumentList(s,e->argList); - marshalArgumentLists(s,e->tArgLists); - marshalQGString(s,e->program); - marshalQGString(s,e->initializer); - marshalQCString(s,e->includeFile); - marshalQCString(s,e->includeName); - marshalQCString(s,e->doc); - marshalInt(s,e->docLine); - marshalQCString(s,e->docFile); - marshalQCString(s,e->brief); - marshalInt(s,e->briefLine); - marshalQCString(s,e->briefFile); - marshalQCString(s,e->inbodyDocs); - marshalInt(s,e->inbodyLine); - marshalQCString(s,e->inbodyFile); - marshalQCString(s,e->relates); - marshalInt(s,e->relatesType); - marshalQCString(s,e->read); - marshalQCString(s,e->write); - marshalQCString(s,e->inside); - marshalQCString(s,e->exception); - marshalArgumentList(s,e->typeConstr); - marshalInt(s,e->bodyLine); - marshalInt(s,e->endBodyLine); - marshalInt(s,e->mGrpId); - marshalBaseInfoList(s,e->extends); - marshalGroupingList(s,e->groups); - marshalSectionInfoList(s,e->anchors); - marshalQCString(s,e->fileName); - marshalInt(s,e->startLine); - marshalItemInfoList(s,e->sli); - marshalInt(s,(int)e->lang); - marshalBool(s,e->hidden); - marshalBool(s,e->artificial); - marshalInt(s,(int)e->groupDocType); - marshalQCString(s,e->id); - marshalQCString(s,e->metaData); -} - -void marshalEntryTree(StorageIntf *s,Entry *e) -{ - marshalEntry(s,e); - marshalUInt(s,e->children()->count()); - QListIterator eli(*e->children()); - Entry *child; - for (eli.toFirst();(child=eli.current());++eli) - { - marshalEntryTree(s,child); - } -} - -//------------------------------------------------------------------ - -int unmarshalInt(StorageIntf *s) -{ - uchar b[4]; - s->read((char *)b,4); - int result=(int)((((uint)b[0])<<24)+((uint)b[1]<<16)+((uint)b[2]<<8)+(uint)b[3]); - //printf("unmarshalInt: %x %x %x %x: %x offset=%llx\n",b[0],b[1],b[2],b[3],result,f.pos()); - return result; -} - -uint unmarshalUInt(StorageIntf *s) -{ - uchar b[4]; - s->read((char *)b,4); - uint result=(((uint)b[0])<<24)+((uint)b[1]<<16)+((uint)b[2]<<8)+(uint)b[3]; - //printf("unmarshalUInt: %x %x %x %x: %x offset=%llx\n",b[0],b[1],b[2],b[3],result,f.pos()); - return result; -} - -uint64 unmarshalUInt64(StorageIntf *s) -{ - uint64 result=uint64(unmarshalUInt(s))<<32; - result|=unmarshalUInt(s); - return result; -} - -bool unmarshalBool(StorageIntf *s) -{ - char result; - s->read(&result,sizeof(result)); - //printf("unmarshalBool: %x offset=%llx\n",result,f.pos()); - return result; -} - -QCString unmarshalQCString(StorageIntf *s) -{ - uint len = unmarshalUInt(s); - //printf("unmarshalQCString: len=%d offset=%llx\n",len,f.pos()); - QCString result(len+1); - result.at(len)='\0'; - if (len>0) - { - s->read(result.rawData(),len); - } - //printf("unmarshalQCString: result=%s\n",result.data()); - return result; -} - -QGString unmarshalQGString(StorageIntf *s) -{ - uint len = unmarshalUInt(s); - //printf("unmarshalQCString: len=%d offset=%llx\n",len,f.pos()); - QGString result(len+1); - result.at(len)='\0'; - if (len>0) - { - s->read(result.data(),len); - } - //printf("unmarshalQCString: result=%s\n",result.data()); - return result; -} - -ArgumentList *unmarshalArgumentList(StorageIntf *s) -{ - return ArgumentList::unmarshal(s); -} - -QList *unmarshalArgumentLists(StorageIntf *s) -{ - uint i; - uint count = unmarshalUInt(s); - if (count==NULL_LIST) return 0; // null list - QList *result = new QList; - result->setAutoDelete(TRUE); - assert(count<1000000); - //printf("unmarshalArgumentLists: %d\n",count); - for (i=0;iappend(unmarshalArgumentList(s)); - } - return result; -} - -QList *unmarshalBaseInfoList(StorageIntf *s) -{ - uint i; - uint count = unmarshalUInt(s); - if (count==NULL_LIST) return 0; // null list - QList *result = new QList; - result->setAutoDelete(TRUE); - assert(count<1000000); - for (i=0;iappend(new BaseInfo(name,prot,virt)); - } - return result; -} - -QList *unmarshalGroupingList(StorageIntf *s) -{ - uint i; - uint count = unmarshalUInt(s); - if (count==NULL_LIST) return 0; // null list - QList *result = new QList; - result->setAutoDelete(TRUE); - assert(count<1000000); - for (i=0;iappend(new Grouping(name,prio)); - } - return result; -} - -QList *unmarshalSectionInfoList(StorageIntf *s) -{ - uint i; - uint count = unmarshalUInt(s); - if (count==NULL_LIST) return 0; // null list - QList *anchors = new QList; - assert(count<1000000); - for (i=0;ifind(label); - if (si==0) // This should actually never be true since all anchors should be in sectionDict. - // Could still optimize the marshaling routine by only storing label. - { - SectionInfo *si = new SectionInfo(fileName,lineNr,label,title,type,level,ref); - anchors->append(si); - Doxygen::sectionDict->append(label,si); // this dict owns the anchor objects - } - else - { - anchors->append(si); - } - } - return anchors; -} - -QList *unmarshalItemInfoList(StorageIntf *s) -{ - uint i; - uint count = unmarshalUInt(s); - if (count==NULL_LIST) return 0; // null list - QList *result = new QList; - result->setAutoDelete(TRUE); - assert(count<1000000); - for (i=0;itype = unmarshalQCString(s); - lii->itemId = unmarshalInt(s); - result->append(lii); - } - return result; -} - -void *unmarshalObjPointer(StorageIntf *s) -{ - void *result; - s->read((char *)&result,sizeof(void*)); - return result; -} - -SectionDict *unmarshalSectionDict(StorageIntf *s) -{ - uint i; - uint count = unmarshalUInt(s); - //printf("unmarshalSectionDict count=%d\n",count); - if (count==NULL_LIST) return 0; // null list - SectionDict *result = new SectionDict(17); - assert(count<1000000); - for (i=0;ilabel.data()); - result->append(key,si); - } - return result; -} - -MemberSDict *unmarshalMemberSDict(StorageIntf *s) -{ - uint i; - uint count = unmarshalUInt(s); - //printf("--- unmarshalMemberSDict count=%d\n",count); - if (count==NULL_LIST) - { - //printf("--- end unmarshalMemberSDict\n"); - return 0; // null list - } - MemberSDict *result = new MemberSDict; - assert(count<1000000); - //printf("Reading %d key-value pairs\n",count); - for (i=0;iappend(key,md); - } - - //printf("--- end unmarshalMemberSDict\n"); - return result; -} - -DocInfo *unmarshalDocInfo(StorageIntf *s) -{ - uint count = unmarshalUInt(s); - if (count==NULL_LIST) return 0; - DocInfo *result = new DocInfo; - result->doc = unmarshalQCString(s); - result->line = unmarshalInt(s); - result->file = unmarshalQCString(s); - return result; -} - -BriefInfo *unmarshalBriefInfo(StorageIntf *s) -{ - uint count = unmarshalUInt(s); - if (count==NULL_LIST) return 0; - BriefInfo *result = new BriefInfo; - result->doc = unmarshalQCString(s); - result->tooltip = unmarshalQCString(s); - result->line = unmarshalInt(s); - result->file = unmarshalQCString(s); - return result; -} - -BodyInfo *unmarshalBodyInfo(StorageIntf *s) -{ - uint count = unmarshalUInt(s); - if (count==NULL_LIST) return 0; - BodyInfo *result = new BodyInfo; - result->startLine = unmarshalInt(s); - result->endLine = unmarshalInt(s); - result->fileDef = (FileDef*)unmarshalObjPointer(s); - return result; -} - -GroupList *unmarshalGroupList(StorageIntf *s) -{ - uint i; - uint count = unmarshalUInt(s); - if (count==NULL_LIST) return 0; // null list - assert(count<1000000); - GroupList *result = new GroupList; - for (i=0;iappend(gd); - } - return result; -} - -MemberList *unmarshalMemberList(StorageIntf *s) -{ - uint i; - uint count = unmarshalUInt(s); - if (count==NULL_LIST) return 0; - MemberList *result = new MemberList; - assert(count<1000000); - for (i=0;iappend(md); - } - result->unmarshal(s); - return result; -} - -ExampleSDict *unmarshalExampleSDict(StorageIntf *s) -{ - uint i; - uint count = unmarshalUInt(s); - if (count==NULL_LIST) return 0; - ExampleSDict *result = new ExampleSDict; - assert(count<1000000); - for (i=0;ianchor = unmarshalQCString(s); - e->name = unmarshalQCString(s); - e->file = unmarshalQCString(s); - result->inSort(key,e); - } - return result; -} - -SDict *unmarshalMemberLists(StorageIntf *s) -{ - uint i; - uint count = unmarshalUInt(s); - if (count==NULL_LIST) return 0; - SDict *result = new SDict(7); - assert(count<1000000); - for (i=0;iappend(key,ml); - } - return result; -} - -LocalToc unmarshalLocalToc(StorageIntf *s) -{ - LocalToc result; - int mask = unmarshalInt(s); - int htmlLevel = unmarshalInt(s); - int latexLevel = unmarshalInt(s); - int xmlLevel = unmarshalInt(s); - int docbookLevel = unmarshalInt(s); - if ((mask & (1<name = unmarshalQCString(s); - e->type = unmarshalQCString(s); - e->section = unmarshalInt(s); - e->protection = (Protection)unmarshalInt(s); - e->mtype = (MethodTypes)unmarshalInt(s); - e->spec = unmarshalUInt64(s); - e->initLines = unmarshalInt(s); - e->stat = unmarshalBool(s); - e->localToc = unmarshalLocalToc(s); - e->explicitExternal = unmarshalBool(s); - e->proto = unmarshalBool(s); - e->subGrouping = unmarshalBool(s); - e->callGraph = unmarshalBool(s); - e->callerGraph = unmarshalBool(s); - e->referencedByRelation = unmarshalBool(s); - e->referencesRelation = unmarshalBool(s); - e->virt = (Specifier)unmarshalInt(s); - e->args = unmarshalQCString(s); - e->bitfields = unmarshalQCString(s); - delete e->argList; - e->argList = unmarshalArgumentList(s); - e->tArgLists = unmarshalArgumentLists(s); - e->program = unmarshalQGString(s); - e->initializer = unmarshalQGString(s); - e->includeFile = unmarshalQCString(s); - e->includeName = unmarshalQCString(s); - e->doc = unmarshalQCString(s); - e->docLine = unmarshalInt(s); - e->docFile = unmarshalQCString(s); - e->brief = unmarshalQCString(s); - e->briefLine = unmarshalInt(s); - e->briefFile = unmarshalQCString(s); - e->inbodyDocs = unmarshalQCString(s); - e->inbodyLine = unmarshalInt(s); - e->inbodyFile = unmarshalQCString(s); - e->relates = unmarshalQCString(s); - e->relatesType = (RelatesType)unmarshalInt(s); - e->read = unmarshalQCString(s); - e->write = unmarshalQCString(s); - e->inside = unmarshalQCString(s); - e->exception = unmarshalQCString(s); - e->typeConstr = unmarshalArgumentList(s); - e->bodyLine = unmarshalInt(s); - e->endBodyLine = unmarshalInt(s); - e->mGrpId = unmarshalInt(s); - delete e->extends; - e->extends = unmarshalBaseInfoList(s); - delete e->groups; - e->groups = unmarshalGroupingList(s); - delete e->anchors; - e->anchors = unmarshalSectionInfoList(s); - e->fileName = unmarshalQCString(s); - e->startLine = unmarshalInt(s); - e->sli = unmarshalItemInfoList(s); - e->lang = (SrcLangExt)unmarshalInt(s); - e->hidden = unmarshalBool(s); - e->artificial = unmarshalBool(s); - e->groupDocType = (Entry::GroupDocType)unmarshalInt(s); - e->id = unmarshalQCString(s); - e->metaData = unmarshalQCString(s); - return e; -} - -Entry * unmarshalEntryTree(StorageIntf *s) -{ - Entry *e = unmarshalEntry(s); - uint count = unmarshalUInt(s); - uint i; - for (i=0;iaddSubEntry(unmarshalEntryTree(s)); - } - return e; -} diff --git a/src/marshal.h b/src/marshal.h deleted file mode 100644 index 206ab04..0000000 --- a/src/marshal.h +++ /dev/null @@ -1,97 +0,0 @@ -/****************************************************************************** - * - * Copyright (C) 1997-2015 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * Documents produced by Doxygen are derivative works derived from the - * input used in their production; they are not affected by this license. - * - */ - -#ifndef MARSHAL_H -#define MARSHAL_H - -#include -#include -#include "sortdict.h" -#include "store.h" - -class ArgumentList; -struct BaseInfo; -struct Grouping; -struct SectionInfo; -struct ListItemInfo; -class QCString; -class QGString; -class SectionDict; -class MemberSDict; -class GroupList; -class MemberList; -struct BodyInfo; -struct DocInfo; -struct BriefInfo; -class ExampleSDict; -class Entry; - -#define NULL_LIST 0xffffffff - -//----- marshaling function: datatype -> byte stream -------------------- - -void marshalInt(StorageIntf *s,int v); -void marshalUInt(StorageIntf *s,uint v); -void marshalUInt64(StorageIntf *s,uint64 v); -void marshalBool(StorageIntf *s,bool b); -void marshalQCString(StorageIntf *s,const QCString &str); -void marshalQGString(StorageIntf *s,const QGString &str); -void marshalArgumentList(StorageIntf *s,ArgumentList *argList); -void marshalArgumentLists(StorageIntf *s,QList *argLists); -void marshalBaseInfoList(StorageIntf *s, QList *baseList); -void marshalGroupingList(StorageIntf *s, QList *groups); -void marshalSectionInfoList(StorageIntf *s, QList *anchors); -void marshalItemInfoList(StorageIntf *s, QList *sli); -void marshalObjPointer(StorageIntf *s,void *obj); -void marshalSectionDict(StorageIntf *s,SectionDict *sections); -void marshalMemberSDict(StorageIntf *s,MemberSDict *memberSDict); -void marshalDocInfo(StorageIntf *s,DocInfo *docInfo); -void marshalBriefInfo(StorageIntf *s,BriefInfo *briefInfo); -void marshalBodyInfo(StorageIntf *s,BodyInfo *bodyInfo); -void marshalGroupList(StorageIntf *s,GroupList *groupList); -void marshalMemberList(StorageIntf *s,MemberList *ml); -void marshalExampleSDict(StorageIntf *s,ExampleSDict *ed); -void marshalMemberLists(StorageIntf *s,SDict *mls); -void marshalEntry(StorageIntf *s,Entry *e); -void marshalEntryTree(StorageIntf *s,Entry *e); - -//----- unmarshaling function: byte stream -> datatype ------------------ - -int unmarshalInt(StorageIntf *s); -uint unmarshalUInt(StorageIntf *s); -uint64 unmarshalUInt64(StorageIntf *s); -bool unmarshalBool(StorageIntf *s); -QCString unmarshalQCString(StorageIntf *s); -QGString unmarshalQGString(StorageIntf *s); -ArgumentList * unmarshalArgumentList(StorageIntf *s); -QList *unmarshalArgumentLists(StorageIntf *s); -QList * unmarshalBaseInfoList(StorageIntf *s); -QList * unmarshalGroupingList(StorageIntf *s); -QList * unmarshalSectionInfoList(StorageIntf *s); -QList *unmarshalItemInfoList(StorageIntf *s); -void * unmarshalObjPointer(StorageIntf *s); -SectionDict * unmarshalSectionDict(StorageIntf *s); -MemberSDict * unmarshalMemberSDict(StorageIntf *s); -DocInfo * unmarshalDocInfo(StorageIntf *s); -BriefInfo * unmarshalBriefInfo(StorageIntf *s); -BodyInfo * unmarshalBodyInfo(StorageIntf *s); -GroupList * unmarshalGroupList(StorageIntf *s); -MemberList * unmarshalMemberList(StorageIntf *s); -ExampleSDict * unmarshalExampleSDict(StorageIntf *s); -SDict * unmarshalMemberLists(StorageIntf *s); -Entry * unmarshalEntry(StorageIntf *s); -Entry * unmarshalEntryTree(StorageIntf *s); - -#endif diff --git a/src/memberdef.cpp b/src/memberdef.cpp index 793a56b..683f8c3 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -35,7 +35,6 @@ #include "dot.h" #include "searchindex.h" #include "parserintf.h" -#include "marshal.h" #include "objcache.h" #include "vhdldocgen.h" diff --git a/src/membergroup.cpp b/src/membergroup.cpp index 5ee47ab..3e8fea9 100644 --- a/src/membergroup.cpp +++ b/src/membergroup.cpp @@ -26,7 +26,6 @@ #include "groupdef.h" #include "doxygen.h" #include "docparser.h" -#include "marshal.h" #include "entry.h" #include "md5.h" @@ -349,40 +348,6 @@ void MemberGroup::findSectionsInDocumentation() memberList->findSectionsInDocumentation(); } -void MemberGroup::marshal(StorageIntf *s) -{ - marshalMemberList(s,memberList); - marshalObjPointer(s,inDeclSection); // reference only - marshalInt(s,grpId); - marshalQCString(s,grpHeader); - marshalQCString(s,fileName); - marshalObjPointer(s,scope); - marshalQCString(s,doc); - marshalBool(s,inSameSection); - marshalInt(s,m_numDecMembers); - marshalInt(s,m_numDocMembers); - marshalObjPointer(s,m_parent); - marshalQCString(s,m_docFile); - marshalItemInfoList (Doxygen::symbolStorage,m_xrefListItems); -} - -void MemberGroup::unmarshal(StorageIntf *s) -{ - memberList = unmarshalMemberList(s); - inDeclSection = (MemberList *)unmarshalObjPointer(s); - grpId = unmarshalInt(s); - grpHeader = unmarshalQCString(s); - fileName = unmarshalQCString(s); - scope = (Definition *)unmarshalObjPointer(s); - doc = unmarshalQCString(s); - inSameSection = unmarshalBool(s); - m_numDecMembers = unmarshalInt(s); - m_numDocMembers = unmarshalInt(s); - m_parent = (Definition *)unmarshalObjPointer(s); - m_docFile = unmarshalQCString(s); - m_xrefListItems = unmarshalItemInfoList (Doxygen::symbolStorage); -} - void MemberGroup::setRefItems(const QList *sli) { if (sli) diff --git a/src/membergroup.h b/src/membergroup.h index b590d48..51123bb 100644 --- a/src/membergroup.h +++ b/src/membergroup.h @@ -94,9 +94,6 @@ class MemberGroup QCString docFile() const { return m_docFile; } int docLine() const { return m_docLine; } - void marshal(StorageIntf *s); - void unmarshal(StorageIntf *s); - private: MemberList *memberList; // list of all members in the group MemberList *inDeclSection; diff --git a/src/memberlist.cpp b/src/memberlist.cpp index 031b619..8d88863 100644 --- a/src/memberlist.cpp +++ b/src/memberlist.cpp @@ -25,7 +25,6 @@ #include "doxygen.h" #include "outputlist.h" #include "groupdef.h" -#include "marshal.h" #include "vhdldocgen.h" #include "namespacedef.h" #include "filedef.h" @@ -930,75 +929,6 @@ void MemberList::findSectionsInDocumentation() } } -void MemberList::marshal(StorageIntf *s) -{ - marshalInt(s,(int)m_listType); - marshalInt(s,m_varCnt); - marshalInt(s,m_funcCnt); - marshalInt(s,m_enumCnt); - marshalInt(s,m_enumValCnt); - marshalInt(s,m_typeCnt); - marshalInt(s,m_seqCnt); - marshalInt(s,m_dictCnt); - marshalInt(s,m_protoCnt); - marshalInt(s,m_defCnt); - marshalInt(s,m_friendCnt); - marshalInt(s,m_numDecMembers); - marshalInt(s,m_numDocMembers); - marshalBool(s,m_inGroup); - marshalBool(s,m_inFile); - marshalBool(s,m_needsSorting); - if (memberGroupList==0) - { - marshalUInt(s,NULL_LIST); // null pointer representation - } - else - { - marshalUInt(s,memberGroupList->count()); - QListIterator mgi(*memberGroupList); - MemberGroup *mg=0; - for (mgi.toFirst();(mg=mgi.current());++mgi) - { - mg->marshal(s); - } - } -} - -void MemberList::unmarshal(StorageIntf *s) -{ - m_listType = (MemberListType)unmarshalInt(s); - m_varCnt = unmarshalInt(s); - m_funcCnt = unmarshalInt(s); - m_enumCnt = unmarshalInt(s); - m_enumValCnt = unmarshalInt(s); - m_typeCnt = unmarshalInt(s); - m_seqCnt = unmarshalInt(s); - m_dictCnt = unmarshalInt(s); - m_protoCnt = unmarshalInt(s); - m_defCnt = unmarshalInt(s); - m_friendCnt = unmarshalInt(s); - m_numDecMembers = unmarshalInt(s); - m_numDocMembers = unmarshalInt(s); - m_inGroup = unmarshalBool(s); - m_inFile = unmarshalBool(s); - m_needsSorting = unmarshalBool(s); - uint i,count = unmarshalUInt(s); - if (count==NULL_LIST) // empty list - { - memberGroupList = 0; - } - else // add member groups - { - memberGroupList = new MemberGroupList; - for (i=0;iunmarshal(s); - memberGroupList->append(mg); - } - } -} - void MemberList::setNeedsSorting(bool b) { m_needsSorting = b; diff --git a/src/memberlist.h b/src/memberlist.h index a96f61f..f0cc63d 100644 --- a/src/memberlist.h +++ b/src/memberlist.h @@ -89,9 +89,6 @@ class MemberList : private QList void setNeedsSorting(bool b); MemberGroupList *getMemberGroupList() const { return memberGroupList; } - void marshal(StorageIntf *s); - void unmarshal(StorageIntf *s); - private: int compareValues(const MemberDef *item1,const MemberDef *item2) const; int countEnumValues(MemberDef *md,bool setAnonEnumType) const; diff --git a/src/store.cpp b/src/store.cpp deleted file mode 100644 index c09dcfb..0000000 --- a/src/store.cpp +++ /dev/null @@ -1,484 +0,0 @@ -/****************************************************************************** - * - * - * - * - * Copyright (C) 1997-2015 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * Documents produced by Doxygen are derivative works derived from the - * input used in their production; they are not affected by this license. - * - */ - -#include "store.h" -#include "portable.h" - - -#include -#include -#include -#include -#include -#include - -#define BLOCK_SIZE 512 // should be >8 and a power of 2 -#define BLOCK_POINTER_SIZE sizeof(portable_off_t) - - -#define ASSERTS_ENABLED - -#ifdef ASSERTS_ENABLED -#define STORE_ASSERT(x) assert(x) -#else -#define STORE_ASSERT(x) -#endif - -// Decide to use ftell or keep track of the current file pointer ourselves. -// Since valgrind shows that calling ftell has the unwanted side-effect of -// writing some uninitialized bytes (!) it might be better (and faster) to keep track -// of the current pointer ourselves. -#define USE_FTELL 0 - -//------------------------------------------------------------------------------------ - -Store::Store() -{ - m_file = 0; - m_front = 0; - m_cur = 0; - m_head = 0; - m_state = Init; - m_reads = 0; - m_writes = 0; -} - -Store::~Store() -{ - if (m_file) fclose(m_file); - - // clean up free list - while (m_head) - { - Node *node = m_head; - m_head = node->next; - delete node; - } -} - -int Store::open(const char *name) -{ - int i; - STORE_ASSERT(m_state==Init); - if (m_file) return 0; // already open - m_file = portable_fopen(name,"w+b"); - if (m_file==0) return -1; - - // first block serves as header, so offset=0 can be used as the end of the list. - for (i=0;ipos); - Node *node = m_head; - pos = node->pos; - // point head to next free item - m_head = node->next; - delete node; - // move to start of the block - if (portable_fseek(m_file,pos,SEEK_SET)==-1) - { - fprintf(stderr,"Store::alloc: Error seeking to position %d: %s\n", - (int)pos,strerror(errno)); - exit(1); - } - m_cur = pos; - STORE_ASSERT( (pos & (BLOCK_SIZE-1))==0 ); - } - //printf("%x: Store::alloc\n",(int)pos); - return pos; -} - -int Store::write(const char *buf,uint size) -{ - STORE_ASSERT(m_state==Writing); - //printf("%x: Store::write\n",(int)portable_ftell(m_file)); - do - { -#if USE_FTELL - portable_off_t curPos = portable_ftell(m_file); -#else - portable_off_t curPos = m_cur; -#endif - int bytesInBlock = (int)(BLOCK_SIZE - BLOCK_POINTER_SIZE - (curPos & (BLOCK_SIZE-1))); - int bytesLeft = bytesInBlock<(int)size ? (int)size-bytesInBlock : 0; - int numBytes = size - bytesLeft; - STORE_ASSERT(bytesInBlock>=0); - STORE_ASSERT(numBytes<=(int)(BLOCK_SIZE-BLOCK_POINTER_SIZE)); - if (numBytes>0) - { - if ((int)fwrite(buf,1,numBytes,m_file)!=numBytes) - { - fprintf(stderr,"Error writing: %s\n",strerror(errno)); - exit(1); - } - m_cur+=numBytes; - m_writes++; - } - if (bytesLeft>0) // still more bytes to write - { -#if USE_FTELL - STORE_ASSERT(((portable_ftell(m_file)+BLOCK_POINTER_SIZE)&(BLOCK_SIZE-1))==0); -#else - STORE_ASSERT(((m_cur+BLOCK_POINTER_SIZE)&(BLOCK_SIZE-1))==0); -#endif - // allocate new block - if (m_head==0) // no free blocks to reuse - { - //printf("%x: Store::write: new: pos=%x\n",(int)m_front,(int)portable_ftell(m_file)); - // write pointer to next block - if (fwrite(&m_front,BLOCK_POINTER_SIZE,1,m_file)!=1) - { - fprintf(stderr,"Error writing to store: %s\n",strerror(errno)); - exit(1); - } - m_cur+=BLOCK_POINTER_SIZE; -#if USE_FTELL - STORE_ASSERT(portable_ftell(m_file)==(curPos&~(BLOCK_SIZE-1))+BLOCK_SIZE); -#else - STORE_ASSERT(m_cur==(curPos&~(BLOCK_SIZE-1))+BLOCK_SIZE); -#endif - // move to next block - if (portable_fseek(m_file,0,SEEK_END)==-1) // go to end of the file - { - fprintf(stderr,"Store::alloc: Error seeking to end of file: %s\n",strerror(errno)); - exit(1); - } - m_cur=m_front; -#if USE_FTELL - STORE_ASSERT(portable_ftell(m_file)==m_front); -#else - STORE_ASSERT(m_cur==m_front); -#endif - // move front to the next of the block - m_front+=BLOCK_SIZE; - } - else // reuse block from the free list - { - // write pointer to next block - if (fwrite(&m_head->pos,BLOCK_POINTER_SIZE,1,m_file)!=1) - { - fprintf(stderr,"Error writing to store: %s\n",strerror(errno)); - exit(1); - } - Node *node = m_head; - portable_off_t pos = node->pos; - // point head to next free item - m_head = node->next; - delete node; - // move to start of the block - if (portable_fseek(m_file,pos,SEEK_SET)==-1) - { - fprintf(stderr,"Store::write: Error seeking to position %d: %s\n", - (int)pos,strerror(errno)); - exit(1); - } - m_cur = pos; - //printf("%x: Store::write: reuse\n",(int)pos); - } - } - size-=numBytes; - buf+=numBytes; - } - while (size>0); - return size; -} - -void Store::end() -{ - STORE_ASSERT(m_state==Writing); -#if USE_FTELL - portable_off_t curPos = portable_ftell(m_file); -#else - portable_off_t curPos = m_cur; -#endif - int bytesInBlock = (int)(BLOCK_SIZE - (curPos & (BLOCK_SIZE-1))); - //printf("%x: Store::end erasing %x bytes\n",(int)curPos&~(BLOCK_SIZE-1),bytesInBlock); - //printf("end: bytesInBlock=%x\n",bytesInBlock); - // zero out rest of the block - int i; - for (i=0;i0 && (pos & (BLOCK_SIZE-1))==0); - // goto end of the block - portable_off_t cur = pos, next; - while (1) - { - // add new node to the free list - Node *node = new Node; - node->next = m_head; - node->pos = cur; - - m_head = node; - // goto the end of cur block - if (portable_fseek(m_file,cur+BLOCK_SIZE-BLOCK_POINTER_SIZE,SEEK_SET)==-1) - { - fprintf(stderr,"Store::release: Error seeking to position %d: %s\n", - (int)(cur+BLOCK_SIZE-BLOCK_POINTER_SIZE),strerror(errno)); - exit(1); - } - // read pointer to next block - if (fread(&next,BLOCK_POINTER_SIZE,1,m_file)!=1) - { - fprintf(stderr,"Store::release: Error reading from store: %s\n",strerror(errno)); - exit(1); - } - m_cur = cur+BLOCK_SIZE; - if (next==0) break; // found end of list -> cur is last element - STORE_ASSERT((next & (BLOCK_SIZE-1))==0); - cur = next; - //printf("%x: Store::release\n",(int)cur); - } -} - -void Store::seek(portable_off_t pos) -{ - STORE_ASSERT(m_state==Reading); - //printf("%x: Store::seek\n",(int)pos); - if (portable_fseek(m_file,pos,SEEK_SET)==-1) - { - fprintf(stderr,"Store::seek: Error seeking to position %d: %s\n", - (int)pos,strerror(errno)); - exit(1); - } - m_cur = pos; - STORE_ASSERT((pos&(BLOCK_SIZE-1))==0); -} - -int Store::read(char *buf,uint size) -{ - STORE_ASSERT(m_state==Reading); - //printf("%x: Store::read total=%d\n",(int)portable_ftell(m_file),size); - do - { -#if USE_FTELL - portable_off_t curPos = portable_ftell(m_file); -#else - portable_off_t curPos = m_cur; -#endif - int bytesInBlock = (int)(BLOCK_SIZE - BLOCK_POINTER_SIZE - (curPos & (BLOCK_SIZE-1))); - int bytesLeft = bytesInBlock<(int)size ? (int)size-bytesInBlock : 0; - int numBytes = size - bytesLeft; - //printf(" Store::read: pos=%x num=%d left=%d\n",(int)curPos,numBytes,bytesLeft); - - if (numBytes>0) - { - //printf("%x: Store::read: %d out of %d bytes\n",(int)portable_ftell(m_file),numBytes,size); - if ((int)fread(buf,1,numBytes,m_file)!=numBytes) - { - fprintf(stderr,"Error reading from store: %s\n",strerror(errno)); - exit(1); - } - m_cur+=numBytes; - m_reads++; - } - if (bytesLeft>0) - { - portable_off_t newPos; - // read offset of the next block -#if USE_FTELL - STORE_ASSERT(((portable_ftell(m_file)+BLOCK_POINTER_SIZE)&(BLOCK_SIZE-1))==0); -#else - STORE_ASSERT(((m_cur+BLOCK_POINTER_SIZE)&(BLOCK_SIZE-1))==0); -#endif - if (fread((char *)&newPos,BLOCK_POINTER_SIZE,1,m_file)!=1) - { - fprintf(stderr,"Error reading from store: %s\n",strerror(errno)); - exit(1); - } - //printf("%x: Store::read: continue in next block, %d bytes to go\n",(int)newPos,bytesLeft); - //printf(" Store::read: next block=%x\n",(int)newPos); - STORE_ASSERT(newPos!=0); - STORE_ASSERT((newPos&(BLOCK_SIZE-1))==0); - curPos = newPos; - // move to next block - if (portable_fseek(m_file,curPos,SEEK_SET)==-1) - { - fprintf(stderr,"Store::read: Error seeking to position %d: %s\n", - (int)curPos,strerror(errno)); - exit(1); - } - m_cur = curPos; - } - - size-=numBytes; - buf+=numBytes; - } - while (size>0); - return size; -} - -void Store::printFreeList() -{ - printf("FreeList: "); - while (m_head) - { - portable_off_t pos = m_head->pos; - printf("%x ",(int)pos); - m_head = m_head->next; - } - printf("\n"); -} - -void Store::printStats() -{ - printf("ObjStore: block size %d bytes, total size %ld blocks, wrote %d blocks, read %d blocks\n", - BLOCK_SIZE,(long)(m_front/BLOCK_SIZE),m_reads,m_writes); -} - -void Store::dumpBlock(portable_off_t s,portable_off_t e) -{ - portable_fseek(m_file,s,SEEK_SET); - int size = (int)(e-s); - uchar *buf = new uchar[size]; - if (fread(buf,size,1,m_file)==(size_t)size) - { - int i,j; - for (i=0;i=32 && buf[i+j]<128)?buf[i+j]:'.'); - } - printf("\n"); - } - } - delete[] buf; - portable_fseek(m_file,m_cur,SEEK_SET); -} - -#ifdef STORE_TEST - -int main() -{ - printf("sizeof(portable_off_t)=%d\n",(int)sizeof(portable_off_t)); - Store s; - if (s.open("test.db")==0) - { - const char *str1 = "This is a test message... "; - const char *str2 = "Another message. "; - - int i,j; - for (j=0;j<5;j++) - { - char buf[100]; - - portable_off_t handle = s.alloc(); - for (i=0;i<1000000000;i++) - { - s.write(str1,strlen(str1)+1); - } - s.end(); - portable_off_t handle2 = s.alloc(); - for (i=0;i<10;i++) - { - s.write(str2,strlen(str2)+1); - } - s.end(); - - s.seek(handle); - for (i=0;i<3;i++) - { - s.read(buf,strlen(str1)+1); - printf("i=%d Read: %s\n",i,buf); - } - - s.release(handle); - - s.seek(handle2); - for (i=0;i<3;i++) - { - s.read(buf,strlen(str2)+1); - printf("i=%d Read: %s\n",i,buf); - } - - s.release(handle2); - } - - s.close(); - } - else - { - printf("Open failed! %s\n",strerror(errno)); - } -} - -#endif - diff --git a/src/store.h b/src/store.h deleted file mode 100644 index 39917df..0000000 --- a/src/store.h +++ /dev/null @@ -1,123 +0,0 @@ -/****************************************************************************** - * - * - * - * Copyright (C) 1997-2015 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * Documents produced by Doxygen are derivative works derived from the - * input used in their production; they are not affected by this license. - * - */ - -#ifndef STORE_H -#define STORE_H - -#include -#include - -#include "portable.h" - -/*! @brief Abstract interface for file based memory storage operations */ -class StorageIntf -{ - public: - /*! Required by gcc */ - virtual ~StorageIntf() {} - /*! Read \a size bytes from the store into \a buf. */ - virtual int read(char *buf,uint size) = 0; - /*! Write \a size bytes from \a buf into the store. */ - virtual int write(const char *buf,uint size) = 0; -}; - -/*! @brief The Store is a file based memory manager. - * - * You can open the store using open(). Then obtain a handle via alloc() - * followed by a sequence of write() commands to store information, - * and finalize it using end(). - * - * Later on you locate the information - * with seek() using the handle obtained with alloc(), and then use a - * sequence of read() calls to read the information back. - * - * If no longer needed the storage space can be freed using release(). - * - * The store will dynamically grow the file on disk if needed. - */ -class Store : public StorageIntf -{ - public: - /*! Creates a store. */ - Store(); - - /*! Releases the store object. Will close the underlying file if opened. */ - ~Store(); - - /*! Opens the file underlying the store using \a name as the file name. - * Returns 0 upon success, or -1 otherwise. - */ - int open(const char *name); - - /*! Allocates a handle to write to and read from. */ - portable_off_t alloc(); - - /*! Writes \a size bytes in array \a buf to the store. - * First alloc() has to be called. - * \note The information can only be read after end() has been called. - */ - int write(const char *buf,uint size); - - /*! Ends the sequence of writes. - * \note After this call, first alloc() has to be called - * before new writes can be done. - */ - void end(); - - /*! Releases the memory corresponding to the handle returned with alloc() */ - void release(portable_off_t handle); - - /*! Closes the store */ - void close(); - - /*! Goes to the start of information corresponding to handle \a pos */ - void seek(portable_off_t handle); - - /*! Reads \a size bytes from the store into the array pointed to be \a buf. - * \note Before reading seek() has to be called to set the right start of the store. - */ - int read(char *buf,uint size); - - void printStats(); - - portable_off_t pos() const { return m_cur; } - - void dumpBlock(portable_off_t start,portable_off_t end); - - private: - enum State - { - Init, - Reading, - Writing - }; - struct Node - { - portable_off_t pos; - struct Node *next; - }; - void printFreeList(); - FILE *m_file; - portable_off_t m_front; - portable_off_t m_cur; - Node *m_head; - State m_state; - int m_reads; - int m_writes; -}; - -#endif diff --git a/testing/009/bug.xml b/testing/009/bug.xml index 34a411b..ca3a22a 100644 --- a/testing/009/bug.xml +++ b/testing/009/bug.xml @@ -9,7 +9,7 @@ - Class Bug + Class Bug Class bug. diff --git a/testing/009/class_bug.xml b/testing/009/class_bug.xml index 5a770bb..f972b4a 100644 --- a/testing/009/class_bug.xml +++ b/testing/009/class_bug.xml @@ -17,7 +17,7 @@ - + diff --git a/testing/009/class_deprecated.xml b/testing/009/class_deprecated.xml index 5d44aaf..061bb34 100644 --- a/testing/009/class_deprecated.xml +++ b/testing/009/class_deprecated.xml @@ -15,7 +15,7 @@ - + diff --git a/testing/009/class_reminder.xml b/testing/009/class_reminder.xml index 379b3e7..bdf2ee0 100644 --- a/testing/009/class_reminder.xml +++ b/testing/009/class_reminder.xml @@ -22,7 +22,7 @@ - + diff --git a/testing/009/class_test.xml b/testing/009/class_test.xml index 9f1b126..64f287f 100644 --- a/testing/009/class_test.xml +++ b/testing/009/class_test.xml @@ -22,7 +22,7 @@ - + diff --git a/testing/009/class_todo.xml b/testing/009/class_todo.xml index 8657d60..a4fed63 100644 --- a/testing/009/class_todo.xml +++ b/testing/009/class_todo.xml @@ -22,7 +22,7 @@ - + diff --git a/testing/009/deprecated.xml b/testing/009/deprecated.xml index a787015..c3fc2a2 100644 --- a/testing/009/deprecated.xml +++ b/testing/009/deprecated.xml @@ -9,7 +9,7 @@ - Class Deprecated + Class Deprecated This class is deprecated diff --git a/testing/009/reminders.xml b/testing/009/reminders.xml index f848e3c..4818541 100644 --- a/testing/009/reminders.xml +++ b/testing/009/reminders.xml @@ -9,16 +9,16 @@ - Class Reminder + Class Reminder - A reminder + A reminder Member Reminder::reminder () - Need to rework this before the next release. + Need to rework this before the next release. diff --git a/testing/009/test.xml b/testing/009/test.xml index 828316d..665dc0e 100644 --- a/testing/009/test.xml +++ b/testing/009/test.xml @@ -9,7 +9,7 @@ - Class Test + Class Test This is part of testing diff --git a/testing/009/todo.xml b/testing/009/todo.xml index 394f07d..c3b160f 100644 --- a/testing/009/todo.xml +++ b/testing/009/todo.xml @@ -9,7 +9,7 @@ - Class Todo + Class Todo This still needs to be done. diff --git a/testing/011/category_integer_07_arithmetic_08.xml b/testing/011/category_integer_07_arithmetic_08.xml index 78a8c0e..0705628 100644 --- a/testing/011/category_integer_07_arithmetic_08.xml +++ b/testing/011/category_integer_07_arithmetic_08.xml @@ -19,7 +19,7 @@ - + id @@ -37,7 +37,7 @@ - + @@ -45,7 +45,7 @@ A category - + Integer(Arithmetic) diff --git a/testing/011/interface_integer.xml b/testing/011/interface_integer.xml index 429c6a0..863ec91 100644 --- a/testing/011/interface_integer.xml +++ b/testing/011/interface_integer.xml @@ -16,7 +16,7 @@ - + @@ -32,7 +32,7 @@ - + id @@ -50,7 +50,7 @@ - + @@ -80,7 +80,7 @@ - + Integer diff --git a/testing/012/citelist.xml b/testing/012/citelist.xml old mode 100755 new mode 100644 index cb039fd..81e46e5 --- a/testing/012/citelist.xml +++ b/testing/012/citelist.xml @@ -1,43 +1,43 @@ - - - - citelist - Bibliography - - - - - - - [1] - - - P.Belotti. Disjunctive cuts for non-convex MINLP. In Lee and Leyffer [4], pages 117144. - - - - [2] - - - T.Berthold, S.Heinz, and S.Vigerske. Extending a CIP framework to solve MIQCPs. In Lee and Leyffer [4], pages 427444. - - - - [3] - - - DonaldE. Knuth. Tex and Metafont, New Directions in Typesetting. American Mathematical Society and Digital Press, Stanford, 1979. - - - - [4] - - - Jon Lee and Sven Leyffer, editors. Mixed Integer Nonlinear Programming, volume 154 of The IMA Volumes in Mathematics and its Applications. Springer, 2012. - - - - - - - + + + + citelist + Bibliography + + + + + + + [1] + + + P.Belotti. Disjunctive cuts for non-convex MINLP. In Lee and Leyffer [4], pages 117144. + + + + [2] + + + T.Berthold, S.Heinz, and S.Vigerske. Extending a CIP framework to solve MIQCPs. In Lee and Leyffer [4], pages 427444. + + + + [3] + + + DonaldE. Knuth. Tex and Metafont, New Directions in Typesetting. American Mathematical Society and Digital Press, Stanford, 1979. + + + + [4] + + + Jon Lee and Sven Leyffer, editors. Mixed Integer Nonlinear Programming, volume 154 of The IMA Volumes in Mathematics and its Applications. Springer, 2012. + + + + + + + diff --git a/testing/012/indexpage.xml b/testing/012/indexpage.xml old mode 100755 new mode 100644 index e682540..227e52c --- a/testing/012/indexpage.xml +++ b/testing/012/indexpage.xml @@ -1,13 +1,13 @@ - - - - index - My Project - - - - See [3] for more info. - Oter references with crosreference see [1] and [2] for more info. - - - + + + + index + My Project + + + + See [3] for more info. + Oter references with crosreference see [1] and [2] for more info. + + + diff --git a/testing/014/indexpage.xml b/testing/014/indexpage.xml index 7cbc82f..3fb3867 100644 --- a/testing/014/indexpage.xml +++ b/testing/014/indexpage.xml @@ -42,7 +42,7 @@ - //implicitcodelanguage + //implicitcodelanguage diff --git a/testing/015/015__cond_8c.xml b/testing/015/015__cond_8c.xml index bcc18b5..8700967 100644 --- a/testing/015/015__cond_8c.xml +++ b/testing/015/015__cond_8c.xml @@ -15,7 +15,7 @@ - + diff --git a/testing/016/016__copydoc_8c.xml b/testing/016/016__copydoc_8c.xml index b0e2246..78a746a 100644 --- a/testing/016/016__copydoc_8c.xml +++ b/testing/016/016__copydoc_8c.xml @@ -20,7 +20,7 @@ - + void @@ -34,7 +34,7 @@ - + void @@ -48,7 +48,7 @@ - + void @@ -63,7 +63,7 @@ - + diff --git a/testing/018/018__def_8c.xml b/testing/018/018__def_8c.xml index 5f42767..837a85a 100644 --- a/testing/018/018__def_8c.xml +++ b/testing/018/018__def_8c.xml @@ -41,7 +41,7 @@ - + @@ -57,7 +57,7 @@ - + @@ -74,7 +74,7 @@ - + @@ -93,7 +93,7 @@ - + void @@ -113,7 +113,7 @@ - + diff --git a/testing/019/group__g1.xml b/testing/019/group__g1.xml index 2d45709..d9ea16d 100644 --- a/testing/019/group__g1.xml +++ b/testing/019/group__g1.xml @@ -16,7 +16,7 @@ - + diff --git a/testing/019/group__g2.xml b/testing/019/group__g2.xml index 3429ad9..9b1fc83 100644 --- a/testing/019/group__g2.xml +++ b/testing/019/group__g2.xml @@ -17,7 +17,7 @@ - + diff --git a/testing/019/group__g3.xml b/testing/019/group__g3.xml index 6ef7640..d9137b0 100644 --- a/testing/019/group__g3.xml +++ b/testing/019/group__g3.xml @@ -16,7 +16,7 @@ - + void @@ -30,7 +30,7 @@ - + diff --git a/testing/020/indexpage.xml b/testing/020/indexpage.xml index 3171e13..8bfb472 100644 --- a/testing/020/indexpage.xml +++ b/testing/020/indexpage.xml @@ -6,9 +6,9 @@ - Text. + Text. XML -More text. + More text. diff --git a/testing/025/class_test.xml b/testing/025/class_test.xml index c19341a..7438488 100644 --- a/testing/025/class_test.xml +++ b/testing/025/class_test.xml @@ -16,7 +16,7 @@ - + diff --git a/testing/026/class_test.xml b/testing/026/class_test.xml index 582d509..469ba7c 100644 --- a/testing/026/class_test.xml +++ b/testing/026/class_test.xml @@ -32,7 +32,7 @@ - + diff --git a/testing/027/struct_car.xml b/testing/027/struct_car.xml index 9027597..61a8d16 100644 --- a/testing/027/struct_car.xml +++ b/testing/027/struct_car.xml @@ -18,7 +18,7 @@ - + diff --git a/testing/027/struct_object.xml b/testing/027/struct_object.xml index 9d93be7..18b34ef 100644 --- a/testing/027/struct_object.xml +++ b/testing/027/struct_object.xml @@ -16,7 +16,7 @@ - + @@ -36,7 +36,7 @@ - + Object * @@ -54,7 +54,7 @@ - + diff --git a/testing/027/struct_truck.xml b/testing/027/struct_truck.xml index c5009d4..92877e3 100644 --- a/testing/027/struct_truck.xml +++ b/testing/027/struct_truck.xml @@ -18,7 +18,7 @@ - + diff --git a/testing/027/struct_vehicle.xml b/testing/027/struct_vehicle.xml index c217fc6..3fc2456 100644 --- a/testing/027/struct_vehicle.xml +++ b/testing/027/struct_vehicle.xml @@ -20,7 +20,7 @@ - + @@ -40,7 +40,7 @@ - + void @@ -58,7 +58,7 @@ - + diff --git a/testing/029/029__hideinit_8c.xml b/testing/029/029__hideinit_8c.xml index 4caf092..c13192f 100644 --- a/testing/029/029__hideinit_8c.xml +++ b/testing/029/029__hideinit_8c.xml @@ -16,7 +16,7 @@ - + int @@ -30,7 +30,7 @@ - + diff --git a/testing/031/indexpage.xml b/testing/031/indexpage.xml old mode 100755 new mode 100644 index 7e368f3..2d74510 --- a/testing/031/indexpage.xml +++ b/testing/031/indexpage.xml @@ -1,54 +1,54 @@ - - - - index - My Project - - - - Some text. - Doxygen logo - - More text. - SVG image with caption: -A caption - - PNG image with caption: -A caption - - SVG image without caption: - - - PNG image without caption: - - - Inline SVG image with caption: -This image is inline MIT license - within the text. - Inline PNG image with caption: -This image is inline MIT license - within the text. - Markdown style linked SVG image: - - Markdown style linked PNG image: - - HTML style linked SVG image: - - HTML style linked PNG image: - - HTML style unlinked SVG image: - - - HTML style unlinked PNG image: - - - Some markdown image tests - - Some normal link - - - Some normal link - - - - + + + + index + My Project + + + + Some text. + Doxygen logo + + More text. + SVG image with caption: +A caption + + PNG image with caption: +A caption + + SVG image without caption: + + + PNG image without caption: + + + Inline SVG image with caption: +This image is inline MIT license + within the text. + Inline PNG image with caption: +This image is inline MIT license + within the text. + Markdown style linked SVG image: + + Markdown style linked PNG image: + + HTML style linked SVG image: + + HTML style linked PNG image: + + HTML style unlinked SVG image: + + + HTML style unlinked PNG image: + + + Some markdown image tests + + Some normal link + + + Some normal link + + + + diff --git a/testing/035/035__invariant_8c.xml b/testing/035/035__invariant_8c.xml index b3d74bc..0bdd7a6 100644 --- a/testing/035/035__invariant_8c.xml +++ b/testing/035/035__invariant_8c.xml @@ -33,7 +33,7 @@ - + diff --git a/testing/036/036__link_8c.xml b/testing/036/036__link_8c.xml index aba069f..db238fb 100644 --- a/testing/036/036__link_8c.xml +++ b/testing/036/036__link_8c.xml @@ -20,7 +20,7 @@ - + diff --git a/testing/037/class_receiver.xml b/testing/037/class_receiver.xml index edb688a..21156d7 100644 --- a/testing/037/class_receiver.xml +++ b/testing/037/class_receiver.xml @@ -19,7 +19,7 @@ - + diff --git a/testing/037/class_sender.xml b/testing/037/class_sender.xml index 0f1996d..53ba04e 100644 --- a/testing/037/class_sender.xml +++ b/testing/037/class_sender.xml @@ -19,7 +19,7 @@ - + diff --git a/testing/039/class_test.xml b/testing/039/class_test.xml index 2a4796a..ca7ff62 100644 --- a/testing/039/class_test.xml +++ b/testing/039/class_test.xml @@ -16,7 +16,7 @@ - + void @@ -30,7 +30,7 @@ - + @@ -46,7 +46,7 @@ - + diff --git a/testing/041/class_test.xml b/testing/041/class_test.xml index 57dbe37..c4c1d9c 100644 --- a/testing/041/class_test.xml +++ b/testing/041/class_test.xml @@ -31,7 +31,7 @@ - + void @@ -45,11 +45,11 @@ - This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. + This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. - + void @@ -72,7 +72,7 @@ - + diff --git a/testing/042/namespaceorg_1_1doxygen_1_1_test.xml b/testing/042/namespaceorg_1_1doxygen_1_1_test.xml index 7ed33d5..cd243d5 100644 --- a/testing/042/namespaceorg_1_1doxygen_1_1_test.xml +++ b/testing/042/namespaceorg_1_1doxygen_1_1_test.xml @@ -7,6 +7,6 @@ A test package. - + diff --git a/testing/044/struct_s.xml b/testing/044/struct_s.xml index aefd50d..7214f29 100644 --- a/testing/044/struct_s.xml +++ b/testing/044/struct_s.xml @@ -16,7 +16,7 @@ - + int @@ -30,7 +30,7 @@ - + @@ -46,7 +46,7 @@ - + int @@ -60,7 +60,7 @@ - + @@ -76,7 +76,7 @@ - + int @@ -90,7 +90,7 @@ - + diff --git a/testing/046/046__related_8cpp.xml b/testing/046/046__related_8cpp.xml index c36c6c5..6386d5d 100644 --- a/testing/046/046__related_8cpp.xml +++ b/testing/046/046__related_8cpp.xml @@ -16,7 +16,7 @@ - + diff --git a/testing/046/class_test.xml b/testing/046/class_test.xml index 1445e35..0a9f22c 100644 --- a/testing/046/class_test.xml +++ b/testing/046/class_test.xml @@ -15,7 +15,7 @@ - + @@ -38,7 +38,7 @@ - + void @@ -52,7 +52,7 @@ - + diff --git a/testing/047/047__return_8cpp.xml b/testing/047/047__return_8cpp.xml index a29062f..4e3d3e9 100644 --- a/testing/047/047__return_8cpp.xml +++ b/testing/047/047__return_8cpp.xml @@ -16,7 +16,7 @@ - + int @@ -31,7 +31,7 @@ - + int @@ -46,7 +46,7 @@ - + diff --git a/testing/048/048__showinit_8c.xml b/testing/048/048__showinit_8c.xml index 4cc5717..3037c9c 100644 --- a/testing/048/048__showinit_8c.xml +++ b/testing/048/048__showinit_8c.xml @@ -15,7 +15,7 @@ - + int @@ -30,7 +30,7 @@ - + diff --git a/testing/050/indexpage.xml b/testing/050/indexpage.xml old mode 100755 new mode 100644 index bbaacf4..f3cd647 --- a/testing/050/indexpage.xml +++ b/testing/050/indexpage.xml @@ -1,45 +1,45 @@ - - - - index - My Project - - - - Some normal text. A verbatim section with a /* C comment */ in it - Showing a file as verbatim @book{knuth79, - author = "Donald E. Knuth", - title = "Tex and Metafont, New Directions in Typesetting", - year = "1979", - publisher = "American Mathematical Society and Digital Press", - address = "Stanford" -} -@InCollection{ BertholdHeinzVigerske2009, - author = {T. Berthold and S. Heinz and S. Vigerske}, - title = {Extending a {CIP} framework to solve {MIQCP}s}, - crossref = {LeLe12}, - pages = {427--444}, - url = {http://doi.org/10.1007/978-1-4614-1927-3_15} -} -@Book{ LeLe12, - title = {Mixed Integer Nonlinear Programming}, - booktitle = {Mixed Integer Nonlinear Programming}, - publisher = {Springer}, - year = {2012}, - editor = {Jon Lee and Sven Leyffer}, - volume = {154}, - series = {The IMA Volumes in Mathematics and its Applications}, - url = {http://doi.org/10.1007/978-1-4614-1927-3}, - issn = {978-1-4614-1926-6} -} -@InCollection{ Be09, - author = {P. Belotti}, - title = {Disjunctive cuts for non-convex {MINLP}}, - crossref = {LeLe12}, - pages = {117--144}, - url = {http://doi.org/10.1007/978-1-4614-1927-3_5} -} - More text after the verbatim section. - - - + + + + index + My Project + + + + Some normal text. A verbatim section with a /* C comment */ in it + Showing a file as verbatim @book{knuth79, + author = "Donald E. Knuth", + title = "Tex and Metafont, New Directions in Typesetting", + year = "1979", + publisher = "American Mathematical Society and Digital Press", + address = "Stanford" +} +@InCollection{ BertholdHeinzVigerske2009, + author = {T. Berthold and S. Heinz and S. Vigerske}, + title = {Extending a {CIP} framework to solve {MIQCP}s}, + crossref = {LeLe12}, + pages = {427--444}, + url = {http://doi.org/10.1007/978-1-4614-1927-3_15} +} +@Book{ LeLe12, + title = {Mixed Integer Nonlinear Programming}, + booktitle = {Mixed Integer Nonlinear Programming}, + publisher = {Springer}, + year = {2012}, + editor = {Jon Lee and Sven Leyffer}, + volume = {154}, + series = {The IMA Volumes in Mathematics and its Applications}, + url = {http://doi.org/10.1007/978-1-4614-1927-3}, + issn = {978-1-4614-1926-6} +} +@InCollection{ Be09, + author = {P. Belotti}, + title = {Disjunctive cuts for non-convex {MINLP}}, + crossref = {LeLe12}, + pages = {117--144}, + url = {http://doi.org/10.1007/978-1-4614-1927-3_5} +} + More text after the verbatim section. + + + diff --git a/testing/051/indexpage.xml b/testing/051/indexpage.xml index 50a6ff8..2d37333 100644 --- a/testing/051/indexpage.xml +++ b/testing/051/indexpage.xml @@ -6,7 +6,7 @@ - Dollar $ At @ Backslash \ Ampersand & Less < Greater > Hash # Percent % Quote " Dot . Double colon :: Pipe | Plus + Minus - + Dollar $ At @ Backslash \ Ampersand & Less < Greater > Hash # Percent % Quote " Dot . Double colon :: Pipe | Plus + Minus - diff --git a/testing/054/054__parblock_8cpp.xml b/testing/054/054__parblock_8cpp.xml index e9aec90..0eefc0b 100644 --- a/testing/054/054__parblock_8cpp.xml +++ b/testing/054/054__parblock_8cpp.xml @@ -91,7 +91,7 @@ - + void @@ -181,7 +181,7 @@ - + diff --git a/testing/055/md_055_markdown.xml b/testing/055/md_055_markdown.xml old mode 100755 new mode 100644 index 307eb26..18555aa --- a/testing/055/md_055_markdown.xml +++ b/testing/055/md_055_markdown.xml @@ -1,31 +1,31 @@ - - - - md_055_markdown - 055_markdown - - - - - Foo - - Bar - - Inline link - - - Reference link - - - - Baz - More text - - Upper-cased reference link on last line - - Dash - NDash MDash EDash - ENDash -- EMDash --- E3Dash --- - - - - - + + + + md_055_markdown + 055_markdown + + + + + Foo + + Bar + + Inline link + + + Reference link + + + + Baz + More text + + Upper-cased reference link on last line + + Dash - NDash MDash EDash - ENDash -- EMDash --- E3Dash --- + + + + + diff --git a/testing/064/struct_foo.xml b/testing/064/struct_foo.xml index e228f92..d9e2486 100644 --- a/testing/064/struct_foo.xml +++ b/testing/064/struct_foo.xml @@ -15,7 +15,7 @@ - + @@ -29,7 +29,7 @@ - + @@ -97,7 +97,7 @@ - + Foo diff --git a/testing/066/class_class1.xml b/testing/066/class_class1.xml old mode 100755 new mode 100644 index 34335a7..ccc412e --- a/testing/066/class_class1.xml +++ b/testing/066/class_class1.xml @@ -1,53 +1,53 @@ - - - - Class1 - - - int - int Class1.Property1 - - Property1 - = 1 - - Documentation of first property. - - - - - - - - - string - string Class1.Property2 - - Property2 - - Documentation of second property. - - - - - - - - - - Documentation of the class. - - - - - - - Class1 - Property1 - - - Class1 - Property2 - - - - + + + + Class1 + + + int + int Class1.Property1 + + Property1 + = 1 + + Documentation of first property. + + + + + + + + + string + string Class1.Property2 + + Property2 + + Documentation of second property. + + + + + + + + + + Documentation of the class. + + + + + + + Class1 + Property1 + + + Class1 + Property2 + + + + diff --git a/testing/067/067__link__varargs_8cpp.xml b/testing/067/067__link__varargs_8cpp.xml index 8bf0051..c6eaac5 100644 --- a/testing/067/067__link__varargs_8cpp.xml +++ b/testing/067/067__link__varargs_8cpp.xml @@ -20,7 +20,7 @@ - + void @@ -41,7 +41,7 @@ - + diff --git a/testing/068/068__ref__varargs_8cpp.xml b/testing/068/068__ref__varargs_8cpp.xml index ae5f28f..6cae853 100644 --- a/testing/068/068__ref__varargs_8cpp.xml +++ b/testing/068/068__ref__varargs_8cpp.xml @@ -20,7 +20,7 @@ - + void @@ -41,7 +41,7 @@ - + diff --git a/testing/069/069__link__variadic__template_8cpp.xml b/testing/069/069__link__variadic__template_8cpp.xml index 00677f8..08c3667 100644 --- a/testing/069/069__link__variadic__template_8cpp.xml +++ b/testing/069/069__link__variadic__template_8cpp.xml @@ -20,7 +20,7 @@ - + @@ -49,7 +49,7 @@ - + @@ -78,7 +78,7 @@ - + @@ -107,7 +107,7 @@ - + @@ -136,7 +136,7 @@ - + @@ -165,7 +165,7 @@ - + @@ -194,7 +194,7 @@ - + @@ -223,7 +223,7 @@ - + @@ -252,7 +252,7 @@ - + @@ -281,7 +281,7 @@ - + diff --git a/testing/070/070__ref__variadic__template_8cpp.xml b/testing/070/070__ref__variadic__template_8cpp.xml index 54d385b..cebe079 100644 --- a/testing/070/070__ref__variadic__template_8cpp.xml +++ b/testing/070/070__ref__variadic__template_8cpp.xml @@ -20,7 +20,7 @@ - + @@ -49,7 +49,7 @@ - + @@ -78,7 +78,7 @@ - + @@ -107,7 +107,7 @@ - + @@ -136,7 +136,7 @@ - + @@ -165,7 +165,7 @@ - + @@ -194,7 +194,7 @@ - + @@ -223,7 +223,7 @@ - + @@ -252,7 +252,7 @@ - + @@ -281,7 +281,7 @@ - + diff --git a/testing/071/namespace_a_namespace_1_1_0D0.xml b/testing/071/namespace_a_namespace_1_1_0D0.xml index 76483ca..6e42714 100644 --- a/testing/071/namespace_a_namespace_1_1_0D0.xml +++ b/testing/071/namespace_a_namespace_1_1_0D0.xml @@ -2,7 +2,7 @@ ANamespace::@0 - + Boolean @@ -33,13 +33,13 @@ - + - + - + diff --git a/testing/072/072__using_8cpp.xml b/testing/072/072__using_8cpp.xml index e368966..784bb67 100644 --- a/testing/072/072__using_8cpp.xml +++ b/testing/072/072__using_8cpp.xml @@ -20,7 +20,7 @@ - + diff --git a/testing/073/073__typed__enum_8cpp.xml b/testing/073/073__typed__enum_8cpp.xml index 9dda417..b0b2014 100644 --- a/testing/073/073__typed__enum_8cpp.xml +++ b/testing/073/073__typed__enum_8cpp.xml @@ -13,7 +13,7 @@ - + diff --git a/testing/074/namespacens.xml b/testing/074/namespacens.xml index db46c7d..0ee93fc 100644 --- a/testing/074/namespacens.xml +++ b/testing/074/namespacens.xml @@ -18,7 +18,7 @@ - + int @@ -35,7 +35,7 @@ - + void @@ -52,7 +52,7 @@ - + @@ -76,6 +76,6 @@ - + diff --git a/testing/074/struct_foo.xml b/testing/074/struct_foo.xml index e031314..bf9c426 100644 --- a/testing/074/struct_foo.xml +++ b/testing/074/struct_foo.xml @@ -15,7 +15,7 @@ - + Foo & @@ -33,7 +33,7 @@ - + const Foo & @@ -51,7 +51,7 @@ - + int @@ -69,7 +69,7 @@ - + int @@ -87,7 +87,7 @@ - + Foo & @@ -105,7 +105,7 @@ - + const Foo & @@ -123,7 +123,7 @@ - + int * @@ -141,7 +141,7 @@ - + @@ -157,7 +157,7 @@ - + @@ -206,7 +206,7 @@ - + @@ -243,7 +243,7 @@ - + Foo diff --git a/testing/075/struct_foo.xml b/testing/075/struct_foo.xml index eca791b..53ed0a8 100644 --- a/testing/075/struct_foo.xml +++ b/testing/075/struct_foo.xml @@ -19,7 +19,7 @@ - + void @@ -37,7 +37,7 @@ - + void @@ -54,7 +54,7 @@ - + void @@ -71,7 +71,7 @@ - + void @@ -88,7 +88,7 @@ - + void @@ -109,7 +109,7 @@ - + @@ -117,7 +117,7 @@ - + Foo diff --git a/testing/078/078__xml__namespace__members__in__file__scope_8h.xml b/testing/078/078__xml__namespace__members__in__file__scope_8h.xml index 728054f..1198549 100644 --- a/testing/078/078__xml__namespace__members__in__file__scope_8h.xml +++ b/testing/078/078__xml__namespace__members__in__file__scope_8h.xml @@ -14,7 +14,7 @@ - + @@ -31,7 +31,7 @@ - + diff --git a/testing/079/empty.xml b/testing/079/empty.xml index 3e1d691..83e7c99 100644 --- a/testing/079/empty.xml +++ b/testing/079/empty.xml @@ -6,7 +6,7 @@ -With an empty TOC. + With an empty TOC. diff --git a/testing/080/class_interface.xml b/testing/080/class_interface.xml index 06e0bb5..2ee4379 100644 --- a/testing/080/class_interface.xml +++ b/testing/080/class_interface.xml @@ -16,7 +16,7 @@ - + @@ -33,7 +33,7 @@ - + void @@ -48,7 +48,7 @@ - + void @@ -61,7 +61,7 @@ - + void @@ -75,7 +75,7 @@ - + @@ -83,7 +83,7 @@ - + Interface diff --git a/testing/081/081__brief__lists_8h.xml b/testing/081/081__brief__lists_8h.xml index 19dfe79..3f6052e 100644 --- a/testing/081/081__brief__lists_8h.xml +++ b/testing/081/081__brief__lists_8h.xml @@ -28,7 +28,7 @@ - + void @@ -55,7 +55,7 @@ - + void @@ -82,7 +82,7 @@ - + void @@ -109,7 +109,7 @@ - + diff --git a/testing/082/namespace_n.xml b/testing/082/namespace_n.xml index f69081d..9f39bd1 100644 --- a/testing/082/namespace_n.xml +++ b/testing/082/namespace_n.xml @@ -16,7 +16,7 @@ - + @@ -37,7 +37,7 @@ - + diff --git a/testing/083/namespace_n.xml b/testing/083/namespace_n.xml index 6adedaf..2b41072 100644 --- a/testing/083/namespace_n.xml +++ b/testing/083/namespace_n.xml @@ -16,7 +16,7 @@ - + @@ -37,7 +37,7 @@ - + diff --git a/testing/084/084__markdown__pre_8f90.xml b/testing/084/084__markdown__pre_8f90.xml old mode 100755 new mode 100644 index 8a59bd9..62fec7d --- a/testing/084/084__markdown__pre_8f90.xml +++ b/testing/084/084__markdown__pre_8f90.xml @@ -1,51 +1,51 @@ - - - - 084_markdown_pre.f90 - - - subroutine - subroutine subr1 - () - subr1 - - subr1 - - - - - ___________________________ - - - - - - - - - subroutine - subroutine subr2 - () - subr2 - - subr2 - - - - - ___________________________ - - - - - - - - - - - - - - - + + + + 084_markdown_pre.f90 + + + subroutine + subroutine subr1 + () + subr1 + + subr1 + + + + + ___________________________ + + + + + + + + + subroutine + subroutine subr2 + () + subr2 + + subr2 + + + + + ___________________________ + + + + + + + + + + + + + + + diff --git a/testing/085/085__tooltip_8cpp.xml b/testing/085/085__tooltip_8cpp.xml old mode 100755 new mode 100644 index d9eaf8b..f9859d9 --- a/testing/085/085__tooltip_8cpp.xml +++ b/testing/085/085__tooltip_8cpp.xml @@ -1,66 +1,66 @@ - - - - 085_tooltip.cpp - - - FOPEN_MACRO - - fn - - - mod - - if ((unit = fopen(fn, mod)) == NULL) \ - { \ - msg(OPEN_ERR,strerror(errno)); \ - } - - - - a general open macro - - - - - - - FCLOSE_MACRO - if (fclose(unit) != 0) \ - { \ - msg(CLOSE_ERR,strerror(errno)); \ - } - - - - a general close macro - - - - - - - - - FILE * - FILE* unit - - unit - = NULL - - the unit - - - - - - - - - - - - - - - + + + + 085_tooltip.cpp + + + FOPEN_MACRO + + fn + + + mod + + if ((unit = fopen(fn, mod)) == NULL) \ + { \ + msg(OPEN_ERR,strerror(errno)); \ + } + + + + a general open macro + + + + + + + FCLOSE_MACRO + if (fclose(unit) != 0) \ + { \ + msg(CLOSE_ERR,strerror(errno)); \ + } + + + + a general close macro + + + + + + + + + FILE * + FILE* unit + + unit + = NULL + + the unit + + + + + + + + + + + + + + + -- cgit v0.12