#include "honlinemonclientmain.h"
#include "honlinemonclientxml.h"
#include "honlinemonclientmainwin.h"
#include "honlinemonclientdet.h"
#include "honlinemonclienttabwin.h"
#include "honlinemonclientsimplewin.h"
#include "honlinemonclienttab.h"
#include "honlinemonclientcanvas.h"
#include "honlinemonclienthist.h"
#include "TClass.h"
#include "TObject.h"
#include "TPad.h"
#include "TTimeStamp.h"
#include "TObjString.h"
#include <cstdlib>
ClassImp(HOnlineMonClientMain);
Int_t HOnlineMonClientMain::AutoSaveInterval = -1;
Int_t HOnlineMonClientMain::AutoSaveIntervalOnline = -1;
time_t HOnlineMonClientMain::lastSaved = 0;
time_t HOnlineMonClientMain::lastSavedOnline = 0;
TThread* HOnlineMonClientMain::mainThread = NULL;
ULong64_t HOnlineMonClientMain::lastSumBytes = 0;
Int_t HOnlineMonClientMain::isMasterClient = -1;
HOnlineMonClientMain::HOnlineMonClientMain(TString filename) {
configfile = filename;
socket = 0;
updateComplete = kTRUE;
updateThread = 0;
UpdateInterval = 4;
serverhost = "";
serverport = 0;\
doReconnect = 1;
}
void HOnlineMonClientMain::Init(Bool_t sendCmdOnly, TString host, Int_t port, TString cmd) {
if (sendCmdOnly) {
Bool_t validcmd = kFALSE;
if ( Connect(host, port) ) {
TThread::Printf("connected to server '%s' on port '%d'.", host.Data(), port);
} else {
TThread::Printf("failed to connect to server '%s' on port '%d'.", host.Data(), port);
return;
}
if (cmd.CompareTo("list")==0) {
validcmd = kTRUE;
TThread::Printf("list of available histograms from server '%s' on port '%d'", host.Data(), port);
TThread::Printf("=========================================================");
TList* histolist = GetListOfHistograms();
if (histolist) {
for(Int_t i=0;i<histolist->LastIndex()+1;i++) {
TString tempname = ((TObjString*) histolist->At(i))->GetString();
TThread::Printf("%s\n",tempname.Data());
}
TThread::Printf("=========================================================");
histolist->Delete();
delete histolist;
histolist = 0;
} else {
TThread::Printf("ERROR: Received invalid list of histograms from server for command '%s'", cmd.Data());
return;
}
}
if (cmd.CompareTo("stop")==0) {
validcmd = kTRUE;
TThread::Printf("stop server '%s' on port '%d'", host.Data(), port);
TString answer = SendCmdToServer("CMD stop");
}
socket->Close();
delete socket;
socket = 0;
if (!validcmd) {
TThread::Printf("Error: Unknown command '%s'", cmd.Data());
return;
}
return;
}
TThread::Printf("Create MainClient");
clientmainwin = new HOnlineMonClientMainWin();
clientmainwin->SetMainClient(this);
CreateClientConfig(configfile);
mainThread = TThread::Self();
clientmainwin->CreateMainWin(this);
if ( Connect(serverhost, serverport) ) {
TThread::Printf("connected to server '%s' on port '%d'.", serverhost.Data(), serverport);
} else {
TThread::Printf("failed to connect to server '%s' on port '%d'.", serverhost.Data(), serverport);
exit(1);
}
TString master = SendCmdToServer("CMD ismaster");
if(master == "yes") {
SetIsMasterClient(kTRUE);
TThread::Printf("Running as Master client");
} else {
TThread::Printf("Running as Slave client");
}
if (!updateThread) {
TThread::Printf("start Update");
updateThread = new TThread("updateThread", ( void(*) (void*) )&ThreadUpdateHists, (void*) this);
updateThread->Run();
TThread::Ps();
}
mainThread->Lock();
TThread::Printf("Create Detetctor GUIs");
for (Int_t i=0;i<listDetectors.LastIndex()+1;i++) {
TString detname = listDetectors.At(i)->GetName();
HOnlineMonClientDet *det = (HOnlineMonClientDet*) listDetectors.At(i);
TGCheckButton *checkbutton = (TGCheckButton *)clientmainwin->listControlbuttons.FindObject(detname);
if(checkbutton->IsOn()){
CreateDetGui(det);
}
}
mainThread->UnLock();
TThread::Printf("Before Loop");
lastSaved = time(NULL);
lastSavedOnline = time(NULL);
while(kTRUE) {
mainThread->Lock();
gSystem->ProcessEvents();
for (Int_t i=0;i<listPads.LastIndex()+1;i++) {
if (listPads.At(i)->IsA() == TCanvas::Class()) {
TCanvas* cnv = (TCanvas*) listPads.At(i);
cnv->cd();
HOnlineMonClientHist* hist = (HOnlineMonClientHist*) listHists.FindObject(pad2hist[cnv->GetName()]);
if (hist&&hist->IsActive() && hist->histo) {
if (cnv->IsModified()) {
cnv->Update();
}
}
} else {
TPad* subpad = (TPad*) listPads.At(i);
subpad->cd();
HOnlineMonClientHist* hist = (HOnlineMonClientHist*) listHists.FindObject(pad2hist[subpad->GetName()]);
if (hist&&hist->IsActive() && hist->histo) {
if (subpad->IsModified()) {
subpad->Update();
}
}
}
gSystem->ProcessEvents();
}
mainThread->UnLock();
TThread::Sleep(0,1000000*1);
}
}
void* HOnlineMonClientMain::ThreadUpdateHists(void* arg) {
HOnlineMonClientMain *clientmain = (HOnlineMonClientMain*) arg;
while(1) {
gSystem->Sleep(clientmain->UpdateInterval*1000);
mainThread->Lock();
if(clientmain->updateComplete) {
clientmain->updateComplete = kFALSE;
clientmain->UpdateHists();
clientmain->updateComplete = kTRUE;
}
if(AutoSaveInterval > 0){
time_t now = time(NULL);
if(now - lastSaved > AutoSaveInterval*60){
clientmain->HandleSnapshotSave();
lastSaved = time(NULL);
}
}
if(AutoSaveIntervalOnline > 0){
time_t now = time(NULL);
if(now - lastSavedOnline > AutoSaveIntervalOnline*60){
clientmain->HandleSnapshotSaveOnline();
lastSavedOnline = time(NULL);
}
}
mainThread->UnLock();
}
return 0;
}
void HOnlineMonClientMain::UpdateHists() {
TString filename = SendCmdToServer("CMD filename");
TString speed = SendCmdToServer("CMD speed");
filename = gSystem->BaseName(filename.Data());
ULong64_t totBytesRecieved = socket->GetSocketBytesRecv();
Float_t bytesPerSecond = (0.000001*(totBytesRecieved-lastSumBytes))/UpdateInterval;
lastSumBytes = totBytesRecieved;
clientmainwin->fTextFilename->SetText(filename.Data());
clientmainwin->fTextSpeed ->SetText(speed.Data());
clientmainwin->fDataRate ->SetText(Form("%10.4f Mb/s",bytesPerSecond));
for (Int_t i=0;i<listPads.LastIndex()+1;i++) {
if (listPads.At(i)->IsA() == TCanvas::Class()) {
TCanvas* cnv = (TCanvas*) listPads.At(i);
if(cnv == 0) TThread::Printf("UpdateHists() : canvas == 0");
cnv->cd();
HOnlineMonClientHist* hist = (HOnlineMonClientHist*) listHists.FindObject(pad2hist[cnv->GetName()]);
if (hist&&hist->IsActive() && hist->histo) {
if (!UpdateHist(hist)) {
TThread::Printf("ERROR: Update of histogram '%s' failed.", hist->GetName());
}
}
} else {
TPad* subpad = (TPad*) listPads.At(i);
if(subpad == 0) TThread::Printf("UpdateHists() : subpad == 0");
subpad->cd();
HOnlineMonClientHist* hist = (HOnlineMonClientHist*) listHists.FindObject(pad2hist[subpad->GetName()]);
if (hist&&hist->IsActive() && hist->histo) {
if (!UpdateHist(hist)) {
TThread::Printf("ERROR: Update of histogram '%s' failed.", hist->GetName());
}
}
}
}
}
void HOnlineMonClientMain::CreateClientConfig(TString xmlfile) {
HOnlineMonClientXML* xmlparser = new HOnlineMonClientXML();
Bool_t r = xmlparser->ParseXMLFile(xmlfile, this);
if (!r) {
TThread::Printf("Error: could not parse xml file.");
delete xmlparser;
xmlparser = 0;
exit(1);
}
delete xmlparser;
}
void HOnlineMonClientMain::CreateDetGui(HOnlineMonClientDet *detector) {
mainThread->Lock();
detector->CreateDet(this);
mainThread->UnLock();
}
void HOnlineMonClientMain::DestroyDetGui(HOnlineMonClientDet *detector) {
mainThread->Lock();
detector->DestroyDet(this);
mainThread->UnLock();
}
void HOnlineMonClientMain::DestroySingleWindow(HOnlineMonClientSimpleWin *window) {
HOnlineMonClientDet *detector = (HOnlineMonClientDet *) listDetectors.FindObject(window->detectorname);
if(detector) {
TGCheckButton *button = 0;
button = (TGCheckButton*) clientmainwin->listControlbuttons.FindObject(window->detectorname);
if(button){
button->SetEnabled(kFALSE);
DestroyDetGui(detector);
button->SetEnabled(kTRUE);
button->SetOn(kFALSE);
}
}
else { TThread::Printf("Error : DestroySingleWindow () retrieved NULL pointer for detector %s .",window->detectorname.Data());}
}
void HOnlineMonClientMain::DestroySingleWindow(HOnlineMonClientTabWin *window) {
HOnlineMonClientDet *detector = (HOnlineMonClientDet *) listDetectors.FindObject(window->detectorname);
if(detector) {
TGCheckButton *button = (TGCheckButton*) clientmainwin->listControlbuttons.FindObject(window->detectorname);
if(button){
button->SetEnabled(kFALSE);
DestroyDetGui(detector);
button->SetEnabled(kTRUE);
button->SetOn(kFALSE);
}
}
else { TThread::Printf("Error : DestroySingleWindow () retrieved NULL pointer for detector %s .",window->detectorname.Data());}
}
void HOnlineMonClientMain::HandleRefreshRateChange() {
SetUpdateInterval(clientmainwin->numberEntryRefreshRate->GetNumberEntry()->GetIntNumber());
}
void HOnlineMonClientMain::HandleAutoSaveRateChange() {
SetAutoSaveInterval(clientmainwin->numberEntryAutoSaveRate->GetNumberEntry()->GetIntNumber());
}
void HOnlineMonClientMain::HandleSendStopServer(){
TString returnval = SendCmdToServer("CMD stop");
TThread::Printf("server responded on command stop = %s !", returnval.Data());
if(returnval != "IGNORED"){
TThread::Printf("Close Monitor application !");
HandleMainWindowClose();
}
if(returnval == "IGNORED"){
Int_t retval = 0;
new TGMsgBox(gClient->GetRoot(), clientmainwin->GetMainWindow(),
"ERROR MSG", "YOU ARE NOT RUNNING AS MASTER AND CANNOT STOP THE SERVER!"
,kMBIconExclamation,kMBCancel,&retval);
}
}
void HOnlineMonClientMain::HandleSendResetHists(){
TString returnval = SendCmdToServer("CMD resetall");
TThread::Printf("server responded on command resetall = %s !", returnval.Data());
if(returnval == "IGNORED"){
Int_t retval = 0;
new TGMsgBox(gClient->GetRoot(), clientmainwin->GetMainWindow(),
"ERROR MSG", "YOU ARE NOT RUNNING AS MASTER AND CANNOT RESET HISTOGRAMS!"
,kMBIconExclamation,kMBCancel,&retval);
}
}
void HOnlineMonClientMain::HandleConnectionError()
{
TThread::Printf("server responded connection Error!" );
Int_t retval = -1;
TGMsgBox* box = NULL;
if(doReconnect == 1){
box = new TGMsgBox(gClient->GetRoot(), clientmainwin->GetMainWindow(),
"ERROR MSG", "CONNECTION TO SERVER LOST! \n PRESS YES TO EXIT OR NO TO WAIT FOR RECONNECT!"
,kMBIconStop,kMBYes|kMBNo ,&retval);
}
if(doReconnect == 0) {
HandleMainWindowClose();
return;
}
while ( ReConnect(serverhost,serverport) == kFALSE ){
gSystem->ProcessEvents();
TThread::Sleep(1);
gSystem->ProcessEvents();
TThread::Sleep(1);
TThread::Printf("Try to reconnect!" );
}
if( IsMasterClient() ) {
TString message = SendCmdToServer("CMD setmaster");
if(message == "ok") {
TThread::Printf("Running as Master client");
} else {
TThread::Printf("Running as Slave client");
}
}
TThread::Printf("Succesfully reconnected to server %s , port %i!",serverhost.Data(),serverport);
if(doReconnect == 1 && box && retval == -1 && retval != kMBClose){
box->CloseWindow();
}
if(doReconnect == 1 && retval == kMBYes) {
HandleMainWindowClose();
}
}
void HOnlineMonClientMain::HandleTryClose()
{
Int_t retval = 0;
new TGMsgBox(gClient->GetRoot(), clientmainwin->GetMainWindow(),
"ERROR MSG", "CANNOT CLOSE NOW, STILL A MESSAGE BOX OPEN!"
,kMBIconExclamation,kMBCancel,&retval);
HandleConnectionError();
}
void HOnlineMonClientMain::HandleSnapshotSave() {
if (listPads.LastIndex() == -1) return;
Bool_t doQuit = kFALSE;
mainThread->Lock();
map <TString, Bool_t> printedCanvases;
UInt_t year = 0;
UInt_t month = 0;
UInt_t day = 0;
UInt_t hour = 0;
UInt_t min = 0;
UInt_t sec = 0;
TTimeStamp* timestamp = new TTimeStamp();
timestamp->GetDate(kFALSE, 0, &year, &month, &day);
timestamp->GetTime(kFALSE, 0, &hour, &min, &sec);
delete timestamp;
TString path = clientmainwin->fTextSnapshotPath->GetText();
TString currentRun = clientmainwin->fTextFilename->GetText();
if(path .Contains("ERROR")) doQuit = kTRUE;
if(currentRun.Contains("ERROR")) doQuit = kTRUE;
if(!doQuit)
{
if(path != ""){
path += "/";
path.ReplaceAll("//","/");
if(gSystem->AccessPathName(path.Data()) != 0 ){
TThread::Printf("HandleSnapshotSave() : Path = %s not found! Will use currentdirectory.",path.Data());
path = "";
}
}
TString currentRun = clientmainwin->fTextFilename->GetText();
TString filename = "";
filename.Form("%s_%d-%02d-%02d_%02d%02d%02d.ps", currentRun.Data(), year, month, day, hour, min, sec);
TString pdf = filename;
pdf.ReplaceAll(".ps",".pdf");
TString input = path + filename;
TString output = path + pdf;
TPad* subpad = (TPad*) listPads.At(0);
subpad->GetCanvas()->Print(filename + TString("["));
for (Int_t i=0;i<listPads.LastIndex()+1;i++) {
TPad* subpad = (TPad*) listPads.At(i);
TCanvas* cnv = subpad->GetCanvas();
if (!printedCanvases[cnv->GetName()]) {
cnv->Print(filename);
printedCanvases[cnv->GetName()] = kTRUE;
cnv->SetBatch(kFALSE);
cnv->Modified();
}
}
subpad->GetCanvas()->Print(filename + TString("]"));
subpad->GetCanvas()->SetBatch(kFALSE);
subpad->GetCanvas()->Modified();
if (gSystem->AccessPathName(filename.Data()) == 0 ){
gSystem->Exec(Form("ps2pdf %s %s",filename.Data(),pdf.Data()));
if (gSystem->AccessPathName(pdf.Data()) == 0 ){
gSystem->Exec(Form("rm -f %s",filename.Data()));
if(path != "") gSystem->Exec(Form("mv %s %s/",pdf.Data(),path.Data()));
TThread::Printf("HandleSnapshotSave() : Snapshot File has been saved in %s",Form("%s%s",path.Data(),pdf.Data()));
} else {
TThread::Printf("HandleSnapshotSave() : Could not convert ps file!");
}
}
lastSaved = time(NULL);
TThread::Printf("SnapShot finished!");
} else {
TThread::Printf("HandleSnapshotSave() : Could not convert ps file because of lost connection to server! Will QUIT! BYE ...");
mainThread->UnLock();
HandleMainWindowClose();
}
if(!doQuit) mainThread->UnLock();
}
void HOnlineMonClientMain::HandleSnapshotSaveOnline() {
if (listPads.LastIndex() == -1) return;
mainThread->Lock();
map <TString, Bool_t> printedCanvases;
TString path = clientmainwin->fTextSnapshotPathOnline;
if(path != ""){
path += "/";
path.ReplaceAll("//","/");
if(gSystem->AccessPathName(path.Data()) != 0 ){
TThread::Printf("HandleSnapshotSave() : Path = %s not found! Will use currentdirectory.",path.Data());
path = "";
}
}
for (Int_t i=0;i<listPads.LastIndex()+1;i++) {
TPad* subpad = (TPad*) listPads.At(i);
TCanvas* cnv = subpad->GetCanvas();
if (!printedCanvases[cnv->GetName()]) {
cnv->SaveAs(Form("%s%s.png",path.Data(),cnv->GetName()));
printedCanvases[cnv->GetName()] = kTRUE;
}
}
lastSavedOnline = time(NULL);
TThread::Printf("SnapShot finished!");
mainThread->UnLock();
}
void HOnlineMonClientMain::HandleMainWindowClose() {
mainThread->Lock();
for(Int_t i=0;i<listDetectors.LastIndex()+1;i++) {
HOnlineMonClientDet* detector = (HOnlineMonClientDet*) listDetectors.At(i);
if (detector->IsActive()) {
detector->DestroyDet(this);
}
}
listDetectors.Delete();
listHists.Delete();
listPads.Delete();
TThread::Delete(updateThread);
delete updateThread;
socket->Close();
delete socket;
mainThread->UnLock();
gApplication->Terminate();
}
HOnlineMonClientMain::~HOnlineMonClientMain() {
mainThread->Lock();
for(Int_t i=0;i<listDetectors.LastIndex()+1;i++) {
HOnlineMonClientDet* detector = (HOnlineMonClientDet*) listDetectors.At(i);
if (detector->IsActive()) {
detector->DestroyDet(this);
}
}
listDetectors.Delete();
listHists.Delete();
listPads.Delete();
TThread::Delete(updateThread);
delete updateThread;
if (socket) {
socket->Close();
delete socket;
socket = 0;
}
mainThread->UnLock();
}
void HOnlineMonClientMain::HandleControlbuttonClick(char *detectorname) {
TGCheckButton *button = (TGCheckButton*) clientmainwin->listControlbuttons.FindObject(detectorname);
Bool_t buttonOn = button->IsOn();
if (buttonOn) {
button->SetEnabled(kFALSE);
HOnlineMonClientDet *det = (HOnlineMonClientDet*) listDetectors.FindObject(detectorname);
CreateDetGui(det);
button->SetEnabled(kTRUE);
} else {
button->SetEnabled(kFALSE);
HOnlineMonClientDet *det = (HOnlineMonClientDet*) listDetectors.FindObject(detectorname);
DestroyDetGui(det);
button->SetEnabled(kTRUE);
}
}
void HOnlineMonClientMain::SetUpdateInterval(Int_t msec) {
UpdateInterval = msec;
}
void HOnlineMonClientMain::HandleSingleWindowClose(char *windowname, char* detectorname) {
mainThread->Lock();
HOnlineMonClientDet *det = (HOnlineMonClientDet*) listDetectors.FindObject(detectorname);
if (det->listWindows.FindObject(windowname)->IsA() == HOnlineMonClientTabWin::Class()) {
HOnlineMonClientTabWin *win = (HOnlineMonClientTabWin*) det->listWindows.FindObject(windowname);
DestroySingleWindow(win);
} else {
HOnlineMonClientSimpleWin *win = (HOnlineMonClientSimpleWin*) det->listWindows.FindObject(windowname);
DestroySingleWindow(win);
}
mainThread->UnLock();
}
Bool_t HOnlineMonClientMain::Connect(TString host, Int_t port) {
socket = new TSocket(host, port);
if (socket->IsValid()) {
return kTRUE;
}
return kFALSE;
}
Bool_t HOnlineMonClientMain::ReConnect(TString host, Int_t port) {
if (socket) {
socket->Close();
delete socket;
socket = 0;
}
lastSumBytes = 0 ;
socket = new TSocket(host, port);
if (socket->IsValid()) {
return kTRUE;
}
return kFALSE;
}
Bool_t HOnlineMonClientMain::UpdateHist(HOnlineMonClientHist *hist) {
HOnlineMonHistAddon* newhisto = GetHist(hist->GetRealName());
if (newhisto == 0) { return kFALSE; }
UInt_t year = 0;
UInt_t month = 0;
UInt_t day = 0;
UInt_t hour = 0;
UInt_t min = 0;
UInt_t sec = 0;
TString update_on;
TTimeStamp* timestamp = new TTimeStamp();
timestamp->GetDate(kFALSE, 0, &year, &month, &day);
timestamp->GetTime(kFALSE, 0, &hour, &min, &sec);
delete timestamp;
timestamp = 0;
update_on.Form(" %d.%d.%d %d:%d:%d", day, month, year, hour, min, sec);
if (hist->histo->IsA() == HOnlineMonHist::Class()) {
HOnlineMonHist* h = (HOnlineMonHist*) hist->histo;
h->getP()->SetTitle(newhisto->getP()->GetTitle() + update_on);
h->getP()->Reset();
h->getP()->Add(newhisto->getP());
delete (HOnlineMonHist*) newhisto;
h->draw();
return kTRUE;
}
if (hist->histo->IsA() == HOnlineMonStack::Class()) {
HOnlineMonStack* h = (HOnlineMonStack*) hist->histo;
h->reset(100,0);
h->add(newhisto);
h->addTimeStamp(update_on);
delete (HOnlineMonStack*) newhisto;
h->draw();
return kTRUE;
}
if (hist->histo->IsA() == HOnlineMonHist2::Class()) {
HOnlineMonHist2* h = (HOnlineMonHist2*) hist->histo;
h->getP()->SetTitle(newhisto->getP()->GetTitle() + update_on);
h->getP()->Reset();
h->getP()->Add(newhisto->getP());
delete (HOnlineMonHist2*) newhisto;
h->draw();
return kTRUE;
}
if (hist->histo->IsA() == HOnlineTrendHist::Class()) {
HOnlineTrendHist* h = (HOnlineTrendHist*) hist->histo;
h->getP()->SetTitle(newhisto->getP()->GetTitle() + update_on);
h->getP()->Reset();
h->getP()->Add(newhisto->getP());
delete (HOnlineTrendHist*) newhisto;
h->draw();
return kTRUE;
}
if (hist->histo->IsA() == HOnlineHistArray::Class()) {
HOnlineHistArray* h = (HOnlineHistArray*) hist->histo;
h->reset(0,0);
h->add(newhisto);
Int_t s = hist->GetArrayIndexS();
Int_t m = hist->GetArrayIndexM();
Int_t i;
Int_t j;
h->getDim(&i, &j);
if ( (s != -1) || (m != -1) ) {
if( (s < i) || (m < j) ) {
h->getP(s,m)->SetTitle(newhisto->getP(s,m)->GetTitle() + update_on);
h->getP(s,m)->Draw();
} else {
TThread::Printf("Histogram ERROR: histogram array HOnlineHistArray '%s', index s='%d' or m='%d' out of bound. Dimension of the array is ('%d','%d').", hist->GetName(), s, m, i, j);
exit(1);
}
} else {
h->getP(0,i*j)->SetTitle(newhisto->getP(0,i*j)->GetTitle() + update_on);
h->draw();
}
delete (HOnlineHistArray*) newhisto;
return kTRUE;
}
if (hist->histo->IsA() == HOnlineHistArray2::Class()) {
HOnlineHistArray2* h = (HOnlineHistArray2*) hist->histo;
h->reset(0,0);
h->add(newhisto);
Int_t s = hist->GetArrayIndexS();
Int_t m = hist->GetArrayIndexM();
Int_t i;
Int_t j;
h->getDim(&i, &j);
if ( (s != -1) || (m != -1) ) {
if( (s < i) || (m < j) ) {
h->getP(s,m)->SetTitle(newhisto->getP(s,m)->GetTitle() + update_on);
h->getP(s,m)->Draw();
} else {
TThread::Printf("Histogram ERROR: histogram array HOnlineHistArray2 '%s', index s='%d' or m='%d' out of bound. Dimension of the array is ('%d','%d').", hist->GetName(), s, m, i, j);
exit(1);
}
} else {
h->getP(0,i*j)->SetTitle(newhisto->getP(0,i*j)->GetTitle() + update_on);
h->draw();
}
delete (HOnlineHistArray2*) newhisto;
return kTRUE;
}
if (hist->histo->IsA() == HOnlineTrendArray::Class()) {
HOnlineTrendArray* h = (HOnlineTrendArray*) hist->histo;
h->reset(0,0);
h->add(newhisto);
Int_t s = hist->GetArrayIndexS();
Int_t m = hist->GetArrayIndexM();
Int_t i;
Int_t j;
h->getDim(&i, &j);
if ( (s != -1) || (m != -1) ) {
if( (s < i) || (m < j) ) {
h->getP(s,m)->SetTitle(newhisto->getP(s,m)->GetTitle() + update_on);
h->getP(s,m)->Draw();
} else {
TThread::Printf("Histogram ERROR: histogram array HOnlineTrendArray '%s', index s='%d' or m='%d' out of bound. Dimension of the array is ('%d','%d').", hist->GetName(), s, m, i, j);
exit(1);
}
} else {
h->getP(0,i*j)->SetTitle(newhisto->getP(0,i*j)->GetTitle() + update_on);
h->draw();
}
delete (HOnlineTrendArray*) newhisto;
return kTRUE;
}
TThread::Printf("Histogram ERROR: histogram '%s' is of unknown type", hist->histo->GetName());
return kFALSE;
}
TString HOnlineMonClientMain::SendCmdToServer(TString cmd) {
if (!socket->IsValid()) {
TString s;
s.Form("ERROR: Socket invalid");
HandleConnectionError();
return s;
}
TMessage* recvmess = 0;
TMessage sendmess(kMESS_STRING);
sendmess.WriteTString(cmd);
Int_t scode = socket->Send(sendmess);
if (scode <= 0) {
TString s;
s.Form("socket sent code %d for command '%s'.", scode, cmd.Data());
return s;
}
Int_t rcode = socket->Recv(recvmess);
if (rcode <= 0) {
TString s;
s.Form("socket received code %d for command %s", rcode, cmd.Data());
delete recvmess;
return s;
}
if (recvmess->What() == kMESS_STRING) {
TString str;
recvmess->ReadTString(str);
delete recvmess;
return str;
} else {
TString s;
s.Form("ERROR: type of message received from server for command '%s' is invalid.", cmd.Data());
delete recvmess;
return s;
}
delete recvmess;
TString errormsg = "ERROR: message received from server is invalid";
return errormsg;
}
TList* HOnlineMonClientMain::GetListOfHistograms() {
if (!socket->IsValid()) {
TThread::Printf("ERROR: Socket invalid");
return 0;
}
TString cmd = "CMD histlist";
TMessage* recvmess = 0;
TList* hlist = new TList();
TMessage sendmess(kMESS_STRING);
sendmess.WriteTString(cmd);
Int_t scode = socket->Send(sendmess);
if (scode <= 0) {
TThread::Printf("socket sent code %d for command '%s'.", scode, cmd.Data());
return 0;
}
Int_t rcode = socket->Recv(recvmess);
if (rcode <= 0) {
TThread::Printf("socket received code %d for command %s", rcode, cmd.Data());
delete recvmess;
return 0;
}
if (recvmess->What() == kMESS_STRING) {
TString str;
recvmess->ReadTString(str);
TThread::Printf("message received from server for command '%s': %s", cmd.Data(), str.Data());
delete recvmess;
return 0;
} else {
if (recvmess->What() == kMESS_OBJECT) {
if ( (hlist = (TList*) recvmess->ReadObjectAny(TList::Class())) == 0) {
TThread::Printf("ERROR: Received invalid data for command '%s' from server.", cmd.Data());
delete recvmess;
return 0;
}
} else {
TThread::Printf("ERROR: type of message received from server for command '%s' is invalid.", cmd.Data());
delete recvmess;
return 0;
}
}
delete recvmess;
return hlist;
}
HOnlineMonHistAddon* HOnlineMonClientMain::GetHist(TString histoname) {
if (!socket->IsValid()) {
TThread::Printf("ERROR: Socket invalid");
return 0;
}
TMessage* recvmess = 0;
HOnlineMonHistAddon* newhist = 0;
TMessage sendmess(kMESS_STRING);
sendmess.WriteTString(histoname);
Int_t scode = socket->Send(sendmess);
if (scode <= 0) {
TThread::Printf("socket sent code %d histo %s", scode, histoname.Data());
return 0;
}
Int_t rcode = socket->Recv(recvmess);
if (rcode <= 0) {
TThread::Printf("socket received code %d histo %s", rcode, histoname.Data());
delete recvmess;
return 0;
}
if (recvmess->What() == kMESS_STRING) {
TString str;
recvmess->ReadTString(str);
TThread::Printf("message received from server: %s", str.Data());
delete recvmess;
return 0;
} else {
if (recvmess->What() == kMESS_OBJECT) {
if ( (newhist = (HOnlineMonHistAddon*) recvmess->ReadObjectAny(HOnlineMonHistAddon::Class())) == 0) {
TThread::Printf("ERROR: Received invalid data for histogram '%s' from server.", histoname.Data());
delete recvmess;
return 0;
}
} else {
TThread::Printf("ERROR: type of message received from server is invalid.");
delete recvmess;
return 0;
}
}
delete recvmess;
return newhist;
}
void HOnlineMonClientMain::AddHist(HOnlineMonClientCanvas* canvas, HOnlineMonClientHist* hist) {
listHists.Add(hist);
HOnlineMonHistAddon* newhist = this->GetHist(hist->GetRealName());
if (newhist == 0) {
TThread::Printf("ERROR: Can't add histogram '%s' to the update-list. Received invalid initial histogram from server.", hist->GetName());
return;
}
hist->SetHist(newhist);
if (hist->GetSubpadnumber() == 0) {
TCanvas* cnv = canvas->GetCanvas();
cnv->SetGrid(hist->GetHist()->getGridX(), hist->GetHist()->getGridY());
cnv->SetLogx(hist->GetHist()->getLogX());
cnv->SetLogy(hist->GetHist()->getLogY());
cnv->SetLogz(hist->GetHist()->getLogZ());
listPads.Add(cnv);
pad2hist[cnv->GetName()] = hist->GetName();
} else {
TString padnr = "";
padnr += hist->GetSubpadnumber();
TString padname = canvas->GetName() + TString("_") + padnr;
TPad* pad=(TPad*) canvas->GetCanvas()->GetPrimitive(padname.Data());
pad->SetGrid(hist->GetHist()->getGridX(), hist->GetHist()->getGridY());
pad->SetLogx(hist->GetHist()->getLogX());
pad->SetLogy(hist->GetHist()->getLogY());
pad->SetLogz(hist->GetHist()->getLogZ());
listPads.Add(pad);
pad2hist[padname] = hist->GetName();
}
}
void HOnlineMonClientMain::RemoveHist(HOnlineMonClientCanvas* canvas, HOnlineMonClientHist* hist) {
if (hist->GetSubpadnumber() == 0) {
TCanvas* cnv = canvas->GetCanvas();
listHists.Remove(hist);
listPads.Remove(cnv);
pad2hist.erase(cnv->GetName());
} else {
TString padnr = "";
padnr += hist->GetSubpadnumber();
TString padname = canvas->GetName() + TString("_") + padnr;
TPad* pad=(TPad*) canvas->GetCanvas()->GetPrimitive(padname.Data());
listHists.Remove(hist);
listPads.Remove(pad);
pad2hist.erase(pad->GetName());
}
}
void HOnlineMonClientMain::SetServerhost(TString host) {
serverhost = host;
}
TString HOnlineMonClientMain::GetServerhost() {
return serverhost;
}
void HOnlineMonClientMain::SetServerport(Int_t port) {
serverport = port;
}
Int_t HOnlineMonClientMain::GetServerport() {
return serverport;
}
honlinemonclientmain.cc:1 honlinemonclientmain.cc:2 honlinemonclientmain.cc:3 honlinemonclientmain.cc:4 honlinemonclientmain.cc:5 honlinemonclientmain.cc:6 honlinemonclientmain.cc:7 honlinemonclientmain.cc:8 honlinemonclientmain.cc:9 honlinemonclientmain.cc:10 honlinemonclientmain.cc:11 honlinemonclientmain.cc:12 honlinemonclientmain.cc:13 honlinemonclientmain.cc:14 honlinemonclientmain.cc:15 honlinemonclientmain.cc:16 honlinemonclientmain.cc:17 honlinemonclientmain.cc:18 honlinemonclientmain.cc:19 honlinemonclientmain.cc:20 honlinemonclientmain.cc:21 honlinemonclientmain.cc:22 honlinemonclientmain.cc:23 honlinemonclientmain.cc:24 honlinemonclientmain.cc:25 honlinemonclientmain.cc:26 honlinemonclientmain.cc:27 honlinemonclientmain.cc:28 honlinemonclientmain.cc:29 honlinemonclientmain.cc:30 honlinemonclientmain.cc:31 honlinemonclientmain.cc:32 honlinemonclientmain.cc:33 honlinemonclientmain.cc:34 honlinemonclientmain.cc:35 honlinemonclientmain.cc:36 honlinemonclientmain.cc:37 honlinemonclientmain.cc:38 honlinemonclientmain.cc:39 honlinemonclientmain.cc:40 honlinemonclientmain.cc:41 honlinemonclientmain.cc:42 honlinemonclientmain.cc:43 honlinemonclientmain.cc:44 honlinemonclientmain.cc:45 honlinemonclientmain.cc:46 honlinemonclientmain.cc:47 honlinemonclientmain.cc:48 honlinemonclientmain.cc:49 honlinemonclientmain.cc:50 honlinemonclientmain.cc:51 honlinemonclientmain.cc:52 honlinemonclientmain.cc:53 honlinemonclientmain.cc:54 honlinemonclientmain.cc:55 honlinemonclientmain.cc:56 honlinemonclientmain.cc:57 honlinemonclientmain.cc:58 honlinemonclientmain.cc:59 honlinemonclientmain.cc:60 honlinemonclientmain.cc:61 honlinemonclientmain.cc:62 honlinemonclientmain.cc:63 honlinemonclientmain.cc:64 honlinemonclientmain.cc:65 honlinemonclientmain.cc:66 honlinemonclientmain.cc:67 honlinemonclientmain.cc:68 honlinemonclientmain.cc:69 honlinemonclientmain.cc:70 honlinemonclientmain.cc:71 honlinemonclientmain.cc:72 honlinemonclientmain.cc:73 honlinemonclientmain.cc:74 honlinemonclientmain.cc:75 honlinemonclientmain.cc:76 honlinemonclientmain.cc:77 honlinemonclientmain.cc:78 honlinemonclientmain.cc:79 honlinemonclientmain.cc:80 honlinemonclientmain.cc:81 honlinemonclientmain.cc:82 honlinemonclientmain.cc:83 honlinemonclientmain.cc:84 honlinemonclientmain.cc:85 honlinemonclientmain.cc:86 honlinemonclientmain.cc:87 honlinemonclientmain.cc:88 honlinemonclientmain.cc:89 honlinemonclientmain.cc:90 honlinemonclientmain.cc:91 honlinemonclientmain.cc:92 honlinemonclientmain.cc:93 honlinemonclientmain.cc:94 honlinemonclientmain.cc:95 honlinemonclientmain.cc:96 honlinemonclientmain.cc:97 honlinemonclientmain.cc:98 honlinemonclientmain.cc:99 honlinemonclientmain.cc:100 honlinemonclientmain.cc:101 honlinemonclientmain.cc:102 honlinemonclientmain.cc:103 honlinemonclientmain.cc:104 honlinemonclientmain.cc:105 honlinemonclientmain.cc:106 honlinemonclientmain.cc:107 honlinemonclientmain.cc:108 honlinemonclientmain.cc:109 honlinemonclientmain.cc:110 honlinemonclientmain.cc:111 honlinemonclientmain.cc:112 honlinemonclientmain.cc:113 honlinemonclientmain.cc:114 honlinemonclientmain.cc:115 honlinemonclientmain.cc:116 honlinemonclientmain.cc:117 honlinemonclientmain.cc:118 honlinemonclientmain.cc:119 honlinemonclientmain.cc:120 honlinemonclientmain.cc:121 honlinemonclientmain.cc:122 honlinemonclientmain.cc:123 honlinemonclientmain.cc:124 honlinemonclientmain.cc:125 honlinemonclientmain.cc:126 honlinemonclientmain.cc:127 honlinemonclientmain.cc:128 honlinemonclientmain.cc:129 honlinemonclientmain.cc:130 honlinemonclientmain.cc:131 honlinemonclientmain.cc:132 honlinemonclientmain.cc:133 honlinemonclientmain.cc:134 honlinemonclientmain.cc:135 honlinemonclientmain.cc:136 honlinemonclientmain.cc:137 honlinemonclientmain.cc:138 honlinemonclientmain.cc:139 honlinemonclientmain.cc:140 honlinemonclientmain.cc:141 honlinemonclientmain.cc:142 honlinemonclientmain.cc:143 honlinemonclientmain.cc:144 honlinemonclientmain.cc:145 honlinemonclientmain.cc:146 honlinemonclientmain.cc:147 honlinemonclientmain.cc:148 honlinemonclientmain.cc:149 honlinemonclientmain.cc:150 honlinemonclientmain.cc:151 honlinemonclientmain.cc:152 honlinemonclientmain.cc:153 honlinemonclientmain.cc:154 honlinemonclientmain.cc:155 honlinemonclientmain.cc:156 honlinemonclientmain.cc:157 honlinemonclientmain.cc:158 honlinemonclientmain.cc:159 honlinemonclientmain.cc:160 honlinemonclientmain.cc:161 honlinemonclientmain.cc:162 honlinemonclientmain.cc:163 honlinemonclientmain.cc:164 honlinemonclientmain.cc:165 honlinemonclientmain.cc:166 honlinemonclientmain.cc:167 honlinemonclientmain.cc:168 honlinemonclientmain.cc:169 honlinemonclientmain.cc:170 honlinemonclientmain.cc:171 honlinemonclientmain.cc:172 honlinemonclientmain.cc:173 honlinemonclientmain.cc:174 honlinemonclientmain.cc:175 honlinemonclientmain.cc:176 honlinemonclientmain.cc:177 honlinemonclientmain.cc:178 honlinemonclientmain.cc:179 honlinemonclientmain.cc:180 honlinemonclientmain.cc:181 honlinemonclientmain.cc:182 honlinemonclientmain.cc:183 honlinemonclientmain.cc:184 honlinemonclientmain.cc:185 honlinemonclientmain.cc:186 honlinemonclientmain.cc:187 honlinemonclientmain.cc:188 honlinemonclientmain.cc:189 honlinemonclientmain.cc:190 honlinemonclientmain.cc:191 honlinemonclientmain.cc:192 honlinemonclientmain.cc:193 honlinemonclientmain.cc:194 honlinemonclientmain.cc:195 honlinemonclientmain.cc:196 honlinemonclientmain.cc:197 honlinemonclientmain.cc:198 honlinemonclientmain.cc:199 honlinemonclientmain.cc:200 honlinemonclientmain.cc:201 honlinemonclientmain.cc:202 honlinemonclientmain.cc:203 honlinemonclientmain.cc:204 honlinemonclientmain.cc:205 honlinemonclientmain.cc:206 honlinemonclientmain.cc:207 honlinemonclientmain.cc:208 honlinemonclientmain.cc:209 honlinemonclientmain.cc:210 honlinemonclientmain.cc:211 honlinemonclientmain.cc:212 honlinemonclientmain.cc:213 honlinemonclientmain.cc:214 honlinemonclientmain.cc:215 honlinemonclientmain.cc:216 honlinemonclientmain.cc:217 honlinemonclientmain.cc:218 honlinemonclientmain.cc:219 honlinemonclientmain.cc:220 honlinemonclientmain.cc:221 honlinemonclientmain.cc:222 honlinemonclientmain.cc:223 honlinemonclientmain.cc:224 honlinemonclientmain.cc:225 honlinemonclientmain.cc:226 honlinemonclientmain.cc:227 honlinemonclientmain.cc:228 honlinemonclientmain.cc:229 honlinemonclientmain.cc:230 honlinemonclientmain.cc:231 honlinemonclientmain.cc:232 honlinemonclientmain.cc:233 honlinemonclientmain.cc:234 honlinemonclientmain.cc:235 honlinemonclientmain.cc:236 honlinemonclientmain.cc:237 honlinemonclientmain.cc:238 honlinemonclientmain.cc:239 honlinemonclientmain.cc:240 honlinemonclientmain.cc:241 honlinemonclientmain.cc:242 honlinemonclientmain.cc:243 honlinemonclientmain.cc:244 honlinemonclientmain.cc:245 honlinemonclientmain.cc:246 honlinemonclientmain.cc:247 honlinemonclientmain.cc:248 honlinemonclientmain.cc:249 honlinemonclientmain.cc:250 honlinemonclientmain.cc:251 honlinemonclientmain.cc:252 honlinemonclientmain.cc:253 honlinemonclientmain.cc:254 honlinemonclientmain.cc:255 honlinemonclientmain.cc:256 honlinemonclientmain.cc:257 honlinemonclientmain.cc:258 honlinemonclientmain.cc:259 honlinemonclientmain.cc:260 honlinemonclientmain.cc:261 honlinemonclientmain.cc:262 honlinemonclientmain.cc:263 honlinemonclientmain.cc:264 honlinemonclientmain.cc:265 honlinemonclientmain.cc:266 honlinemonclientmain.cc:267 honlinemonclientmain.cc:268 honlinemonclientmain.cc:269 honlinemonclientmain.cc:270 honlinemonclientmain.cc:271 honlinemonclientmain.cc:272 honlinemonclientmain.cc:273 honlinemonclientmain.cc:274 honlinemonclientmain.cc:275 honlinemonclientmain.cc:276 honlinemonclientmain.cc:277 honlinemonclientmain.cc:278 honlinemonclientmain.cc:279 honlinemonclientmain.cc:280 honlinemonclientmain.cc:281 honlinemonclientmain.cc:282 honlinemonclientmain.cc:283 honlinemonclientmain.cc:284 honlinemonclientmain.cc:285 honlinemonclientmain.cc:286 honlinemonclientmain.cc:287 honlinemonclientmain.cc:288 honlinemonclientmain.cc:289 honlinemonclientmain.cc:290 honlinemonclientmain.cc:291 honlinemonclientmain.cc:292 honlinemonclientmain.cc:293 honlinemonclientmain.cc:294 honlinemonclientmain.cc:295 honlinemonclientmain.cc:296 honlinemonclientmain.cc:297 honlinemonclientmain.cc:298 honlinemonclientmain.cc:299 honlinemonclientmain.cc:300 honlinemonclientmain.cc:301 honlinemonclientmain.cc:302 honlinemonclientmain.cc:303 honlinemonclientmain.cc:304 honlinemonclientmain.cc:305 honlinemonclientmain.cc:306 honlinemonclientmain.cc:307 honlinemonclientmain.cc:308 honlinemonclientmain.cc:309 honlinemonclientmain.cc:310 honlinemonclientmain.cc:311 honlinemonclientmain.cc:312 honlinemonclientmain.cc:313 honlinemonclientmain.cc:314 honlinemonclientmain.cc:315 honlinemonclientmain.cc:316 honlinemonclientmain.cc:317 honlinemonclientmain.cc:318 honlinemonclientmain.cc:319 honlinemonclientmain.cc:320 honlinemonclientmain.cc:321 honlinemonclientmain.cc:322 honlinemonclientmain.cc:323 honlinemonclientmain.cc:324 honlinemonclientmain.cc:325 honlinemonclientmain.cc:326 honlinemonclientmain.cc:327 honlinemonclientmain.cc:328 honlinemonclientmain.cc:329 honlinemonclientmain.cc:330 honlinemonclientmain.cc:331 honlinemonclientmain.cc:332 honlinemonclientmain.cc:333 honlinemonclientmain.cc:334 honlinemonclientmain.cc:335 honlinemonclientmain.cc:336 honlinemonclientmain.cc:337 honlinemonclientmain.cc:338 honlinemonclientmain.cc:339 honlinemonclientmain.cc:340 honlinemonclientmain.cc:341 honlinemonclientmain.cc:342 honlinemonclientmain.cc:343 honlinemonclientmain.cc:344 honlinemonclientmain.cc:345 honlinemonclientmain.cc:346 honlinemonclientmain.cc:347 honlinemonclientmain.cc:348 honlinemonclientmain.cc:349 honlinemonclientmain.cc:350 honlinemonclientmain.cc:351 honlinemonclientmain.cc:352 honlinemonclientmain.cc:353 honlinemonclientmain.cc:354 honlinemonclientmain.cc:355 honlinemonclientmain.cc:356 honlinemonclientmain.cc:357 honlinemonclientmain.cc:358 honlinemonclientmain.cc:359 honlinemonclientmain.cc:360 honlinemonclientmain.cc:361 honlinemonclientmain.cc:362 honlinemonclientmain.cc:363 honlinemonclientmain.cc:364 honlinemonclientmain.cc:365 honlinemonclientmain.cc:366 honlinemonclientmain.cc:367 honlinemonclientmain.cc:368 honlinemonclientmain.cc:369 honlinemonclientmain.cc:370 honlinemonclientmain.cc:371 honlinemonclientmain.cc:372 honlinemonclientmain.cc:373 honlinemonclientmain.cc:374 honlinemonclientmain.cc:375 honlinemonclientmain.cc:376 honlinemonclientmain.cc:377 honlinemonclientmain.cc:378 honlinemonclientmain.cc:379 honlinemonclientmain.cc:380 honlinemonclientmain.cc:381 honlinemonclientmain.cc:382 honlinemonclientmain.cc:383 honlinemonclientmain.cc:384 honlinemonclientmain.cc:385 honlinemonclientmain.cc:386 honlinemonclientmain.cc:387 honlinemonclientmain.cc:388 honlinemonclientmain.cc:389 honlinemonclientmain.cc:390 honlinemonclientmain.cc:391 honlinemonclientmain.cc:392 honlinemonclientmain.cc:393 honlinemonclientmain.cc:394 honlinemonclientmain.cc:395 honlinemonclientmain.cc:396 honlinemonclientmain.cc:397 honlinemonclientmain.cc:398 honlinemonclientmain.cc:399 honlinemonclientmain.cc:400 honlinemonclientmain.cc:401 honlinemonclientmain.cc:402 honlinemonclientmain.cc:403 honlinemonclientmain.cc:404 honlinemonclientmain.cc:405 honlinemonclientmain.cc:406 honlinemonclientmain.cc:407 honlinemonclientmain.cc:408 honlinemonclientmain.cc:409 honlinemonclientmain.cc:410 honlinemonclientmain.cc:411 honlinemonclientmain.cc:412 honlinemonclientmain.cc:413 honlinemonclientmain.cc:414 honlinemonclientmain.cc:415 honlinemonclientmain.cc:416 honlinemonclientmain.cc:417 honlinemonclientmain.cc:418 honlinemonclientmain.cc:419 honlinemonclientmain.cc:420 honlinemonclientmain.cc:421 honlinemonclientmain.cc:422 honlinemonclientmain.cc:423 honlinemonclientmain.cc:424 honlinemonclientmain.cc:425 honlinemonclientmain.cc:426 honlinemonclientmain.cc:427 honlinemonclientmain.cc:428 honlinemonclientmain.cc:429 honlinemonclientmain.cc:430 honlinemonclientmain.cc:431 honlinemonclientmain.cc:432 honlinemonclientmain.cc:433 honlinemonclientmain.cc:434 honlinemonclientmain.cc:435 honlinemonclientmain.cc:436 honlinemonclientmain.cc:437 honlinemonclientmain.cc:438 honlinemonclientmain.cc:439 honlinemonclientmain.cc:440 honlinemonclientmain.cc:441 honlinemonclientmain.cc:442 honlinemonclientmain.cc:443 honlinemonclientmain.cc:444 honlinemonclientmain.cc:445 honlinemonclientmain.cc:446 honlinemonclientmain.cc:447 honlinemonclientmain.cc:448 honlinemonclientmain.cc:449 honlinemonclientmain.cc:450 honlinemonclientmain.cc:451 honlinemonclientmain.cc:452 honlinemonclientmain.cc:453 honlinemonclientmain.cc:454 honlinemonclientmain.cc:455 honlinemonclientmain.cc:456 honlinemonclientmain.cc:457 honlinemonclientmain.cc:458 honlinemonclientmain.cc:459 honlinemonclientmain.cc:460 honlinemonclientmain.cc:461 honlinemonclientmain.cc:462 honlinemonclientmain.cc:463 honlinemonclientmain.cc:464 honlinemonclientmain.cc:465 honlinemonclientmain.cc:466 honlinemonclientmain.cc:467 honlinemonclientmain.cc:468 honlinemonclientmain.cc:469 honlinemonclientmain.cc:470 honlinemonclientmain.cc:471 honlinemonclientmain.cc:472 honlinemonclientmain.cc:473 honlinemonclientmain.cc:474 honlinemonclientmain.cc:475 honlinemonclientmain.cc:476 honlinemonclientmain.cc:477 honlinemonclientmain.cc:478 honlinemonclientmain.cc:479 honlinemonclientmain.cc:480 honlinemonclientmain.cc:481 honlinemonclientmain.cc:482 honlinemonclientmain.cc:483 honlinemonclientmain.cc:484 honlinemonclientmain.cc:485 honlinemonclientmain.cc:486 honlinemonclientmain.cc:487 honlinemonclientmain.cc:488 honlinemonclientmain.cc:489 honlinemonclientmain.cc:490 honlinemonclientmain.cc:491 honlinemonclientmain.cc:492 honlinemonclientmain.cc:493 honlinemonclientmain.cc:494 honlinemonclientmain.cc:495 honlinemonclientmain.cc:496 honlinemonclientmain.cc:497 honlinemonclientmain.cc:498 honlinemonclientmain.cc:499 honlinemonclientmain.cc:500 honlinemonclientmain.cc:501 honlinemonclientmain.cc:502 honlinemonclientmain.cc:503 honlinemonclientmain.cc:504 honlinemonclientmain.cc:505 honlinemonclientmain.cc:506 honlinemonclientmain.cc:507 honlinemonclientmain.cc:508 honlinemonclientmain.cc:509 honlinemonclientmain.cc:510 honlinemonclientmain.cc:511 honlinemonclientmain.cc:512 honlinemonclientmain.cc:513 honlinemonclientmain.cc:514 honlinemonclientmain.cc:515 honlinemonclientmain.cc:516 honlinemonclientmain.cc:517 honlinemonclientmain.cc:518 honlinemonclientmain.cc:519 honlinemonclientmain.cc:520 honlinemonclientmain.cc:521 honlinemonclientmain.cc:522 honlinemonclientmain.cc:523 honlinemonclientmain.cc:524 honlinemonclientmain.cc:525 honlinemonclientmain.cc:526 honlinemonclientmain.cc:527 honlinemonclientmain.cc:528 honlinemonclientmain.cc:529 honlinemonclientmain.cc:530 honlinemonclientmain.cc:531 honlinemonclientmain.cc:532 honlinemonclientmain.cc:533 honlinemonclientmain.cc:534 honlinemonclientmain.cc:535 honlinemonclientmain.cc:536 honlinemonclientmain.cc:537 honlinemonclientmain.cc:538 honlinemonclientmain.cc:539 honlinemonclientmain.cc:540 honlinemonclientmain.cc:541 honlinemonclientmain.cc:542 honlinemonclientmain.cc:543 honlinemonclientmain.cc:544 honlinemonclientmain.cc:545 honlinemonclientmain.cc:546 honlinemonclientmain.cc:547 honlinemonclientmain.cc:548 honlinemonclientmain.cc:549 honlinemonclientmain.cc:550 honlinemonclientmain.cc:551 honlinemonclientmain.cc:552 honlinemonclientmain.cc:553 honlinemonclientmain.cc:554 honlinemonclientmain.cc:555 honlinemonclientmain.cc:556 honlinemonclientmain.cc:557 honlinemonclientmain.cc:558 honlinemonclientmain.cc:559 honlinemonclientmain.cc:560 honlinemonclientmain.cc:561 honlinemonclientmain.cc:562 honlinemonclientmain.cc:563 honlinemonclientmain.cc:564 honlinemonclientmain.cc:565 honlinemonclientmain.cc:566 honlinemonclientmain.cc:567 honlinemonclientmain.cc:568 honlinemonclientmain.cc:569 honlinemonclientmain.cc:570 honlinemonclientmain.cc:571 honlinemonclientmain.cc:572 honlinemonclientmain.cc:573 honlinemonclientmain.cc:574 honlinemonclientmain.cc:575 honlinemonclientmain.cc:576 honlinemonclientmain.cc:577 honlinemonclientmain.cc:578 honlinemonclientmain.cc:579 honlinemonclientmain.cc:580 honlinemonclientmain.cc:581 honlinemonclientmain.cc:582 honlinemonclientmain.cc:583 honlinemonclientmain.cc:584 honlinemonclientmain.cc:585 honlinemonclientmain.cc:586 honlinemonclientmain.cc:587 honlinemonclientmain.cc:588 honlinemonclientmain.cc:589 honlinemonclientmain.cc:590 honlinemonclientmain.cc:591 honlinemonclientmain.cc:592 honlinemonclientmain.cc:593 honlinemonclientmain.cc:594 honlinemonclientmain.cc:595 honlinemonclientmain.cc:596 honlinemonclientmain.cc:597 honlinemonclientmain.cc:598 honlinemonclientmain.cc:599 honlinemonclientmain.cc:600 honlinemonclientmain.cc:601 honlinemonclientmain.cc:602 honlinemonclientmain.cc:603 honlinemonclientmain.cc:604 honlinemonclientmain.cc:605 honlinemonclientmain.cc:606 honlinemonclientmain.cc:607 honlinemonclientmain.cc:608 honlinemonclientmain.cc:609 honlinemonclientmain.cc:610 honlinemonclientmain.cc:611 honlinemonclientmain.cc:612 honlinemonclientmain.cc:613 honlinemonclientmain.cc:614 honlinemonclientmain.cc:615 honlinemonclientmain.cc:616 honlinemonclientmain.cc:617 honlinemonclientmain.cc:618 honlinemonclientmain.cc:619 honlinemonclientmain.cc:620 honlinemonclientmain.cc:621 honlinemonclientmain.cc:622 honlinemonclientmain.cc:623 honlinemonclientmain.cc:624 honlinemonclientmain.cc:625 honlinemonclientmain.cc:626 honlinemonclientmain.cc:627 honlinemonclientmain.cc:628 honlinemonclientmain.cc:629 honlinemonclientmain.cc:630 honlinemonclientmain.cc:631 honlinemonclientmain.cc:632 honlinemonclientmain.cc:633 honlinemonclientmain.cc:634 honlinemonclientmain.cc:635 honlinemonclientmain.cc:636 honlinemonclientmain.cc:637 honlinemonclientmain.cc:638 honlinemonclientmain.cc:639 honlinemonclientmain.cc:640 honlinemonclientmain.cc:641 honlinemonclientmain.cc:642 honlinemonclientmain.cc:643 honlinemonclientmain.cc:644 honlinemonclientmain.cc:645 honlinemonclientmain.cc:646 honlinemonclientmain.cc:647 honlinemonclientmain.cc:648 honlinemonclientmain.cc:649 honlinemonclientmain.cc:650 honlinemonclientmain.cc:651 honlinemonclientmain.cc:652 honlinemonclientmain.cc:653 honlinemonclientmain.cc:654 honlinemonclientmain.cc:655 honlinemonclientmain.cc:656 honlinemonclientmain.cc:657 honlinemonclientmain.cc:658 honlinemonclientmain.cc:659 honlinemonclientmain.cc:660 honlinemonclientmain.cc:661 honlinemonclientmain.cc:662 honlinemonclientmain.cc:663 honlinemonclientmain.cc:664 honlinemonclientmain.cc:665 honlinemonclientmain.cc:666 honlinemonclientmain.cc:667 honlinemonclientmain.cc:668 honlinemonclientmain.cc:669 honlinemonclientmain.cc:670 honlinemonclientmain.cc:671 honlinemonclientmain.cc:672 honlinemonclientmain.cc:673 honlinemonclientmain.cc:674 honlinemonclientmain.cc:675 honlinemonclientmain.cc:676 honlinemonclientmain.cc:677 honlinemonclientmain.cc:678 honlinemonclientmain.cc:679 honlinemonclientmain.cc:680 honlinemonclientmain.cc:681 honlinemonclientmain.cc:682 honlinemonclientmain.cc:683 honlinemonclientmain.cc:684 honlinemonclientmain.cc:685 honlinemonclientmain.cc:686 honlinemonclientmain.cc:687 honlinemonclientmain.cc:688 honlinemonclientmain.cc:689 honlinemonclientmain.cc:690 honlinemonclientmain.cc:691 honlinemonclientmain.cc:692 honlinemonclientmain.cc:693 honlinemonclientmain.cc:694 honlinemonclientmain.cc:695 honlinemonclientmain.cc:696 honlinemonclientmain.cc:697 honlinemonclientmain.cc:698 honlinemonclientmain.cc:699 honlinemonclientmain.cc:700 honlinemonclientmain.cc:701 honlinemonclientmain.cc:702 honlinemonclientmain.cc:703 honlinemonclientmain.cc:704 honlinemonclientmain.cc:705 honlinemonclientmain.cc:706 honlinemonclientmain.cc:707 honlinemonclientmain.cc:708 honlinemonclientmain.cc:709 honlinemonclientmain.cc:710 honlinemonclientmain.cc:711 honlinemonclientmain.cc:712 honlinemonclientmain.cc:713 honlinemonclientmain.cc:714 honlinemonclientmain.cc:715 honlinemonclientmain.cc:716 honlinemonclientmain.cc:717 honlinemonclientmain.cc:718 honlinemonclientmain.cc:719 honlinemonclientmain.cc:720 honlinemonclientmain.cc:721 honlinemonclientmain.cc:722 honlinemonclientmain.cc:723 honlinemonclientmain.cc:724 honlinemonclientmain.cc:725 honlinemonclientmain.cc:726 honlinemonclientmain.cc:727 honlinemonclientmain.cc:728 honlinemonclientmain.cc:729 honlinemonclientmain.cc:730 honlinemonclientmain.cc:731 honlinemonclientmain.cc:732 honlinemonclientmain.cc:733 honlinemonclientmain.cc:734 honlinemonclientmain.cc:735 honlinemonclientmain.cc:736 honlinemonclientmain.cc:737 honlinemonclientmain.cc:738 honlinemonclientmain.cc:739 honlinemonclientmain.cc:740 honlinemonclientmain.cc:741 honlinemonclientmain.cc:742 honlinemonclientmain.cc:743 honlinemonclientmain.cc:744 honlinemonclientmain.cc:745 honlinemonclientmain.cc:746 honlinemonclientmain.cc:747 honlinemonclientmain.cc:748 honlinemonclientmain.cc:749 honlinemonclientmain.cc:750 honlinemonclientmain.cc:751 honlinemonclientmain.cc:752 honlinemonclientmain.cc:753 honlinemonclientmain.cc:754 honlinemonclientmain.cc:755 honlinemonclientmain.cc:756 honlinemonclientmain.cc:757 honlinemonclientmain.cc:758 honlinemonclientmain.cc:759 honlinemonclientmain.cc:760 honlinemonclientmain.cc:761 honlinemonclientmain.cc:762 honlinemonclientmain.cc:763 honlinemonclientmain.cc:764 honlinemonclientmain.cc:765 honlinemonclientmain.cc:766 honlinemonclientmain.cc:767 honlinemonclientmain.cc:768 honlinemonclientmain.cc:769 honlinemonclientmain.cc:770 honlinemonclientmain.cc:771 honlinemonclientmain.cc:772 honlinemonclientmain.cc:773 honlinemonclientmain.cc:774 honlinemonclientmain.cc:775 honlinemonclientmain.cc:776 honlinemonclientmain.cc:777 honlinemonclientmain.cc:778 honlinemonclientmain.cc:779 honlinemonclientmain.cc:780 honlinemonclientmain.cc:781 honlinemonclientmain.cc:782 honlinemonclientmain.cc:783 honlinemonclientmain.cc:784 honlinemonclientmain.cc:785 honlinemonclientmain.cc:786 honlinemonclientmain.cc:787 honlinemonclientmain.cc:788 honlinemonclientmain.cc:789 honlinemonclientmain.cc:790 honlinemonclientmain.cc:791 honlinemonclientmain.cc:792 honlinemonclientmain.cc:793 honlinemonclientmain.cc:794 honlinemonclientmain.cc:795 honlinemonclientmain.cc:796 honlinemonclientmain.cc:797 honlinemonclientmain.cc:798 honlinemonclientmain.cc:799 honlinemonclientmain.cc:800 honlinemonclientmain.cc:801 honlinemonclientmain.cc:802 honlinemonclientmain.cc:803 honlinemonclientmain.cc:804 honlinemonclientmain.cc:805 honlinemonclientmain.cc:806 honlinemonclientmain.cc:807 honlinemonclientmain.cc:808 honlinemonclientmain.cc:809 honlinemonclientmain.cc:810 honlinemonclientmain.cc:811 honlinemonclientmain.cc:812 honlinemonclientmain.cc:813 honlinemonclientmain.cc:814 honlinemonclientmain.cc:815 honlinemonclientmain.cc:816 honlinemonclientmain.cc:817 honlinemonclientmain.cc:818 honlinemonclientmain.cc:819 honlinemonclientmain.cc:820 honlinemonclientmain.cc:821 honlinemonclientmain.cc:822 honlinemonclientmain.cc:823 honlinemonclientmain.cc:824 honlinemonclientmain.cc:825 honlinemonclientmain.cc:826 honlinemonclientmain.cc:827 honlinemonclientmain.cc:828 honlinemonclientmain.cc:829 honlinemonclientmain.cc:830 honlinemonclientmain.cc:831 honlinemonclientmain.cc:832 honlinemonclientmain.cc:833 honlinemonclientmain.cc:834 honlinemonclientmain.cc:835 honlinemonclientmain.cc:836 honlinemonclientmain.cc:837 honlinemonclientmain.cc:838 honlinemonclientmain.cc:839 honlinemonclientmain.cc:840 honlinemonclientmain.cc:841 honlinemonclientmain.cc:842 honlinemonclientmain.cc:843 honlinemonclientmain.cc:844 honlinemonclientmain.cc:845 honlinemonclientmain.cc:846 honlinemonclientmain.cc:847 honlinemonclientmain.cc:848 honlinemonclientmain.cc:849 honlinemonclientmain.cc:850 honlinemonclientmain.cc:851 honlinemonclientmain.cc:852 honlinemonclientmain.cc:853 honlinemonclientmain.cc:854 honlinemonclientmain.cc:855 honlinemonclientmain.cc:856 honlinemonclientmain.cc:857 honlinemonclientmain.cc:858 honlinemonclientmain.cc:859 honlinemonclientmain.cc:860 honlinemonclientmain.cc:861 honlinemonclientmain.cc:862 honlinemonclientmain.cc:863 honlinemonclientmain.cc:864 honlinemonclientmain.cc:865 honlinemonclientmain.cc:866 honlinemonclientmain.cc:867 honlinemonclientmain.cc:868 honlinemonclientmain.cc:869 honlinemonclientmain.cc:870 honlinemonclientmain.cc:871 honlinemonclientmain.cc:872 honlinemonclientmain.cc:873 honlinemonclientmain.cc:874 honlinemonclientmain.cc:875 honlinemonclientmain.cc:876 honlinemonclientmain.cc:877 honlinemonclientmain.cc:878 honlinemonclientmain.cc:879 honlinemonclientmain.cc:880 honlinemonclientmain.cc:881 honlinemonclientmain.cc:882 honlinemonclientmain.cc:883 honlinemonclientmain.cc:884 honlinemonclientmain.cc:885 honlinemonclientmain.cc:886 honlinemonclientmain.cc:887 honlinemonclientmain.cc:888 honlinemonclientmain.cc:889 honlinemonclientmain.cc:890 honlinemonclientmain.cc:891 honlinemonclientmain.cc:892 honlinemonclientmain.cc:893 honlinemonclientmain.cc:894 honlinemonclientmain.cc:895 honlinemonclientmain.cc:896 honlinemonclientmain.cc:897 honlinemonclientmain.cc:898 honlinemonclientmain.cc:899 honlinemonclientmain.cc:900 honlinemonclientmain.cc:901 honlinemonclientmain.cc:902 honlinemonclientmain.cc:903 honlinemonclientmain.cc:904 honlinemonclientmain.cc:905 honlinemonclientmain.cc:906 honlinemonclientmain.cc:907 honlinemonclientmain.cc:908 honlinemonclientmain.cc:909 honlinemonclientmain.cc:910 honlinemonclientmain.cc:911 honlinemonclientmain.cc:912 honlinemonclientmain.cc:913 honlinemonclientmain.cc:914 honlinemonclientmain.cc:915 honlinemonclientmain.cc:916 honlinemonclientmain.cc:917 honlinemonclientmain.cc:918 honlinemonclientmain.cc:919 honlinemonclientmain.cc:920 honlinemonclientmain.cc:921 honlinemonclientmain.cc:922 honlinemonclientmain.cc:923 honlinemonclientmain.cc:924 honlinemonclientmain.cc:925 honlinemonclientmain.cc:926 honlinemonclientmain.cc:927 honlinemonclientmain.cc:928 honlinemonclientmain.cc:929 honlinemonclientmain.cc:930 honlinemonclientmain.cc:931 honlinemonclientmain.cc:932 honlinemonclientmain.cc:933 honlinemonclientmain.cc:934 honlinemonclientmain.cc:935 honlinemonclientmain.cc:936 honlinemonclientmain.cc:937 honlinemonclientmain.cc:938 honlinemonclientmain.cc:939 honlinemonclientmain.cc:940 honlinemonclientmain.cc:941 honlinemonclientmain.cc:942 honlinemonclientmain.cc:943 honlinemonclientmain.cc:944 honlinemonclientmain.cc:945 honlinemonclientmain.cc:946 honlinemonclientmain.cc:947 honlinemonclientmain.cc:948 honlinemonclientmain.cc:949 honlinemonclientmain.cc:950 honlinemonclientmain.cc:951 honlinemonclientmain.cc:952 honlinemonclientmain.cc:953 honlinemonclientmain.cc:954 honlinemonclientmain.cc:955 honlinemonclientmain.cc:956 honlinemonclientmain.cc:957 honlinemonclientmain.cc:958 honlinemonclientmain.cc:959 honlinemonclientmain.cc:960 honlinemonclientmain.cc:961 honlinemonclientmain.cc:962 honlinemonclientmain.cc:963 honlinemonclientmain.cc:964 honlinemonclientmain.cc:965 honlinemonclientmain.cc:966 honlinemonclientmain.cc:967 honlinemonclientmain.cc:968 honlinemonclientmain.cc:969 honlinemonclientmain.cc:970 honlinemonclientmain.cc:971 honlinemonclientmain.cc:972 honlinemonclientmain.cc:973 honlinemonclientmain.cc:974 honlinemonclientmain.cc:975 honlinemonclientmain.cc:976 honlinemonclientmain.cc:977 honlinemonclientmain.cc:978 honlinemonclientmain.cc:979 honlinemonclientmain.cc:980 honlinemonclientmain.cc:981 honlinemonclientmain.cc:982 honlinemonclientmain.cc:983 honlinemonclientmain.cc:984 honlinemonclientmain.cc:985 honlinemonclientmain.cc:986 honlinemonclientmain.cc:987 honlinemonclientmain.cc:988 honlinemonclientmain.cc:989 honlinemonclientmain.cc:990 honlinemonclientmain.cc:991 honlinemonclientmain.cc:992 honlinemonclientmain.cc:993 honlinemonclientmain.cc:994 honlinemonclientmain.cc:995 honlinemonclientmain.cc:996 honlinemonclientmain.cc:997 honlinemonclientmain.cc:998 honlinemonclientmain.cc:999 honlinemonclientmain.cc:1000 honlinemonclientmain.cc:1001 honlinemonclientmain.cc:1002 honlinemonclientmain.cc:1003 honlinemonclientmain.cc:1004 honlinemonclientmain.cc:1005 honlinemonclientmain.cc:1006 honlinemonclientmain.cc:1007 honlinemonclientmain.cc:1008 honlinemonclientmain.cc:1009 honlinemonclientmain.cc:1010 honlinemonclientmain.cc:1011 honlinemonclientmain.cc:1012 honlinemonclientmain.cc:1013 honlinemonclientmain.cc:1014 honlinemonclientmain.cc:1015 honlinemonclientmain.cc:1016 honlinemonclientmain.cc:1017 honlinemonclientmain.cc:1018 honlinemonclientmain.cc:1019 honlinemonclientmain.cc:1020 honlinemonclientmain.cc:1021 honlinemonclientmain.cc:1022 honlinemonclientmain.cc:1023 honlinemonclientmain.cc:1024 honlinemonclientmain.cc:1025 honlinemonclientmain.cc:1026 honlinemonclientmain.cc:1027 honlinemonclientmain.cc:1028 honlinemonclientmain.cc:1029 honlinemonclientmain.cc:1030 honlinemonclientmain.cc:1031 honlinemonclientmain.cc:1032 honlinemonclientmain.cc:1033 honlinemonclientmain.cc:1034 honlinemonclientmain.cc:1035 honlinemonclientmain.cc:1036 honlinemonclientmain.cc:1037 honlinemonclientmain.cc:1038 honlinemonclientmain.cc:1039 honlinemonclientmain.cc:1040 honlinemonclientmain.cc:1041 honlinemonclientmain.cc:1042 honlinemonclientmain.cc:1043 honlinemonclientmain.cc:1044 honlinemonclientmain.cc:1045 honlinemonclientmain.cc:1046 honlinemonclientmain.cc:1047 honlinemonclientmain.cc:1048 honlinemonclientmain.cc:1049 honlinemonclientmain.cc:1050 honlinemonclientmain.cc:1051 honlinemonclientmain.cc:1052 honlinemonclientmain.cc:1053 honlinemonclientmain.cc:1054 honlinemonclientmain.cc:1055 honlinemonclientmain.cc:1056 honlinemonclientmain.cc:1057 honlinemonclientmain.cc:1058 honlinemonclientmain.cc:1059 honlinemonclientmain.cc:1060 honlinemonclientmain.cc:1061 honlinemonclientmain.cc:1062 honlinemonclientmain.cc:1063 honlinemonclientmain.cc:1064 honlinemonclientmain.cc:1065 honlinemonclientmain.cc:1066 honlinemonclientmain.cc:1067 honlinemonclientmain.cc:1068 honlinemonclientmain.cc:1069 honlinemonclientmain.cc:1070 honlinemonclientmain.cc:1071 honlinemonclientmain.cc:1072 honlinemonclientmain.cc:1073 honlinemonclientmain.cc:1074 honlinemonclientmain.cc:1075 honlinemonclientmain.cc:1076 honlinemonclientmain.cc:1077 honlinemonclientmain.cc:1078 honlinemonclientmain.cc:1079 honlinemonclientmain.cc:1080 honlinemonclientmain.cc:1081 honlinemonclientmain.cc:1082 honlinemonclientmain.cc:1083 honlinemonclientmain.cc:1084 honlinemonclientmain.cc:1085 honlinemonclientmain.cc:1086 honlinemonclientmain.cc:1087 honlinemonclientmain.cc:1088 honlinemonclientmain.cc:1089 honlinemonclientmain.cc:1090 honlinemonclientmain.cc:1091 honlinemonclientmain.cc:1092 honlinemonclientmain.cc:1093 honlinemonclientmain.cc:1094 honlinemonclientmain.cc:1095 honlinemonclientmain.cc:1096 honlinemonclientmain.cc:1097 honlinemonclientmain.cc:1098 honlinemonclientmain.cc:1099 honlinemonclientmain.cc:1100 honlinemonclientmain.cc:1101 honlinemonclientmain.cc:1102 honlinemonclientmain.cc:1103 honlinemonclientmain.cc:1104 honlinemonclientmain.cc:1105 honlinemonclientmain.cc:1106 honlinemonclientmain.cc:1107 honlinemonclientmain.cc:1108 honlinemonclientmain.cc:1109 honlinemonclientmain.cc:1110 honlinemonclientmain.cc:1111 honlinemonclientmain.cc:1112 honlinemonclientmain.cc:1113 honlinemonclientmain.cc:1114 honlinemonclientmain.cc:1115 honlinemonclientmain.cc:1116 honlinemonclientmain.cc:1117 honlinemonclientmain.cc:1118 honlinemonclientmain.cc:1119 honlinemonclientmain.cc:1120 honlinemonclientmain.cc:1121 honlinemonclientmain.cc:1122 honlinemonclientmain.cc:1123 honlinemonclientmain.cc:1124 honlinemonclientmain.cc:1125 honlinemonclientmain.cc:1126 honlinemonclientmain.cc:1127 honlinemonclientmain.cc:1128 honlinemonclientmain.cc:1129 honlinemonclientmain.cc:1130 honlinemonclientmain.cc:1131 honlinemonclientmain.cc:1132 honlinemonclientmain.cc:1133 honlinemonclientmain.cc:1134 honlinemonclientmain.cc:1135 honlinemonclientmain.cc:1136 honlinemonclientmain.cc:1137 honlinemonclientmain.cc:1138 honlinemonclientmain.cc:1139 honlinemonclientmain.cc:1140 honlinemonclientmain.cc:1141 honlinemonclientmain.cc:1142 honlinemonclientmain.cc:1143 honlinemonclientmain.cc:1144 honlinemonclientmain.cc:1145 honlinemonclientmain.cc:1146 honlinemonclientmain.cc:1147 honlinemonclientmain.cc:1148 honlinemonclientmain.cc:1149 honlinemonclientmain.cc:1150 honlinemonclientmain.cc:1151 honlinemonclientmain.cc:1152 honlinemonclientmain.cc:1153 honlinemonclientmain.cc:1154 honlinemonclientmain.cc:1155 honlinemonclientmain.cc:1156 honlinemonclientmain.cc:1157 honlinemonclientmain.cc:1158 honlinemonclientmain.cc:1159 honlinemonclientmain.cc:1160 honlinemonclientmain.cc:1161 honlinemonclientmain.cc:1162 honlinemonclientmain.cc:1163 honlinemonclientmain.cc:1164 honlinemonclientmain.cc:1165 honlinemonclientmain.cc:1166 honlinemonclientmain.cc:1167 honlinemonclientmain.cc:1168 honlinemonclientmain.cc:1169 honlinemonclientmain.cc:1170 honlinemonclientmain.cc:1171 honlinemonclientmain.cc:1172 honlinemonclientmain.cc:1173 honlinemonclientmain.cc:1174 honlinemonclientmain.cc:1175 honlinemonclientmain.cc:1176 honlinemonclientmain.cc:1177 honlinemonclientmain.cc:1178 honlinemonclientmain.cc:1179 honlinemonclientmain.cc:1180 honlinemonclientmain.cc:1181 honlinemonclientmain.cc:1182 honlinemonclientmain.cc:1183 honlinemonclientmain.cc:1184 honlinemonclientmain.cc:1185 honlinemonclientmain.cc:1186 honlinemonclientmain.cc:1187 honlinemonclientmain.cc:1188 honlinemonclientmain.cc:1189 honlinemonclientmain.cc:1190 honlinemonclientmain.cc:1191 honlinemonclientmain.cc:1192 honlinemonclientmain.cc:1193 honlinemonclientmain.cc:1194 honlinemonclientmain.cc:1195 honlinemonclientmain.cc:1196 honlinemonclientmain.cc:1197 honlinemonclientmain.cc:1198