From 6137c01714dd7e95aaf4975257ac8f0283c7b06a Mon Sep 17 00:00:00 2001 From: Dado Sutter Date: Mon, 2 Feb 2009 21:08:31 +0000 Subject: [PATCH] New HTML doc structure still under evaluation and development. Please read file readme.txt on /doc for more info. --- doc/readme.txt | 62 ++++++ doc/ssSearch.class | Bin 0 -> 5109 bytes doc/ssSearchThread.class | Bin 0 -> 3108 bytes doc/template_ssSearch.html | 22 ++ doc/wb/js2lua.bat | 1 + doc/wb/js2lua.lua | 28 +++ doc/wb/make_hh.lua | 274 ++++++++++++++++++++++++ doc/wb/template_index.html | 28 +++ doc/wb/template_ssSearch.html | 25 +++ doc/wb/template_wb_bar.html | 26 +++ doc/wb/template_wb_title.html | 64 ++++++ doc/wb/template_wb_tree.html | 220 +++++++++++++++++++ doc/wb/wb2hh.bat | 29 +++ doc/wb/wb_build.bat | 1 + doc/wb/wb_build.lua | 364 ++++++++++++++++++++++++++++++++ doc/wb/wb_usr.lua | 99 +++++++++ doc/wb_img/Thumbs.db | Bin 0 -> 107520 bytes doc/wb_img/barlineleft.png | Bin 0 -> 169 bytes doc/wb_img/barlineright.png | Bin 0 -> 165 bytes doc/wb_img/blank.png | Bin 0 -> 219 bytes doc/wb_img/google.gif | Bin 0 -> 1468 bytes doc/wb_img/hideall.png | Bin 0 -> 204 bytes doc/wb_img/hideall_over.png | Bin 0 -> 294 bytes doc/wb_img/lng_en.png | Bin 0 -> 280 bytes doc/wb_img/lng_en_over.png | Bin 0 -> 288 bytes doc/wb_img/lng_es.png | Bin 0 -> 293 bytes doc/wb_img/lng_es_over.png | Bin 0 -> 298 bytes doc/wb_img/lng_pt.png | Bin 0 -> 296 bytes doc/wb_img/lng_pt_over.png | Bin 0 -> 300 bytes doc/wb_img/minusnode.png | Bin 0 -> 227 bytes doc/wb_img/minusnodelast.png | Bin 0 -> 223 bytes doc/wb_img/next.png | Bin 0 -> 330 bytes doc/wb_img/next_over.png | Bin 0 -> 334 bytes doc/wb_img/node.png | Bin 0 -> 248 bytes doc/wb_img/nodelast.png | Bin 0 -> 248 bytes doc/wb_img/plusnode.png | Bin 0 -> 231 bytes doc/wb_img/plusnodelast.png | Bin 0 -> 227 bytes doc/wb_img/previous.png | Bin 0 -> 330 bytes doc/wb_img/previous_over.png | Bin 0 -> 336 bytes doc/wb_img/sepblank.png | Bin 0 -> 209 bytes doc/wb_img/sepnode.png | Bin 0 -> 264 bytes doc/wb_img/sepvertline.png | Bin 0 -> 233 bytes doc/wb_img/showall.png | Bin 0 -> 220 bytes doc/wb_img/showall_over.png | Bin 0 -> 328 bytes doc/wb_img/sync.png | Bin 0 -> 288 bytes doc/wb_img/sync_over.png | Bin 0 -> 348 bytes doc/wb_img/title_background.png | Bin 0 -> 2700 bytes doc/wb_img/vertline.png | Bin 0 -> 240 bytes doc/wb_img/webbook.png | Bin 0 -> 608 bytes doc/wb_img/webbook_over.png | Bin 0 -> 612 bytes 50 files changed, 1243 insertions(+) create mode 100644 doc/readme.txt create mode 100755 doc/ssSearch.class create mode 100755 doc/ssSearchThread.class create mode 100755 doc/template_ssSearch.html create mode 100755 doc/wb/js2lua.bat create mode 100755 doc/wb/js2lua.lua create mode 100755 doc/wb/make_hh.lua create mode 100755 doc/wb/template_index.html create mode 100755 doc/wb/template_ssSearch.html create mode 100755 doc/wb/template_wb_bar.html create mode 100755 doc/wb/template_wb_title.html create mode 100755 doc/wb/template_wb_tree.html create mode 100755 doc/wb/wb2hh.bat create mode 100755 doc/wb/wb_build.bat create mode 100755 doc/wb/wb_build.lua create mode 100755 doc/wb/wb_usr.lua create mode 100755 doc/wb_img/Thumbs.db create mode 100755 doc/wb_img/barlineleft.png create mode 100755 doc/wb_img/barlineright.png create mode 100755 doc/wb_img/blank.png create mode 100755 doc/wb_img/google.gif create mode 100755 doc/wb_img/hideall.png create mode 100755 doc/wb_img/hideall_over.png create mode 100755 doc/wb_img/lng_en.png create mode 100755 doc/wb_img/lng_en_over.png create mode 100755 doc/wb_img/lng_es.png create mode 100755 doc/wb_img/lng_es_over.png create mode 100755 doc/wb_img/lng_pt.png create mode 100755 doc/wb_img/lng_pt_over.png create mode 100755 doc/wb_img/minusnode.png create mode 100755 doc/wb_img/minusnodelast.png create mode 100755 doc/wb_img/next.png create mode 100755 doc/wb_img/next_over.png create mode 100755 doc/wb_img/node.png create mode 100755 doc/wb_img/nodelast.png create mode 100755 doc/wb_img/plusnode.png create mode 100755 doc/wb_img/plusnodelast.png create mode 100755 doc/wb_img/previous.png create mode 100755 doc/wb_img/previous_over.png create mode 100755 doc/wb_img/sepblank.png create mode 100755 doc/wb_img/sepnode.png create mode 100755 doc/wb_img/sepvertline.png create mode 100755 doc/wb_img/showall.png create mode 100755 doc/wb_img/showall_over.png create mode 100755 doc/wb_img/sync.png create mode 100755 doc/wb_img/sync_over.png create mode 100755 doc/wb_img/title_background.png create mode 100755 doc/wb_img/vertline.png create mode 100755 doc/wb_img/webbook.png create mode 100755 doc/wb_img/webbook_over.png diff --git a/doc/readme.txt b/doc/readme.txt new file mode 100644 index 00000000..1feaa640 --- /dev/null +++ b/doc/readme.txt @@ -0,0 +1,62 @@ + This document describes the eLua documentation structure, formats and the +tools used to maintain it. + +## Temporary note: +## - This is the new doc structure proposed for eLua, still +## under evaluation but probably replacing soon the single manual format. +## - The /doc directory will soon replace the current /docs + + eLua documentation is created and maintained offline, in HTML format and +integrated with the same version control system used for eLua Source Code. +This allows the same content to be deployed both online, published on the +site, and offline, included in our releases. + All the content pages are created and edited offline, using any HTML +editor. We're currently using KompoZer and opened to new sugestions :) + The "doc site" structure is created by a help doc generator tool called +WebBook, created at Tecgraf/PUC-Rio. WebBook is Open Source and Free +Software, 100% written in Lua and it's usage is described in +http://www.tecgraf.puc-rio.br/webbook + WebBook takes the created pages and a configuration file, which is simply +a Lua Table, and generates the main menu and overall site structure, in +plain HTML and JavaScript, with regular support for CSS. There is no need +for JavaScript programming or cgi-bin scripts to "run" the site. The result +is pure HTML (and JavaScript) and any browser must be able to navigate the + complete doc structure generated by WebBook. + + eLua documentation is kept on the development repository, on the /doc +directory, under the trunk, branch and/or tag versions. + Different doc language versions are kept under their own sub-directories (ie: +/doc/en for english, /doc/pt for portuguese, /doc/ro for romanian etc...) + + Directory /doc/wb is used to run WebBook build script and to store +configuration files. It does NOT need to be published or included in an +offline version of the doc "site". + File wb_usr.lua is the main configuration file. It defines the main titles, +menu structure, utility fields/buttons and the startup options. + File wb_build.lua is the main WebBook build script. Some facilities (bat files) + are included for easy build under Windows but we haven't tested them. + To create a WebBook Structure site, just edit wb_usr.lua and, from /wb dir, run + +$ lua5.1 wb_build.lua + + Directories that needed to be published and included in the distros are: + +/doc (## maybe not all files but tests are required here ##) +/doc/en (english version doc pages and optional style sheets) +/doc/pt (portuguese version doc pages and optional style sheets) +/doc/img (images, logos and art files) + + eLua Doc can be viewed on any browser, simply opening the file +index_en.html (or index_pt.html for the portuguese version), on the /doc +directory. + + + + + + + + + + + diff --git a/doc/ssSearch.class b/doc/ssSearch.class new file mode 100755 index 0000000000000000000000000000000000000000..a535c74503ebaeeadb69cd9d35c64be408b76b65 GIT binary patch literal 5109 zcmZ`-33yyp75;DLO=dEAZPQ6pI&IT^Nv27|8X#RDTT5z^mL#-Jfx^qoOET$XUYL24 zwqQYPS!J;z)rumhP{oQCn;9T2f@ne9P;g&RQA81OUr?$4z3)vjrJ?!0dGDQj?z!jx z&vNhWvu{53IDnO+Nx+{@cbi5kI^cs42o4$}Mx8M{oG|UWM)mN)BT$w$Q*k4)*-WM5 zR`Qaz76GwAU`n%RtW?+ z&CaBynm}pFOq+IZ#Uc74uNClARc{v1nyr|rBZS!jXqZcu6x4zReV9jos@mGBH%q+*0nEoj9YK_rpa_d~ zoQ7HQZK=c&Pnw;XpX_NE|gw2Qop^eyQi_Mwb6y%%r*PeKR;R-PL8c_?OE5=*wO08 zdJbOEOGw-Opqn#MA<2ISLA5mYG_GrFr%s1VHn${J+BTVKcT!4DT!?W|NUL6FzJW;8JO9+Qee2 z5PZ0t>C`2Q#g8lK%p?JDGR+8J8+vt2!Bh#6L{1sEwa!Y?;Xe9$k(n4V?ReDiV?f}v zNv!2FcQAl{Y-f&fX*r+OQvgm%6s930<-!&##E5axaDh^@H8gA`O{qCivJ*lbS0N>F zGrQd`RM;|n$OJHgH97()m5|t4ik-&g$JIKfIY8eG+6jNkzDu0qgCL%4%Z+YvWhK$bXUMk|8sh8I~!>)-{1jB_Z2NiEOg&u&&%sa#OgZ ztKElBkwZ2Z+5ei1G#h1EmCJyuvP#DTI4FJiw7_DQ#Qd1E)Jd&KwZ{hoxF4TobF+rc zBs;Qc49To?Eyu08w&ZZeb_Te>=kSo6@Od^OH4?0USYgq6tySnW~aKghv8+7?0-regPmK#sWBsUSeS#v~oXUnBG#a z8+!-2DJe^j<4ba9c*2dL+zGgG=7AU3CF(EZDY@!b@+qZ8TX#myVVgU%56ANZ64Azj zfoE8h3@E*D_Xzy)v)L7zq}{N&Pe*pRGE6 zjo(N!FEi3K;~a~4@^KC?mH9ZGbZT;k8L(IIJ6Q+6cYJ8Eq8SNAmW_@-I5qNGK20Yx z;lt~4OB%3t+zunr zXQhVB7)!VyFW%s6bA-$mv;ZfH>=|*gV?yH5@OPh0BAZ@<%2WM`V=_%vBAu=^BAm9lY24p7Pi-Bu<8W$a8^u@~otuJW8l1w_5e&Xe z2vkoV8`YC%cRsze$r}KF=kRNj`UYl)bEpiDVSZ#fo++D=!=h0v342Dd>@c;8u$;d^ z<(Z$qQ+U9fMk{_)QLfV#Eub1pSxAAvcB{zx#cmFYPovKS6&QkaFkg_XYg!)+0dmc#8? z+`;wtMaqJn96mUT{UI;c+V9TaFR7ZVsQOSicp&7JX2Mx~bRtMe71j#OV~ zJ;G2)`7TQLpb~dr9zMaodk72gC{yk!EW&eGjF+$kuVE?Pz%rp>xzJH1Do`!vAuMXJ zLNxHA)`D8m&71gTymDQMGgJbsb%N|Bz+BOakKrCBLW`)x$N9$e6%pLaH1u%&7jYj~ z*J!mFpX8fNNS^=rD--g0e#?7#hiDfaW4J#;c%LB!T{#@e;tTBze1kTIhZ)%;krg@Q za(JxcAc9m`GKQm(+8mB$@nlUFUyXD=ed1N6e^^!3Y%cONYOsNSUvqOh%t{0Ae?>Tl zd3_!=8c5P=YOO^buWf7jw*gIPCy_GO&vu-1q4F+U4Vltj^O)GV&4H=&bJ>;FFJNFx;<+TqESMr%;INH;Aj@V=y2ly5)u9O z02Y#tS6y2ESVK-Y+Wsj1>VX2f*CQ(B^ep~)--*YxLt!%X??YU<9$ozVkBjDtQ7~qUSO1C491m_N8Cv059 zd*RL4fxGy1H^1(|Zajo*aSYe7*!SQ#_A*zm=ZW=39`|ly(cgmCaVrb|Hk`oiq8N9G zGT!HAb4QKxp;vd7m2yzJeB!g5fbO~O{1rWRc3hE0%o#- n%wkQHigK}vZ$A27DOQU$+(%x4PplOepoIS!cOfwsiN^l}*Z}ca literal 0 HcmV?d00001 diff --git a/doc/ssSearchThread.class b/doc/ssSearchThread.class new file mode 100755 index 0000000000000000000000000000000000000000..5a86b80e2409b7b94714ac3aee58636df0891776 GIT binary patch literal 3108 zcmZ`)X>eO-6+QP!vX;nh;zo((*p5gV*Orrr5^AWDxJ{h8IG7mX#KB3SyhzWsjI1Z5 zr#h6-vY4$cOQ9`ILLp((KnECuEkiv6p@7qADf}qykAwmP!_EwpbeLgj;C$~%w(OWJ z`j&g|x$Ae{Q&%4UE`aSgC#cKk2Mj%z7(FzaGxVevB3M19->JvadS)b6xpfKL8GYOk z)b}k)2drEwGqO|QQL!27w$c?|D~~)pJJ15(N4xzGzXiE0sxET>@8I`yj!) z&7=`TE$RYrW3}L#zEs9IP#8aM$&!2Sg7er60ScKBeQ7q1qq8Zj)@ zkG*UrJyZb7Ds|VL zX0ip#5zxVIbSZUt$8VNg6eZq?M@setLuve9`Td;2VQ0^@Z4;wizZsmw~ z>zRycMf&MF5|8+Bn=0)8i?la@9_;6U>RIY11zT5Ay~^70$C&!?28D1y{jj>VOJero zO`I4#nG9k8^mGu1DzUQ$4u+9D$cLz6=er2o=1c2S5x-f`P>yY>!cM2=M*|qbF~PNq zN{(q+{+0la;H_-8W%ij9My{Lf4&rUjV6fi4oRK%Ij5!fRLJj_Auo~V}CTX1LA7j=5%i>b$U%%L*dus5!&xCEFE|dKMA}pln2H24$Z}fPdaIDPj1znd zYZu#ph!;I6Bb{WubI7aEs8Ht+S!BR6*}9|;>IE*8f5FC!6HJ4dshc3~Qhj(Q-bHVY zJsFKN@@{fcK6Mx8p9ICE?!kN1i+itN!_qhDjCoc2->*79Ne6~`&o#HZfk$6x>)_Uo=6y3D`jT9_yiM36mp6v zRM}|G^re^1Y^ZMM!f%ad^Hz@k1e#*WkW;~B!@>-cO4_g>T{?$+wSGnKHZ)z>R9`*_ z>r;ig7^8aX17;zYFnUsoylX4`xLq{_5pt)SpCAtyKWeyRM&*@sYoAHB_DZVd>f(QX z9jJE=cRRSUl<-7nv1W=J4fXsDa0Na?=tpracR@!9YZ2m!QD7Z^6~KekRBj^*Ai8x1 z4bg2gXpDy3GiZv2JTqvCcFZ8Mh~2^ffzJ{990U72L-_)6zlcVB2^;Zc+h3Q1S@uVC z^_`$cwNq)T=puHaDxC;N!Ecu#qP{G4FV(_!k$^&K8rizH8f~Cjk+k;h7yje;!LA)Ub?xooR(cm&}a)9i?W>u z#$%j9O;NV;&@hidrEmfLT$)bdy0BYayGlr%!GF1>`aTA6c+w?B{IiHZhuuV5)VZ`= z=eZ&-DDgbbb7`E%ceoIFTQ&0jkk5S5uUhzQj?}dopUc=tOofAL7Hh~_x)t^Y24vR_toFW zMsUxf#>!W=*N@VGXZF9p{^R^nDiwc+i+ndu8<*=kbHxle>utE1e;>dxtyOE~YQIrw zMK5RnF`mB03I7IP$P`xNo7jYDY{3kzzD=vg`E8%WF?^5Tqx0nW?~|gRz$AWvPvVDs z-Saq$3-~IYB+66Ne45f9(gWt&@elNG<4>E#3${7A6Y0I zB%}? + +ssSearch + + + +

WB_SEARCH

+
+
+ + + + + + + + + + +
+
+ diff --git a/doc/wb/js2lua.bat b/doc/wb/js2lua.bat new file mode 100755 index 00000000..029d5a7c --- /dev/null +++ b/doc/wb/js2lua.bat @@ -0,0 +1 @@ +@lua5.1 js2lua.lua %1 %2 diff --git a/doc/wb/js2lua.lua b/doc/wb/js2lua.lua new file mode 100755 index 00000000..f13d8c2a --- /dev/null +++ b/doc/wb/js2lua.lua @@ -0,0 +1,28 @@ +-- Convert JavaScript into Lua + +if (not arg[1]) then + error("Javascript filename must be passed as a parameter.") +end +if (not arg[2]) then + error("Lua filename must be passed as a parameter.") +end + +print("Converting...") + +local js_filename = arg[1] +local file = io.open(js_filename) +local wb_lua = file:read("*a") +file:close() + +wb_lua = string.gsub(wb_lua, ":", "=") +wb_lua = string.gsub(wb_lua, "http=", "http:") +wb_lua = string.gsub(wb_lua, ";", " ") +wb_lua = string.gsub(wb_lua, "%[", "{") +wb_lua = string.gsub(wb_lua, "%]", "}") + +local lua_filename = arg[2] +local file = io.open(lua_filename, "w") +file:write(wb_lua) +file:close() + +print("Done.") diff --git a/doc/wb/make_hh.lua b/doc/wb/make_hh.lua new file mode 100755 index 00000000..c7a5b6cf --- /dev/null +++ b/doc/wb/make_hh.lua @@ -0,0 +1,274 @@ +--------------------------------------------------------------------- +-- This program converts from Tecgraf's WebBook to HTML Help Project Files. +-- by Mark Stroetzel Glasberg and Antonio Scuri +-- 09 Dec, 2004 +--------------------------------------------------------------------- + +languages_description = { + en = "0x0409 English - United States", + es = "0x040A Spanish - Standard", + fr = "0x040C French - Standard", + de = "0x0407 German - Standard", +-- pt = "0x0816 Portuguese - Standard", + pt = "0x0416 Portuguese - Brazil", + it = "0x0410 Italian - Standard" +} + +-- INITIALIZATION --------------------------------------------------- + +function isinlist(lng, list) + local i = 1 + local n = #list + while i <= n do + if list[i] == lng then + return 1 + end + i = i + 1; + end + return nil +end + +-- BASIC FUNCTIONS -------------------------------------------------- + +function out(string) + file:write(string) +end + +function outln(string) + local i = ident + 1 + while i>0 do + file:write(" ") + i = i - 1 + end + file:write(string.."\n") +end + +-- HHP FILE FUNCTIONS ------------------------------------------------ + +files = {} + +function add2files(v) + if v then + -- only up to "#" + local j = string.find(v, "#") + if j then + f = string.sub(v, 0, j-1) + else + f = v + end + + files[f] = f + end +end + +function writehhpheader() + out("[OPTIONS]\n") + outln("Binary Index=No") + outln("Compatibility=1.0") + outln("Compiled file=" .. wb_usr.file_title .. "_" .. lng .. ".chm") + outln("Contents file=wb_tree" .. "_" .. lng .. ".hhc") + outln("Default topic=" .. lng .. "/" .. wb_usr.tree.link) + outln("Display compile notes=Yes") + outln("Display compile progress=Yes") + outln("Full-text search=Yes") + outln("Language="..languages_description[lng]) + outln("Title="..wb_usr.messages[lng].title) + out("\n") + out("[FILES]\n") + outln(lng .. "/" .. wb_usr.tree.link) +end + +function writehhpfooter() + local tmp = [[ +[INFOTYPES] + ]] + out(tmp) +end + +function writehhpcenter() + if (not files) then return end + + local v = next(files, nil) + while v ~= nil do + outln(dir..v) + v = next(files, v) + end +end + +function writehhp() + writehhpheader() + writehhpcenter() + writehhpfooter() +end + + +-- HHC FILE FUNCTIONS ------------------------------------------------ + +function writeheader() + out("\n") + out("\n") + out("\n") + out("\n") + out("\n") + out("\n") + out("\n") + out("\n") + out("
    \n") + out("
  • \n") + out(" \n") + out(" \n") + out(" \n") +end + +function type_string (o) + return type(o) == "string" +end + +function writeend() + out("
\n") + out("\n") + out("\n") +end + +function writesubitems(tree, mainlink) + if (not tree) then + return + end + local i = 1 + local n = #tree + while i <= n do + writetopic(tree[i], mainlink) + i = i + 1 + end + ident = ident - 1 +end + +-- mainlink is the link of the father -> if no link is specified +-- this is the one that is used. +function writetopic(t, mainlink) + local link + local topic_name + + add2files(mainlink) + + if t.name == nil then + print("ERROR: Title is nil.") + return + end + + if (t.name[lng]) then + topic_name = t.name[lng] + else + topic_name = t.name["nl"] + end + + if topic_name == nil then + print("ERROR: Title is nil in language [" .. lng .. "].") + return + end + + if t.link and t.link ~= "" then + link = t.link + else + link = nil + end + + add2files(link) + + if t.bookmark then + if link == nil and mainlink == nil then + print("Error saving bookmark!!!") + return + end + + if link then + linkB = link .. "#" .. t.bookmark + else + linkB = mainlink .. "#" .. t.bookmark + end + else + linkB = nil + end + + outln("
  • ") + outln("") + if linkB then + outln("") + else + if link then + outln("") + end + end + if useimage == 1 then + if t.folder then + if ident == 0 then + outln("") + else + outln("") + end + else + outln("") + end + end + outln("") + + -- Write folder -- + if t.folder then + ident = ident + 1 + outln("
      ") + if link == nil then + writesubitems(t.folder, mainlink) + else + writesubitems(t.folder, link) + end + outln("
    ") + end + +end + +function writetopics(tree) + if (not tree) then return end + local i = 1; + local n = #tree + while i <= n do + outln("
      ") + writetopic(tree[i], nil) + outln("
    ") + i = i + 1 + end +end + +-- MAIN ------------------------------------------------------------- + +-- lng -> from the command line + +dofile("wb_usr.lua") + +if (not arg[1]) then + error("Missing language parameter.") +end + +lng = arg[1] +dir = lng.."/" +ident = 0 +useimage = 1 -- Use images based on given information +file = nil + +print("Writing \"wb_tree" .. "_" .. lng .. ".hhc\" file.") +file = io.open("wb_tree" .. "_" .. lng .. ".hhc", "w") +writeheader() +writetopics(wb_usr.tree.folder) +writeend() +file:close() + +if ident ~= 0 then + print("Ident not correct!") +end + +print("Writing \"wb" .. "_" .. lng .. ".hhp\" file.") +file = io.open("wb" .. "_" .. lng .. ".hhp", "w") +writehhp() +file:close() + +print("done.") + diff --git a/doc/wb/template_index.html b/doc/wb/template_index.html new file mode 100755 index 00000000..911c6004 --- /dev/null +++ b/doc/wb/template_index.html @@ -0,0 +1,28 @@ + + + + + +WB_TITLE + + + + + + + + + + + + + <body> + + <p>This page uses frames, but your browser doesn&#39;t support them.</p> + + </body> + + + + diff --git a/doc/wb/template_ssSearch.html b/doc/wb/template_ssSearch.html new file mode 100755 index 00000000..b0382c29 --- /dev/null +++ b/doc/wb/template_ssSearch.html @@ -0,0 +1,25 @@ + + +ssSearch + + + +

    WB_SEARCH

    +
    +
    + + + + + + + + + + +
    +
    +

    Powered by ssSearch +from Nalla +Senthilnathan.

    + diff --git a/doc/wb/template_wb_bar.html b/doc/wb/template_wb_bar.html new file mode 100755 index 00000000..58d26d6c --- /dev/null +++ b/doc/wb/template_wb_bar.html @@ -0,0 +1,26 @@ + + + + + Bar + + + + + + + + diff --git a/doc/wb/template_wb_title.html b/doc/wb/template_wb_title.html new file mode 100755 index 00000000..f49625a8 --- /dev/null +++ b/doc/wb/template_wb_title.html @@ -0,0 +1,64 @@ + + + +Title + + + + + + + + + + + + + + +
    WB_BAR_TITLE + SimpleSearch + +
    + + +
    + Google + + + + +
    +
    + © WB_COPYRIGHT_NAME +
    + (WB_CONTACT) +
    + + + + diff --git a/doc/wb/template_wb_tree.html b/doc/wb/template_wb_tree.html new file mode 100755 index 00000000..76209f5a --- /dev/null +++ b/doc/wb/template_wb_tree.html @@ -0,0 +1,220 @@ + + + + + Tree + + + + + + +
    diff --git a/doc/wb/wb2hh.bat b/doc/wb/wb2hh.bat new file mode 100755 index 00000000..94c44591 --- /dev/null +++ b/doc/wb/wb2hh.bat @@ -0,0 +1,29 @@ +@echo off + +Echo Building... +lua5.1 make_hh.lua %1 +Echo . +pause + +Echo Preparing... +move wb_%1.hhp .. +move wb_tree_%1.hhc .. +cd .. +move download download.old +Echo . +pause + +Echo Compiling... +hhc wb_%1.hhp +Echo . +pause + +Echo Finishing... +move wb_%1.hhp wb +move wb_tree_%1.hhc wb +move download.old download +move /y *.chm download +cd wb +Echo . + +Echo Done. diff --git a/doc/wb/wb_build.bat b/doc/wb/wb_build.bat new file mode 100755 index 00000000..9cf43fc6 --- /dev/null +++ b/doc/wb/wb_build.bat @@ -0,0 +1 @@ +@lua5.1 wb_build.lua diff --git a/doc/wb/wb_build.lua b/doc/wb/wb_build.lua new file mode 100755 index 00000000..19631582 --- /dev/null +++ b/doc/wb/wb_build.lua @@ -0,0 +1,364 @@ + +dofile("wb_usr.lua") + +lngCount = nil +lngSuffix = nil +lngIndex = nil +lngNext = nil +linkCount = 1 + +function readFile(filename) + local file = io.open(filename) + local text = file:read("*a") + file:close() + return text +end + +function writeFile(filename, text) + local file = io.open(filename, "w") + file:write(text) + file:close() +end + +-- ##################################################################### + +htmlFiles = {} + +function addHtmlFile(v) + if v then + -- only up to "#" + local j = string.find(v, "#") + if j then + f = string.sub(v, 0, j-1) + else + f = v + end + + htmlFiles[f] = f + end +end + +-- ##################################################################### + +function writeIndexFile() + print("Writing \"../index"..lngSuffix..".html\".") + + local wb_index = readFile("template_index.html") + + wb_index = string.gsub(wb_index, "WB_TITLE", wb_usr.messages[lngIndex].title) + wb_index = string.gsub(wb_index, "WB_START_SIZE", wb_usr.start_size) + wb_index = string.gsub(wb_index, "WB_START_PAGE", lngIndex.."/"..wb_usr.tree.link) + if (lngCount > 1) then + wb_index = string.gsub(wb_index, "WB_LNG", lngSuffix) + else + wb_index = string.gsub(wb_index, "WB_LNG", "") + end + + writeFile("../index"..lngSuffix..".html", wb_index) +end + +-- ##################################################################### + +function writeTitleFile() + print("Writing \"../wb_title"..lngSuffix..".html\".") + + local wb_title = readFile("template_wb_title.html") + + wb_title = string.gsub(wb_title, "WB_BAR_TITLE", wb_usr.messages[lngIndex].bar_title) + wb_title = string.gsub(wb_title, "WB_TITLE_BGCOLOR", wb_usr.title_bgcolor) + wb_title = string.gsub(wb_title, "WB_SEARCH_LINK", wb_usr.search_link) + wb_title = string.gsub(wb_title, "WB_COPYRIGHT_LINK", wb_usr.copyright_link) + wb_title = string.gsub(wb_title, "WB_COPYRIGHT_NAME", wb_usr.copyright_name) + wb_title = string.gsub(wb_title, "WB_CONTACT", wb_usr.contact) + + if (lngCount > 1) then + wb_title = string.gsub(wb_title, "WB_LNG", lngSuffix) + else + wb_title = string.gsub(wb_title, "WB_LNG", "") + end + + writeFile("../wb_title"..lngSuffix..".html", wb_title) +end + +-- ##################################################################### + +function writeIndent(file, level) + -- base identation + file:write(" ") + + for i = 1, level*2, 1 do + file:write(" ") + end +end + +function getNodeName(node) + local name = nil + if (node.name[lngIndex]) then + name = node.name[lngIndex] + else + name = node.name["nl"] + end + + if not name then + error("Name not found.") + end + + return name +end + +function writeNode(file, node, opened, level, folder_index, folder_suffix, node_suffix, child_prefix) + if (node.folder) then -- folder + -- box image + writeIndent(file, level) + file:write("

    ") + + folder_suffix = folder_suffix .. "." .. folder_index + + file:write(child_prefix.."") + + if (node.link) then + file:write(""..getNodeName(node).."") + addHtmlFile(node.link) + linkCount = linkCount + 1 + else + file:write(" "..getNodeName(node)) + end + + file:write("

    \n") + + -- folder div + writeIndent(file, level) + if (opened) then + file:write("
    \n") + else + file:write("
    \n") + end + + local n = #(node.folder) + local next_folder_index = 0 + local next_node_suffix = "" + local next_child_prefix = "" + if (node_suffix == "last") then + next_child_prefix = "" + end + for i = 1, n, 1 do + if (i == n) then + next_node_suffix = "last" + end + if (node.folder[i].folder) then + next_folder_index = next_folder_index + 1 + end + writeNode(file, node.folder[i], false, level+1, next_folder_index, folder_suffix, next_node_suffix, child_prefix..next_child_prefix) + end + + writeIndent(file, level) + file:write("
    \n") + else -- leaf + if (node.link and node.link ~= "") then -- normal leaf + writeIndent(file, level) + file:write("

    "..child_prefix..""..getNodeName(node).."

    \n") + addHtmlFile(node.link) + linkCount = linkCount + 1 + else -- separator leaf + writeIndent(file, level) + file:write("

    ") + + local sep_child_prefix = string.gsub(child_prefix, "/vertline", "/sepvertline") + sep_child_prefix = string.gsub(sep_child_prefix, "/blank", "/sepblank") + + file:write(sep_child_prefix.."

    \n") + end + end +end + +function writeTree(file) + -- root node + file:write("

    "..getNodeName(wb_usr.tree).."

    \n") + addHtmlFile(wb_usr.tree.link) + + local folder = wb_usr.tree.folder + local n = #folder + local node_suffix = "" + local folder_index = 0 + for i = 1, n, 1 do + if (i == n) then + node_suffix = "last" + end + if (folder[i].folder) then + folder_index = folder_index + 1 + end + if (i == 1 and wb_usr.start_open) then + writeNode(file, folder[i], true, 1, folder_index, "", node_suffix, "") + else + writeNode(file, folder[i], false, 1, folder_index, "", node_suffix, "") + end + end +end + +function writeTreeFile() + print("Writing \"../wb_tree"..lngSuffix..".html\".") + + local file = io.open("../wb_tree"..lngSuffix..".html", "w") + + -- Write Header + local wb_tree = readFile("template_wb_tree.html") + file:write(wb_tree) + + -- Write Tree Nodes and Leafs + writeTree(file) + + -- Write Footer + file:write("
    \n") + file:write("\n") + file:write("\n") + + file:close() +end + +-- ##################################################################### + +lngMessages = +{ + search= { + en= "Simple Search", + pt= "Busca Simples", + es= "Busca Simples", + }, + exp_all= { + en= "Expand All Nodes", + pt= "Expande Todos os Nós", + es= "Ensanchar Todos Nodos", + }, + cont_all= { + en= "Contract All Nodes", + pt= "Contrai Todos os Nós", + es= "Contrato Todos Nodos", + }, + sync= { + en= "Sync Tree with Contents", + pt= "Sincroniza Árvore com Conteúdo", + es= "Sincroniza Árbol con el Contenido", + }, + lang= { + en= "Switch Language", + pt= "Troca Idioma", + es= "Cambie Idioma", + }, + next= { + en= "Next Link", + pt= "Próximo Link", + es= "Próximo Link", + }, + prev= { + en= "Previous Link", + pt= "Link Anterior", + es= "Link Anterior", + }, +} + +function writeBarFile() + print("Writing \"../wb_bar"..lngSuffix..".html\".") + + local file = io.open("../wb_bar"..lngSuffix..".html", "w") + + local wb_bar = readFile("template_wb_bar.html") + + wb_bar = string.gsub(wb_bar, "WB_EXPALL_ALT", lngMessages.exp_all[lngIndex]) + wb_bar = string.gsub(wb_bar, "WB_CONTALL_ALT", lngMessages.cont_all[lngIndex]) + wb_bar = string.gsub(wb_bar, "WB_SYNC_ALT", lngMessages.sync[lngIndex]) + wb_bar = string.gsub(wb_bar, "WB_NEXT_ALT", lngMessages.next[lngIndex]) + wb_bar = string.gsub(wb_bar, "WB_PREV_ALT", lngMessages.prev[lngIndex]) + + if (lngCount > 1) then + local lng_button = "" + lng_button = lng_button .. "\""..lngMessages.lang[lngIndex].."\"" + wb_bar = string.gsub(wb_bar, "WB_LNG_BUTTON", lng_button) + else + wb_bar = string.gsub(wb_bar, "WB_LNG_BUTTON", "") + end + + file:write(wb_bar) + file:close() +end + +-- ##################################################################### + +function writeSearchFile() + print("Writing \"../ssSearch"..lngSuffix..".html\".") + + local file = io.open("../ssSearch"..lngSuffix..".html", "w") + + local wb_search = readFile("template_ssSearch.html") + + wb_search = string.gsub(wb_search, "WB_SEARCH", lngMessages.search[lngIndex]) + + if (lngCount > 1) then + wb_search = string.gsub(wb_search, "WB_LNG", lngSuffix) + else + wb_search = string.gsub(wb_search, "WB_LNG", "") + end + + file:write(wb_search) + file:close() +end + +function writeSearchIndexFile() + print("Writing \"../wb_search"..lngSuffix..".txt\".") + + local file = io.open("../wb_search"..lngSuffix..".txt", "w") + + local v = next(htmlFiles, nil) + while v ~= nil do + file:write(lngIndex.."/"..v.."\n") + v = next(htmlFiles, v) + end + + file:close() +end + +-- ##################################################################### + +lngCount = 0 +local first_name = nil +local prev_elem = nil +for name, elem in pairs(wb_usr.messages) do + if (lngCount == 0) then + first_name = name + end + lngCount = lngCount + 1 + if (prev_elem) then + prev_elem.next = name + end + prev_elem = elem +end +prev_elem.next = first_name + +print("Building...") + +for name, elem in pairs(wb_usr.messages) do + lngIndex = name + lngNext = elem.next + + if (lngCount > 1) then + lngSuffix = "_"..lngIndex + else + lngSuffix = "" + end + + writeIndexFile() + writeTitleFile() + writeBarFile() + writeTreeFile() + writeSearchFile() + writeSearchIndexFile() +end + +print("Done.") diff --git a/doc/wb/wb_usr.lua b/doc/wb/wb_usr.lua new file mode 100755 index 00000000..fc78973c --- /dev/null +++ b/doc/wb/wb_usr.lua @@ -0,0 +1,99 @@ +------------------------------------------------------------------------------- +-- eLua Documentation Structure Definition +-- +-- This is a config file for the WebBook help html generator +-- More info about WebBook can be found @ http://www.tecgraf.puc-rio.br/webbook +-- +-- +------------------------------------------------------------------------------- + +wb_usr = { + langs = {"en","pt"}, + start_size = "200", + contact = "dadosutter@eluaproject.net", + copyright_link = "http://www.eluaproject.net", + search_link = "http://www.eluaproject.net/doc", + copyright_name = "eLua Team", + title_bgcolor = "midnightblue", + file_title = "wb", + start_open = "1" +} + +wb_usr.messages = { + pt = { + title = "eLua Doc", + bar_title = "eLua" + }, + en = { + title = "eLua Doc", + bar_title = "eLua" + } +} + +wb_usr.tree = +{ + name= {nl= "eLua API"}, + link= "api_doc.html", + folder= + { + { + name= {en= "Modules", pt= "Módulos"}, + link= "modules_doc.html", + folder= + { + { + name= {en="gpio", pt= "gpio"}, + link= "gpio_doc.html" + }, + { + name= {en= "term", pt= "term"}, + link= "term_doc.html" + }, + { + name= {en = "bit", pt = "bit"}, + link= "bit_doc.html" + }, + { + name= {en = "uart", pt = "uart"}, + link= "uart_doc.html" + }, + { + name= {en = "spi", pt = "spi"}, + link= "spi_doc.html" + }, + } + }, + { + name= {en = "Reference", pt = "Referência"}, + link= "ref.html", + folder= + { + name= {en="gpio", pt= "gpio"}, + link= "gpio_ref.html", + folder= + { + name={en="gpio.fun1", pt="gpio.fun1"}, + link="gpio_ref.html#fun1" + }, + { + name= {en= "term", pt= "term"}, + link= "gpio_ref.html#fun2" + } + }, + { + name= {en = "bit", pt = "bit"}, + link= "bit_ref.html", + folder= + { + name={en="bit.fun1", pt="bit.fun1"}, + link="bit_ref.html#fun1" + }, + { + name={en="bit.fun2", pt="bit.fun2"}, + link="bit_ref.html#fun2" + }, + }, + }, + } +} + diff --git a/doc/wb_img/Thumbs.db b/doc/wb_img/Thumbs.db new file mode 100755 index 0000000000000000000000000000000000000000..30cd027ca4ac81cf53933475efc741d69bc56068 GIT binary patch literal 107520 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 z z&*~sF6~=BiFxV~5QvNyaV|@7`>APi6P4SR{K9=`HG&}O5T`Pwf|uC5Vb z)+4&8D&!}17msL+giBv}i6dnaF2tT)AAgpBl45l*-D@&?IVtNQlZ=VzHI>&`QW`-k z$AQfEsG6;Pn=M+A&#pS{%ng}MK5Eyn8~0|kZm#pP_bF&e7AN7OU~<&RAr}pj+_cM#JVrGF~^xNh}d{I3fC z0{PM)`^ayQUk|>o@BUB4e}Vk{Ap7WVklzdPzsG+o{R`wD0NI+qK|T%c|0c+HV{AX| zx1aXgkJxYjs`!te`qR(&w|}$$=%@blQ-Av5`WN5*S3l!-f6ib3=K1Sq{O-^A-5-wM z{T=oHm7n!bf7U^4OjyVUl$5E1DplU0k*(-zz(uE1r$4Y&fh z10De5^|xU327CZt;40t;paFjX17Lw`z>nsy{;2=&N7pZYNBxx=On}M^t0=3dXAbq( z?xT1&n3W~SIz_kU>qNgGvhUw*W$~5R>L*lU$nTtfSu0YaYv)#N#kK@IjnlRTzd_B> zn=rP;Q6;~aIK42f>v5DM?6p0ihs;zM>d<(Y`e}tpWveV_9ffqUg=i zVdQN_LzRoA9ZrZXKB|q&Hw!f)?H*g1H^*-`+aAbL;V4Z{dXGPTJh@9ZSST4r0835s!kJmtzB?4Dzoe)4foWXXFo<0RqK%um@) zD?`|*3p{k$_KK=Uh;>dUpDfq9I^6BXOXdk$ptKef^dHBRAW;|rAE+UW+^&IeKylI$ z(_^l$(E4eX(^VqSJW?3tSW*#kA;=(Ftm;yDZ&^_gZynRy6R7(rqM;7nWqvT2TuL09 zb@8Lx`mjUM4YnF?5<7|*--zApBYL#Lh@xHk_2S~3ma0X*y!!4J1gy%uVNZsIq;Rqb zl|QG%QJ8g~mj9h|6@DBWc|z|z$XJJTd(o=UWt6->_Dj{0XPALQXYWT-a?jU<;+bho z0_`BhlSn1B+`L3vMKXF;r5NG?s*Cj8vgj?j=LM2dUOGjh_cy(GPCb9r?at*F=~q@2 zgx11!)NP>)qK{C#9f|pl7=8uZ#8Xl8*R=@egvHBi+ZqV>TwFy; zaVEI71V8Q13YiH-n{J%2c&AKvi!wBRX6iBQSZ(F$QEp_nPg<+r__1-O8Np1|b#Rit zA&;aw-altT_{KD3--IiP2*`)q>PK=y-NNj7EjJ(RK45#&8L?$ZSfN-W8yRyEIU!Vi zrAQdE?RV-_TxsGowa9n7XKx;e;?;26o0ZwdLoFP%+$X6zG?{708JimUj}{z%^_>3h z|2hQEvp+)o*8gkz*U$O)|6aeSpar)bvmPx?jKHN(0&IvHfq9}gclBMmq^51VcA<5B z^TwSepU=iETL|u3;}RuweVcA(>;X=9T8=c06M2%NI$2%7?b9-m>Ju=LH#gjxmU-)o zi&*FBglF3ibZiNf9M_7n3to+uh~$?#^Yxw=wp_BH0TqneWQV7;6^wlB)7WFJXiW?b zoqred#ZS_-TR%kfNky@kW`nNF87bBmZMV|y)Sun|@-v#B6iiSk&ZfWEjx3RXR5SD_ zZ}J<{nwhGVM_FS#(99Eu(j+5F2?Bdw2p}7l^W&CB8h3Yf$+Ws$5vg(HV|#CIWBlzV#~8|#T-rsL>y$QIJT=>GPKGLQYH znfmNG@5v#COYch4+QdICM(cXO41Bh9&TRY}Q)A~~QQM?hy^E?r#cQ;Fs^btoxYXHS zbhgvY&hu^CrWEUKI!jHvlX4$7c=4=>(!`iyni4YS#;E&gm%ET>sbj;)XBZ^KdK?d} z$#2#QQEcl}HbHa<3mGq=GMXun+pm%wW#@)W^38NI&W(#U+O`tjJ0usq?ruR!^E;&n z$;UHn-0o&@NxQXX_~rPKZdO^_h>;xgc$WiJlKT{$+E@0Hq#Fx@5nJfo(slD;*wtT* zxP7kbt2)TD@i)3P_}clsl~HpMsd-hUARI2t6i^zg^L7ntBia~@%TqKZO8B@qHgJp> zPE+8s5B7L!t4;CEb%GMe>dnOyd16b930Si6wNEm?)u79To(~J}D@xq=G=4TcbVqM* zTk#Gr6Gb%PM9pnglY; zh{WDFq?I(TJ6kp#)Y-Vbl`Xd*+u-dmJ4GjdAU8xDw`Ys+Y2_=S`)ms-xy?m6w_@K$ zN3=SW=(UQZvefT4{l6KY-{)W5pY!j}__Kd+{Mk?a_ur=f#^8y%I6+V>wKSM9ug6%C zcAd8ooHP+z;wP$UzvLo&u<58cF=MnkbF}sBW2fjN{%4&f5^9rnTc-z|tkk)^EpqoE z{;gZZC}F{FX!+Yg{98?vboIo%Ge!3fR%-RTMU;n4l}7eHS$z6b!`WgHXA8}fu`*MC6AGMpaWp2^VT`@B!=#QbinAcTkN3@SvP|Ey;VkKxLV5I1XLjei4)wIJ zi6$Ku>ksYCm3i=uN$Gj!zBA$~E+r#*RaI7*MR()VoU=XmndFefle3B9WI@VTV)Ew+ z(cl_gsug5Pg5QOy(hHSJA{$!ftWb zovEQ8+KW$nxmuexwI%3Ul0&=ZW?sZDx|-#c3<^Kk#pm=I%9{U5$Nisv{O^^{|GGQQ zUuvE+s-vqj4)S-Zqr3l2b##rt`^w8q9!!7l=s)NGpY=n3ul%b&ivF!k<`#}x{gyq(lSeBmZgeThw+-5x_DHC; z`77lX2k<5!3&y9FBxXWnHyul|EWI4{E=Vvfc9UwXo_nOaFHB@Gq@CAB-G?V zSJ}zJ8r%CM4YBa34;y%=`dv6V!LT6y%I?vmkf z?#8M;NjVfh)ABA%`_gtZn`2L2aJ?3eL>uoLdXcMm_L?%M+1qbSv+AVD$$Dv5G8}7bI9|4 zT6YW5TFz72H#dLKuIsm{l_y+hMLLcH2KbM>^7PnWS_E6 zT%ie4%8AlPq1H@#aaq9e*EQNZ6ywZlj|eq)S#_|cozv+$$f9a-GUA~8*FqAO&XUO9 zh*;M^#MWU;xZ;D*ThnM-B+*csc$##8l=P)9?|LV@&p7Y9^uDLqeaC)Bgo$-aRT@~RD)O|aCJPrV!85#cd$!cyl85|WgO1}>-x=5YE3pK?n| z<-=(lFdEq~Sf;@5Nb zUwW)bz{?LZ_F46P{=N&o*x$o{BKza(55IZ+#T2gfA;8$=eh2xEjC&1hP>fCfcaZM| z@)^E<#-{K)$PWS8jCBjf_FLC4f7bv0kEwsVoI_4s$@gF%G;2h$VE8Q1>xmair6Xy) z1b=rEn5`FEzYMEy?`&9>yPEO#vwx(1kCYUvRmd%Kf|QLskIPpSR~5KgifKkYG=WL! zP~1lB_&qug=^N8^ngFp&TA)0fhM1H*Y>hN|J#6l>TPyIAnj%}{HcfZe?Ba~K3N6oH z&*yWX52QzXBZ$WfuHi~W8;t~L>nUwi1sWI|Hz(;^pnfZMt4AW$KK^Jlzu%mDecL0) zM}F4leC9sQg|{a@3XeOrzh$Sx+c$;y`s9spHn!M0E1F9x&93_!lOt*{j=oRLjc9=u z8Lv=dcN-tJR@A8~Cke*nAG(;}S(ahvoH=NqfOCKUw8ZXaf7hFP_R+fD^rdLK2lBVt zvih0~qhsTd@}@Y_ql{1cnnp}cIF5)rzZkAscx+e{bHeD;0xEmi+kNusnn~{2C1TEG zbMUw-ax=ExdwkdcV=eY7Z6$urE3SMshgfs+rB1p0m7E70rS73(k%4rC4}L;=)}1Ic zVb&-hL`9;Aoek>Jx_z@6uXo@t)RcG6rX)y`iiPH)c)f*W9-QB{-=W}k9^Z)qr7p_J z3>VjokiZEg zPFs19l+eAozPkpzFKCC-d`Sls*)8FIy^;_pJPUu>=YB!X?U$tiIs&7!|F3pZ@>AqUm$q(5Ep|xiM0xZl>n=pK1zGE&F-;@q=q~e_5r5IM=vdsu48zF_FlOLWWg_3t=O97KSpz{QNwBli+?Qa%s8&KTYRcd*o@nEs;cF|7YX zj7Kf0PVsN`!|$ITMy$Z^@%gz9a&G_uz)c_!2m*ouMl8WNjG;gna2p5*B7jKX4iE)I z12F(Yhm8f|fOy~@a34tc|JpnAsHU$hj>lR>tQ!gY;xIGyub0T?`&>Ppub((@-9kRbCAG!8pJR$8wM}HYNZD?9OOcoA z3bmR-WwPsxN)O+^bIJEyUuuNq8~12?z7q+;z~q#BIYZ&(ZkKlNcd5th_T3}lOx8BG z*Y|024s%951e0L-Zl9h_9{hX66N_DM|?`f#c zHE2g7LVLr{rBz1npF6PweP}&?mXcdbyZI39-HVj=FY?lczIi3S&oXJ&`$-C!eSW3= za;DmjT=!ta>~CkPA5Zc8X--4dFOVJADCURxOAq|Zr$vKDG{AvqG zab}YE$|W>&9LTvwC?UFz3*WdIjZn{#D**LlQ^ScYAMtc}4Opb>V=n zLd0p~HHsutO^$JPZ$XUHj-6evm`UPMS;Xu7MxRhlSjEH9@THsqMc3l`-cu&pj#1h8igwBtGo4vSh2NLV zE5fl&IpSOuHje3fMR1#GBI>)A-E);Gqs`L9a*PJ7v^qqYW2+smVY7A(jDooWsYQ!4oljst4ea{>NZa)B_GcjHStHBINL-EF^Ix?`V0+Pf`(L88 z|JCLH^mXL?Mn{vbwgBcTFrbyPjIIL?~nFgqi0{aR1KvbYk+$q{r7fCae{L(@FA5+dq?a z!*nNP7fq{~=v)@pfFk%@S`rlO-ZLiv*k|wp{*qC+4 zee09`wP*vGc3-H@=rfbHfoXM^+|(Z}7J53vKEh7LA$)a`@%*$W`?`G;hDyAxX(wAf z3}d(2n#vdx3OuaT96fuz3Vm-2L>eqHgDmz%3$84iWWtsu7OQ$)teULwNp93NVQ%TS zzcboBaaP)3nByfm!_I%5iype;$h^>eo2UbOgJ>5EhMn=!u{q15O+&MJb`+{=zD(tI3eCG{jmJXTkrobU0n^+vT-qb-deCtgqXo`Whp9{*kZhs76oen0qs z96Zm{{=ZaWe*;@?-7&WdqH~ubMOxSXP^ESKZ!6P!(f?Aw<-jY%(6F1~5s|lU--%C1 zOiCu*OG(Yj{?%{EN1p%lC*J=dki#mJZk6Jy>YnxNR8!_yValdZxQI=vujij`X!Z7& zR5Vc4?RcIi3blGHMXt_5w#llk{c?@`tFuB`iO$w zM#bkVm7jj+ulnVJwh>My6?cIyR;-P$mG-^q`159j30 z%io?byDiLn|1Eoi_W1ljtkW6p42DUwK8M|e6!#wUm1nC}CBccG`ohIhpS zmciP$HwcEqdNQJqIUUju*KI}|LJOJMemE+#)yqtk!S@i6w9vd4=5Jx*=$9b!@%i|<{?IGTt@2a8fhpQ}Be(4bFGeC-6-LpQzaBHn=o~ZcT z+K1veZ+k85Dw{RC8a+JCgoUw0w=>4OpGK9_b22##&fDFE?GBPX0%Dz_E}f-T$XRLC zJX*Id=(T(lj<=ob+EfvV*CccG?N($G>~QvesZ_TMJxrR&?alzhom*mcI(is4L|4rl zy*|UET5mzH!n3q2N(kn}LN1oCrhcps^L@IRkV`=4q3?SEE(D?nx5(bf2&q~aZ2Bc4S_iy6;Wtt97MtD&z3Ganbf z@tew*qnnfR_Ihp$(+G8O2>ZgbM=3<~jP2TSlJJ%6JhBEn*mE|R%p+Y>&+*%ED#PIw zD_xa&^UXfh#V(Y{+IhhXMzeJHq%ZF9V^xDl!+V^K%v5VzIgq9!L1D@fd!AK zoRG>#`sI-;lwLk*?`Z3pboMC78{2Ae8E?L=%`m^T>Wx75qK>vIa}Pz*ym(dFfzGZ_ z>}ab+4c1RmpN`W&UrPxHPmm$^XGV6u8}2T7dqwXw#8Z@VTp+wVym&wC8!uMiAI}?M zaUu)QxWzX8RUJdl`-Ca#%W9Nj56CLSQhkZ3$2H_9j;o9n+}ImM40SGe6xR{Pd;XQ8 z;S(h?P65|I=EkJglF6)`2+xRqRjs>*$HHf-q%2eZy7Pign8-Y_@0vA6sue!NZ>_lIs`qL=fLoDtc}m}9uhckp*f?fPeJ z3HFSEImx-VmuVTH)9)R3Kf3J8l^14+?=#nPlaHsBI8?`Mc9(V|dJJ95rpD!n@a2W# zg={K+wT(T`ERr{cq71j@>JbXNgL+*zk3&7#T@b;jkN+s{2h)h<`;S!VKdK`2{=ulzV8_)lolLLX_{j ze#4kwx2TVd)|KYV%%Q&jOsBvS@~PaQcSN1|MQ&c}ul~3DPoiI0f|~Vj)vsuN{QA@H z)_-=vTsML&m_gI}1oqirU+~`kkMH8+{{B3l{&9EuW1~OD{*>Xl}qZ-=Nh&y*WAQIKmmNU*P;&@K@rG_Sz)oJfDDq`LF@ z&=g8jpRo(hIC$?mw~+;zlhTykUM>0yUa<~63CUd>`-@fo3pU-iWk@1z%G z;R?#OToP=AUj~Po&F{EgU>|ITmL-zd{|+0=h1kg*X)kP+GG4?6XpkT fD^j@$C9~+W6@M2qoPxN);TI9ZAM?=vy`%mDP~09M literal 0 HcmV?d00001 diff --git a/doc/wb_img/barlineleft.png b/doc/wb_img/barlineleft.png new file mode 100755 index 0000000000000000000000000000000000000000..3b8858e9c1172781837402bd83b89ff9eac4146c GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^tUxTx!3HEF9vn{wQY`6?zK#qG8~eHcB!VP43p^r= z85sEgfH31(jj+W)LGcpTh?3y^w370~qEv=}#LT=BJwMkFg)(D3gR}bKZa^g(o-U3d z8o|kb_*r;fFsN`apPn|K!C3MF>-yMgd#w%`FA)}w6A}~37%ndj*}c*G-g=-O22WQ% Jmvv4FO#m_KE%*Qc literal 0 HcmV?d00001 diff --git a/doc/wb_img/barlineright.png b/doc/wb_img/barlineright.png new file mode 100755 index 0000000000000000000000000000000000000000..39f03eb55fe7497c35b5058af6315b2c244026c5 GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^EI=&G!3HF^E3JtI38XvvIx;Y9?C1WI$O`0h7I;J! zGcfS~24TkeIUnu-1;tBTBT9nv(@M${i&7Z^5;OBk^!!{y6v~YC49@C@y8)G`c)B=- zXapz!;b-AFk#O^qu!5mQ0t08v?r(J=3_?si3QU$Z3=0H#nUy6PL5^VXboFyt=akR{ E0A)%kJpcdz literal 0 HcmV?d00001 diff --git a/doc/wb_img/blank.png b/doc/wb_img/blank.png new file mode 100755 index 0000000000000000000000000000000000000000..53033139624056c1f3286c9261dd25c23c71685b GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDVB6cUq=Rpjs4tz5?O(K&H|6f zVg?5OKOoF_RwHaNP*AnRHKN2hKQ}iuuY@5qCp9re!QInMAvia&s3bVCEVW1>42X^N z3>1G{j|&EB5C>@p&QB{TPb^Ah2uRG#E79|F4N)jF)-yP(AMOTJqUq`47-Hd{{O8BV z$MtMp3?~@84474C9b6}Gnqb1?cA3#axbGRORtqCTKxA(L$0Wm*Kurvuu6{1-oD!M< D8@N78 literal 0 HcmV?d00001 diff --git a/doc/wb_img/google.gif b/doc/wb_img/google.gif new file mode 100755 index 0000000000000000000000000000000000000000..91a5efd00e45b570adabbf8073b783ea76f83a0d GIT binary patch literal 1468 zcmV;t1w;BrNk%w1VKe{~0QUd@0000zY&<}5K1Os!Om|BRJf;IXv>HK|3q-mRM64A_ zvKULS8BM$7Elw)|NMsUJUcE?0^)*HnPdWrW0Gi_>b4)Mu34ZIab-lFxsa z#dwp*f0)a2meqHh-hP|WZ=2zp6$h9h6qGnHsu&8l6a=L$A*DDiu{tl4Mn9T-6`W5+ zlTk~MSyP&4Vx>_>t6WpQVOF7OWT$Xzs(Ev=YGcF|0?{A~)H58@KPuBlG}THq)J{6b zR7S{VTGD7&*KAwbYgxc+V8?W6$b53sb!XFdY2JQrorOQCh7PQY7`>DYwv!vXo;R0> zRhf-tvzte&o^7U=cDkZZ+qX6AybkNW7v{bt(1CZwtX06RanQVU>A@)P$uio;e&@zU z;KW?-(O=}ta`M}LjEszzmzRi-pof#JiArMak{iLRfVx{8Id zn3S=ggQ}~mrmMB1tGubKv#qkcwzH_Tv$DCgv%I;ryu7@HnZbvg$cClejjP|5r^=hD z#G9+jlBdy-s@s~e*NCg+sIteXwav7;#iP38rN8OF;=jDW#s!L+i-xwp^0yw&L?8+}rWZ#`NLd z`19W5*ee9>F@aH^62mI@cHTH`u64X^z-xf`uF+#`SkPr z{QLj_00000A^8LW00930EC2ui05kv;000R80RIUb*stHfg9sBUM3}E!ta=L(_5(L6 zhz=pJ&KZozQDQk6E4Jn9NRNjPYu>uG!k~cF$c`}o^@||@lsu05axkLit)0Afv_wp6 z7Zc{p0X8|-f-r5HJcIr6dGmJj-#uo})@>AsPg*o~TmR{sH}BlJd@u+kUFS?4KdJKa z>9YX>RJ*VR3lifKY}c1G@Cq&yr0iHALr?XQO2tD13RCS|sFgQN*RL^Pcp*we?VJS@ z(_SWIR%KhyTwAiVYu3kfJ7anLv|ANwYKjDywn+vB%#7)5NThfxXpVx1&+wP+Wq? z8=TzK4`=lq)$MkM7Flf5<3IT{QUC*}ykn3!3ve)vFG?(tOg_a-;mI_~ zz!8Tw`9MR*C)E68%>@r^;!Qp*1kgz~Oe7&jF~y)0mOQS6;6MZ=^zZ{Cngp5+7F3{t zOE%lIlTS8v-0=r8+mx!$Eki_^U;qWOkn_k3ka&~L6-`V*Njjp*Bo#GWPBqn2`LttN zPfwAl>{LEgb3-ZIV6zAU5R}?#T1(}PNx##vn#0fmL(~c+y z*p-*C>K3K%K>K7cf-HCSb4v%)RJHHH3H1X+0VT{b&Mi2&A`-$BBV~RyYR@amI=EWeS?;? vm|xUe+PSdhkYMDzjOl$+UL_nCRD2l4FHLv!T)*=L&{zgfS3j3^P6zopr0KKYTh5!Hn literal 0 HcmV?d00001 diff --git a/doc/wb_img/lng_en.png b/doc/wb_img/lng_en.png new file mode 100755 index 0000000000000000000000000000000000000000..e57fee92c8b4c851153852d7e9d441999cf47dd3 GIT binary patch literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^qChOn!3HGj{oJ~N6k~CayA#8@b22Z19F}xPUq=Rp zjs4tz5?O(Kg=CK)Uj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C-z_ z@Q5sCVBr4;!i<})P1OPlikG-XlmzFem6RtIr7{F0X6BXX`MHKDlo{(8oYfC^11gF0 zba4!^@K653&%$$sO~H93uf&R6g&WUH45u_MWR*C!B(bDDafe8Xf?30PrA54|N4JVd zb}f{Y@^O*wI?LcO%dN${$A8Ph8++`Vc$QYpm^5k5hNaoRQi8LluqxkK%3ziAvC&Zxy;%J=>sZbU8|*Nom^K`Klq0 gbKc+i7r#vI<@s-wf0wO0544uS)78&qol`;+05QN~LI3~& literal 0 HcmV?d00001 diff --git a/doc/wb_img/lng_es_over.png b/doc/wb_img/lng_es_over.png new file mode 100755 index 0000000000000000000000000000000000000000..5fada13e067076e5efb75025f649c65136673689 GIT binary patch literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^qChOn!3HGj{oJ~N6k~CayA#8@b22Z19F}xPUq=Rp zjs4tz5?O(Kg=CK)Uj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C-z_ z@Q5sCVBr4;!i<})P1OPlikG-XlmzFem6RtIr7{F0X6BXX`MHKDlo{(8oYfC^11c%- zba4!^@K27}_UA}FTNd+#h1b{ZT`t9DUGzfg)PW03Jjs^~iasQMwL9UE!!X~~McS(? zoBdkA7lnqMGP5mQ^;ji4bR#s3M50xij%b*P++1ofT{u_6Fp+C>gNC!Gr=LsZ{7Z*Y jJH$0YKHF)?tmtH1YF&9zu$)`X)kT**5}-Nb?50G#i@#4LNuy4cymt1E^ygcl4HGl z9odTMNyVZkN<%)|`6_kkwJEVPUKDioVpGV_P;KS* l(Et1C--9wu4Ve|4jNu=0Yi39Moe8v^!PC{xWt~$(69AdgTps`c literal 0 HcmV?d00001 diff --git a/doc/wb_img/minusnode.png b/doc/wb_img/minusnode.png new file mode 100755 index 0000000000000000000000000000000000000000..06a3f95d1bb172b9b09ca4e95547d8df67a7a212 GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDVB6cUq=Rpjs4tz5?O(K&H|6f zVg?5OzaY#gpTET&C@5ay8c`CQpH@)B)$?B73s;f4(Y(@k7tQW#Vv)-&?*^0M$QU&rlWCUoe2PiZR?rK$Kf#DRa@MBMPUvU&Jk_&yx`lXJEMYA>7<3 SfxQZ78-u5-pUXO@geCwA(nL%E literal 0 HcmV?d00001 diff --git a/doc/wb_img/minusnodelast.png b/doc/wb_img/minusnodelast.png new file mode 100755 index 0000000000000000000000000000000000000000..c2175e88d354c4dd0492abb34217017a1f762fa9 GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDVB6cUq=Rpjs4tz5?O(K&H|6f zVg?5OzaY#gpTET&C@5ay8c`CQpH@)B)$?B73s;f4(Y(@k7tQW#Vv)-&?*^0M$QU&rlWCUoe2PiZR?rK$Kf#DRa>$meR?eR&bxtp2?8$DB57nKgIJv Pn;1M@{an^LB{Ts54`D>T literal 0 HcmV?d00001 diff --git a/doc/wb_img/next.png b/doc/wb_img/next.png new file mode 100755 index 0000000000000000000000000000000000000000..4ab1ea882f28ff60a9b078b3b3618635a5e1373d GIT binary patch literal 330 zcmeAS@N?(olHy`uVBq!ia0vp^qChOn!3HGj{oJ~N6k~CayA#8@b22Z19F}xPUq=Rp zjs4tz5?O(Kg=CK)Uj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C-z_ z@Q5sCVBr4;!i<})P1OPlikG-XlmzFem6RtIr7{F0X6BXX`MHKDlo{(8oYfC^11g!| z>Eak-;h+46pM~cNn}YL7UWpaC3OAnb;PIVT^k#oUIKN-ddBY0cySu(h80?8QFgUR( z(7CXU!D~j761(hUuHY{oF54KD7df;&=u#-*c3@-v%-hzz@tB<<+hZeve5<4B26oIJ zrMNVO4Vs%KG_vrzn$M76?lclfGuX%`l&i6&LS@&Rh54GUTQ+adSkmduIBg@VzwQ1b RuYhi2@O1TaS?83{1OTcnW+eas literal 0 HcmV?d00001 diff --git a/doc/wb_img/next_over.png b/doc/wb_img/next_over.png new file mode 100755 index 0000000000000000000000000000000000000000..38e99e07baa33c6fd0e7db63ae62225da0b88907 GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^qChOn!3HGj{oJ~N6k~CayA#8@b22Z19F}xPUq=Rp zjs4tz5?O(Kg=CK)Uj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C-z_ z@Q5sCVBr4;!i<})P1OPlikG-XlmzFem6RtIr7{F0X6BXX`MHKDlo{(8oYfC^11g!~ z>Eak-;h!9{?az^Vwk+le3$L%+yIhLRdeXW!HGj)*@dsA3s~>x6y+@B#l8f`b7!S{; zoGSrq92*3eEhum~zT=RHtx#fOkLeK;O^R1%z6mRh6`2E;~s z2APcc_Gdw+i-U9o=ckpFCl;kL1SDqWmFW4ohA5O7>lvKY4|fA9arJa@46*P}{`2GG z<9ark1^f5UU$|j|z;qKAnG^<9iS>-Uyu2*D@}-OhY?_^n1wseX8Fa)xT>MhVXcykM ht0C@X!i?ig490c!mPfYeJOmoZ;OXk;vd$@?2>^0XNq7JN literal 0 HcmV?d00001 diff --git a/doc/wb_img/nodelast.png b/doc/wb_img/nodelast.png new file mode 100755 index 0000000000000000000000000000000000000000..e76fce15d4b7f25fe5feb9da4d46a13377c0677d GIT binary patch literal 248 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDVB6cUq=Rpjs4tz5?O(K&H|6f zVg?5OzaY#gpTET&D5zHA8d2h$pPQSSSHcjQlbV>K;O^R1%z6mRh6`2E;~s z2APcc_Gdw+i-U9o=ckpFCl;kL1SDqWmFW4ohA5O7>lvKY4|fA9arJa@46*P}{`2GG z<9ark1^f5UU$|j|z;qKAnG^<9iS>-Uyu2*D@}-OhY?_^n1wseX8Fa)xT-;L1Xn0S$ hlyU9lgB+c#49#;}Z!GMZqX0CJ!PC{xWt~$(698SANW=gD literal 0 HcmV?d00001 diff --git a/doc/wb_img/plusnode.png b/doc/wb_img/plusnode.png new file mode 100755 index 0000000000000000000000000000000000000000..f7184fe3cbfecf6fb30c06f9b03727eccf6d899c GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDVB6cUq=Rpjs4tz5?O(K&H|6f zVg?5OzaY#gpTET&C@5ay8c`CQpH@)B)$?B73s;f4(Y(@k7tQW#Vv)-&?*^0M$QU&rlWCUoe^7jX;f^JE0X85k~b WdpqA?iKznG$l&Sf=d#Wzp$P!hQ$%I} literal 0 HcmV?d00001 diff --git a/doc/wb_img/plusnodelast.png b/doc/wb_img/plusnodelast.png new file mode 100755 index 0000000000000000000000000000000000000000..cd71b585a321f050d30b6356dca8cefaf0622430 GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRn!3HE-lJ=GZDVB6cUq=Rpjs4tz5?O(K&H|6f zVg?5OzaY#gpTET&C@5ay8c`CQpH@)B)$?B73s;f4(Y(@k7tQW#Vv)-&?*^0M$QU&rlWCUoe{uKbLh*2~7au)Eak-;s5sXLCymTJggT=n$KM|-R0G9yQ@ok$F#5FEmz$BcI-7(=xSlFEA3pFQpPwp z)<}Af|G7n)irc0-yY}tKQ{S}wL7uq7duOJ~9i3SM*<$M!iJds4c8f{!N2^f+f8B!J z+#6*iFBr!;S$^5PB8|)DeibKk&ei@~FBO7cJAJwruEak-;h!9{?az^Vwk+le3$L%+yIhLRy2yc-wM`&!pW>~hJUqJpS@%>qB>G=SSj59B z$)xarW8JC7zLn5iC5*s)N7&D4;g YmbZ3$*uHy*fG%Y4boFyt=akR{0I#-dX#fBK literal 0 HcmV?d00001 diff --git a/doc/wb_img/sepblank.png b/doc/wb_img/sepblank.png new file mode 100755 index 0000000000000000000000000000000000000000..1d0f8830594bcc05ebebe8826cdb24f06f4bc06b GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~g!3HGv?z=Y!NU@|l`Z_W&Z0zU$lgJ9>a~60+ z7BevL{{mq~Uu_`^prC4rYeb22er|4RUI{~JPHJL`g1e`iLU3+kQAu!OS!$6&7!Vuj z87Tg^9v2MMAP&+HoS#-wo>-L15RjOeSEA?V8lq5UtY>gmKimzdMBdZIF+?Lc`OlA! tkL%gI7)~&F88EBPI=D{WG{K^Uksi3N zG8yyj&w@-B2k8jTPb(=;EJ|evNX*PD(erZ+Q7ALkGdQas4su4Qr;B5Vhj;RyA0Hpr zv&k&jzkmM14I2cefB7KB&U!}U7!NaBP2;5t7Yve^dGinSJelG$S!D6losa$p9AB)- x<}T?yS;Sao(}RpINngVyrrvJBJbfa}3=gfP4x29cpAWQv!PC{xWt~$(69DpLQ+5CV literal 0 HcmV?d00001 diff --git a/doc/wb_img/sepvertline.png b/doc/wb_img/sepvertline.png new file mode 100755 index 0000000000000000000000000000000000000000..9df6565d9ee96c8237bd938440717c80ab3ee9e7 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~g!3HGv?z=Y!NU@|l`Z_W&Z0zU$lgJ9>a~60+ z7BevL{{~^k`8gl%00q@bTq8=H^K)}k^GX;(b5avi6x==C6oPXTi%NnM%TkLJ!hqOF z&mfaA-~KGfba9Z5;QX|b^2DN4hJeJ(yb?V>*ARs=V?Bej`r&RsC1##3jv*Ss$$x%) zd|b~avta-J`3pB}5SVV_B9p?PDzToCmzS4?SH6_dfK9WLu|ViRIzwy{BSZCf^<&G0 SE&c;dVDNPHb6Mw<&;$UGX+z8a literal 0 HcmV?d00001 diff --git a/doc/wb_img/showall.png b/doc/wb_img/showall.png new file mode 100755 index 0000000000000000000000000000000000000000..4c9d7bf5c1437809b0e4127e27ced77804d1cfd9 GIT binary patch literal 220 zcmeAS@N?(olHy`uVBq!ia0vp^qChOn!3HGj{oJ~N6id3JuOkD)#(wTUiL5|AXMsm# zF#`kt9}s3ds}Z&sC@5ay8c`CQpH@zjHM6e&p4c`?%I1rq$TO=L z6T_7(hnKeSw6e19`*7@4?F0oCX9p#&W9=6eu0P_=-*k9NR+|u)R78dFnZO%+dQKMr zStcU3+d4V(C-JsMI+e|MzOeXd$}=47-0GoMDeVe$ O8H1;*pUXO@geCxEOlvd% literal 0 HcmV?d00001 diff --git a/doc/wb_img/sync.png b/doc/wb_img/sync.png new file mode 100755 index 0000000000000000000000000000000000000000..672f0af565894bf33ad4e1b381c5980c1bc24b6c GIT binary patch literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^qChOn!3HGj{oJ~N6id3JuOkD)#(wTUiL5|AXMsm# zF#`kt9}s3ds}Z&sC@5ay8c`CQpH@&DR+4r6nI)*zdN@m`@@T{6DvhERJlTC$0Qlp?*DhwWn_Uv0tK4elGP<)&(iuCzXy`lRKXM?wEYJKkoMAr7M@sVR6og+^(ECV+yb7 zWxY#RHhklG9JPMx%lWGIotg39znm0!KiebObD~)Dq%5_+IlnYF#;jcT^0a+ch5y-n h&DGVR`xV*lmP_+wW-gsI?K;q@44$rjF6*2UngB|IaijnM literal 0 HcmV?d00001 diff --git a/doc/wb_img/sync_over.png b/doc/wb_img/sync_over.png new file mode 100755 index 0000000000000000000000000000000000000000..9b85701bbb5da256a741e7ac94aa385edaf0f71a GIT binary patch literal 348 zcmeAS@N?(olHy`uVBq!ia0vp^qChOn!3HGj{oJ~N6k~CayA#8@b22Z19F}xPUq=Rp zjs4tz5?O(Kg=CK)Uj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C-z_ z@Q5sCVBr4;!i<})P1OPlikG-XlmzFem6RtIr7{F0X6BXX`MHKDlo{(8oYfC^11eeM z>Eak-;lFnZFJFTKN9)UXbC<5W#JS7O-5{Pf)kk@1QgU|0{Qmhfrj>F($!&P|`{A?c z9-O^R3wNE4j9`^g+HzGh_1FAM0>0NJ3?;mRjgH7)zAi6#R`WbP0l+XkK8*YA1 literal 0 HcmV?d00001 diff --git a/doc/wb_img/title_background.png b/doc/wb_img/title_background.png new file mode 100755 index 0000000000000000000000000000000000000000..c91c6b12ef4a89391817cd4a66205ff97a763003 GIT binary patch literal 2700 zcmZ`*eOyv!8$ODHqG-+82Wqu9wKT{LKT1poO`AGXQ|A}M>Mc@piY7{8EYZ|=t!!q| z$giUnD-C`#Q4}jHf98rQCn+fr&9Z=0G^I=peUIB8ZSTANbI!T%=l4AKeP8!=U(fkI zJoHNp8jA)10237G9{~U;2>wQ!A>rp3vGXSUGRlnjayuaGvDd5IW!<@UAFt?PrKb>b^w66I>?_KbvR*MmBol+t}#u2$5g4PudXSxw7P7S zB!SKp7l|G=)Ls&OoSJd&X+S@anqk3R_DrYS?3g|?f4DWrP5s-qNaURn{h=Q9Nbdnc zS@{;5mq%n1Gj{Jv$PKH&&)I#qZgB>wv(NILE~@6Q{*tE568qlV0d+lV3)}7fiK=~~ zj5WXTemDJA-nya0KsI$iiDVD>u8{`Jwd$t~Z;s#=+GmC97ZokX*ci*V?&$23-`u&$ zYHRNCy%;X+Os_&v#TeNA;{5JidD=gpd0MBp1f1AdJt1Sz= zTi{3I`5B_NY23rAjoEz!wvHDG$|%`K_O|TKH>lopF0XPs83M4M5ZJURV@>^qkI1|2 zD$VBR8ovkWv3z<-kO}oOXY-OxT`b|XkeE|n8B^W;%o*eF_Cr}Vr^yNm-_F^&AWal9 z#M*4C9}jW?%W-mMRT$@ao8M4*#c|Tj#qF*dlp8<)yCmLs9!|FU=Pt=$_4PBzIqgFa zsGF-zl=nV;H!ISowf|IQCFvv>4(%XnV%+8A_9~vyT=!K=h>n*}B=i7=L4slUYzVYA zG4amp4b`8^?wP0#wkij31N|@D-j*&9-7NIt**LJB!as`p6={$Y3@LlPG|d4|(g$>z zUC->HO0HJueov3L$o|V# zg(*@&?bL(RrWczF#@A!w%B-;xueJLB&{zzrQPNK|*0*dU`&0AV8fpOj$ldKwBv-4A zu^`K0`NQRC@_Mh8oE`D}U6kXb3wU`W<%g%M8k<^_j}^zs&lB8`C&eK)wLc8IG>n~Z z>7K5jofq9O(Z4VG2pVy?1g;$1Sol1k+J(-|Pq-EmIpm7isfn2dZ)iy;ofeM?0@Q{`)szwnpY{j0%Az^(#^bA~XoN}(r-S**r_ZC~g~2!@qx z$<$!Mlsuu4#K&I&P!S9aG%o`xJ2Ekl>Jtf4!wReWdwqaoK-E|XxN$1x>C%1{eG}wK znu)GX$gEi^3SDVqVXh+vYGt=Ir!&P%o*Me_nji!tZAge8P^Atu73OLv zEnoHmmG!cw!nQWFZ?8CA0jQKWRqe)=N^y$C%-~?HcCr4?TK6Fstb*V4AU#M&?JS|3 zh1MPtQ${|ecZVypzHVHpt{$~yFr8Qzt2r=W%!SsYrbOB2iq#sOx2E(vB%I~otU8{f z6ZkQE$P?q1FqodC_6qtWW9Wb7^+U+vKk8#k{y1O1kbz`53P^A>C@t1QQD)eNRx^)Y z!pZ&!6Kv{};e1^M*&9?AUDoUbOy;xRYQ9*TuPQIm7YiKTT4c2s5Vo_^oEBj_rruaJ5C>-vjON zkw=LLm{QEq>}M-K;O^R1%z6mRh6`2E;~s z2APcc_Gdw+i-U9o=ckpFCl;kL1SDqWmFW4ohA5O7>lvKY4|fA9vGsIu46*P}{`2GG z<9ark1^f5UU$|j|z;qKAnG^<9iS>-Uyu2*D@}-OhY?_^n1wseX4`k@n{IQo}Q&!_) Y@E31sb&WaE12l-i)78&qol`;+0P%f8m;e9( literal 0 HcmV?d00001 diff --git a/doc/wb_img/webbook.png b/doc/wb_img/webbook.png new file mode 100755 index 0000000000000000000000000000000000000000..db94ca60f5b15606ae9eed23cab4a6164c86f9ac GIT binary patch literal 608 zcmV-m0-ybfP)N2bPDNB8 zb~7$8%`aC*0005sNklvz51 zzy3Qv=krH>IJ^z!X%xC#s(Q70=ooD_PxW^D+}TTQ;$bd^=fuL-hxe%q($?$8aX_4s ztSmoUL*An!%!~yZ1B4&v5#Vn3G6~b40l}J5k{oroNL76`iMfE6IGxJo4AA&Ngn;l< z3G7%Ypco53W95KL?D6>C#EO9Qjbyb$0Wg*VPP}tD1Cb1s02qPlN6@0UZ%JX_62%@6 z#N{_Cjg2`VK%ZFhvqgWY~#Ga-K+-e#VN7OJ?jBhn2D8 u#Ox_F>BBHHr`vzInF-Rn&P}1YEA#{CJ}7pa31(IR0000N2bPDNB8 zb~7$8%`aC*0005wNklZ5Jb&kd<$Q~XYds`0=|LCksK0Pgal5=a75;e z$Pp2ah!);TZ&f>m0Km!aMj~~r) z`Sj!bY`3q?YV|xAr&VaTJ2cbjZST^2e%~w>552weP9D~Lc#bb@ovbe%kT#p$od?7z z!S?&N?jq|ngqd@W&H=)X^8|Q({df_kZv%ogr6f4&@Q}mdy$#F*e8gt6Z_faY9YhES zJC)!bqXd+`u+vu!xWum4FRiZxq-~PbH3h(!3K+5GaXKOxDgiKoYKPOwdXsg^EAXv@^u;#LLuV_0_r(?{0Ni9+Um_IZn(APiH}++}SFsxbGmCQT1hRFdqj z`r@}%LrFlYN{q7e_7sxMY~Q3u`Q4CNI}kyzF&*uGGHk~rI5P>;PG8BmWM;kCtn{57 y^F*PGJ`BIiXq^A$kai5SmvVkr{`&9eQtlJ&r^C_Tk|00;0000