#include "honlinemonclientxml.h"
#include "honlinemonclientmain.h"
#include "honlinemonclientmainwin.h"
#include "honlinemonclientdet.h"
#include "honlinemonclienttabwin.h"
#include "honlinemonclientsimplewin.h"
#include "honlinemonclienttab.h"
#include "honlinemonclientcanvas.h"
#include "honlinemonclienthist.h"
#include <cstdlib>
ClassImp(HOnlineMonClientXML);
HOnlineMonClientXML::HOnlineMonClientXML() {
}
HOnlineMonClientXML::~HOnlineMonClientXML() {
}
Bool_t HOnlineMonClientXML::ParseXMLFile(TString filename, HOnlineMonClientMain* pclientmain) {
clientmain = pclientmain;
TDOMParser *parser = 0;
TXMLDocument *xmldoc = 0;
TXMLNode *rootnode = 0;
TXMLNode *node = 0;
Int_t parsecode = -1;
currentDetector = 0;
parser = new TDOMParser();
parsecode = parser->ParseFile(filename);
if (parsecode != 0) {
Printf("XML ERROR: Parsing of XML file '%s' failed. Parse code error %d .", filename.Data(), parsecode);
exit(1);
}
xmldoc = parser->GetXMLDocument();
if (xmldoc == 0) {
Printf("XML ERROR: parsing of xml file '%s' failed.", filename.Data());
exit(1);
}
rootnode = xmldoc->GetRootNode();
if ( TString(rootnode->GetNodeName()) != "client") {
Printf("XML ERROR: xml root node is not 'client'.");
exit(1);
}
node = rootnode->GetChildren();
while (node->HasNextNode()) {
node = node->GetNextNode();
if (node->GetNodeType() == TXMLNode::kXMLElementNode) {
if( TString(node->GetNodeName()) == "config") {
ParseConfigNode(node);
}
if( TString(node->GetNodeName()) == "MainWindow") {
ParseMainWindowNode(node, clientmain->clientmainwin);
}
if( TString(node->GetNodeName()) == "detector") {
HOnlineMonClientDet *detector = new HOnlineMonClientDet();
ParseDetectorNode(node, detector);
clientmain->listDetectors.Add(detector);
}
}
}
delete parser;
parser = 0;
return kTRUE;
}
void HOnlineMonClientXML::ParseHistogramNode(TXMLNode *node, HOnlineMonClientCanvas *canvas) {
HOnlineMonClientHist *histo = new HOnlineMonClientHist();
histo->SetGuiName(currentDetector->GetName());
TXMLNode *child = 0;
histo->SetActive(kFALSE);
if (!node->HasChildren()) {
Printf("XML ERROR: parsing histogram node of canvas '%s' failed.", canvas->GetName() );
exit(1);
}
child = node->GetChildren();
while (child->HasNextNode()) {
child = child->GetNextNode();
if (child->GetNodeType() == TXMLNode::kXMLElementNode) {
if( TString(child->GetNodeName()) == "name") {
TString histoname = child->GetText();
if(histoname.Contains(' ') || histoname.Contains('-')) {
Printf("XML ERROR: parsing histogram node of canvas '%s' failed. Invalid histogram name '%s'.", canvas->GetName(), histoname.Data() );
exit(1);
}
histo->SetRealName(histoname);
}
if( TString(child->GetNodeName()) == "type") {
TString value = child->GetText();
if (value == "single") {
histo->SetType("single");
} else {
TObjArray* ar = value.Tokenize(":");
TString p1 = ((TObjString*) ar->At(0))->GetString();
TString p2 = ((TObjString*) ar->At(1))->GetString();
TString p3 = ((TObjString*) ar->At(2))->GetString();
if ( (p1 == "array") && (p2.IsDigit() || (p2.CompareTo("-1")==0)) && (p3.IsDigit() || (p3.CompareTo("-1")==0)) ) {
histo->SetArrayIndexS(p2.Atoi());
histo->SetArrayIndexM(p3.Atoi());
delete ar;
} else {
Printf("XML ERROR: type of histogram '%s' in canvas '%s' is not valid. Must be 'single', or 'array:s:m' with s,m integer values.", histo->GetName(), canvas->GetName() );
Printf("found: type: '%s', index1: '%s', index2: '%s'", p1.Data(), p2.Data(), p3.Data());
delete ar;
exit(1);
}
}
}
if( TString(child->GetNodeName()) == "subpad") {
TString val = child->GetText();
if (!val.IsDigit()) {
Printf("XML ERROR: subpad number '%s' of histogram '%s' in canvas '%s' is not a valid number", val.Data(), histo->GetName(), canvas->GetName() );
exit(1);
}
if (canvas->IsSplitted()) {
histo->SetSubpadnumber(val.Atoi());
} else {
histo->SetSubpadnumber(0);
}
TString hname = currentDetector->GetName();
hname += "_";
hname += canvas->GetName();
hname += "_";
hname += histo->GetSubpadnumber();
hname += "_";
hname += histo->GetRealName();
histo->SetName(hname);
canvas->listHists.Add(histo);
}
}
}
}
void HOnlineMonClientXML::ParseCanvasNode(TXMLNode *node, HOnlineMonClientTabWin *window, HOnlineMonClientTab *montab) {
TXMLNode *child = 0;
HOnlineMonClientCanvas *canvas = new HOnlineMonClientCanvas();
if (!node->HasChildren()) {
Printf("XML ERROR: parsing canvas node of window '%s' failed.", window->GetName() );
exit(1);
}
child = node->GetChildren();
while (child->HasNextNode()) {
child = child->GetNextNode();
if (child->GetNodeType() == TXMLNode::kXMLElementNode) {
if( TString(child->GetNodeName()) == "name") {
TString canvasname = child->GetText();
if(!canvasname.IsAlnum()) {
Printf("XML ERROR: parsing canvas node of window '%s' failed. Invalid canvas name '%s'", window->GetName(), canvasname.Data() );
exit(1);
}
canvas->SetName(canvasname);
montab->listCanvases.Add(canvas);
}
if( TString(child->GetNodeName()) == "width") {
TString val = child->GetText();
if (!val.IsDigit()) {
Printf("XML ERROR: width '%s' of canvas '%s' in tab '%s' in window '%s' is not a valid number.", val.Data(), canvas->GetName(), montab->GetName(), window->GetName() );
exit(1);
}
canvas->SetWidth(val.Atoi());
}
if( TString(child->GetNodeName()) == "height") {
TString val = child->GetText();
if (!val.IsDigit()) {
Printf("XML ERROR: width '%s' of canvas '%s' in tab '%s' in window '%s' is not a valid number.", val.Data(), canvas->GetName(), montab->GetName(), window->GetName() );
exit(1);
}
canvas->SetHeight(val.Atoi());
}
if( TString(child->GetNodeName()) == "splitted") {
TString val = child->GetText();
val.ToLower();
if ( (val != "true") && (val != "false") ) {
Printf("XML ERROR: The value '%s' of canvas '%s' in tab '%s' in window '%s' is not valid.", val.Data(), canvas->GetName(), montab->GetName(), window->GetName() );
Printf("Must be 'true' or 'false'.");
exit(1);
}
canvas->SetSplitted((val == "true") ? kTRUE : kFALSE);
}
if( TString(child->GetNodeName()) == "nx") {
TString val = child->GetText();
if (!val.IsDigit()) {
Printf("XML ERROR: The nx split value '%s' of canvas '%s' in tab '%s' in window '%s' is not a valid number.", val.Data(), canvas->GetName(), montab->GetName(), window->GetName() );
exit(1);
}
canvas->SetNx( (canvas->IsSplitted()) ? val.Atoi() : 0 );
}
if( TString(child->GetNodeName()) == "ny") {
TString val = child->GetText();
if (!val.IsDigit()) {
Printf("XML ERROR: The ny split value '%s' of canvas '%s' in tab '%s' in window '%s' is not a valid number.", val.Data(), canvas->GetName(), montab->GetName(), window->GetName() );
exit(1);
}
canvas->SetNy( (canvas->IsSplitted()) ? val.Atoi() : 0 );
}
if( TString(child->GetNodeName()) == "histogram") {
ParseHistogramNode(child, canvas);
}
}
}
}
void HOnlineMonClientXML::ParseCanvasNode(TXMLNode *node, HOnlineMonClientSimpleWin *window) {
TXMLNode *child = 0;
HOnlineMonClientCanvas *canvas = new HOnlineMonClientCanvas();
if (!node->HasChildren()) {
Printf("XML ERROR: parsing canvas node of window '%s' failed.", window->GetName() );
exit(1);
}
child = node->GetChildren();
while (child->HasNextNode()) {
child = child->GetNextNode();
if (child->GetNodeType() == TXMLNode::kXMLElementNode) {
if( TString(child->GetNodeName()) == "name") {
TString canvasname = child->GetText();
if(!canvasname.IsAlnum()) {
Printf("XML ERROR: parsing canvas node of window '%s' failed. Invalid canvas name '%s'", window->GetName(), canvasname.Data() );
exit(1);
}
canvas->SetName(canvasname);
window->listCanvases.Add(canvas);
}
if( TString(child->GetNodeName()) == "title") {
canvas->SetTitle(child->GetText());
}
if( TString(child->GetNodeName()) == "width") {
TString val = child->GetText();
if (!val.IsDigit()) {
Printf("XML ERROR: width of canvas '%s' in window '%s' is not a valid number.", canvas->GetName(), window->GetName() );
exit(1);
}
canvas->SetWidth(val.Atoi());
}
if( TString(child->GetNodeName()) == "height") {
TString val = child->GetText();
if (!val.IsDigit()) {
Printf("XML ERROR: height of canvas '%s' in window '%s' is not a valid number.", canvas->GetName(), window->GetName() );
exit(1);
}
canvas->SetHeight(val.Atoi());
}
if( TString(child->GetNodeName()) == "splitted") {
TString val = child->GetText();
val.ToLower();
if ( (val != "true") && (val != "false") ) {
Printf("XML ERROR: The value '%s' of 'splitted' of canvas '%s' in window '%s' is not valid.", val.Data(), canvas->GetName(), window->GetName() );
Printf("Must be 'true' or 'false'.");
exit(1);
}
canvas->SetSplitted( (val == "true") ? kTRUE : kFALSE );
}
if( TString(child->GetNodeName()) == "nx") {
TString val = child->GetText();
if (!val.IsDigit()) {
Printf("XML ERROR: The nx split value '%s' of canvas '%s' in window '%s' is not a valid number.", val.Data(), canvas->GetName(), window->GetName() );
exit(1);
}
canvas->SetNx( (canvas->IsSplitted()) ? val.Atoi() : 0 );
}
if( TString(child->GetNodeName()) == "ny") {
TString val = child->GetText();
if (!val.IsDigit()) {
Printf("XML ERROR: The ny split value '%s' of canvas '%s' in window '%s' is not a valid number.", val.Data(), canvas->GetName(), window->GetName() );
exit(1);
}
canvas->SetNy( (canvas->IsSplitted()) ? val.Atoi() : 0 );
}
if( TString(child->GetNodeName()) == "histogram") {
ParseHistogramNode(child, canvas);
}
}
}
}
void HOnlineMonClientXML::ParseTabNode(TXMLNode *node, HOnlineMonClientTabWin *window) {
HOnlineMonClientTab *montab = new HOnlineMonClientTab();
TXMLNode *child = 0;
if (!node->HasChildren()) {
Printf("XML ERROR: parsing tab node of window '%s' failed.", window->GetName() );
exit(1);
}
child = node->GetChildren();
while (child->HasNextNode()) {
child = child->GetNextNode();
if (child->GetNodeType() == TXMLNode::kXMLElementNode) {
if( TString(child->GetNodeName()) == "name") {
TString tabname = child->GetText();
if(!tabname.IsAlnum()) {
Printf("XML ERROR: parsing tab node of window '%s' failed. Invalid tab name '%s'", window->GetName(), tabname.Data() );
exit(1);
}
montab->SetName(tabname);
window->listTabs.Add(montab);
}
if( TString(child->GetNodeName()) == "title") {
montab->SetTitle(child->GetText());
}
if( TString(child->GetNodeName()) == "canvas") {
ParseCanvasNode(child, window, montab);
}
}
}
}
void HOnlineMonClientXML::ParseWindowNode(TXMLNode *node, HOnlineMonClientDet *detector) {
Bool_t tabbed = kFALSE;
TString name = "";
TString title = "";
TXMLNode *child = 0;
if (!node->HasChildren()) {
Printf("XML ERROR: parsing window node of detector '%s' failed.", detector->GetName() );
exit(1);
}
child = node->GetChildren();
while (child->HasNextNode()) {
child = child->GetNextNode();
if (child->GetNodeType() == TXMLNode::kXMLElementNode) {
if( TString(child->GetNodeName()) == "name") {
TString windowname = child->GetText();
if (!windowname.IsAlnum()) {
Printf("XML ERROR: parsing window node of detector '%s' failed. Invalid window name '%s'", detector->GetName(), windowname.Data() );
exit(1);
}
name = windowname;
}
if( TString(child->GetNodeName()) == "title") {
title = child->GetText();
}
if( TString(child->GetNodeName()) == "tabbed") {
if (TString(child->GetText()) == "true") {
tabbed = kTRUE;
HOnlineMonClientTabWin *window = new HOnlineMonClientTabWin();
window->SetName(name);
window->SetTitle(title);
detector->listWindows.Add(window);
} else {
tabbed = kFALSE;
HOnlineMonClientSimpleWin *window = new HOnlineMonClientSimpleWin();
window->SetName(name);
window->SetTitle(title);
detector->listWindows.Add(window);
}
}
if( TString(child->GetNodeName()) == "canvas") {
if (tabbed) {
Printf("XML ERROR: xml file wrong, found tabbed=true and canvas directly under window.");
Printf("Add a tab tag or set tabbed to false.");
Printf("Window name: %s", name.Data() );
Printf("Detector name: %s", detector->GetName() );
exit(1);
}
ParseCanvasNode(child, (HOnlineMonClientSimpleWin*)detector->listWindows.FindObject(name));
}
if( TString(child->GetNodeName()) == "tab") {
ParseTabNode(child, (HOnlineMonClientTabWin*)detector->listWindows.FindObject(name));
}
}
}
}
void HOnlineMonClientXML::ParseDetectorNode(TXMLNode *node, HOnlineMonClientDet *detector) {
TXMLNode *child = 0;
currentDetector = detector;
if (!node->HasChildren()) {
Printf("XML ERROR: parsing detector node failed.");
exit(1);
}
child = node->GetChildren();
while (child->HasNextNode()) {
child = child->GetNextNode();
if (child->GetNodeType() == TXMLNode::kXMLElementNode) {
if( TString(child->GetNodeName()) == "name") {
TString detname = child->GetText();
if (!detname.IsAlnum()) {
Printf("XML ERROR: parsing detector node failed. Invalid detector name '%s'", detname.Data());
exit(1);
}
detector->SetName(detname);
}
if( TString(child->GetNodeName()) == "title") {
detector->SetTitle(child->GetText());
}
if( TString(child->GetNodeName()) == "window") {
ParseWindowNode(child, detector);
}
}
}
}
void HOnlineMonClientXML::ParseServerNode(TXMLNode *node) {
TXMLNode *child = 0;
if (!node->HasChildren()) {
Printf("XML ERROR: parsing server node failed.");
exit(1);
}
child = node->GetChildren();
while (child->HasNextNode()) {
child = child->GetNextNode();
if (child->GetNodeType() == TXMLNode::kXMLElementNode) {
if( TString(child->GetNodeName()) == "host") {
clientmain->SetServerhost(child->GetText());
}
if( TString(child->GetNodeName()) == "port") {
TString val = child->GetText();
if (!val.IsDigit()) {
Printf("XML ERROR: The server port is not a valid number.");
exit(1);
}
clientmain->SetServerport(val.Atoi());
}
}
}
}
void HOnlineMonClientXML::ParseConfigNode(TXMLNode *node) {
TXMLNode *child = 0;
if (!node->HasChildren()) {
Printf("XML ERROR: parsing config node failed.");
exit(1);
}
child = node->GetChildren();
while (child->HasNextNode()) {
child = child->GetNextNode();
if (child->GetNodeType() == TXMLNode::kXMLElementNode) {
if( TString(child->GetNodeName()) == "server") {
ParseServerNode(child);
}
}
}
}
void HOnlineMonClientXML::ParseMainWindowNode(TXMLNode *node, HOnlineMonClientMainWin *clientmainwin) {
TXMLNode *child = 0;
if (!node->HasChildren()) {
Printf("XML ERROR: parsing MainWindow node failed.");
exit(1);
}
child = node->GetChildren();
while (child->HasNextNode()) {
child = child->GetNextNode();
if (child->GetNodeType() == TXMLNode::kXMLElementNode) {
if( TString(child->GetNodeName()) == "name") {
TString windowname = child->GetText();
if (!windowname.IsAlnum()) {
Printf("XML ERROR: parsing MainWindow node failed. Invalid MainWindow name '%s'", windowname.Data());
exit(1);
}
clientmainwin->SetName(windowname);
}
if( TString(child->GetNodeName()) == "title") {
clientmainwin->SetTitle(child->GetText());
}
if( TString(child->GetNodeName()) == "width") {
TString val = child->GetText();
if (!val.IsDigit()) {
Printf("XML ERROR: width of MainWindow is not a valid number.");
exit(1);
}
clientmainwin->SetWidth(val.Atoi());
}
if( TString(child->GetNodeName()) == "height") {
TString val = child->GetText();
if (!val.IsDigit()) {
Printf("XML ERROR: height of MainWindow is not a valid number.");
exit(1);
}
clientmainwin->SetHeight(val.Atoi());
}
if( TString(child->GetNodeName()) == "snapshotpath") {
clientmainwin->SetSnapShotPath(child->GetText());
}
if( TString(child->GetNodeName()) == "snapshotpathonline") {
clientmainwin->fTextSnapshotPathOnline=child->GetText();
}
if( TString(child->GetNodeName()) == "autosaverate") {
TString val = child->GetText();
if (!val.IsDigit()) {
Printf("XML ERROR: autosaverate of MainWindow is not a valid number.");
exit(1);
}
clientmainwin->SetAutoSaveRate(val.Atoi());
HOnlineMonClientMain::SetAutoSaveInterval(val.Atoi());
}
if( TString(child->GetNodeName()) == "autosaverateonline") {
TString val = child->GetText();
if (!val.IsDigit()) {
Printf("XML ERROR: autosaverateonline of MainWindow is not a valid number.");
exit(1);
}
HOnlineMonClientMain::SetAutoSaveIntervalOnline(val.Atoi());
}
if( TString(child->GetNodeName()) == "openlist") {
TString val = child->GetText();
TObjArray* myarguments = val.Tokenize(",");
TIterator* myiter = myarguments->MakeIterator();
TObjString* stemp = 0;
while ((stemp = (TObjString*)myiter->Next()) != 0)
{
TString argument = stemp->GetString();
clientmainwin->listOpenDetectors.Add(new TObjString(argument.Data()));
}
myarguments->Delete();
delete myarguments;
delete myiter;
}
if( TString(child->GetNodeName()) == "reconnect") {
TString val = child->GetText();
if (!val.IsDigit()) {
Printf("XML ERROR: reconnect of MainWindow is not a valid number.");
exit(1);
}
clientmainwin->GetMainClient()->SetReconnect(val.Atoi());
}
}
}
}
honlinemonclientxml.cc:10 honlinemonclientxml.cc:11 honlinemonclientxml.cc:12 honlinemonclientxml.cc:13 honlinemonclientxml.cc:14 honlinemonclientxml.cc:15 honlinemonclientxml.cc:16 honlinemonclientxml.cc:17 honlinemonclientxml.cc:18 honlinemonclientxml.cc:19 honlinemonclientxml.cc:20 honlinemonclientxml.cc:21 honlinemonclientxml.cc:22 honlinemonclientxml.cc:23 honlinemonclientxml.cc:24 honlinemonclientxml.cc:25 honlinemonclientxml.cc:26 honlinemonclientxml.cc:27 honlinemonclientxml.cc:28 honlinemonclientxml.cc:29 honlinemonclientxml.cc:30 honlinemonclientxml.cc:31 honlinemonclientxml.cc:32 honlinemonclientxml.cc:33 honlinemonclientxml.cc:34 honlinemonclientxml.cc:35 honlinemonclientxml.cc:36 honlinemonclientxml.cc:37 honlinemonclientxml.cc:38 honlinemonclientxml.cc:39 honlinemonclientxml.cc:40 honlinemonclientxml.cc:41 honlinemonclientxml.cc:42 honlinemonclientxml.cc:43 honlinemonclientxml.cc:44 honlinemonclientxml.cc:45 honlinemonclientxml.cc:46 honlinemonclientxml.cc:47 honlinemonclientxml.cc:48 honlinemonclientxml.cc:49 honlinemonclientxml.cc:50 honlinemonclientxml.cc:51 honlinemonclientxml.cc:52 honlinemonclientxml.cc:53 honlinemonclientxml.cc:54 honlinemonclientxml.cc:55 honlinemonclientxml.cc:56 honlinemonclientxml.cc:57 honlinemonclientxml.cc:58 honlinemonclientxml.cc:59 honlinemonclientxml.cc:60 honlinemonclientxml.cc:61 honlinemonclientxml.cc:62 honlinemonclientxml.cc:63 honlinemonclientxml.cc:64 honlinemonclientxml.cc:65 honlinemonclientxml.cc:66 honlinemonclientxml.cc:67 honlinemonclientxml.cc:68 honlinemonclientxml.cc:69 honlinemonclientxml.cc:70 honlinemonclientxml.cc:71 honlinemonclientxml.cc:72 honlinemonclientxml.cc:73 honlinemonclientxml.cc:74 honlinemonclientxml.cc:75 honlinemonclientxml.cc:76 honlinemonclientxml.cc:77 honlinemonclientxml.cc:78 honlinemonclientxml.cc:79 honlinemonclientxml.cc:80 honlinemonclientxml.cc:81 honlinemonclientxml.cc:82 honlinemonclientxml.cc:83 honlinemonclientxml.cc:84 honlinemonclientxml.cc:85 honlinemonclientxml.cc:86 honlinemonclientxml.cc:87 honlinemonclientxml.cc:88 honlinemonclientxml.cc:89 honlinemonclientxml.cc:90 honlinemonclientxml.cc:91 honlinemonclientxml.cc:92 honlinemonclientxml.cc:93 honlinemonclientxml.cc:94 honlinemonclientxml.cc:95 honlinemonclientxml.cc:96 honlinemonclientxml.cc:97 honlinemonclientxml.cc:98 honlinemonclientxml.cc:99 honlinemonclientxml.cc:100 honlinemonclientxml.cc:101 honlinemonclientxml.cc:102 honlinemonclientxml.cc:103 honlinemonclientxml.cc:104 honlinemonclientxml.cc:105 honlinemonclientxml.cc:106 honlinemonclientxml.cc:107 honlinemonclientxml.cc:108 honlinemonclientxml.cc:109 honlinemonclientxml.cc:110 honlinemonclientxml.cc:111 honlinemonclientxml.cc:112 honlinemonclientxml.cc:113 honlinemonclientxml.cc:114 honlinemonclientxml.cc:115 honlinemonclientxml.cc:116 honlinemonclientxml.cc:117 honlinemonclientxml.cc:118 honlinemonclientxml.cc:119 honlinemonclientxml.cc:120 honlinemonclientxml.cc:121 honlinemonclientxml.cc:122 honlinemonclientxml.cc:123 honlinemonclientxml.cc:124 honlinemonclientxml.cc:125 honlinemonclientxml.cc:126 honlinemonclientxml.cc:127 honlinemonclientxml.cc:128 honlinemonclientxml.cc:129 honlinemonclientxml.cc:130 honlinemonclientxml.cc:131 honlinemonclientxml.cc:132 honlinemonclientxml.cc:133 honlinemonclientxml.cc:134 honlinemonclientxml.cc:135 honlinemonclientxml.cc:136 honlinemonclientxml.cc:137 honlinemonclientxml.cc:138 honlinemonclientxml.cc:139 honlinemonclientxml.cc:140 honlinemonclientxml.cc:141 honlinemonclientxml.cc:142 honlinemonclientxml.cc:143 honlinemonclientxml.cc:144 honlinemonclientxml.cc:145 honlinemonclientxml.cc:146 honlinemonclientxml.cc:147 honlinemonclientxml.cc:148 honlinemonclientxml.cc:149 honlinemonclientxml.cc:150 honlinemonclientxml.cc:151 honlinemonclientxml.cc:152 honlinemonclientxml.cc:153 honlinemonclientxml.cc:154 honlinemonclientxml.cc:155 honlinemonclientxml.cc:156 honlinemonclientxml.cc:157 honlinemonclientxml.cc:158 honlinemonclientxml.cc:159 honlinemonclientxml.cc:160 honlinemonclientxml.cc:161 honlinemonclientxml.cc:162 honlinemonclientxml.cc:163 honlinemonclientxml.cc:164 honlinemonclientxml.cc:165 honlinemonclientxml.cc:166 honlinemonclientxml.cc:167 honlinemonclientxml.cc:168 honlinemonclientxml.cc:169 honlinemonclientxml.cc:170 honlinemonclientxml.cc:171 honlinemonclientxml.cc:172 honlinemonclientxml.cc:173 honlinemonclientxml.cc:174 honlinemonclientxml.cc:175 honlinemonclientxml.cc:176 honlinemonclientxml.cc:177 honlinemonclientxml.cc:178 honlinemonclientxml.cc:179 honlinemonclientxml.cc:180 honlinemonclientxml.cc:181 honlinemonclientxml.cc:182 honlinemonclientxml.cc:183 honlinemonclientxml.cc:184 honlinemonclientxml.cc:185 honlinemonclientxml.cc:186 honlinemonclientxml.cc:187 honlinemonclientxml.cc:188 honlinemonclientxml.cc:189 honlinemonclientxml.cc:190 honlinemonclientxml.cc:191 honlinemonclientxml.cc:192 honlinemonclientxml.cc:193 honlinemonclientxml.cc:194 honlinemonclientxml.cc:195 honlinemonclientxml.cc:196 honlinemonclientxml.cc:197 honlinemonclientxml.cc:198 honlinemonclientxml.cc:199 honlinemonclientxml.cc:200 honlinemonclientxml.cc:201 honlinemonclientxml.cc:202 honlinemonclientxml.cc:203 honlinemonclientxml.cc:204 honlinemonclientxml.cc:205 honlinemonclientxml.cc:206 honlinemonclientxml.cc:207 honlinemonclientxml.cc:208 honlinemonclientxml.cc:209 honlinemonclientxml.cc:210 honlinemonclientxml.cc:211 honlinemonclientxml.cc:212 honlinemonclientxml.cc:213 honlinemonclientxml.cc:214 honlinemonclientxml.cc:215 honlinemonclientxml.cc:216 honlinemonclientxml.cc:217 honlinemonclientxml.cc:218 honlinemonclientxml.cc:219 honlinemonclientxml.cc:220 honlinemonclientxml.cc:221 honlinemonclientxml.cc:222 honlinemonclientxml.cc:223 honlinemonclientxml.cc:224 honlinemonclientxml.cc:225 honlinemonclientxml.cc:226 honlinemonclientxml.cc:227 honlinemonclientxml.cc:228 honlinemonclientxml.cc:229 honlinemonclientxml.cc:230 honlinemonclientxml.cc:231 honlinemonclientxml.cc:232 honlinemonclientxml.cc:233 honlinemonclientxml.cc:234 honlinemonclientxml.cc:235 honlinemonclientxml.cc:236 honlinemonclientxml.cc:237 honlinemonclientxml.cc:238 honlinemonclientxml.cc:239 honlinemonclientxml.cc:240 honlinemonclientxml.cc:241 honlinemonclientxml.cc:242 honlinemonclientxml.cc:243 honlinemonclientxml.cc:244 honlinemonclientxml.cc:245 honlinemonclientxml.cc:246 honlinemonclientxml.cc:247 honlinemonclientxml.cc:248 honlinemonclientxml.cc:249 honlinemonclientxml.cc:250 honlinemonclientxml.cc:251 honlinemonclientxml.cc:252 honlinemonclientxml.cc:253 honlinemonclientxml.cc:254 honlinemonclientxml.cc:255 honlinemonclientxml.cc:256 honlinemonclientxml.cc:257 honlinemonclientxml.cc:258 honlinemonclientxml.cc:259 honlinemonclientxml.cc:260 honlinemonclientxml.cc:261 honlinemonclientxml.cc:262 honlinemonclientxml.cc:263 honlinemonclientxml.cc:264 honlinemonclientxml.cc:265 honlinemonclientxml.cc:266 honlinemonclientxml.cc:267 honlinemonclientxml.cc:268 honlinemonclientxml.cc:269 honlinemonclientxml.cc:270 honlinemonclientxml.cc:271 honlinemonclientxml.cc:272 honlinemonclientxml.cc:273 honlinemonclientxml.cc:274 honlinemonclientxml.cc:275 honlinemonclientxml.cc:276 honlinemonclientxml.cc:277 honlinemonclientxml.cc:278 honlinemonclientxml.cc:279 honlinemonclientxml.cc:280 honlinemonclientxml.cc:281 honlinemonclientxml.cc:282 honlinemonclientxml.cc:283 honlinemonclientxml.cc:284 honlinemonclientxml.cc:285 honlinemonclientxml.cc:286 honlinemonclientxml.cc:287 honlinemonclientxml.cc:288 honlinemonclientxml.cc:289 honlinemonclientxml.cc:290 honlinemonclientxml.cc:291 honlinemonclientxml.cc:292 honlinemonclientxml.cc:293 honlinemonclientxml.cc:294 honlinemonclientxml.cc:295 honlinemonclientxml.cc:296 honlinemonclientxml.cc:297 honlinemonclientxml.cc:298 honlinemonclientxml.cc:299 honlinemonclientxml.cc:300 honlinemonclientxml.cc:301 honlinemonclientxml.cc:302 honlinemonclientxml.cc:303 honlinemonclientxml.cc:304 honlinemonclientxml.cc:305 honlinemonclientxml.cc:306 honlinemonclientxml.cc:307 honlinemonclientxml.cc:308 honlinemonclientxml.cc:309 honlinemonclientxml.cc:310 honlinemonclientxml.cc:311 honlinemonclientxml.cc:312 honlinemonclientxml.cc:313 honlinemonclientxml.cc:314 honlinemonclientxml.cc:315 honlinemonclientxml.cc:316 honlinemonclientxml.cc:317 honlinemonclientxml.cc:318 honlinemonclientxml.cc:319 honlinemonclientxml.cc:320 honlinemonclientxml.cc:321 honlinemonclientxml.cc:322 honlinemonclientxml.cc:323 honlinemonclientxml.cc:324 honlinemonclientxml.cc:325 honlinemonclientxml.cc:326 honlinemonclientxml.cc:327 honlinemonclientxml.cc:328 honlinemonclientxml.cc:329 honlinemonclientxml.cc:330 honlinemonclientxml.cc:331 honlinemonclientxml.cc:332 honlinemonclientxml.cc:333 honlinemonclientxml.cc:334 honlinemonclientxml.cc:335 honlinemonclientxml.cc:336 honlinemonclientxml.cc:337 honlinemonclientxml.cc:338 honlinemonclientxml.cc:339 honlinemonclientxml.cc:340 honlinemonclientxml.cc:341 honlinemonclientxml.cc:342 honlinemonclientxml.cc:343 honlinemonclientxml.cc:344 honlinemonclientxml.cc:345 honlinemonclientxml.cc:346 honlinemonclientxml.cc:347 honlinemonclientxml.cc:348 honlinemonclientxml.cc:349 honlinemonclientxml.cc:350 honlinemonclientxml.cc:351 honlinemonclientxml.cc:352 honlinemonclientxml.cc:353 honlinemonclientxml.cc:354 honlinemonclientxml.cc:355 honlinemonclientxml.cc:356 honlinemonclientxml.cc:357 honlinemonclientxml.cc:358 honlinemonclientxml.cc:359 honlinemonclientxml.cc:360 honlinemonclientxml.cc:361 honlinemonclientxml.cc:362 honlinemonclientxml.cc:363 honlinemonclientxml.cc:364 honlinemonclientxml.cc:365 honlinemonclientxml.cc:366 honlinemonclientxml.cc:367 honlinemonclientxml.cc:368 honlinemonclientxml.cc:369 honlinemonclientxml.cc:370 honlinemonclientxml.cc:371 honlinemonclientxml.cc:372 honlinemonclientxml.cc:373 honlinemonclientxml.cc:374 honlinemonclientxml.cc:375 honlinemonclientxml.cc:376 honlinemonclientxml.cc:377 honlinemonclientxml.cc:378 honlinemonclientxml.cc:379 honlinemonclientxml.cc:380 honlinemonclientxml.cc:381 honlinemonclientxml.cc:382 honlinemonclientxml.cc:383 honlinemonclientxml.cc:384 honlinemonclientxml.cc:385 honlinemonclientxml.cc:386 honlinemonclientxml.cc:387 honlinemonclientxml.cc:388 honlinemonclientxml.cc:389 honlinemonclientxml.cc:390 honlinemonclientxml.cc:391 honlinemonclientxml.cc:392 honlinemonclientxml.cc:393 honlinemonclientxml.cc:394 honlinemonclientxml.cc:395 honlinemonclientxml.cc:396 honlinemonclientxml.cc:397 honlinemonclientxml.cc:398 honlinemonclientxml.cc:399 honlinemonclientxml.cc:400 honlinemonclientxml.cc:401 honlinemonclientxml.cc:402 honlinemonclientxml.cc:403 honlinemonclientxml.cc:404 honlinemonclientxml.cc:405 honlinemonclientxml.cc:406 honlinemonclientxml.cc:407 honlinemonclientxml.cc:408 honlinemonclientxml.cc:409 honlinemonclientxml.cc:410 honlinemonclientxml.cc:411 honlinemonclientxml.cc:412 honlinemonclientxml.cc:413 honlinemonclientxml.cc:414 honlinemonclientxml.cc:415 honlinemonclientxml.cc:416 honlinemonclientxml.cc:417 honlinemonclientxml.cc:418 honlinemonclientxml.cc:419 honlinemonclientxml.cc:420 honlinemonclientxml.cc:421 honlinemonclientxml.cc:422 honlinemonclientxml.cc:423 honlinemonclientxml.cc:424 honlinemonclientxml.cc:425 honlinemonclientxml.cc:426 honlinemonclientxml.cc:427 honlinemonclientxml.cc:428 honlinemonclientxml.cc:429 honlinemonclientxml.cc:430 honlinemonclientxml.cc:431 honlinemonclientxml.cc:432 honlinemonclientxml.cc:433 honlinemonclientxml.cc:434 honlinemonclientxml.cc:435 honlinemonclientxml.cc:436 honlinemonclientxml.cc:437 honlinemonclientxml.cc:438 honlinemonclientxml.cc:439 honlinemonclientxml.cc:440 honlinemonclientxml.cc:441 honlinemonclientxml.cc:442 honlinemonclientxml.cc:443 honlinemonclientxml.cc:444 honlinemonclientxml.cc:445 honlinemonclientxml.cc:446 honlinemonclientxml.cc:447 honlinemonclientxml.cc:448 honlinemonclientxml.cc:449 honlinemonclientxml.cc:450 honlinemonclientxml.cc:451 honlinemonclientxml.cc:452 honlinemonclientxml.cc:453 honlinemonclientxml.cc:454 honlinemonclientxml.cc:455 honlinemonclientxml.cc:456 honlinemonclientxml.cc:457 honlinemonclientxml.cc:458 honlinemonclientxml.cc:459 honlinemonclientxml.cc:460 honlinemonclientxml.cc:461 honlinemonclientxml.cc:462 honlinemonclientxml.cc:463 honlinemonclientxml.cc:464 honlinemonclientxml.cc:465 honlinemonclientxml.cc:466 honlinemonclientxml.cc:467 honlinemonclientxml.cc:468 honlinemonclientxml.cc:469 honlinemonclientxml.cc:470 honlinemonclientxml.cc:471 honlinemonclientxml.cc:472 honlinemonclientxml.cc:473 honlinemonclientxml.cc:474 honlinemonclientxml.cc:475 honlinemonclientxml.cc:476 honlinemonclientxml.cc:477 honlinemonclientxml.cc:478 honlinemonclientxml.cc:479 honlinemonclientxml.cc:480 honlinemonclientxml.cc:481 honlinemonclientxml.cc:482 honlinemonclientxml.cc:483 honlinemonclientxml.cc:484 honlinemonclientxml.cc:485 honlinemonclientxml.cc:486 honlinemonclientxml.cc:487 honlinemonclientxml.cc:488 honlinemonclientxml.cc:489 honlinemonclientxml.cc:490 honlinemonclientxml.cc:491 honlinemonclientxml.cc:492 honlinemonclientxml.cc:493 honlinemonclientxml.cc:494 honlinemonclientxml.cc:495 honlinemonclientxml.cc:496 honlinemonclientxml.cc:497 honlinemonclientxml.cc:498 honlinemonclientxml.cc:499 honlinemonclientxml.cc:500 honlinemonclientxml.cc:501 honlinemonclientxml.cc:502 honlinemonclientxml.cc:503 honlinemonclientxml.cc:504 honlinemonclientxml.cc:505 honlinemonclientxml.cc:506 honlinemonclientxml.cc:507 honlinemonclientxml.cc:508 honlinemonclientxml.cc:509 honlinemonclientxml.cc:510 honlinemonclientxml.cc:511 honlinemonclientxml.cc:512 honlinemonclientxml.cc:513 honlinemonclientxml.cc:514 honlinemonclientxml.cc:515 honlinemonclientxml.cc:516 honlinemonclientxml.cc:517 honlinemonclientxml.cc:518 honlinemonclientxml.cc:519 honlinemonclientxml.cc:520 honlinemonclientxml.cc:521 honlinemonclientxml.cc:522 honlinemonclientxml.cc:523 honlinemonclientxml.cc:524 honlinemonclientxml.cc:525 honlinemonclientxml.cc:526 honlinemonclientxml.cc:527 honlinemonclientxml.cc:528 honlinemonclientxml.cc:529 honlinemonclientxml.cc:530 honlinemonclientxml.cc:531 honlinemonclientxml.cc:532 honlinemonclientxml.cc:533 honlinemonclientxml.cc:534 honlinemonclientxml.cc:535 honlinemonclientxml.cc:536 honlinemonclientxml.cc:537 honlinemonclientxml.cc:538 honlinemonclientxml.cc:539 honlinemonclientxml.cc:540 honlinemonclientxml.cc:541 honlinemonclientxml.cc:542 honlinemonclientxml.cc:543 honlinemonclientxml.cc:544 honlinemonclientxml.cc:545 honlinemonclientxml.cc:546 honlinemonclientxml.cc:547 honlinemonclientxml.cc:548 honlinemonclientxml.cc:549 honlinemonclientxml.cc:550 honlinemonclientxml.cc:551 honlinemonclientxml.cc:552 honlinemonclientxml.cc:553 honlinemonclientxml.cc:554 honlinemonclientxml.cc:555 honlinemonclientxml.cc:556 honlinemonclientxml.cc:557 honlinemonclientxml.cc:558 honlinemonclientxml.cc:559 honlinemonclientxml.cc:560 honlinemonclientxml.cc:561 honlinemonclientxml.cc:562 honlinemonclientxml.cc:563 honlinemonclientxml.cc:564 honlinemonclientxml.cc:565 honlinemonclientxml.cc:566 honlinemonclientxml.cc:567 honlinemonclientxml.cc:568 honlinemonclientxml.cc:569 honlinemonclientxml.cc:570 honlinemonclientxml.cc:571 honlinemonclientxml.cc:572 honlinemonclientxml.cc:573 honlinemonclientxml.cc:574 honlinemonclientxml.cc:575 honlinemonclientxml.cc:576 honlinemonclientxml.cc:577 honlinemonclientxml.cc:578 honlinemonclientxml.cc:579 honlinemonclientxml.cc:580 honlinemonclientxml.cc:581 honlinemonclientxml.cc:582 honlinemonclientxml.cc:583 honlinemonclientxml.cc:584 honlinemonclientxml.cc:585 honlinemonclientxml.cc:586 honlinemonclientxml.cc:587 honlinemonclientxml.cc:588 honlinemonclientxml.cc:589 honlinemonclientxml.cc:590 honlinemonclientxml.cc:591 honlinemonclientxml.cc:592 honlinemonclientxml.cc:593 honlinemonclientxml.cc:594 honlinemonclientxml.cc:595 honlinemonclientxml.cc:596 honlinemonclientxml.cc:597 honlinemonclientxml.cc:598 honlinemonclientxml.cc:599 honlinemonclientxml.cc:600 honlinemonclientxml.cc:601 honlinemonclientxml.cc:602 honlinemonclientxml.cc:603 honlinemonclientxml.cc:604 honlinemonclientxml.cc:605 honlinemonclientxml.cc:606 honlinemonclientxml.cc:607 honlinemonclientxml.cc:608 honlinemonclientxml.cc:609 honlinemonclientxml.cc:610 honlinemonclientxml.cc:611 honlinemonclientxml.cc:612 honlinemonclientxml.cc:613 honlinemonclientxml.cc:614 honlinemonclientxml.cc:615 honlinemonclientxml.cc:616 honlinemonclientxml.cc:617 honlinemonclientxml.cc:618 honlinemonclientxml.cc:619 honlinemonclientxml.cc:620 honlinemonclientxml.cc:621 honlinemonclientxml.cc:622 honlinemonclientxml.cc:623 honlinemonclientxml.cc:624 honlinemonclientxml.cc:625 honlinemonclientxml.cc:626 honlinemonclientxml.cc:627 honlinemonclientxml.cc:628 honlinemonclientxml.cc:629 honlinemonclientxml.cc:630 honlinemonclientxml.cc:631 honlinemonclientxml.cc:632 honlinemonclientxml.cc:633 honlinemonclientxml.cc:634 honlinemonclientxml.cc:635 honlinemonclientxml.cc:636 honlinemonclientxml.cc:637 honlinemonclientxml.cc:638 honlinemonclientxml.cc:639 honlinemonclientxml.cc:640 honlinemonclientxml.cc:641 honlinemonclientxml.cc:642 honlinemonclientxml.cc:643 honlinemonclientxml.cc:644 honlinemonclientxml.cc:645 honlinemonclientxml.cc:646 honlinemonclientxml.cc:647 honlinemonclientxml.cc:648 honlinemonclientxml.cc:649 honlinemonclientxml.cc:650 honlinemonclientxml.cc:651 honlinemonclientxml.cc:652 honlinemonclientxml.cc:653 honlinemonclientxml.cc:654 honlinemonclientxml.cc:655 honlinemonclientxml.cc:656 honlinemonclientxml.cc:657 honlinemonclientxml.cc:658 honlinemonclientxml.cc:659 honlinemonclientxml.cc:660 honlinemonclientxml.cc:661 honlinemonclientxml.cc:662 honlinemonclientxml.cc:663 honlinemonclientxml.cc:664 honlinemonclientxml.cc:665 honlinemonclientxml.cc:666 honlinemonclientxml.cc:667 honlinemonclientxml.cc:668 honlinemonclientxml.cc:669 honlinemonclientxml.cc:670 honlinemonclientxml.cc:671 honlinemonclientxml.cc:672 honlinemonclientxml.cc:673 honlinemonclientxml.cc:674 honlinemonclientxml.cc:675 honlinemonclientxml.cc:676 honlinemonclientxml.cc:677 honlinemonclientxml.cc:678 honlinemonclientxml.cc:679 honlinemonclientxml.cc:680 honlinemonclientxml.cc:681 honlinemonclientxml.cc:682 honlinemonclientxml.cc:683 honlinemonclientxml.cc:684 honlinemonclientxml.cc:685 honlinemonclientxml.cc:686 honlinemonclientxml.cc:687 honlinemonclientxml.cc:688 honlinemonclientxml.cc:689 honlinemonclientxml.cc:690 honlinemonclientxml.cc:691 honlinemonclientxml.cc:692 honlinemonclientxml.cc:693 honlinemonclientxml.cc:694 honlinemonclientxml.cc:695 honlinemonclientxml.cc:696 honlinemonclientxml.cc:697 honlinemonclientxml.cc:698 honlinemonclientxml.cc:699 honlinemonclientxml.cc:700 honlinemonclientxml.cc:701 honlinemonclientxml.cc:702 honlinemonclientxml.cc:703 honlinemonclientxml.cc:704 honlinemonclientxml.cc:705 honlinemonclientxml.cc:706 honlinemonclientxml.cc:707 honlinemonclientxml.cc:708 honlinemonclientxml.cc:709 honlinemonclientxml.cc:710 honlinemonclientxml.cc:711 honlinemonclientxml.cc:712 honlinemonclientxml.cc:713 honlinemonclientxml.cc:714 honlinemonclientxml.cc:715 honlinemonclientxml.cc:716 honlinemonclientxml.cc:717 honlinemonclientxml.cc:718