Commit 0fea3d4c authored by Dimitri van Heesch's avatar Dimitri van Heesch

Introduced template directory for template and resource files and resource compiler & manager

parent 475b0c51
...@@ -70,3 +70,6 @@ ...@@ -70,3 +70,6 @@
/man /man
/docbook /docbook
/perlmod /perlmod
!/templates/html
!/templates/latex
...@@ -102,7 +102,7 @@ pdf: docs ...@@ -102,7 +102,7 @@ pdf: docs
DISTFILES = Doxyfile vhdlparser libmd5 addon tmake doc examples bin lib objects testing \ DISTFILES = Doxyfile vhdlparser libmd5 addon tmake doc examples bin lib objects testing \
qtools src configure configure.bin Makefile.in Makefile.win_nmake.in \ qtools src configure configure.bin Makefile.in Makefile.win_nmake.in \
Makefile.win_make.in INSTALL LANGUAGE.HOWTO LICENSE PLATFORMS \ Makefile.win_make.in INSTALL LANGUAGE.HOWTO LICENSE PLATFORMS \
VERSION README.md packages winbuild jquery VERSION README.md packages winbuild jquery templates
archive: clean archive: clean
tar zcvf dx`date +%y%m%d`.tgz $(DISTFILES) tar zcvf dx`date +%y%m%d`.tgz $(DISTFILES)
......
...@@ -3,6 +3,7 @@ JQUERY_UI_VERSION = 1.8.18 ...@@ -3,6 +3,7 @@ JQUERY_UI_VERSION = 1.8.18
HASHCHANGE_VERSION = 1.3 HASHCHANGE_VERSION = 1.3
SCROLL_VERSION = 1.4.2 SCROLL_VERSION = 1.4.2
POWERTIP_VERSION = 1.2.0 POWERTIP_VERSION = 1.2.0
MINIFIER ?= /usr/local/bin/yuicompressor-2.4.7 MINIFIER ?= /usr/local/bin/yuicompressor-2.4.7
SCRIPTS = jquery-$(JQUERY_VERSION).js \ SCRIPTS = jquery-$(JQUERY_VERSION).js \
jquery.ui-$(JQUERY_UI_VERSION).core.js \ jquery.ui-$(JQUERY_UI_VERSION).core.js \
...@@ -12,31 +13,17 @@ SCRIPTS = jquery-$(JQUERY_VERSION).js \ ...@@ -12,31 +13,17 @@ SCRIPTS = jquery-$(JQUERY_VERSION).js \
jquery.ba-$(HASHCHANGE_VERSION)-hashchange.js \ jquery.ba-$(HASHCHANGE_VERSION)-hashchange.js \
jquery.scrollTo-$(SCROLL_VERSION).js \ jquery.scrollTo-$(SCROLL_VERSION).js \
jquery.powertip-$(POWERTIP_VERSION).js jquery.powertip-$(POWERTIP_VERSION).js
RESULTS = jquery_p1.js jquery_p2.js jquery_p3.js \ RESULTS = jquery.js
jquery_ui.js jquery_fx.js jquery_pt.js
SCRIPTS_MIN = $(SCRIPTS:%.js=%-min.js) SCRIPTS_MIN = $(SCRIPTS:%.js=%-min.js)
all: $(RESULTS) all: $(RESULTS)
install: $(RESULTS) install: $(RESULTS)
cp $(RESULTS) ../src/ cp $(RESULTS) ../templates/html/
jquery_ui.js: scripts
cat jquery.ui-$(JQUERY_UI_VERSION).core-min.js \
jquery.ui-$(JQUERY_UI_VERSION).widget-min.js \
jquery.ui-$(JQUERY_UI_VERSION).mouse-min.js \
jquery.ui-$(JQUERY_UI_VERSION).resizable-min.js \
jquery.ba-$(HASHCHANGE_VERSION)-hashchange-min.js > jquery_ui.js
jquery_pt.js: scripts
cat jquery.powertip-$(POWERTIP_VERSION)-min.js > jquery_pt.js
jquery_fx.js: scripts
cat jquery.scrollTo-$(SCROLL_VERSION)-min.js > jquery_fx.js
jquery_p1.js jquery_p2.js jquery_p3.js: scripts jquery.js: scripts
perl split_jquery.pl jquery-$(JQUERY_VERSION)-min.js $@ cat $(SCRIPTS_MIN) > jquery.js
scripts: $(SCRIPTS_MIN) scripts: $(SCRIPTS_MIN)
...@@ -44,5 +31,5 @@ clean: ...@@ -44,5 +31,5 @@ clean:
rm -f $(SCRIPTS_MIN) $(RESULTS) rm -f $(SCRIPTS_MIN) $(RESULTS)
%-min.js: %.js %-min.js: %.js
java -jar $(MINIFIER).jar --line-break 13000 $^ > $@ java -jar $(MINIFIER).jar $^ > $@
...@@ -11,7 +11,4 @@ packages: ...@@ -11,7 +11,4 @@ packages:
- jquery.scrollTo: 1.4.2: https://github.com/flesler/jquery.scrollTo - jquery.scrollTo: 1.4.2: https://github.com/flesler/jquery.scrollTo
- jquery.powertip: 1.2.0: http://stevenbenner.github.io/jquery-powertip/ - jquery.powertip: 1.2.0: http://stevenbenner.github.io/jquery-powertip/
The Makefile will built the jquery_*.js files used by doxygen. The Makefile will built the jquery.js files used by doxygen.
Some files are split into smaller parts to make sure Visual Studio can compile them
as strings.
# script to split file into parts of roughly 32kb
#!/bin/perl
my $file = shift;
my $target = shift;
my $count = 1;
my $len = 0;
$target=~/p(\d+).js/;
my $part = $1;
open(F,"<$file") || die ("cannot open file for reading: $!");
open(G,">$target") || die("cannot open file for writing: $!");
while (<F>)
{
if ($part==$count)
{
print G "$_";
}
$len+=length($_);
if ($len>32768)
{
$len=0;
$count++;
}
}
close(F);
close(G);
...@@ -297,7 +297,7 @@ public: ...@@ -297,7 +297,7 @@ public:
{ {
if (!str) return *this; if (!str) return *this;
int len1 = length(); int len1 = length();
int len2 = strlen(str); int len2 = (int)strlen(str);
resize(len1+len2+1); resize(len1+len2+1);
memcpy(data()+len1,str,len2); memcpy(data()+len1,str,len2);
return *this; return *this;
...@@ -467,7 +467,7 @@ public: ...@@ -467,7 +467,7 @@ public:
{ {
if (str) if (str)
{ {
int len = strlen(str); int len = (int)strlen(str);
u.s.isShort = len<SHORT_STR_CAPACITY; u.s.isShort = len<SHORT_STR_CAPACITY;
if (len<SHORT_STR_CAPACITY) if (len<SHORT_STR_CAPACITY)
{ {
...@@ -489,7 +489,7 @@ public: ...@@ -489,7 +489,7 @@ public:
{ {
if (str && maxlen>0) if (str && maxlen>0)
{ {
uint len=strlen(str); uint len=(uint)strlen(str);
if (len>maxlen) len=maxlen; if (len>maxlen) len=maxlen;
u.s.isShort = len<=SHORT_STR_MAX_LEN; u.s.isShort = len<=SHORT_STR_MAX_LEN;
if (u.s.isShort) if (u.s.isShort)
...@@ -543,7 +543,7 @@ public: ...@@ -543,7 +543,7 @@ public:
} }
if (str) if (str)
{ {
int len = strlen(str); int len = (int)strlen(str);
u.s.isShort = len<SHORT_STR_CAPACITY; u.s.isShort = len<SHORT_STR_CAPACITY;
if (len<SHORT_STR_CAPACITY) if (len<SHORT_STR_CAPACITY)
{ {
......
...@@ -21,20 +21,11 @@ ...@@ -21,20 +21,11 @@
#include "util.h" #include "util.h"
#include "language.h" #include "language.h"
#include "ftextstream.h" #include "ftextstream.h"
#include "resourcemgr.h"
#include <qdir.h> #include <qdir.h>
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
static const char *doxygen_bst =
#include "doxygen.bst.h"
;
static const char *bib2xhtml_pl =
#include "bib2xhtml.pl.h"
;
//--------------------------------------------------------------------------
const QCString CiteConsts::fileName("citelist"); const QCString CiteConsts::fileName("citelist");
const QCString CiteConsts::anchorPrefix("CITEREF_"); const QCString CiteConsts::anchorPrefix("CITEREF_");
const QCString bibTmpFile("bibTmpFile_"); const QCString bibTmpFile("bibTmpFile_");
...@@ -154,25 +145,11 @@ void CiteDict::generatePage() const ...@@ -154,25 +145,11 @@ void CiteDict::generatePage() const
// 2. generate bib2xhtml // 2. generate bib2xhtml
QCString bib2xhtmlFile = outputDir+"/bib2xhtml.pl"; QCString bib2xhtmlFile = outputDir+"/bib2xhtml.pl";
f.setName(bib2xhtmlFile); ResourceMgr::instance().copyResource("bib2xhtml.pl",outputDir);
QCString bib2xhtml = bib2xhtml_pl;
if (!f.open(IO_WriteOnly))
{
err("could not open file %s for writing\n",bib2xhtmlFile.data());
}
f.writeBlock(bib2xhtml, bib2xhtml.length());
f.close();
// 3. generate doxygen.bst // 3. generate doxygen.bst
QCString doxygenBstFile = outputDir+"/doxygen.bst"; QCString doxygenBstFile = outputDir+"/doxygen.bst";
QCString bstData = doxygen_bst; ResourceMgr::instance().copyResource("doxygen.bst",outputDir);
f.setName(doxygenBstFile);
if (!f.open(IO_WriteOnly))
{
err("could not open file %s for writing\n",doxygenBstFile.data());
}
f.writeBlock(bstData, bstData.length());
f.close();
// 4. for all formats we just copy the bib files to as special output directory // 4. for all formats we just copy the bib files to as special output directory
// so bibtex can find them without path (bibtex doesn't support paths or // so bibtex can find them without path (bibtex doesn't support paths or
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
* *
*/ */
#include <assert.h>
#include <qdir.h> #include <qdir.h>
#include "context.h" #include "context.h"
...@@ -1108,6 +1109,7 @@ class DefinitionContext : public PropertyMapper ...@@ -1108,6 +1109,7 @@ class DefinitionContext : public PropertyMapper
public: public:
DefinitionContext(Definition *d) : m_def(d) DefinitionContext(Definition *d) : m_def(d)
{ {
assert(d!=0);
//%% string name: the name of the symbol //%% string name: the name of the symbol
addProperty("name",this,&DefinitionContext::name); addProperty("name",this,&DefinitionContext::name);
//%% string bareName: the bare name of the symbol with scope info //%% string bareName: the bare name of the symbol with scope info
...@@ -8147,7 +8149,6 @@ void generateOutputViaTemplate() ...@@ -8147,7 +8149,6 @@ void generateOutputViaTemplate()
SharedPtr<ExampleListContext> exampleList (ExampleListContext::alloc()); SharedPtr<ExampleListContext> exampleList (ExampleListContext::alloc());
SharedPtr<ModuleTreeContext> moduleTree (ModuleTreeContext::alloc()); SharedPtr<ModuleTreeContext> moduleTree (ModuleTreeContext::alloc());
SharedPtr<ModuleListContext> moduleList (ModuleListContext::alloc()); SharedPtr<ModuleListContext> moduleList (ModuleListContext::alloc());
SharedPtr<PageContext> mainPage (PageContext::alloc(Doxygen::mainPage,TRUE));
SharedPtr<GlobalsIndexContext> globalsIndex (GlobalsIndexContext::alloc()); SharedPtr<GlobalsIndexContext> globalsIndex (GlobalsIndexContext::alloc());
SharedPtr<ClassMembersIndexContext> classMembersIndex (ClassMembersIndexContext::alloc()); SharedPtr<ClassMembersIndexContext> classMembersIndex (ClassMembersIndexContext::alloc());
SharedPtr<NamespaceMembersIndexContext> namespaceMembersIndex(NamespaceMembersIndexContext::alloc()); SharedPtr<NamespaceMembersIndexContext> namespaceMembersIndex(NamespaceMembersIndexContext::alloc());
...@@ -8187,7 +8188,15 @@ void generateOutputViaTemplate() ...@@ -8187,7 +8188,15 @@ void generateOutputViaTemplate()
//%% DirList dirList //%% DirList dirList
ctx->set("dirList",dirList.get()); ctx->set("dirList",dirList.get());
//%% Page mainPage //%% Page mainPage
if (Doxygen::mainPage)
{
SharedPtr<PageContext> mainPage(PageContext::alloc(Doxygen::mainPage,TRUE));
ctx->set("mainPage",mainPage.get()); ctx->set("mainPage",mainPage.get());
}
else
{
ctx->set("mainPage",FALSE);
}
//%% GlobalsIndex globalsIndex: //%% GlobalsIndex globalsIndex:
ctx->set("globalsIndex",globalsIndex.get()); ctx->set("globalsIndex",globalsIndex.get());
//%% ClassMembersIndex classMembersIndex: //%% ClassMembersIndex classMembersIndex:
......
...@@ -100,6 +100,9 @@ ...@@ -100,6 +100,9 @@
#include "context.h" #include "context.h"
#include "fileparser.h" #include "fileparser.h"
// provided by the generated file resources.cpp
extern void initResources();
#define RECURSE_ENTRYTREE(func,var) \ #define RECURSE_ENTRYTREE(func,var) \
do { if (var->children()) { \ do { if (var->children()) { \
EntryNavListIterator eli(*var->children()); \ EntryNavListIterator eli(*var->children()); \
...@@ -9915,6 +9918,7 @@ static const char *getArg(int argc,char **argv,int &optind) ...@@ -9915,6 +9918,7 @@ static const char *getArg(int argc,char **argv,int &optind)
void initDoxygen() void initDoxygen()
{ {
initResources();
const char *lang = portable_getenv("LC_ALL"); const char *lang = portable_getenv("LC_ALL");
if (lang) portable_setenv("LANG",lang); if (lang) portable_setenv("LANG",lang);
setlocale(LC_ALL,""); setlocale(LC_ALL,"");
...@@ -10884,7 +10888,7 @@ void parseInput() ...@@ -10884,7 +10888,7 @@ void parseInput()
QCString htmlOutput; QCString htmlOutput;
bool &generateHtml = Config_getBool("GENERATE_HTML"); bool &generateHtml = Config_getBool("GENERATE_HTML");
if (generateHtml) if (generateHtml || g_useOutputTemplate /* TODO: temp hack */)
htmlOutput = createOutputDirectory(outputDirectory,"HTML_OUTPUT","/html"); htmlOutput = createOutputDirectory(outputDirectory,"HTML_OUTPUT","/html");
QCString docbookOutput; QCString docbookOutput;
......
...@@ -36,549 +36,10 @@ ...@@ -36,549 +36,10 @@
#include "htmldocvisitor.h" #include "htmldocvisitor.h"
#include "filedef.h" #include "filedef.h"
#include "util.h" #include "util.h"
#include "resourcemgr.h"
#define MAX_INDENT 1024 #define MAX_INDENT 1024
static const char navtree_script[]=
#include "navtree.js.h"
;
static const char resize_script[]=
#include "resize.js.h"
;
static const char navtree_css[]=
#include "navtree.css.h"
;
static unsigned char blank_png[352] =
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
static unsigned char folderopen_png[528] =
{
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,228,195,193,190,187,218,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,195,215,221,225,225,178,176,176,175,176,178,180,255,255,255,255,255,255,
255,255,255,255,255,255,189,206,215,219,226,220,214,212,207,204,200,176,255,255,255,255,255,255,
255,255,255,255,168,154,153,153,152,152,151,149,150,150,149,147,146,145,145,167,255,255,255,255,
255,255,255,255,146,187,187,188,187,187,185,183,183,182,179,178,175,173,174,145,255,255,255,255,
255,255,255,255,146,180,182,182,181,181,179,178,176,174,173,171,169,170,168,144,255,255,255,255,
255,255,255,255,144,173,176,176,177,175,175,174,171,170,168,168,166,166,164,143,255,255,255,255,
255,255,255,255,142,168,170,171,170,170,169,168,166,166,165,163,163,164,162,142,255,255,255,255,
255,255,255,255,141,162,166,164,164,165,163,163,161,161,161,161,161,160,159,141,255,255,255,255,
255,255,255,255,138,157,159,159,158,158,158,157,157,157,157,156,157,157,155,138,255,255,255,255,
255,255,255,255,137,154,153,154,154,153,154,154,154,153,154,154,154,154,154,137,255,255,255,255,
255,255,255,255,137,154,154,154,154,154,154,154,153,154,154,153,153,153,154,137,255,255,255,255,
255,255,255,255,137,125,125,125,125,124,125,124,124,125,124,124,125,124,125,138,255,255,255,255,
255,255,255,255,212,209,204,199,193,190,186,183,180,181,185,188,192,197,202,203,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
};
static unsigned char folderopen_a_png[528] =
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
0, 0, 0, 0,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
static unsigned char folderclosed_png[528] =
{
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,197,155,155,155,155,196,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,155,191,191,191,192,155,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,168,144,180,180,181,180,145,145,146,145,146,146,146,146,145,167,255,255,255,255,
255,255,255,255,147,225,226,226,225,226,225,221,221,219,215,214,212,211,213,145,255,255,255,255,
255,255,255,255,147,212,211,211,210,211,210,205,206,205,201,201,199,196,201,145,255,255,255,255,
255,255,255,255,146,204,203,204,203,203,202,200,200,197,197,196,195,194,196,145,255,255,255,255,
255,255,255,255,146,202,200,201,201,200,199,198,198,195,194,194,193,192,194,145,255,255,255,255,
255,255,255,255,145,200,196,196,196,195,195,193,192,192,190,189,189,189,191,143,255,255,255,255,
255,255,255,255,143,192,191,190,190,189,189,188,186,187,186,185,185,185,187,142,255,255,255,255,
255,255,255,255,142,186,184,183,182,183,182,183,180,181,181,181,181,181,182,141,255,255,255,255,
255,255,255,255,138,177,175,176,176,177,177,176,175,174,175,175,175,174,176,138,255,255,255,255,
255,255,255,255,138,173,169,170,168,170,169,170,170,169,171,171,171,171,174,137,255,255,255,255,
255,255,255,255,138,166,163,163,162,162,162,162,162,162,164,163,163,163,166,137,255,255,255,255,
255,255,255,255,137,124,124,124,125,124,124,124,125,125,124,124,125,124,125,138,255,255,255,255,
255,255,255,255,231,231,228,225,222,220,218,216,214,215,217,219,221,224,227,226,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
};
static unsigned char folderclosed_a_png[528] =
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0,
0, 0, 0, 0,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
static unsigned char doc_png[528] =
{
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,218,214,208,208,204,191,179,190,197,209,231,255,255,255,255,255,255,255,255,
255,255,255,255,255,195,224,226,226,222,214,204,181,203,229,188,225,255,255,255,255,255,255,255,
255,255,255,255,255,198,226,228,227,227,224,215,203,180,252,229,184,224,255,255,255,255,255,255,
255,255,255,255,255,198,229,230,229,229,228,224,214,154,252,252,229,187,235,255,255,255,255,255,
255,255,255,255,255,198,232,233,233,232,231,230,223,176,154,144,165,177,216,255,255,255,255,255,
255,255,255,255,255,198,236,236,216,226,238,219,232,225,209,190,189,166,193,255,255,255,255,255,
255,255,255,255,255,198,239,240,178,177,230,175,169,184,188,219,208,189,187,255,255,255,255,255,
255,255,255,255,255,198,241,242,240,218,237,236,240,235,241,244,221,208,182,255,255,255,255,255,
255,255,255,255,255,198,243,243,188,154,183,158,166,140,185,198,231,219,177,255,255,255,255,255,
255,255,255,255,255,198,243,245,248,228,241,241,226,249,237,227,239,232,177,255,255,255,255,255,
255,255,255,255,255,198,244,246,213,172,163,149,171,200,167,149,242,239,177,255,255,255,255,255,
255,255,255,255,255,198,249,248,240,218,237,236,240,235,241,244,244,242,177,255,255,255,255,255,
255,255,255,255,255,198,249,251,188,155,184,158,166,140,185,198,246,244,177,255,255,255,255,255,
255,255,255,255,255,198,251,253,248,228,241,241,226,249,237,227,249,246,177,255,255,255,255,255,
255,255,255,255,255,196,253,252,252,252,252,251,251,250,250,249,249,248,175,255,255,255,255,255,
255,255,255,255,255,194, 64, 30, 37, 37, 37, 37, 37, 37, 37, 37, 30, 64,188,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
};
static unsigned char doc_a_png[528] =
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
#if 0
static unsigned char module_png[528] =
{
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,128,128,128,128,128,128,128,128,128,128,128,128,255,255,255,255,255,255,255,255,255,255,
255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,255,255,255,193,128,136,255,255,255,217,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,255,255,255,213,128,170,255,255,255,217,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,255,255,247,247,128,196,255,247,255,217,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,255,255,213,255,153,230,255,213,255,217,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,255,255,187,255,187,255,230,204,255,217,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,255,255,153,255,247,255,196,204,255,217,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,255,255,128,247,255,255,170,204,255,217,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,255,255,128,213,255,255,136,204,255,217,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,255,255,128,187,255,230,138,204,255,217,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,255,255,255,255,255,255,255,255,255,
255,255,128,128,128,128,128,128,128,128,128,128,128,128,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
};
static unsigned char namespace_png[528] =
{
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,128,128,128,128,128,128,128,128,128,128,128,128,255,255,255,255,255,255,255,255,255,255,
255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,157,255,255,226,128,128,198,255,255,157,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,157,255,255,255,189,128,198,255,255,157,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,157,255,255,255,244,141,198,255,255,157,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,157,255,255,255,255,220,198,255,255,157,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,157,255,255,226,255,255,220,255,255,157,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,157,255,255,198,220,255,255,255,255,157,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,157,255,255,198,141,250,255,255,255,157,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,157,255,255,198,128,198,255,255,255,157,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,157,255,255,198,128,128,226,255,255,157,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,255,255,255,255,255,255,255,255,255,
255,255,128,128,128,128,128,128,128,128,128,128,128,128,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
};
static unsigned char class_png[528] =
{
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,128,128,128,128,128,128,128,128,128,128,128,128,255,255,255,255,255,255,255,255,255,255,
255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,128,128,187,247,255,255,230,170,128,128,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,128,196,255,255,255,255,255,255,170,128,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,145,255,255,230,128,136,230,247,179,128,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,179,255,255,170,128,128,128,128,128,128,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,179,255,255,162,128,128,128,128,128,128,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,179,255,255,170,128,128,128,128,128,128,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,145,255,255,221,128,128,221,255,179,128,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,128,196,255,255,255,255,255,255,187,128,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,128,128,187,247,255,255,240,179,128,128,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,255,255,255,255,255,255,255,255,255,
255,128,128,128,128,128,128,128,128,128,128,128,128,128,128,255,255,255,255,255,255,255,255,255,
255,255,128,128,128,128,128,128,128,128,128,128,128,128,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
};
static unsigned char letter_a_png[528] =
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 60,156,204,204,204,204,204,204,204,204,156, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 78,255,255,255,255,255,255,255,255,255,255,255,252, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,210,255,255,255,255,255,255,255,255,255,255,255,255,207, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,240,255,255,255,255,255,255,255,255,255,255,255,255,240, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,240,255,255,255,255,255,255,255,255,255,255,255,255,240, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,240,255,255,255,255,255,255,255,255,255,255,255,255,240, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,240,255,255,255,255,255,255,255,255,255,255,255,255,240, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,240,255,255,255,255,255,255,255,255,255,255,255,255,240, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,240,255,255,255,255,255,255,255,255,255,255,255,255,240, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,240,255,255,255,255,255,255,255,255,255,255,255,255,240, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,240,255,255,255,255,255,255,255,255,255,255,255,255,240, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,240,255,255,255,255,255,255,255,255,255,255,255,255,240, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,222,255,255,255,255,255,255,255,255,255,255,255,255,219, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,111,255,255,255,255,255,255,255,255,255,255,255,255, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 99,198,204,204,204,204,204,204,204,204,195, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
#endif
static unsigned char arrow_right_png[352] =
{
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,152,152,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,152,152,152,152,255,255,255,255,255,255,255,255,255,
255,255,255,152,152,152,152,152,255,255,255,255,255,255,255,255,
255,255,255,152,152,152,152,152,152,152,255,255,255,255,255,255,
255,255,255,152,152,152,152,152,152,152,152,255,255,255,255,255,
255,255,255,152,152,152,152,152,152,152,255,255,255,255,255,255,
255,255,255,152,152,152,152,152,255,255,255,255,255,255,255,255,
255,255,255,152,152,152,152,255,255,255,255,255,255,255,255,255,
255,255,255,152,152,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
};
static unsigned char arrow_right_a_png[352] =
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,223, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,255,255,176, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,255,255,255,248,117, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,255,255,255,255,255,211, 60, 0, 0, 0, 0, 0, 0,
0, 0, 0,255,255,255,255,255,255,255, 77, 0, 0, 0, 0, 0,
0, 0, 0,255,255,255,255,255,211, 60, 0, 0, 0, 0, 0, 0,
0, 0, 0,255,255,255,248,117, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,255,255,176, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,223, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
static unsigned char arrow_down_png[352] =
{
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,152,152,152,152,152,152,152,152,152,255,255,255,255,
255,255,255,152,152,152,152,152,152,152,152,152,255,255,255,255,
255,255,255,255,152,152,152,152,152,152,152,255,255,255,255,255,
255,255,255,255,152,152,152,152,152,152,152,255,255,255,255,255,
255,255,255,255,255,152,152,152,152,152,255,255,255,255,255,255,
255,255,255,255,255,255,152,152,152,255,255,255,255,255,255,255,
255,255,255,255,255,255,152,152,152,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,152,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
};
static unsigned char arrow_down_a_png[352] =
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,231,255,255,255,255,255,255,255,216, 0, 0, 0, 0,
0, 0, 0, 87,255,255,255,255,255,255,255, 65, 0, 0, 0, 0,
0, 0, 0, 0,186,255,255,255,255,255,164, 0, 0, 0, 0, 0,
0, 0, 0, 0, 38,251,255,255,255,241, 25, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0,127,255,255,255,107, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,221,255,204, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 72,253, 52, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
#define SPLITBAR_LINE 170,242,224,202,183,170
#define SPLITBAR_BLOCK2 SPLITBAR_LINE , SPLITBAR_LINE
#define SPLITBAR_BLOCK4 SPLITBAR_BLOCK2 , SPLITBAR_BLOCK2
#define SPLITBAR_BLOCK8 SPLITBAR_BLOCK4 , SPLITBAR_BLOCK4
#define SPLITBAR_BLOCK16 SPLITBAR_BLOCK8 , SPLITBAR_BLOCK8
#define SPLITBAR_BLOCK32 SPLITBAR_BLOCK16 , SPLITBAR_BLOCK16
#define SPLITBAR_ALTLINE1 170,242,170,202,170,170
#define SPLITBAR_ALTLINE2 170,243,224,255,183,255
#define SPLITBAR_ALTBLOCK2 SPLITBAR_ALTLINE1 , SPLITBAR_ALTLINE2
#define SPLITBAR_ALTBLOCK4 SPLITBAR_ALTBLOCK2 , SPLITBAR_ALTBLOCK2
#define SPLITBAR_ALTBLOCK8 SPLITBAR_ALTBLOCK4 , SPLITBAR_ALTBLOCK4
static unsigned char splitbar_png[32*32*6] =
{
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK8,
SPLITBAR_BLOCK8,
SPLITBAR_ALTBLOCK8,
SPLITBAR_BLOCK8,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32,
SPLITBAR_BLOCK32
};
struct FTVImageInfo
{
const char *alt;
const char *name;
const unsigned char *data;
//unsigned int len;
unsigned short width, height;
};
//extern FTVImageInfo image_info[];
#if 0
#define FTVIMG_blank 0
#define FTVIMG_doc 1
#define FTVIMG_folderclosed 2
#define FTVIMG_folderopen 3
#define FTVIMG_lastnode 4
#define FTVIMG_link 5
#define FTVIMG_mlastnode 6
#define FTVIMG_mnode 7
#define FTVIMG_node 8
#define FTVIMG_plastnode 9
#define FTVIMG_pnode 10
#define FTVIMG_vertline 11
#define FTVIMG_ns 12
#define FTVIMG_cl 13
#define FTVIMG_mo 14
#define FTV_S(name) #name
#define FTV_ICON_FILE(name) "ftv2" FTV_S(name) ".png"
#define FTVIMG_INDEX(name) FTVIMG_ ## name
#define FTV_INFO(name) ( image_info[FTVIMG_INDEX(name)] )
#define FTV_IMGATTRIBS(name) \
"src=\"" FTV_ICON_FILE(name) "\" " \
"alt=\"" << FTV_INFO(name).alt << "\" " \
"width=\"" << FTV_INFO(name).width << "\" " \
"height=\"" << FTV_INFO(name).height << "\" "
static FTVImageInfo image_info[] =
{
{ "&#160;", "ftv2blank.png", 0 /*ftv2blank_png*/ /*,174*/,16,22 },
{ "*", "ftv2doc.png", 0 /*ftv2doc_png*/ /*,255*/,24,22 },
{ "+", "ftv2folderclosed.png", 0 /*ftv2folderclosed_png*/ /*,259*/,24,22 },
{ "-", "ftv2folderopen.png", 0 /*ftv2folderopen_png*/ /*,261*/,24,22 },
{ "\\", "ftv2lastnode.png", 0 /*ftv2lastnode_png*/ /*,233*/,16,22 },
{ "-", "ftv2link.png", 0 /*ftv2link_png*/ /*,358*/,24,22 },
{ "\\", "ftv2mlastnode.png", 0 /*ftv2mlastnode_png*/ /*,160*/,16,22 },
{ "o", "ftv2mnode.png", 0 /*ftv2mnode_png*/ /*,194*/,16,22 },
{ "o", "ftv2node.png", 0 /*ftv2node_png*/ /*,235*/,16,22 },
{ "\\", "ftv2plastnode.png", 0 /*ftv2plastnode_png*/ /*,165*/,16,22 },
{ "o", "ftv2pnode.png", 0 /*ftv2pnode_png*/ /*,200*/,16,22 },
{ "|", "ftv2vertline.png", 0 /*ftv2vertline_png*/ /*,229*/,16,22 },
{ "N", "ftv2ns.png", 0 /*ftv2vertline_png*/ /*,352*/,24,22 },
{ "C", "ftv2cl.png", 0 /*ftv2vertline_png*/ /*,352*/,24,22 },
{ "M", "ftv2mo.png", 0 /*ftv2vertline_png*/ /*,352*/,24,22 },
{ 0, 0, 0 /*, 0*/, 0, 0 }
};
#endif
static ColoredImgDataItem ftv_image_data[] =
{
{ "ftv2blank.png", 16, 22, blank_png, blank_png },
{ "ftv2doc.png", 24, 22, doc_png, doc_a_png },
{ "ftv2folderclosed.png", 24, 22, folderclosed_png, folderclosed_a_png },
{ "ftv2folderopen.png", 24, 22, folderopen_png, folderopen_a_png },
// { "ftv2ns.png", 24, 22, namespace_png, letter_a_png },
// { "ftv2mo.png", 24, 22, module_png, letter_a_png },
// { "ftv2cl.png", 24, 22, class_png, letter_a_png },
{ "ftv2lastnode.png", 16, 22, blank_png, blank_png },
{ "ftv2link.png", 24, 22, doc_png, doc_a_png },
{ "ftv2mlastnode.png", 16, 22, arrow_down_png, arrow_down_a_png },
{ "ftv2mnode.png", 16, 22, arrow_down_png, arrow_down_a_png },
{ "ftv2node.png", 16, 22, blank_png, blank_png },
{ "ftv2plastnode.png", 16, 22, arrow_right_png, arrow_right_a_png },
{ "ftv2pnode.png", 16, 22, arrow_right_png, arrow_right_a_png },
{ "ftv2vertline.png", 16, 22, blank_png, blank_png },
{ "ftv2splitbar.png", 6,1024, splitbar_png, 0 },
{ 0, 0, 0, 0, 0 }
};
static int folderId=1; static int folderId=1;
struct FTVNode struct FTVNode
...@@ -1118,7 +579,7 @@ static bool generateJSTree(NavIndexEntryList &navIndex,FTextStream &t, ...@@ -1118,7 +579,7 @@ static bool generateJSTree(NavIndexEntryList &navIndex,FTextStream &t,
static void generateJSNavTree(const QList<FTVNode> &nodeList) static void generateJSNavTree(const QList<FTVNode> &nodeList)
{ {
QCString htmlOutput = Config_getString("HTML_OUTPUT"); QCString htmlOutput = Config_getString("HTML_OUTPUT");
QFile f(htmlOutput+"/navtree.js"); QFile f(htmlOutput+"/navtreedata.js");
NavIndexEntryList navIndex; NavIndexEntryList navIndex;
if (f.open(IO_WriteOnly) /*&& fidx.open(IO_WriteOnly)*/) if (f.open(IO_WriteOnly) /*&& fidx.open(IO_WriteOnly)*/)
{ {
...@@ -1218,8 +679,8 @@ static void generateJSNavTree(const QList<FTVNode> &nodeList) ...@@ -1218,8 +679,8 @@ static void generateJSNavTree(const QList<FTVNode> &nodeList)
} }
t << endl << "var SYNCONMSG = '" << theTranslator->trPanelSynchronisationTooltip(FALSE) << "';"; t << endl << "var SYNCONMSG = '" << theTranslator->trPanelSynchronisationTooltip(FALSE) << "';";
t << endl << "var SYNCOFFMSG = '" << theTranslator->trPanelSynchronisationTooltip(TRUE) << "';"; t << endl << "var SYNCOFFMSG = '" << theTranslator->trPanelSynchronisationTooltip(TRUE) << "';";
t << endl << navtree_script;
} }
ResourceMgr::instance().copyResource("navtree.js",htmlOutput);
} }
//----------------------------------------------------------- //-----------------------------------------------------------
...@@ -1228,7 +689,13 @@ static void generateJSNavTree(const QList<FTVNode> &nodeList) ...@@ -1228,7 +689,13 @@ static void generateJSNavTree(const QList<FTVNode> &nodeList)
void FTVHelp::generateTreeViewImages() void FTVHelp::generateTreeViewImages()
{ {
QCString dname=Config_getString("HTML_OUTPUT"); QCString dname=Config_getString("HTML_OUTPUT");
writeColoredImgData(dname,ftv_image_data); const ResourceMgr &rm = ResourceMgr::instance();
rm.copyResource("doc.luma",dname);
rm.copyResource("folderopen.luma",dname);
rm.copyResource("folderclosed.luma",dname);
rm.copyResource("arrowdown.luma",dname);
rm.copyResource("arrowright.luma",dname);
rm.copyResource("splitbar.lum",dname);
} }
// new style scripts // new style scripts
...@@ -1239,28 +706,9 @@ void FTVHelp::generateTreeViewScripts() ...@@ -1239,28 +706,9 @@ void FTVHelp::generateTreeViewScripts()
// generate navtree.js & navtreeindex.js // generate navtree.js & navtreeindex.js
generateJSNavTree(m_indentNodes[0]); generateJSNavTree(m_indentNodes[0]);
// generate resize.js // copy resize.js & navtree.css
{ ResourceMgr::instance().copyResource("resize.js",htmlOutput);
QFile f(htmlOutput+"/resize.js"); ResourceMgr::instance().copyResource("navtree.css",htmlOutput);
if (f.open(IO_WriteOnly))
{
FTextStream t(&f);
t << resize_script;
}
}
// generate navtree.css
{
QFile f(htmlOutput+"/navtree.css");
if (f.open(IO_WriteOnly))
{
FTextStream t(&f);
t << substitute(
replaceColorMarkers(navtree_css),
"$width",
QCString().setNum(Config_getInt("TREEVIEW_WIDTH"))+"px"
);
}
}
} }
// write tree inside page // write tree inside page
......
...@@ -41,826 +41,16 @@ ...@@ -41,826 +41,16 @@
#include "image.h" #include "image.h"
#include "ftvhelp.h" #include "ftvhelp.h"
#include "bufstr.h" #include "bufstr.h"
#include "resourcemgr.h"
//#define DBG_HTML(x) x; //#define DBG_HTML(x) x;
#define DBG_HTML(x) #define DBG_HTML(x)
static const char defaultHtmlHeader[] =
#include "header.html.h"
;
static const char defaultHtmlFooter[] =
#include "footer.html.h"
;
static const char defaultStyleSheet[] =
#include "doxygen.css.h"
;
static const char search_functions_script[]=
#include "search_functions.php.h"
;
static const char search_opensearch_script[]=
#include "search_opensearch.php.h"
;
static const char search_styleSheet[] =
#include "search.css.h"
;
static const char search_jquery_script1[]=
#include "jquery_p1.js.h"
;
static const char search_jquery_script2[]=
#include "jquery_p2.js.h"
;
static const char search_jquery_script3[]=
#include "jquery_p3.js.h"
;
static const char search_jquery_script4[]=
#include "jquery_ui.js.h"
;
static const char search_jquery_script5[]=
#include "jquery_fx.js.h"
;
static const char search_jquery_script6[]=
#include "jquery_pt.js.h"
;
static const char svgpan_script[]=
#include "svgpan.js.h"
;
static const char dynsections_script[]=
#include "dynsections.js.h"
;
static const char extsearch_script[]=
#include "extsearch.js.h"
;
static QCString g_header; static QCString g_header;
static QCString g_footer; static QCString g_footer;
static QCString g_mathjax_code; static QCString g_mathjax_code;
//------------------------- Pictures for the Tabs ------------------------
// active tab background luma
static unsigned char tab_a_png[36] =
{
31, 42, 59, 69, 73, 74, 75, 77, 77,
77, 79, 80, 80, 82, 81, 83, 84, 86,
87, 88, 89, 90, 91, 91, 93, 94, 94,
96, 96, 97, 98, 98, 99, 99, 99, 100
};
// normal tab background luma
static unsigned char tab_b_png[36] =
{
218, 228, 235, 233, 230, 227, 225, 222, 221,
218, 217, 215, 214, 213, 212, 211, 210, 209,
209, 197, 198, 199, 200, 201, 202, 203, 204,
205, 207, 209, 211, 213, 217, 219, 206, 188
};
// hovering tab background luma
static unsigned char tab_h_png[36] =
{
181, 191, 198, 196, 193, 190, 188, 185, 184,
181, 180, 178, 177, 176, 175, 174, 173, 172,
172, 154, 155, 156, 157, 158, 159, 160, 161,
162, 164, 166, 168, 170, 174, 176, 163, 145
};
// shadowed header
static unsigned char header_png[12] =
{
255, 240, 241, 242, 243, 244,
245, 246, 247, 248, 249, 250
};
// function header
static unsigned char func_header_png[56] =
{
248, 247, 246, 245, 244, 243, 242, 241,
240, 239, 238, 237, 236, 235, 234, 233,
232, 231, 230, 229, 228, 223, 223, 223,
223, 223, 223, 223, 223, 223, 223, 223,
224, 224, 224, 224, 225, 225, 225, 225,
225, 226, 226, 226, 227, 227, 227, 227,
228, 228, 228, 229, 229, 229, 229, 229
};
// tab separator
static unsigned char tab_s_png[36] =
{
187, 186, 185, 183, 182, 181, 180, 178, 176,
174, 173, 171, 169, 167, 164, 163, 161, 158,
156, 154, 152, 150, 148, 145, 143, 141, 140,
138, 136, 134, 131, 131, 128, 126, 125, 124
};
// breadcrumbs luma
static unsigned char bc_s_png[240] =
{
150,187,187,148,148,148,148,148,
147,175,186,147,147,147,147,147,
146,153,185,185,146,146,146,146,
144,144,177,183,144,144,144,144,
144,144,159,182,144,144,144,144,
143,143,144,179,181,143,143,143,
142,142,142,165,180,142,142,142,
141,141,141,144,178,178,141,141,
139,139,139,139,167,176,139,139,
137,137,137,137,146,174,137,137,
137,137,137,137,137,169,173,137,
135,135,135,135,135,150,171,135,
133,133,133,133,133,135,167,169,
132,132,132,132,132,132,154,167,
129,129,129,129,129,129,140,164,
129,129,129,129,129,129,154,163,
127,127,127,127,127,128,161,161,
125,125,125,125,125,141,158,125,
123,123,123,123,123,152,156,123,
121,121,121,121,129,154,121,121,
120,120,120,120,143,152,120,120,
118,118,118,120,150,150,118,118,
117,117,117,132,148,117,117,117,
114,114,114,142,145,114,114,114,
113,113,120,143,113,113,113,113,
111,111,133,141,111,111,111,111,
110,112,140,140,110,110,110,110,
109,124,138,109,109,109,109,109,
107,133,136,107,107,107,107,107,
111,134,106,106,106,106,106,106
};
// breadcrumbs alpha map
static unsigned char bc_s_a_png[240] =
{
241,241, 21, 0, 0, 0, 0, 0,
162,205,117, 0, 0, 0, 0, 0,
54,231,225, 3, 0, 0, 0, 0,
0,198,215, 78, 0, 0, 0, 0,
0, 93,211,186, 0, 0, 0, 0,
0, 6,232,235, 42, 0, 0, 0,
0, 0,132,203,147, 0, 0, 0,
0, 0, 27,242,241, 15, 0, 0,
0, 0, 0,168,205,108, 0, 0,
0, 0, 0, 63,228,219, 0, 0,
0, 0, 0, 0,207,221, 72, 0,
0, 0, 0, 0,102,208,177, 0,
0, 0, 0, 0, 9,238,240, 36,
0, 0, 0, 0, 0,138,201,138,
0, 0, 0, 0, 0, 77,187,158,
0, 0, 0, 0, 0,159,204,120,
0, 0, 0, 0, 15,241,241, 21,
0, 0, 0, 0,111,208,171, 0,
0, 0, 0, 0,210,222, 66, 0,
0, 0, 0, 60,227,219, 0, 0,
0, 0, 0,162,204,114, 0, 0,
0, 0, 18,238,238, 21, 0, 0,
0, 0,114,205,165, 0, 0, 0,
0, 0,216,225, 60, 0, 0, 0,
0, 66,226,216, 0, 0, 0, 0,
0,165,204,111, 0, 0, 0, 0,
21,241,241, 18, 0, 0, 0, 0,
117,203,159, 0, 0, 0, 0, 0,
219,227, 57, 0, 0, 0, 0, 0,
211,201, 0, 0, 0, 0, 0, 0
};
// doxygen logo luma
static unsigned char doxygen_png[3224] =
{
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,255,255,255,255,255,255,255,255,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 91, 91, 91, 91, 32, 32,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32,255,255,255,255, 32, 32,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32,253,253,253,253, 32, 32,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,253,255,255,255,255,255,255,255,255,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32,251,251,251,251, 32, 32,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,255,255,255,255,255,255,255,255,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32,249,249,249,249, 32, 32,249,249,249,249, 32, 32, 32, 32, 32, 32,249,249,249,249, 32, 32, 32, 32, 32, 32,249,249,249,249, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,249,249,249, 32, 32, 32, 32, 32,249,249,249,249, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,249,249,249,249,249,249, 32, 32, 32, 32, 32, 32, 32,249,249,249,249,249, 32, 32, 32, 32, 32,249, 32, 32, 32, 32, 32,255,255,255,
32, 32, 32, 32, 46,132,190,190,147, 61,247,247,247,247, 32, 32,247,247, 32, 32,118,161,190,190,161,118, 32, 32,247, 32, 46, 89, 89, 89, 89, 46, 32,247,247, 32, 89, 89, 89, 89, 61, 89, 89, 89, 89, 46, 32,247, 32, 46, 89, 89, 89, 89, 32,247, 32, 32,118,175,190,161, 89, 61, 89, 89, 89, 61, 32,247,247,247, 32, 32,104,147,190,190,190,132, 89, 32, 32,247,247, 32, 46, 89, 89, 89, 75, 32, 89,161,190,161, 75, 32,255,255,
32, 32, 32, 74,230,244,244,244,244,244,244,244,244,244, 32, 32,244, 32, 74,216,244,244,244,244,244,244,216, 74, 32,244, 32,187,244,244,244,159, 32,244, 32,117,244,244,244,230, 46,173,244,244,244,131, 32,244, 32,131,244,244,244,173, 32, 32, 46,173,244,244,244,244,244,230,244,244,244,131, 32,244,244, 32, 74,202,244,244,244,244,244,244,244,173, 46, 32,244, 32, 89,244,244,244,187,145,244,244,244,244,244, 89, 32,255,
32, 32, 46,213,241,241,241,241,241,241,241,241,241,241, 32, 32, 32, 60,227,241,241,241,241,241,241,241,241,227, 60, 32, 32, 46,227,241,241,241,102, 32, 60,227,241,241,241, 88, 32,116,241,241,241,199, 32,241, 32,185,241,241,241,116, 32, 32,143,241,241,241,241,241,241,241,241,241,241,130, 32,241, 32, 74,227,241,241,241,199,185,241,241,241,241,171, 32,241, 32, 88,241,241,241,241,241,241,241,241,241,241,199, 32,255,
32, 32,128,237,237,237,223,128, 87,128,237,237,237,237, 32, 32, 32,182,237,237,237,196,100,100,196,237,237,237,182, 32,237, 32,100,237,237,237,223, 59,196,237,237,237,141, 32, 32, 46,237,237,237,237, 59, 32, 46,237,237,237,237, 46, 32, 59,237,237,237,237,169, 87, 87,182,237,237,237,128, 32,237, 32,196,237,237,237, 87, 32, 32, 73,223,237,237,237, 73, 32, 32, 87,237,237,237,237,223,182,223,237,237,237,237, 46, 32,
32, 32,207,234,234,234,113, 32, 32, 32,234,234,234,234, 32, 32, 59,234,234,234,221, 45, 32, 32, 45,221,234,234,234, 59, 32,234, 32,140,234,234,234,221,234,234,234,194, 32, 32,234, 32,167,234,234,234,126, 32, 99,234,234,234,167, 32, 32,126,234,234,234,180, 32, 32, 32,126,234,234,234,126, 32, 32, 99,234,234,234,167, 32, 32, 32, 32,153,234,234,234,126, 32, 32, 86,234,234,234,207, 45, 32, 45,234,234,234,234, 86, 32,
32, 45,231,231,231,218, 32, 32, 32, 32,231,231,231,231, 32, 32, 98,231,231,231,165, 32,231,231, 32,165,231,231,231, 98, 32,231, 32, 45,191,231,231,231,231,231,218, 72, 32,231,231, 32, 98,231,231,231,165, 32,151,231,231,231,112, 32, 32,165,231,231,231,112, 32,231, 32,125,231,231,231,125, 32, 32,138,231,231,231,178,125,125,125,125,178,231,231,231,178, 32, 32, 85,231,231,231,178, 32,255, 32,191,231,231,231, 85, 32,
32, 84,227,227,227,175, 32, 32, 32, 32,227,227,227,227, 32, 32,123,227,227,227,123, 32,227,227, 32,123,227,227,227,123, 32,227,227, 32, 71,227,227,227,227,227,123, 32,227,227,227,227, 32,214,227,227,227, 45,201,227,227,227, 45, 32, 32,175,227,227,227, 84, 32,227, 32,123,227,227,227,123, 32, 32,175,227,227,227,227,227,227,227,227,227,227,227,227,175, 32, 32, 84,227,227,227,175, 32,255, 32,175,227,227,227, 84, 32,
32, 83,223,223,223,172, 32, 32, 32, 32,223,223,223,223, 32, 32,121,223,223,223,121, 32,223,223, 32,121,223,223,223,121, 32,223,223,223, 32,172,223,223,223,210, 45, 32,223,223,223,223, 32,147,223,223,223,134,223,223,223,147, 32,223, 32,172,223,223,223, 83, 32,223, 32,121,223,223,223,121, 32, 32,172,223,223,223,223,223,223,223,223,223,223,223,223,172, 32, 32, 83,223,223,223,172, 32,255, 32,172,223,223,223, 83, 32,
32, 82,220,220,220,170, 32, 32, 32, 32,220,220,220,220, 32, 32,120,220,220,220,120, 32,220,220, 32,120,220,220,220,120, 32,220,220, 32, 95,220,220,220,220,220,132, 32,220,220,220,220, 32, 95,220,220,220,207,220,220,220, 95, 32,220, 32,170,220,220,220,107, 32,220, 32,120,220,220,220,120, 32, 32,170,220,220,220,132, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 82,220,220,220,170, 32,255, 32,170,220,220,220, 82, 32,
32, 57,216,216,216,216, 32, 32, 32, 32,216,216,216,216, 32, 32, 81,216,216,216,167, 32,216,216, 32,155,216,216,216, 81, 32,216, 32, 57,204,216,216,216,216,216,216, 93, 32,216,216,216,216, 32,204,216,216,216,216,216,204, 32,216,216, 32,118,216,216,216,167, 32, 32, 32,130,216,216,216,118, 32, 32,118,216,216,216,191, 32, 32,216,216,216, 32, 32, 44, 57, 32, 32, 81,216,216,216,167, 32,255, 32,167,216,216,216, 81, 32,
32, 32,189,213,213,213,116, 32, 32, 80,213,213,213,213, 32, 32, 44,201,213,213,213, 68, 32, 32, 68,213,213,213,213, 44, 32, 32, 32,165,213,213,213,165,213,213,213,201, 44, 32,213,213,213, 32,129,213,213,213,213,213,141, 32,213,213, 32, 80,213,213,213,213,165,116,153,213,213,213,213,116, 32, 32, 56,213,213,213,213,153, 56, 32, 32, 32, 44,104,189,116, 32, 32, 80,213,213,213,165, 32,255, 32,165,213,213,213, 80, 32,
32, 32,139,210,210,210,210,174,174,210,210,210,210,210, 32, 32, 32,127,210,210,210,198,127,127,198,210,210,210,127, 32,210, 32,115,210,210,210,174, 44,139,210,210,210,163, 32, 32,210,210, 32, 68,210,210,210,210,210, 91, 32,210,210,210, 32,174,210,210,210,210,210,210,210,210,210,210,115, 32,210, 32,127,210,210,210,210,210,174,163,163,210,210,210,115, 32, 32, 79,210,210,210,163, 32,255, 32,163,210,210,210, 79, 32,
32, 32, 55,194,206,206,206,206,206,194,206,206,206,206, 32, 32, 32, 44,171,206,206,206,206,206,206,206,206,171, 44, 32, 32, 67,206,206,206,206, 67, 32, 44,183,206,206,206,113, 32,206,206,206, 32,183,206,206,206,194, 32,206,206,206,206, 32, 67,194,206,206,206,206,206,171,206,206,206,113, 32,206, 32, 32,136,206,206,206,206,206,206,206,206,206,206,113, 32, 32, 78,206,206,206,160, 32,255, 32,160,206,206,206, 78, 32,
32, 32, 32,100,192,203,203,203,157, 55,203,203,203,203, 32, 32,203, 32, 43,135,203,203,203,203,203,203,135, 43, 32, 32, 43,180,203,203,203,112, 32,203, 32, 66,203,203,203,203, 66, 32,203,203, 32,157,203,203,203,135, 32,203,203,203,203,203, 32, 43,112,157,157,123, 55,112,203,203,203,112, 32,203,203, 32, 32, 78,146,203,203,203,203,203,203,169,123, 55, 32, 32, 78,203,203,203,157, 32,255, 32,157,203,203,203, 78, 32,
32, 32, 32, 32, 54,110,110, 88, 32, 32, 32, 32, 32, 32, 32, 32,200,200, 32, 32, 54, 99,110,110, 99, 54, 32, 32,200,200, 32, 32, 32, 32, 32, 32, 32,200,200, 32, 32, 32, 32, 32, 32,200,200, 32, 54,200,200,200,200, 77, 32,200,200,200,200,200, 32, 32, 32, 32, 32, 32, 32,166,200,200,200, 88, 32,200,200,200,200, 32, 32, 32, 66, 77, 77, 77, 32, 32, 32, 32,200,200, 32, 32, 32, 32, 32, 32,255, 32, 32, 32, 32, 32, 32,255,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,198,198,198,198, 32, 32, 32, 32, 32, 32,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198, 32,109,198,198,198,176, 32,198,198,198,198,198, 32, 98,121, 76, 32, 32, 54,109,198,198,198,198, 43, 32,198,198,198,198,198,198,198, 32, 32, 32, 32,198,198,198,198,198,198,198,198,198,198,198,198,255,255,255,255,255,255,255,255,
32, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 33,159,191,191,191,117, 36, 41, 41, 41, 41, 41, 34,108,191,191,191,191,191,191,191,191,191,117, 36, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,255,
32, 41, 97,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 78, 38, 64,190,192,192,192, 66, 66, 41, 41, 85,128, 65, 34,107,190,192,192,192,192,192,192,192,139, 48, 39, 41, 41,105,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 97, 41,255,
32, 41, 97,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 96, 36, 95,147,148,148,139, 55, 41, 41, 85,121,128, 91, 38, 75,137,158,190,190,190,170,139, 97, 49, 37, 41, 41,105,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 97, 41,255,
32, 41, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 41, 36, 45, 45, 45, 48, 38, 41, 41, 76, 76, 76, 76, 76, 37, 34, 42, 33, 33, 33, 39, 48, 59, 41, 41, 41, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 41,255,
32, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
};
// doxygen logo alpha map
static unsigned char doxygen_a_png[3224] =
{
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 66, 66, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,145,247,247,247,247,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,247,247,247,247,247,247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,247,247,247,247,247,247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,247,247,247,247,247,247, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 16,115,181,181,132,247,247,247,247,247,247, 0, 0, 0, 0, 0, 99,148,181,181,148, 99, 0, 0, 0, 0, 16, 66, 66, 66, 66, 16, 0, 0, 0, 0, 66, 66, 66, 66, 33, 66, 66, 66, 66, 16, 0, 0, 0, 16, 66, 66, 66, 66, 0, 0, 0, 0, 99,165,181,148, 66, 33, 66, 66, 66, 33, 0, 0, 0, 0, 0, 0, 82,132,181,181,181,115, 66, 0, 0, 0, 0, 0, 16, 66, 66, 66, 49, 0, 66,148,181,148, 49, 0, 0, 0,
0, 0, 0,129,247,247,247,247,247,247,247,247,247,247,247, 0, 0, 0,112,214,247,247,247,247,247,247,214,112, 0, 16,247,247,247,247,247,247, 46, 0, 0,145,247,247,247,247,247,247,247,247,247,247, 16, 0, 16,247,247,247,247,247, 66, 0, 63,165,247,247,247,247,247,247,247,247,247,247, 33, 0, 0, 0, 96,198,247,247,247,247,247,247,247,165, 63, 0, 0, 16,247,247,247,247,247,145,247,247,247,247,247,145, 0, 0,
0, 0,112,247,247,247,247,247,247,247,247,247,247,247,247, 0, 0,129,247,247,247,247,247,247,247,247,247,247,129, 0,181,247,247,247,247,247,148, 0,129,247,247,247,247,247,247,247,247,247,247,247,115, 0,115,247,247,247,247,247,165, 30,247,247,247,247,247,247,247,247,247,247,247,247,115, 0, 0,129,247,247,247,247,247,247,247,247,247,247,247, 63, 0, 66,247,247,247,247,247,247,247,247,247,247,247,247, 96, 0,
0, 16,247,247,247,247,247,247,247,247,247,247,247,247,247, 0, 79,247,247,247,247,247,247,247,247,247,247,247,247, 79, 79,247,247,247,247,247,247,129,247,247,247,247,247,247,129,247,247,247,247,247,198, 0,181,247,247,247,247,247, 99,145,247,247,247,247,247,247,247,247,247,247,247,247,115, 0, 96,247,247,247,247,247,247,247,247,247,247,247,247,165, 0, 66,247,247,247,247,247,247,247,247,247,247,247,247,198, 0,
0,115,247,247,247,247,247,247,247,247,247,247,247,247,247, 0,181,247,247,247,247,247,247,247,247,247,247,247,247,181, 0,129,247,247,247,247,247,247,247,247,247,247,247,145, 16,247,247,247,247,247,247, 33,247,247,247,247,247,247, 33,247,247,247,247,247,247,247,247,247,247,247,247,247,115, 0,198,247,247,247,247,247,198,181,247,247,247,247,247,247, 49, 66,247,247,247,247,247,247,247,247,247,247,247,247,247, 16,
0,214,247,247,247,247,247,129, 66,247,247,247,247,247,247, 33,247,247,247,247,247,247, 96, 96,247,247,247,247,247,247, 33, 0,145,247,247,247,247,247,247,247,247,247,198, 30, 0,165,247,247,247,247,247,115,247,247,247,247,247,165,115,247,247,247,247,247,181, 66,115,247,247,247,247,247,115, 82,247,247,247,247,247,165,115,115,148,247,247,247,247,247,115, 66,247,247,247,247,247,247,181,247,247,247,247,247,247, 66,
16,247,247,247,247,247,231, 0, 0,247,247,247,247,247,247, 82,247,247,247,247,247,165, 0, 0,165,247,247,247,247,247, 82, 0, 30,247,247,247,247,247,247,247,247,247, 96, 0, 0, 82,247,247,247,247,247,165,247,247,247,247,247, 99,165,247,247,247,247,247, 99, 0,115,247,247,247,247,247,115,132,247,247,247,247,247,247,247,247,247,247,247,247,247,247,181, 66,247,247,247,247,247,181, 0,198,247,247,247,247,247, 66,
66,247,247,247,247,247,181, 0, 0,247,247,247,247,247,247,115,247,247,247,247,247,115, 0, 0,115,247,247,247,247,247,115, 0, 0, 96,247,247,247,247,247,247,247,129, 0, 0, 0, 0,231,247,247,247,247,247,247,247,247,247,247, 16,181,247,247,247,247,247, 66, 0,115,247,247,247,247,247,115,181,247,247,247,247,247,247,247,247,247,247,247,247,247,247,181, 66,247,247,247,247,247,181, 0,181,247,247,247,247,247, 66,
66,247,247,247,247,247,181, 0, 0,247,247,247,247,247,247,115,247,247,247,247,247,115, 0, 0,115,247,247,247,247,247,115, 0, 0, 0,181,247,247,247,247,247,247, 30, 0, 0, 0, 0,148,247,247,247,247,247,247,247,247,247,148, 0,181,247,247,247,247,247, 66, 0,115,247,247,247,247,247,115,181,247,247,247,247,247,247,247,247,247,247,247,247,247,247,181, 66,247,247,247,247,247,181, 0,181,247,247,247,247,247, 66,
66,247,247,247,247,247,181, 0, 0,247,247,247,247,247,247,115,247,247,247,247,247,115, 0, 0,115,247,247,247,247,247,115, 0, 0,129,247,247,247,247,247,247,247,145, 0, 0, 0, 0, 82,247,247,247,247,247,247,247,247,247, 82, 0,181,247,247,247,247,247, 99, 0,115,247,247,247,247,247,115,181,247,247,247,247,247,247,247,247,247,247,247,247,247,181, 79, 66,247,247,247,247,247,181, 0,181,247,247,247,247,247, 66,
33,247,247,247,247,247,247, 14, 0,247,247,247,247,247,247, 66,247,247,247,247,247,181, 0, 0,165,247,247,247,247,247, 66, 0, 79,247,247,247,247,247,247,247,247,247,129, 0, 0, 0, 0,231,247,247,247,247,247,247,247,231, 0, 0,115,247,247,247,247,247,181,115,165,247,247,247,247,247,115,115,247,247,247,247,247,214, 63, 0, 0, 0, 16,112,247,247, 33, 66,247,247,247,247,247,181, 0,181,247,247,247,247,247, 66,
0,214,247,247,247,247,247,198,198,247,247,247,247,247,247, 16,247,247,247,247,247,247,132,132,247,247,247,247,247,247, 16, 14,181,247,247,247,247,247,247,247,247,247,247, 79, 0, 0, 0,132,247,247,247,247,247,247,247,148, 0, 0, 66,247,247,247,247,247,247,247,247,247,247,247,247,247,115, 33,247,247,247,247,247,247,247,198,181,181,247,247,247,247,115, 66,247,247,247,247,247,181, 0,181,247,247,247,247,247, 66,
0,148,247,247,247,247,247,247,247,247,247,247,247,247,247, 0,132,247,247,247,247,247,247,247,247,247,247,247,247,145, 0,145,247,247,247,247,247,247,247,247,247,247,247,181, 14, 0, 0, 49,247,247,247,247,247,247,247, 82, 0, 0, 0,198,247,247,247,247,247,247,247,247,247,247,247,247,115, 0,145,247,247,247,247,247,247,247,247,247,247,247,247,247,115, 66,247,247,247,247,247,181, 0,181,247,247,247,247,247, 66,
0, 46,247,247,247,247,247,247,247,247,247,247,247,247,247, 0, 30,247,247,247,247,247,247,247,247,247,247,247,247, 30,112,247,247,247,247,247,247, 96,247,247,247,247,247,247,145, 0, 0, 0,214,247,247,247,247,247,231, 0, 0, 0, 0, 96,247,247,247,247,247,247,247,247,247,247,247,247,115, 0, 30,148,247,247,247,247,247,247,247,247,247,247,247,247,115, 66,247,247,247,247,247,181, 0,181,247,247,247,247,247, 66,
0, 0,129,247,247,247,247,247,247,247,247,247,247,247,247, 0, 0, 96,247,247,247,247,247,247,247,247,247,247, 96, 16,247,247,247,247,247,247,145, 0,112,247,247,247,247,247,247, 49, 0, 0,181,247,247,247,247,247,148, 0, 0, 0, 0, 0,129,247,247,247,247,247,247,247,247,247,247,247,115, 0, 0, 46,148,247,247,247,247,247,247,247,247,247,247,247, 33, 66,247,247,247,247,247,181, 0,181,247,247,247,247,247, 66,
0, 0, 0,129,247,247,247,247,181,145,247,247,247,247,145, 0, 0, 0, 46,148,247,247,247,247,247,247,148, 46, 0, 0,112,214,247,247,247,145, 14, 0, 0,145,247,247,247,247,145, 0, 0, 33,247,247,247,247,247,247, 66, 0, 0, 0, 0, 0, 99,132,115,181,181,132,198,247,247,247,247,247, 82, 0, 0, 0, 0, 66,165,247,247,247,247,247,247,198,132, 33, 0, 0,145,247,247,247,181, 79, 0, 79,181,247,247,247,145, 0,
0, 0, 0, 0, 33,115,115, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 99,115,115, 99, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115,247,247,247,247,247,214, 0, 0, 0, 0, 0, 99,247,247,247,247,247,247,247,247,247,247,247,247, 16, 0, 0, 0, 0, 0, 0, 0, 49, 66, 66, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0,165,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,108,224,255,255,255,255,255,255,101,164,255,255,255,143,250,255,255,255,255,255,255,255,255,255,255,255, 98,170,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,165, 0,
0,165,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,136,251,255,255,255,255,255,255,101,130,255,255,255,153,250,255,255,255,255,255,255,255,255,255,255,121, 98,189,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,165, 0,
0,165,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,198,252,255,255,255,255,255,164,164,255,255,255,255,176,249,251,255,255,255,255,255,255,255,255,150, 86,192,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,165, 0,
0,165,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,164,198,255,255,255,255,201,133,164,255,255,255,255,255,145,203,255,255,255,255,255,255,255,117, 79,194,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,165, 0,
0, 66,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102, 73, 73,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102, 47, 70,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102, 66, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
// magnifying glass icon (raw png)
unsigned char mag_sel_png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x13,
0x08, 0x06, 0x00, 0x00, 0x00, 0x90, 0x8c, 0x2d, 0xb5, 0x00, 0x00, 0x00,
0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 0x00, 0x0b,
0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, 0x00, 0x00, 0x00, 0x20, 0x63, 0x48,
0x52, 0x4d, 0x00, 0x00, 0x6d, 0x98, 0x00, 0x00, 0x73, 0x8e, 0x00, 0x00,
0xe0, 0x38, 0x00, 0x00, 0x82, 0xd5, 0x00, 0x00, 0x7a, 0x07, 0x00, 0x00,
0xca, 0xb4, 0x00, 0x00, 0x33, 0x44, 0x00, 0x00, 0x1c, 0x76, 0x84, 0x36,
0x2a, 0xbd, 0x00, 0x00, 0x01, 0xb9, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda,
0xe4, 0x94, 0xbb, 0x8a, 0x22, 0x41, 0x14, 0x86, 0xbf, 0xda, 0x16, 0x3a,
0x10, 0xba, 0x03, 0x2f, 0x78, 0x03, 0x51, 0x11, 0x4c, 0xd4, 0x40, 0xd4,
0x37, 0x30, 0x31, 0x30, 0xe9, 0x07, 0xf0, 0x15, 0x14, 0x7c, 0x1e, 0x31,
0x37, 0x33, 0x11, 0x73, 0xe9, 0x56, 0x44, 0x84, 0x36, 0xe9, 0x40, 0x50,
0x54, 0x14, 0xc4, 0xc0, 0xa8, 0x6d, 0x50, 0x6a, 0x92, 0x1d, 0xd9, 0x9d,
0x99, 0x75, 0x0d, 0x26, 0x58, 0xd8, 0x3f, 0xaa, 0xe2, 0xfc, 0xf5, 0xd5,
0x39, 0x9c, 0x53, 0x25, 0xa4, 0x94, 0x7c, 0xa7, 0x7e, 0xf0, 0xcd, 0xfa,
0xf7, 0x81, 0xbe, 0xf7, 0xc5, 0xf9, 0x7c, 0x96, 0x93, 0xc9, 0x84, 0xe5,
0x72, 0xc9, 0x66, 0xb3, 0x21, 0x99, 0x4c, 0x92, 0xcf, 0xe7, 0xa9, 0x54,
0x2a, 0x04, 0x02, 0x01, 0xf1, 0x2a, 0x50, 0x48, 0x29, 0x39, 0x9d, 0x4e,
0x72, 0x30, 0x18, 0x60, 0x59, 0xd6, 0x27, 0x43, 0xb5, 0x5a, 0xa5, 0xd1,
0x68, 0x10, 0x0c, 0x06, 0xc5, 0xcb, 0x19, 0x4e, 0xa7, 0x53, 0x2c, 0xcb,
0x22, 0x95, 0x4a, 0x51, 0x2a, 0x95, 0xc8, 0x64, 0x32, 0xac, 0x56, 0x2b,
0x66, 0xb3, 0x19, 0x93, 0xc9, 0x84, 0x48, 0x24, 0x42, 0xbd, 0x5e, 0x7f,
0xbd, 0x64, 0xdb, 0xb6, 0x01, 0x28, 0x97, 0xcb, 0x54, 0x2a, 0x15, 0x34,
0x4d, 0x13, 0xa1, 0x50, 0x48, 0x2a, 0x8a, 0xc2, 0x7a, 0xbd, 0xc6, 0xb6,
0x6d, 0xea, 0xf5, 0x3a, 0xa3, 0xd1, 0x48, 0xf6, 0xfb, 0xfd, 0xc7, 0x61,
0xc3, 0x30, 0xa8, 0xd5, 0x6a, 0xe2, 0x53, 0x53, 0xb6, 0xdb, 0x2d, 0x00,
0xc5, 0x62, 0x11, 0x4d, 0xd3, 0x04, 0x80, 0xa6, 0x69, 0xa2, 0x50, 0x28,
0xf0, 0x6b, 0x1c, 0x10, 0x86, 0x61, 0x3c, 0x60, 0x80, 0xf8, 0xb2, 0xcb,
0x89, 0x44, 0x02, 0x00, 0xc7, 0x71, 0x00, 0xde, 0x27, 0x5d, 0xfe, 0xdc,
0x3f, 0xe2, 0x1f, 0xa0, 0xe2, 0x8f, 0x63, 0x93, 0xcb, 0xe5, 0x00, 0x18,
0x8f, 0xc7, 0x98, 0xa6, 0x89, 0xeb, 0xba, 0xd2, 0x34, 0x4d, 0xc6, 0xe3,
0x31, 0x00, 0xe9, 0x74, 0x1a, 0x80, 0x5a, 0xad, 0xf6, 0x80, 0x3e, 0xed,
0xf2, 0x7a, 0xbd, 0x96, 0xc3, 0xe1, 0x90, 0xf9, 0x7c, 0xfe, 0xa5, 0x29,
0x1c, 0x0e, 0xd3, 0xe9, 0x74, 0xd0, 0x75, 0x5d, 0x00, 0x8c, 0x46, 0xa3,
0x8f, 0x17, 0xfc, 0x0e, 0xf4, 0x3c, 0x4f, 0xee, 0x76, 0x3b, 0x16, 0x8b,
0x05, 0x8e, 0xe3, 0xb0, 0xdf, 0xef, 0x89, 0xc7, 0xe3, 0xa4, 0xd3, 0x69,
0x6c, 0xdb, 0xe6, 0x74, 0x3a, 0x11, 0x8d, 0x46, 0x69, 0xb7, 0xdb, 0x0f,
0xe8, 0xd3, 0x0c, 0x01, 0x3c, 0xcf, 0x93, 0xae, 0xeb, 0xe2, 0x79, 0x1e,
0xb7, 0xdb, 0x0d, 0x9f, 0xcf, 0x87, 0xa2, 0x28, 0x5c, 0x2e, 0x17, 0x7a,
0xbd, 0x1e, 0xc7, 0xe3, 0x91, 0x58, 0x2c, 0x46, 0xab, 0xd5, 0x7a, 0x0a,
0x7d, 0xbc, 0x14, 0x55, 0x55, 0x85, 0xaa, 0xaa, 0x9f, 0x0c, 0x7e, 0xbf,
0x5f, 0x36, 0x9b, 0x4d, 0xba, 0xdd, 0x2e, 0xd7, 0xeb, 0x95, 0xeb, 0xf5,
0x8a, 0xae, 0xeb, 0x7f, 0xcf, 0xf0, 0x99, 0x5c, 0xd7, 0x95, 0x87, 0xc3,
0x81, 0xfb, 0xfd, 0x4e, 0x36, 0x9b, 0x7d, 0xad, 0xe4, 0xff, 0xe7, 0xfb,
0x7a, 0x1b, 0x00, 0x59, 0xa8, 0xba, 0x68, 0xca, 0x4f, 0xc5, 0xa7, 0x00,
0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
};
unsigned int mag_sel_png_len = 563;
unsigned char mag_png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x13,
0x08, 0x06, 0x00, 0x00, 0x00, 0x90, 0x8c, 0x2d, 0xb5, 0x00, 0x00, 0x00,
0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 0x00, 0x0b,
0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, 0x00, 0x00, 0x00, 0x20, 0x63, 0x48,
0x52, 0x4d, 0x00, 0x00, 0x6d, 0x98, 0x00, 0x00, 0x73, 0x8e, 0x00, 0x00,
0xe0, 0x38, 0x00, 0x00, 0x82, 0xd5, 0x00, 0x00, 0x7a, 0x07, 0x00, 0x00,
0xca, 0xb4, 0x00, 0x00, 0x33, 0x44, 0x00, 0x00, 0x1c, 0x76, 0x84, 0x36,
0x2a, 0xbd, 0x00, 0x00, 0x01, 0x92, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda,
0xe4, 0x94, 0xbb, 0xaa, 0xea, 0x50, 0x10, 0x86, 0xbf, 0xec, 0x08, 0x29,
0x36, 0x24, 0x85, 0x17, 0xbc, 0x81, 0x18, 0x11, 0x6c, 0xd4, 0x42, 0x8c,
0x0f, 0x61, 0xe1, 0x2b, 0xf8, 0x0a, 0x0a, 0x3e, 0x8f, 0xf8, 0x0c, 0x36,
0x62, 0x1f, 0x92, 0x88, 0x88, 0x10, 0x9b, 0x14, 0x42, 0x44, 0x45, 0x41,
0x2c, 0xac, 0x92, 0x80, 0xb2, 0x4e, 0x73, 0x94, 0x03, 0xfb, 0xb0, 0x4d,
0xb1, 0x8b, 0x03, 0xe7, 0xaf, 0xd6, 0x62, 0xfe, 0xf5, 0x31, 0xc3, 0xcc,
0x1a, 0x49, 0x08, 0xc1, 0x4f, 0xea, 0x83, 0x1f, 0xd6, 0xbf, 0x0f, 0x4c,
0x3c, 0x0f, 0xd7, 0xeb, 0x55, 0x38, 0x8e, 0xc3, 0x66, 0xb3, 0x61, 0xb7,
0xdb, 0x51, 0x2a, 0x95, 0xa8, 0xd7, 0xeb, 0x18, 0x86, 0x41, 0x32, 0x99,
0x94, 0xe2, 0x02, 0x25, 0x21, 0x04, 0x97, 0xcb, 0x45, 0x4c, 0xa7, 0x53,
0x6c, 0xdb, 0xfe, 0x62, 0xe8, 0x74, 0x3a, 0xf4, 0x7a, 0x3d, 0x52, 0xa9,
0x94, 0x14, 0x3b, 0xc3, 0xc5, 0x62, 0x81, 0x6d, 0xdb, 0x94, 0xcb, 0x65,
0x5a, 0xad, 0x16, 0x95, 0x4a, 0x85, 0xed, 0x76, 0xcb, 0x72, 0xb9, 0xc4,
0x71, 0x1c, 0xb2, 0xd9, 0x2c, 0xdd, 0x6e, 0x37, 0x7e, 0xc9, 0xae, 0xeb,
0x02, 0xd0, 0x6e, 0xb7, 0x31, 0x0c, 0x03, 0x55, 0x55, 0xa5, 0x74, 0x3a,
0x2d, 0x64, 0x59, 0xc6, 0xf7, 0x7d, 0x5c, 0xd7, 0x8d, 0x0d, 0xfc, 0x00,
0xd8, 0xef, 0xf7, 0x00, 0x34, 0x9b, 0x4d, 0x54, 0x55, 0x95, 0x00, 0x54,
0x55, 0x95, 0x1a, 0x8d, 0x06, 0x7f, 0xc6, 0x63, 0x03, 0x8b, 0xc5, 0x22,
0x00, 0x9e, 0xe7, 0x01, 0x3c, 0x27, 0x5d, 0xfc, 0xbe, 0xbf, 0xe2, 0xb1,
0x81, 0xb5, 0x5a, 0x0d, 0x00, 0xd3, 0x34, 0xb1, 0x2c, 0x8b, 0x20, 0x08,
0x84, 0x65, 0x59, 0x98, 0xa6, 0x09, 0x80, 0xae, 0xeb, 0xaf, 0x07, 0xf3,
0xf9, 0xfc, 0x7d, 0x97, 0x7d, 0xdf, 0x17, 0xb3, 0xd9, 0x8c, 0xd5, 0x6a,
0xf5, 0x57, 0x53, 0x26, 0x93, 0x61, 0x34, 0x1a, 0xa1, 0x69, 0x9a, 0x14,
0x6b, 0x6c, 0xa2, 0x28, 0x12, 0x87, 0xc3, 0x81, 0xf5, 0x7a, 0x8d, 0xe7,
0x79, 0x1c, 0x8f, 0x47, 0x0a, 0x85, 0x02, 0xba, 0xae, 0xe3, 0xba, 0x2e,
0x97, 0xcb, 0x85, 0x5c, 0x2e, 0xc7, 0x70, 0x38, 0x7c, 0x0b, 0x95, 0x9e,
0xcb, 0x21, 0x8a, 0x22, 0x11, 0x04, 0x01, 0x51, 0x14, 0x71, 0xbf, 0xdf,
0x49, 0x24, 0x12, 0xc8, 0xb2, 0xcc, 0xed, 0x76, 0x63, 0x32, 0x99, 0x70,
0x3e, 0x9f, 0xc9, 0xe7, 0xf3, 0x0c, 0x06, 0x83, 0x6f, 0xa1, 0xaf, 0x9f,
0xa2, 0x28, 0x8a, 0xa4, 0x28, 0xca, 0x17, 0xc3, 0xe7, 0xe7, 0xa7, 0xe8,
0xf7, 0xfb, 0x8c, 0xc7, 0x63, 0xc2, 0x30, 0x24, 0x0c, 0x43, 0x34, 0x4d,
0x7b, 0x9f, 0xe1, 0x77, 0x0a, 0x82, 0x40, 0x9c, 0x4e, 0x27, 0x1e, 0x8f,
0x07, 0xd5, 0x6a, 0x35, 0x5e, 0xc9, 0xff, 0xcf, 0xfa, 0xfa, 0x35, 0x00,
0x70, 0xf3, 0xae, 0xcb, 0x89, 0xcd, 0xd2, 0x46, 0x00, 0x00, 0x00, 0x00,
0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
};
unsigned int mag_png_len = 524;
unsigned char search_l_png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x13,
0x08, 0x06, 0x00, 0x00, 0x00, 0x90, 0x8c, 0x2d, 0xb5, 0x00, 0x00, 0x00,
0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 0x00, 0x0b,
0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, 0x00, 0x00, 0x00, 0x20, 0x63, 0x48,
0x52, 0x4d, 0x00, 0x00, 0x6d, 0x98, 0x00, 0x00, 0x73, 0x8e, 0x00, 0x00,
0xe0, 0x38, 0x00, 0x00, 0x82, 0xd5, 0x00, 0x00, 0x7a, 0x07, 0x00, 0x00,
0xca, 0xb4, 0x00, 0x00, 0x33, 0x44, 0x00, 0x00, 0x1c, 0x76, 0x84, 0x36,
0x2a, 0xbd, 0x00, 0x00, 0x01, 0xe2, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda,
0xac, 0x54, 0x3d, 0xab, 0xda, 0x50, 0x18, 0x7e, 0xce, 0xc9, 0x39, 0x31,
0x4d, 0xfc, 0x40, 0x30, 0x46, 0x14, 0xec, 0x50, 0x44, 0x17, 0x2f, 0x9d,
0xba, 0x15, 0xda, 0xd1, 0xa1, 0x2e, 0xdd, 0x3b, 0x14, 0x4a, 0xa1, 0x7f,
0xa6, 0x74, 0xbd, 0x43, 0xff, 0x84, 0xfd, 0x05, 0x82, 0xda, 0xa5, 0x83,
0x1d, 0xdc, 0x8a, 0x88, 0xa0, 0x44, 0x83, 0xc6, 0x28, 0xad, 0x1f, 0x49,
0xde, 0x2e, 0x8d, 0x78, 0x6f, 0xaf, 0x34, 0x68, 0x9f, 0xed, 0xbc, 0x70,
0x1e, 0x9e, 0x8f, 0xf7, 0x1c, 0x46, 0x44, 0x38, 0x45, 0xaf, 0xd7, 0x63,
0xb6, 0x6d, 0xe7, 0x6d, 0xdb, 0x6e, 0xba, 0xae, 0xfb, 0x6e, 0xb3, 0xd9,
0xdc, 0x6c, 0xb7, 0xdb, 0x04, 0xe7, 0x1c, 0x8c, 0x31, 0xfc, 0x0b, 0x2c,
0x22, 0xec, 0x76, 0xbb, 0xcc, 0xf3, 0xbc, 0xcc, 0x68, 0x34, 0x7a, 0xed,
0xba, 0xee, 0x87, 0x6c, 0x36, 0x7b, 0x93, 0xcb, 0xe5, 0x44, 0x3a, 0x9d,
0x86, 0xa6, 0x69, 0x50, 0x14, 0x25, 0x3e, 0x61, 0xa7, 0xd3, 0x61, 0xf3,
0xf9, 0xfc, 0xc9, 0x78, 0x3c, 0xbe, 0xd5, 0x75, 0xfd, 0x79, 0xa5, 0x52,
0x11, 0xa6, 0x69, 0x22, 0x95, 0x4a, 0x41, 0xd3, 0x34, 0x08, 0x21, 0xc0,
0x18, 0x8b, 0x45, 0x28, 0x00, 0x60, 0xb5, 0x5a, 0xa5, 0x27, 0x93, 0xc9,
0xa7, 0x62, 0xb1, 0xf8, 0xb2, 0x5a, 0xad, 0x22, 0x9f, 0xcf, 0xc3, 0x30,
0x0c, 0x48, 0x29, 0xc1, 0x39, 0x47, 0x5c, 0xbb, 0x00, 0x20, 0xda, 0xed,
0x36, 0x9f, 0x4e, 0xa7, 0xaf, 0x4c, 0xd3, 0x7c, 0x51, 0xaf, 0xd7, 0x61,
0x59, 0x16, 0x74, 0x5d, 0x87, 0x94, 0x12, 0x97, 0x40, 0x2c, 0x16, 0x0b,
0x93, 0x88, 0xde, 0xd6, 0x6a, 0x35, 0xdd, 0xb2, 0x2c, 0x18, 0x86, 0x01,
0x21, 0x04, 0x2e, 0x05, 0xf7, 0x3c, 0xaf, 0x59, 0x2e, 0x97, 0x9f, 0x45,
0xca, 0x38, 0xe7, 0xb8, 0x06, 0x3c, 0x08, 0x82, 0x46, 0xa1, 0x50, 0x78,
0x74, 0xad, 0xb2, 0x23, 0xa1, 0x94, 0xf2, 0x69, 0x26, 0x93, 0xe1, 0x51,
0x66, 0xf7, 0xf7, 0xd2, 0xf7, 0xfd, 0x07, 0x2f, 0x9e, 0x9b, 0x73, 0x55,
0x55, 0xb3, 0x91, 0x55, 0xc6, 0x18, 0xc2, 0x30, 0xbc, 0x1b, 0xf2, 0x19,
0xd5, 0xe7, 0xe6, 0x5c, 0x4a, 0x39, 0x06, 0x70, 0x5c, 0x8b, 0xb8, 0xeb,
0x71, 0xd6, 0x32, 0x11, 0x75, 0xf6, 0xfb, 0xfd, 0xd1, 0xea, 0xd5, 0xa5,
0x10, 0xd1, 0xb7, 0xf5, 0x7a, 0x1d, 0x84, 0x61, 0x08, 0x22, 0xba, 0x9e,
0x50, 0x51, 0x94, 0xaf, 0x8e, 0xe3, 0xfc, 0xdc, 0xed, 0x76, 0xf8, 0x1f,
0xe0, 0x89, 0x44, 0xe2, 0xc7, 0x72, 0xb9, 0xfc, 0xee, 0x38, 0x0e, 0x7c,
0xdf, 0x3f, 0x5a, 0xbf, 0xdf, 0x76, 0x6c, 0xc2, 0x46, 0xa3, 0xf1, 0x2b,
0x08, 0x82, 0xdb, 0xe1, 0x70, 0xe8, 0x2c, 0x16, 0x0b, 0x04, 0x41, 0x00,
0x22, 0xba, 0xb8, 0x1c, 0xfe, 0x67, 0x05, 0xbe, 0x78, 0x9e, 0xf7, 0x79,
0x30, 0x18, 0x8c, 0x67, 0xb3, 0x19, 0x45, 0x25, 0x9d, 0x53, 0x49, 0x44,
0x38, 0x1c, 0x0e, 0x38, 0x2d, 0xf3, 0xce, 0x6f, 0x03, 0x60, 0x29, 0x84,
0xf8, 0xe8, 0x79, 0x9e, 0xdb, 0xef, 0xf7, 0xdf, 0x97, 0x4a, 0xa5, 0xc7,
0xd1, 0x53, 0x54, 0x55, 0x15, 0x52, 0xca, 0xbf, 0x14, 0x0b, 0x21, 0x1e,
0x8c, 0x87, 0x9d, 0x1e, 0x5a, 0xad, 0x96, 0x00, 0x50, 0x27, 0xa2, 0x37,
0xaa, 0xaa, 0x36, 0x0d, 0xc3, 0x28, 0x26, 0x93, 0x49, 0xa1, 0x69, 0x9a,
0xc2, 0x39, 0x8f, 0x95, 0xc1, 0xef, 0x01, 0x00, 0x35, 0xe5, 0xd5, 0x5e,
0xd0, 0xed, 0x0c, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44,
0xae, 0x42, 0x60, 0x82
};
unsigned int search_l_png_len = 604;
unsigned char search_m_png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13,
0x08, 0x02, 0x00, 0x00, 0x00, 0x35, 0x5e, 0x4b, 0x4d, 0x00, 0x00, 0x00,
0x04, 0x67, 0x41, 0x4d, 0x41, 0x00, 0x00, 0xd6, 0xd8, 0xd4, 0x4f, 0x58,
0x32, 0x00, 0x00, 0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 0x66,
0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x41, 0x64, 0x6f, 0x62, 0x65, 0x20,
0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x61, 0x64, 0x79, 0x71, 0xc9,
0x65, 0x3c, 0x00, 0x00, 0x00, 0x30, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda,
0x62, 0x2c, 0x2f, 0x2f, 0x67, 0x60, 0x60, 0x60, 0x3c, 0x7e, 0xfc, 0x38,
0x88, 0xfa, 0xf8, 0xf1, 0x23, 0x88, 0xfa, 0xff, 0xff, 0x3f, 0x90, 0x62,
0x62, 0x00, 0x03, 0x5a, 0x50, 0x2c, 0x10, 0x1b, 0x58, 0x6e, 0xdd, 0xba,
0x05, 0xa4, 0x00, 0x02, 0x0c, 0x00, 0xa5, 0x07, 0x0f, 0x3c, 0x7e, 0xe1,
0x45, 0xa7, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,
0x60, 0x82
};
unsigned int search_m_png_len = 158;
unsigned char search_r_png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13,
0x08, 0x06, 0x00, 0x00, 0x00, 0x9d, 0x92, 0x5d, 0xf2, 0x00, 0x00, 0x00,
0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 0x00, 0x0b,
0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, 0x00, 0x00, 0x00, 0x20, 0x63, 0x48,
0x52, 0x4d, 0x00, 0x00, 0x6d, 0x98, 0x00, 0x00, 0x73, 0x8e, 0x00, 0x00,
0xe0, 0x38, 0x00, 0x00, 0x82, 0xd5, 0x00, 0x00, 0x7a, 0x07, 0x00, 0x00,
0xca, 0xb4, 0x00, 0x00, 0x33, 0x44, 0x00, 0x00, 0x1c, 0x76, 0x84, 0x36,
0x2a, 0xbd, 0x00, 0x00, 0x01, 0xea, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda,
0xa4, 0xd4, 0xbf, 0xaa, 0x1a, 0x41, 0x14, 0x06, 0xf0, 0x6f, 0xf6, 0x9f,
0xb2, 0x0a, 0x6b, 0xa5, 0x56, 0x8b, 0xa4, 0x92, 0xd4, 0x69, 0x7c, 0x03,
0xb1, 0x59, 0x49, 0x11, 0x52, 0xdf, 0xbc, 0x43, 0xcc, 0x2b, 0xa4, 0x4c,
0x97, 0x67, 0x08, 0xa4, 0x11, 0x2c, 0x52, 0x5c, 0x42, 0x24, 0x60, 0x8a,
0x34, 0x29, 0x42, 0x50, 0x41, 0x21, 0xa0, 0x97, 0xd5, 0x55, 0xb3, 0xbb,
0xee, 0xb2, 0xce, 0xee, 0xcc, 0x49, 0x91, 0x28, 0xc2, 0x0d, 0xe6, 0xaa,
0xa7, 0x9d, 0xc3, 0x8f, 0x73, 0x98, 0xf9, 0x86, 0x75, 0x3a, 0x1d, 0xc2,
0x89, 0x12, 0x42, 0x24, 0xf9, 0x7c, 0x7e, 0x5a, 0x2c, 0x16, 0x3f, 0x96,
0x4a, 0xa5, 0x5e, 0xb5, 0x5a, 0xfd, 0x52, 0x2e, 0x97, 0xfd, 0x46, 0xa3,
0x21, 0x8e, 0xfb, 0xd8, 0x60, 0x30, 0x38, 0x09, 0x65, 0x59, 0x86, 0x24,
0x49, 0x10, 0x04, 0x81, 0xf0, 0x3c, 0x6f, 0xb3, 0xd9, 0x6c, 0x7e, 0x58,
0x96, 0x75, 0x5b, 0xab, 0xd5, 0xde, 0x34, 0x9b, 0xcd, 0x5f, 0x07, 0xc8,
0xf7, 0xfd, 0x93, 0x90, 0x94, 0xf2, 0x80, 0x85, 0x61, 0x88, 0xe5, 0x72,
0x49, 0xe3, 0xf1, 0x58, 0xc6, 0x71, 0xfc, 0xc1, 0xb6, 0xed, 0xe7, 0x8e,
0xe3, 0x84, 0x00, 0xc0, 0xa4, 0x94, 0x27, 0x21, 0x22, 0x82, 0x94, 0x12,
0x52, 0x4a, 0xa4, 0x69, 0x8a, 0x28, 0x8a, 0xb0, 0x58, 0x2c, 0x30, 0x1c,
0x0e, 0x85, 0xeb, 0xba, 0xef, 0x6b, 0xb5, 0xda, 0x4d, 0xab, 0xd5, 0x8a,
0x34, 0xc6, 0xd8, 0x29, 0x07, 0x8c, 0x31, 0x28, 0x8a, 0x02, 0x22, 0x82,
0xae, 0xeb, 0x30, 0x0c, 0x03, 0xb9, 0x5c, 0x0e, 0x86, 0x61, 0xa8, 0x52,
0xca, 0xa7, 0xf3, 0xf9, 0xfc, 0x67, 0xbf, 0xdf, 0x7f, 0xa5, 0xe0, 0x81,
0xc5, 0x18, 0x03, 0x63, 0x0c, 0x9a, 0xa6, 0xa1, 0x50, 0x28, 0xa0, 0x52,
0xa9, 0xa0, 0x5e, 0xaf, 0x6b, 0x00, 0x5e, 0xac, 0xd7, 0xeb, 0x47, 0x0f,
0x86, 0x8e, 0x41, 0x55, 0x55, 0x61, 0x9a, 0x26, 0x2a, 0x95, 0x0a, 0x6c,
0xdb, 0xb6, 0x82, 0x20, 0x78, 0x76, 0x36, 0xb4, 0xc7, 0xf6, 0x93, 0x55,
0xab, 0x55, 0x26, 0x84, 0x78, 0xac, 0x1c, 0x5f, 0xf3, 0xb9, 0xa5, 0xeb,
0x3a, 0x2c, 0xcb, 0x82, 0xae, 0xeb, 0xbb, 0x03, 0xa4, 0x69, 0xda, 0xd9,
0x53, 0x29, 0x8a, 0x02, 0xd3, 0x34, 0x99, 0x61, 0x18, 0xcb, 0x8b, 0x56,
0x3b, 0xc6, 0xfe, 0x4e, 0x76, 0x77, 0x15, 0x44, 0x44, 0xe0, 0x9c, 0x0b,
0x22, 0xfa, 0xaa, 0x5c, 0x83, 0x48, 0x29, 0x11, 0x86, 0xe1, 0x86, 0x88,
0xbe, 0x5f, 0x35, 0xd1, 0x6e, 0xb7, 0x83, 0xe7, 0x79, 0x3d, 0x55, 0x55,
0x7d, 0xd0, 0x05, 0x25, 0xa5, 0x24, 0xce, 0x39, 0x4d, 0x26, 0x93, 0x45,
0xb7, 0xdb, 0x7d, 0x42, 0x44, 0x50, 0x2e, 0x59, 0x49, 0x08, 0x81, 0xf5,
0x7a, 0x9d, 0x4c, 0xa7, 0xd3, 0x77, 0x42, 0x88, 0x6f, 0x00, 0xa0, 0xed,
0x0f, 0xb3, 0x2c, 0x3b, 0xe4, 0xe9, 0x5f, 0xf9, 0x23, 0xfa, 0x93, 0x6d,
0xce, 0x39, 0x56, 0xab, 0x95, 0x18, 0x0e, 0x87, 0x9f, 0x82, 0x20, 0x78,
0xdd, 0x6e, 0xb7, 0xd3, 0x7b, 0xe9, 0x27, 0xa2, 0x7b, 0x08, 0x11, 0x21,
0x4d, 0x53, 0x70, 0xce, 0x11, 0xc7, 0xb1, 0x74, 0x5d, 0xd7, 0x9f, 0xcd,
0x66, 0x3d, 0xce, 0xf9, 0x4b, 0xc7, 0x71, 0xee, 0x0e, 0xef, 0x70, 0x34,
0x1a, 0xe1, 0x7f, 0xff, 0x51, 0x92, 0x24, 0xd8, 0x6e, 0xb7, 0x61, 0x14,
0x45, 0x9f, 0x39, 0xe7, 0x6f, 0x19, 0x63, 0xb7, 0x8e, 0xe3, 0x44, 0xc7,
0x7d, 0xbf, 0x07, 0x00, 0x5f, 0x77, 0x46, 0x8c, 0x30, 0x2c, 0xd8, 0x9d,
0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
};
unsigned int search_r_png_len = 612;
static unsigned char close_png[] = {
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d,
0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b,
0x08, 0x06, 0x00, 0x00, 0x00, 0xa9, 0xac, 0x77, 0x26, 0x00, 0x00, 0x00,
0xd8, 0x49, 0x44, 0x41, 0x54, 0x18, 0x19, 0x75, 0x51, 0xbd, 0x12, 0x46,
0x40, 0x0c, 0xdc, 0x18, 0x15, 0x0a, 0x14, 0x14, 0x1a, 0x43, 0xeb, 0x35,
0xbc, 0x7f, 0xa7, 0x43, 0x67, 0x06, 0x33, 0x28, 0xd0, 0xde, 0x77, 0x7b,
0x23, 0x2a, 0xdf, 0x16, 0x97, 0x9f, 0xdb, 0xcb, 0x26, 0x39, 0xc1, 0x83,
0x7d, 0xdf, 0xcd, 0xb2, 0x2c, 0xd8, 0xb6, 0x0d, 0xe7, 0x79, 0x22, 0x8a,
0x22, 0xc4, 0x71, 0x8c, 0x3c, 0xcf, 0x91, 0xa6, 0xa9, 0x90, 0xe6, 0x8e,
0x69, 0x9a, 0xcc, 0x38, 0x8e, 0xb8, 0xae, 0x4b, 0xdf, 0xbe, 0x36, 0x0c,
0x43, 0x94, 0x65, 0x89, 0xa2, 0x28, 0xc4, 0x3b, 0x8e, 0xe3, 0x2f, 0x91,
0x2f, 0xa8, 0xc2, 0x42, 0x56, 0xd1, 0x78, 0xf3, 0x3c, 0xbb, 0x04, 0x2f,
0xda, 0xb6, 0x45, 0x55, 0x55, 0x74, 0x9d, 0x65, 0x2c, 0x22, 0xb8, 0xef,
0x1b, 0xeb, 0xba, 0xc2, 0x67, 0x8f, 0x4c, 0x10, 0x7d, 0xdf, 0xa3, 0xae,
0x6b, 0xe7, 0xd3, 0x32, 0x56, 0x90, 0xe7, 0x53, 0x46, 0x31, 0x0c, 0x83,
0x73, 0x95, 0xa8, 0x31, 0x93, 0x9c, 0xc7, 0xe3, 0xd4, 0x0a, 0xb6, 0xa0,
0x44, 0x5a, 0xc6, 0xc6, 0x18, 0x77, 0xcd, 0x41, 0xbd, 0x24, 0x49, 0x94,
0xfb, 0x12, 0x59, 0x51, 0x5b, 0xd2, 0x16, 0xed, 0xfa, 0x20, 0xdc, 0x6f,
0xd7, 0x75, 0x9f, 0x6b, 0xd3, 0x2a, 0x41, 0x10, 0xa0, 0x69, 0x1a, 0x57,
0x59, 0x28, 0x47, 0x99, 0x2f, 0x30, 0xcf, 0x7b, 0xfb, 0x41, 0xcf, 0x1a,
0x2c, 0xeb, 0xeb, 0x07, 0x29, 0x9d, 0x65, 0x19, 0x6c, 0xab, 0x6e, 0x5d,
0x3f, 0x07, 0x0a, 0x79, 0x90, 0x0e, 0x11, 0x45, 0xc2, 0x00, 0x00, 0x00,
0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
};
static unsigned int close_png_len = 273;
static unsigned char closed_png[81] =
{
0, 0, 0, 0,142, 0, 0, 0, 0,
0, 0, 0, 0,142,142, 0, 0, 0,
0, 0, 0, 0,142,142,142, 0, 0,
0, 0, 0, 0,142,142,142,142, 0,
0, 0, 0, 0,142,142,142,142,142,
0, 0, 0, 0,142,142,142,142, 0,
0, 0, 0, 0,142,142,142, 0, 0,
0, 0, 0, 0,142,142, 0, 0, 0,
0, 0, 0, 0,142, 0, 0, 0, 0
};
static unsigned char closed_a_png[81] =
{
0, 0, 0, 0,255, 0, 0, 0, 0,
0, 0, 0, 0,255,255, 0, 0, 0,
0, 0, 0, 0,255,255,255, 0, 0,
0, 0, 0, 0,255,255,255,255, 0,
0, 0, 0, 0,255,255,255,255,255,
0, 0, 0, 0,255,255,255,255, 0,
0, 0, 0, 0,255,255,255, 0, 0,
0, 0, 0, 0,255,255, 0, 0, 0,
0, 0, 0, 0,255, 0, 0, 0, 0
};
static unsigned char open_png[81] =
{
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
142,142,142,142,142,142,142,142,142,
0,142,142,142,142,142,142,142, 0,
0, 0,142,142,142,142,142, 0, 0,
0, 0, 0,142,142,142, 0, 0, 0,
0, 0, 0, 0,142, 0, 0, 0, 0
};
static unsigned char open_a_png[81] =
{
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,
255,255,255,255,255,255,255,255,255,
0,255,255,255,255,255,255,255, 0,
0, 0,255,255,255,255,255, 0, 0,
0, 0, 0,255,255,255, 0, 0, 0,
0, 0, 0, 0,255, 0, 0, 0, 0
};
static unsigned char bdwn_png[7*8] =
{
0, 0, 0,142, 0, 0, 0,
0, 0, 0,142, 0, 0, 0,
0, 0, 0,142, 0, 0, 0,
142, 0, 0,142, 0, 0,142,
142,142, 0,142, 0,142,142,
142,142,142,142,142,142,142,
0,142,142,142,142,142, 0,
0, 0,142,142,142, 0, 0,
};
static unsigned char bdwn_a_png[7*8] =
{
0, 0, 0,255, 0, 0, 0,
0, 0, 0,255, 0, 0, 0,
0, 0, 0,255, 0, 0, 0,
128, 0, 0,255, 0, 0,128,
255,128, 0,255, 0,128,255,
128,255,128,255,128,255,128,
0,128,255,255,255,128, 0,
0, 0,128,255,128, 0, 0,
};
static unsigned char sync_on_png[576] =
{
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,138,128,128,128,128,133,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,129,205,186,128,128,128,128,160,210,134,128,128,128,128,128,128,128,
128,128,128,128,128,128,139,217,255,181,128,128,128,128,152,255,229,147,128,128,128,128,128,128,
128,128,128,128,128,156,236,255,255,181,128,128,128,128,152,255,255,243,164,128,128,128,128,128,
128,128,128,128,175,249,255,255,255,223,196,198,198,197,211,255,255,255,253,186,128,128,128,128,
128,128,133,202,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,214,137,128,128,
128,128,135,217,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,225,140,128,128,
128,128,128,128,189,255,255,255,255,238,224,225,225,224,232,255,255,255,255,201,131,128,128,128,
128,128,128,128,128,167,245,255,255,183,128,128,128,128,155,255,255,250,179,128,128,128,128,128,
128,128,128,128,128,128,150,231,255,188,128,128,128,128,161,255,238,158,128,128,128,128,128,128,
128,128,128,128,128,128,128,136,216,188,128,128,128,128,161,223,142,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,130,141,128,128,128,128,135,132,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128
};
static unsigned char sync_off_png[576] =
{
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,138,128,128,128,128,128,128,133,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,129,205,186,128,128,128,128,128,128,160,210,134,128,128,128,128,128,128,
128,128,128,128,128,139,217,255,181,128,128,128,128,128,128,152,255,229,147,128,128,128,128,128,
128,128,128,128,156,236,255,255,181,128,128,128,128,128,128,152,255,255,243,164,128,128,128,128,
128,128,128,175,249,255,255,255,223,196,198,198,128,128,197,211,255,255,255,253,186,128,128,128,
128,128,202,255,255,255,255,255,255,255,255,225,128,128,255,255,255,255,255,255,255,214,128,128,
128,128,217,255,255,255,255,255,255,255,255,128,128,198,255,255,255,255,255,255,255,225,128,128,
128,128,128,189,255,255,255,255,238,224,225,128,128,225,224,232,255,255,255,255,201,128,128,128,
128,128,128,128,167,245,255,255,183,128,128,128,128,128,128,155,255,255,250,179,128,128,128,128,
128,128,128,128,128,150,231,255,188,128,128,128,128,128,128,161,255,238,158,128,128,128,128,128,
128,128,128,128,128,128,136,216,188,128,128,128,128,128,128,161,223,142,128,128,128,128,128,128,
128,128,128,128,128,128,128,130,141,128,128,128,128,128,128,135,132,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,
128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128
};
static unsigned char sync_a_png[576] =
{
0, 0, 0, 0, 0, 0, 0, 29, 98,157,207,231,234,211,164,104, 38, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 21,143,234,255,255,255,255,255,255,255,255,244,155, 33, 0, 0, 0, 0, 0,
0, 0, 0, 0, 70,221,255,255,255,255,255,255,255,255,255,255,255,255,235, 93, 0, 0, 0, 0,
0, 0, 0, 92,251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,116, 0, 0, 0,
0, 0, 68,251,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 96, 0, 0,
0, 20,225,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,243, 41, 0,
0,143,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,172, 1,
28,238,255,255,255,255,255,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 42,
99,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,133,
160,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,204,
212,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,224,
234,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,237,255,236,
235,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,230,255,236,
216,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,226,
168,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,208,
107,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,147,
39,245,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 53,
0,159,255,255,255,255,255,255,251,255,255,255,255,255,255,255,255,255,255,255,255,255,190, 3,
0, 31,239,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,249, 54, 0,
0, 0, 91,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,119, 0, 0,
0, 0, 0,116,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,145, 0, 0, 0,
0, 0, 0, 0, 98,240,255,255,255,255,255,255,255,255,255,255,255,255,248,119, 0, 0, 0, 0,
0, 0, 0, 0, 0, 45,168,252,255,255,255,255,255,255,255,255,255,184, 58, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 45,131,201,222,234,236,224,204,142, 54, 0, 0, 0, 0, 0, 0, 0
};
//------------------------------------------------------------------------
static const char tabs_css[] =
".tabs, .tabs2, .tabs3 {\n"
" background-image: url('tab_b.png');\n"
" width: 100%;\n"
" z-index: 101;\n"
" font-size: 13px;\n"
" font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;\n"
"}\n"
"\n"
".tabs2 {\n"
" font-size: 10px;\n"
"}\n"
".tabs3 {\n"
" font-size: 9px;\n"
"}\n"
"\n"
".tablist {\n"
" margin: 0;\n"
" padding: 0;\n"
" display: table;\n"
"}\n"
"\n"
".tablist li {\n"
" float: left;\n"
" display: table-cell;\n"
" background-image: url('tab_b.png');\n"
" line-height: 36px;\n"
" list-style: none;\n"
"}\n"
"\n"
".tablist a {\n"
" display: block;\n"
" padding: 0 20px;\n"
" font-weight: bold;\n"
" background-image:url('tab_s.png');\n"
" background-repeat:no-repeat;\n"
" background-position:right;\n"
" color: ##30;\n"
" text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);\n"
" text-decoration: none;\n"
" outline: none;\n"
"}\n"
"\n"
".tabs3 .tablist a {\n"
" padding: 0 10px;\n"
"}\n"
"\n"
".tablist a:hover {\n"
" background-image: url('tab_h.png');\n"
" background-repeat:repeat-x;\n"
" color: #fff;\n"
" text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);\n"
" text-decoration: none;\n"
"}\n"
"\n"
".tablist li.current a {\n"
" background-image: url('tab_a.png');\n"
" background-repeat:repeat-x;\n"
" color: #fff;\n"
" text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);\n"
"}\n"
;
struct img_data_item
{
const char *name;
unsigned char *content;
unsigned int len;
};
static void writeImgData(const char *dir,img_data_item *data)
{
while (data->name)
{
QCString fileName;
fileName=(QCString)dir+"/"+data->name;
QFile f(fileName);
if (f.open(IO_WriteOnly))
{
f.writeBlock((char*)data->content,
data->len>0 ? data->len : qstrlen((char*)data->content));
}
else
{
fprintf(stderr,"Warning: Cannot open file %s for writing\n",data->name);
}
Doxygen::indexList->addImageFile(QCString("/search/")+data->name);
data++;
}
}
static ColoredImgDataItem colored_tab_data[] =
{
// file_name W H luma_data alpha_data
{ "tab_a.png", 1, 36, tab_a_png, 0 },
{ "tab_b.png", 1, 36, tab_b_png, 0 },
{ "tab_h.png", 1, 36, tab_h_png, 0 },
{ "tab_s.png", 1, 36, tab_s_png, 0 },
{ "nav_h.png", 1, 12, header_png, 0 },
{ "nav_f.png", 1, 56, func_header_png, 0 },
{ "bc_s.png", 8, 30, bc_s_png, bc_s_a_png },
{ "doxygen.png", 104,31, doxygen_png, doxygen_a_png },
{ "closed.png", 9, 9, closed_png, closed_a_png },
{ "open.png", 9, 9, open_png, open_a_png },
{ "bdwn.png", 7, 8, bdwn_png, bdwn_a_png },
{ "sync_on.png", 24, 24, sync_on_png, sync_a_png },
{ "sync_off.png",24, 24, sync_off_png, sync_a_png },
{ 0, 0, 0, 0, 0 }
};
static img_data_item search_client_data[] =
{
// file_name raw_data num bytes
{ "mag_sel.png", mag_sel_png, mag_sel_png_len },
{ "search_l.png", search_l_png, search_l_png_len },
{ "search_m.png", search_m_png, search_m_png_len },
{ "search_r.png", search_r_png, search_r_png_len },
{ "close.png", close_png, close_png_len },
{ 0, 0, 0 }
};
static img_data_item search_server_data[] =
{
// file_name raw_data num bytes
{ "mag.png", mag_png, mag_png_len },
{ "search_l.png", search_l_png, search_l_png_len },
{ "search_m.png", search_m_png, search_m_png_len },
{ "search_r.png", search_r_png, search_r_png_len },
{ 0, 0, 0 }
};
//------------------------------------------------------------------------
static void writeClientSearchBox(FTextStream &t,const char *relPath) static void writeClientSearchBox(FTextStream &t,const char *relPath)
{ {
...@@ -982,10 +172,12 @@ static QCString getSearchBox(bool serverSide, QCString relPath, bool highlightSe ...@@ -982,10 +172,12 @@ static QCString getSearchBox(bool serverSide, QCString relPath, bool highlightSe
{ {
QGString result; QGString result;
FTextStream t(&result); FTextStream t(&result);
if (serverSide) { if (serverSide)
{
writeServerSearchBox(t, relPath, highlightSearch); writeServerSearchBox(t, relPath, highlightSearch);
} }
else { else
{
writeClientSearchBox(t, relPath); writeClientSearchBox(t, relPath);
} }
return QCString(result); return QCString(result);
...@@ -1096,6 +288,7 @@ static QCString substituteHtmlKeywords(const QCString &s, ...@@ -1096,6 +288,7 @@ static QCString substituteHtmlKeywords(const QCString &s,
{ {
treeViewCssJs = "<link href=\"$relpath^navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n" treeViewCssJs = "<link href=\"$relpath^navtree.css\" rel=\"stylesheet\" type=\"text/css\"/>\n"
"<script type=\"text/javascript\" src=\"$relpath^resize.js\"></script>\n" "<script type=\"text/javascript\" src=\"$relpath^resize.js\"></script>\n"
"<script type=\"text/javascript\" src=\"$relpath^navtreedata.js\"></script>\n"
"<script type=\"text/javascript\" src=\"$relpath^navtree.js\"></script>\n" "<script type=\"text/javascript\" src=\"$relpath^navtree.js\"></script>\n"
"<script type=\"text/javascript\">\n" "<script type=\"text/javascript\">\n"
" $(document).ready(initResizable);\n" " $(document).ready(initResizable);\n"
...@@ -1106,12 +299,16 @@ static QCString substituteHtmlKeywords(const QCString &s, ...@@ -1106,12 +299,16 @@ static QCString substituteHtmlKeywords(const QCString &s,
if (searchEngine) if (searchEngine)
{ {
searchCssJs = "<link href=\"$relpath^search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n"; searchCssJs = "<link href=\"$relpath^search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>\n";
if (!serverBasedSearch)
{
searchCssJs += "<script type=\"text/javascript\" src=\"$relpath^search/searchdata.js\"></script>\n";
}
searchCssJs += "<script type=\"text/javascript\" src=\"$relpath^search/search.js\"></script>\n"; searchCssJs += "<script type=\"text/javascript\" src=\"$relpath^search/search.js\"></script>\n";
if (!serverBasedSearch) if (!serverBasedSearch)
{ {
searchCssJs += "<script type=\"text/javascript\">\n" searchCssJs += "<script type=\"text/javascript\">\n"
" $(document).ready(function() { searchBox.OnSelectItem(0); });\n" " $(document).ready(function() { init_search(); });\n"
"</script>"; "</script>";
} }
else else
...@@ -1124,7 +321,7 @@ static QCString substituteHtmlKeywords(const QCString &s, ...@@ -1124,7 +321,7 @@ static QCString substituteHtmlKeywords(const QCString &s,
// OPENSEARCH_PROVIDER { // OPENSEARCH_PROVIDER {
searchCssJs += "<link rel=\"search\" href=\"" + relPath + searchCssJs += "<link rel=\"search\" href=\"" + relPath +
"search-opensearch.php?v=opensearch.xml\" " "search_opensearch.php?v=opensearch.xml\" "
"type=\"application/opensearchdescription+xml\" title=\"" + "type=\"application/opensearchdescription+xml\" title=\"" +
(hasProjectName ? projectName : QCString("Doxygen")) + (hasProjectName ? projectName : QCString("Doxygen")) +
"\"/>"; "\"/>";
...@@ -1504,7 +701,7 @@ void HtmlGenerator::init() ...@@ -1504,7 +701,7 @@ void HtmlGenerator::init()
} }
else else
{ {
g_header = defaultHtmlHeader; g_header = ResourceMgr::instance().getAsString("header.html");
} }
if (!Config_getString("HTML_FOOTER").isEmpty()) if (!Config_getString("HTML_FOOTER").isEmpty())
...@@ -1514,7 +711,7 @@ void HtmlGenerator::init() ...@@ -1514,7 +711,7 @@ void HtmlGenerator::init()
} }
else else
{ {
g_footer = defaultHtmlFooter; g_footer = ResourceMgr::instance().getAsString("footer.html");
} }
if (Config_getBool("USE_MATHJAX")) if (Config_getBool("USE_MATHJAX"))
...@@ -1527,51 +724,21 @@ void HtmlGenerator::init() ...@@ -1527,51 +724,21 @@ void HtmlGenerator::init()
} }
createSubDirs(d); createSubDirs(d);
QCString fileName=dname+"/tabs.css"; ResourceMgr &mgr = ResourceMgr::instance();
QFile f(fileName); mgr.copyResource("tabs.css",dname);
if (f.open(IO_WriteOnly)) mgr.copyResource("jquery.js",dname);
{
FTextStream t(&f);
t << replaceColorMarkers(tabs_css);
}
else
{
fprintf(stderr,"Warning: Cannot open file %s for writing\n",fileName.data());
}
{
QFile f(dname+"/jquery.js");
if (f.open(IO_WriteOnly))
{
FTextStream t(&f);
t << search_jquery_script1 << search_jquery_script2 << search_jquery_script3;
if (Config_getBool("GENERATE_TREEVIEW"))
{
t << search_jquery_script4 << search_jquery_script5;
}
if (Config_getBool("SOURCE_BROWSER"))
{
t << search_jquery_script6;
}
}
}
if (Config_getBool("INTERACTIVE_SVG")) if (Config_getBool("INTERACTIVE_SVG"))
{ {
QFile f(dname+"/svgpan.js"); mgr.copyResource("svgpan.js",dname);
if (f.open(IO_WriteOnly))
{
FTextStream t(&f);
t << svgpan_script;
}
} }
{ {
QFile f(dname+"/dynsections.js"); QFile f(dname+"/dynsections.js");
if (f.open(IO_WriteOnly)) if (f.open(IO_WriteOnly))
{ {
const Resource *res = mgr.get("dynsections.js");
FTextStream t(&f); FTextStream t(&f);
t << dynsections_script; t << (const char *)res->data;
if (Config_getBool("SOURCE_BROWSER") && Config_getBool("SOURCE_TOOLTIPS")) if (Config_getBool("SOURCE_BROWSER") && Config_getBool("SOURCE_TOOLTIPS"))
{ {
t << endl << t << endl <<
...@@ -1591,26 +758,65 @@ void HtmlGenerator::writeTabData() ...@@ -1591,26 +758,65 @@ void HtmlGenerator::writeTabData()
{ {
Doxygen::indexList->addStyleSheetFile("tabs.css"); Doxygen::indexList->addStyleSheetFile("tabs.css");
QCString dname=Config_getString("HTML_OUTPUT"); QCString dname=Config_getString("HTML_OUTPUT");
writeColoredImgData(dname,colored_tab_data); ResourceMgr &mgr = ResourceMgr::instance();
//writeColoredImgData(dname,colored_tab_data);
{ mgr.copyResource("tab_a.lum",dname);
unsigned char shadow[6] = { 5, 5, 5, 5, 5, 5 }; mgr.copyResource("tab_b.lum",dname);
unsigned char shadow_alpha[6] = { 80, 60, 40, 20, 10, 0 }; mgr.copyResource("tab_h.lum",dname);
ColoredImage img(1,6,shadow,shadow_alpha,0,0,100); mgr.copyResource("tab_s.lum",dname);
img.save(dname+"/nav_g.png"); mgr.copyResource("nav_h.lum",dname);
} mgr.copyResource("nav_f.lum",dname);
mgr.copyResource("bc_s.luma",dname);
mgr.copyResource("doxygen.luma",dname);
mgr.copyResource("closed.luma",dname);
mgr.copyResource("open.luma",dname);
mgr.copyResource("bdwn.luma",dname);
mgr.copyResource("sync_on.luma",dname);
mgr.copyResource("sync_off.luma",dname);
//{
// unsigned char shadow[6] = { 5, 5, 5, 5, 5, 5 };
// unsigned char shadow_alpha[6] = { 80, 60, 40, 20, 10, 0 };
// ColoredImage img(1,6,shadow,shadow_alpha,0,0,100);
// img.save(dname+"/nav_g.png");
//}
mgr.copyResource("nav_g.png",dname);
} }
void HtmlGenerator::writeSearchData(const char *dir) void HtmlGenerator::writeSearchData(const char *dir)
{ {
static bool serverBasedSearch = Config_getBool("SERVER_BASED_SEARCH"); static bool serverBasedSearch = Config_getBool("SERVER_BASED_SEARCH");
writeImgData(dir,serverBasedSearch ? search_server_data : search_client_data); //writeImgData(dir,serverBasedSearch ? search_server_data : search_client_data);
ResourceMgr &mgr = ResourceMgr::instance();
mgr.copyResource("search_l.png",dir);
Doxygen::indexList->addImageFile("search/search_l.png");
mgr.copyResource("search_m.png",dir);
Doxygen::indexList->addImageFile("search/search_m.png");
mgr.copyResource("search_r.png",dir);
Doxygen::indexList->addImageFile("search/search_r.png");
if (serverBasedSearch)
{
mgr.copyResource("mag.png",dir);
Doxygen::indexList->addImageFile("search/mag.png");
}
else
{
mgr.copyResource("close.png",dir);
Doxygen::indexList->addImageFile("search/close.png");
mgr.copyResource("mag_sel.png",dir);
Doxygen::indexList->addImageFile("search/mag_sel.png");
}
QCString searchDirName = Config_getString("HTML_OUTPUT")+"/search"; QCString searchDirName = Config_getString("HTML_OUTPUT")+"/search";
QFile f(searchDirName+"/search.css"); QFile f(searchDirName+"/search.css");
if (f.open(IO_WriteOnly)) if (f.open(IO_WriteOnly))
{
const Resource *res = mgr.get("search.css");
if (res)
{ {
FTextStream t(&f); FTextStream t(&f);
QCString searchCss = replaceColorMarkers(search_styleSheet); QCString searchCss = replaceColorMarkers((const char *)res->data);
searchCss = substitute(searchCss,"$doxygenversion",versionString); searchCss = substitute(searchCss,"$doxygenversion",versionString);
if (Config_getBool("DISABLE_INDEX")) if (Config_getBool("DISABLE_INDEX"))
{ {
...@@ -1618,30 +824,29 @@ void HtmlGenerator::writeSearchData(const char *dir) ...@@ -1618,30 +824,29 @@ void HtmlGenerator::writeSearchData(const char *dir)
searchCss = substitute(searchCss,"margin-top: 8px;","margin-top: 0px;"); searchCss = substitute(searchCss,"margin-top: 8px;","margin-top: 0px;");
} }
t << searchCss; t << searchCss;
}
Doxygen::indexList->addStyleSheetFile("search/search.css"); Doxygen::indexList->addStyleSheetFile("search/search.css");
}
}
} }
void HtmlGenerator::writeStyleSheetFile(QFile &file) void HtmlGenerator::writeStyleSheetFile(QFile &file)
{ {
FTextStream t(&file); FTextStream t(&file);
t << replaceColorMarkers(substitute(defaultStyleSheet,"$doxygenversion",versionString)); t << replaceColorMarkers(substitute(ResourceMgr::instance().getAsString("doxygen.css"),"$doxygenversion",versionString));
} }
void HtmlGenerator::writeHeaderFile(QFile &file, const char * /*cssname*/) void HtmlGenerator::writeHeaderFile(QFile &file, const char * /*cssname*/)
{ {
FTextStream t(&file); FTextStream t(&file);
t << "<!-- HTML header for doxygen " << versionString << "-->" << endl; t << "<!-- HTML header for doxygen " << versionString << "-->" << endl;
QCString contents(defaultHtmlHeader); t << ResourceMgr::instance().getAsString("header.html");
t << contents;
} }
void HtmlGenerator::writeFooterFile(QFile &file) void HtmlGenerator::writeFooterFile(QFile &file)
{ {
FTextStream t(&file); FTextStream t(&file);
t << "<!-- HTML footer for doxygen " << versionString << "-->" << endl; t << "<!-- HTML footer for doxygen " << versionString << "-->" << endl;
QCString contents(defaultHtmlFooter); t << ResourceMgr::instance().getAsString("footer.html");
t << contents;
} }
void HtmlGenerator::startFile(const char *name,const char *, void HtmlGenerator::startFile(const char *name,const char *,
...@@ -1779,7 +984,7 @@ void HtmlGenerator::writeStyleInfo(int part) ...@@ -1779,7 +984,7 @@ void HtmlGenerator::writeStyleInfo(int part)
//t << "H1 { text-align: center; border-width: thin none thin none;" << endl; //t << "H1 { text-align: center; border-width: thin none thin none;" << endl;
//t << " border-style : double; border-color : blue; padding-left : 1em; padding-right : 1em }" << endl; //t << " border-style : double; border-color : blue; padding-left : 1em; padding-right : 1em }" << endl;
t << replaceColorMarkers(substitute(defaultStyleSheet,"$doxygenversion",versionString)); t << replaceColorMarkers(substitute(ResourceMgr::instance().getAsString("doxygen.css"),"$doxygenversion",versionString));
endPlainFile(); endPlainFile();
Doxygen::indexList->addStyleSheetFile("doxygen.css"); Doxygen::indexList->addStyleSheetFile("doxygen.css");
} }
...@@ -3007,9 +2212,10 @@ void HtmlGenerator::writeSearchPage() ...@@ -3007,9 +2212,10 @@ void HtmlGenerator::writeSearchPage()
static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW"); static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW");
static bool disableIndex = Config_getBool("DISABLE_INDEX"); static bool disableIndex = Config_getBool("DISABLE_INDEX");
static QCString projectName = Config_getString("PROJECT_NAME"); static QCString projectName = Config_getString("PROJECT_NAME");
static QCString htmlOutput = Config_getString("HTML_OUTPUT");
// OPENSEARCH_PROVIDER { // OPENSEARCH_PROVIDER {
QCString configFileName = Config_getString("HTML_OUTPUT")+"/search-config.php"; QCString configFileName = htmlOutput+"/search_config.php";
QFile cf(configFileName); QFile cf(configFileName);
if (cf.open(IO_WriteOnly)) if (cf.open(IO_WriteOnly))
{ {
...@@ -3035,26 +2241,11 @@ void HtmlGenerator::writeSearchPage() ...@@ -3035,26 +2241,11 @@ void HtmlGenerator::writeSearchPage()
t << "</script>\n"; t << "</script>\n";
} }
QCString functionsFileName = Config_getString("HTML_OUTPUT")+"/search-functions.php"; ResourceMgr::instance().copyResource("search_functions.php",htmlOutput);
QFile ff(functionsFileName); ResourceMgr::instance().copyResource("search_opensearch.php",htmlOutput);
if (ff.open(IO_WriteOnly))
{
FTextStream t(&ff);
// Write stuff from search_functions.php source file...
t << search_functions_script;
}
QCString opensearchFileName = Config_getString("HTML_OUTPUT")+"/search-opensearch.php";
QFile of(opensearchFileName);
if (of.open(IO_WriteOnly))
{
FTextStream t(&of);
// Write stuff from search_opensearch.php source file...
t << search_opensearch_script;
}
// OPENSEARCH_PROVIDER } // OPENSEARCH_PROVIDER }
QCString fileName = Config_getString("HTML_OUTPUT")+"/search.php"; QCString fileName = htmlOutput+"/search.php";
QFile f(fileName); QFile f(fileName);
if (f.open(IO_WriteOnly)) if (f.open(IO_WriteOnly))
{ {
...@@ -3077,7 +2268,7 @@ void HtmlGenerator::writeSearchPage() ...@@ -3077,7 +2268,7 @@ void HtmlGenerator::writeSearchPage()
} }
t << "<script language=\"php\">\n"; t << "<script language=\"php\">\n";
t << "require_once \"search-functions.php\";\n"; t << "require_once \"search_functions.php\";\n";
t << "main();\n"; t << "main();\n";
t << "</script>\n"; t << "</script>\n";
...@@ -3091,12 +2282,12 @@ void HtmlGenerator::writeSearchPage() ...@@ -3091,12 +2282,12 @@ void HtmlGenerator::writeSearchPage()
writePageFooter(t,"Search","",""); writePageFooter(t,"Search","","");
} }
QCString scriptName = Config_getString("HTML_OUTPUT")+"/search/search.js"; QCString scriptName = htmlOutput+"/search/search.js";
QFile sf(scriptName); QFile sf(scriptName);
if (sf.open(IO_WriteOnly)) if (sf.open(IO_WriteOnly))
{ {
FTextStream t(&sf); FTextStream t(&sf);
t << extsearch_script; t << ResourceMgr::instance().getAsString("extsearch.js");
} }
else else
{ {
...@@ -3188,7 +2379,7 @@ void HtmlGenerator::writeExternalSearchPage() ...@@ -3188,7 +2379,7 @@ void HtmlGenerator::writeExternalSearchPage()
} }
if (!first) t << endl; if (!first) t << endl;
t << "};" << endl << endl; t << "};" << endl << endl;
t << extsearch_script; t << ResourceMgr::instance().getAsString("extsearch.js");
t << endl; t << endl;
t << "$(document).ready(function() {" << endl; t << "$(document).ready(function() {" << endl;
t << " var query = trim(getURLParameter('query'));" << endl; t << " var query = trim(getURLParameter('query'));" << endl;
......
(function(c){var a=c.scrollTo=function(f,e,d){c(window).scrollTo(f,e,d)};a.defaults={axis:"xy",duration:parseFloat(c.fn.jquery)>=1.3?0:1};a.window=function(d){return c(window)._scrollable()};c.fn._scrollable=function(){return this.map(function(){var e=this,d=!e.nodeName||c.inArray(e.nodeName.toLowerCase(),["iframe","#document","html","body"])!=-1;if(!d){return e}var f=(e.contentWindow||e).document||e.ownerDocument||e;return c.browser.safari||f.compatMode=="BackCompat"?f.body:f.documentElement})};c.fn.scrollTo=function(f,e,d){if(typeof e=="object"){d=e;e=0}if(typeof d=="function"){d={onAfter:d}}if(f=="max"){f=9000000000}d=c.extend({},a.defaults,d);e=e||d.speed||d.duration;d.queue=d.queue&&d.axis.length>1;if(d.queue){e/=2}d.offset=b(d.offset);d.over=b(d.over);return this._scrollable().each(function(){var l=this,j=c(l),k=f,i,g={},m=j.is("html,body");switch(typeof k){case"number":case"string":if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(k)){k=b(k);break}k=c(k,this);case"object":if(k.is||k.style){i=(k=c(k)).offset()}}c.each(d.axis.split(""),function(q,r){var s=r=="x"?"Left":"Top",u=s.toLowerCase(),p="scroll"+s,o=l[p],n=a.max(l,r);if(i){g[p]=i[u]+(m?0:o-j.offset()[u]);if(d.margin){g[p]-=parseInt(k.css("margin"+s))||0;g[p]-=parseInt(k.css("border"+s+"Width"))||0}g[p]+=d.offset[u]||0;if(d.over[u]){g[p]+=k[r=="x"?"width":"height"]()*d.over[u]}}else{var t=k[u];g[p]=t.slice&&t.slice(-1)=="%"?parseFloat(t)/100*n:t}if(/^\d+$/.test(g[p])){g[p]=g[p]<=0?0:Math.min(g[p],n)}if(!q&&d.queue){if(o!=g[p]){h(d.onAfterFirst)}delete g[p]}});h(d.onAfter);function h(n){j.animate(g,e,d.easing,n&&function(){n.call(this,f,d)})}}).end()};a.max=function(j,i){var h=i=="x"?"Width":"Height",e="scroll"+h;if(!c(j).is("html,body")){return j[e]-c(j)[h.toLowerCase()]()}var g="client"+h,f=j.ownerDocument.documentElement,d=j.ownerDocument.body;return Math.max(f[e],d[e])-Math.min(f[g],d[g])};function b(d){return typeof d=="object"?d:{top:d,left:d}}})(jQuery);
\ No newline at end of file
/*!
* jQuery JavaScript Library v1.7.1
* http://jquery.com/
*
* Copyright 2011, John Resig
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* Includes Sizzle.js
* http://sizzlejs.com/
* Copyright 2011, The Dojo Foundation
* Released under the MIT, BSD, and GPL Licenses.
*
* Date: Mon Nov 21 21:11:03 2011 -0500
*/
(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b4<b3;b4++){if((b9=arguments[b4])!=null){for(b2 in b9){b0=b5[b2];b1=b9[b2];if(b5===b1){continue}if(b8&&b1&&(bF.isPlainObject(b1)||(b6=bF.isArray(b1)))){if(b6){b6=false;b7=b0&&bF.isArray(b0)?b0:[]}else{b7=b0&&bF.isPlainObject(b0)?b0:{}}b5[b2]=bF.extend(b8,b7,b1)}else{if(b1!==L){b5[b2]=b1}}}}}return b5};bF.extend({noConflict:function(b0){if(bb.$===bF){bb.$=bH}if(b0&&bb.jQuery===bF){bb.jQuery=bU}return bF},isReady:false,readyWait:1,holdReady:function(b0){if(b0){bF.readyWait++}else{bF.ready(true)}},ready:function(b0){if((b0===true&&!--bF.readyWait)||(b0!==true&&!bF.isReady)){if(!av.body){return setTimeout(bF.ready,1)}bF.isReady=true;if(b0!==true&&--bF.readyWait>0){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b4<b5;){if(b6.apply(b3[b4++],b2)===false){break}}}}else{if(b0){for(b1 in b3){if(b6.call(b3[b1],b1,b3[b1])===false){break}}}else{for(;b4<b5;){if(b6.call(b3[b4],b4,b3[b4++])===false){break}}}}return b3},trim:bO?function(b0){return b0==null?"":bO.call(b0)}:function(b0){return b0==null?"":b0.toString().replace(bI,"").replace(bE,"")},makeArray:function(b3,b1){var b0=b1||[];if(b3!=null){var b2=bF.type(b3);if(b3.length==null||b2==="string"||b2==="function"||b2==="regexp"||bF.isWindow(b3)){bz.call(b0,b3)}else{bF.merge(b0,b3)}}return b0},inArray:function(b2,b3,b1){var b0;if(b3){if(bv){return bv.call(b3,b2,b1)}b0=b3.length;b1=b1?b1<0?Math.max(0,b0+b1):b1:0;for(;b1<b0;b1++){if(b1 in b3&&b3[b1]===b2){return b1}}}return -1},merge:function(b4,b2){var b3=b4.length,b1=0;if(typeof b2.length==="number"){for(var b0=b2.length;b1<b0;b1++){b4[b3++]=b2[b1]}}else{while(b2[b1]!==L){b4[b3++]=b2[b1++]}}b4.length=b3;return b4},grep:function(b1,b6,b0){var b2=[],b5;b0=!!b0;for(var b3=0,b4=b1.length;b3<b4;b3++){b5=!!b6(b1[b3],b3);if(b0!==b5){b2.push(b1[b3])}}return b2},map:function(b0,b7,b8){var b5,b6,b4=[],b2=0,b1=b0.length,b3=b0 instanceof bF||b1!==L&&typeof b1==="number"&&((b1>0&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b2<b1;b2++){b5=b7(b0[b2],b2,b8);if(b5!=null){b4[b4.length]=b5}}}else{for(b6 in b0){b5=b7(b0[b6],b6,b8);if(b5!=null){b4[b4.length]=b5}}}return b4.concat.apply([],b4)},guid:1,proxy:function(b4,b3){if(typeof b3==="string"){var b2=b4[b3];b3=b4;b4=b2}if(!bF.isFunction(b4)){return L}var b0=bK.call(arguments,2),b1=function(){return b4.apply(b3,b0.concat(bK.call(arguments)))};b1.guid=b4.guid=b4.guid||b1.guid||bF.guid++;return b1},access:function(b0,b8,b6,b2,b5,b7){var b1=b0.length;if(typeof b8==="object"){for(var b3 in b8){bF.access(b0,b3,b8[b3],b2,b5,b6)}return b0}if(b6!==L){b2=!b7&&b2&&bF.isFunction(b6);for(var b4=0;b4<b1;b4++){b5(b0[b4],b8,b2?b6.call(b0[b4],b4,b5(b0[b4],b8)):b6,b7)}return b0}return b1?b5(b0[0],b8):L},now:function(){return(new Date()).getTime()},uaMatch:function(b1){b1=b1.toLowerCase();var b0=by.exec(b1)||bR.exec(b1)||bQ.exec(b1)||b1.indexOf("compatible")<0&&bS.exec(b1)||[];return{browser:b0[1]||"",version:b0[2]||"0"}},sub:function(){function b0(b3,b4){return new b0.fn.init(b3,b4)}bF.extend(true,b0,this);b0.superclass=this;b0.fn=b0.prototype=this();b0.fn.constructor=b0;b0.sub=this.sub;b0.fn.init=function b2(b3,b4){if(b4&&b4 instanceof bF&&!(b4 instanceof b0)){b4=b0(b4)}return bF.fn.init.call(this,b3,b4,b1)};b0.fn.init.prototype=b0.fn;var b1=b0(av);return b0},browser:{}});bF.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(b1,b0){bx["[object "+b0+"]"]=b0.toLowerCase()});bV=bF.uaMatch(bX);if(bV.browser){bF.browser[bV.browser]=true;bF.browser.version=bV.version}if(bF.browser.webkit){bF.browser.safari=true}if(bM.test("\xA0")){bI=/^[\s\xA0]+/;bE=/[\s\xA0]+$/}bD=bF(av);if(av.addEventListener){e=function(){av.removeEventListener("DOMContentLoaded",e,false);bF.ready()}}else{if(av.attachEvent){e=function(){if(av.readyState==="complete"){av.detachEvent("onreadystatechange",e);bF.ready()}}}}function bw(){if(bF.isReady){return}try{av.documentElement.doScroll("left")}catch(b0){setTimeout(bw,1);return}bF.ready()}return bF})();var a2={};function X(e){var bv=a2[e]={},bw,bx;e=e.split(/\s+/);for(bw=0,bx=e.length;bw<bx;bw++){bv[e[bw]]=true}return bv}b.Callbacks=function(bw){bw=bw?(a2[bw]||X(bw)):{};var bB=[],bC=[],bx,by,bv,bz,bA,bE=function(bF){var bG,bJ,bI,bH,bK;for(bG=0,bJ=bF.length;bG<bJ;bG++){bI=bF[bG];bH=b.type(bI);if(bH==="array"){bE(bI)}else{if(bH==="function"){if(!bw.unique||!bD.has(bI)){bB.push(bI)}}}}},e=function(bG,bF){bF=bF||[];bx=!bw.memory||[bG,bF];by=true;bA=bv||0;bv=0;bz=bB.length;for(;bB&&bA<bz;bA++){if(bB[bA].apply(bG,bF)===false&&bw.stopOnFalse){bx=true;break}}by=false;if(bB){if(!bw.once){if(bC&&bC.length){bx=bC.shift();bD.fireWith(bx[0],bx[1])}}else{if(bx===true){bD.disable()}else{bB=[]}}}},bD={add:function(){if(bB){var bF=bB.length;bE(arguments);if(by){bz=bB.length}else{if(bx&&bx!==true){bv=bF;e(bx[0],bx[1])}}}return this},remove:function(){if(bB){var bF=arguments,bH=0,bI=bF.length;for(;bH<bI;bH++){for(var bG=0;bG<bB.length;bG++){if(bF[bH]===bB[bG]){if(by){if(bG<=bz){bz--;if(bG<=bA){bA--}}}bB.splice(bG--,1);if(bw.unique){break}}}}}return this},has:function(bG){if(bB){var bF=0,bH=bB.length;for(;bF<bH;bF++){if(bG===bB[bF]){return true}}}return false},empty:function(){bB=[];return this},disable:function(){bB=bC=bx=L;return this},disabled:function(){return !bB},lock:function(){bC=L;if(!bx||bx===true){bD.disable()}return this},locked:function(){return !bC},fireWith:function(bG,bF){if(bC){if(by){if(!bw.once){bC.push([bG,bF])}}else{if(!(bw.once&&bx)){e(bG,bF)}}}return this},fire:function(){bD.fireWith(this,arguments);return this},fired:function(){return !!bx}};return bD};var aJ=[].slice;b.extend({Deferred:function(by){var bx=b.Callbacks("once memory"),bw=b.Callbacks("once memory"),bv=b.Callbacks("memory"),e="pending",bA={resolve:bx,reject:bw,notify:bv},bC={done:bx.add,fail:bw.add,progress:bv.add,state:function(){return e},isResolved:bx.fired,isRejected:bw.fired,then:function(bE,bD,bF){bB.done(bE).fail(bD).progress(bF);return this},always:function(){bB.done.apply(bB,arguments).fail.apply(bB,arguments);return this},pipe:function(bF,bE,bD){return b.Deferred(function(bG){b.each({done:[bF,"resolve"],fail:[bE,"reject"],progress:[bD,"notify"]},function(bI,bL){var bH=bL[0],bK=bL[1],bJ;if(b.isFunction(bH)){bB[bI](function(){bJ=bH.apply(this,arguments);if(bJ&&b.isFunction(bJ.promise)){bJ.promise().then(bG.resolve,bG.reject,bG.notify)}else{bG[bK+"With"](this===bB?bG:this,[bJ])}})}else{bB[bI](bG[bK])}})}).promise()},promise:function(bE){if(bE==null){bE=bC}else{for(var bD in bC){bE[bD]=bC[bD]}}return bE}},bB=bC.promise({}),bz;for(bz in bA){bB[bz]=bA[bz].fire;bB[bz+"With"]=bA[bz].fireWith}bB.done(function(){e="resolved"},bw.disable,bv.lock).fail(function(){e="rejected"},bx.disable,bv.lock);if(by){by.call(bB,bB)}return bB},when:function(bA){var bx=aJ.call(arguments,0),bv=0,e=bx.length,bB=new Array(e),bw=e,by=e,bC=e<=1&&bA&&b.isFunction(bA.promise)?bA:b.Deferred(),bE=bC.promise();function bD(bF){return function(bG){bx[bF]=arguments.length>1?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv<e;bv++){if(bx[bv]&&bx[bv].promise&&b.isFunction(bx[bv].promise)){bx[bv].promise().then(bD(bv),bC.reject,bz(bv))
}else{--bw}}if(!bw){bC.resolveWith(bC,bx)}}else{if(bC!==bA){bC.resolveWith(bC,e?[bA]:[])}}return bE}});b.support=(function(){var bJ,bI,bF,bG,bx,bE,bA,bD,bz,bK,bB,by,bw,bv=av.createElement("div"),bH=av.documentElement;bv.setAttribute("className","t");bv.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav></:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="<div "+e+"><div></div></div><table "+e+" cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="<div style='width:4px;'></div>";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA<bz;bA++){delete bB[bv[bA]]}if(!(by?S:b.isEmptyObject)(bB)){return}}}if(!by){delete e[bw].data;if(!S(e[bw])){return}}if(b.support.deleteExpando||!e.setInterval){delete e[bw]}else{e[bw]=null}if(bD){if(b.support.deleteExpando){delete bx[bC]}else{if(bx.removeAttribute){bx.removeAttribute(bC)}else{bx[bC]=null}}}},_data:function(bv,e,bw){return b.data(bv,e,bw,true)},acceptData:function(bv){if(bv.nodeName){var e=b.noData[bv.nodeName.toLowerCase()];if(e){return !(e===true||bv.getAttribute("classid")!==e)}}return true}});b.fn.extend({data:function(by,bA){var bB,e,bw,bz=null;if(typeof by==="undefined"){if(this.length){bz=b.data(this[0]);if(this[0].nodeType===1&&!b._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var bx=0,bv=e.length;bx<bv;bx++){bw=e[bx].name;if(bw.indexOf("data-")===0){bw=b.camelCase(bw.substring(5));a5(this[0],bw,bz[bw])}}b._data(this[0],"parsedAttrs",true)}}return bz}else{if(typeof by==="object"){return this.each(function(){b.data(this,by)})}}bB=by.split(".");bB[1]=bB[1]?"."+bB[1]:"";if(bA===L){bz=this.triggerHandler("getData"+bB[1]+"!",[bB[0]]);if(bz===L&&this.length){bz=b.data(this[0],by);bz=a5(this[0],by,bz)}return bz===L&&bB[1]?this.data(bB[0]):bz}else{return this.each(function(){var bC=b(this),bD=[bB[0],bA];bC.triggerHandler("setData"+bB[1]+"!",bD);b.data(this,by,bA);bC.triggerHandler("changeData"+bB[1]+"!",bD)})}},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function a5(bx,bw,by){if(by===L&&bx.nodeType===1){var bv="data-"+bw.replace(aA,"-$1").toLowerCase();by=bx.getAttribute(bv);if(typeof by==="string"){try{by=by==="true"?true:by==="false"?false:by==="null"?null:b.isNumeric(by)?parseFloat(by):aS.test(by)?b.parseJSON(by):by}catch(bz){}b.data(bx,bw,by)}else{by=L}}return by}function S(bv){for(var e in bv){if(e==="data"&&b.isEmptyObject(bv[e])){continue}if(e!=="toJSON"){return false}}return true}function bi(by,bx,bA){var bw=bx+"defer",bv=bx+"queue",e=bx+"mark",bz=b._data(by,bw);if(bz&&(bA==="queue"||!b._data(by,bv))&&(bA==="mark"||!b._data(by,e))){setTimeout(function(){if(!b._data(by,bv)&&!b._data(by,e)){b.removeData(by,bw,true);bz.fire()}},0)}}b.extend({_mark:function(bv,e){if(bv){e=(e||"fx")+"mark";b._data(bv,e,(b._data(bv,e)||0)+1)}},_unmark:function(by,bx,bv){if(by!==true){bv=bx;bx=by;by=false}if(bx){bv=bv||"fx";var e=bv+"mark",bw=by?0:((b._data(bx,e)||1)-1);if(bw){b._data(bx,e,bw)}else{b.removeData(bx,e,true);bi(bx,bv,"mark")}}},queue:function(bv,e,bx){var bw;if(bv){e=(e||"fx")+"queue";bw=b._data(bv,e);if(bx){if(!bw||b.isArray(bx)){bw=b._data(bv,e,b.makeArray(bx))}else{bw.push(bx)}}return bw||[]}},dequeue:function(by,bx){bx=bx||"fx";var bv=b.queue(by,bx),bw=bv.shift(),e={};if(bw==="inprogress"){bw=bv.shift()}if(bw){if(bx==="fx"){bv.unshift("inprogress")}b._data(by,bx+".run",e);bw.call(by,function(){b.dequeue(by,bx)},e)}if(!bv.length){b.removeData(by,bx+"queue "+bx+".run",true);bi(by,bx,"queue")}}});b.fn.extend({queue:function(e,bv){if(typeof e!=="string"){bv=e;e="fx"}if(bv===L){return b.queue(this[0],e)}return this.each(function(){var bw=b.queue(this,e,bv);if(e==="fx"&&bw[0]!=="inprogress"){b.dequeue(this,e)}})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(bv,e){bv=b.fx?b.fx.speeds[bv]||bv:bv;e=e||"fx";return this.queue(e,function(bx,bw){var by=setTimeout(bx,bv);bw.stop=function(){clearTimeout(by)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(bD,bw){if(typeof bD!=="string"){bw=bD;bD=L}bD=bD||"fx";var e=b.Deferred(),bv=this,by=bv.length,bB=1,bz=bD+"defer",bA=bD+"queue",bC=bD+"mark",bx;function bE(){if(!(--bB)){e.resolveWith(bv,[bv])}}while(by--){if((bx=b.data(bv[by],bz,L,true)||(b.data(bv[by],bA,L,true)||b.data(bv[by],bC,L,true))&&b.data(bv[by],bz,b.Callbacks("once memory"),true))){bB++;bx.add(bE)}}bE();return e.promise()}});var aP=/[\n\t\r]/g,af=/\s+/,aU=/\r/g,g=/^(?:button|input)$/i,D=/^(?:button|input|object|select|textarea)$/i,l=/^a(?:rea)?$/i,ao=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,F=b.support.getSetAttribute,be,aY,aF;b.fn.extend({attr:function(e,bv){return b.access(this,e,bv,true,b.attr)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,bv){return b.access(this,e,bv,true,b.prop)},removeProp:function(e){e=b.propFix[e]||e;return this.each(function(){try{this[e]=L;delete this[e]}catch(bv){}})},addClass:function(by){var bA,bw,bv,bx,bz,bB,e;if(b.isFunction(by)){return this.each(function(bC){b(this).addClass(by.call(this,bC,this.className))})}if(by&&typeof by==="string"){bA=by.split(af);for(bw=0,bv=this.length;bw<bv;bw++){bx=this[bw];if(bx.nodeType===1){if(!bx.className&&bA.length===1){bx.className=by}else{bz=" "+bx.className+" ";for(bB=0,e=bA.length;bB<e;bB++){if(!~bz.indexOf(" "+bA[bB]+" ")){bz+=bA[bB]+" "}}bx.className=b.trim(bz)}}}}return this},removeClass:function(bz){var bA,bw,bv,by,bx,bB,e;if(b.isFunction(bz)){return this.each(function(bC){b(this).removeClass(bz.call(this,bC,this.className))})}if((bz&&typeof bz==="string")||bz===L){bA=(bz||"").split(af);for(bw=0,bv=this.length;bw<bv;bw++){by=this[bw];if(by.nodeType===1&&by.className){if(bz){bx=(" "+by.className+" ").replace(aP," ");for(bB=0,e=bA.length;bB<e;bB++){bx=bx.replace(" "+bA[bB]+" "," ")}by.className=b.trim(bx)}else{by.className=""}}}}return this},toggleClass:function(bx,bv){var bw=typeof bx,e=typeof bv==="boolean";if(b.isFunction(bx)){return this.each(function(by){b(this).toggleClass(bx.call(this,by,this.className,bv),bv)})}return this.each(function(){if(bw==="string"){var bA,bz=0,by=b(this),bB=bv,bC=bx.split(af);while((bA=bC[bz++])){bB=e?bB:!by.hasClass(bA);by[bB?"addClass":"removeClass"](bA)}}else{if(bw==="undefined"||bw==="boolean"){if(this.className){b._data(this,"__className__",this.className)}this.className=this.className||bx===false?"":b._data(this,"__className__")||""}}})},hasClass:function(e){var bx=" "+e+" ",bw=0,bv=this.length;for(;bw<bv;bw++){if(this[bw].nodeType===1&&(" "+this[bw].className+" ").replace(aP," ").indexOf(bx)>-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv<bz;bv++){bx=bC[bv];if(bx.selected&&(b.support.optDisabled?!bx.disabled:bx.getAttribute("disabled")===null)&&(!bx.parentNode.disabled||!b.nodeName(bx.parentNode,"optgroup"))){bA=b(bx).val();if(bw){return bA}bB.push(bA)}}if(bw&&!bB.length&&bC.length){return b(bC[by]).val()}return bB},set:function(bv,bw){var e=b.makeArray(bw);b(bv).find("option").each(function(){this.selected=b.inArray(b(this).val(),e)>=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;
if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw<e;bw++){bv=bA[bw];if(bv){by=b.propFix[bv]||bv;b.attr(bx,bv,"");bx.removeAttribute(F?bv:by);if(ao.test(bv)&&by in bx){bx[by]=false}}}}},attrHooks:{type:{set:function(e,bv){if(g.test(e.nodeName)&&e.parentNode){b.error("type property can't be changed")}else{if(!b.support.radioValue&&bv==="radio"&&b.nodeName(e,"input")){var bw=e.value;e.setAttribute("type",bv);if(bw){e.value=bw}return bv}}}},value:{get:function(bv,e){if(be&&b.nodeName(bv,"button")){return be.get(bv,e)}return e in bv?bv.value:null},set:function(bv,bw,e){if(be&&b.nodeName(bv,"button")){return be.set(bv,bw,e)}bv.value=bw}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(bz,bx,bA){var bw,e,by,bv=bz.nodeType;if(!bz||bv===3||bv===8||bv===2){return}by=bv!==1||!b.isXMLDoc(bz);if(by){bx=b.propFix[bx]||bx;e=b.propHooks[bx]}if(bA!==L){if(e&&"set" in e&&(bw=e.set(bz,bA,bx))!==L){return bw}else{return(bz[bx]=bA)}}else{if(e&&"get" in e&&(bw=e.get(bz,bx))!==null){return bw}else{return bz[bx]}}},propHooks:{tabIndex:{get:function(bv){var e=bv.getAttributeNode("tabindex");return e&&e.specified?parseInt(e.value,10):D.test(bv.nodeName)||l.test(bv.nodeName)&&bv.href?0:L}}}});b.attrHooks.tabindex=b.propHooks.tabIndex;aY={get:function(bv,e){var bx,bw=b.prop(bv,e);return bw===true||typeof bw!=="boolean"&&(bx=bv.getAttributeNode(e))&&bx.nodeValue!==false?e.toLowerCase():L},set:function(bv,bx,e){var bw;if(bx===false){b.removeAttr(bv,e)}else{bw=b.propFix[e]||e;if(bw in bv){bv[bw]=true}bv.setAttribute(e,e.toLowerCase())}return e}};if(!F){aF={name:true,id:true};be=b.valHooks.button={get:function(bw,bv){var e;e=bw.getAttributeNode(bv);return e&&(aF[bv]?e.nodeValue!=="":e.specified)?e.nodeValue:L},set:function(bw,bx,bv){var e=bw.getAttributeNode(bv);if(!e){e=av.createAttribute(bv);bw.setAttributeNode(e)}return(e.nodeValue=bx+"")}};b.attrHooks.tabindex.set=be.set;b.each(["width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{set:function(bw,bx){if(bx===""){bw.setAttribute(e,"auto");return bx}}})});b.attrHooks.contenteditable={get:be.get,set:function(bv,bw,e){if(bw===""){bw="false"}be.set(bv,bw,e)}}}if(!b.support.hrefNormalized){b.each(["href","src","width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{get:function(bx){var bw=bx.getAttribute(e,2);return bw===null?L:bw}})})}if(!b.support.style){b.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||L},set:function(e,bv){return(e.style.cssText=""+bv)}}}if(!b.support.optSelected){b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(bv){var e=bv.parentNode;if(e){e.selectedIndex;if(e.parentNode){e.parentNode.selectedIndex}}return null}})}if(!b.support.enctype){b.propFix.enctype="encoding"}if(!b.support.checkOn){b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}})}b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,bv){if(b.isArray(bv)){return(e.checked=b.inArray(b(e).val(),bv)>=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI<bC.length;bI++){bH=n.exec(bC[bI])||[];bF=bH[1];e=(bH[2]||"").split(".").sort();bE=b.event.special[bF]||{};bF=(by?bE.delegateType:bE.bindType)||bF;bE=b.event.special[bF]||{};bG=b.extend({type:bF,origType:bH[1],data:bA,handler:bJ,guid:bJ.guid,selector:by,quick:Y(by),namespace:e.join(".")},bv);bw=bK[bF];if(!bw){bw=bK[bF]=[];bw.delegateCount=0;if(!bE.setup||bE.setup.call(bx,bA,e,bB)===false){if(bx.addEventListener){bx.addEventListener(bF,bB,false)}else{if(bx.attachEvent){bx.attachEvent("on"+bF,bB)}}}}if(bE.add){bE.add.call(bx,bG);if(!bG.handler.guid){bG.handler.guid=bJ.guid}}if(by){bw.splice(bw.delegateCount++,0,bG)}else{bw.push(bG)}b.event.global[bF]=true}bx=null},global:{},remove:function(bJ,bE,bv,bH,bB){var bI=b.hasData(bJ)&&b._data(bJ),bF,bx,bz,bL,bC,bA,bG,bw,by,bK,bD,e;if(!bI||!(bw=bI.events)){return}bE=b.trim(bt(bE||"")).split(" ");for(bF=0;bF<bE.length;bF++){bx=n.exec(bE[bF])||[];bz=bL=bx[1];bC=bx[2];if(!bz){for(bz in bw){b.event.remove(bJ,bz+bE[bF],bv,bH,true)}continue}by=b.event.special[bz]||{};bz=(bH?by.delegateType:by.bindType)||bz;bD=bw[bz]||[];bA=bD.length;bC=bC?new RegExp("(^|\\.)"+bC.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(bG=0;bG<bD.length;bG++){e=bD[bG];if((bB||bL===e.origType)&&(!bv||bv.guid===e.guid)&&(!bC||bC.test(e.namespace))&&(!bH||bH===e.selector||bH==="**"&&e.selector)){bD.splice(bG--,1);if(e.selector){bD.delegateCount--}if(by.remove){by.remove.call(bJ,e)}}}if(bD.length===0&&bA!==bD.length){if(!by.teardown||by.teardown.call(bJ,bC)===false){b.removeEvent(bJ,bz,bI.handle)}delete bw[bz]}}if(b.isEmptyObject(bw)){bK=bI.handle;if(bK){bK.elem=null}b.removeData(bJ,["events","handle"],true)}},customEvent:{getData:true,setData:true,changeData:true},trigger:function(bv,bD,bA,bJ){if(bA&&(bA.nodeType===3||bA.nodeType===8)){return}var bG=bv.type||bv,bx=[],e,bw,bC,bH,bz,by,bF,bE,bB,bI;if(T.test(bG+b.event.triggered)){return}if(bG.indexOf("!")>=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bC<bB.length&&!bv.isPropagationStopped();bC++){bH=bB[bC][0];bv.type=bB[bC][1];bE=(b._data(bH,"events")||{})[bv.type]&&b._data(bH,"handle");if(bE){bE.apply(bH,bD)}bE=by&&bH[by];if(bE&&b.acceptData(bH)&&bE.apply(bH,bD)===false){bv.preventDefault()}}bv.type=bG;if(!bJ&&!bv.isDefaultPrevented()){if((!bF._default||bF._default.apply(bA.ownerDocument,bD)===false)&&!(bG==="click"&&b.nodeName(bA,"a"))&&b.acceptData(bA)){if(by&&bA[bG]&&((bG!=="focus"&&bG!=="blur")||bv.target.offsetWidth!==0)&&!b.isWindow(bA)){bz=bA[by];if(bz){bA[by]=null}b.event.triggered=bG;bA[bG]();b.event.triggered=L;if(bz){bA[by]=bz}}}}return bv.result},dispatch:function(e){e=b.event.fix(e||bb.event);var bz=((b._data(this,"events")||{})[e.type]||[]),bA=bz.delegateCount,bG=[].slice.call(arguments,0),by=!e.exclusive&&!e.namespace,bH=[],bC,bB,bK,bx,bF,bE,bv,bD,bI,bw,bJ;bG[0]=e;e.delegateTarget=this;if(bA&&!e.target.disabled&&!(e.button&&e.type==="click")){bx=b(this);bx.context=this.ownerDocument||this;for(bK=e.target;bK!=this;bK=bK.parentNode||this){bE={};bD=[];bx[0]=bK;for(bC=0;bC<bA;bC++){bI=bz[bC];bw=bI.selector;if(bE[bw]===L){bE[bw]=(bI.quick?j(bK,bI.quick):bx.is(bw))}if(bE[bw]){bD.push(bI)}}if(bD.length){bH.push({elem:bK,matches:bD})}}}if(bz.length>bA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC<bH.length&&!e.isPropagationStopped();bC++){bv=bH[bC];e.currentTarget=bv.elem;for(bB=0;bB<bv.matches.length&&!e.isImmediatePropagationStopped();bB++){bI=bv.matches[bB];if(by||(!e.namespace&&!bI.namespace)||e.namespace_re&&e.namespace_re.test(bI.namespace)){e.data=bI.data;e.handleObj=bI;bF=((b.event.special[bI.origType]||{}).handle||bI.handler).apply(bv.elem,bG);if(bF!==L){e.result=bF;if(bF===false){e.preventDefault();e.stopPropagation()}}}}}return e.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(bv,e){if(bv.which==null){bv.which=e.charCode!=null?e.charCode:e.keyCode}return bv}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(bx,bw){var by,bz,e,bv=bw.button,bA=bw.fromElement;if(bx.pageX==null&&bw.clientX!=null){by=bx.target.ownerDocument||av;bz=by.documentElement;e=by.body;bx.pageX=bw.clientX+(bz&&bz.scrollLeft||e&&e.scrollLeft||0)-(bz&&bz.clientLeft||e&&e.clientLeft||0);bx.pageY=bw.clientY+(bz&&bz.scrollTop||e&&e.scrollTop||0)-(bz&&bz.clientTop||e&&e.clientTop||0)}if(!bx.relatedTarget&&bA){bx.relatedTarget=bA===bx.target?bw.toElement:bA}if(!bx.which&&bv!==L){bx.which=(bv&1?1:(bv&2?3:(bv&4?2:0)))}return bx}},fix:function(bw){if(bw[b.expando]){return bw}var bv,bz,e=bw,bx=b.event.fixHooks[bw.type]||{},by=bx.props?this.props.concat(bx.props):this.props;bw=b.Event(e);for(bv=by.length;bv;){bz=by[--bv];bw[bz]=e[bz]}if(!bw.target){bw.target=e.srcElement||av}if(bw.target.nodeType===3){bw.target=bw.target.parentNode}if(bw.metaKey===L){bw.metaKey=bw.ctrlKey}return bx.filter?bx.filter(bw,e):bw},special:{ready:{setup:b.bindReady},load:{noBubble:true},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(bw,bv,e){if(b.isWindow(this)){this.onbeforeunload=e}},teardown:function(bv,e){if(this.onbeforeunload===e){this.onbeforeunload=null}}}},simulate:function(bw,by,bx,bv){var bz=b.extend(new b.Event(),bx,{type:bw,isSimulated:true,originalEvent:{}});if(bv){b.event.trigger(bz,null,by)}else{b.event.dispatch.call(by,bz)}if(bz.isDefaultPrevented()){bx.preventDefault()}}};b.event.handle=b.event.dispatch;b.removeEvent=av.removeEventListener?function(bv,e,bw){if(bv.removeEventListener){bv.removeEventListener(e,bw,false)}}:function(bv,e,bw){if(bv.detachEvent){bv.detachEvent("on"+e,bw)}};b.Event=function(bv,e){if(!(this instanceof b.Event)){return new b.Event(bv,e)}if(bv&&bv.type){this.originalEvent=bv;this.type=bv.type;this.isDefaultPrevented=(bv.defaultPrevented||bv.returnValue===false||bv.getPreventDefault&&bv.getPreventDefault())?i:bk}else{this.type=bv}if(e){b.extend(this,e)}this.timeStamp=bv&&bv.timeStamp||b.now();this[b.expando]=true};function bk(){return false}function i(){return true}b.Event.prototype={preventDefault:function(){this.isDefaultPrevented=i;var bv=this.originalEvent;if(!bv){return}if(bv.preventDefault){bv.preventDefault()}else{bv.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=i;var bv=this.originalEvent;if(!bv){return}if(bv.stopPropagation){bv.stopPropagation()}bv.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=i;this.stopPropagation()},isDefaultPrevented:bk,isPropagationStopped:bk,isImmediatePropagationStopped:bk};b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(bv,e){b.event.special[bv]={delegateType:e,bindType:e,handle:function(bz){var bB=this,bA=bz.relatedTarget,by=bz.handleObj,bw=by.selector,bx;if(!bA||(bA!==bB&&!b.contains(bB,bA))){bz.type=by.origType;bx=by.handler.apply(this,arguments);bz.type=e}return bx}}});if(!b.support.submitBubbles){b.event.special.submit={setup:function(){if(b.nodeName(this,"form")){return false
}b.event.add(this,"click._submit keypress._submit",function(bx){var bw=bx.target,bv=b.nodeName(bw,"input")||b.nodeName(bw,"button")?bw.form:L;if(bv&&!bv._submit_attached){b.event.add(bv,"submit._submit",function(e){if(this.parentNode&&!e.isTrigger){b.event.simulate("submit",this.parentNode,e,true)}});bv._submit_attached=true}})},teardown:function(){if(b.nodeName(this,"form")){return false}b.event.remove(this,"._submit")}}}if(!b.support.changeBubbles){b.event.special.change={setup:function(){if(bd.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio"){b.event.add(this,"propertychange._change",function(e){if(e.originalEvent.propertyName==="checked"){this._just_changed=true}});b.event.add(this,"click._change",function(e){if(this._just_changed&&!e.isTrigger){this._just_changed=false;b.event.simulate("change",this,e,true)}})}return false}b.event.add(this,"beforeactivate._change",function(bw){var bv=bw.target;if(bd.test(bv.nodeName)&&!bv._change_attached){b.event.add(bv,"change._change",function(e){if(this.parentNode&&!e.isSimulated&&!e.isTrigger){b.event.simulate("change",this.parentNode,e,true)}});bv._change_attached=true}})},handle:function(bv){var e=bv.target;if(this!==e||bv.isSimulated||bv.isTrigger||(e.type!=="radio"&&e.type!=="checkbox")){return bv.handleObj.handler.apply(this,arguments)}},teardown:function(){b.event.remove(this,"._change");return bd.test(this.nodeName)}}}if(!b.support.focusinBubbles){b.each({focus:"focusin",blur:"focusout"},function(bx,e){var bv=0,bw=function(by){b.event.simulate(e,by.target,b.event.fix(by),true)};b.event.special[e]={setup:function(){if(bv++===0){av.addEventListener(bx,bw,true)}},teardown:function(){if(--bv===0){av.removeEventListener(bx,bw,true)}}}})}b.fn.extend({on:function(bw,e,bz,by,bv){var bA,bx;if(typeof bw==="object"){if(typeof e!=="string"){bz=e;e=L}for(bx in bw){this.on(bx,e,bz,bw[bx],bv)}return this}if(bz==null&&by==null){by=e;bz=e=L}else{if(by==null){if(typeof e==="string"){by=bz;bz=L}else{by=bz;bz=e;e=L}}}if(by===false){by=bk}else{if(!by){return this}}if(bv===1){bA=by;by=function(bB){b().off(bB);return bA.apply(this,arguments)};by.guid=bA.guid||(bA.guid=b.guid++)}return this.each(function(){b.event.add(this,bw,by,bz,e)})},one:function(bv,e,bx,bw){return this.on.call(this,bv,e,bx,bw,1)},off:function(bw,e,by){if(bw&&bw.preventDefault&&bw.handleObj){var bv=bw.handleObj;b(bw.delegateTarget).off(bv.namespace?bv.type+"."+bv.namespace:bv.type,bv.selector,bv.handler);return this}if(typeof bw==="object"){for(var bx in bw){this.off(bx,e,bw[bx])}return this}if(e===false||typeof e==="function"){by=e;e=L}if(by===false){by=bk}return this.each(function(){b.event.remove(this,bw,by,e)})},bind:function(e,bw,bv){return this.on(e,null,bw,bv)},unbind:function(e,bv){return this.off(e,null,bv)},live:function(e,bw,bv){b(this.context).on(e,this.selector,bw,bv);return this},die:function(e,bv){b(this.context).off(e,this.selector||"**",bv);return this},delegate:function(e,bv,bx,bw){return this.on(bv,e,bx,bw)},undelegate:function(e,bv,bw){return arguments.length==1?this.off(e,"**"):this.off(bv,e,bw)},trigger:function(e,bv){return this.each(function(){b.event.trigger(e,bv,this)})},triggerHandler:function(e,bv){if(this[0]){return b.event.trigger(e,bv,this[0],true)}},toggle:function(bx){var bv=arguments,e=bx.guid||b.guid++,bw=0,by=function(bz){var bA=(b._data(this,"lastToggle"+bx.guid)||0)%bw;b._data(this,"lastToggle"+bx.guid,bA+1);bz.preventDefault();return bv[bA].apply(this,arguments)||false};by.guid=e;while(bw<bv.length){bv[bw++].guid=e}return this.click(by)},hover:function(e,bv){return this.mouseenter(e).mouseleave(bv||e)}});b.each(("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu").split(" "),function(bv,e){b.fn[e]=function(bx,bw){if(bw==null){bw=bx;bx=null}return arguments.length>0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}});
/*!
* Sizzle CSS Selector Engine
* Copyright 2011, The Dojo Foundation
* Released under the MIT, BSD, and GPL Licenses.
* More information: http://sizzlejs.com/
*/
(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e<bR.length;e++){if(bR[e]===bR[e-1]){bR.splice(e--,1)}}}}return bR};by.matches=function(e,bR){return by(e,null,null,bR)};by.matchesSelector=function(e,bR){return by(bR,null,null,[e]).length>0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS<bU;bS++){bV=bE.order[bS];if((bT=bE.leftMatch[bV].exec(bX))){bR=bT[1];bT.splice(1,1);if(bR.substr(bR.length-1)!=="\\"){bT[1]=(bT[1]||"").replace(bK,"");bW=bE.find[bV](bT,e,bY);if(bW!=null){bX=bX.replace(bE.match[bV],"");break}}}}if(!bW){bW=typeof e.getElementsByTagName!=="undefined"?e.getElementsByTagName("*"):[]}return{set:bW,expr:bX}};by.filter=function(b1,b0,b4,bU){var bW,e,bZ,b6,b3,bR,bT,bV,b2,bS=b1,b5=[],bY=b0,bX=b0&&b0[0]&&by.isXML(b0[0]);while(b1&&b0.length){for(bZ in bE.filter){if((bW=bE.leftMatch[bZ].exec(b1))!=null&&bW[2]){bR=bE.filter[bZ];bT=bW[1];e=false;bW.splice(1,1);if(bT.substr(bT.length-1)==="\\"){continue}if(bY===b5){b5=[]}if(bE.preFilter[bZ]){bW=bE.preFilter[bZ](bW,bY,b4,b5,bU,bX);if(!bW){e=b6=true}else{if(bW===true){continue}}}if(bW){for(bV=0;(b3=bY[bV])!=null;bV++){if(b3){b6=bR(b3,bW,bV,bY);b2=bU^b6;if(b4&&b6!=null){if(b2){e=true}else{bY[bV]=false}}else{if(b2){b5.push(b3);e=true}}}}}if(b6!==L){if(!b4){bY=b5}b1=b1.replace(bE.match[bZ],"");if(!e){return[]}break}}}if(b1===bS){if(e==null){by.error(b1)}else{break}}bS=b1}return bY};by.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};var bw=by.getText=function(bU){var bS,bT,e=bU.nodeType,bR="";if(e){if(e===1||e===9){if(typeof bU.textContent==="string"){return bU.textContent}else{if(typeof bU.innerText==="string"){return bU.innerText.replace(bO,"")}else{for(bU=bU.firstChild;bU;bU=bU.nextSibling){bR+=bw(bU)}}}}else{if(e===3||e===4){return bU.nodeValue}}}else{for(bS=0;(bT=bU[bS]);bS++){if(bT.nodeType!==8){bR+=bw(bT)}}}return bR};var bE=by.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")},type:function(e){return e.getAttribute("type")}},relative:{"+":function(bW,bR){var bT=typeof bR==="string",bV=bT&&!bQ.test(bR),bX=bT&&!bV;if(bV){bR=bR.toLowerCase()}for(var bS=0,e=bW.length,bU;bS<e;bS++){if((bU=bW[bS])){while((bU=bU.previousSibling)&&bU.nodeType!==1){}bW[bS]=bX||bU&&bU.nodeName.toLowerCase()===bR?bU||false:bU===bR}}if(bX){by.filter(bR,bW,true)}},">":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS<e;bS++){bV=bW[bS];if(bV){var bT=bV.parentNode;bW[bS]=bT.nodeName.toLowerCase()===bR?bT:false}}}else{for(;bS<e;bS++){bV=bW[bS];if(bV){bW[bS]=bU?bV.parentNode:bV.parentNode===bR}}if(bU){by.filter(bR,bW,true)}}},"":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("parentNode",bR,bS,bT,bU,bV)},"~":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("previousSibling",bR,bS,bT,bU,bV)}},find:{ID:function(bR,bS,bT){if(typeof bS.getElementById!=="undefined"&&!bT){var e=bS.getElementById(bR[1]);return e&&e.parentNode?[e]:[]}},NAME:function(bS,bV){if(typeof bV.getElementsByName!=="undefined"){var bR=[],bU=bV.getElementsByName(bS[1]);for(var bT=0,e=bU.length;bT<e;bT++){if(bU[bT].getAttribute("name")===bS[1]){bR.push(bU[bT])}}return bR.length===0?null:bR}},TAG:function(e,bR){if(typeof bR.getElementsByTagName!=="undefined"){return bR.getElementsByTagName(e[1])}}},preFilter:{CLASS:function(bT,bR,bS,e,bW,bX){bT=" "+bT[1].replace(bK,"")+" ";if(bX){return bT}for(var bU=0,bV;(bV=bR[bU])!=null;bU++){if(bV){if(bW^(bV.className&&(" "+bV.className+" ").replace(/[\t\n\r]/g," ").indexOf(bT)>=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1
},lt:function(bS,bR,e){return bR<e[3]-0},gt:function(bS,bR,e){return bR>e[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV<bU;bV++){if(bT[bV]===bS){return false}}return true}else{by.error(e)}}}},CHILD:function(bS,bU){var bT,b0,bW,bZ,e,bV,bY,bX=bU[1],bR=bS;switch(bX){case"only":case"first":while((bR=bR.previousSibling)){if(bR.nodeType===1){return false}}if(bX==="first"){return true}bR=bS;case"last":while((bR=bR.nextSibling)){if(bR.nodeType===1){return false}}return true;case"nth":bT=bU[2];b0=bU[3];if(bT===1&&b0===0){return true}bW=bU[0];bZ=bS.parentNode;if(bZ&&(bZ[bC]!==bW||!bS.nodeIndex)){bV=0;for(bR=bZ.firstChild;bR;bR=bR.nextSibling){if(bR.nodeType===1){bR.nodeIndex=++bV}}bZ[bC]=bW}bY=bS.nodeIndex-b0;if(bT===0){return bY===0}else{return(bY%bT===0&&bY/bT>=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS<e;bS++){bR.push(bU[bS])}}else{for(;bU[bS];bS++){bR.push(bU[bS])}}}return bR}}var bJ,bG;if(av.documentElement.compareDocumentPosition){bJ=function(bR,e){if(bR===e){bB=true;return 0}if(!bR.compareDocumentPosition||!e.compareDocumentPosition){return bR.compareDocumentPosition?-1:1}return bR.compareDocumentPosition(e)&4?-1:1}}else{bJ=function(bY,bX){if(bY===bX){bB=true;return 0}else{if(bY.sourceIndex&&bX.sourceIndex){return bY.sourceIndex-bX.sourceIndex}}var bV,bR,bS=[],e=[],bU=bY.parentNode,bW=bX.parentNode,bZ=bU;if(bU===bW){return bG(bY,bX)}else{if(!bU){return -1}else{if(!bW){return 1}}}while(bZ){bS.unshift(bZ);bZ=bZ.parentNode}bZ=bW;while(bZ){e.unshift(bZ);bZ=bZ.parentNode}bV=bS.length;bR=e.length;for(var bT=0;bT<bV&&bT<bR;bT++){if(bS[bT]!==e[bT]){return bG(bS[bT],e[bT])}}return bT===bV?bG(bY,e[bT],-1):bG(bS[bT],bX,1)};bG=function(bR,e,bS){if(bR===e){return bS}var bT=bR.nextSibling;while(bT){if(bT===e){return -1}bT=bT.nextSibling}return 1}}(function(){var bR=av.createElement("div"),bS="script"+(new Date()).getTime(),e=av.documentElement;bR.innerHTML="<a name='"+bS+"'/>";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="<p class='TEST'></p>";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1&&!bY){e[bC]=bV;e.sizset=bT}if(e.nodeName.toLowerCase()===bW){bU=e;break}e=e[bR]}bZ[bT]=bU}}}function bN(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1){if(!bY){e[bC]=bV;e.sizset=bT}if(typeof bW!=="string"){if(e===bW){bU=true;break}}else{if(by.filter(bW,[e]).length>0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT<bR;bT++){by(bS,bY[bT],bX,bW)}return by.filter(bU,bX)};by.attr=b.attr;by.selectors.attrMap={};b.find=by;b.expr=by.selectors;b.expr[":"]=b.expr.filters;b.unique=by.uniqueSort;b.text=by.getText;b.isXMLDoc=by.isXML;b.contains=by.contains})();var ab=/Until$/,aq=/^(?:parents|prevUntil|prevAll)/,a9=/,/,bp=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,H=b.expr.match.POS,ay={children:true,contents:true,next:true,prev:true};b.fn.extend({find:function(e){var bw=this,by,bv;if(typeof e!=="string"){return b(e).filter(function(){for(by=0,bv=bw.length;by<bv;by++){if(b.contains(bw[by],this)){return true}}})}var bx=this.pushStack("","find",e),bA,bB,bz;for(by=0,bv=this.length;by<bv;by++){bA=bx.length;b.find(e,this[by],bx);if(by>0){for(bB=bA;bB<bx.length;bB++){for(bz=0;bz<bA;bz++){if(bx[bz]===bx[bB]){bx.splice(bB--,1);break}}}}}return bx},has:function(bv){var e=b(bv);return this.filter(function(){for(var bx=0,bw=e.length;bx<bw;bx++){if(b.contains(this,e[bx])){return true}}})},not:function(e){return this.pushStack(aG(this,e,false),"not",e)},filter:function(e){return this.pushStack(aG(this,e,true),"filter",e)},is:function(e){return !!e&&(typeof e==="string"?H.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw<by.length;bw++){if(b(bz).is(by[bw])){bv.push({selector:by[bw],elem:bz,level:bB})}}bz=bz.parentNode;bB++}return bv}var bA=H.test(by)||typeof by!=="string"?b(by,bx||this.context):0;for(bw=0,e=this.length;bw<e;bw++){bz=this[bw];while(bz){if(bA?bA.index(bz)>-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/<tbody/i,W=/<|&#?\w+;/,ae=/<(?:script|style)/i,O=/<(?:script|object|embed|option|style)/i,ah=new RegExp("<(?:"+aR+")","i"),o=/checked\s*(?:[^=]|=\s*.checked.)/i,bm=/\/(java|ecma)script/i,aN=/^\s*<!(?:\[CDATA\[|\-\-)/,ax={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},ac=a(av);
ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div<div>","</div>"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1></$2>");try{for(var bw=0,bv=this.length;bw<bv;bw++){if(this[bw].nodeType===1){b.cleanData(this[bw].getElementsByTagName("*"));this[bw].innerHTML=bx}}}catch(by){this.empty().append(bx)}}else{if(b.isFunction(bx)){this.each(function(bz){var e=b(this);e.html(bx.call(this,bz,e.html()))})}else{this.empty().append(bx)}}}return this},replaceWith:function(e){if(this[0]&&this[0].parentNode){if(b.isFunction(e)){return this.each(function(bx){var bw=b(this),bv=bw.html();bw.replaceWith(e.call(this,bx,bv))})}if(typeof e!=="string"){e=b(e).detach()}return this.each(function(){var bw=this.nextSibling,bv=this.parentNode;b(this).remove();if(bw){b(bw).before(e)}else{b(bv).append(e)}})}else{return this.length?this.pushStack(b(b.isFunction(e)?e():e),"replaceWith",e):this}},detach:function(e){return this.remove(e,true)},domManip:function(bB,bF,bE){var bx,by,bA,bD,bC=bB[0],bv=[];if(!b.support.checkClone&&arguments.length===3&&typeof bC==="string"&&o.test(bC)){return this.each(function(){b(this).domManip(bB,bF,bE,true)})}if(b.isFunction(bC)){return this.each(function(bH){var bG=b(this);bB[0]=bC.call(this,bH,bF?bG.html():L);bG.domManip(bB,bF,bE)})}if(this[0]){bD=bC&&bC.parentNode;if(b.support.parentNode&&bD&&bD.nodeType===11&&bD.childNodes.length===this.length){bx={fragment:bD}}else{bx=b.buildFragment(bB,this,bv)}bA=bx.fragment;if(bA.childNodes.length===1){by=bA=bA.firstChild}else{by=bA.firstChild}if(by){bF=bF&&b.nodeName(by,"tr");for(var bw=0,e=this.length,bz=e-1;bw<e;bw++){bE.call(bF?ba(this[bw],by):this[bw],bx.cacheable||(e>1&&bw<bz)?b.clone(bA,true,true):bA)}}if(bv.length){b.each(bv,bo)}}return this}});function ba(e,bv){return b.nodeName(e,"table")?(e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody"))):e}function t(bB,bv){if(bv.nodeType!==1||!b.hasData(bB)){return}var by,bx,e,bA=b._data(bB),bz=b._data(bv,bA),bw=bA.events;if(bw){delete bz.handle;bz.events={};for(by in bw){for(bx=0,e=bw[by].length;bx<e;bx++){b.event.add(bv,by+(bw[by][bx].namespace?".":"")+bw[by][bx].namespace,bw[by][bx],bw[by][bx].data)}}}if(bz.data){bz.data=b.extend({},bz.data)}}function ai(bv,e){var bw;if(e.nodeType!==1){return}if(e.clearAttributes){e.clearAttributes()}if(e.mergeAttributes){e.mergeAttributes(bv)}bw=e.nodeName.toLowerCase();if(bw==="object"){e.outerHTML=bv.outerHTML}else{if(bw==="input"&&(bv.type==="checkbox"||bv.type==="radio")){if(bv.checked){e.defaultChecked=e.checked=bv.checked}if(e.value!==bv.value){e.value=bv.value}}else{if(bw==="option"){e.selected=bv.defaultSelected}else{if(bw==="input"||bw==="textarea"){e.defaultValue=bv.defaultValue}}}}e.removeAttribute(b.expando)}b.buildFragment=function(bz,bx,bv){var by,e,bw,bA,bB=bz[0];if(bx&&bx[0]){bA=bx[0].ownerDocument||bx[0]}if(!bA.createDocumentFragment){bA=av}if(bz.length===1&&typeof bB==="string"&&bB.length<512&&bA===av&&bB.charAt(0)==="<"&&!O.test(bB)&&(b.support.checkClone||!o.test(bB))&&(b.support.html5Clone||!ah.test(bB))){e=true;bw=b.fragments[bB];if(bw&&bw!==1){by=bw}}if(!by){by=bA.createDocumentFragment();b.clean(bz,bA,by,bv)}if(e){b.fragments[bB]=bw?by:1}return{fragment:by,cacheable:e}};b.fragments={};b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,bv){b.fn[e]=function(bw){var bz=[],bC=b(bw),bB=this.length===1&&this[0].parentNode;if(bB&&bB.nodeType===11&&bB.childNodes.length===1&&bC.length===1){bC[bv](this[0]);return this}else{for(var bA=0,bx=bC.length;bA<bx;bA++){var by=(bA>0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1></$2>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]==="<table>"&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB<bG;bB++){E(bz[bB])}}else{E(bz)}}if(bz.nodeType){bI.push(bz)}else{bI=b.merge(bI,bz)}}if(bH){bF=function(bL){return !bL.type||bm.test(bL.type)};for(bE=0;bI[bE];bE++){if(bA&&b.nodeName(bI[bE],"script")&&(!bI[bE].type||bI[bE].type.toLowerCase()==="text/javascript")){bA.push(bI[bE].parentNode?bI[bE].parentNode.removeChild(bI[bE]):bI[bE])}else{if(bI[bE].nodeType===1){var bJ=b.grep(bI[bE].getElementsByTagName("script"),bF);bI.splice.apply(bI,[bE+1,0].concat(bJ))}bH.appendChild(bI[bE])}}}return bI},cleanData:function(bv){var by,bw,e=b.cache,bB=b.event.special,bA=b.support.deleteExpando;for(var bz=0,bx;(bx=bv[bz])!=null;bz++){if(bx.nodeName&&b.noData[bx.nodeName.toLowerCase()]){continue}bw=bx[b.expando];if(bw){by=e[bw];if(by&&by.events){for(var bC in by.events){if(bB[bC]){b.event.remove(bx,bC)}else{b.removeEvent(bx,bC,by.handle)}}if(by.handle){by.handle.elem=null}}if(bA){delete bx[b.expando]}else{if(bx.removeAttribute){bx.removeAttribute(b.expando)}}delete e[bw]}}}});function bo(e,bv){if(bv.src){b.ajax({url:bv.src,async:false,dataType:"script"})}else{b.globalEval((bv.text||bv.textContent||bv.innerHTML||"").replace(aN,"/*$0*/"))}if(bv.parentNode){bv.parentNode.removeChild(bv)}}var ak=/alpha\([^)]*\)/i,au=/opacity=([^)]*)/,z=/([A-Z]|^ms)/g,bc=/^-?\d+(?:px)?$/i,bn=/^-?\d/,I=/^([\-+])=([\-+.\de]+)/,a7={position:"absolute",visibility:"hidden",display:"block"},an=["Left","Right"],a1=["Top","Bottom"],Z,aI,aX;b.fn.css=function(e,bv){if(arguments.length===2&&bv===L){return this}return b.access(this,e,bv,true,function(bx,bw,by){return by!==L?b.style(bx,bw,by):b.css(bx,bw)})};b.extend({cssHooks:{opacity:{get:function(bw,bv){if(bv){var e=Z(bw,"opacity","opacity");return e===""?"1":e}else{return bw.style.opacity}}}},cssNumber:{fillOpacity:true,fontWeight:true,lineHeight:true,opacity:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(bx,bw,bD,by){if(!bx||bx.nodeType===3||bx.nodeType===8||!bx.style){return}var bB,bC,bz=b.camelCase(bw),bv=bx.style,bE=b.cssHooks[bz];bw=b.cssProps[bz]||bz;if(bD!==L){bC=typeof bD;if(bC==="string"&&(bB=I.exec(bD))){bD=(+(bB[1]+1)*+bB[2])+parseFloat(b.css(bx,bw));bC="number"}if(bD==null||bC==="number"&&isNaN(bD)){return}if(bC==="number"&&!b.cssNumber[bz]){bD+="px"}if(!bE||!("set" in bE)||(bD=bE.set(bx,bD))!==L){try{bv[bw]=bD}catch(bA){}}}else{if(bE&&"get" in bE&&(bB=bE.get(bx,false,by))!==L){return bB}return bv[bw]}},css:function(by,bx,bv){var bw,e;bx=b.camelCase(bx);e=b.cssHooks[bx];bx=b.cssProps[bx]||bx;if(bx==="cssFloat"){bx="float"}if(e&&"get" in e&&(bw=e.get(by,true,bv))!==L){return bw}else{if(Z){return Z(by,bx)}}},swap:function(bx,bw,by){var e={};for(var bv in bw){e[bv]=bx.style[bv];bx.style[bv]=bw[bv]}by.call(bx);for(bv in bw){bx.style[bv]=e[bv]}}});b.curCSS=b.css;b.each(["height","width"],function(bv,e){b.cssHooks[e]={get:function(by,bx,bw){var bz;if(bx){if(by.offsetWidth!==0){return p(by,e,bw)}else{b.swap(by,a7,function(){bz=p(by,e,bw)})}return bz}},set:function(bw,bx){if(bc.test(bx)){bx=parseFloat(bx);if(bx>=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;
if(bA>0){if(bv!=="border"){for(;bx<e;bx++){if(!bv){bA-=parseFloat(b.css(by,"padding"+bz[bx]))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}else{bA-=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}}}return bA+"px"}bA=Z(by,bw,bw);if(bA<0||bA==null){bA=by.style[bw]||0}bA=parseFloat(bA)||0;if(bv){for(;bx<e;bx++){bA+=parseFloat(b.css(by,"padding"+bz[bx]))||0;if(bv!=="padding"){bA+=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}}}return bA+"px"}if(b.expr&&b.expr.filters){b.expr.filters.hidden=function(bw){var bv=bw.offsetWidth,e=bw.offsetHeight;return(bv===0&&e===0)||(!b.support.reliableHiddenOffsets&&((bw.style&&bw.style.display)||b.css(bw,"display"))==="none")};b.expr.filters.visible=function(e){return !b.expr.filters.hidden(e)}}var k=/%20/g,ap=/\[\]$/,bs=/\r?\n/g,bq=/#.*$/,aD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,aZ=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,aM=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,aQ=/^(?:GET|HEAD)$/,c=/^\/\//,M=/\?/,a6=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw<bz;bw++){bv=bx[bw];bC=/^\+/.test(bv);if(bC){bv=bv.substr(1)||"*"}bB=e[bv]=e[bv]||[];bB[bC?"unshift":"push"](bA)}}}}function aW(bv,bE,bz,bD,bB,bx){bB=bB||bE.dataTypes[0];bx=bx||{};bx[bB]=true;var bA=bv[bB],bw=0,e=bA?bA.length:0,by=(bv===aa),bC;for(;bw<e&&(by||!bC);bw++){bC=bA[bw](bE,bz,bD);if(typeof bC==="string"){if(!by||bx[bC]){bC=L}else{bE.dataTypes.unshift(bC);bC=aW(bv,bE,bz,bD,bC,bx)}}}if((by||!bC)&&!bx["*"]){bC=aW(bv,bE,bz,bD,"*",bx)}return bC}function am(bw,bx){var bv,e,by=b.ajaxSettings.flatOptions||{};for(bv in bx){if(bx[bv]!==L){(by[bv]?bw:(e||(e={})))[bv]=bx[bv]}}if(e){b.extend(true,bw,e)}}b.fn.extend({load:function(bw,bz,bA){if(typeof bw!=="string"&&A){return A.apply(this,arguments)}else{if(!this.length){return this}}var by=bw.indexOf(" ");if(by>=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("<div>").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA<bw;bA++){if(bA===1){for(bE in bH.converters){if(typeof bE==="string"){bG[bE.toLowerCase()]=bH.converters[bE]}}}bx=bC;bC=bD[bA];if(bC==="*"){bC=bx}else{if(bx!=="*"&&bx!==bC){by=bx+" "+bC;bF=bG[by]||bG["* "+bC];if(!bF){e=L;for(bv in bG){bB=bv.split(" ");if(bB[0]===bx||bB[0]==="*"){e=bG[bB[1]+" "+bC];if(e){bv=bG[bv];if(bv===true){bF=e}else{if(e===true){bF=bv}}break}}}}if(!(bF||e)){b.error("No conversion from "+by.replace(" "," to "))}if(bF!==true){bz=bF?bF(bz):e(bv(bz))}}}}return bz}var aC=b.now(),u=/(\=)\?(&|$)|\?\?/i;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return b.expando+"_"+(aC++)}});b.ajaxPrefilter("json jsonp",function(bD,bA,bC){var bx=bD.contentType==="application/x-www-form-urlencoded"&&(typeof bD.data==="string");if(bD.dataTypes[0]==="jsonp"||bD.jsonp!==false&&(u.test(bD.url)||bx&&u.test(bD.data))){var bB,bw=bD.jsonpCallback=b.isFunction(bD.jsonpCallback)?bD.jsonpCallback():bD.jsonpCallback,bz=bb[bw],e=bD.url,by=bD.data,bv="$1"+bw+"$2";if(bD.jsonp!==false){e=e.replace(u,bv);if(bD.url===e){if(bx){by=by.replace(u,bv)}if(bD.data===by){e+=(/\?/.test(e)?"&":"?")+bD.jsonp+"="+bw}}}bD.url=e;bD.data=by;bb[bw]=function(bE){bB=[bE]};bC.always(function(){bb[bw]=bz;if(bB&&b.isFunction(bz)){bb[bw](bB[0])}});bD.converters["script json"]=function(){if(!bB){b.error(bw+" was not called")}return bB[0]};bD.dataTypes[0]="json";return"script"}});b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){b.globalEval(e);return e}}});b.ajaxPrefilter("script",function(e){if(e.cache===L){e.cache=false}if(e.crossDomain){e.type="GET";e.global=false}});b.ajaxTransport("script",function(bw){if(bw.crossDomain){var e,bv=av.head||av.getElementsByTagName("head")[0]||av.documentElement;return{send:function(bx,by){e=av.createElement("script");e.async="async";if(bw.scriptCharset){e.charset=bw.scriptCharset}e.src=bw.url;e.onload=e.onreadystatechange=function(bA,bz){if(bz||!e.readyState||/loaded|complete/.test(e.readyState)){e.onload=e.onreadystatechange=null;if(bv&&e.parentNode){bv.removeChild(e)}e=L;if(!bz){by(200,"success")}}};bv.insertBefore(e,bv.firstChild)},abort:function(){if(e){e.onload(0,1)}}}}});var B=bb.ActiveXObject?function(){for(var e in N){N[e](0,1)}}:false,y=0,N;function aL(){try{return new bb.XMLHttpRequest()}catch(bv){}}function aj(){try{return new bb.ActiveXObject("Microsoft.XMLHTTP")}catch(bv){}}b.ajaxSettings.xhr=bb.ActiveXObject?function(){return !this.isLocal&&aL()||aj()}:aL;(function(e){b.extend(b.support,{ajax:!!e,cors:!!e&&("withCredentials" in e)})})(b.ajaxSettings.xhr());if(b.support.ajax){b.ajaxTransport(function(e){if(!e.crossDomain||b.support.cors){var bv;return{send:function(bB,bw){var bA=e.xhr(),bz,by;if(e.username){bA.open(e.type,e.url,e.async,e.username,e.password)}else{bA.open(e.type,e.url,e.async)}if(e.xhrFields){for(by in e.xhrFields){bA[by]=e.xhrFields[by]}}if(e.mimeType&&bA.overrideMimeType){bA.overrideMimeType(e.mimeType)}if(!e.crossDomain&&!bB["X-Requested-With"]){bB["X-Requested-With"]="XMLHttpRequest"}try{for(by in bB){bA.setRequestHeader(by,bB[by])}}catch(bx){}bA.send((e.hasContent&&e.data)||null);bv=function(bK,bE){var bF,bD,bC,bI,bH;try{if(bv&&(bE||bA.readyState===4)){bv=L;if(bz){bA.onreadystatechange=b.noop;if(B){delete N[bz]}}if(bE){if(bA.readyState!==4){bA.abort()}}else{bF=bA.status;bC=bA.getAllResponseHeaders();bI={};bH=bA.responseXML;if(bH&&bH.documentElement){bI.xml=bH}bI.text=bA.responseText;try{bD=bA.statusText}catch(bJ){bD=""}if(!bF&&e.isLocal&&!e.crossDomain){bF=bI.text?200:404}else{if(bF===1223){bF=204}}}}}catch(bG){if(!bE){bw(-1,bG)}}if(bI){bw(bF,bD,bI,bC)}};if(!e.async||bA.readyState===4){bv()}else{bz=++y;if(B){if(!N){N={};b(bb).unload(B)}N[bz]=bv}bA.onreadystatechange=bv}},abort:function(){if(bv){bv(0,1)
}}}}})}var Q={},a8,m,aB=/^(?:toggle|show|hide)$/,aT=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,a3,aH=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],a4;b.fn.extend({show:function(bx,bA,bz){var bw,by;if(bx||bx===0){return this.animate(a0("show",3),bx,bA,bz)}else{for(var bv=0,e=this.length;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(!b._data(bw,"olddisplay")&&by==="none"){by=bw.style.display=""}if(by===""&&b.css(bw,"display")==="none"){b._data(bw,"olddisplay",x(bw.nodeName))}}}for(bv=0;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(by===""||by==="none"){bw.style.display=b._data(bw,"olddisplay")||""}}}return this}},hide:function(bx,bA,bz){if(bx||bx===0){return this.animate(a0("hide",3),bx,bA,bz)}else{var bw,by,bv=0,e=this.length;for(;bv<e;bv++){bw=this[bv];if(bw.style){by=b.css(bw,"display");if(by!=="none"&&!b._data(bw,"olddisplay")){b._data(bw,"olddisplay",by)}}}for(bv=0;bv<e;bv++){if(this[bv].style){this[bv].style.display="none"}}return this}},_toggle:b.fn.toggle,toggle:function(bw,bv,bx){var e=typeof bw==="boolean";if(b.isFunction(bw)&&b.isFunction(bv)){this._toggle.apply(this,arguments)}else{if(bw==null||e){this.each(function(){var by=e?bw:b(this).is(":hidden");b(this)[by?"show":"hide"]()})}else{this.animate(a0("toggle",3),bw,bv,bx)}}return this},fadeTo:function(e,bx,bw,bv){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:bx},e,bw,bv)},animate:function(bz,bw,by,bx){var e=b.speed(bw,by,bx);if(b.isEmptyObject(bz)){return this.each(e.complete,[false])}bz=b.extend({},bz);function bv(){if(e.queue===false){b._mark(this)}var bE=b.extend({},e),bK=this.nodeType===1,bI=bK&&b(this).is(":hidden"),bB,bF,bD,bJ,bH,bC,bG,bL,bA;bE.animatedProperties={};for(bD in bz){bB=b.camelCase(bD);if(bD!==bB){bz[bB]=bz[bD];delete bz[bD]}bF=bz[bB];if(b.isArray(bF)){bE.animatedProperties[bB]=bF[1];bF=bz[bB]=bF[0]}else{bE.animatedProperties[bB]=bE.specialEasing&&bE.specialEasing[bB]||bE.easing||"swing"}if(bF==="hide"&&bI||bF==="show"&&!bI){return bE.complete.call(this)}if(bK&&(bB==="height"||bB==="width")){bE.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(b.css(this,"display")==="inline"&&b.css(this,"float")==="none"){if(!b.support.inlineBlockNeedsLayout||x(this.nodeName)==="inline"){this.style.display="inline-block"}else{this.style.zoom=1}}}}if(bE.overflow!=null){this.style.overflow="hidden"}for(bD in bz){bJ=new b.fx(this,bE,bD);bF=bz[bD];if(aB.test(bF)){bA=b._data(this,"toggle"+bD)||(bF==="toggle"?bI?"show":"hide":0);if(bA){b._data(this,"toggle"+bD,bA==="show"?"hide":"show");bJ[bA]()}else{bJ[bF]()}}else{bH=aT.exec(bF);bC=bJ.cur();if(bH){bG=parseFloat(bH[2]);bL=bH[3]||(b.cssNumber[bD]?"":"px");if(bL!=="px"){b.style(this,bD,(bG||1)+bL);bC=((bG||1)/bJ.cur())*bC;b.style(this,bD,bC+bL)}if(bH[1]){bG=((bH[1]==="-="?-1:1)*bG)+bC}bJ.custom(bC,bG,bL)}else{bJ.custom(bC,bF,"")}}}return true}return e.queue===false?this.each(bv):this.queue(e.queue,bv)},stop:function(bw,bv,e){if(typeof bw!=="string"){e=bv;bv=bw;bw=L}if(bv&&bw!==false){this.queue(bw||"fx",[])}return this.each(function(){var bx,by=false,bA=b.timers,bz=b._data(this);if(!e){b._unmark(true,this)}function bB(bE,bF,bD){var bC=bF[bD];b.removeData(bE,bD,true);bC.stop(e)}if(bw==null){for(bx in bz){if(bz[bx]&&bz[bx].stop&&bx.indexOf(".run")===bx.length-4){bB(this,bz,bx)}}}else{if(bz[bx=bw+".run"]&&bz[bx].stop){bB(this,bz,bx)}}for(bx=bA.length;bx--;){if(bA[bx].elem===this&&(bw==null||bA[bx].queue===bw)){if(e){bA[bx](true)}else{bA[bx].saveState()}by=true;bA.splice(bx,1)}}if(!(e&&by)){b.dequeue(this,bw)}})}});function bh(){setTimeout(at,0);return(a4=b.now())}function at(){a4=L}function a0(bv,e){var bw={};b.each(aH.concat.apply([],aH.slice(0,e)),function(){bw[this]=bv});return bw}b.each({slideDown:a0("show",1),slideUp:a0("hide",1),slideToggle:a0("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,bv){b.fn[e]=function(bw,by,bx){return this.animate(bv,bw,by,bx)}});b.extend({speed:function(bw,bx,bv){var e=bw&&typeof bw==="object"?b.extend({},bw):{complete:bv||!bv&&bx||b.isFunction(bw)&&bw,duration:bw,easing:bv&&bx||bx&&!b.isFunction(bx)&&bx};e.duration=b.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in b.fx.speeds?b.fx.speeds[e.duration]:b.fx.speeds._default;if(e.queue==null||e.queue===true){e.queue="fx"}e.old=e.complete;e.complete=function(by){if(b.isFunction(e.old)){e.old.call(this)}if(e.queue){b.dequeue(this,e.queue)}else{if(by!==false){b._unmark(this)}}};return e},easing:{linear:function(bw,bx,e,bv){return e+bv*bw},swing:function(bw,bx,e,bv){return((-Math.cos(bw*Math.PI)/2)+0.5)*bv+e}},timers:[],fx:function(bv,e,bw){this.options=e;this.elem=bv;this.prop=bw;e.orig=e.orig||{}}});b.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(b.fx.step[this.prop]||b.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var e,bv=b.css(this.elem,this.prop);return isNaN(e=parseFloat(bv))?!bv||bv==="auto"?0:bv:e},custom:function(bz,by,bx){var e=this,bw=b.fx;this.startTime=a4||bh();this.end=by;this.now=this.start=bz;this.pos=this.state=0;this.unit=bx||this.unit||(b.cssNumber[this.prop]?"":"px");function bv(bA){return e.step(bA)}bv.queue=this.options.queue;bv.elem=this.elem;bv.saveState=function(){if(e.options.hide&&b._data(e.elem,"fxshow"+e.prop)===L){b._data(e.elem,"fxshow"+e.prop,e.start)}};if(bv()&&b.timers.push(bv)&&!a3){a3=setInterval(bw.tick,bw.interval)}},show:function(){var e=b._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=e||b.style(this.elem,this.prop);this.options.show=true;if(e!==L){this.custom(this.cur(),e)}else{this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur())}b(this.elem).show()},hide:function(){this.options.orig[this.prop]=b._data(this.elem,"fxshow"+this.prop)||b.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(by){var bA,bB,bv,bx=a4||bh(),e=true,bz=this.elem,bw=this.options;if(by||bx>=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e<bv.length;e++){bw=bv[e];if(!bw()&&bv[e]===bw){bv.splice(e--,1)}}if(!bv.length){b.fx.stop()}},interval:13,stop:function(){clearInterval(a3);a3=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(e){b.style(e.elem,"opacity",e.now)},_default:function(e){if(e.elem.style&&e.elem.style[e.prop]!=null){e.elem.style[e.prop]=e.now+e.unit}else{e.elem[e.prop]=e.now}}}});b.each(["width","height"],function(e,bv){b.fx.step[bv]=function(bw){b.style(bw.elem,bv,Math.max(0,bw.now)+bw.unit)}});if(b.expr&&b.expr.filters){b.expr.filters.animated=function(e){return b.grep(b.timers,function(bv){return e===bv.elem}).length}}function x(bx){if(!Q[bx]){var e=av.body,bv=b("<"+bx+">").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b
})}})(window);
\ No newline at end of file
/*!
PowerTip - v1.2.0 - 2013-04-03
http://stevenbenner.github.com/jquery-powertip/
Copyright (c) 2013 Steven Benner (http://stevenbenner.com/).
Released under MIT license.
https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt
*/
(function(a){if(typeof define==="function"&&define.amd){define(["jquery"],a)}else{a(jQuery)}}(function(k){var A=k(document),s=k(window),w=k("body");var n="displayController",e="hasActiveHover",d="forcedOpen",u="hasMouseMove",f="mouseOnToPopup",g="originalTitle",y="powertip",o="powertipjq",l="powertiptarget",E=180/Math.PI;var c={isTipOpen:false,isFixedTipOpen:false,isClosing:false,tipOpenImminent:false,activeHover:null,currentX:0,currentY:0,previousX:0,previousY:0,desyncTimeout:null,mouseTrackingActive:false,delayInProgress:false,windowWidth:0,windowHeight:0,scrollTop:0,scrollLeft:0};var p={none:0,top:1,bottom:2,left:4,right:8};k.fn.powerTip=function(F,N){if(!this.length){return this}if(k.type(F)==="string"&&k.powerTip[F]){return k.powerTip[F].call(this,this,N)}var O=k.extend({},k.fn.powerTip.defaults,F),G=new x(O);h();this.each(function M(){var R=k(this),Q=R.data(y),P=R.data(o),T=R.data(l),S;if(R.data(n)){k.powerTip.destroy(R)}S=R.attr("title");if(!Q&&!T&&!P&&S){R.data(y,S);R.data(g,S);R.removeAttr("title")}R.data(n,new t(R,O,G))});if(!O.manual){this.on({"mouseenter.powertip":function J(P){k.powerTip.show(this,P)},"mouseleave.powertip":function L(){k.powerTip.hide(this)},"focus.powertip":function K(){k.powerTip.show(this)},"blur.powertip":function H(){k.powerTip.hide(this,true)},"keydown.powertip":function I(P){if(P.keyCode===27){k.powerTip.hide(this,true)}}})}return this};k.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false};k.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};k.powerTip={show:function z(F,G){if(G){i(G);c.previousX=G.pageX;c.previousY=G.pageY;k(F).data(n).show()}else{k(F).first().data(n).show(true,true)}return F},reposition:function r(F){k(F).first().data(n).resetPosition();return F},hide:function D(G,F){if(G){k(G).first().data(n).hide(F)}else{if(c.activeHover){c.activeHover.data(n).hide(true)}}return G},destroy:function C(G){k(G).off(".powertip").each(function F(){var I=k(this),H=[g,n,e,d];if(I.data(g)){I.attr("title",I.data(g));H.push(y)}I.removeData(H)});return G}};k.powerTip.showTip=k.powerTip.show;k.powerTip.closeTip=k.powerTip.hide;function b(){var F=this;F.top="auto";F.left="auto";F.right="auto";F.bottom="auto";F.set=function(H,G){if(k.isNumeric(G)){F[H]=Math.round(G)}}}function t(K,N,F){var J=null;function L(P,Q){M();if(!K.data(e)){if(!P){c.tipOpenImminent=true;J=setTimeout(function O(){J=null;I()},N.intentPollInterval)}else{if(Q){K.data(d,true)}F.showTip(K)}}}function G(P){M();c.tipOpenImminent=false;if(K.data(e)){K.data(d,false);if(!P){c.delayInProgress=true;J=setTimeout(function O(){J=null;F.hideTip(K);c.delayInProgress=false},N.closeDelay)}else{F.hideTip(K)}}}function I(){var Q=Math.abs(c.previousX-c.currentX),O=Math.abs(c.previousY-c.currentY),P=Q+O;if(P<N.intentSensitivity){F.showTip(K)}else{c.previousX=c.currentX;c.previousY=c.currentY;L()}}function M(){J=clearTimeout(J);c.delayInProgress=false}function H(){F.resetPosition(K)}this.show=L;this.hide=G;this.cancel=M;this.resetPosition=H}function j(){function G(M,L,J,O,P){var K=L.split("-")[0],N=new b(),I;if(q(M)){I=H(M,K)}else{I=F(M,K)}switch(L){case"n":N.set("left",I.left-(J/2));N.set("bottom",c.windowHeight-I.top+P);break;case"e":N.set("left",I.left+P);N.set("top",I.top-(O/2));break;case"s":N.set("left",I.left-(J/2));N.set("top",I.top+P);break;case"w":N.set("top",I.top-(O/2));N.set("right",c.windowWidth-I.left+P);break;case"nw":N.set("bottom",c.windowHeight-I.top+P);N.set("right",c.windowWidth-I.left-20);break;case"nw-alt":N.set("left",I.left);N.set("bottom",c.windowHeight-I.top+P);break;case"ne":N.set("left",I.left-20);N.set("bottom",c.windowHeight-I.top+P);break;case"ne-alt":N.set("bottom",c.windowHeight-I.top+P);N.set("right",c.windowWidth-I.left);break;case"sw":N.set("top",I.top+P);N.set("right",c.windowWidth-I.left-20);break;case"sw-alt":N.set("left",I.left);N.set("top",I.top+P);break;case"se":N.set("left",I.left-20);N.set("top",I.top+P);break;case"se-alt":N.set("top",I.top+P);N.set("right",c.windowWidth-I.left);break}return N}function F(K,J){var O=K.offset(),N=K.outerWidth(),I=K.outerHeight(),M,L;switch(J){case"n":M=O.left+N/2;L=O.top;break;case"e":M=O.left+N;L=O.top+I/2;break;case"s":M=O.left+N/2;L=O.top+I;break;case"w":M=O.left;L=O.top+I/2;break;case"nw":M=O.left;L=O.top;break;case"ne":M=O.left+N;L=O.top;break;case"sw":M=O.left;L=O.top+I;break;case"se":M=O.left+N;L=O.top+I;break}return{top:L,left:M}}function H(O,K){var S=O.closest("svg")[0],N=O[0],W=S.createSVGPoint(),L=N.getBBox(),V=N.getScreenCTM(),M=L.width/2,Q=L.height/2,P=[],I=["nw","n","ne","e","se","s","sw","w"],U,X,R,T;function J(){P.push(W.matrixTransform(V))}W.x=L.x;W.y=L.y;J();W.x+=M;J();W.x+=M;J();W.y+=Q;J();W.y+=Q;J();W.x-=M;J();W.x-=M;J();W.y-=Q;J();if(P[0].y!==P[1].y||P[0].x!==P[7].x){X=Math.atan2(V.b,V.a)*E;R=Math.ceil(((X%360)-22.5)/45);if(R<1){R+=8}while(R--){I.push(I.shift())}}for(T=0;T<P.length;T++){if(I[T]===K){U=P[T];break}}return{top:U.y+c.scrollTop,left:U.x+c.scrollLeft}}this.compute=G}function x(Q){var P=new j(),O=k("#"+Q.popupId);if(O.length===0){O=k("<div/>",{id:Q.popupId});if(w.length===0){w=k("body")}w.append(O)}if(Q.followMouse){if(!O.data(u)){A.on("mousemove",M);s.on("scroll",M);O.data(u,true)}}if(Q.mouseOnToPopup){O.on({mouseenter:function L(){if(O.data(f)){if(c.activeHover){c.activeHover.data(n).cancel()}}},mouseleave:function N(){if(c.activeHover){c.activeHover.data(n).hide()}}})}function I(S){S.data(e,true);O.queue(function R(T){H(S);T()})}function H(S){var U;if(!S.data(e)){return}if(c.isTipOpen){if(!c.isClosing){K(c.activeHover)}O.delay(100).queue(function R(V){H(S);V()});return}S.trigger("powerTipPreRender");U=B(S);if(U){O.empty().append(U)}else{return}S.trigger("powerTipRender");c.activeHover=S;c.isTipOpen=true;O.data(f,Q.mouseOnToPopup);if(!Q.followMouse){G(S);c.isFixedTipOpen=true}else{M()}O.fadeIn(Q.fadeInTime,function T(){if(!c.desyncTimeout){c.desyncTimeout=setInterval(J,500)}S.trigger("powerTipOpen")})}function K(R){c.isClosing=true;c.activeHover=null;c.isTipOpen=false;c.desyncTimeout=clearInterval(c.desyncTimeout);R.data(e,false);R.data(d,false);O.fadeOut(Q.fadeOutTime,function S(){var T=new b();c.isClosing=false;c.isFixedTipOpen=false;O.removeClass();T.set("top",c.currentY+Q.offset);T.set("left",c.currentX+Q.offset);O.css(T);R.trigger("powerTipClose")})}function M(){if(!c.isFixedTipOpen&&(c.isTipOpen||(c.tipOpenImminent&&O.data(u)))){var R=O.outerWidth(),V=O.outerHeight(),U=new b(),S,T;U.set("top",c.currentY+Q.offset);U.set("left",c.currentX+Q.offset);S=m(U,R,V);if(S!==p.none){T=a(S);if(T===1){if(S===p.right){U.set("left",c.windowWidth-R)}else{if(S===p.bottom){U.set("top",c.scrollTop+c.windowHeight-V)}}}else{U.set("left",c.currentX-R-Q.offset);U.set("top",c.currentY-V-Q.offset)}}O.css(U)}}function G(S){var R,T;if(Q.smartPlacement){R=k.fn.powerTip.smartPlacementLists[Q.placement];k.each(R,function(U,W){var V=m(F(S,W),O.outerWidth(),O.outerHeight());T=W;if(V===p.none){return false}})}else{F(S,Q.placement);T=Q.placement}O.addClass(T)}function F(U,T){var R=0,S,W,V=new b();V.set("top",0);V.set("left",0);O.css(V);do{S=O.outerWidth();W=O.outerHeight();V=P.compute(U,T,S,W,Q.offset);O.css(V)}while(++R<=5&&(S!==O.outerWidth()||W!==O.outerHeight()));return V}function J(){var R=false;if(c.isTipOpen&&!c.isClosing&&!c.delayInProgress){if(c.activeHover.data(e)===false||c.activeHover.is(":disabled")){R=true}else{if(!v(c.activeHover)&&!c.activeHover.is(":focus")&&!c.activeHover.data(d)){if(O.data(f)){if(!v(O)){R=true}}else{R=true}}}if(R){K(c.activeHover)}}}this.showTip=I;this.hideTip=K;this.resetPosition=G}function q(F){return window.SVGElement&&F[0] instanceof SVGElement}function h(){if(!c.mouseTrackingActive){c.mouseTrackingActive=true;k(function H(){c.scrollLeft=s.scrollLeft();c.scrollTop=s.scrollTop();c.windowWidth=s.width();c.windowHeight=s.height()});A.on("mousemove",i);s.on({resize:function G(){c.windowWidth=s.width();c.windowHeight=s.height()},scroll:function F(){var I=s.scrollLeft(),J=s.scrollTop();if(I!==c.scrollLeft){c.currentX+=I-c.scrollLeft;c.scrollLeft=I}if(J!==c.scrollTop){c.currentY+=J-c.scrollTop;c.scrollTop=J}}})}}function i(F){c.currentX=F.pageX;c.currentY=F.pageY}function v(F){var H=F.offset(),J=F[0].getBoundingClientRect(),I=J.right-J.left,G=J.bottom-J.top;return c.currentX>=H.left&&c.currentX<=H.left+I&&c.currentY>=H.top&&c.currentY<=H.top+G}function B(I){var G=I.data(y),F=I.data(o),K=I.data(l),H,J;if(G){if(k.isFunction(G)){G=G.call(I[0])}J=G}else{if(F){if(k.isFunction(F)){F=F.call(I[0])}if(F.length>0){J=F.clone(true,true)}}else{if(K){H=k("#"+K);if(H.length>0){J=H.html()}}}}return J}function m(M,L,K){var G=c.scrollTop,J=c.scrollLeft,I=G+c.windowHeight,F=J+c.windowWidth,H=p.none;if(M.top<G||Math.abs(M.bottom-c.windowHeight)-K<G){H|=p.top}if(M.top+K>I||Math.abs(M.bottom-c.windowHeight)>I){H|=p.bottom}if(M.left<J||M.right+L>F){H|=p.left}if(M.left+L>F||M.right<J){H|=p.right}return H}function a(G){var F=0;while(G){G&=G-1;F++}return F}}));
\ No newline at end of file
/*!
* jQuery UI 1.8.18
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI
*/
(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h<j.length;h++){if(e.options[j[h][0]]){j[h][1].apply(e.element,f)}}}},contains:function(f,e){return document.compareDocumentPosition?f.compareDocumentPosition(e)&16:f!==e&&f.contains(e)},hasScroll:function(h,f){if(a(h).css("overflow")==="hidden"){return false}var e=(f&&f==="left")?"scrollLeft":"scrollTop",g=false;if(h[e]>0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*!
* jQuery UI Widget 1.8.18
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Widget
*/
(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*!
* jQuery UI Mouse 1.8.18
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Mouse
*
* Depends:
* jquery.ui.widget.js
*/
(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g<l.length;g++){var j=c.trim(l[g]),e="ui-resizable-"+j;var h=c('<div class="ui-resizable-handle '+e+'"></div>');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(h<e.maxWidth){e.maxWidth=h}if(k<e.maxHeight){e.maxHeight=k}}this._vBoundaries=e},_updateCache:function(e){var f=this.options;this.offset=this.helper.offset();if(a(e.left)){this.position.left=e.left}if(a(e.top)){this.position.top=e.top}if(a(e.height)){this.size.height=e.height}if(a(e.width)){this.size.width=e.width}},_updateRatio:function(h,g){var i=this.options,j=this.position,f=this.size,e=this.axis;if(a(h.height)){h.width=(h.height*this.aspectRatio)}else{if(a(h.width)){h.height=(h.width/this.aspectRatio)}}if(e=="sw"){h.left=j.left+(f.width-h.width);h.top=null}if(e=="nw"){h.top=j.top+(f.height-h.height);h.left=j.left+(f.width-h.width)}return h},_respectSize:function(l,g){var j=this.helper,i=this._vBoundaries,r=this._aspectRatio||g.shiftKey,q=this.axis,t=a(l.width)&&i.maxWidth&&(i.maxWidth<l.width),m=a(l.height)&&i.maxHeight&&(i.maxHeight<l.height),h=a(l.width)&&i.minWidth&&(i.minWidth>l.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f<this._proportionallyResizeElements.length;f++){var h=this._proportionallyResizeElements[f];if(!this.borderDif){var e=[h.css("borderTopWidth"),h.css("borderRightWidth"),h.css("borderBottomWidth"),h.css("borderLeftWidth")],j=[h.css("paddingTop"),h.css("paddingRight"),h.css("paddingBottom"),h.css("paddingLeft")];this.borderDif=c.map(e,function(l,n){var m=parseInt(l,10)||0,o=parseInt(j[n],10)||0;return m+o})}if(c.browser.msie&&!(!(c(g).is(":hidden")||c(g).parents(":hidden").length))){continue}h.css({height:(g.height()-this.borderDif[0]-this.borderDif[2])||0,width:(g.width()-this.borderDif[1]-this.borderDif[3])||0})}},_renderProxy:function(){var f=this.element,i=this.options;this.elementOffset=f.offset();if(this._helper){this.helper=this.helper||c('<div style="overflow:hidden;"></div>');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;
p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*!
* jQuery hashchange event - v1.3 - 7/21/2010
* http://benalman.com/projects/jquery-hashchange-plugin/
*
* Copyright (c) 2010 "Cowboy" Ben Alman
* Dual licensed under the MIT and GPL licenses.
* http://benalman.com/about/license/
*/
(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){r||l(a());n()}).attr("src",r||"javascript:0").insertAfter("body")[0].contentWindow;h.onpropertychange=function(){try{if(event.propertyName==="title"){q.document.title=h.title}}catch(s){}}}};j.stop=k;o=function(){return a(q.location.href)};l=function(v,s){var u=q.document,t=$.fn[c].domain;if(v!==s){u.title=h.title;u.open();t&&u.write('<script>document.domain="'+t+'"<\/script>');u.close();q.location.hash=v}}})();return j})()})(jQuery,this);
\ No newline at end of file
File mode changed from 100644 to 100755
...@@ -36,30 +36,7 @@ ...@@ -36,30 +36,7 @@
#include "classlist.h" #include "classlist.h"
#include "namespacedef.h" #include "namespacedef.h"
#include "filename.h" #include "filename.h"
#include "resourcemgr.h"
static const char doxygenLatexStyle[] =
#include "doxygen.sty.h"
;
//static QCString filterTitle(const char *s)
//{
// QCString tmp=s,result;
// uint i;for (i=0;i<tmp.length();i++)
// {
// char c=tmp.at(i);
// switch(c)
// {
// case '#': result+="\\#"; break;
// case '"': result+="\\\""; break;
// case '%': result+="\\%"; break;
// case '[': result+="{"; break;
// case ']': result+="}"; break;
// default: result+=c; break;
// }
// }
// return result;
//}
LatexGenerator::LatexGenerator() : OutputGenerator() LatexGenerator::LatexGenerator() : OutputGenerator()
...@@ -524,7 +501,7 @@ static void writeDefaultHeaderPart3(FTextStream &t) ...@@ -524,7 +501,7 @@ static void writeDefaultHeaderPart3(FTextStream &t)
static void writeDefaultStyleSheet(FTextStream &t) static void writeDefaultStyleSheet(FTextStream &t)
{ {
t << doxygenLatexStyle; t << ResourceMgr::instance().getAsString("doxygen.sty");
} }
static void writeDefaultFooter(FTextStream &t) static void writeDefaultFooter(FTextStream &t)
......
"<doxygenlayout version=\"1.0\">\n"
" <!-- Generated by doxygen $doxygenversion -->\n"
" <!-- Navigation index tabs for HTML output -->\n"
" <navindex>\n"
" <tab type=\"mainpage\" visible=\"yes\" title=\"\"/>\n"
" <tab type=\"pages\" visible=\"yes\" title=\"\" intro=\"\"/>\n"
" <tab type=\"modules\" visible=\"yes\" title=\"\" intro=\"\"/>\n"
" <tab type=\"namespaces\" visible=\"yes\" title=\"\">\n"
" <tab type=\"namespacelist\" visible=\"yes\" title=\"\" intro=\"\"/>\n"
" <tab type=\"namespacemembers\" visible=\"yes\" title=\"\" intro=\"\"/>\n"
" </tab>\n"
" <tab type=\"classes\" visible=\"yes\" title=\"\">\n"
" <tab type=\"classlist\" visible=\"yes\" title=\"\" intro=\"\"/>\n"
" <tab type=\"classindex\" visible=\"$ALPHABETICAL_INDEX\" title=\"\"/> \n"
" <tab type=\"hierarchy\" visible=\"yes\" title=\"\" intro=\"\"/>\n"
" <tab type=\"classmembers\" visible=\"yes\" title=\"\" intro=\"\"/>\n"
" </tab>\n"
" <tab type=\"files\" visible=\"yes\" title=\"\">\n"
" <tab type=\"filelist\" visible=\"yes\" title=\"\" intro=\"\"/>\n"
" <tab type=\"globals\" visible=\"yes\" title=\"\" intro=\"\"/>\n"
" </tab>\n"
" <tab type=\"examples\" visible=\"yes\" title=\"\" intro=\"\"/> \n"
" </navindex>\n"
"\n"
" <!-- Layout definition for a class page -->\n"
" <class>\n"
" <briefdescription visible=\"yes\"/>\n"
" <includes visible=\"$SHOW_INCLUDE_FILES\"/>\n"
" <inheritancegraph visible=\"$CLASS_GRAPH\"/>\n"
" <collaborationgraph visible=\"$COLLABORATION_GRAPH\"/>\n"
" <memberdecl>\n"
" <nestedclasses visible=\"yes\" title=\"\"/>\n"
" <publictypes title=\"\"/>\n"
" <services title=\"\"/>\n"
" <interfaces title=\"\"/>\n"
" <publicslots title=\"\"/>\n"
" <signals title=\"\"/>\n"
" <publicmethods title=\"\"/>\n"
" <publicstaticmethods title=\"\"/>\n"
" <publicattributes title=\"\"/>\n"
" <publicstaticattributes title=\"\"/>\n"
" <protectedtypes title=\"\"/>\n"
" <protectedslots title=\"\"/>\n"
" <protectedmethods title=\"\"/>\n"
" <protectedstaticmethods title=\"\"/>\n"
" <protectedattributes title=\"\"/>\n"
" <protectedstaticattributes title=\"\"/>\n"
" <packagetypes title=\"\"/>\n"
" <packagemethods title=\"\"/>\n"
" <packagestaticmethods title=\"\"/>\n"
" <packageattributes title=\"\"/>\n"
" <packagestaticattributes title=\"\"/>\n"
" <properties title=\"\"/>\n"
" <events title=\"\"/>\n"
" <privatetypes title=\"\"/>\n"
" <privateslots title=\"\"/>\n"
" <privatemethods title=\"\"/>\n"
" <privatestaticmethods title=\"\"/>\n"
" <privateattributes title=\"\"/>\n"
" <privatestaticattributes title=\"\"/>\n"
" <friends title=\"\"/>\n"
" <related title=\"\" subtitle=\"\"/>\n"
" <membergroups visible=\"yes\"/>\n"
" </memberdecl>\n"
" <detaileddescription title=\"\"/>\n"
" <memberdef>\n"
" <inlineclasses title=\"\"/>\n"
" <typedefs title=\"\"/>\n"
" <enums title=\"\"/>\n"
" <services title=\"\"/>\n"
" <interfaces title=\"\"/>\n"
" <constructors title=\"\"/>\n"
" <functions title=\"\"/>\n"
" <related title=\"\"/>\n"
" <variables title=\"\"/>\n"
" <properties title=\"\"/>\n"
" <events title=\"\"/>\n"
" </memberdef>\n"
" <allmemberslink visible=\"yes\"/>\n"
" <usedfiles visible=\"$SHOW_USED_FILES\"/>\n"
" <authorsection visible=\"yes\"/>\n"
" </class>\n"
"\n"
" <!-- Layout definition for a namespace page -->\n"
" <namespace>\n"
" <briefdescription visible=\"yes\"/>\n"
" <memberdecl>\n"
" <nestednamespaces visible=\"yes\" title=\"\"/>\n"
" <constantgroups visible=\"yes\" title=\"\"/>\n"
" <classes visible=\"yes\" title=\"\"/>\n"
" <typedefs title=\"\"/>\n"
" <enums title=\"\"/>\n"
" <functions title=\"\"/>\n"
" <variables title=\"\"/>\n"
" <membergroups visible=\"yes\"/>\n"
" </memberdecl>\n"
" <detaileddescription title=\"\"/>\n"
" <memberdef>\n"
" <inlineclasses title=\"\"/>\n"
" <typedefs title=\"\"/>\n"
" <enums title=\"\"/>\n"
" <functions title=\"\"/>\n"
" <variables title=\"\"/>\n"
" </memberdef>\n"
" <authorsection visible=\"yes\"/>\n"
" </namespace>\n"
"\n"
" <!-- Layout definition for a file page -->\n"
" <file>\n"
" <briefdescription visible=\"yes\"/>\n"
" <includes visible=\"$SHOW_INCLUDE_FILES\"/>\n"
" <includegraph visible=\"$INCLUDE_GRAPH\"/>\n"
" <includedbygraph visible=\"$INCLUDED_BY_GRAPH\"/>\n"
" <sourcelink visible=\"yes\"/>\n"
" <memberdecl>\n"
" <classes visible=\"yes\" title=\"\"/>\n"
" <namespaces visible=\"yes\" title=\"\"/>\n"
" <constantgroups visible=\"yes\" title=\"\"/>\n"
" <defines title=\"\"/>\n"
" <typedefs title=\"\"/>\n"
" <enums title=\"\"/>\n"
" <functions title=\"\"/>\n"
" <variables title=\"\"/>\n"
" <membergroups visible=\"yes\"/>\n"
" </memberdecl>\n"
" <detaileddescription title=\"\"/>\n"
" <memberdef>\n"
" <inlineclasses title=\"\"/>\n"
" <defines title=\"\"/>\n"
" <typedefs title=\"\"/>\n"
" <enums title=\"\"/>\n"
" <functions title=\"\"/>\n"
" <variables title=\"\"/>\n"
" </memberdef>\n"
" <authorsection/>\n"
" </file>\n"
"\n"
" <!-- Layout definition for a group page -->\n"
" <group>\n"
" <briefdescription visible=\"yes\"/>\n"
" <groupgraph visible=\"$GROUP_GRAPHS\"/>\n"
" <memberdecl>\n"
" <nestedgroups visible=\"yes\" title=\"\"/>\n"
" <dirs visible=\"yes\" title=\"\"/>\n"
" <files visible=\"yes\" title=\"\"/>\n"
" <namespaces visible=\"yes\" title=\"\"/>\n"
" <classes visible=\"yes\" title=\"\"/>\n"
" <defines title=\"\"/>\n"
" <typedefs title=\"\"/>\n"
" <enums title=\"\"/>\n"
" <enumvalues title=\"\"/>\n"
" <functions title=\"\"/>\n"
" <variables title=\"\"/>\n"
" <signals title=\"\"/>\n"
" <publicslots title=\"\"/>\n"
" <protectedslots title=\"\"/>\n"
" <privateslots title=\"\"/>\n"
" <events title=\"\"/>\n"
" <properties title=\"\"/>\n"
" <friends title=\"\"/>\n"
" <membergroups visible=\"yes\"/>\n"
" </memberdecl>\n"
" <detaileddescription title=\"\"/>\n"
" <memberdef>\n"
" <pagedocs/>\n"
" <inlineclasses title=\"\"/>\n"
" <defines title=\"\"/>\n"
" <typedefs title=\"\"/>\n"
" <enums title=\"\"/>\n"
" <enumvalues title=\"\"/>\n"
" <functions title=\"\"/>\n"
" <variables title=\"\"/>\n"
" <signals title=\"\"/>\n"
" <publicslots title=\"\"/>\n"
" <protectedslots title=\"\"/>\n"
" <privateslots title=\"\"/>\n"
" <events title=\"\"/>\n"
" <properties title=\"\"/>\n"
" <friends title=\"\"/>\n"
" </memberdef>\n"
" <authorsection visible=\"yes\"/>\n"
" </group>\n"
"\n"
" <!-- Layout definition for a directory page -->\n"
" <directory>\n"
" <briefdescription visible=\"yes\"/>\n"
" <directorygraph visible=\"yes\"/>\n"
" <memberdecl>\n"
" <dirs visible=\"yes\"/>\n"
" <files visible=\"yes\"/>\n"
" </memberdecl>\n"
" <detaileddescription title=\"\"/>\n"
" </directory>\n"
"</doxygenlayout>\n"
...@@ -98,6 +98,7 @@ HEADERS = arguments.h \ ...@@ -98,6 +98,7 @@ HEADERS = arguments.h \
qhp.h \ qhp.h \
qhpxmlwriter.h \ qhpxmlwriter.h \
reflist.h \ reflist.h \
resourcemgr.h \
rtfdocvisitor.h \ rtfdocvisitor.h \
rtfgen.h \ rtfgen.h \
rtfstyle.h \ rtfstyle.h \
...@@ -188,6 +189,7 @@ SOURCES = arguments.cpp \ ...@@ -188,6 +189,7 @@ SOURCES = arguments.cpp \
qhp.cpp \ qhp.cpp \
qhpxmlwriter.cpp \ qhpxmlwriter.cpp \
reflist.cpp \ reflist.cpp \
resourcemgr.cpp \
rtfdocvisitor.cpp \ rtfdocvisitor.cpp \
rtfgen.cpp \ rtfgen.cpp \
rtfstyle.cpp \ rtfstyle.cpp \
...@@ -220,7 +222,8 @@ SOURCES = arguments.cpp \ ...@@ -220,7 +222,8 @@ SOURCES = arguments.cpp \
../generated_src/doxygen/tclscanner.cpp \ ../generated_src/doxygen/tclscanner.cpp \
../generated_src/doxygen/fortrancode.cpp \ ../generated_src/doxygen/fortrancode.cpp \
../generated_src/doxygen/fortranscanner.cpp \ ../generated_src/doxygen/fortranscanner.cpp \
../generated_src/doxygen/version.cpp ../generated_src/doxygen/version.cpp \
../generated_src/doxygen/resources.cpp
......
...@@ -111,98 +111,16 @@ sub GenerateLex { ...@@ -111,98 +111,16 @@ sub GenerateLex {
$(YACC) -l -d -p ce_parsexpYY constexp.y -o \$(GENERATED_SRC)/ce_parse.c $(YACC) -l -d -p ce_parsexpYY constexp.y -o \$(GENERATED_SRC)/ce_parse.c
-rm $(GENERATED_SRC)/ce_parse.c -rm $(GENERATED_SRC)/ce_parse.c
TO_C_CMD=$(PYTHON) to_c_cmd.py < $< > $@
#$ GenerateDep("layout.cpp","\$(GENERATED_SRC)/layout_default.xml.h"); #$ GenerateDep("layout.cpp","\$(GENERATED_SRC)/layout_default.xml.h");
#$ GenerateDep("cite.cpp","\$(GENERATED_SRC)/doxygen.bst.h","\$(GENERATED_SRC)/bib2xhtml.pl.h"); $(GENERATED_SRC)/version.cpp: ../configure
$(PYTHON) version.py $(GENERATED_SRC)
#$ GenerateDep("ftvhelp.cpp","\$(GENERATED_SRC)/navtree.js.h","\$(GENERATED_SRC)/resize.js.h","\$(GENERATED_SRC)/navtree.css.h");
#$ GenerateDep("htmlgen.cpp","\$(GENERATED_SRC)/header.html.h","\$(GENERATED_SRC)/footer.html.h","\$(GENERATED_SRC)/doxygen.css.h","\$(GENERATED_SRC)/search_functions.php.h","\$(GENERATED_SRC)/search_opensearch.php.h","\$(GENERATED_SRC)/search.css.h","\$(GENERATED_SRC)/jquery_p1.js.h","\$(GENERATED_SRC)/jquery_p2.js.h","\$(GENERATED_SRC)/jquery_p3.js.h","\$(GENERATED_SRC)/jquery_ui.js.h","\$(GENERATED_SRC)/jquery_fx.js.h","\$(GENERATED_SRC)/jquery_pt.js.h","\$(GENERATED_SRC)/svgpan.js.h","\$(GENERATED_SRC)/dynsections.js.h","\$(GENERATED_SRC)/extsearch.js.h");
#$ GenerateDep("xmlgen.cpp","\$(GENERATED_SRC)/index.xsd.h","\$(GENERATED_SRC)/compound.xsd.h");
#$ GenerateDep("latexgen.cpp","\$(GENERATED_SRC)/doxygen.sty.h");
#$ GenerateDep("searchindex.cpp","\$(GENERATED_SRC)/search.js.h");
$(GENERATED_SRC)/index.xsd.h: index.xsd
$(TO_C_CMD)
$(GENERATED_SRC)/compound.xsd.h: compound.xsd TO_C_CMD=$(PYTHON) to_c_cmd.py < $< > $@
$(TO_C_CMD)
$(GENERATED_SRC)/layout_default.xml.h: layout_default.xml $(GENERATED_SRC)/layout_default.xml.h: layout_default.xml
$(TO_C_CMD) $(TO_C_CMD)
$(GENERATED_SRC)/header.html.h: header.html ../generated_src/doxygen/resources.cpp: res2cc_cmd.py $(wildcard ../templates/html/*)
$(TO_C_CMD) $(PYTHON) res2cc_cmd.py ../templates ../generated_src/doxygen/resources.cpp
$(GENERATED_SRC)/footer.html.h: footer.html
$(TO_C_CMD)
$(GENERATED_SRC)/search_functions.php.h: search_functions.php
$(TO_C_CMD)
$(GENERATED_SRC)/search_opensearch.php.h: search_opensearch.php
$(TO_C_CMD)
$(GENERATED_SRC)/search.js.h: search.js
$(TO_C_CMD)
$(GENERATED_SRC)/search.css.h: search.css
$(TO_C_CMD)
$(GENERATED_SRC)/extsearch.js.h: extsearch.js
$(TO_C_CMD)
$(GENERATED_SRC)/doxygen.css.h: doxygen.css
$(TO_C_CMD)
$(GENERATED_SRC)/doxygen.sty.h: doxygen.sty
$(TO_C_CMD)
$(GENERATED_SRC)/navtree.js.h: navtree.js
$(TO_C_CMD)
$(GENERATED_SRC)/resize.js.h: resize.js
$(TO_C_CMD)
$(GENERATED_SRC)/jquery_p1.js.h: jquery_p1.js
$(TO_C_CMD)
$(GENERATED_SRC)/jquery_p2.js.h: jquery_p2.js
$(TO_C_CMD)
$(GENERATED_SRC)/jquery_p3.js.h: jquery_p3.js
$(TO_C_CMD)
$(GENERATED_SRC)/jquery_ui.js.h: jquery_ui.js
$(TO_C_CMD)
$(GENERATED_SRC)/jquery_fx.js.h: jquery_fx.js
$(TO_C_CMD)
$(GENERATED_SRC)/jquery_pt.js.h: jquery_pt.js
$(TO_C_CMD)
$(GENERATED_SRC)/navtree.css.h: navtree.css
$(TO_C_CMD)
$(GENERATED_SRC)/svgpan.js.h: svgpan.js
$(TO_C_CMD)
$(GENERATED_SRC)/dynsections.js.h: dynsections.js
$(TO_C_CMD)
$(GENERATED_SRC)/doxygen.bst.h: doxygen.bst
$(TO_C_CMD)
$(GENERATED_SRC)/bib2xhtml.pl.h: bib2xhtml.pl
$(TO_C_CMD)
$(GENERATED_SRC)/version.cpp: ../configure
$(PYTHON) version.py $(GENERATED_SRC)
from __future__ import print_function
from os import listdir, stat, walk
from os.path import isfile, join, splitext
import sys
class File(object):
def __init__(self,directory,subdir,fileName,mode):
self.directory = directory
self.subdir = subdir
self.fileName = fileName
filePath = join(directory,subdir,fileName)
self.fileSize = stat(filePath).st_size
self.bareName = fileName.replace('.','_')
self.inputFile = open(filePath,mode)
def formatByte(self,byte):
if isinstance(byte,int):
return "%02x" % byte
else:
return format(ord(byte),'02x')
def writeBytes(self,data,outputFile):
bytes_per_line=16
print("static const unsigned char %s_data[] = " % self.bareName,file=outputFile)
print("{",file=outputFile)
lines = [data[x:x+bytes_per_line] for x in range(0,len(data),bytes_per_line)]
linesAsString = ',\n '.join([', '.join(['0x'+self.formatByte(byte) for byte in line]) for line in lines])
print(' %s' % linesAsString,file=outputFile)
print("};",file=outputFile)
print("const int %s_len = %d;\n" % (self.bareName,len(data)),file=outputFile)
def convertToBytes(self,outputFile):
lines = [x for x in self.inputFile.readlines() if not x.startswith('#')]
w,h = (int(x) for x in lines[0].split())
data = "".join(map(chr,[int(w>>8),int(w&0xFF),int(h>>8),int(h&0xFF)]+
[int(x) for line in lines[1:] for x in line.split()]))
self.writeBytes(data,outputFile)
@staticmethod
def factory(directory,subdir,fname):
ext = splitext(fname)[1]
if ext=='.lum': return LumFile(directory,subdir,fname)
if ext=='.luma': return LumaFile(directory,subdir,fname)
if ext=='.css': return CSSFile(directory,subdir,fname)
return VerbatimFile(directory,subdir,fname)
class VerbatimFile(File):
def __init__(self,directory,subdir,fileName):
File.__init__(self,directory,subdir,fileName,"rb")
def writeContents(self,outputFile):
self.writeBytes(self.inputFile.read(),outputFile)
def writeDirEntry(self,outputFile):
print(" { \"%s\", \"%s\", %s_data, %s_len, Resource::Verbatim }," % (self.subdir,self.fileName,self.bareName,self.bareName), file=outputFile)
class CSSFile(File):
def __init__(self,directory,subdir,fileName):
File.__init__(self,directory,subdir,fileName,"r")
def writeContents(self,outputFile):
self.writeBytes(self.inputFile.read(),outputFile)
def writeDirEntry(self,outputFile):
print(" { \"%s\", \"%s\", %s_data, %s_len, Resource::CSS }," % (self.subdir,self.fileName,self.bareName,self.bareName), file=outputFile)
class LumFile(File):
def __init__(self,directory,subdir,fileName):
File.__init__(self,directory,subdir,fileName,"r")
def writeContents(self,outputFile):
self.convertToBytes(outputFile)
def writeDirEntry(self,outputFile):
print(" { \"%s\", \"%s\", %s_data, %s_len, Resource::Luminance }," % (self.subdir,self.fileName,self.bareName,self.bareName), file=outputFile)
class LumaFile(File):
def __init__(self,directory,subdir,fileName):
File.__init__(self,directory,subdir,fileName,"r")
def writeContents(self,outputFile):
self.convertToBytes(outputFile)
def writeDirEntry(self,outputFile):
print(" { \"%s\", \"%s\", %s_data, %s_len, Resource::LumAlpha }," % (self.subdir,self.fileName,self.bareName,self.bareName), file=outputFile)
def main():
if len(sys.argv)<3:
sys.exit('Usage: %s directory output_file.c' % sys.argv[0])
directory = sys.argv[1]
files = []
for dirName, subdirList, fileList in walk(directory):
for fname in sorted(fileList):
subdir = dirName[len(directory)+1:] if dirName.startswith(directory) else dirName
if subdir:
files.append(File.factory(directory,subdir,fname))
outputFile = open(sys.argv[2],"w")
print("#include \"resourcemgr.h\"\n",file=outputFile)
for f in files:
f.writeContents(outputFile)
print("static Resource resourceDir[] =",file=outputFile)
print("{",file=outputFile)
for f in files:
f.writeDirEntry(outputFile)
print("};",file=outputFile)
print("static int resourceDir_len = %s;" % len(files), file=outputFile)
print("void initResources() { ResourceMgr::instance().registerResources(resourceDir,resourceDir_len); }",file=outputFile)
if __name__ == '__main__':
main()
"var cookie_namespace = 'doxygen'; \n"
"var sidenav,navtree,content,header;\n"
"\n"
"function readCookie(cookie) \n"
"{\n"
" var myCookie = cookie_namespace+\"_\"+cookie+\"=\";\n"
" if (document.cookie) \n"
" {\n"
" var index = document.cookie.indexOf(myCookie);\n"
" if (index != -1) \n"
" {\n"
" var valStart = index + myCookie.length;\n"
" var valEnd = document.cookie.indexOf(\";\", valStart);\n"
" if (valEnd == -1) \n"
" {\n"
" valEnd = document.cookie.length;\n"
" }\n"
" var val = document.cookie.substring(valStart, valEnd);\n"
" return val;\n"
" }\n"
" }\n"
" return 0;\n"
"}\n"
"\n"
"function writeCookie(cookie, val, expiration) \n"
"{\n"
" if (val==undefined) return;\n"
" if (expiration == null) \n"
" {\n"
" var date = new Date();\n"
" date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week\n"
" expiration = date.toGMTString();\n"
" }\n"
" document.cookie = cookie_namespace + \"_\" + cookie + \"=\" + val + \"; expires=\" + expiration+\"; path=/\";\n"
"}\n"
" \n"
"function resizeWidth() \n"
"{\n"
" var windowWidth = $(window).width() + \"px\";\n"
" var sidenavWidth = $(sidenav).outerWidth();\n"
" content.css({marginLeft:parseInt(sidenavWidth)+\"px\"}); \n"
" writeCookie('width',sidenavWidth, null);\n"
"}\n"
"\n"
"function restoreWidth(navWidth)\n"
"{\n"
" var windowWidth = $(window).width() + \"px\";\n"
" content.css({marginLeft:parseInt(navWidth)+6+\"px\"});\n"
" sidenav.css({width:navWidth + \"px\"});\n"
"}\n"
"\n"
"function resizeHeight() \n"
"{\n"
" var headerHeight = header.outerHeight();\n"
" var footerHeight = footer.outerHeight();\n"
" var windowHeight = $(window).height() - headerHeight - footerHeight;\n"
" content.css({height:windowHeight + \"px\"});\n"
" navtree.css({height:windowHeight + \"px\"});\n"
" sidenav.css({height:windowHeight + \"px\",top: headerHeight+\"px\"});\n"
"}\n"
"\n"
"function initResizable()\n"
"{\n"
" header = $(\"#top\");\n"
" sidenav = $(\"#side-nav\");\n"
" content = $(\"#doc-content\");\n"
" navtree = $(\"#nav-tree\");\n"
" footer = $(\"#nav-path\");\n"
" $(\".side-nav-resizable\").resizable({resize: function(e, ui) { resizeWidth(); } });\n"
" $(window).resize(function() { resizeHeight(); });\n"
" var width = readCookie('width');\n"
" if (width) { restoreWidth(width); } else { resizeWidth(); }\n"
" resizeHeight();\n"
" var url = location.href;\n"
" var i=url.indexOf(\"#\");\n"
" if (i>=0) window.location.hash=url.substr(i);\n"
" var _preventDefault = function(evt) { evt.preventDefault(); };\n"
" $(\"#splitbar\").bind(\"dragstart\", _preventDefault).bind(\"selectstart\", _preventDefault);\n"
" $(document).bind('touchmove',function(e){\n"
" try {\n"
" var target = e.target;\n"
" while (target) {\n"
" if ($(target).css('-webkit-overflow-scrolling')=='touch') return;\n"
" target = target.parentNode;\n"
" }\n"
" e.preventDefault();\n"
" } catch(err) {\n"
" e.preventDefault();\n"
" }\n"
" });\n"
"}\n"
"\n"
"\n"
/******************************************************************************
*
* Copyright (C) 1997-2014 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 <qdict.h>
#include <qfile.h>
#include <qcstring.h>
#include <qglobal.h>
#include <string.h>
#include "resourcemgr.h"
#include "util.h"
#include "version.h"
#include "ftextstream.h"
#include "message.h"
#include "config.h"
class ResourceMgr::Private
{
public:
Private() : resources(257) {}
QDict<Resource> resources;
};
ResourceMgr &ResourceMgr::instance()
{
static ResourceMgr theInstance;
return theInstance;
}
ResourceMgr::ResourceMgr()
{
p = new Private;
}
ResourceMgr::~ResourceMgr()
{
delete p;
}
void ResourceMgr::registerResources(const Resource resources[],int numResources)
{
for (int i=0;i<numResources;i++)
{
p->resources.insert(resources[i].name,&resources[i]);
}
}
bool ResourceMgr::copyCategory(const char *categoryName,const char *targetDir) const
{
QDictIterator<Resource> it(p->resources);
const Resource *res;
for (it.toFirst();(res=it.current());++it)
{
if (qstrcmp(res->category,categoryName)==0)
{
if (!copyResource(res->name,targetDir))
{
return FALSE;
}
}
}
return TRUE;
}
bool ResourceMgr::copyResourceAs(const char *name,const char *targetDir,const char *targetName) const
{
QCString pathName = QCString(targetDir)+"/"+targetName;
const Resource *res = get(name);
if (res)
{
switch (res->type)
{
case Resource::Verbatim:
{
QFile f(pathName);
if (f.open(IO_WriteOnly) && f.writeBlock((const char *)res->data,res->size)==res->size)
{
return TRUE;
}
}
break;
case Resource::Luminance:
{
QCString n = name;
n = n.left(n.length()-4)+".png"; // replace .lum by .png
uchar *p = (uchar*)res->data;
int width = (p[0]<<8)+p[1];
int height = (p[2]<<8)+p[3];
ColoredImgDataItem images[2];
images[0].name = n;
images[0].width = width;
images[0].height = height;
images[0].content = &p[4];
images[0].alpha = 0;
images[1].name = 0; // terminator
writeColoredImgData(targetDir,images);
return TRUE;
}
break;
case Resource::LumAlpha:
{
QCString n = name;
n = n.left(n.length()-5)+".png"; // replace .luma by .png
uchar *p = (uchar*)res->data;
int width = (p[0]<<8)+p[1];
int height = (p[2]<<8)+p[3];
ColoredImgDataItem images[2];
images[0].name = n;
images[0].width = width;
images[0].height = height;
images[0].content = &p[4];
images[0].alpha = &p[4+width*height];
images[1].name = 0; // terminator
writeColoredImgData(targetDir,images);
return TRUE;
}
break;
case Resource::CSS:
{
QFile f(pathName);
if (f.open(IO_WriteOnly))
{
QCString buf(res->size+1);
memcpy(buf.data(),res->data,res->size);
FTextStream t(&f);
buf = replaceColorMarkers(buf);
if (qstrcmp(name,"navtree.css")==0)
{
t << substitute(buf,"$width",QCString().setNum(Config_getInt("TREEVIEW_WIDTH"))+"px");
}
else
{
t << substitute(buf,"$doxygenversion",versionString);
}
return TRUE;
}
}
break;
}
}
else
{
err("requested resource '%s' not compiled in!\n",name);
}
return FALSE;
}
bool ResourceMgr::copyResource(const char *name,const char *targetDir) const
{
return copyResourceAs(name,targetDir,name);
}
const Resource *ResourceMgr::get(const char *name) const
{
return p->resources.find(name);
}
QCString ResourceMgr::getAsString(const char *name) const
{
const Resource *res = get(name);
if (res)
{
QCString result(res->size+1);
memcpy(result.data(),res->data,res->size);
return result;
}
else
{
return QCString();
}
}
/******************************************************************************
*
* Copyright (C) 1997-2014 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 RESOURCEMGR_H
#define RESOURCEMGR_H
#include <qcstring.h>
/** @brief Compiled resource */
struct Resource
{
enum Type { Verbatim, Luminance, LumAlpha, CSS };
const char *category;
const char *name;
const unsigned char *data;
int size;
Type type;
};
/** @brief Singleton for managing resources compiled into an executable */
class ResourceMgr
{
public:
/** Returns the one and only instance of this class */
static ResourceMgr &instance();
/** Registers an array of resources */
void registerResources(const Resource resources[],int numResources);
/** Copies all resource belonging to a given category to a given target directory */
bool copyCategory(const char *categoryName,const char *targetDir) const;
/** Copies a registered resource to a given target directory */
bool copyResource(const char *name,const char *targetDir) const;
/** Copies a registered resource to a given target directory under a given target name */
bool copyResourceAs(const char *name,const char *targetDir,const char *targetName) const;
/** Returns a pointer to the resource object with the given name. */
const Resource *get(const char *name) const;
/** Gets the resource data as a C string */
QCString getAsString(const char *name) const;
private:
ResourceMgr();
~ResourceMgr();
class Private;
Private *p;
};
#endif
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
#include "memberdef.h" #include "memberdef.h"
#include "filename.h" #include "filename.h"
#include "membername.h" #include "membername.h"
#include "resourcemgr.h"
// file format: (all multi-byte values are stored in big endian format) // file format: (all multi-byte values are stored in big endian format)
// 4 byte header // 4 byte header
...@@ -583,9 +584,9 @@ void SearchIndexExternal::write(const char *fileName) ...@@ -583,9 +584,9 @@ void SearchIndexExternal::write(const char *fileName)
#include "doxygen.h" #include "doxygen.h"
#include "message.h" #include "message.h"
static const char search_script[]= //static const char search_script[]=
#include "search.js.h" //#include "search.js.h"
; //;
#define SEARCH_INDEX_ALL 0 #define SEARCH_INDEX_ALL 0
#define SEARCH_INDEX_CLASSES 1 #define SEARCH_INDEX_CLASSES 1
...@@ -1265,15 +1266,10 @@ void writeJavascriptSearchIndex() ...@@ -1265,15 +1266,10 @@ void writeJavascriptSearchIndex()
} }
{ {
QFile f(searchDirName+"/search.js"); QFile f(searchDirName+"/searchdata.js");
if (f.open(IO_WriteOnly)) if (f.open(IO_WriteOnly))
{ {
FTextStream t(&f); FTextStream t(&f);
t << "// Search script generated by doxygen" << endl;
t << "// Copyright (C) 2009 by Dimitri van Heesch." << endl << endl;
t << "// The code in this file is loosly based on main.js, part of Natural Docs," << endl;
t << "// which is Copyright (C) 2003-2008 Greg Valure" << endl;
t << "// Natural Docs is licensed under the GPL." << endl << endl;
t << "var indexSectionsWithContent =" << endl; t << "var indexSectionsWithContent =" << endl;
t << "{" << endl; t << "{" << endl;
bool first=TRUE; bool first=TRUE;
...@@ -1314,8 +1310,25 @@ void writeJavascriptSearchIndex() ...@@ -1314,8 +1310,25 @@ void writeJavascriptSearchIndex()
} }
if (!first) t << "\n"; if (!first) t << "\n";
t << "};" << endl << endl; t << "};" << endl << endl;
t << search_script; t << "var indexSectionLabels =" << endl;
t << "{" << endl;
first=TRUE;
static SearchIndexCategoryMapping map;
j=0;
for (i=0;i<NUM_SEARCH_INDICES;i++)
{
if (g_searchIndexCount[i]>0)
{
if (!first) t << "," << endl;
t << " " << j << ": \"" << convertToXML(map.categoryLabel[i]) << "\"";
first=FALSE;
j++;
}
}
if (!first) t << "\n";
t << "};" << endl << endl;
} }
ResourceMgr::instance().copyResource("search.js",searchDirName);
} }
{ {
QFile f(searchDirName+"/nomatches.html"); QFile f(searchDirName+"/nomatches.html");
...@@ -1343,6 +1356,7 @@ void writeJavascriptSearchIndex() ...@@ -1343,6 +1356,7 @@ void writeJavascriptSearchIndex()
void writeSearchCategories(FTextStream &t) void writeSearchCategories(FTextStream &t)
{ {
#if 0
static SearchIndexCategoryMapping map; static SearchIndexCategoryMapping map;
int i,j=0; int i,j=0;
for (i=0;i<NUM_SEARCH_INDICES;i++) for (i=0;i<NUM_SEARCH_INDICES;i++)
...@@ -1357,6 +1371,7 @@ void writeSearchCategories(FTextStream &t) ...@@ -1357,6 +1371,7 @@ void writeSearchCategories(FTextStream &t)
j++; j++;
} }
} }
#endif
} }
//--------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------
......
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
#include "ftextstream.h" #include "ftextstream.h"
#include "message.h" #include "message.h"
#include "util.h" #include "util.h"
#include "resourcemgr.h"
#define ENABLE_TRACING 0 #define ENABLE_TRACING 0
...@@ -2060,6 +2061,11 @@ class ExpressionParser ...@@ -2060,6 +2061,11 @@ class ExpressionParser
if (p==0 || *p=='\0') return FALSE; if (p==0 || *p=='\0') return FALSE;
while (*p==' ') p++; // skip over spaces while (*p==' ') p++; // skip over spaces
char c=*p; char c=*p;
if (*p=='\0') // only spaces...
{
m_tokenStream = p;
return FALSE;
}
const char *q = p; const char *q = p;
switch (c) switch (c)
{ {
...@@ -2238,7 +2244,7 @@ class ExpressionParser ...@@ -2238,7 +2244,7 @@ class ExpressionParser
char s[2]; char s[2];
s[0]=c; s[0]=c;
s[1]=0; s[1]=0;
warn(m_parser->templateName(),m_line,"Found unknown token %s while parsing %s",s,m_tokenStream); warn(m_parser->templateName(),m_line,"Found unknown token '%s' (%d) while parsing %s",s,c,m_tokenStream);
m_curToken.id = s; m_curToken.id = s;
p++; p++;
} }
...@@ -2297,7 +2303,7 @@ class TemplateNodeList : public QList<TemplateNode> ...@@ -2297,7 +2303,7 @@ class TemplateNodeList : public QList<TemplateNode>
class TemplateImpl : public TemplateNode, public Template class TemplateImpl : public TemplateNode, public Template
{ {
public: public:
TemplateImpl(TemplateEngine *e,const QCString &name,const QCString &data); TemplateImpl(TemplateEngine *e,const QCString &name,const char *data,int size);
void render(FTextStream &ts, TemplateContext *c); void render(FTextStream &ts, TemplateContext *c);
TemplateEngine *engine() const { return m_engine; } TemplateEngine *engine() const { return m_engine; }
...@@ -2695,6 +2701,37 @@ template<class T> class TemplateNodeCreator : public TemplateNode ...@@ -2695,6 +2701,37 @@ template<class T> class TemplateNodeCreator : public TemplateNode
return dynamic_cast<TemplateImpl*>(root); return dynamic_cast<TemplateImpl*>(root);
} }
protected: protected:
void mkpath(TemplateContextImpl *ci,const QCString &fileName)
{
int i=fileName.find('/');
QCString outputDir = ci->outputDirectory();
QDir d(outputDir);
if (!d.exists())
{
QDir rootDir;
rootDir.setPath(QDir::currentDirPath());
if (!rootDir.mkdir(outputDir))
{
err("tag OUTPUT_DIRECTORY: Output directory `%s' does not "
"exist and cannot be created\n",outputDir.data());
return;
}
d.setPath(outputDir);
}
int j=0;
while (i!=-1) // fileName contains path part
{
if (d.exists())
{
bool ok = d.mkdir(fileName.mid(j,i-j));
if (!ok) break;
QCString dirName = outputDir+'/'+fileName.left(i);
d = QDir(dirName);
j = i+1;
}
i=fileName.find('/',i+1);
}
}
QCString m_templateName; QCString m_templateName;
int m_line; int m_line;
}; };
...@@ -3192,7 +3229,7 @@ class TemplateNodeMsg : public TemplateNodeCreator<TemplateNodeMsg> ...@@ -3192,7 +3229,7 @@ class TemplateNodeMsg : public TemplateNodeCreator<TemplateNodeMsg>
QStrList stopAt; QStrList stopAt;
stopAt.append("endmsg"); stopAt.append("endmsg");
parser->parse(this,line,stopAt,m_nodes); parser->parse(this,line,stopAt,m_nodes);
parser->removeNextToken(); // skip over endmarkers parser->removeNextToken(); // skip over endmsg
TRACE(("}TemplateNodeMsg()\n")); TRACE(("}TemplateNodeMsg()\n"));
} }
void render(FTextStream &, TemplateContext *c) void render(FTextStream &, TemplateContext *c)
...@@ -3474,25 +3511,6 @@ class TemplateNodeCreate : public TemplateNodeCreator<TemplateNodeCreate> ...@@ -3474,25 +3511,6 @@ class TemplateNodeCreate : public TemplateNodeCreator<TemplateNodeCreate>
delete m_templateExpr; delete m_templateExpr;
delete m_fileExpr; delete m_fileExpr;
} }
void mkpath(TemplateContextImpl *ci,const QCString &fileName)
{
int i=fileName.find('/');
QCString outputDir = ci->outputDirectory();
QDir d(outputDir);
int j=0;
while (i!=-1) // fileName contains path part
{
if (d.exists())
{
bool ok = d.mkdir(fileName.mid(j,i-j));
if (!ok) break;
QCString dirName = outputDir+'/'+fileName.left(i);
d = QDir(dirName);
j = i+1;
}
i=fileName.find('/',i+1);
}
}
void render(FTextStream &, TemplateContext *c) void render(FTextStream &, TemplateContext *c)
{ {
TemplateContextImpl* ci = dynamic_cast<TemplateContextImpl*>(c); TemplateContextImpl* ci = dynamic_cast<TemplateContextImpl*>(c);
...@@ -3518,7 +3536,7 @@ class TemplateNodeCreate : public TemplateNodeCreator<TemplateNodeCreate> ...@@ -3518,7 +3536,7 @@ class TemplateNodeCreate : public TemplateNodeCreator<TemplateNodeCreate>
TemplateImpl *createTemplate = ct ? dynamic_cast<TemplateImpl*>(ct) : 0; TemplateImpl *createTemplate = ct ? dynamic_cast<TemplateImpl*>(ct) : 0;
if (createTemplate) if (createTemplate)
{ {
//mkpath(ci,outputFile); mkpath(ci,outputFile);
QCString extension=outputFile; QCString extension=outputFile;
int i=extension.findRev('.'); int i=extension.findRev('.');
if (i!=-1) if (i!=-1)
...@@ -4106,6 +4124,75 @@ class TemplateNodeMarkers : public TemplateNodeCreator<TemplateNodeMarkers> ...@@ -4106,6 +4124,75 @@ class TemplateNodeMarkers : public TemplateNodeCreator<TemplateNodeMarkers>
//---------------------------------------------------------- //----------------------------------------------------------
/** @brief Class representing an 'markers' tag in a template */
class TemplateNodeResource : public TemplateNodeCreator<TemplateNodeResource>
{
public:
TemplateNodeResource(TemplateParser *parser,TemplateNode *parent,int line,const QCString &data)
: TemplateNodeCreator<TemplateNodeResource>(parser,parent,line)
{
TRACE(("{TemplateNodeResource(%s)\n",data.data()));
ExpressionParser ep(parser,line);
int i;
if (data.isEmpty())
{
parser->warn(m_templateName,line,"resource tag is missing resource file argument");
m_resExpr=0;
m_asExpr=0;
}
else if ((i=data.find(" as "))!=-1) // resource a as b
{
m_resExpr = ep.parse(data.left(i)); // part before as
m_asExpr = ep.parse(data.mid(i+4)); // part after as
}
else // resource a
{
m_resExpr = ep.parse(data);
m_asExpr = 0;
}
TRACE(("}TemplateNodeResource(%s)\n",data.data()));
}
void render(FTextStream &, TemplateContext *c)
{
TemplateContextImpl *ci = dynamic_cast<TemplateContextImpl*>(c);
ci->setLocation(m_templateName,m_line);
if (m_resExpr)
{
QCString resourceFile = m_resExpr->resolve(c).toString();
if (resourceFile.isEmpty())
{
ci->warn(m_templateName,m_line,"invalid parameter for resource command\n");
}
else
{
QCString outputDirectory = ci->outputDirectory();
if (m_asExpr)
{
QCString targetFile = m_asExpr->resolve(c).toString();
mkpath(ci,targetFile);
if (targetFile.isEmpty())
{
ci->warn(m_templateName,m_line,"invalid parameter at right side of 'as' for resource command\n");
}
else
{
ResourceMgr::instance().copyResourceAs(resourceFile,outputDirectory,targetFile);
}
}
else
{
ResourceMgr::instance().copyResource(resourceFile,outputDirectory);
}
}
}
}
private:
ExprAst *m_resExpr;
ExprAst *m_asExpr;
};
//----------------------------------------------------------
/** @brief Factory class for creating tag AST nodes found in a template */ /** @brief Factory class for creating tag AST nodes found in a template */
class TemplateNodeFactory class TemplateNodeFactory
{ {
...@@ -4166,6 +4253,7 @@ static TemplateNodeFactory::AutoRegister<TemplateNodeCreate> autoRefCreate("c ...@@ -4166,6 +4253,7 @@ static TemplateNodeFactory::AutoRegister<TemplateNodeCreate> autoRefCreate("c
static TemplateNodeFactory::AutoRegister<TemplateNodeRepeat> autoRefRepeat("repeat"); static TemplateNodeFactory::AutoRegister<TemplateNodeRepeat> autoRefRepeat("repeat");
static TemplateNodeFactory::AutoRegister<TemplateNodeInclude> autoRefInclude("include"); static TemplateNodeFactory::AutoRegister<TemplateNodeInclude> autoRefInclude("include");
static TemplateNodeFactory::AutoRegister<TemplateNodeMarkers> autoRefMarkers("markers"); static TemplateNodeFactory::AutoRegister<TemplateNodeMarkers> autoRefMarkers("markers");
static TemplateNodeFactory::AutoRegister<TemplateNodeResource> autoRefResource("resource");
static TemplateNodeFactory::AutoRegister<TemplateNodeSpaceless> autoRefSpaceless("spaceless"); static TemplateNodeFactory::AutoRegister<TemplateNodeSpaceless> autoRefSpaceless("spaceless");
static TemplateNodeFactory::AutoRegister<TemplateNodeIndexEntry> autoRefIndexEntry("indexentry"); static TemplateNodeFactory::AutoRegister<TemplateNodeIndexEntry> autoRefIndexEntry("indexentry");
static TemplateNodeFactory::AutoRegister<TemplateNodeOpenSubIndex> autoRefOpenSubIndex("opensubindex"); static TemplateNodeFactory::AutoRegister<TemplateNodeOpenSubIndex> autoRefOpenSubIndex("opensubindex");
...@@ -4253,7 +4341,7 @@ void TemplateBlockContext::push(TemplateNodeBlock *block) ...@@ -4253,7 +4341,7 @@ void TemplateBlockContext::push(TemplateNodeBlock *block)
class TemplateLexer class TemplateLexer
{ {
public: public:
TemplateLexer(const TemplateEngine *engine,const QCString &fileName,const QCString &data); TemplateLexer(const TemplateEngine *engine,const QCString &fileName,const char *data,int size);
void tokenize(QList<TemplateToken> &tokens); void tokenize(QList<TemplateToken> &tokens);
private: private:
void addToken(QList<TemplateToken> &tokens, void addToken(QList<TemplateToken> &tokens,
...@@ -4265,9 +4353,12 @@ class TemplateLexer ...@@ -4265,9 +4353,12 @@ class TemplateLexer
QCString m_data; QCString m_data;
}; };
TemplateLexer::TemplateLexer(const TemplateEngine *engine,const QCString &fileName,const QCString &data) : TemplateLexer::TemplateLexer(const TemplateEngine *engine,const QCString &fileName,const char *data,int size) :
m_engine(engine), m_fileName(fileName), m_data(data) m_engine(engine), m_fileName(fileName)
{ {
m_data.resize(size+1);
memcpy(m_data.data(),data,size);
m_data[size]=0;
} }
void TemplateLexer::tokenize(QList<TemplateToken> &tokens) void TemplateLexer::tokenize(QList<TemplateToken> &tokens)
...@@ -4472,9 +4563,8 @@ void TemplateLexer::addToken(QList<TemplateToken> &tokens, ...@@ -4472,9 +4563,8 @@ void TemplateLexer::addToken(QList<TemplateToken> &tokens,
if (startPos<endPos) if (startPos<endPos)
{ {
int len = endPos-startPos+1; int len = endPos-startPos+1;
QCString text(len+1); QCString text(len);
qstrncpy(text.data(),data+startPos,len); qstrncpy(text.data(),data+startPos,len);
text[len]='\0';
if (type!=TemplateToken::Text) text = text.stripWhiteSpace(); if (type!=TemplateToken::Text) text = text.stripWhiteSpace();
tokens.append(new TemplateToken(type,text,line)); tokens.append(new TemplateToken(type,text,line));
} }
...@@ -4607,12 +4697,12 @@ void TemplateParser::warn(const char *fileName,int line,const char *fmt,...) con ...@@ -4607,12 +4697,12 @@ void TemplateParser::warn(const char *fileName,int line,const char *fmt,...) con
//---------------------------------------------------------- //----------------------------------------------------------
TemplateImpl::TemplateImpl(TemplateEngine *engine,const QCString &name,const QCString &data) TemplateImpl::TemplateImpl(TemplateEngine *engine,const QCString &name,const char *data,int size)
: TemplateNode(0) : TemplateNode(0)
{ {
m_name = name; m_name = name;
m_engine = engine; m_engine = engine;
TemplateLexer lexer(engine,name,data); TemplateLexer lexer(engine,name,data,size);
QList<TemplateToken> tokens; QList<TemplateToken> tokens;
tokens.setAutoDelete(TRUE); tokens.setAutoDelete(TRUE);
lexer.tokenize(tokens); lexer.tokenize(tokens);
...@@ -4681,6 +4771,13 @@ class TemplateEngine::Private ...@@ -4681,6 +4771,13 @@ class TemplateEngine::Private
Template *templ = m_templateCache.find(fileName); Template *templ = m_templateCache.find(fileName);
if (templ==0) if (templ==0)
{ {
const Resource *res = ResourceMgr::instance().get(fileName);
if (res)
{
templ = new TemplateImpl(m_engine,fileName,(const char *)res->data,res->size);
m_templateCache.insert(fileName,templ);
}
#if 0
QFile f(fileName); QFile f(fileName);
if (f.open(IO_ReadOnly)) if (f.open(IO_ReadOnly))
{ {
...@@ -4697,6 +4794,7 @@ class TemplateEngine::Private ...@@ -4697,6 +4794,7 @@ class TemplateEngine::Private
delete[] data; delete[] data;
} }
} }
#endif
else else
{ {
err("Cound not open template file %s\n",fileName.data()); err("Cound not open template file %s\n",fileName.data());
......
...@@ -46,6 +46,7 @@ ...@@ -46,6 +46,7 @@
#include "dirdef.h" #include "dirdef.h"
#include "section.h" #include "section.h"
#include "htmlentity.h" #include "htmlentity.h"
#include "resourcemgr.h"
// no debug info // no debug info
#define XML_DB(x) do {} while(0) #define XML_DB(x) do {} while(0)
...@@ -56,18 +57,6 @@ ...@@ -56,18 +57,6 @@
//------------------ //------------------
static const char index_xsd[] =
#include "index.xsd.h"
;
//------------------
//
static const char compound_xsd[] =
#include "compound.xsd.h"
;
//------------------
/** Helper class mapping MemberList::ListType to a string representing */ /** Helper class mapping MemberList::ListType to a string representing */
class XmlSectionMapper : public QIntDict<char> class XmlSectionMapper : public QIntDict<char>
{ {
...@@ -1387,37 +1376,6 @@ static void generateXMLForClass(ClassDef *cd,FTextStream &ti) ...@@ -1387,37 +1376,6 @@ static void generateXMLForClass(ClassDef *cd,FTextStream &ti)
generateXMLSection(cd,ti,t,ml,g_xmlSectionMapper.find(ml->listType())); generateXMLSection(cd,ti,t,ml,g_xmlSectionMapper.find(ml->listType()));
} }
} }
#if 0
generateXMLSection(cd,ti,t,cd->pubTypes,"public-type");
generateXMLSection(cd,ti,t,cd->pubMethods,"public-func");
generateXMLSection(cd,ti,t,cd->pubAttribs,"public-attrib");
generateXMLSection(cd,ti,t,cd->pubSlots,"public-slot");
generateXMLSection(cd,ti,t,cd->signals,"signal");
generateXMLSection(cd,ti,t,cd->dcopMethods,"dcop-func");
generateXMLSection(cd,ti,t,cd->properties,"property");
generateXMLSection(cd,ti,t,cd->events,"event");
generateXMLSection(cd,ti,t,cd->pubStaticMethods,"public-static-func");
generateXMLSection(cd,ti,t,cd->pubStaticAttribs,"public-static-attrib");
generateXMLSection(cd,ti,t,cd->proTypes,"protected-type");
generateXMLSection(cd,ti,t,cd->proMethods,"protected-func");
generateXMLSection(cd,ti,t,cd->proAttribs,"protected-attrib");
generateXMLSection(cd,ti,t,cd->proSlots,"protected-slot");
generateXMLSection(cd,ti,t,cd->proStaticMethods,"protected-static-func");
generateXMLSection(cd,ti,t,cd->proStaticAttribs,"protected-static-attrib");
generateXMLSection(cd,ti,t,cd->pacTypes,"package-type");
generateXMLSection(cd,ti,t,cd->pacMethods,"package-func");
generateXMLSection(cd,ti,t,cd->pacAttribs,"package-attrib");
generateXMLSection(cd,ti,t,cd->pacStaticMethods,"package-static-func");
generateXMLSection(cd,ti,t,cd->pacStaticAttribs,"package-static-attrib");
generateXMLSection(cd,ti,t,cd->priTypes,"private-type");
generateXMLSection(cd,ti,t,cd->priMethods,"private-func");
generateXMLSection(cd,ti,t,cd->priAttribs,"private-attrib");
generateXMLSection(cd,ti,t,cd->priSlots,"private-slot");
generateXMLSection(cd,ti,t,cd->priStaticMethods,"private-static-func");
generateXMLSection(cd,ti,t,cd->priStaticAttribs,"private-static-attrib");
generateXMLSection(cd,ti,t,cd->friends,"friend");
generateXMLSection(cd,ti,t,cd->related,"related");
#endif
t << " <briefdescription>" << endl; t << " <briefdescription>" << endl;
writeXMLDocBlock(t,cd->briefFile(),cd->briefLine(),cd,0,cd->briefDescription()); writeXMLDocBlock(t,cd->briefFile(),cd->briefLine(),cd,0,cd->briefDescription());
...@@ -1519,14 +1477,6 @@ static void generateXMLForNamespace(NamespaceDef *nd,FTextStream &ti) ...@@ -1519,14 +1477,6 @@ static void generateXMLForNamespace(NamespaceDef *nd,FTextStream &ti)
generateXMLSection(nd,ti,t,ml,g_xmlSectionMapper.find(ml->listType())); generateXMLSection(nd,ti,t,ml,g_xmlSectionMapper.find(ml->listType()));
} }
} }
#if 0
generateXMLSection(nd,ti,t,&nd->decDefineMembers,"define");
generateXMLSection(nd,ti,t,&nd->decProtoMembers,"prototype");
generateXMLSection(nd,ti,t,&nd->decTypedefMembers,"typedef");
generateXMLSection(nd,ti,t,&nd->decEnumMembers,"enum");
generateXMLSection(nd,ti,t,&nd->decFuncMembers,"func");
generateXMLSection(nd,ti,t,&nd->decVarMembers,"var");
#endif
t << " <briefdescription>" << endl; t << " <briefdescription>" << endl;
writeXMLDocBlock(t,nd->briefFile(),nd->briefLine(),nd,0,nd->briefDescription()); writeXMLDocBlock(t,nd->briefFile(),nd->briefLine(),nd,0,nd->briefDescription());
...@@ -1663,14 +1613,6 @@ static void generateXMLForFile(FileDef *fd,FTextStream &ti) ...@@ -1663,14 +1613,6 @@ static void generateXMLForFile(FileDef *fd,FTextStream &ti)
generateXMLSection(fd,ti,t,ml,g_xmlSectionMapper.find(ml->listType())); generateXMLSection(fd,ti,t,ml,g_xmlSectionMapper.find(ml->listType()));
} }
} }
#if 0
generateXMLSection(fd,ti,t,fd->decDefineMembers,"define");
generateXMLSection(fd,ti,t,fd->decProtoMembers,"prototype");
generateXMLSection(fd,ti,t,fd->decTypedefMembers,"typedef");
generateXMLSection(fd,ti,t,fd->decEnumMembers,"enum");
generateXMLSection(fd,ti,t,fd->decFuncMembers,"func");
generateXMLSection(fd,ti,t,fd->decVarMembers,"var");
#endif
t << " <briefdescription>" << endl; t << " <briefdescription>" << endl;
writeXMLDocBlock(t,fd->briefFile(),fd->briefLine(),fd,0,fd->briefDescription()); writeXMLDocBlock(t,fd->briefFile(),fd->briefLine(),fd,0,fd->briefDescription());
...@@ -1753,14 +1695,6 @@ static void generateXMLForGroup(GroupDef *gd,FTextStream &ti) ...@@ -1753,14 +1695,6 @@ static void generateXMLForGroup(GroupDef *gd,FTextStream &ti)
generateXMLSection(gd,ti,t,ml,g_xmlSectionMapper.find(ml->listType())); generateXMLSection(gd,ti,t,ml,g_xmlSectionMapper.find(ml->listType()));
} }
} }
#if 0
generateXMLSection(gd,ti,t,&gd->decDefineMembers,"define");
generateXMLSection(gd,ti,t,&gd->decProtoMembers,"prototype");
generateXMLSection(gd,ti,t,&gd->decTypedefMembers,"typedef");
generateXMLSection(gd,ti,t,&gd->decEnumMembers,"enum");
generateXMLSection(gd,ti,t,&gd->decFuncMembers,"func");
generateXMLSection(gd,ti,t,&gd->decVarMembers,"var");
#endif
t << " <briefdescription>" << endl; t << " <briefdescription>" << endl;
writeXMLDocBlock(t,gd->briefFile(),gd->briefLine(),gd,0,gd->briefDescription()); writeXMLDocBlock(t,gd->briefFile(),gd->briefLine(),gd,0,gd->briefDescription());
...@@ -1906,18 +1840,11 @@ void generateXML() ...@@ -1906,18 +1840,11 @@ void generateXML()
QCString outputDirectory = Config_getString("XML_OUTPUT"); QCString outputDirectory = Config_getString("XML_OUTPUT");
QDir xmlDir(outputDirectory); QDir xmlDir(outputDirectory);
createSubDirs(xmlDir); createSubDirs(xmlDir);
QCString fileName=outputDirectory+"/index.xsd";
QFile f(fileName);
if (!f.open(IO_WriteOnly))
{
err("Cannot open file %s for writing!\n",fileName.data());
return;
}
f.writeBlock(index_xsd,qstrlen(index_xsd));
f.close();
fileName=outputDirectory+"/compound.xsd"; ResourceMgr::instance().copyResource("index.xsd",outputDirectory);
f.setName(fileName);
QCString fileName=outputDirectory+"/compound.xsd";
QFile f(fileName);
if (!f.open(IO_WriteOnly)) if (!f.open(IO_WriteOnly))
{ {
err("Cannot open file %s for writing!\n",fileName.data()); err("Cannot open file %s for writing!\n",fileName.data());
...@@ -1925,7 +1852,8 @@ void generateXML() ...@@ -1925,7 +1852,8 @@ void generateXML()
} }
// write compound.xsd, but replace special marker with the entities // write compound.xsd, but replace special marker with the entities
const char *startLine = compound_xsd; QCString compound_xsd = ResourceMgr::instance().getAsString("compound.xsd");
const char *startLine = compound_xsd.data();
while (*startLine) while (*startLine)
{ {
// find end of the line // find end of the line
......
# folder open icon
# width & height
16 22
# luma data
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 152 152 152 152 152 152 152 152 152 255 255 255 255
255 255 255 152 152 152 152 152 152 152 152 152 255 255 255 255
255 255 255 255 152 152 152 152 152 152 152 255 255 255 255 255
255 255 255 255 152 152 152 152 152 152 152 255 255 255 255 255
255 255 255 255 255 152 152 152 152 152 255 255 255 255 255 255
255 255 255 255 255 255 152 152 152 255 255 255 255 255 255 255
255 255 255 255 255 255 152 152 152 255 255 255 255 255 255 255
255 255 255 255 255 255 255 152 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
# alpha data
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 231 255 255 255 255 255 255 255 216 0 0 0 0
0 0 0 87 255 255 255 255 255 255 255 65 0 0 0 0
0 0 0 0 186 255 255 255 255 255 164 0 0 0 0 0
0 0 0 0 38 251 255 255 255 241 25 0 0 0 0 0
0 0 0 0 0 127 255 255 255 107 0 0 0 0 0 0
0 0 0 0 0 0 221 255 204 0 0 0 0 0 0 0
0 0 0 0 0 0 72 253 52 0 0 0 0 0 0 0
0 0 0 0 0 0 0 77 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
# folder open icon
# width & height
16 22
# luma data
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 152 152 255 255 255 255 255 255 255 255 255 255 255
255 255 255 152 152 152 152 255 255 255 255 255 255 255 255 255
255 255 255 152 152 152 152 152 255 255 255 255 255 255 255 255
255 255 255 152 152 152 152 152 152 152 255 255 255 255 255 255
255 255 255 152 152 152 152 152 152 152 152 255 255 255 255 255
255 255 255 152 152 152 152 152 152 152 255 255 255 255 255 255
255 255 255 152 152 152 152 152 255 255 255 255 255 255 255 255
255 255 255 152 152 152 152 255 255 255 255 255 255 255 255 255
255 255 255 152 152 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
# alpha data
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 223 75 0 0 0 0 0 0 0 0 0 0 0
0 0 0 255 255 176 33 0 0 0 0 0 0 0 0 0
0 0 0 255 255 255 248 117 0 0 0 0 0 0 0 0
0 0 0 255 255 255 255 255 211 60 0 0 0 0 0 0
0 0 0 255 255 255 255 255 255 255 77 0 0 0 0 0
0 0 0 255 255 255 255 255 211 60 0 0 0 0 0 0
0 0 0 255 255 255 248 117 0 0 0 0 0 0 0 0
0 0 0 255 255 176 33 0 0 0 0 0 0 0 0 0
0 0 0 223 75 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
# breadcrumb tabs
# width & height
8 30
# luma data
150 187 187 148 148 148 148 148
147 175 186 147 147 147 147 147
146 153 185 185 146 146 146 146
144 144 177 183 144 144 144 144
144 144 159 182 144 144 144 144
143 143 144 179 181 143 143 143
142 142 142 165 180 142 142 142
141 141 141 144 178 178 141 141
139 139 139 139 167 176 139 139
137 137 137 137 146 174 137 137
137 137 137 137 137 169 173 137
135 135 135 135 135 150 171 135
133 133 133 133 133 135 167 169
132 132 132 132 132 132 154 167
129 129 129 129 129 129 140 164
129 129 129 129 129 129 154 163
127 127 127 127 127 128 161 161
125 125 125 125 125 141 158 125
123 123 123 123 123 152 156 123
121 121 121 121 129 154 121 121
120 120 120 120 143 152 120 120
118 118 118 120 150 150 118 118
117 117 117 132 148 117 117 117
114 114 114 142 145 114 114 114
113 113 120 143 113 113 113 113
111 111 133 141 111 111 111 111
110 112 140 140 110 110 110 110
109 124 138 109 109 109 109 109
107 133 136 107 107 107 107 107
111 134 106 106 106 106 106 106
# alpha data
241 241 21 0 0 0 0 0
162 205 117 0 0 0 0 0
54 231 225 3 0 0 0 0
0 198 215 78 0 0 0 0
0 93 211 186 0 0 0 0
0 6 232 235 42 0 0 0
0 0 132 203 147 0 0 0
0 0 27 242 241 15 0 0
0 0 0 168 205 108 0 0
0 0 0 63 228 219 0 0
0 0 0 0 207 221 72 0
0 0 0 0 102 208 177 0
0 0 0 0 9 238 240 36
0 0 0 0 0 138 201 138
0 0 0 0 0 77 187 158
0 0 0 0 0 159 204 120
0 0 0 0 15 241 241 21
0 0 0 0 111 208 171 0
0 0 0 0 210 222 66 0
0 0 0 60 227 219 0 0
0 0 0 162 204 114 0 0
0 0 18 238 238 21 0 0
0 0 114 205 165 0 0 0
0 0 216 225 60 0 0 0
0 66 226 216 0 0 0 0
0 165 204 111 0 0 0 0
21 241 241 18 0 0 0 0
117 203 159 0 0 0 0 0
219 227 57 0 0 0 0 0
211 201 0 0 0 0 0 0
# arrow down button
# width height
7 8
# luma data
0 0 0 142 0 0 0
0 0 0 142 0 0 0
0 0 0 142 0 0 0
142 0 0 142 0 0 142
142 142 0 142 0 142 142
142 142 142 142 142 142 142
0 142 142 142 142 142 0
0 0 142 142 142 0 0
# alpha data
0 0 0 255 0 0 0
0 0 0 255 0 0 0
0 0 0 255 0 0 0
128 0 0 255 0 0 128
255 128 0 255 0 128 255
128 255 128 255 128 255 128
0 128 255 255 255 128 0
0 0 128 255 128 0 0
# tree closed icon
# width & height
9 9
# luma data
0 0 0 0 142 0 0 0 0
0 0 0 0 142 142 0 0 0
0 0 0 0 142 142 142 0 0
0 0 0 0 142 142 142 142 0
0 0 0 0 142 142 142 142 142
0 0 0 0 142 142 142 142 0
0 0 0 0 142 142 142 0 0
0 0 0 0 142 142 0 0 0
0 0 0 0 142 0 0 0 0
# alpha data
0 0 0 0 255 0 0 0 0
0 0 0 0 255 255 0 0 0
0 0 0 0 255 255 255 0 0
0 0 0 0 255 255 255 255 0
0 0 0 0 255 255 255 255 255
0 0 0 0 255 255 255 255 0
0 0 0 0 255 255 255 0 0
0 0 0 0 255 255 0 0 0
0 0 0 0 255 0 0 0 0
# document icon
# width & height
24 22
# luma data
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 218 214 208 208 204 191 179 190 197 209 231 255 255 255 255 255 255 255 255
255 255 255 255 255 195 224 226 226 222 214 204 181 203 229 188 225 255 255 255 255 255 255 255
255 255 255 255 255 198 226 228 227 227 224 215 203 180 252 229 184 224 255 255 255 255 255 255
255 255 255 255 255 198 229 230 229 229 228 224 214 154 252 252 229 187 235 255 255 255 255 255
255 255 255 255 255 198 232 233 233 232 231 230 223 176 154 144 165 177 216 255 255 255 255 255
255 255 255 255 255 198 236 236 216 226 238 219 232 225 209 190 189 166 193 255 255 255 255 255
255 255 255 255 255 198 239 240 178 177 230 175 169 184 188 219 208 189 187 255 255 255 255 255
255 255 255 255 255 198 241 242 240 218 237 236 240 235 241 244 221 208 182 255 255 255 255 255
255 255 255 255 255 198 243 243 188 154 183 158 166 140 185 198 231 219 177 255 255 255 255 255
255 255 255 255 255 198 243 245 248 228 241 241 226 249 237 227 239 232 177 255 255 255 255 255
255 255 255 255 255 198 244 246 213 172 163 149 171 200 167 149 242 239 177 255 255 255 255 255
255 255 255 255 255 198 249 248 240 218 237 236 240 235 241 244 244 242 177 255 255 255 255 255
255 255 255 255 255 198 249 251 188 155 184 158 166 140 185 198 246 244 177 255 255 255 255 255
255 255 255 255 255 198 251 253 248 228 241 241 226 249 237 227 249 246 177 255 255 255 255 255
255 255 255 255 255 196 253 252 252 252 252 251 251 250 250 249 249 248 175 255 255 255 255 255
255 255 255 255 255 194 64 30 37 37 37 37 37 37 37 37 30 64 188 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
# alpha data
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0 0 0 0
0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0 0 0
0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0 0
0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0
0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0
0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0
0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0
0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0
0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0
0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0
0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0
0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0
0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0
0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0
0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0
0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
...@@ -773,7 +773,7 @@ div.directory { ...@@ -773,7 +773,7 @@ div.directory {
width: 24px; width: 24px;
height: 18px; height: 18px;
margin-bottom: 4px; margin-bottom: 4px;
background-image:url('ftv2folderopen.png'); background-image:url('folderopen.png');
background-position: 0px -4px; background-position: 0px -4px;
background-repeat: repeat-y; background-repeat: repeat-y;
vertical-align:top; vertical-align:top;
...@@ -784,7 +784,7 @@ div.directory { ...@@ -784,7 +784,7 @@ div.directory {
width: 24px; width: 24px;
height: 18px; height: 18px;
margin-bottom: 4px; margin-bottom: 4px;
background-image:url('ftv2folderclosed.png'); background-image:url('folderclosed.png');
background-position: 0px -4px; background-position: 0px -4px;
background-repeat: repeat-y; background-repeat: repeat-y;
vertical-align:top; vertical-align:top;
...@@ -795,7 +795,7 @@ div.directory { ...@@ -795,7 +795,7 @@ div.directory {
width: 24px; width: 24px;
height: 18px; height: 18px;
margin-bottom: 4px; margin-bottom: 4px;
background-image:url('ftv2doc.png'); background-image:url('doc.png');
background-position: 0px -4px; background-position: 0px -4px;
background-repeat: repeat-y; background-repeat: repeat-y;
vertical-align:top; vertical-align:top;
......
# doxygen logo
# width & height
104 31
# luma data
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 255 255 255 255 255 255 255 255
32 32 32 32 32 32 32 32 32 32 91 91 91 91 32 32 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
32 32 32 32 32 32 32 32 32 32 255 255 255 255 32 32 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
32 32 32 32 32 32 32 32 32 32 253 253 253 253 32 32 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 253 255 255 255 255 255 255 255 255
32 32 32 32 32 32 32 32 32 32 251 251 251 251 32 32 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 251 255 255 255 255 255 255 255 255
32 32 32 32 32 32 32 32 32 32 249 249 249 249 32 32 249 249 249 249 32 32 32 32 32 32 249 249 249 249 32 32 32 32 32 32 249 249 249 249 32 32 32 32 32 32 32 32 32 32 249 249 249 32 32 32 32 32 249 249 249 249 32 32 32 32 32 32 32 32 32 32 249 249 249 249 249 249 32 32 32 32 32 32 32 249 249 249 249 249 32 32 32 32 32 249 32 32 32 32 32 255 255 255
32 32 32 32 46 132 190 190 147 61 247 247 247 247 32 32 247 247 32 32 118 161 190 190 161 118 32 32 247 32 46 89 89 89 89 46 32 247 247 32 89 89 89 89 61 89 89 89 89 46 32 247 32 46 89 89 89 89 32 247 32 32 118 175 190 161 89 61 89 89 89 61 32 247 247 247 32 32 104 147 190 190 190 132 89 32 32 247 247 32 46 89 89 89 75 32 89 161 190 161 75 32 255 255
32 32 32 74 230 244 244 244 244 244 244 244 244 244 32 32 244 32 74 216 244 244 244 244 244 244 216 74 32 244 32 187 244 244 244 159 32 244 32 117 244 244 244 230 46 173 244 244 244 131 32 244 32 131 244 244 244 173 32 32 46 173 244 244 244 244 244 230 244 244 244 131 32 244 244 32 74 202 244 244 244 244 244 244 244 173 46 32 244 32 89 244 244 244 187 145 244 244 244 244 244 89 32 255
32 32 46 213 241 241 241 241 241 241 241 241 241 241 32 32 32 60 227 241 241 241 241 241 241 241 241 227 60 32 32 46 227 241 241 241 102 32 60 227 241 241 241 88 32 116 241 241 241 199 32 241 32 185 241 241 241 116 32 32 143 241 241 241 241 241 241 241 241 241 241 130 32 241 32 74 227 241 241 241 199 185 241 241 241 241 171 32 241 32 88 241 241 241 241 241 241 241 241 241 241 199 32 255
32 32 128 237 237 237 223 128 87 128 237 237 237 237 32 32 32 182 237 237 237 196 100 100 196 237 237 237 182 32 237 32 100 237 237 237 223 59 196 237 237 237 141 32 32 46 237 237 237 237 59 32 46 237 237 237 237 46 32 59 237 237 237 237 169 87 87 182 237 237 237 128 32 237 32 196 237 237 237 87 32 32 73 223 237 237 237 73 32 32 87 237 237 237 237 223 182 223 237 237 237 237 46 32
32 32 207 234 234 234 113 32 32 32 234 234 234 234 32 32 59 234 234 234 221 45 32 32 45 221 234 234 234 59 32 234 32 140 234 234 234 221 234 234 234 194 32 32 234 32 167 234 234 234 126 32 99 234 234 234 167 32 32 126 234 234 234 180 32 32 32 126 234 234 234 126 32 32 99 234 234 234 167 32 32 32 32 153 234 234 234 126 32 32 86 234 234 234 207 45 32 45 234 234 234 234 86 32
32 45 231 231 231 218 32 32 32 32 231 231 231 231 32 32 98 231 231 231 165 32 231 231 32 165 231 231 231 98 32 231 32 45 191 231 231 231 231 231 218 72 32 231 231 32 98 231 231 231 165 32 151 231 231 231 112 32 32 165 231 231 231 112 32 231 32 125 231 231 231 125 32 32 138 231 231 231 178 125 125 125 125 178 231 231 231 178 32 32 85 231 231 231 178 32 255 32 191 231 231 231 85 32
32 84 227 227 227 175 32 32 32 32 227 227 227 227 32 32 123 227 227 227 123 32 227 227 32 123 227 227 227 123 32 227 227 32 71 227 227 227 227 227 123 32 227 227 227 227 32 214 227 227 227 45 201 227 227 227 45 32 32 175 227 227 227 84 32 227 32 123 227 227 227 123 32 32 175 227 227 227 227 227 227 227 227 227 227 227 227 175 32 32 84 227 227 227 175 32 255 32 175 227 227 227 84 32
32 83 223 223 223 172 32 32 32 32 223 223 223 223 32 32 121 223 223 223 121 32 223 223 32 121 223 223 223 121 32 223 223 223 32 172 223 223 223 210 45 32 223 223 223 223 32 147 223 223 223 134 223 223 223 147 32 223 32 172 223 223 223 83 32 223 32 121 223 223 223 121 32 32 172 223 223 223 223 223 223 223 223 223 223 223 223 172 32 32 83 223 223 223 172 32 255 32 172 223 223 223 83 32
32 82 220 220 220 170 32 32 32 32 220 220 220 220 32 32 120 220 220 220 120 32 220 220 32 120 220 220 220 120 32 220 220 32 95 220 220 220 220 220 132 32 220 220 220 220 32 95 220 220 220 207 220 220 220 95 32 220 32 170 220 220 220 107 32 220 32 120 220 220 220 120 32 32 170 220 220 220 132 32 32 32 32 32 32 32 32 32 32 32 82 220 220 220 170 32 255 32 170 220 220 220 82 32
32 57 216 216 216 216 32 32 32 32 216 216 216 216 32 32 81 216 216 216 167 32 216 216 32 155 216 216 216 81 32 216 32 57 204 216 216 216 216 216 216 93 32 216 216 216 216 32 204 216 216 216 216 216 204 32 216 216 32 118 216 216 216 167 32 32 32 130 216 216 216 118 32 32 118 216 216 216 191 32 32 216 216 216 32 32 44 57 32 32 81 216 216 216 167 32 255 32 167 216 216 216 81 32
32 32 189 213 213 213 116 32 32 80 213 213 213 213 32 32 44 201 213 213 213 68 32 32 68 213 213 213 213 44 32 32 32 165 213 213 213 165 213 213 213 201 44 32 213 213 213 32 129 213 213 213 213 213 141 32 213 213 32 80 213 213 213 213 165 116 153 213 213 213 213 116 32 32 56 213 213 213 213 153 56 32 32 32 44 104 189 116 32 32 80 213 213 213 165 32 255 32 165 213 213 213 80 32
32 32 139 210 210 210 210 174 174 210 210 210 210 210 32 32 32 127 210 210 210 198 127 127 198 210 210 210 127 32 210 32 115 210 210 210 174 44 139 210 210 210 163 32 32 210 210 32 68 210 210 210 210 210 91 32 210 210 210 32 174 210 210 210 210 210 210 210 210 210 210 115 32 210 32 127 210 210 210 210 210 174 163 163 210 210 210 115 32 32 79 210 210 210 163 32 255 32 163 210 210 210 79 32
32 32 55 194 206 206 206 206 206 194 206 206 206 206 32 32 32 44 171 206 206 206 206 206 206 206 206 171 44 32 32 67 206 206 206 206 67 32 44 183 206 206 206 113 32 206 206 206 32 183 206 206 206 194 32 206 206 206 206 32 67 194 206 206 206 206 206 171 206 206 206 113 32 206 32 32 136 206 206 206 206 206 206 206 206 206 206 113 32 32 78 206 206 206 160 32 255 32 160 206 206 206 78 32
32 32 32 100 192 203 203 203 157 55 203 203 203 203 32 32 203 32 43 135 203 203 203 203 203 203 135 43 32 32 43 180 203 203 203 112 32 203 32 66 203 203 203 203 66 32 203 203 32 157 203 203 203 135 32 203 203 203 203 203 32 43 112 157 157 123 55 112 203 203 203 112 32 203 203 32 32 78 146 203 203 203 203 203 203 169 123 55 32 32 78 203 203 203 157 32 255 32 157 203 203 203 78 32
32 32 32 32 54 110 110 88 32 32 32 32 32 32 32 32 200 200 32 32 54 99 110 110 99 54 32 32 200 200 32 32 32 32 32 32 32 200 200 32 32 32 32 32 32 200 200 32 54 200 200 200 200 77 32 200 200 200 200 200 32 32 32 32 32 32 32 166 200 200 200 88 32 200 200 200 200 32 32 32 66 77 77 77 32 32 32 32 200 200 32 32 32 32 32 32 255 32 32 32 32 32 32 255
32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 198 198 198 198 32 32 32 32 32 32 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 198 32 109 198 198 198 176 32 198 198 198 198 198 32 98 121 76 32 32 54 109 198 198 198 198 43 32 198 198 198 198 198 198 198 32 32 32 32 198 198 198 198 198 198 198 198 198 198 198 198 255 255 255 255 255 255 255 255
32 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 33 159 191 191 191 117 36 41 41 41 41 41 34 108 191 191 191 191 191 191 191 191 191 117 36 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 255
32 41 97 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 78 38 64 190 192 192 192 66 66 41 41 85 128 65 34 107 190 192 192 192 192 192 192 192 139 48 39 41 41 105 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 97 41 255
32 41 97 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 96 36 95 147 148 148 139 55 41 41 85 121 128 91 38 75 137 158 190 190 190 170 139 97 49 37 41 41 105 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 97 41 255
32 41 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 41 36 45 45 45 48 38 41 41 76 76 76 76 76 37 34 42 33 33 33 39 48 59 41 41 41 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 41 255
32 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
# alpha data
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 66 66 66 66 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 145 247 247 247 247 145 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 247 247 247 247 247 247 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 247 247 247 247 247 247 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 247 247 247 247 247 247 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 16 115 181 181 132 247 247 247 247 247 247 0 0 0 0 0 99 148 181 181 148 99 0 0 0 0 16 66 66 66 66 16 0 0 0 0 66 66 66 66 33 66 66 66 66 16 0 0 0 16 66 66 66 66 0 0 0 0 99 165 181 148 66 33 66 66 66 33 0 0 0 0 0 0 82 132 181 181 181 115 66 0 0 0 0 0 16 66 66 66 49 0 66 148 181 148 49 0 0 0
0 0 0 129 247 247 247 247 247 247 247 247 247 247 247 0 0 0 112 214 247 247 247 247 247 247 214 112 0 16 247 247 247 247 247 247 46 0 0 145 247 247 247 247 247 247 247 247 247 247 16 0 16 247 247 247 247 247 66 0 63 165 247 247 247 247 247 247 247 247 247 247 33 0 0 0 96 198 247 247 247 247 247 247 247 165 63 0 0 16 247 247 247 247 247 145 247 247 247 247 247 145 0 0
0 0 112 247 247 247 247 247 247 247 247 247 247 247 247 0 0 129 247 247 247 247 247 247 247 247 247 247 129 0 181 247 247 247 247 247 148 0 129 247 247 247 247 247 247 247 247 247 247 247 115 0 115 247 247 247 247 247 165 30 247 247 247 247 247 247 247 247 247 247 247 247 115 0 0 129 247 247 247 247 247 247 247 247 247 247 247 63 0 66 247 247 247 247 247 247 247 247 247 247 247 247 96 0
0 16 247 247 247 247 247 247 247 247 247 247 247 247 247 0 79 247 247 247 247 247 247 247 247 247 247 247 247 79 79 247 247 247 247 247 247 129 247 247 247 247 247 247 129 247 247 247 247 247 198 0 181 247 247 247 247 247 99 145 247 247 247 247 247 247 247 247 247 247 247 247 115 0 96 247 247 247 247 247 247 247 247 247 247 247 247 165 0 66 247 247 247 247 247 247 247 247 247 247 247 247 198 0
0 115 247 247 247 247 247 247 247 247 247 247 247 247 247 0 181 247 247 247 247 247 247 247 247 247 247 247 247 181 0 129 247 247 247 247 247 247 247 247 247 247 247 145 16 247 247 247 247 247 247 33 247 247 247 247 247 247 33 247 247 247 247 247 247 247 247 247 247 247 247 247 115 0 198 247 247 247 247 247 198 181 247 247 247 247 247 247 49 66 247 247 247 247 247 247 247 247 247 247 247 247 247 16
0 214 247 247 247 247 247 129 66 247 247 247 247 247 247 33 247 247 247 247 247 247 96 96 247 247 247 247 247 247 33 0 145 247 247 247 247 247 247 247 247 247 198 30 0 165 247 247 247 247 247 115 247 247 247 247 247 165 115 247 247 247 247 247 181 66 115 247 247 247 247 247 115 82 247 247 247 247 247 165 115 115 148 247 247 247 247 247 115 66 247 247 247 247 247 247 181 247 247 247 247 247 247 66
16 247 247 247 247 247 231 0 0 247 247 247 247 247 247 82 247 247 247 247 247 165 0 0 165 247 247 247 247 247 82 0 30 247 247 247 247 247 247 247 247 247 96 0 0 82 247 247 247 247 247 165 247 247 247 247 247 99 165 247 247 247 247 247 99 0 115 247 247 247 247 247 115 132 247 247 247 247 247 247 247 247 247 247 247 247 247 247 181 66 247 247 247 247 247 181 0 198 247 247 247 247 247 66
66 247 247 247 247 247 181 0 0 247 247 247 247 247 247 115 247 247 247 247 247 115 0 0 115 247 247 247 247 247 115 0 0 96 247 247 247 247 247 247 247 129 0 0 0 0 231 247 247 247 247 247 247 247 247 247 247 16 181 247 247 247 247 247 66 0 115 247 247 247 247 247 115 181 247 247 247 247 247 247 247 247 247 247 247 247 247 247 181 66 247 247 247 247 247 181 0 181 247 247 247 247 247 66
66 247 247 247 247 247 181 0 0 247 247 247 247 247 247 115 247 247 247 247 247 115 0 0 115 247 247 247 247 247 115 0 0 0 181 247 247 247 247 247 247 30 0 0 0 0 148 247 247 247 247 247 247 247 247 247 148 0 181 247 247 247 247 247 66 0 115 247 247 247 247 247 115 181 247 247 247 247 247 247 247 247 247 247 247 247 247 247 181 66 247 247 247 247 247 181 0 181 247 247 247 247 247 66
66 247 247 247 247 247 181 0 0 247 247 247 247 247 247 115 247 247 247 247 247 115 0 0 115 247 247 247 247 247 115 0 0 129 247 247 247 247 247 247 247 145 0 0 0 0 82 247 247 247 247 247 247 247 247 247 82 0 181 247 247 247 247 247 99 0 115 247 247 247 247 247 115 181 247 247 247 247 247 247 247 247 247 247 247 247 247 181 79 66 247 247 247 247 247 181 0 181 247 247 247 247 247 66
33 247 247 247 247 247 247 14 0 247 247 247 247 247 247 66 247 247 247 247 247 181 0 0 165 247 247 247 247 247 66 0 79 247 247 247 247 247 247 247 247 247 129 0 0 0 0 231 247 247 247 247 247 247 247 231 0 0 115 247 247 247 247 247 181 115 165 247 247 247 247 247 115 115 247 247 247 247 247 214 63 0 0 0 16 112 247 247 33 66 247 247 247 247 247 181 0 181 247 247 247 247 247 66
0 214 247 247 247 247 247 198 198 247 247 247 247 247 247 16 247 247 247 247 247 247 132 132 247 247 247 247 247 247 16 14 181 247 247 247 247 247 247 247 247 247 247 79 0 0 0 132 247 247 247 247 247 247 247 148 0 0 66 247 247 247 247 247 247 247 247 247 247 247 247 247 115 33 247 247 247 247 247 247 247 198 181 181 247 247 247 247 115 66 247 247 247 247 247 181 0 181 247 247 247 247 247 66
0 148 247 247 247 247 247 247 247 247 247 247 247 247 247 0 132 247 247 247 247 247 247 247 247 247 247 247 247 145 0 145 247 247 247 247 247 247 247 247 247 247 247 181 14 0 0 49 247 247 247 247 247 247 247 82 0 0 0 198 247 247 247 247 247 247 247 247 247 247 247 247 115 0 145 247 247 247 247 247 247 247 247 247 247 247 247 247 115 66 247 247 247 247 247 181 0 181 247 247 247 247 247 66
0 46 247 247 247 247 247 247 247 247 247 247 247 247 247 0 30 247 247 247 247 247 247 247 247 247 247 247 247 30 112 247 247 247 247 247 247 96 247 247 247 247 247 247 145 0 0 0 214 247 247 247 247 247 231 0 0 0 0 96 247 247 247 247 247 247 247 247 247 247 247 247 115 0 30 148 247 247 247 247 247 247 247 247 247 247 247 247 115 66 247 247 247 247 247 181 0 181 247 247 247 247 247 66
0 0 129 247 247 247 247 247 247 247 247 247 247 247 247 0 0 96 247 247 247 247 247 247 247 247 247 247 96 16 247 247 247 247 247 247 145 0 112 247 247 247 247 247 247 49 0 0 181 247 247 247 247 247 148 0 0 0 0 0 129 247 247 247 247 247 247 247 247 247 247 247 115 0 0 46 148 247 247 247 247 247 247 247 247 247 247 247 33 66 247 247 247 247 247 181 0 181 247 247 247 247 247 66
0 0 0 129 247 247 247 247 181 145 247 247 247 247 145 0 0 0 46 148 247 247 247 247 247 247 148 46 0 0 112 214 247 247 247 145 14 0 0 145 247 247 247 247 145 0 0 33 247 247 247 247 247 247 66 0 0 0 0 0 99 132 115 181 181 132 198 247 247 247 247 247 82 0 0 0 0 66 165 247 247 247 247 247 247 198 132 33 0 0 145 247 247 247 181 79 0 79 181 247 247 247 145 0
0 0 0 0 33 115 115 82 0 0 0 0 0 0 0 0 0 0 0 0 33 99 115 115 99 33 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 115 247 247 247 247 247 214 0 0 0 0 0 99 247 247 247 247 247 247 247 247 247 247 247 247 16 0 0 0 0 0 0 0 49 66 66 66 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 165 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 108 224 255 255 255 255 255 255 101 164 255 255 255 143 250 255 255 255 255 255 255 255 255 255 255 255 98 170 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 165 0
0 165 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 136 251 255 255 255 255 255 255 101 130 255 255 255 153 250 255 255 255 255 255 255 255 255 255 255 121 98 189 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 165 0
0 165 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 198 252 255 255 255 255 255 164 164 255 255 255 255 176 249 251 255 255 255 255 255 255 255 255 150 86 192 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 165 0
0 165 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 164 198 255 255 255 255 201 133 164 255 255 255 255 255 145 203 255 255 255 255 255 255 255 117 79 194 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 165 0
0 66 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 73 73 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 47 70 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 102 66 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
# folder closed icon
# width & height
24 22
# luma data
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 197 155 155 155 155 196 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 155 191 191 191 192 155 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 168 144 180 180 181 180 145 145 146 145 146 146 146 146 145 167 255 255 255 255
255 255 255 255 147 225 226 226 225 226 225 221 221 219 215 214 212 211 213 145 255 255 255 255
255 255 255 255 147 212 211 211 210 211 210 205 206 205 201 201 199 196 201 145 255 255 255 255
255 255 255 255 146 204 203 204 203 203 202 200 200 197 197 196 195 194 196 145 255 255 255 255
255 255 255 255 146 202 200 201 201 200 199 198 198 195 194 194 193 192 194 145 255 255 255 255
255 255 255 255 145 200 196 196 196 195 195 193 192 192 190 189 189 189 191 143 255 255 255 255
255 255 255 255 143 192 191 190 190 189 189 188 186 187 186 185 185 185 187 142 255 255 255 255
255 255 255 255 142 186 184 183 182 183 182 183 180 181 181 181 181 181 182 141 255 255 255 255
255 255 255 255 138 177 175 176 176 177 177 176 175 174 175 175 175 174 176 138 255 255 255 255
255 255 255 255 138 173 169 170 168 170 169 170 170 169 171 171 171 171 174 137 255 255 255 255
255 255 255 255 138 166 163 163 162 162 162 162 162 162 164 163 163 163 166 137 255 255 255 255
255 255 255 255 137 124 124 124 125 124 124 124 125 125 124 124 125 124 125 138 255 255 255 255
255 255 255 255 231 231 228 225 222 220 218 216 214 215 217 219 221 224 227 226 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
# alpha data
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 255 255 255 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 255 255 255 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0
0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0
0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0
0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0
0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0
0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0
0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0
0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0
0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0
0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0
0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0
0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0
0 0 0 0 148 148 148 148 148 148 148 148 148 148 148 148 148 148 148 148 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
# folder open icon
# width & height
24 22
# luma data
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 228 195 193 190 187 218 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 195 215 221 225 225 178 176 176 175 176 178 180 255 255 255 255 255 255
255 255 255 255 255 255 189 206 215 219 226 220 214 212 207 204 200 176 255 255 255 255 255 255
255 255 255 255 168 154 153 153 152 152 151 149 150 150 149 147 146 145 145 167 255 255 255 255
255 255 255 255 146 187 187 188 187 187 185 183 183 182 179 178 175 173 174 145 255 255 255 255
255 255 255 255 146 180 182 182 181 181 179 178 176 174 173 171 169 170 168 144 255 255 255 255
255 255 255 255 144 173 176 176 177 175 175 174 171 170 168 168 166 166 164 143 255 255 255 255
255 255 255 255 142 168 170 171 170 170 169 168 166 166 165 163 163 164 162 142 255 255 255 255
255 255 255 255 141 162 166 164 164 165 163 163 161 161 161 161 161 160 159 141 255 255 255 255
255 255 255 255 138 157 159 159 158 158 158 157 157 157 157 156 157 157 155 138 255 255 255 255
255 255 255 255 137 154 153 154 154 153 154 154 154 153 154 154 154 154 154 137 255 255 255 255
255 255 255 255 137 154 154 154 154 154 154 154 153 154 154 153 153 153 154 137 255 255 255 255
255 255 255 255 137 125 125 125 125 124 125 124 124 125 124 124 125 124 125 138 255 255 255 255
255 255 255 255 212 209 204 199 193 190 186 183 180 181 185 188 192 197 202 203 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
# alpha data
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 255 255 255 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0 0
0 0 0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0 0 0
0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0
0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0
0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0
0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0
0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0
0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0
0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0
0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0
0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0
0 0 0 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 0 0 0 0
0 0 0 0 148 148 148 148 148 148 148 148 148 148 148 148 148 148 148 148 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
{% extend 'htmlbase.tpl' %}
{% block title %}
<div class="headertitle"><div class="title">{{ compound.name }} {{ tr.memberList }}</div></div>
{% endblock %}
{% block content %}
<div class="contents">
<p>{{ tr.theListOfAllMembers }} <a class="el" href="{{ compound.fileName }}{{ config.HTML_FILE_EXTENSION }}">{{ compound.name }}</a>{{ tr.incInheritedMembers }}</p>
<table class="directory">
{% for mi in compound.allMembersList %}
<tr {% cycle 'class="even"' '' %}>
{# TODO: objective-C #}
<td>{% with obj=mi.member text=mi.ambiguityScope|append:mi.member.name %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
</td>
</tr>
{% endfor %}
</table>
</div>
{% endblock %}
{% extend 'htmlbase.tpl' %}
{% block content %}
<div class="contents">
<div class="textblock">
{{ tr.classListDescription }}
</div>
{% indexentry nav name=tr.classes file=page.fileName anchor='' %}
{% opensubindex nav %}
{% with tree=classTree %}
{% include 'htmldirtree.tpl' %}
{% endwith %}
{% closesubindex nav %}
</div><!-- contents -->
{% endblock %}
{% block header %}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen {{ doxygen.version }}"/>
<title>{{ config.PROJECT_NAME }}: {{ page.title }}</title>
<link href="{{ page.relPath }}tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="{{ page.relPath }}jquery.js"></script>
<script type="text/javascript" src="{{ page.relPath }}dynsections.js"></script>
{% if config.GENERATE_TREEVIEW %}
<link href="{{ page.relPath }}navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="{{ page.relPath }}resize.js"></script>
<script type="text/javascript" src="{{ page.relPath }}navtreedata.js"></script>
<script type="text/javascript" src="{{ page.relPath }}navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
$(window).load(resizeHeight);
</script>
{% endif %}
{% if config.SEARCHENGINE %}
<link href="{{ page.relPath }}search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="{{ page.relPath }}search/search.js"></script>
{% if config.SERVER_BASED_SEARCH %}
<script type="text/javascript">
$(document).ready(function() {
if ($('.searchresults').length > 0) { searchBox.DOMSearchField().focus(); }
});
</script>
<link rel="search" href="{{ page.relPath }}search-opensearch.php?v=opensearch.xml" type="application/opensearchdescription+xml" title="{{ config.PROJECT_NAME }}"/>
{% else %}
<script type="text/javascript">
$(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
{% endif %}
{% endif %}
{% if config.USE_MATHJAX %}
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"], {# TODO: support MATHJAX_EXTENSIONS #}
jax: ["input/TeX","output/{{ config.MATHJAX_FORMAT }}"],
});
{# TODO: support MATHJAX_CODEFILE #}
</script>
<script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
{% endif %}
<link href="{{ page.relPath }}{{ config.HTML_STYLESHEET|default:'doxygen.css' }}" rel="stylesheet" type="text/css" />
{% if config.HTML_EXTRA_STYLESHEET %}
<link href="{{ page.relPath }}{{ config.HTML_EXTRA_STYLESHEET }}" rel="stylesheet" type="text/css" />
{% endif %}
</head>
<body>
{% endblock %}
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
{% block titlearea %}
{% if config.PROJECT_NAME or config.PROJECT_BRIEF or config.PROJECT_LOGO or config.DISABLE_INDEX and config.SEARCHENGINE %}
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
{% if config.PROJECT_LOGO %}
<td id="projectlogo"><img alt="Logo" src="{{ page.relPath }}{{ config.PROJECT_LOGO|stripPath }}"/></td>
{% endif %}
<td style="padding-left: 0.5em;">
{% if config.PROJECT_NAME %}
<div id="projectname">{{ config.PROJECT_NAME }}
{% if config.PROJECT_NUMBER %}
<span id="projectnumber">{{ config.PROJECT_NUMBER }}</span>
{% endif %}
</div>
{% endif %}
{% if config.PROJECT_BRIEF %}
<div id="projectbrief">{{ config.PROJECT_BRIEF }}</div>
{% endif %}
</td>
{% if config.DISABLE_INDEX and config.SEARCHENGINE %}{# search box is part of title area #}
<td>
{% if config.SERVER_BASED_SEARCH %}
<div id="MSearchBox" class="MSearchBoxInactive">
<div class="left">
<form id="FSearchBox" action="{{ page.relPath }}{% if config.EXTERNAL_SEARCH %}search{{ doxygen.htmlFileExtension }}{% else %}search.php{% endif %}" method="get">
<img id="MSearchSelect" src="{{ page.relPath }}search/mag.png" alt=""/>
<input type="text" id="MSearchField" name="query" value="{{ tr.search }}" size="20" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"/>
</form>
</div>
<div class="right"></div>
</div>
{% else %}{# !SERVER_BASED_SEARCH #}
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="{{ page.relPath }}search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="{{ tr.search }}" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img
id="MSearchCloseImg" border="0" src="{{ page.relPath }}search/close.png"
alt=""/></a>
</span>
</div>
</td>
{% endif %}{# SERVER_BASED_SEARCH #}
{% endif %}{# DISABLE_INDEX and SEARCHENGINE #}
</tr>
</tbody>
</table>
</div>
{% endif %}{# titlearea visible #}
{% endblock %}
<!-- end header part -->
<!-- Generated by Doxygen {{ doxygen.version }} -->
{% block search %}
{% if config.SEARCHENGINE %}{# TODO: can't we move this to the header? #}
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "{{ page.relPath }}search",false,'{{ tr.search }}');
</script>
{% endif %}
{% endblock %}
{% block tabs %}
{% if not config.DISABLE_INDEX %}
{% include 'htmltabs.tpl' %}
{% endif %}
{% endblock %}
{% block navpath %}
{% endblock %}
</div><!-- top -->
{% block splitbar %}
{% if config.GENERATE_TREEVIEW %}
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('{{ page.fileName }}{% if page_postfix %}{{ page_postfix }}{% endif %}{{ config.HTML_FILE_EXTENSION }}','{{ page.relPath }}');});
</script>
<div id="doc-content">
{% endif %}
{% endblock %}
{% block searchInfo %}
{% if config.SEARCHENGINE and not config.SERVER_BASED_SEARCH %}
<!-- window showing the filter options -->
<div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
{# TODO: get search categories dynamically, since we don't know them here #}
</div>
{% endif %}
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" name="MSearchResults" id="MSearchResults">
</iframe>
</div>
{% endblock %}
<div class="header">
{% block title %}
<div class="headertitle"><div class="title">{{ page.title }}</div></div>
{% endblock %}
</div>
{% block content %}
{% endblock %}
{% block endsplitbar %}
{% if config.GENERATE_TREEVIEW %}
</div><!-- content -->
{% endif %}
{% endblock %}
{% block footer %}
{% if config.GENERATE_TREEVIEW %}
<div id="nav-path" class="navpath">{# id is needed for treeview function! #}
<ul>
{# navpath #}
<li class="footer">
{% if config.HTML_TIMESTAMP %}
{{ tr.generatedAt:doxygen.date,config.PROJECT_NAME }}
{% else %}
{{ tr.generatedby }}
{% endif %}
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="{{ page.relPath }}doxygen.png" alt="doxygen"/></a> {{ doxygen.version }} </li>
</ul>
</div>
{% else %}
<hr class="footer"/><address class="footer"><small>
{% if config.HTML_TIMESTAMP %}
{{ tr.generatedAt:doxygen.date,config.PROJECT_NAME }}
{% else %}
{{ tr.generatedby }}
{% endif %}
&#160;<a href="http://www.doxygen.org/index.html"><img class="footer" src="{{ page.relPath }}doxygen.png" alt="doxygen"/></a>
{{ doxygen.version }}
</small></address>
{% endif %}
</body>
</html>
{% endblock %}
{% extend 'htmlbase.tpl' %}
{% msg %}Generating HTML output for class {{ compound.name }}{% endmsg %}
{% block navpath %}
{% with navpath=compound.navigationPath %}
{% include 'htmlnavpath.tpl' %}
{% endwith %}
{% endblock %}
{% block title %}
{# write summary links in the title area #}
<div class="summary">
{% with first=True %}
{% if compound.classes %}
<a href="#nested-classes">{{ tr.classes }}</a>
{% set first=False %}
{% endif %}
{% if compound.allMembersList %}
{% if not first %} &#124; {% endif %}
<a href="{{ compound.allMembersFileName }}{{ config.HTML_FILE_EXTENSION }}#all-members-list">{{ tr.listOfAllMembers }}</a>
{% set first=False %}
{% endif %}
{% with memberListInfo=compound.publicTypes %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.unoIDLServices %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.unoIDLInterfaces %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.publicSlots %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.signals %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.publicMethods %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.publicStaticMethods %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.publicAttributes %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.publicStaticAttributes %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.protectedTypes %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.protectedSlots %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.protectedMethods %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.protectedStaticMethods %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.protectedAttributes %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.protectedStaticAttributes %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.packageTypes %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.packageMethods %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.packageStaticMethods %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.packageAttributes %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.packageStaticAttributes %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.properties %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.events %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.privateTypes %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.privateSlots %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.privateMethods %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.privateStaticMethods %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.privateAttributes %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.privateStaticAttributes %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.friends %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.related %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% endwith %}
</div>
{{ block.super }}
{% endblock %}
{% block content %}
<div class="contents">
{# brief description #}
{% if compound.brief %}
{{ compound.brief }}
{% if compound.hasDetails %}
<a href="#details">{{ tr.more }}</a>
{% endif %}
{% endif %}
{# includes #}
{% if compound.includeInfo %}
<div class="textblock">
{% with ii=compound.includeInfo %}
{% include 'htmlinclude.tpl' %}
{% endwith %}
</div>
{% endif %}
{# inheritancegraph #}
{% if compound.hasInheritanceDiagram %}
{% with obj=compound %}
{% include 'htmldynheader.tpl' %}
{% endwith %}
{{ tr.inheritanceDiagramFor:compound.name }}
</div>
{% with obj=compound %}
{% include 'htmldyncontents.tpl' %}
{% endwith %}
{{ compound.inheritanceDiagram }}
</div>
{# TODO: legend #}
{% else %}
{# textual inheritance list #}
{% if compound.inherits|length>0 %}
<p>
{% markers c in compound.inherits with tr.inheritsList:compound.inherits|length %}
{% with obj=c.class text=c.name %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% endmarkers %}
</p>
{% endif %}
{% if compound.inheritedBy|length>0 %}
<p>
{% markers c in compound.inheritedBy with tr.inheritedByList:compound.inheritedBy|length %}
{% with obj=c.class text=c.name %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% endmarkers %}
</p>
{% endif %}
{% endif %}
{# collaborationgraph #}
{% if compound.hasCollaborationDiagram %}
{% with obj=compound %}
{% include 'htmldynheader.tpl' %}
{% endwith %}
{{ tr.collaborationDiagramFor:compound.name }}
</div>
{% with obj=compound %}
{% include 'htmldyncontents.tpl' %}
{% endwith %}
{{ compound.collaborationDiagram }}
</div>
{% endif %}
{# memberdecls #}
{# TODO: isSimple #}
{# nestedClasses #}
{% with list=compound.classes label='nested-classes' title=tr.classes local=1 %}
{% include 'htmldeclcomp.tpl' %}
{% endwith %}
{# publicTypes #}
{% with memberListInfo=compound.publicTypes %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# services #}
{% with memberListInfo=compound.unoIDLServices %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# interfaces #}
{% with memberListInfo=compound.unoIDLInterfaces %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# publicSlots #}
{% with memberListInfo=compound.publicSlots %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# signals #}
{% with memberListInfo=compound.signals %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# publicMethods #}
{% with memberListInfo=compound.publicMethods %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# publicStaticMethods #}
{% with memberListInfo=compound.publicStaticMethods %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# publicAttributes #}
{% with memberListInfo=compound.publicAttributes %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# publicStaticAttributes #}
{% with memberListInfo=compound.publicStaticAttributes %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# protectedtypes #}
{% with memberListInfo=compound.protectedTypes %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# protectedslots #}
{% with memberListInfo=compound.protectedSlots %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# protectedmethods #}
{% with memberListInfo=compound.protectedMethods %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# protectedstaticmethods #}
{% with memberListInfo=compound.protectedStaticMethods %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# protectedattributes #}
{% with memberListInfo=compound.protectedAttributes %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# protectedstaticattributes #}
{% with memberListInfo=compound.protectedStaticAttributes %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# packagetypes #}
{% with memberListInfo=compound.packageTypes %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# packagemethods #}
{% with memberListInfo=compound.packageMethods %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# packagestaticmethods #}
{% with memberListInfo=compound.packageStaticMethods %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# packageattributes #}
{% with memberListInfo=compound.packageAttributes %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# packagestaticattributes #}
{% with memberListInfo=compound.packageStaticAttributes %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# properties #}
{% with memberListInfo=compound.properties %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# events #}
{% with memberListInfo=compound.events %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# privatetypes #}
{% with memberListInfo=compound.privateTypes %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# privateslots #}
{% with memberListInfo=compound.privateSlots %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# privatemethods #}
{% with memberListInfo=compound.privateMethods %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# privatestaticmethods #}
{% with memberListInfo=compound.privateStaticMethods %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# privateattributes #}
{% with memberListInfo=compound.privateAttributes %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# privatestaticattributes #}
{% with memberListInfo=compound.privateStaticAttributes %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# friends #}
{% with memberListInfo=compound.friends %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# related #}
{% with memberListInfo=compound.related %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# member groups #}
{% if compound.memberGroups %}
{% for memberListInfo in compound.memberGroups %}
{% include 'htmlmemdecls.tpl' %}
{% endfor %}
{% endif %}
{# additionalInheritedMembers #}
{% if compound.additionalInheritedMembers %}
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader">
<a name="inherited"></a>{{ tr.additionalInheritedMembers }}
</h2></td></tr>
{# write additional inherited members #}
{% for info in compound.additionalInheritedMembers %}
{% include 'htmlmeminherit.tpl' %}
{% endfor %}
</table>
{% endif %}
{# detailed description #}
{% if compound.hasDetails %}
{% if compound.anchor %}
<a name="{{ compound.anchor }}" id="{{ compound.anchor }}"></a>
{% else %}
<a name="details" id="details"></a>
{% endif %}
<h2 class="groupheader">{{ tr.detailedDesc }}</h2>
<div class="textblock">
{# template specifier #}
{% if compound.language=='cpp' and compound.templateDecls %}
<h3>{% spaceless %}
{% for targList in compound.templateDecls %}
template&lt;
{% for targ in targList %}
{{ targ.type }}{% if targ.name %} {{ targ.name }}{% endif %}{% if targ.defVal %}&#160;= {{ targ.defVal }}{% endif %}{% if not forloop.last %}, {% endif %}
{% endfor %}
&gt;<br/>
{% endfor %}
{% endspaceless %}
{{ compound.compoundType }}&#160;{{ compound.name }}
</h3>
{% endif %}
{# brief description #}
{% if compound.brief and config.REPEAT_BRIEF %}
<p>
{{ compound.brief }}
</p>
{% endif %}
{{ compound.details }}
</div>
{# type constraints #}
{% with obj=compound %}
{% include 'htmltypeconstraints.tpl' %}
{% endwith %}
{# examples #}
{% if compound.examples %}
<dl><dt><b>{{ tr.examples }}</b><dd>
{% markers obj in compound.examples with tr.exampleList:compound.examples|length %}
{% with text=obj.text %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% endmarkers %}
</dd></dl>
{% endif %}
{# source definition #}
{% if compound.sourceDef %}
{% markers obj in compound.sourceDef with tr.definedAtLineInSourceFile %}
{% with text=obj.text %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% endmarkers %}
{% endif %}
{% endif %}
{# member definitions #}
{# inline classes #}
{% if compound.classes %}
{# TODO write inlined simple classes: tr.classDocumentation / tr.typeDocumentation #}
{% endif %}
{# typedefs #}
{% with memberListInfo=compound.detailedTypedefs %}
{% include 'htmlmemdef.tpl' %}
{% endwith %}
{# enums #}
{% with memberListInfo=compound.detailedEnums %}
{% include 'htmlmemdef.tpl' %}
{% endwith %}
{# services #}
{% with memberListInfo=compound.detailedServices %}
{% include 'htmlmemdef.tpl' %}
{% endwith %}
{# interfaces #}
{% with memberListInfo=compound.detailedInterfaces %}
{% include 'htmlmemdef.tpl' %}
{% endwith %}
{# constructors #}
{% with memberListInfo=compound.detailedConstructors %}
{% include 'htmlmemdef.tpl' %}
{% endwith %}
{# functions #}
{% with memberListInfo=compound.detailedMethods %}
{% include 'htmlmemdef.tpl' %}
{% endwith %}
{# related #}
{% with memberListInfo=compound.detailedRelated %}
{% include 'htmlmemdef.tpl' %}
{% endwith %}
{# variables #}
{% with memberListInfo=compound.detailedVariables %}
{% include 'htmlmemdef.tpl' %}
{% endwith %}
{# properties #}
{% with memberListInfo=compound.detailedProperties %}
{% include 'htmlmemdef.tpl' %}
{% endwith %}
{# events #}
{% with memberListInfo=compound.detailedEvents %}
{% include 'htmlmemdef.tpl' %}
{% endwith %}
{# used files #}
{% if config.SHOW_USED_FILES %}
<hr/>
{{ compound.generatedFromFiles }}
<ul>
{% for file in compound.usedFiles %}
<li>{% if file.sourceFileName %}
<a class="el" href="{{ file.sourceFileName }}{{ config.HTML_FILE_EXTENSION }}">
{% endif %}
{% if not file.sourceFileName and file.isLinkable %}
<a class="el" href="{{ file.fileName }}{{ config.HTML_FILE_EXTENSION }}">
{% endif %}
{% if config.FULL_PATH_NAMES %}
{{ file.name }}
{% else %}
{{ file.name|stripPath }}
{% endif %}
{% if file.sourceFileName or file.isLinkable %}
</a>
{% endif %}
{% if file.versionInfo %} {{ file.versionInfo }}{% endif %}
</li>
{% endfor %}
</ul>
{% endif %}
</div>
{% endblock %}
{% extend 'htmlbase.tpl' %}
{% block content %}
<div class="contents">
<div class="textblock">
{% indexentry nav name=tr.classIndex file=page.fileName anchor='' %}
</div>
<div class="classindex" style="column-count:{{ config.COLS_IN_ALPHA_INDEX }};-moz-column-count:{{ config.COLS_IN_ALPHA_INDEX }};-webkit-column-count:{{ config.COLS_IN_ALPHA_INDEX}}">
<ul>
{% with index=classIndex.list|alphaIndex:'name' %}
{% for section in index %}
<div class="ah">&#160;&#160;{{ section.letter }}&#160;&#160;</div>
{% for cls in section.items %}
<li>{{ cls.name }}</li>
{% endfor %}
{% endfor %}
{% endwith %}
</ul>
</div><!-- classindex -->
</div><!-- contents -->
{% endblock %}
{# inputs: page, list #}
{% extend 'htmlbase.tpl' %}
{% block tabs %}
{{ block.super }}
{% include 'htmlmembertabs.tpl %}
{% endblock %}
{% block content %}
<div class="contents">
<div class="textblock">
{% if section=='' and letter=='' %}
{{ tr.classMembersDescription }}
{% endif %}
{% include 'htmlmemberindex.tpl' %}
</div>
</div><!-- contents -->
{% endblock %}
{% with page=namespaceMembersIndex %}
{# all members #}
{% with list=namespaceMembersIndex.all section='' template='htmlclmembers.tpl' %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
{# functions #}
{% with list=namespaceMembersIndex.functions section='_func' template='htmlclmembers.tpl' %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
{# variables #}
{% with list=namespaceMembersIndex.variables section='_vars' template='htmlclmembers.tpl' %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
{# typedefs #}
{% with list=namespaceMembersIndex.typedefs section='_type' template='htmlclmembers.tpl' %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
{# enums #}
{% with list=namespaceMembersIndex.enums section='_enum' template='htmlclmembers.tpl' %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
{# enumValues #}
{% with list=namespaceMembersIndex.enumValues section='_eval' template='htmlclmembers.tpl' %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
{% endwith %}
{# inputs: list, label, title, local #}
{% if list %}
<table class="memberdecls"><tr class="heading"><td colspan="2">
<h2 class="groupheader"><a name="{{ label }}"></a>{{ title }}</h2></td></tr>
{% for nc in list %}
<tr class="memitem:{{ nc.anchor }}">
<td class="memItemLeft" align="right" valign="top">{% if nc.compoundType %}{{ nc.compoundType }}&#160;{% endif %}</td>
<td class="memItemRight" valign="bottom">
{% if local %}
{% with obj=nc text=nc.bareName %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% else %}
{% with obj=nc text=nc.name %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% endif %}
</td></tr>
{# brief description #}
{% if nc.brief %}
<tr class="memdesc:{{ nc.anchor }}"><td class="mdescLeft">&#160;</td><td class="mdescRight">
{{ nc.brief }}
{% if nc.hasDetails %}
{# TODO: link to group if member is grouped #}
<a href="{{ page.relPath }}{{ nc.fileName }}{{ config.HTML_FILE_EXTENSION}}{% if nc.anchor %}#{{ nc.anchor }}{% endif %}">{{ tr.more }}</a>
{% endif %}
<br/></td></tr>
{% endif %}
<tr class="separator:{{ nc.anchor}}"><td class="memSeparator" colspan="2">&#160;</td></tr>
{% endfor %}
</table>
{% endif %}
{% extend 'htmlbase.tpl' %}
{% msg %}Generating HTML output for directory {{ compound.name }}{% endmsg %}
{% block navpath %}
{% if compound.navigationPath %}
<div id="nav-path" class="navpath">
<ul>
{% for obj in compound.navigationPath %}
<li class="navelem">
{% with text=obj.text %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
</li>
{% endfor %}
</ul>
</div>
{% endif %}
{% endblock %}
{% block title %}
{# write summary links in the title area #}
<div class="summary">
{% with first=True %}
{% if compound.dirs %}
<a href="#subdirs">{{ tr.directories }}</a>
{% set first=False %}
{% endif %}
{% if compound.files %}
{% if not first %} &#124; {% endif %}
<a href="#files">{{ tr.files }}</a>
{% set first=False %}
{% endif %}
{% endwith %}
</div>
{{ block.super }}
{% endblock %}
{% block content %}
<div class="contents">
{# brief description #}
{% if compound.brief %}
{{ compound.brief }}
{% if compound.hasDetails %}
<a href="#details">{{ tr.more }}</a>
{% endif %}
{% endif %}
{# dir graph #}
{# TODO #}
{# member declarations #}
{# directories #}
{% with list=compound.dirs label='subdirs' title=tr.directories local=False %}
{% include 'htmldeclcomp.tpl' %}
{% endwith %}
{# files #}
{% with list=compound.files, label='files' title=tr.files local=False %}
{% include 'htmldeclcomp.tpl' %}
{% endwith %}
{# end member declarations #}
{# detailed description #}
{% if compound.hasDetails %}
{# anchor #}
<a name="details" id="details"></a>
{# header #}
<h2 class="groupheader">{{ tr.detailedDesc }}</h2>
<div class="textblock">
{# brief #}
{% if compound.brief and config.REPEAT_BRIEF %}
<p>
{{ compound.brief }}
</p>
{% endif %}
{# details #}
{{ compound.details }}
</div>
{% endif %}
</div>
{% endblock %}
{# input tree with maxDepth, preferredDepth, and nodes #}
<div class="directory">
{# level selection #}
{% if tree.maxDepth > 1 %}
<div class="levels">[{{ tr.detailLevel }}
{% range i from 1 to tree.maxDepth %}
<span onclick="javascript:toggleLevel({{ i }});">{{ i }}</span>
{% endrange %}
]</div>
{% endif %}
{# the table with entries #}
<table class="directory">
{% recursetree tree.tree %}
{% indexentry nav name=node.name file=node.fileName anchor=node.anchor %}
{% spaceless %}
<tr id="row_{{ node.id }}" class="{% cycle 'even' 'odd' %}"{%if node.level>tree.preferredDepth %} style="display:none;"{% endif %}>
<td class="entry">
{% if node.is_leaf_node %}
<span style="width:{{ (node.level+1)*16 }}px;display:inline-block;">&#160;</span>
{% else %}
<span style="width:{{ (node.level)*16 }}px;display:inline-block;">&#160;</span>
<span id="arr_{{ node.id }}" class="arrow" onclick="toggleFolder('{{ node.id}}')">
{%if node.level+1<tree.preferredDepth %}&#9660;{% else %}&#9658;{% endif %}
</span>
{% endif %}
{% if node.namespace %}
<span class="icona"><span class="icon">N</span></span>
{% elif node.class %}
<span class="icona"><span class="icon">C</span></span>
{% elif node.dir %}
<span id="img_{{ node.id }}" class="iconf{%if node.level+1<tree.preferredDepth %}open{% else %}closed{% endif %}" onclick="toggleFolder('{{ node.id }}')">&#160;</span>
{% elif node.file %}
<span class="icondoc"></span>
{% endif %}
{% with obj=node text=node.name %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
</td><td class="desc">{{ node.brief }}</td>
</tr>
{% endspaceless %}
{% opensubindex nav %}
{{ children }}
{% closesubindex nav %}
{% endrecursetree %}
</table>
</div><!-- directory -->
{# input: obj which should have dynSectionId attribute #}
{% if config.HTML_DYNAMIC_SECTIONS %}
<div id="dynsection-{{ obj.dynSectionId }}-summary" class="dynsummary" style="display:block;"></div>
<div class="dyncontent" id="dynsection-{{ obj.dynSectionId }}-content" style="display:none;">
{% else %}
<div class="dyncontent">
{% endif %}
{# input: obj which should have dynSectionId and relPath attributes #}
{% if config.HTML_DYNAMIC_SECTIONS %}
<div id="dynsection-{{ obj.dynSectionId }}" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><img
id="dynsection-{{ obj.dynSectionId }}-trigger" src="{{ obj.relPath }}closed.png" alt="+"/>
{% else %}
<div class="dynheader">
{% endif %}
{% extend 'htmlbase.tpl' %}
{% msg %}Generating HTML output for file {{ compound.name }}{% endmsg %}
{% block navpath %}
{% with navpath=compound.navigationPath %}
{% include 'htmlnavpath.tpl' %}
{% endwith %}
{% endblock %}
{% block title %}
{# write summary links in the title area #}
<div class="summary">
{% with first=True %}
{% if compound.classes %}
<a href="#nested-classes">{{ tr.classes }}</a>
{% set first=False %}
{% endif %}
{% if compound.namespaces %}
{% if not first %} &#124; {% endif %}
<a href="#namespaces">{{ tr.namespaces }}</a>
{% set first=False %}
{% endif %}
{% if compound.constantgroups %}
{% if not first %} &#124; {% endif %}
<a href="#constantgroups">{{ tr.constantgroups }}</a>
{% set first=False %}
{% endif %}
{% with memberListInfo=compound.macros %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.typedefs %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.enums %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.functions %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.variables %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% endwith %}
</div>
{{ block.super }}
{% endblock %}
{% block content %}
<div class="contents">
{# brief description #}
{% if compound.brief %}
{{ compound.brief }}
{% if compound.hasDetails %}
<a href="#details">{{ tr.more }}</a>
{% endif %}
{% endif %}
{# includes #}
{% if compound.includeList %}
<div class="textblock">
{% for ii in compound.includeList %}
{% include 'htmlinclude.tpl' %}
<br/>
{% endfor %}
</div>
{% endif %}
{# include graph #}
{% if compound.hasIncludeGraph %}
{% with obj=compound %}
{% include 'htmldynheader.tpl' %}
{% endwith %}
{{ tr.includeDependencyGraph:compound.name }}
</div>
{% with obj=compound %}
{% include 'htmldyncontents.tpl' %}
{% endwith %}
{{ compound.includeGraph }}
</div>
{% endif %}
{# included by graph #}
{% if compound.hasIncludedByGraph %}
{% with obj=compound %}
{% include 'htmldynheader.tpl' %}
{% endwith %}
{{ tr.includedByDependencyGraph }}
</div>
{% with obj=compound %}
{% include 'htmldyncontents.tpl' %}
{% endwith %}
{{ compound.includedByGraph }}
</div>
{% endif %}
{# source link #}
{% if compound.hasSourceFile %}
<p><a href="{{ page.relPath }}{{ compound.sourceFileName }}{{ config.HTML_FILE_EXTENSION }}">{{ tr.gotoSourceCode }}</a></p>
{% endif %}
{# member declarations #}
{# classes #}
{% with list=compound.classes label='nested-classes' title=tr.classes local=False %}
{% include 'htmldeclcomp.tpl' %}
{% endwith %}
{# namespaces #}
{% with list=compound.namespaces, label='namespaces' title=tr.namespaces local=False %}
{% include 'htmldeclcomp.tpl' %}
{% endwith %}
{# constantgroups #}
{% with list=compound.constantgroups, label='constantgroups' title=tr.constantgroups local=False %}
{% include 'htmldeclcomp.tpl' %}
{% endwith %}
{# defines #}
{% with memberListInfo=compound.macros %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# typedefs #}
{% with memberListInfo=compound.typedefs %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# enums #}
{% with memberListInfo=compound.enums %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# functions #}
{% with memberListInfo=compound.functions %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# variables #}
{% with memberListInfo=compound.variables %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# membergroups #}
{% if compound.memberGroups %}
{% for memberListInfo in compound.memberGroups %}
{% include 'htmlmemdecls.tpl' %}
{% endfor %}
{% endif %}
{# end member declarations #}
{# detailed description #}
{% if compound.hasDetails %}
{# anchor #}
<a name="details" id="details"></a>
{# header #}
<h2 class="groupheader">{{ tr.detailedDesc }}</h2>
<div class="textblock">
{# brief #}
{% if compound.brief and config.REPEAT_BRIEF %}
<p>
{{ compound.brief }}
</p>
{% endif %}
{# details #}
{{ compound.details }}
{# source definition #}
{% if compound.sourceDef %}
{% markers obj in compound.sourceDef with tr.definedAtLineInSourceFile %}
{% with text=obj.text %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% endmarkers %}
{% endif %}
</div>
{% endif %}
{# member definitions #}
{# inline classes #}
{% if compound.inlineClasses %}
<h2 class="groupheader">{{ tr.classDocumentation }}</h2>
{% for class in compound.inlineClasses %}
{# write anchor #}
<a class="anchor" id="{{ class.anchor }}"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr><td class="memname">{{ class.compoundType }} {{ class.name }}</td></tr>
</table>
</div>
<div class="memdoc">
<div class="textblock">
{# TODO: the stuff inside textblock can be the same as in htmlclass.tpl!! #}
{# template specifier #}
{% if class.language=='cpp' and class.templateDecls %}
<h3>{% spaceless %}
{% for targList in class.templateDecls %}
template&lt;
{% for targ in targList %}
{{ targ.type }}{% if targ.name %} {{ targ.name }}{% endif %}{% if targ.defVal %}&#160;= {{ targ.defVal }}{% endif %}{% if not forloop.last %}, {% endif %}
{% endfor %}
&gt;<br/>
{% endfor %}
{% endspaceless %}
{{ class.classType }}&#160;{{ class.name }}
</h3>
{% endif %}
{# brief description #}
{% if class.brief and config.REPEAT_BRIEF %}
<p>{{ class.brief }}</p>
{% endif %}
{# detailed docs #}
{{ class.details }}
{# source def #}
{% if class.sourceDef %}
{% markers obj in class.sourceDef with tr.definedAtLineInSourceFile %}
{% with text=obj.text %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% endmarkers %}
{% endif %}
</div><!-- textblock -->
{# table with fields #}
<table class="fieldtable">
<tr><th colspan="3">{{ tr.compoundMembers }}</td></tr>
{% for member in class.members %}
<tr><td class="fieldtype">
<a class="anchor" id="{{ member.anchor }}"></a>{{ member.fieldType }}
</td>
<td class="fieldname">
{{ member.name }}
{% if member.isVariable and member.declArgs %}{{ member.declArgs }}{% endif %}
{{ member.bitfields }}
</td>
<td class="fielddoc">
{% if member.brief and not member.details %}{# only brief #}
{{ member.brief }}
{% else %} {# only details or both #}
{% if member.brief %}<p>{{ member.brief }}</p>{% endif %}
{{ member.details }}
{% endif %}
</td>
</tr>
{% endfor %}
</table>
</div><!-- memdoc -->
</div><!-- memitem -->
{% endfor %}
{% endif %}
{# defines #}
{% with memberListInfo=compound.detailedMacros %}
{% include 'htmlmemdef.tpl' %}
{% endwith %}
{# typedefs #}
{% with memberListInfo=compound.detailedTypedefs %}
{% include 'htmlmemdef.tpl' %}
{% endwith %}
{# enums #}
{% with memberListInfo=compound.detailedEnums %}
{% include 'htmlmemdef.tpl' %}
{% endwith %}
{# functions #}
{% with memberListInfo=compound.detailedFunctions %}
{% include 'htmlmemdef.tpl' %}
{% endwith %}
{# variables #}
{% with memberListInfo=compound.detailedVariables %}
{% include 'htmlmemdef.tpl' %}
{% endwith %}
{# end member definitions #}
</div>
{% endblock %}
{% extend 'htmlbase.tpl' %}
{% block content %}
<div class="contents">
<div class="textblock">
{{ tr.fileListDescription }}
</div>
{% indexentry nav name=tr.fileList file=page.fileName anchor='' %}
{% opensubindex nav %}
{% with tree=fileTree %}
{% include 'htmldirtree.tpl' %}
{% endwith %}
{% closesubindex nav %}
</div><!-- contents -->
{% endblock %}
{# inputs: page, list #}
{% extend 'htmlbase.tpl' %}
{% block tabs %}
{{ block.super }}
{% include 'htmlmembertabs.tpl %}
{% endblock %}
{% block content %}
<div class="contents">
<div class="textblock">
{% if section=='' and letter=='' %}
{{ tr.fileMembersDescription }}
{% endif %}
{% include 'htmlmemberindex.tpl' %}
</div>
</div><!-- contents -->
{% endblock %}
{# input: ii with attributes (file,name,isImport,isLocal), compound with attribute language #}
{% spaceless %}
{% if ii.file or ii.name %}
<tt>
{% if compound.language=='java' or compound.language=='idl' %}
import&#160;
{%else %}
{% if ii.isImport %}
#import&#160;
{% else %}
#include&#160;
{% endif %}
{%endif %}
{% if ii.isLocal %}"{% else %}&lt;{% endif %}
{% if ii.name %}
{% if ii.file %}
<a class="el" href="{{ ii.file.sourceFileName }}{{ config.HTML_FILE_EXTENSION }}">{{ ii.name }}</a>
{% else %}
{{ ii.name }}
{% endif %}
{% else %}
<a class="el" href="{{ ii.file.sourceFileName }}{{ config.HTML_FILE_EXTENSION }}">{{ ii.file.name }}</a>
{% endif %}
{% if ii.isLocal %}"{% else %}&gt;{% endif %}
</tt>
{% endif %}
{% endspaceless %}
{# inputs: list, section #}
{% with letter='' %}
{# create full index page #}
{% create page.fileName|append:section|append:config.HTML_FILE_EXTENSION from template %}
{% endwith %}
{% if list|length>maxItemsForMultiPageList %}
{% opensubindex nav %}
{% with index=list|alphaIndex:'name' %}
{% for sect in index %}
{% with letter=sect.letter %}
{% set page_postfix=section|append:'_'|append:sect.label %}
{% indexentry nav name=letter file=page.fileName|append:page_postfix anchor='' %}
{# create index pages for all globals starting with a specific letter #}
{% create page.fileName|append:page_postfix|append:config.HTML_FILE_EXTENSION from template %}
{% endwith %}
{% endfor %}
{% endwith %}
{% closesubindex nav %}
{% endif %}
{# input idx, entries #}
var NAVTREEINDEX{{ idx }} =
{
{% for entry in entries %}
"{{ entry.file }}{{ config.HTML_FILE_EXTENSION }}{% if entry.anchor %}#{{ entry.anchor }}{% endif %}":[{% for e in entry.path %}{% if not forloop.first %}{{ e.index }}{% if not forloop.last%},{% endif %}{% endif %}{% endfor %}]{% if not forloop.last %},{%endif %}
{% endfor %}
};
var NAVTREE =
[
{% recursetree index.nav %}
[ "{{ node.name }}", {% if node.file %}"{{ node.file }}{{ config.HTML_FILE_EXTENSION }}{% if node.anchor %}#{{ node.anchor }}{% endif %}"{% else %}null{% endif %},{% if not node.is_leaf_node %} [
{{ children }}
]{% else %} null{% endif %} ]{% if not node.last %},{% endif %}
{% endrecursetree %}
];
var NAVTREEINDEX =
[
{% with navlist=index.nav|flatten|listsort:config.HTML_FILE_EXTENSION|prepend:'{{file}}'|append:'#{{anchor}}' navpages=navlist|paginate:250 %}
{% for page in navpages %}
"{{ page.0.file }}{{ config.HTML_FILE_EXTENSION }}{% if page.0.anchor %}#{{ page.0.anchor }}{% endif %}"{% if not forloop.last %},{%endif %}
{% with idx=forloop.counter0 entries=page %}
{% create forloop.counter0|prepend:'navtreeindex'|append:'.js' from 'htmljsnavindex.tpl' %}
{% endwith %}
{% endfor %}
{% endwith %}
];
{% msg %}----- Start generating HTML output for from template ----{% endmsg %}
{# ---- copy fixed resources to the output ----- #}
{% resource 'doxygen.css' %}
{% resource 'tabs.css' %}
{% resource 'jquery.js' %}
{% resource 'dynsections.js %}
{% resource 'tab_a.lum' %}
{% resource 'tab_b.lum' %}
{% resource 'tab_h.lum' %}
{% resource 'tab_s.lum' %}
{% resource 'tab_h.lum' %}
{% resource 'bc_s.luma' %}
{% resource 'doxygen.luma' %}
{% resource 'closed.luma' %}
{% resource 'open.luma' %}
{% resource 'bdwn.luma' %}
{% resource 'sync_on.luma' %}
{% resource 'sync_off.luma' %}
{# navigation #}
{% resource 'nav_f.lum' %}
{% resource 'nav_g.png' %}
{% resource 'nav_h.lum' %}
{% resource 'navtree.css' %}
{# general search resources #}
{% resource 'search_l.png' as 'search/search_l.png' %}
{% resource 'search_m.png' as 'search/search_m.png' %}
{% resource 'search_r.png' as 'search/search_r.png' %}
{% if config.DISABLE_INDEX %}
{% resource 'search_noidx.css' as 'search/search.css' %}
{% else %}
{% resource 'search.css' as 'search/search.css' %}
{% endif %}
{% if config.SERVER_BASED_SEARCH %}
{# server side search resources #}
{% resource 'mag.png' as 'search/mag.png' %}
{% resource 'extsearch.js as 'search/search.js' %}
{% resource 'search_functions.php' as 'search/search_functions.php' %}
{% resource 'search_opensearch.php' as 'search/search_opensearch.php' %}
{% else %}
{# client side search resources #}
{% resource 'mag_sel.png' as 'search/mag_sel.png' %}
{% resource 'close.png' as 'search/close.png' %}
{% resource 'search.js' as 'search/search.js' %}
{% endif %}
{# interactive SVGs #}
{% resource 'svgpan.js' %}
{# -------------------------------------------------- #}
{# global constants #}
{% set maxItemsForFlatList=2 %}
{% set maxItemsForMultiPageList=4 %}
{# global variable #}
{% set page_postfix='' %}
{# open the global navigation index #}
{% indexentry nav name=tr.mainPage file='index' anchor='' %}
{% opensubindex nav %}
{# ----------- HTML DOCUMENTATION PAGES ------------ #}
{# write main page documentation #}
{% if mainPage %}
{% with page=mainPage compound=mainPage %}
{% create mainPage.fileName|append:config.HTML_FILE_EXTENSION from 'htmlpage.tpl' %}
{% endwith %}
{% endif %}
{# write namespace documentation pages #}
{% for compound in namespaceList %}
{% with page=compound %}
{% create compound.fileName|append:config.HTML_FILE_EXTENSION from 'htmlnamespace.tpl' %}
{% endwith %}
{% endfor %}
{# write class documentation pages #}
{% for compound in classList %}
{% with page=compound %}
{% create compound.fileName|append:config.HTML_FILE_EXTENSION from 'htmlclass.tpl' %}
{% if compound.allMembersList and not config.OPTIMIZE_OUTPUT_FOR_C %}
{% create compound.allMembersFileName|append:config.HTML_FILE_EXTENSION from 'htmlallmembers.tpl' %}
{% endif %}
{% endwith %}
{% endfor %}
{# write the file sources #}
{% for compound in fileList %}
{% with page=compound %}
{# TODO: to deal with clang optimisation, we need to write the sources in a different order! #}
{# TODO: now writing sources has the side-effect of creating cross-references. Need to split that up! #}
{% if compound.hasSourceFile %}
{% create compound.sourceFileName|append:config.HTML_FILE_EXTENSION from 'htmlsource.tpl' %}
{% endif %}
{% endwith %}
{% endfor %}
{# write file documentation pages #}
{% for compound in fileList %}
{% with page=compound %}
{% create compound.fileName|append:config.HTML_FILE_EXTENSION from 'htmlfile.tpl' %}
{% endwith %}
{% endfor %}
{# write related page documentation #}
{% for compound in pageList %}
{% with page=compound %}
{% create compound.fileName|append:config.HTML_FILE_EXTENSION from 'htmlpage.tpl' %}
{% endwith %}
{% endfor %}
{# write module documentation #}
{% for compound in moduleList %}
{% with page=compound %}
{% create compound.fileName|append:config.HTML_FILE_EXTENSION from 'htmlmodule.tpl' %}
{% endwith %}
{% endfor %}
{# ----------- INDEXES ------------ #}
{# --- related pages --- #}
{% if pageTree.tree %}
{% with page=pageTree %}
{% create pageTree.fileName|append:config.HTML_FILE_EXTENSION from 'htmlpages.tpl' %}
{% endwith %}
{% endif %}
{# --- modules --- #}
{% if moduleTree.tree %}
{% with page=moduleTree %}
{% create moduleTree.fileName|append:config.HTML_FILE_EXTENSION from 'htmlmodules.tpl' %}
{% endwith %}
{% endif %}
{# --- namespaces --- #}
{% indexentry nav name=tr.namespaces file='' anchor='' %}
{% opensubindex nav %}
{% if namespaceTree.tree %}
{% with page=namespaceTree %}
{% create namespaceTree.fileName|append:config.HTML_FILE_EXTENSION from 'htmlnamespaces.tpl' %}
{% endwith %}
{% endif %}
{# write symbol indices for namespace members #}
{% if namespaceMembersIndex.all %}
{% with page=namespaceMembersIndex scope='namespace' template='htmlnsmembers.tpl' %}
{% indexentry nav name=tr.namespaceMembers file=page.fileName anchor='' %}
{% include 'htmlmembersindex.tpl' %}
{% endwith %}
{% endif %}
{% closesubindex nav %}
{# --- classes --- #}
{% indexentry nav name=tr.classes file='' anchor='' %}
{% opensubindex nav %}
{# write the annotated class list #}
{% if classTree.tree %}
{% with page=classTree %}
{% create classTree.fileName|append:config.HTML_FILE_EXTENSION from 'htmlannotated.tpl' %}
{% endwith %}
{% endif %}
{# write class index #}
{% if classIndex.list %}
{% with page=classIndex %}
{% create classIndex.fileName|append:config.HTML_FILE_EXTENSION from 'htmlclasses.tpl' %}
{% endwith %}
{% endif %}
{# TODO: write the class inheritance hierarchy #}
{% if classHierarchy.tree %}
{% with page=classHierarchy %}
{% create classHierarchy.fileName|append:config.HTML_FILE_EXTENSION from 'hierarchy.tpl' %}
{% endwith %}
{% endif %}
{# write symbol indices for class members #}
{% if classMembersIndex.all %}
{% with page=classMembersIndex scope='class' template='htmlclmembers.tpl' %}
{% indexentry nav name=tr.classMembers file=page.fileName anchor='' %}
{% include 'htmlmembersindex.tpl' %}
{% endwith %}
{% endif %}
{% closesubindex nav %}
{# --- files --- #}
{% indexentry nav name=tr.files file='' anchor='' %}
{% opensubindex nav %}
{# write the directory/file hierarchy #}
{% if fileTree.tree %}
{% with page=fileTree %}
{% create fileTree.fileName|append:config.HTML_FILE_EXTENSION from 'htmlfiles.tpl' %}
{% endwith %}
{% endif %}
{# write symbol indices for global namespace #}
{% if globalsIndex.all %}
{% with page=globalsIndex scope='file' template='htmlflmembers.tpl' %}
{% indexentry nav name=tr.fileMembers file=page.fileName anchor='' %}
{% include 'htmlmembersindex.tpl' %}
{% endwith %}
{% endif %}
{% closesubindex nav %}
{# write directory documentation pages #}
{% for compound in dirList %}
{% with page=compound %}
{% create compound.fileName|append:config.HTML_FILE_EXTENSION from 'htmldir.tpl' %}
{% endwith %}
{% endfor %}
{# close the global navigation index #}
{% closesubindex nav %}
{# write the navigation tree data #}
{% if config.GENERATE_TREEVIEW %}
{% create 'navtreedata.js' from 'htmljsnavtree.tpl' %}
{% endif %}
{% msg %}----- End generating HTML output for from template ----{% endmsg %}
{# input: list #}
{% set singleList=(list|length<=maxItemsForFlatList) or (list|length>maxItemsForMultiPageList) %}
{% if singleList %}
<ul>
{% endif %}
{% with index=list|alphaIndex:'name' %}
{% for section in index %}
{% if not singleList or letter=='' or section.letter==letter %}
{% if not singleList %}
<a class="anchor" id="{{ section.label }}"></a><h3>- {{ section.letter }} -</h3>
<ul>
{% endif %}
{% for nameList in section.items|groupBy:'name' %}
{% spaceless %}
{% for item in nameList|listsort:'{{item.file.name}}' %}
{% if forloop.first %}
<li>{{ item.name }}{% if (item.isFunction or item.isSignal or item.isSlot) and not item.isObjCMethod %}(){% endif %}&#160;:&#160;
{% endif %}
{% with obj=item scope=item|get:scope text=scope.name %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% if not forloop.last %},&#160;
{% else %}
</li>
{% endif %}
{% endfor %}
{% endspaceless %}
{% endfor %}
{% if not singleList %}
</ul>
{% endif %}
{% endif %}
{% endfor %}
{% endwith %}
{% if singleList %}
</ul>
{% endif %}
{# input: page #}
{% opensubindex nav %}
{# all members #}
{% with list=page.all section='' %}
{% indexentry nav name=tr.all file=page.fileName|append:page_postfix anchor='' %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
{# functions #}
{% if page.functions %}
{% set page_postfix='_func' %}
{% indexentry nav name=tr.functions file=page.fileName|append:page_postfix anchor='' %}
{% with list=page.functions section=page_postfix %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
{% endif %}
{# variables #}
{% if page.variables %}
{% set page_postfix='_vars' %}
{% indexentry nav name=tr.variables file=page.fileName|append:page_postfix anchor='' %}
{% with list=page.variables section=page_postfix %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
{% endif %}
{# typedefs #}
{% if page.typedefs %}
{% set page_postfix='_type' %}
{% indexentry nav name=tr.typedefs file=page.fileName|append:page_postfix anchor='' %}
{% with list=page.typedefs section=page_postfix %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
{% endif %}
{# enums #}
{% if page.enums %}
{% set page_postfix='_enum' %}
{% indexentry nav name=tr.enums file=page.fileName|append:page_postfix anchor='' %}
{% with list=page.enums section=page_postfix %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
{% endif %}
{# enumValues #}
{% if page.enumValues %}
{% set page_postfix='_eval' %}
{% indexentry nav name=tr.enumValues file=page.fileName|append:page_postfix anchor='' %}
{% with list=page.enumValues section=page_postfix %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
{% endif %}
{# macros #}
{% if page.macros %}
{% set page_postfix='_defs' %}
{% indexentry nav name=tr.macros file=page.fileName|append:page_postfix anchor='' %}
{% with list=page.macros section=page_postfix %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
{% endif %}
{# properties #}
{% if page.properties %}
{% set page_postfix='_prop' %}
{% indexentry nav name=tr.properties file=page.fileName|append:page_postfix anchor='' %}
{% with list=page.properties section=page_postfix %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
{% endif %}
{# events #}
{% if page.events %}
{% set page_postfix='_evnt' %}
{% indexentry nav name=tr.events file=page.fileName|append:page_postfix anchor='' %}
{% with list=page.events section=page_postfix %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
{% endif %}
{# related #}
{% if page.related %}
{% set page_postfix='_rela' %}
{% indexentry nav name=tr.related file=page.fileName|append:page_postfix anchor='' %}
{% with list=page.related section=page_postfix %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
{% endif %}
{% set page_postfix='' %}
{% closesubindex nav %}
{# inputs page, list #}
{% if not config.DISABLE_INDEX %}
{# third row of tabs #}
<div id="navrow3" class="tabs2">
<ul class="tablist">
<li {% if section=='' %}class="current"{% endif %}><a href="{{ page.fileName }}{{ config.HTML_FILE_EXTENSION }}">{{ tr.all }}</a></li>
{% if page.functions %}
<li {% if section=='_func' %}class="current"{% endif %}><a href="{{page.fileName}}_func{{ config.HTML_FILE_EXTENSION }}">{{ tr.functions }}</a></li>
{% endif %}
{% if page.variables %}
<li {% if section=='_vars' %}class="current"{% endif %}><a href="{{page.fileName}}_vars{{ config.HTML_FILE_EXTENSION }}">{{ tr.variables }}</a></li>
{% endif %}
{% if page.typedefs %}
<li {% if section=='_type' %}class="current"{% endif %}><a href="{{page.fileName}}_type{{ config.HTML_FILE_EXTENSION }}">{{ tr.typedefs }}</a></li>
{% endif %}
{% if page.enums %}
<li {% if section=='_enum' %}class="current"{% endif %}><a href="{{page.fileName}}_enum{{ config.HTML_FILE_EXTENSION }}">{{ tr.enums }}</a></li>
{% endif %}
{% if page.enumValues %}
<li {% if section=='_eval' %}class="current"{% endif %}><a href="{{page.fileName}}_eval{{ config.HTML_FILE_EXTENSION }}">{{ tr.enumValues }}</a></li>
{% endif %}
{% if page.macros %}
<li {% if section=='_defs' %}class="current"{% endif %}><a href="{{page.fileName}}_defs{{ config.HTML_FILE_EXTENSION }}">{{ tr.macros }}</a></li>
{% endif %}
{% if page.properties %}
<li {% if section=='_prop' %}class="current"{% endif %}><a href="{{page.fileName}}_prop{{ config.HTML_FILE_EXTENSION }}">{{ tr.properties }}</a></li>
{% endif %}
{% if page.events %}
<li {% if section=='_evnt' %}class="current"{% endif %}><a href="{{page.fileName}}_evnt{{ config.HTML_FILE_EXTENSION }}">{{ tr.events }}</a></li>
{% endif %}
{% if page.related %}
<li {% if section=='_rela' %}class="current"{% endif %}><a href="{{page.fileName}}_rela{{ config.HTML_FILE_EXTENSION }}">{{ tr.related }}</a></li>
{% endif %}
</ul>
</div>
{# forth row of tabs #}
{% if list|length>maxItemsForMultiPageList %}
<div id="navrow4" class="tabs3">
<ul class="tablist">
{% with index=list|alphaIndex:'name' %}
{% for sect in index %}
<li {% if sect.letter==letter %}class="current"{% endif %}><a href="{{page.fileName}}{{section}}_{{sect.label}}{{ config.HTML_FILE_EXTENSION }}">{{ sect.letter }}</a></li>
{% endfor %}
{% endwith %}
</ul>
</div>
{% endif %}
{% endif %}
{# inputs: member, inheritId=<string> anonymousNestingLevel=<int> #}
{% if not member.isEnumValue %}
{# start member declaration #}
<tr class="memitem:{{ member.anchor}}{% if inheritId %} inherit {{ inheritId }}{% endif %}">
{% if member.isEnumeration %}
{% if anonymousNestingLevel>0 %}
<td class="memItemLeft">
{% else %}
<td class="memItemLeft" align="right" valign="top">
{% endif %}
{# write optional anchor #}
{% if not member.hasDetails %}
<a class="anchor" id="{% if member.anonymousMember %}{{ member.anonymousMember.anchor}}{% else %}{{ member.anchor }}{% endif %}"></a>
{% endif %}
{# write optional indent #}
{% repeat anonymousNestingLevel %}&#160;&#160;&#160;{% endrepeat %}
enum&#160;</td><td class="memTemplItemRight" valign="bottom">
{# write name #}
{% if not member.isAnonymous %}
{% with obj=member text=member.name %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% endif %}
{% if member.enumBaseType %} : {{ member.enumBaseType }}{% endif %}
{% if member.enumValues|length>0 and config.ENUM_VALUES_PER_LINE>0 %}
{
{% for enumVal in member.enumValues %}
{% if member.enumValues|length>config.ENUM_VALUES_PER_LINE and forloop.counter0|divisibleby:config.ENUM_VALUES_PER_LINE %}
<br/>&#160;&#160;
{% endif %}
{% spaceless %}
{% with obj=enumVal text=enumVal.name %}
{% include 'htmlobjlink.tpl' %}
{% if enumVal.hasOneLineInitializer %}
{{ member.initializer }}
{% endif %}
{% if not forloop.last %},{% endif %}
{% endwith %}
{% endspaceless %}
{% endfor %}
{% if member.enumValues|length>config.ENUM_VALUES_PER_LINE %}
<br/>
{% endif %}
}
{% endif %}
{% else %}
{% if anonymousNestingLevel>0 or member.anonymousType %}
<td class="memItemLeft">
{% else %}
{% if member.templateArgs %}
<td class="memTemplParams" colspan="2">
{% else %}
<td class="memItemLeft" align="right" valign="top">
{% endif %}
{% endif %}
{# write optional anchor #}
{% if not member.hasDetails %}
<a class="anchor" id="{% if member.anonymousMember %}{{ member.anonymousMember.anchor}}{% else %}{{ member.anchor }}{% endif %}"></a>
{% endif %}
{# write optional indent #}
{% repeat anonymousNestingLevel %}&#160;&#160;&#160;{% endrepeat %}
{# write template list #}
{% if member.templateArgs and member.language=='cpp' %}
{% spaceless %}
template&lt;
{% for targ in member.templateArgs %}
{{ targ.type }} {{ targ.name }}{% if targ.defVal %} = {{ targ.defval }}{% endif %}{% if not forloop.last %}, {% endif %}
{% endfor %}
{% endspaceless %} &gt;
</td></tr><tr class="memitem:{{ member.anchor }}{% if inheritId %} inherit {{ inheritId }}{% endif %}"><td class="memTemplItemLeft" align="right" valign="top">
{% endif %}
{# write type #}
{% if member.anonymousType %}
{% with ctx=member.anonymousType anonymousNestingLevel=anonymousNestingLevel|add:1 %}
{{ ctx.compoundType }}
{% if ctx.bareName %}
&#160;<b>{{ ctx.bareName }}</b> {# TODO: associated documentation is lost! #}
{% endif %}
{</td></tr>
{# recursively write members that can appear inside the anonymous class/struct #}
{% with memberListInfo=ctx.publicTypes %}
{% include 'htmlmemlist.tpl' %}
{% endwith %}
{% with memberListInfo=ctx.publicMethods %}
{% include 'htmlmemlist.tpl' %}
{% endwith %}
{% with memberListInfo=ctx.publicStaticMethods %}
{% include 'htmlmemlist.tpl' %}
{% endwith %}
{% with memberListInfo=ctx.publicAttributes %}
{% include 'htmlmemlist.tpl' %}
{% endwith %}
{% with memberListInfo=ctx.publicStaticAttributes %}
{% include 'htmlmemlist.tpl' %}
{% endwith %}
{% with memberListInfo=ctx.protectedTypes %}
{% include 'htmlmemlist.tpl' %}
{% endwith %}
{% with memberListInfo=ctx.protectedMethods %}
{% include 'htmlmemlist.tpl' %}
{% endwith %}
{% with memberListInfo=ctx.protectedStaticMethods %}
{% include 'htmlmemlist.tpl' %}
{% endwith %}
{% with memberListInfo=ctx.protectedAttributes %}
{% include 'htmlmemlist.tpl' %}
{% endwith %}
{% with memberListInfo=ctx.protectedStaticAttributes %}
{% include 'htmlmemlist.tpl' %}
{% endwith %}
{% with memberListInfo=ctx.privateTypes %}
{% include 'htmlmemlist.tpl' %}
{% endwith %}
{% with memberListInfo=ctx.privateMethods %}
{% include 'htmlmemlist.tpl' %}
{% endwith %}
{% with memberListInfo=ctx.privateStaticMethods %}
{% include 'htmlmemlist.tpl' %}
{% endwith %}
{% with memberListInfo=ctx.privateAttributes %}
{% include 'htmlmemlist.tpl' %}
{% endwith %}
{% with memberListInfo=ctx.privateStaticAttributes %}
{% include 'htmlmemlist.tpl' %}
{% endwith %}
{% endwith %}
<tr class="memitem:{{ member.anchor }}{% if inheritId %} inherit {{ inheritId }}{% endif %}">
<td class="memItemLeft" valign="top">{% repeat anonymousNestingLevel %}&#160;&#160;&#160;{% endrepeat %}
}
{% else %}
{% if member.isObjCMethod %}
{% if member.isStatic %}+&#160;{% else %}-&#160;{% endif %}
{% else %}
{{ member.declType }}
{% endif %}
{% endif %}
{% spaceless %}
&#160;
{% if anonymousNestingLevel>0 %}
&#160;&#160;
{% else %}
</td><td class="{% if member.templateArgs %}memTemplItemRight{% else %}memItemRight{% endif %}" valign="bottom">
{% endif %}
{% endspaceless %}
{# write name #}
{% if not member.isAnonymous %}
{% if member.anonymousMember %}
{% with obj=member.anonymousMember text=member.anonymousMember.name %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% else %}
{% with obj=member text=member.name %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% endif %}
{% endif %}
{# write arguments #}
{% if not member.isObjCMethod %}
{{ member.declArgs }}
{% endif %}
{# write exceptions #}
{% if member.exception %}
{{ member.exception }}
{% endif %}
{# write bitfield #}
{% if member.bitfields %}
{{ member.bitfields }}
{% endif %}
{# write one-line initializer #}
{% if member.hasOneLineInitializer %}
{% if member.isDefine %}&#160;&#160;&#160;{% endif %}
{{ member.initializer }}
{% endif %}
{# write template alias #}
{% if member.templateAlias %}
{{ member.templateAlias }}
{% endif %}
{# write obj-c implementation #}
{% if member.isObjCMethod or member.isObjCProperty %}
{% if member.isImplementation %}
<code> [implementation]</code>
{% endif %}
{% endif %}
{# write getter/setter property #}
{% if member.isProperty and member.propertyAttrs|length>0 %}
<code> [
{% for attr in member.propertyAttrs %}
{{ attr }}{% if not forloop.last %},{% endif %}
{% endfor %}
]</code>
{% endif %}
{# write event methods #}
{% if member.isEvent and member.eventAttrs|length>0 %}
<code> [
{% for attr in member.eventAttrs %}
{{ attr }}{% if not forloop.last %},{% endif %}
{% endfor %}
]</code>
{% endif %}
{# end member declaration #}
{% endif %} {# member.isEnumeration #}
</td></tr>
{# brief description #}
{% if member.brief %}
<tr class="memdesc:{{ member.anchor }}{% if inheritId %} inherit {{ inheritId }}{% endif %}"><td class="mdescLeft">&#160;</td><td class="mdescRight">
{{ member.brief }}
{% if member.hasDetails %}
{# TODO: link to group if member is grouped #}
<a href="#{{ member.anchor }}">{{ tr.more }}</a>
{% endif %}
<br/></td></tr>
{% endif %}
<tr class="separator:{{ member.anchor }}{% if inheritId %} inherit {{ inheritId }}{% endif %}"><td class="memSeparator" colspan="2">&#160;</td></tr>
{% endif %} {# not member.isEnumValue #}
{# inputs: memberListInfo or memberGroupInfo #}
{% if memberListInfo %}
{% if memberListInfo.members|length>0 or memberListInfo.memberGroups|length>0 %}
<table class="memberdecls">
{# section header #}
<tr class="heading"><td colspan="2"><h2 class="groupheader">{{ memberListInfo.title }}<a name="{{ memberListInfo.anchor }}"></a></h2></td></tr>
{% if memberListInfo.subtitle %}
<tr><td class="ititle" colspan="2">{{ memberListInfo.subtitle }}</td></tr>
{% endif %}
{# normal members #}
{% with inheritId='' anonymousNestingLevel=0 %}
{% for member in memberListInfo.members %}
{% include 'htmlmemdecl.tpl' %}
{% endfor %}
{% endwith %}
{# grouped members #}
{% for memgroup in memberListInfo.memberGroups %}
{% with memberListInfo=memgroup inheritId='' anonymousNestingLevel=0 %}
{% if memberListInfo.title!='[NOHEADER]' %}
<tr><td colspan="2"><div class="groupHeader">{{ memberListInfo.title }}</div></td></tr>
{% if memberListInfo.docs %}
<tr><td colspan="2"><div class="groupText">{{ memberListInfo.docs }}</div></td></tr>
{% endif %}
{% endif %}
{% for member in memberListInfo.members %}
{% include 'htmlmemdecl.tpl' %}
{% endfor %}
{% endwith %}
{% endfor %}
{# inherited members #}
{% if memberListInfo.inherited %}
{% for info in memberListInfo.inherited %}
{% include 'htmlmeminherit.tpl' %}
{% endfor %}
{% endif %}
</table>
{% endif %}
{% endif %}
{# inputs: memberListInfo #}
{% if memberListInfo %}
{% if memberListInfo.members|length>0 %}
<h2 class="groupheader">{{ memberListInfo.title }}</h2>
{% for member in memberListInfo.members %}
{% if member.hasDetails %} {# TODO: not the same as isDetailedSectionVisible! #}
{# TODO: handle enum + anonymous members #}
<a class="anchor" id="{{ member.anchor }}"></a> {# TODO: for namespace members written in a file we need to prepend file_ #}
<div class="memitem">
<div class="memproto">
{# write template declarations #}
{% if member.language=='cpp' and member.templateDecls|length>0 %}
{% for targList in member.templateDecls %}
{% spaceless %}
<div class="memtemplate">
template&lt;
{% for targ in targList %}
{{ targ.type }}{% if targ.name %} {{ targ.name }}{% endif %}{% if targ.defVal %}&#160;= {{ targ.defVal }}{% endif %}{% if not forloop.last %}, {% endif %}
{% endfor %}
&gt;
</div>
{% endspaceless %}
{% endfor %}
{% endif %}
{# start of labels if present #}
{% if member.labels|length>0 %}
<table class="mlabels"><tr><td class="mlabels-left">
{% endif %}
<table class="memname">
<tr><td class="memname">
{{ member.definition }}
{# write argument list #}
{# TODO: TCL #}
{% if member.hasParameterList %}
{% if member.isObjCMethod %}
</td><td></td>
{% for arg in member.parameters %}
{% if not forloop.first %}
<tr><td class="paramkey">{{ arg.namePart }}</td><td></td>
{% endif %}
<td class="paramtype">({{ arg.type }})&#160;</td><td class="paramname">
{% if arg.name or arg.type=='...' %}
<em>{% if not arg.name %}{{ arg.type }}{% else %}{{ arg.name }}{% endif %}</em>
{% endif %}
{% if not forloop.last %}
,</td></tr>
{% endif %}
{% endfor %}
{% else %}
</td><td>(</td>
{% for arg in member.parameters %}
{% if member.isDefine %}
{% if not forloop.first %}
<tr><td class="paramkey"></td><td></td>
{% endif %}
<td class="paramtype"></td><td class="paramname">
{% spaceless %}
{% if arg.type %}
<em>{{ arg.type }}</em>
{% endif %}
{% if not forloop.last %}
,</td></tr>
{% endif %}
{% endspaceless %}
{% else %} {# normal function/method #}
{% if forloop.first %}
<td class="paramtype">
{% endif %}
{% if arg.attrib %}{{ arg.attrib }} {% endif %}
{% if arg.type!='...' %}
{{ arg.type }}
{% endif %}
&#160;</td><td class="paramname">
{% if arg.name or arg.type=='...' %}
<em>{% if not arg.name %}{{ arg.type }}{% else %}{{ arg.name }}{% endif %}</em>
{% endif %}
{{ arg.array }}
{% if arg.defVal %} = {{ arg.defVal }}{% endif %}
{% if not forloop.last %}
,</td></tr><tr><td class="paramkey"></td><td></td><td class="paramtype">
{% endif %}
{% endif %}
{% endfor %}
{% if member.parameters|length==0 %}
<td class="paramname">
{% endif %}
{% if member.parameters|length<2 %}
</td><td>)</td><td>
{% else %}
&#160;</td></tr>
<tr><td></td><td>)</td><td></td><td>
{% endif %}
{{ member.extraTypeChars }}
{% if member.hasConstQualifier %} const {% endif %}
{% if member.hasVolatileQualifier %} volatile {% endif %}
{{ member.trailingReturnType }}
{% endif %}
{% endif %}
{# one line initializer #}
{% if member.hasOneLineInitializer %}
{% if member.isDefine %}&#160;&#160;&#160;{% endif %}
{{ member.initializer }}
{% endif %}
{# exception list #}
{% if member.exception %}
{# TODO: special exception rendering for UNO IDL... #}
{{ member.exception }}
{% endif %}
</td></tr>
</table>
{# end of labels if present #}
{% if member.labels|length>0 %}
</td><td class="mlabels-right">{% spaceless %}
{% for label in member.labels %}
<span class="mlabel">{{ label }}</span>
{% endfor %}{% endspaceless %}
</td></tr></table>
{% endif %}
</div>
<div class="memdoc">
{# TODO: write group include #}
{# multi-line initializer #}
{% if member.hasMultiLineInitializer %}
<b>{% if member.isDefine %}{{ tr.defineValue }}{% else %}{{ tr.initialValue }}{% endif %}</b>
<div class="fragment">{{ member.initializerAsCode }}</div>
{% endif %}
{# brief description #}
{% if member.brief and config.REPEAT_BRIEF and config.BRIEF_MEMBER_DESC %}
<p>{{ member.brief }}</p>
{% endif %}
{# detailed description #}
{# TODO: VHDL #}
{{ member.details }}
{# inbody description #}
{{ member.inbodyDocs }}
{# argument list #}
{{ member.paramDocs }}
{# enum values #}
{% if member.isEnumeration and member.enumValues|length>0 %}
<table class="fieldtable">
<tr><th colspan="2">{{ tr.enumValues }}</th></tr>
{% for enumVal in member.enumValues %}
<tr><td class="fieldname"><em><a class="anchor" id="{{ enumVal.anchor}}"></a>{{ enumVal.name }}</em>&#160;</td>
<td class="fielddoc">{{ enumVal.brief }}{{ enumVal.details }}</td>
</tr>
{% endfor %}
</table>
{% endif %}
{# reimplements #}
{% if member.reimplements %}
<p>
{% markers mem in member.reimplements with tr.reimplements %}
{% with obj=mem text=mem.class.name %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% endmarkers %}
</p>
{% endif %}
{% if member.implements %}
<p>
{% markers mem in member.implements with tr.implements %}
{% with obj=mem text=mem.class.name %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% endmarkers %}
</p>
{% endif %}
{# reimplementedBy #}
{% if member.reimplementedBy %}
<p>
{% markers mem in member.reimplementedBy with tr.reimplementedBy:member.reimplementedBy|length %}
{% with obj=mem text=mem.class.name %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% endmarkers %}
</p>
{% endif %}
{% if member.implementedBy %}
<p>
{% markers mem in member.implementedBy with tr.implementedBy:member.implementedBy|length %}
{% with obj=mem text=mem.class.name %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% endmarkers %}
</p>
{% endif %}
{# category relation #}
{# TODO #}
{# examples #}
{% if member.examples %}
<dl><dt><b>{{ tr.examples }}</b><dd>
{% markers obj in member.examples with tr.exampleList:member.examples|length %}
{% with text=obj.text %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% endmarkers %}
</dd></dl>
{% endif %}
{# type constraints #}
{% with obj=member %}
{% include 'htmltypeconstraints.tpl' %}
{% endwith %}
{# source def #}
{% if member.sourceDef %}
{% markers obj in member.sourceDef with tr.definedAtLineInSourceFile %}
{% with text=obj.text %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% endmarkers %}
{% endif %}
{# source refs #}
{% if member.sourceRefs|length>0 %}
<p>
{% markers mem in member.sourceRefs with tr.sourceRefs:member.sourceRefs|length %}
{% if mem.sourceDef and config.REFERENCES_LINK_SOURCE %}
{% with obj=mem.sourceDef.0 text=mem.name|append:mem.functionQualifier %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% else %}
{% with obj=mem text=mem.name|append:mem.functionQualifier %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% endif %}
{% endmarkers %}
</p>
{% endif %}
{# source refs by #}
{% if member.sourceRefBys|length>0%}
<p>
{% markers mem in member.sourceRefBys with tr.sourceRefBys:member.sourceRefBys|length %}
{% if mem.sourceDef and config.REFERENCES_LINK_SOURCE %}
{% with obj=mem.sourceDef.0 text=mem.name|append:mem.functionQualifier %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% else %}
{% with obj=mem text=mem.name|append:mem.functionQualifier %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% endif %}
{% endmarkers %}
</p>
{% endif %}
{# inline code #}
{% if member.hasSources and config.INLINE_SOURCES %}
<div class="fragment">
{{ member.sourceCode }}
</div>
{% endif %}
{# call graph #}
{% if member.hasCallGraph %}
{% with obj=member %}
{% include 'htmldynheader.tpl' %}
{% endwith %}
{{ tr.callGraph }}
</div>
{% with obj=member %}
{% include 'htmldyncontents.tpl' %}
{% endwith %}
{{ member.callGraph }}
</div>
{% endif %}
{# caller graph #}
{% if member.hasCallerGraph %}
{% with obj=member %}
{% include 'htmldynheader.tpl' %}
{% endwith %}
{{ tr.callerGraph }}
</div>
{% with obj=member %}
{% include 'htmldyncontents.tpl' %}
{% endwith %}
{{ member.callerGraph }}
</div>
{% endif %}
</div>
</div>
{% endif %}
{% endfor %} {# for each member #}
{# TODO: write member group docs #}
{% endif %}
{% endif %}
{# input: info (with .id .inheritedFrom and .members) #}
<tr class="inherit_header {{ info.id }}">
<td colspan="2" onclick="javascript:toggleInherit('{{ info.id }}')">
<img src="{{ page.relPath }}closed.png" alt="-"/>&#160;
{% markers mark in info.inheritedFrom with tr.inheritedFrom %}
{% if markers.id==0 %} {# the title mark #}
{{ mark }}
{% endif %}
{% if markers.id==1 %} {# the class link mark #}
{% with obj=mark text=mark.name %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% endif %}
{% endmarkers %}
</td></tr>
{% with inheritId=info.id anonymousNestingLevel=0 %}
{% for member in info.members %}
{% include 'htmlmemdecl.tpl' %}
{% endfor %}
{% endwith %}
{# input: memberListInfo #}
{% if memberListInfo %}
{% if memberListInfo.members|length>0 or memberListInfo.memberGroups|length>0 %}
{% for member in memberListInfo.members %}
{% include 'htmlmemdecl.tpl' %}
{% endfor %}
{% for memgroup in memberListInfo.memberGroups %}
{% with memberListInfo=memgroup inheritId='' %}
{% for member in memberListInfo.members %}
{% include 'htmlmemdecl.tpl' %}
{% endfor %}
{% endwith %}
{% endfor %}
{% endif %}
{% endif %}
{% if memberListInfo %}
{% if memberListInfo.members|length>0 %}
{% if not first %} &#124; {% endif %}
<a href="#{{ memberListInfo.anchor }}">{{ memberListInfo.title }}</a>
{% set first=False %}
{% endif %}
{% endif %}
{% extend 'htmlbase.tpl' %}
{% msg %}Generating HTML output for module {{ compound.name }}{% endmsg %}
{% block navpath %}
{% with navpath=compound.navigationPath %}
{% include 'htmlnavpath.tpl' %}
{% endwith %}
{% endblock %}
{% block title %}
{# write summary links in the title area #}
<div class="summary">
{% with first=True %}
{% if compound.modules %}
<a href="#modules">{{ tr.modules }}</a>
{% set first=False %}
{% endif %}
{% if compound.dirs %}
<a href="#dirs">{{ tr.dirs }}</a>
{% set first=False %}
{% endif %}
{% if compound.files %}
<a href="#files">{{ tr.files }}</a>
{% set first=False %}
{% endif %}
{% if compound.classes %}
<a href="#classes">{{ tr.classes }}</a>
{% set first=False %}
{% endif %}
{% if compound.namespaces %}
{% if not first %} &#124; {% endif %}
<a href="#namespaces">{{ tr.namespaces }}</a>
{% set first=False %}
{% endif %}
{% if compound.constantgroups %}
{% if not first %} &#124; {% endif %}
<a href="#constantgroups">{{ tr.constantgroups }}</a>
{% set first=False %}
{% endif %}
{% with memberListInfo=compound.macros %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.typedefs %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.enums %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.enumvalues %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.functions %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.variables %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.signals %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.publicSlots %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.protectedSlots %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.privateSlots %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.events %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.properties %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.friends %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% endwith %}
</div>
{{ block.super }}
{% endblock %}
{% block content %}
<div class="contents">
{# brief description #}
{% if compound.brief %}
{{ compound.brief }}
{% if compound.hasDetails %}
<a href="#details">{{ tr.more }}</a>
{% endif %}
{% endif %}
{# group graph #}
{% if compound.hasGroupGraph %}
{% with obj=compound %}
{% include 'htmldynheader.tpl' %}
{% endwith %}
{{ tr.collaborationDiagramFor:compound.name }}
</div>
{% with obj=compound %}
{% include 'htmldyncontents.tpl' %}
{% endwith %}
{{ compound.groupGraph }}
</div>
{% endif %}
{# member declarations #}
{# modules #}
{% with list=compound.modules label='modules' title=tr.modules local=False %}
{% include 'htmldeclcomp.tpl' %}
{% endwith %}
{# dirs #}
{% with list=compound.dirs, label='dirs' title=tr.directories local=False %}
{% include 'htmldeclcomp.tpl' %}
{% endwith %}
{# files #}
{% with list=compound.files, label='files' title=tr.files local=False %}
{% include 'htmldeclcomp.tpl' %}
{% endwith %}
{# namespaces #}
{% with list=compound.namespaces, label='namespaces' title=tr.namespaces local=False %}
{% include 'htmldeclcomp.tpl' %}
{% endwith %}
{# classes #}
{% with list=compound.classes label='classes' title=tr.classes local=False %}
{% include 'htmldeclcomp.tpl' %}
{% endwith %}
{# constantgroups #}
{% with list=compound.constantgroups, label='constantgroups' title=tr.constantgroups local=False %}
{% include 'htmldeclcomp.tpl' %}
{% endwith %}
{# defines #}
{% with memberListInfo=compound.macros %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# typedefs #}
{% with memberListInfo=compound.typedefs %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# enums #}
{% with memberListInfo=compound.enums %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# enum values #}
{% with memberListInfo=compound.enumvalues %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# functions #}
{% with memberListInfo=compound.functions %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# variables #}
{% with memberListInfo=compound.variables %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# signals #}
{% with memberListInfo=compound.signals %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# public slots #}
{% with memberListInfo=compound.publicSlots %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# protected slots #}
{% with memberListInfo=compound.protectedSlots %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# private slots #}
{% with memberListInfo=compound.privateSlots %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# private events #}
{% with memberListInfo=compound.events %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# private properties #}
{% with memberListInfo=compound.properties %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# private friends #}
{% with memberListInfo=compound.friends %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# membergroups #}
{% if compound.memberGroups %}
{% for memberListInfo in compound.memberGroups %}
{% include 'htmlmemdecls.tpl' %}
{% endfor %}
{% endif %}
{# end member declarations #}
{# detailed description #}
{% if compound.hasDetails %}
{# anchor #}
<a name="details" id="details"></a>
{# header #}
<h2 class="groupheader">{{ tr.detailedDesc }}</h2>
<div class="textblock">
{# brief #}
{% if compound.brief and config.REPEAT_BRIEF %}
<p>
{{ compound.brief }}
</p>
{% endif %}
{# details #}
{{ compound.details }}
{# source definition #}
{% if compound.sourceDef %}
{% markers obj in compound.sourceDef with tr.definedAtLineInSourceFile %}
{% with text=obj.text %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% endmarkers %}
{% endif %}
</div>
{% endif %}
{# member definitions #}
{# inline classes #}
{% if compound.inlineClasses %}
<h2 class="groupheader">{{ tr.classDocumentation }}</h2>
{% for class in compound.inlineClasses %}
{# write anchor #}
<a class="anchor" id="{{ class.anchor }}"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr><td class="memname">{{ class.compoundType }} {{ class.name }}</td></tr>
</table>
</div>
<div class="memdoc">
<div class="textblock">
{# TODO: the stuff inside textblock can be the same as in htmlclass.tpl!! #}
{# template specifier #}
{% if class.language=='cpp' and class.templateDecls %}
<h3>{% spaceless %}
{% for targList in class.templateDecls %}
template&lt;
{% for targ in targList %}
{{ targ.type }}{% if targ.name %} {{ targ.name }}{% endif %}{% if targ.defVal %}&#160;= {{ targ.defVal }}{% endif %}{% if not forloop.last %}, {% endif %}
{% endfor %}
&gt;<br/>
{% endfor %}
{% endspaceless %}
{{ class.classType }}&#160;{{ class.name }}
</h3>
{% endif %}
{# brief description #}
{% if class.brief and config.REPEAT_BRIEF %}
<p>{{ class.brief }}</p>
{% endif %}
{# detailed docs #}
{{ class.details }}
{# source def #}
{% if class.sourceDef %}
{% markers obj in class.sourceDef with tr.definedAtLineInSourceFile %}
{% with text=obj.text %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% endmarkers %}
{% endif %}
</div><!-- textblock -->
{# table with fields #}
<table class="fieldtable">
<tr><th colspan="3">{{ tr.compoundMembers }}</td></tr>
{% for member in class.members %}
<tr><td class="fieldtype">
<a class="anchor" id="{{ member.anchor }}"></a>{{ member.fieldType }}
</td>
<td class="fieldname">
{{ member.name }}
{% if member.isVariable and member.declArgs %}{{ member.declArgs }}{% endif %}
{{ member.bitfields }}
</td>
<td class="fielddoc">
{% if member.brief and not member.details %}{# only brief #}
{{ member.brief }}
{% else %} {# only details or both #}
{% if member.brief %}<p>{{ member.brief }}</p>{% endif %}
{{ member.details }}
{% endif %}
</td>
</tr>
{% endfor %}
</table>
</div><!-- memdoc -->
</div><!-- memitem -->
{% endfor %}
{% endif %}
{# defines #}
{% with memberListInfo=compound.detailedMacros %}
{% include 'htmlmemdef.tpl' %}
{% endwith %}
{# typedefs #}
{% with memberListInfo=compound.detailedTypedefs %}
{% include 'htmlmemdef.tpl' %}
{% endwith %}
{# enums #}
{% with memberListInfo=compound.detailedEnums %}
{% include 'htmlmemdef.tpl' %}
{% endwith %}
{# functions #}
{% with memberListInfo=compound.detailedFunctions %}
{% include 'htmlmemdef.tpl' %}
{% endwith %}
{# variables #}
{% with memberListInfo=compound.detailedVariables %}
{% include 'htmlmemdef.tpl' %}
{% endwith %}
{# end member definitions #}
</div>
{% endblock %}
{% extend 'htmlbase.tpl' %}
{% block content %}
<div class="contents">
<div class="textblock">
{{ tr.modulesDescription }}
</div>
{% indexentry nav name=tr.modules file=page.fileName anchor='' %}
{% opensubindex nav %}
{% with tree=moduleTree %}
{% include 'htmldirtree.tpl' %}
{% endwith %}
{% closesubindex nav %}
</div><!-- contents -->
{% endblock %}
{% extend 'htmlbase.tpl' %}
{% msg %}Generating HTML output for namespace {{ compound.name }}{% endmsg %}
{% block navpath %}
{% with navpath=compound.navigationPath %}
{% include 'htmlnavpath.tpl' %}
{% endwith %}
{% endblock %}
{% block title %}
{# write summary links in the title area #}
<div class="summary">
{% with first=True %}
{% if compound.classes %}
<a href="#nested-classes">{{ tr.classes }}</a>
{% set first=False %}
{% endif %}
{% if compound.namespaces %}
{% if not first %} &#124; {% endif %}
<a href="#namespaces">{{ tr.namespaces }}</a>
{% set first=False %}
{% endif %}
{% if compound.constantgroups %}
{% if not first %} &#124; {% endif %}
<a href="#constantgroups">{{ tr.constantgroups }}</a>
{% set first=False %}
{% endif %}
{% with memberListInfo=compound.typedefs %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.enums %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.functions %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% with memberListInfo=compound.variables %}
{% include 'htmlmemsummary.tpl' %}
{% endwith %}
{% endwith %}
</div>
{{ block.super }}
{% endblock %}
{% block content %}
<div class="contents">
{# brief description #}
{% if compound.brief %}
{{ compound.brief }}
{% if compound.hasDetails %}
<a href="#details">{{ tr.more }}</a>
{% endif %}
{% endif %}
{# member declarations #}
{# classes #}
{% with list=compound.classes label='nested-classes' title=tr.classes local=False %}
{% include 'htmldeclcomp.tpl' %}
{% endwith %}
{# namespaces #}
{% with list=compound.namespaces, label='namespaces' title=tr.namespaces local=False %}
{% include 'htmldeclcomp.tpl' %}
{% endwith %}
{# constantgroups #}
{% with list=compound.constantgroups, label='constantgroups' title=tr.constantgroups local=False %}
{% include 'htmldeclcomp.tpl' %}
{% endwith %}
{# typedefs #}
{% with memberListInfo=compound.typedefs %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# enums #}
{% with memberListInfo=compound.enums %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# functions #}
{% with memberListInfo=compound.functions %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# variables #}
{% with memberListInfo=compound.variables %}
{% include 'htmlmemdecls.tpl' %}
{% endwith %}
{# membergroups #}
{% if compound.memberGroups %}
{% for memberListInfo in compound.memberGroups %}
{% include 'htmlmemdecls.tpl' %}
{% endfor %}
{% endif %}
{# end member declarations #}
{# detailed description #}
{% if compound.hasDetails %}
{# anchor #}
<a name="details" id="details"></a>
{# header #}
<h2 class="groupheader">{{ tr.detailedDesc }}</h2>
<div class="textblock">
{# brief #}
{% if compound.brief and config.REPEAT_BRIEF %}
<p>
{{ compound.brief }}
</p>
{% endif %}
{# details #}
{{ compound.details }}
{# source definition #}
{% if compound.sourceDef %}
{% markers obj in compound.sourceDef with tr.definedAtLineInSourceFile %}
{% with text=obj.text %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% endmarkers %}
{% endif %}
</div>
{% endif %}
{# member definitions #}
{# inline classes #}
{% if compound.inlineClasses %}
<h2 class="groupheader">{{ tr.classDocumentation }}</h2>
{% for class in compound.inlineClasses %}
{# write anchor #}
<a class="anchor" id="{{ class.anchor }}"></a>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr><td class="memname">{{ class.compoundType }} {{ class.name }}</td></tr>
</table>
</div>
<div class="memdoc">
<div class="textblock">
{# TODO: the stuff inside textblock can be the same as in htmlclass.tpl!! #}
{# template specifier #}
{% if class.language=='cpp' and class.templateDecls %}
<h3>{% spaceless %}
{% for targList in class.templateDecls %}
template&lt;
{% for targ in targList %}
{{ targ.type }}{% if targ.name %} {{ targ.name }}{% endif %}{% if targ.defVal %}&#160;= {{ targ.defVal }}{% endif %}{% if not forloop.last %}, {% endif %}
{% endfor %}
&gt;<br/>
{% endfor %}
{% endspaceless %}
{{ class.classType }}&#160;{{ class.name }}
</h3>
{% endif %}
{# brief description #}
{% if class.brief and config.REPEAT_BRIEF %}
<p>{{ class.brief }}</p>
{% endif %}
{# detailed docs #}
{{ class.details }}
{# source def #}
{% if class.sourceDef %}
{% markers obj in class.sourceDef with tr.definedAtLineInSourceFile %}
{% with text=obj.text %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
{% endmarkers %}
{% endif %}
</div><!-- textblock -->
{# table with fields #}
<table class="fieldtable">
<tr><th colspan="3">{{ tr.compoundMembers }}</td></tr>
{% for member in class.members %}
<tr><td class="fieldtype">
<a class="anchor" id="{{ member.anchor }}"></a>{{ member.fieldType }}
</td>
<td class="fieldname">
{{ member.name }}
{% if member.isVariable and member.declArgs %}{{ member.declArgs }}{% endif %}
{{ member.bitfields }}
</td>
<td class="fielddoc">
{% if member.brief and not member.details %}{# only brief #}
{{ member.brief }}
{% else %} {# only details or both #}
{% if member.brief %}<p>{{ member.brief }}</p>{% endif %}
{{ member.details }}
{% endif %}
</td>
</tr>
{% endfor %}
</table>
</div><!-- memdoc -->
</div><!-- memitem -->
{% endfor %}
{% endif %}
{# typedefs #}
{% with memberListInfo=compound.detailedTypedefs %}
{% include 'htmlmemdef.tpl' %}
{% endwith %}
{# enums #}
{% with memberListInfo=compound.detailedEnums %}
{% include 'htmlmemdef.tpl' %}
{% endwith %}
{# functions #}
{% with memberListInfo=compound.detailedFunctions %}
{% include 'htmlmemdef.tpl' %}
{% endwith %}
{# variables #}
{% with memberListInfo=compound.detailedVariables %}
{% include 'htmlmemdef.tpl' %}
{% endwith %}
{# end member definitions #}
</div>
{% endblock %}
{% extend 'htmlbase.tpl' %}
{% block content %}
<div class="contents">
<div class="textblock">
{{ tr.namespaceListDescription }}
</div>
{% indexentry nav name=tr.namespaceList file=page.fileName anchor='' %}
{% opensubindex nav %}
{% with tree=namespaceTree %}
{% include 'htmldirtree.tpl' %}
{% endwith %}
{% closesubindex nav %}
</div><!-- contents -->
{% endblock %}
{# input: navpath which is a list of links #}
{% if navpath %}
<div id="nav-path" class="navpath">
<ul>
{% for obj in navpath %}
<li class="navelem">
{% with text=obj.text %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
</li>
{% endfor %}
</ul>
</div>
{% endif %}
var NAVTREE =
[
[ "{% if mainPage.title %}mainPage.title|jsstring{% else %}{{ tr.mainPage }}{% endif %}",
"index{{ config.HTML_FILE_EXTENSION }}",
]
];
var NAVTREEINDEX =
[
{# write first entry of each sub index #}
{% for entries in navTree.subindices %}
"{{ entries[0].url }}"{% if not forloop.last %},{% endif %}
{% endfor %}
]
];
{# write all sub indices #}
{% for entries in navTree.subindices %}
{% with idx=forloop.counter0 %}
{% create idx|prepend:'navtreeindex'|append:'.js' from htmlnavindex.tpl' %}
{% endwith %}
{% endfor %}
{# inputs: page, list #}
{% extend 'htmlbase.tpl' %}
{% block tabs %}
{{ block.super }}
{% include 'htmlmembertabs.tpl' %}
{% endblock %}
{% block content %}
<div class="contents">
<div class="textblock">
{% if section=='' and letter=='' %}
{{ tr.namespaceMembersDescription }}
{% endif %}
{% include 'htmlmemberindex.tpl' %}
</div>
</div><!-- contents -->
{% endblock %}
{% with page=namespaceMembersIndex %}
{# all members #}
{% with list=namespaceMembersIndex.all section='' template='htmlnsmembers.tpl' %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
{# functions #}
{% with list=namespaceMembersIndex.functions section='_func' template='htmlnsmembers.tpl' %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
{# variables #}
{% with list=namespaceMembersIndex.variables section='_vars' template='htmlnsmembers.tpl' %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
{# typedefs #}
{% with list=namespaceMembersIndex.typedefs section='_type' template='htmlnsmembers.tpl' %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
{# enums #}
{% with list=namespaceMembersIndex.enums section='_enum' template='htmlnsmembers.tpl' %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
{# enumValues #}
{% with list=namespaceMembersIndex.enumValues section='_eval' template='htmlnsmembers.tpl' %}
{% include 'htmlindexpages.tpl' %}
{% endwith %}
{% endwith %}
{# inputs: obj (with .isLinkable .anchor .fileName), text, config, page.relPath #}
{% if obj.isLinkable %}
<a class="el" href="{{ page.relPath }}{{ obj.fileName }}{{ config.HTML_FILE_EXTENSION }}{% if obj.anchor %}#{{ obj.anchor }}{% endif %}">{{ text }}</a>
{% else %}
<b>{{ text }}</b>
{% endif %}
{% extend 'htmlbase.tpl' %}
{% msg %}Generating HTML output for page {{ compound.name }}{% endmsg %}
{% block navpath %}
{% with navpath=compound.navigationPath %}
{% include 'htmlnavpath.tpl' %}
{% endwith %}
{% endblock %}
{% block content %}
<div class="contents">
{{ compound.details }}
</div>
{% endblock %}
{% extend 'htmlbase.tpl' %}
{% block content %}
<div class="contents">
<div class="textblock">
{{ tr.relatedPagesDesc }}
</div>
{% indexentry nav name=tr.pages file=page.fileName anchor='' %}
{% opensubindex nav %}
{% with tree=pageTree %}
{% include 'htmldirtree.tpl' %}
{% endwith %}
{% closesubindex nav %}
</div><!-- contents -->
{% endblock %}
{% extend 'htmlbase.tpl' %}
{% msg %}Generating HTML source code for file {{ compound.name }}{% endmsg %}
{% block navpath %}
{% if compound.navigationPath %}
<div id="nav-path" class="navpath">
<ul>
{% for obj in compound.navigationPath %}
<li class="navelem">
{% with text=obj.text %}
{% include 'htmlobjlink.tpl' %}
{% endwith %}
</li>
{% endfor %}
</ul>
</div>
{% endif %}
{% endblock %}
{% block title %}
{# write summary links in the title area #}
<div class="headertitle"><div class="title">{{ compound.name }}
{% if compound.version %} ({{ compound.version }}){% endif %}
</div></div>
{% endblock %}
{% block content %}
<div class="contents">
<div class="textblock">
<a href="{{ page.relPath }}{{ compound.fileName }}{{ config.HTML_FILE_EXTENSION }}">{{ tr.gotoDocumentation }}</a>
</div>
<div class="fragment">
{{ compound.sources }}
</div><!-- fragment -->
</div>
{% endblock %}
{# main navigation row #}
<div id="navrow1" class="tabs">
<ul class="tablist">
{# main tab #}
<li{% if page.highlight=='main' %} class="current"{% endif %}><a href="{{ page.relPath }}index{{ config.HTML_FILE_EXTENSION }}"><span>{{ tr.mainPage|nowrap }}</span></a></li>
{# pages tab #}
{% if pageTree.tree|length>0 %}
<li{% if page.highlight=='pages' %} class="current"{% endif %}><a href="{{ page.relPath }}pages{{ config.HTML_FILE_EXTENSION }}"><span>{{ tr.pages|nowrap }}</span></a></li>
{% endif %}
{# modules tab #}
{% if moduleTree.tree|length>0 %}
<li{% if page.highlight=='modules' %} class="current"{% endif %}><a href="{{ page.relPath }}modules{{ config.HTML_FILE_EXTENSION }}"><span>{{ tr.modules|nowrap }}</span></a></li>
{% endif %}
{# namespaces tab #}
{% if namespaceList|length>0 %}
<li{% if page.highlight=='namespaces' %} class="current"{% endif %}><a href="{{ page.relPath }}namespaces{{ config.HTML_FILE_EXTENSION }}"><span>{{ tr.namespaces|nowrap }}</span></a></li>
{% endif %}
{# classes tab #}
{% if classList|length>0 %}
<li{% if page.highlight=='classes' %} class="current"{% endif %}><a href="{{ page.relPath }}annotated{{ config.HTML_FILE_EXTENSION }}"><span>{{ tr.classes|nowrap }}</span></a></li>
{% endif %}
{# files tab #}
{% if fileList|length>0 %}
<li{% if page.highlight=='files' %} class="current"{% endif %}><a href="{{ page.relPath }}files{{ config.HTML_FILE_EXTENSION }}"><span>{{ tr.files|nowrap }}</span></a></li>
{% endif %}
{# examples tab #}
{% if exampleList|length>0 %}
<li{% if page.highlight=='examples' %} class="current"{% endif %}><a href="{{ page.relPath }}examples{{ config.HTML_FILE_EXTENSION }}"><span>{{ tr.examples|nowrap }}</span></a></li>
{% endif %}
{# search box #}
{% if config.SEARCHENGINE %}
{% if config.SERVER_BASED_SEARCH %}
{# server based search box #}
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<div class="left">
<form id="FSearchBox" action="{{ page.relPath }}search{% if config.EXTERNAL_SEARCH %}{{ config.HTML_FILE_EXTENSION }}{% else %}.php{% endif %}" method="get">
<img id="MSearchSelect" src="{{ page.relPath }}search/mag.png" alt=""/>
{% if page.highlight!='search' %}
<input type="text" id="MSearchField" name="query" value="{{ tr.search }}" size="20" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"/>
</form>
</div><div class="right"></div>
</div>
</li>
{% endif %}
{% else %}
{# client based search box #}
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<img id="MSearchSelect" src="{{ page.relPath }}search/mag_sel.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="{{ tr.search }}" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img
id="MSearchCloseImg" border="0" src="{{ page.relPath }}search/close.png" alt=""/></a>
</span>
</div>
</li>
{% endif %}
{% endif %}
</ul>
</div>
{# second navigation row #}
<div id="navrow2" class="tabs2">
<ul class="tablist">
{# namespace subtabs #}
{% if page.highlight=='namespaces' %}
<li{% if page.subhighlight=='namespacelist' %} class="current"{% endif %}><a href="{{ page.relPath }}namespaces{{ config.HTML_FILE_EXTENSION }}"><span>{{ tr.namespaceList|nowrap }}</span></a></li>
<li{% if page.subhighlight=='namespacemembers' %} class="current"{% endif %}><a href="{{ page.relPath }}namespacemembers{{ config.HTML_FILE_EXTENSION }}"><span>{{ tr.namespaceMembers|nowrap }}</span></a></li>
{% endif %}
{# class subtabs #}
{% if page.highlight=='classes' %}
<li{% if page.subhighlight=='classlist' %} class="current"{% endif %}><a href="{{ page.relPath }}annotated{{ config.HTML_FILE_EXTENSION }}"><span>{{ tr.classList|nowrap }}</span></a></li>
<li{% if page.subhighlight=='classindex' %} class="current"{% endif %}><a href="{{ page.relPath }}classes{{ config.HTML_FILE_EXTENSION }}"><span>{{ tr.classIndex|nowrap }}</span></a></li>
<li{% if page.subhighlight=='classhierarchy' %} class="current"{% endif %}><a href="{{ page.relPath }}hierarchy{{ config.HTML_FILE_EXTENSION }}"><span>{{ tr.classHierarchy|nowrap }}</span></a></li>
<li{% if page.subhighlight=='classmembers' %} class="current"{% endif %}><a href="{{ page.relPath }}functions{{ config.HTML_FILE_EXTENSION }}"><span>{{ tr.classMembers|nowrap }}</span></a></li>
{% endif %}
{# file subtabs #}
{% if page.highlight=='files' %}
<li{% if page.subhighlight=='filelist' %} class="current"{% endif %}><a href="{{ page.relPath }}files{{ config.HTML_FILE_EXTENSION }}"><span>{{ tr.fileList|nowrap }}</span></a></li>
<li{% if page.subhighlight=='filemembers' %} class="current"{% endif %}><a href="{{ page.relPath }}globals{{ config.HTML_FILE_EXTENSION }}"><span>{{ tr.fileMembers|nowrap }}</span></a></li>
{% endif %}
</ul>
</div>
{# obj should be a class or member #}
{% if obj.typeConstraints|length>0 %}
<div class="typecontraint">
<dl><dt><b>{{ tr.typeConstraints }}</b></dt>
<dd><table border="0" cellspacing="2" cellpadding="0">
{% for arg in obj.typeConstraints %}
<tr><td valign="top"><em>{{ arg.name }}</em></td>
<td>&#160;</td><td valign="top"><em>{{ arg.type }}</em></td>
<td>&#160;</td><td>{{ arg.docs }}</td>
</tr>
{% endfor %}
</table></dl></div>
{% endif %}
This source diff could not be displayed because it is too large. You can view the blob instead.
# function header
# width & height
1 56
# luma data
248 247 246 245 244 243 242 241
240 239 238 237 236 235 234 233
232 231 230 229 228 223 223 223
223 223 223 223 223 223 223 223
224 224 224 224 225 225 225 225
225 226 226 226 227 227 227 227
228 228 228 229 229 229 229 229
# shadowed header
# width & height
1 12
# luma data
255 240 241 242 243 244
245 246 247 248 249 250
...@@ -94,7 +94,7 @@ ...@@ -94,7 +94,7 @@
} }
.ui-resizable-e { .ui-resizable-e {
background:url("ftv2splitbar.png") repeat scroll right center transparent; background:url("splitbar.png") repeat scroll right center transparent;
cursor:e-resize; cursor:e-resize;
height:100%; height:100%;
right:0; right:0;
......
...@@ -105,7 +105,7 @@ function createIndent(o,domNode,node,level) ...@@ -105,7 +105,7 @@ function createIndent(o,domNode,node,level)
node.expandToggle.onclick = function() { node.expandToggle.onclick = function() {
if (node.expanded) { if (node.expanded) {
$(node.getChildrenUL()).slideUp("fast"); $(node.getChildrenUL()).slideUp("fast");
node.plus_img.src = node.relpath+"ftv2pnode.png"; node.plus_img.src = node.relpath+"arrowright.png";
node.expanded = false; node.expanded = false;
} else { } else {
expandNode(o, node, false, false); expandNode(o, node, false, false);
...@@ -113,7 +113,7 @@ function createIndent(o,domNode,node,level) ...@@ -113,7 +113,7 @@ function createIndent(o,domNode,node,level)
} }
node.expandToggle.appendChild(imgNode); node.expandToggle.appendChild(imgNode);
domNode.appendChild(node.expandToggle); domNode.appendChild(node.expandToggle);
imgNode.src = node.relpath+"ftv2pnode.png"; imgNode.src = node.relpath+"arrowright.png";
} else { } else {
var span = document.createElement("span"); var span = document.createElement("span");
span.style.display = 'inline-block'; span.style.display = 'inline-block';
...@@ -269,9 +269,9 @@ function expandNode(o, node, imm, showRoot) ...@@ -269,9 +269,9 @@ function expandNode(o, node, imm, showRoot)
$(node.getChildrenUL()).slideDown("fast"); $(node.getChildrenUL()).slideDown("fast");
} }
if (node.isLast) { if (node.isLast) {
node.plus_img.src = node.relpath+"ftv2mlastnode.png"; node.plus_img.src = node.relpath+"arrowdown.png";
} else { } else {
node.plus_img.src = node.relpath+"ftv2mnode.png"; node.plus_img.src = node.relpath+"arrowdown.png";
} }
node.expanded = true; node.expanded = true;
} }
...@@ -341,11 +341,7 @@ function showNode(o, node, index, hash) ...@@ -341,11 +341,7 @@ function showNode(o, node, index, hash)
getNode(o, node); getNode(o, node);
} }
$(node.getChildrenUL()).css({'display':'block'}); $(node.getChildrenUL()).css({'display':'block'});
if (node.isLast) { node.plus_img.src = node.relpath+"arrowdown.png";
node.plus_img.src = node.relpath+"ftv2mlastnode.png";
} else {
node.plus_img.src = node.relpath+"ftv2mnode.png";
}
node.expanded = true; node.expanded = true;
var n = node.children[o.breadcrumbs[index]]; var n = node.children[o.breadcrumbs[index]];
if (index+1<o.breadcrumbs.length) { if (index+1<o.breadcrumbs.length) {
...@@ -483,7 +479,7 @@ function initNavTree(toroot,relpath) ...@@ -483,7 +479,7 @@ function initNavTree(toroot,relpath)
o.node.expanded = false; o.node.expanded = false;
o.node.isLast = true; o.node.isLast = true;
o.node.plus_img = document.createElement("img"); o.node.plus_img = document.createElement("img");
o.node.plus_img.src = relpath+"ftv2pnode.png"; o.node.plus_img.src = relpath+"arrowright.png";
o.node.plus_img.width = 16; o.node.plus_img.width = 16;
o.node.plus_img.height = 22; o.node.plus_img.height = 22;
......
# tree open icon
# width & height
9 9
# luma data
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
142 142 142 142 142 142 142 142 142
0 142 142 142 142 142 142 142 0
0 0 142 142 142 142 142 0 0
0 0 0 142 142 142 0 0 0
0 0 0 0 142 0 0 0 0
# alpha data
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
255 255 255 255 255 255 255 255 255
0 255 255 255 255 255 255 255 0
0 0 255 255 255 255 255 0 0
0 0 0 255 255 255 0 0 0
0 0 0 0 255 0 0 0 0
...@@ -774,3 +774,18 @@ function createResults() ...@@ -774,3 +774,18 @@ function createResults()
} }
} }
function init_search()
{
var results = document.getElementById("MSearchSelectWindow");
for (var key in indexSectionLabels)
{
var link = document.createElement('a');
link.setAttribute('class','SelectItem');
link.setAttribute('onclick','searchBox.OnSelectItem('+key+')');
link.href='javascript:void(0)';
link.innerHTML='<span class="SelectionMark">&#160;</span>'+indexSectionLabels[key];
results.appendChild(link);
}
searchBox.OnSelectItem(0);
}
<script language="PHP"> <script language="PHP">
require_once "search-config.php"; require_once "search_config.php";
function end_form($value) function end_form($value)
{ {
......
/*---------------- Search Box */
#FSearchBox {
float: left;
}
#MSearchBox {
white-space : nowrap;
position: absolute;
float: none;
display: inline;
margin-top: 0px;
right: 0px;
width: 170px;
z-index: 102;
background-color: white;
}
#MSearchBox .left
{
display:block;
position:absolute;
left:10px;
width:20px;
height:19px;
background:url('search_l.png') no-repeat;
background-position:right;
}
#MSearchSelect {
display:block;
position:absolute;
width:20px;
height:19px;
}
.left #MSearchSelect {
left:4px;
}
.right #MSearchSelect {
right:5px;
}
#MSearchField {
display:block;
position:absolute;
height:19px;
background:url('search_m.png') repeat-x;
border:none;
width:111px;
margin-left:20px;
padding-left:4px;
color: #909090;
outline: none;
font: 9pt Arial, Verdana, sans-serif;
}
#FSearchBox #MSearchField {
margin-left:15px;
}
#MSearchBox .right {
display:block;
position:absolute;
right:10px;
top:0px;
width:20px;
height:19px;
background:url('search_r.png') no-repeat;
background-position:left;
}
#MSearchClose {
display: none;
position: absolute;
top: 4px;
background : none;
border: none;
margin: 0px 4px 0px 0px;
padding: 0px 0px;
outline: none;
}
.left #MSearchClose {
left: 6px;
}
.right #MSearchClose {
right: 2px;
}
.MSearchBoxActive #MSearchField {
color: #000000;
}
/*---------------- Search filter selection */
#MSearchSelectWindow {
display: none;
position: absolute;
left: 0; top: 0;
border: 1px solid ##A0;
background-color: ##FA;
z-index: 1;
padding-top: 4px;
padding-bottom: 4px;
-moz-border-radius: 4px;
-webkit-border-top-left-radius: 4px;
-webkit-border-top-right-radius: 4px;
-webkit-border-bottom-left-radius: 4px;
-webkit-border-bottom-right-radius: 4px;
-webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
}
.SelectItem {
font: 8pt Arial, Verdana, sans-serif;
padding-left: 2px;
padding-right: 12px;
border: 0px;
}
span.SelectionMark {
margin-right: 4px;
font-family: monospace;
outline-style: none;
text-decoration: none;
}
a.SelectItem {
display: block;
outline-style: none;
color: #000000;
text-decoration: none;
padding-left: 6px;
padding-right: 12px;
}
a.SelectItem:focus,
a.SelectItem:active {
color: #000000;
outline-style: none;
text-decoration: none;
}
a.SelectItem:hover {
color: #FFFFFF;
background-color: ##50;
outline-style: none;
text-decoration: none;
cursor: pointer;
display: block;
}
/*---------------- Search results window */
iframe#MSearchResults {
width: 60ex;
height: 15em;
}
#MSearchResultsWindow {
display: none;
position: absolute;
left: 0; top: 0;
border: 1px solid #000;
background-color: ##F0;
}
/* ----------------------------------- */
#SRIndex {
clear:both;
padding-bottom: 15px;
}
.SREntry {
font-size: 10pt;
padding-left: 1ex;
}
.SRPage .SREntry {
font-size: 8pt;
padding: 1px 5px;
}
body.SRPage {
margin: 5px 2px;
}
.SRChildren {
padding-left: 3ex; padding-bottom: .5em
}
.SRPage .SRChildren {
display: none;
}
.SRSymbol {
font-weight: bold;
color: ##58;
font-family: Arial, Verdana, sans-serif;
text-decoration: none;
outline: none;
}
a.SRScope {
display: block;
color: ##58;
font-family: Arial, Verdana, sans-serif;
text-decoration: none;
outline: none;
}
a.SRSymbol:focus, a.SRSymbol:active,
a.SRScope:focus, a.SRScope:active {
text-decoration: underline;
}
span.SRScope {
padding-left: 4px;
}
.SRPage .SRStatus {
padding: 2px 5px;
font-size: 8pt;
font-style: italic;
}
.SRResult {
display: none;
}
DIV.searchresults {
margin-left: 10px;
margin-right: 10px;
}
/*---------------- External search page results */
.searchresult {
background-color: ##F2;
}
.pages b {
color: white;
padding: 5px 5px 3px 5px;
background-image: url("../tab_a.png");
background-repeat: repeat-x;
text-shadow: 0 1px 1px #000000;
}
.pages {
line-height: 17px;
margin-left: 4px;
text-decoration: none;
}
.hl {
font-weight: bold;
}
#searchresults {
margin-bottom: 20px;
}
.searchpages {
margin-top: 10px;
}
<script language="PHP"> <script language="PHP">
require "search-functions.php"; require "search_functions.php";
$mode = array_key_exists('v', $_GET)?$_GET['v']:""; $mode = array_key_exists('v', $_GET)?$_GET['v']:"";
$query = array_key_exists('query', $_GET)?$_GET['query']:""; $query = array_key_exists('query', $_GET)?$_GET['query']:"";
...@@ -43,9 +43,9 @@ http://dev.squello.com/doc/html/favicon.ico</Image> ...@@ -43,9 +43,9 @@ http://dev.squello.com/doc/html/favicon.ico</Image>
<Url type="text/html" method="GET" <Url type="text/html" method="GET"
template="$link/search.php?query={searchTerms}" /> template="$link/search.php?query={searchTerms}" />
<Url type="application/x-suggestions+json" method="GET" <Url type="application/x-suggestions+json" method="GET"
template="$link/search-opensearch.php?v=json&amp;query={searchTerms}" /> template="$link/search_opensearch.php?v=json&amp;query={searchTerms}" />
<Url type="application/x-suggestions+xml" method="GET" <Url type="application/x-suggestions+xml" method="GET"
template="$link/search-opensearch.php?v=xml&amp;query={searchTerms}" /> template="$link/search_opensearch.php?v=xml&amp;query={searchTerms}" />
</OpenSearchDescription> </OpenSearchDescription>
END_OPENSEARCH; END_OPENSEARCH;
} }
......
# vertical split bar for treeview
# width & height
6 1024
# luma data
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 170 202 170 170
170 243 224 255 183 255
170 242 170 202 170 170
170 243 224 255 183 255
170 242 170 202 170 170
170 243 224 255 183 255
170 242 170 202 170 170
170 243 224 255 183 255
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
170 242 224 202 183 170
# synchonized view disabled button
# width & height
24 24
# luma data
128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128 138 128 128 128 128 128 128 133 128 128 128 128 128 128 128 128
128 128 128 128 128 128 129 205 186 128 128 128 128 128 128 160 210 134 128 128 128 128 128 128
128 128 128 128 128 139 217 255 181 128 128 128 128 128 128 152 255 229 147 128 128 128 128 128
128 128 128 128 156 236 255 255 181 128 128 128 128 128 128 152 255 255 243 164 128 128 128 128
128 128 128 175 249 255 255 255 223 196 198 198 128 128 197 211 255 255 255 253 186 128 128 128
128 128 202 255 255 255 255 255 255 255 255 225 128 128 255 255 255 255 255 255 255 214 128 128
128 128 217 255 255 255 255 255 255 255 255 128 128 198 255 255 255 255 255 255 255 225 128 128
128 128 128 189 255 255 255 255 238 224 225 128 128 225 224 232 255 255 255 255 201 128 128 128
128 128 128 128 167 245 255 255 183 128 128 128 128 128 128 155 255 255 250 179 128 128 128 128
128 128 128 128 128 150 231 255 188 128 128 128 128 128 128 161 255 238 158 128 128 128 128 128
128 128 128 128 128 128 136 216 188 128 128 128 128 128 128 161 223 142 128 128 128 128 128 128
128 128 128 128 128 128 128 130 141 128 128 128 128 128 128 135 132 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128
# alpha data
0 0 0 0 0 0 0 29 98 157 207 231 234 211 164 104 38 0 0 0 0 0 0 0
0 0 0 0 0 21 143 234 255 255 255 255 255 255 255 255 244 155 33 0 0 0 0 0
0 0 0 0 70 221 255 255 255 255 255 255 255 255 255 255 255 255 235 93 0 0 0 0
0 0 0 92 251 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 116 0 0 0
0 0 68 251 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 96 0 0
0 20 225 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 243 41 0
0 143 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 172 1
28 238 255 255 255 255 255 253 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 42
99 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 133
160 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 204
212 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 224
234 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 237 255 236
235 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 230 255 236
216 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 226
168 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 208
107 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 147
39 245 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53
0 159 255 255 255 255 255 255 251 255 255 255 255 255 255 255 255 255 255 255 255 255 190 3
0 31 239 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 54 0
0 0 91 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 119 0 0
0 0 0 116 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 145 0 0 0
0 0 0 0 98 240 255 255 255 255 255 255 255 255 255 255 255 255 248 119 0 0 0 0
0 0 0 0 0 45 168 252 255 255 255 255 255 255 255 255 255 184 58 0 0 0 0 0
0 0 0 0 0 0 0 45 131 201 222 234 236 224 204 142 54 0 0 0 0 0 0 0
# synchonized view enabled button
# width & height
24 24
# luma data
128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128 128 138 128 128 128 128 133 128 128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 129 205 186 128 128 128 128 160 210 134 128 128 128 128 128 128 128
128 128 128 128 128 128 139 217 255 181 128 128 128 128 152 255 229 147 128 128 128 128 128 128
128 128 128 128 128 156 236 255 255 181 128 128 128 128 152 255 255 243 164 128 128 128 128 128
128 128 128 128 175 249 255 255 255 223 196 198 198 197 211 255 255 255 253 186 128 128 128 128
128 128 133 202 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 214 137 128 128
128 128 135 217 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 225 140 128 128
128 128 128 128 189 255 255 255 255 238 224 225 225 224 232 255 255 255 255 201 131 128 128 128
128 128 128 128 128 167 245 255 255 183 128 128 128 128 155 255 255 250 179 128 128 128 128 128
128 128 128 128 128 128 150 231 255 188 128 128 128 128 161 255 238 158 128 128 128 128 128 128
128 128 128 128 128 128 128 136 216 188 128 128 128 128 161 223 142 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128 130 141 128 128 128 128 135 132 128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128
# alpha data
0 0 0 0 0 0 0 29 98 157 207 231 234 211 164 104 38 0 0 0 0 0 0 0
0 0 0 0 0 21 143 234 255 255 255 255 255 255 255 255 244 155 33 0 0 0 0 0
0 0 0 0 70 221 255 255 255 255 255 255 255 255 255 255 255 255 235 93 0 0 0 0
0 0 0 92 251 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 116 0 0 0
0 0 68 251 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 96 0 0
0 20 225 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 243 41 0
0 143 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 172 1
28 238 255 255 255 255 255 253 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 42
99 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 133
160 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 204
212 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 224
234 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 237 255 236
235 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 230 255 236
216 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 226
168 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 208
107 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 147
39 245 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 53
0 159 255 255 255 255 255 255 251 255 255 255 255 255 255 255 255 255 255 255 255 255 190 3
0 31 239 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 249 54 0
0 0 91 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 119 0 0
0 0 0 116 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 145 0 0 0
0 0 0 0 98 240 255 255 255 255 255 255 255 255 255 255 255 255 248 119 0 0 0 0
0 0 0 0 0 45 168 252 255 255 255 255 255 255 255 255 255 184 58 0 0 0 0 0
0 0 0 0 0 0 0 45 131 201 222 234 236 224 204 142 54 0 0 0 0 0 0 0
# active tab background luma
# width & height
1 36
# luma data
31 42 59 69 73 74 75 77 77
77 79 80 80 82 81 83 84 86
87 88 89 90 91 91 93 94 94
96 96 97 98 98 99 99 99 100
# normal tab background luma
# width & height
1 36
# luma data
218 228 235 233 230 227 225 222 221
218 217 215 214 213 212 211 210 209
209 197 198 199 200 201 202 203 204
205 207 209 211 213 217 219 206 188
# hovering tab background luma
# width & height
1 36
# luma data
181 191 198 196 193 190 188 185 184
181 180 178 177 176 175 174 173 172
172 154 155 156 157 158 159 160 161
162 164 166 168 170 174 176 163 145
# tab separator
# width & height
1 36
# luma data
187 186 185 183 182 181 180 178 176
174 173 171 169 167 164 163 161 158
156 154 152 150 148 145 143 141 140
138 136 134 131 131 128 126 125 124
.tabs, .tabs2, .tabs3 {
background-image: url('tab_b.png');
width: 100%;
z-index: 101;
font-size: 13px;
font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
}
.tabs2 {
font-size: 10px;
}
.tabs3 {
font-size: 9px;
}
.tablist {
margin: 0;
padding: 0;
display: table;
}
.tablist li {
float: left;
display: table-cell;
background-image: url('tab_b.png');
line-height: 36px;
list-style: none;
}
.tablist a {
display: block;
padding: 0 20px;
font-weight: bold;
background-image:url('tab_s.png');
background-repeat:no-repeat;
background-position:right;
color: ##30;
text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
text-decoration: none;
outline: none;
}
.tabs3 .tablist a {
padding: 0 10px;
}
.tablist a:hover {
background-image: url('tab_h.png');
background-repeat:repeat-x;
color: #fff;
text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
text-decoration: none;
}
.tablist li.current a {
background-image: url('tab_a.png');
background-repeat:repeat-x;
color: #fff;
text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
}
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0" encoding="utf-8"?>
<VisualStudioToolFile
Name="GenResources"
Version="8.00"
>
<Rules>
<CustomBuildRule
Name="GenResources"
DisplayName="GenResources"
CommandLine="python &quot;$(ProjectDir)..\src\res2cc_cmd.py&quot; &quot;$(ProjectDir)..\templates&quot; $(IntDir)\resources.cpp"
Outputs="$(IntDir)\resources.cpp"
FileExtensions=".*"
AdditionalDependencies="$(ProjectDir)..\src\res2cc_cmd.py"
ExecutionDescription="Executing res2cc_cmd on $(ProjectDir)..\templates ..."
ShowOnlyRuleProperties="false"
>
</CustomBuildRule>
</Rules>
</VisualStudioToolFile>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment