// @(#)root/postscript:$Id: TPDF.cxx,v 1.0
// Author: Olivier Couet

/*************************************************************************
 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/


//______________________________________________________________________________
/* Begin_Html
<center><h2>TPDF: Graphics interface to PDF</h2></center>
Like PostScript, PDF is a vector graphics output format allowing a very high
graphics output quality. The functionnalities provided by this class are very
similar to those provided by <tt>TPostScript</tt>.
<p>
Compare to PostScript output, the PDF files are usually smaller because some
parts of them can be compressed.
<p>
PDF also allows to define table of contents. This facility can be used in ROOT.
The following example shows how to proceed:
<pre>
{
   TCanvas* canvas = new TCanvas("canvas");
   TH1F* histo = new TH1F("histo","test 1",10,0.,10.);
   histo->SetFillColor(2);
   histo->Fill(2.);
   histo->Draw();
   canvas->Print("plots.pdf(","Title:One bin filled");
   histo->Fill(4.);
   histo->Draw();
   canvas->Print("plots.pdf","Title:Two bins filled");
   histo->Fill(6.);
   histo->Draw();
   canvas->Print("plots.pdf","Title:Three bins filled");
   histo->Fill(8.);
   histo->Draw();
   canvas->Print("plots.pdf","Title:Four bins filled");
   histo->Fill(8.);
   histo->Draw();
   canvas->Print("plots.pdf)","Title:The fourth bin content is 2");
}
</pre>
Each character string following the keyword "Title:" makes a new entry in
the table of contents.
End_Html */

#ifdef WIN32
#pragma optimize("",off)
#endif

#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#include "Riostream.h"
#include "TROOT.h"
#include "TColor.h"
#include "TVirtualPad.h"
#include "TPoints.h"
#include "TPDF.h"
#include "TStyle.h"
#include "TMath.h"
#include "TStorage.h"
#include "TText.h"
#include "zlib.h"
#include "TObjString.h"
#include "TClass.h"
#include "TObjArray.h"

// To scale fonts to the same size as the old TT version
const Float_t kScale = 0.93376068;

// Objects numbers
const Int_t kObjRoot             =  1; // Root object
const Int_t kObjInfo             =  2; // Info object
const Int_t kObjOutlines         =  3; // Outlines object
const Int_t kObjPages            =  4; // Pages object (pages index)
const Int_t kObjPageResources    =  5; // Pages Resources object
const Int_t kObjContents         =  6; // Table of content
const Int_t kObjFont             =  7; // First Font object (14 in total)
const Int_t kObjColorSpace       = 22; // ColorSpace object
const Int_t kObjPatternResourses = 23; // Pattern Resources object
const Int_t kObjPatternList      = 24; // Pattern list object
const Int_t kObjTransList        = 25; // List of transparencies
const Int_t kObjPattern          = 26; // First pattern object (25 in total)
const Int_t kObjFirstPage        = 51; // First page object

// Number of fonts
const Int_t kNumberOfFonts = 15;

ClassImp(TPDF)


//______________________________________________________________________________
//
// PDF driver
//


//______________________________________________________________________________
TPDF::TPDF() : TVirtualPS()
{
   // Default PDF constructor

   fStream          = 0;
   fCompress        = kFALSE;
   fPageNotEmpty    = kFALSE;
   gVirtualPS       = this;
   fRed             = 0.;
   fGreen           = 0.;
   fBlue            = 0.;
   fAlpha           = 1.;
   fXsize           = 0.;
   fYsize           = 0.;
   fType            = 0;
   fPageFormat      = 0;
   fPageOrientation = 0;
   fStartStream     = 0;
   fLineScale       = 0.;
   fObjPosSize      = 0;
   fObjPos          = 0;
   fNbObj           = 0;
   fNbPage          = 0;
   fRange           = kFALSE;
   SetTitle("PDF");
}


//______________________________________________________________________________
TPDF::TPDF(const char *fname, Int_t wtype) : TVirtualPS(fname, wtype)
{
   // Initialize the PDF interface
   //
   //  fname : PDF file name
   //  wtype : PDF workstation type. Not used in the PDF driver. But as TPDF
   //          inherits from TVirtualPS it should be kept. Anyway it is not
   //          necessary to specify this parameter at creation time because it
   //          has a default value (which is ignore in the PDF case).

   fStream          = 0;
   fCompress        = kFALSE;
   fPageNotEmpty    = kFALSE;
   fRed             = 0.;
   fGreen           = 0.;
   fBlue            = 0.;
   fAlpha           = 1.;
   fXsize           = 0.;
   fYsize           = 0.;
   fType            = 0;
   fPageFormat      = 0;
   fPageOrientation = 0;
   fStartStream     = 0;
   fLineScale       = 0.;
   fObjPosSize      = 0;
   fNbObj           = 0;
   fNbPage          = 0;
   fRange           = kFALSE;
   SetTitle("PDF");
   Open(fname, wtype);
}


//______________________________________________________________________________
TPDF::~TPDF()
{
   // Default PDF destructor

   Close();

   if (fObjPos) delete [] fObjPos;
}


//______________________________________________________________________________
void TPDF::CellArrayBegin(Int_t, Int_t, Double_t, Double_t, Double_t,
                          Double_t)
{
   // Begin the Cell Array painting
   Warning("TPDF::CellArrayBegin", "not yet implemented");
}


//______________________________________________________________________________
void TPDF::CellArrayFill(Int_t, Int_t, Int_t)
{
   // Paint the Cell Array
   Warning("TPDF::CellArrayFill", "not yet implemented");
}


//______________________________________________________________________________
void TPDF::CellArrayEnd()
{
   // End the Cell Array painting
   Warning("TPDF::CellArrayEnd", "not yet implemented");
}


//______________________________________________________________________________
void TPDF::Close(Option_t *)
{
   // Close a PDF file

   Int_t i;

   if (!gVirtualPS) return;
   if (!fStream) return;
   if (gPad) gPad->Update();

   // Close the currently opened page
   WriteCompressedBuffer();
   PrintStr("endstream@");
   Int_t streamLength = fNByte-fStartStream-10;
   PrintStr("endobj@");
   NewObject(4*(fNbPage-1)+kObjFirstPage+2);
   WriteInteger(streamLength, 0);
   PrintStr("@");
   PrintStr("endobj@");
   NewObject(4*(fNbPage-1)+kObjFirstPage+3);
   PrintStr("<<@");
   if (!strstr(GetTitle(),"PDF")) {
      PrintStr("/Title (");
      PrintStr(GetTitle());
      PrintStr(")@");
   } else {
      PrintStr("/Title (Page");
      WriteInteger(fNbPage);
      PrintStr(")@");
   }
   PrintStr("/Dest [");
   WriteInteger(4*(fNbPage-1)+kObjFirstPage);
   PrintStr(" 0 R /XYZ null null 0]@");
   PrintStr("/Parent");
   WriteInteger(kObjContents);
   PrintStr(" 0 R");
   PrintStr("@");
   if (fNbPage > 1) {
      PrintStr("/Prev");
      WriteInteger(4*(fNbPage-2)+kObjFirstPage+3);
      PrintStr(" 0 R");
      PrintStr("@");
   }
   PrintStr(">>@");

   NewObject(kObjOutlines);
   PrintStr("<<@");
   PrintStr("/Type /Outlines@");
   PrintStr("/Count");
   WriteInteger(fNbPage+1);
   PrintStr("@");
   PrintStr("/First");
   WriteInteger(kObjContents);
   PrintStr(" 0 R");
   PrintStr("@");
   PrintStr("/Last");
   WriteInteger(kObjContents);
   PrintStr(" 0 R");
   PrintStr("@");
   PrintStr(">>@");
   PrintStr("endobj@");

   NewObject(kObjContents);
   PrintStr("<<@");
   PrintStr("/Title (Contents)@");
   PrintStr("/Dest [");
   WriteInteger(kObjFirstPage);
   PrintStr(" 0 R /XYZ null null 0]@");
   PrintStr("/Count");
   WriteInteger(fNbPage);
   PrintStr("@");
   PrintStr("/Parent");
   WriteInteger(kObjOutlines);
   PrintStr(" 0 R");
   PrintStr("@");
   PrintStr("/First");
   WriteInteger(kObjFirstPage+3);
   PrintStr(" 0 R");
   PrintStr("@");
   PrintStr("/Last");
   WriteInteger(4*(fNbPage-1)+kObjFirstPage+3);
   PrintStr(" 0 R");
   PrintStr("@");
   PrintStr(">>@");

   // List of all the pages
   NewObject(kObjPages);
   PrintStr("<<@");
   PrintStr("/Type /Pages@");
   PrintStr("/Count");
   WriteInteger(fNbPage);
   PrintStr("@");
   PrintStr("/Kids [");
   for (i=1; i<=fNbPage; i++) {
      WriteInteger(4*(i-1)+kObjFirstPage);
      PrintStr(" 0 R");
   }
   PrintStr(" ]");
   PrintStr("@");
   PrintStr(">>@");
   PrintStr("endobj@");

   NewObject(kObjTransList);
   PrintStr("<<@");
   for (i=0; i<(int)fAlphas.size(); i++) {
      PrintStr(
      Form("/ca%3.2f << /Type /ExtGState /ca %3.2f >> /CA%3.2f << /Type /ExtGState /CA %3.2f >>@",
      fAlphas[i],fAlphas[i],fAlphas[i],fAlphas[i]));
   }
   PrintStr(">>@");
   PrintStr("endobj@");
   if (fAlphas.size()) fAlphas.clear();

   // Cross-Reference Table
   Int_t refInd = fNByte;
   PrintStr("xref@");
   PrintStr("0");
   WriteInteger(fNbObj+1);
   PrintStr("@");
   PrintStr("0000000000 65535 f @");
   char str[21];
   for (i=0; i<fNbObj; i++) {
      snprintf(str,21,"%10.10d 00000 n @",fObjPos[i]);
      PrintStr(str);
   }

   // Trailer
   PrintStr("trailer@");
   PrintStr("<<@");
   PrintStr("/Size");
   WriteInteger(fNbObj+1);
   PrintStr("@");
   PrintStr("/Root");
   WriteInteger(kObjRoot);
   PrintStr(" 0 R");
   PrintStr("@");
   PrintStr("/Info");
   WriteInteger(kObjInfo);
   PrintStr(" 0 R@");
   PrintStr(">>@");
   PrintStr("startxref@");
   WriteInteger(refInd, 0);
   PrintStr("@");
   PrintStr("%%EOF@");

   // Close file stream
   if (fStream) { fStream->close(); delete fStream; fStream = 0;}

   gVirtualPS = 0;
}


//______________________________________________________________________________
void TPDF::DrawBox(Double_t x1, Double_t y1, Double_t x2, Double_t  y2)
{
   // Draw a Box

   static Double_t x[4], y[4];
   Double_t ix1 = XtoPDF(x1);
   Double_t ix2 = XtoPDF(x2);
   Double_t iy1 = YtoPDF(y1);
   Double_t iy2 = YtoPDF(y2);
   Int_t fillis = fFillStyle/1000;
   Int_t fillsi = fFillStyle%1000;

   if (fillis == 3 || fillis == 2) {
      if (fillsi > 99) {
         x[0] = x1;   y[0] = y1;
         x[1] = x2;   y[1] = y1;
         x[2] = x2;   y[2] = y2;
         x[3] = x1;   y[3] = y2;
         return;
      }
      if (fillsi > 0 && fillsi < 26) {
         x[0] = x1;   y[0] = y1;
         x[1] = x2;   y[1] = y1;
         x[2] = x2;   y[2] = y2;
         x[3] = x1;   y[3] = y2;
         DrawPS(-4, &x[0], &y[0]);
      }
      if (fillsi == -3) {
         SetColor(5);
         WriteReal(ix1);
         WriteReal(iy1);
         WriteReal(ix2 - ix1);
         WriteReal(iy2 - iy1);
         PrintFast(6," re f*");
      }
   }
   if (fillis == 1) {
      SetColor(fFillColor);
      WriteReal(ix1);
      WriteReal(iy1);
      WriteReal(ix2 - ix1);
      WriteReal(iy2 - iy1);
      PrintFast(6," re f*");
   }
   if (fillis == 0) {
      SetColor(fLineColor);
      WriteReal(ix1);
      WriteReal(iy1);
      WriteReal(ix2 - ix1);
      WriteReal(iy2 - iy1);
      PrintFast(5," re S");
   }
}


//______________________________________________________________________________
void TPDF::DrawFrame(Double_t xl, Double_t yl, Double_t xt, Double_t  yt,
                            Int_t mode, Int_t border, Int_t dark, Int_t light)
{
   // Draw a Frame around a box
   //
   // mode = -1  box looks as it is behind the screen
   // mode =  1  box looks as it is in front of the screen
   // border is the border size in already precomputed PDF units
   // dark  is the color for the dark part of the frame
   // light is the color for the light part of the frame

   static Double_t xps[7], yps[7];
   Int_t i;

   // Draw top&left part of the box
   if (mode == -1) SetColor(dark);
   else            SetColor(light);
   xps[0] = XtoPDF(xl);          yps[0] = YtoPDF(yl);
   xps[1] = xps[0] + border;     yps[1] = yps[0] + border;
   xps[2] = xps[1];              yps[2] = YtoPDF(yt) - border;
   xps[3] = XtoPDF(xt) - border; yps[3] = yps[2];
   xps[4] = XtoPDF(xt);          yps[4] = YtoPDF(yt);
   xps[5] = xps[0];              yps[5] = yps[4];
   xps[6] = xps[0];              yps[6] = yps[0];

   MoveTo(xps[0], yps[0]);
   for (i=1;i<7;i++) LineTo(xps[i], yps[i]);
   PrintFast(3," f*");

   // Draw bottom&right part of the box
   if (mode == -1) SetColor(light);
   else            SetColor(dark);
   xps[0] = XtoPDF(xl);          yps[0] = YtoPDF(yl);
   xps[1] = xps[0] + border;     yps[1] = yps[0] + border;
   xps[2] = XtoPDF(xt) - border; yps[2] = yps[1];
   xps[3] = xps[2];              yps[3] = YtoPDF(yt) - border;
   xps[4] = XtoPDF(xt);          yps[4] = YtoPDF(yt);
   xps[5] = xps[4];              yps[5] = yps[0];
   xps[6] = xps[0];              yps[6] = yps[0];

   MoveTo(xps[0], yps[0]);
   for (i=1;i<7;i++) LineTo(xps[i], yps[i]);
   PrintFast(3," f*");
}


//______________________________________________________________________________
void TPDF::DrawHatch(Float_t, Float_t, Int_t, Float_t *, Float_t *)
{
   // Draw Fill area with hatch styles

   Warning("DrawHatch", "hatch fill style not yet implemented");
}


//______________________________________________________________________________
void TPDF::DrawHatch(Float_t, Float_t, Int_t, Double_t *, Double_t *)
{
   // Draw Fill area with hatch styles

   Warning("DrawHatch", "hatch fill style not yet implemented");
}


//______________________________________________________________________________
void TPDF::DrawPolyLine(Int_t nn, TPoints *xy)
{
   // Draw a PolyLine
   //
   //  Draw a polyline through  the points xy.
   //  If NN=1 moves only to point x,y.
   //  If NN=0 the x,y are  written  in the PDF file
   //     according to the current transformation.
   //  If NN>0 the line is clipped as a line.
   //  If NN<0 the line is clipped as a fill area.

   Int_t  n;

   Style_t linestylesav = fLineStyle;
   Width_t linewidthsav = fLineWidth;

   if (nn > 0) {
      n = nn;
      SetLineStyle(fLineStyle);
      SetLineWidth(fLineWidth);
      SetColor(Int_t(fLineColor));
   } else {
      n = -nn;
      SetLineStyle(1);
      SetLineWidth(1);
      SetColor(Int_t(fLineColor));
   }

   WriteReal(XtoPDF(xy[0].GetX()));
   WriteReal(YtoPDF(xy[0].GetY()));
   if (n <= 1) {
      if (n == 0) return;
      PrintFast(2," m");
      return;
   }

   PrintFast(2," m");

   for (Int_t i=1;i<n;i++) LineTo(XtoPDF(xy[i].GetX()), YtoPDF(xy[i].GetY()));

   if (nn > 0) {
      if (xy[0].GetX() == xy[n-1].GetX() && xy[0].GetY() == xy[n-1].GetY()) PrintFast(3," cl");
      PrintFast(2," S");
   } else {
      PrintFast(3," f*");
   }

   SetLineStyle(linestylesav);
   SetLineWidth(linewidthsav);
}


//______________________________________________________________________________
void TPDF::DrawPolyLineNDC(Int_t nn, TPoints *xy)
{
   // Draw a PolyLine in NDC space
   //
   //  Draw a polyline through the points xy.
   //  If NN=1 moves only to point x,y.
   //  If NN=0 the x,y are  written in the PDF file
   //     according to the current transformation.
   //  If NN>0 the line is clipped as a line.
   //  If NN<0 the line is clipped as a fill area.

   Int_t  n;

   Style_t linestylesav = fLineStyle;
   Width_t linewidthsav = fLineWidth;

   if (nn > 0) {
      n = nn;
      SetLineStyle(fLineStyle);
      SetLineWidth(fLineWidth);
      SetColor(Int_t(fLineColor));
   } else {
      n = -nn;
      SetLineStyle(1);
      SetLineWidth(1);
      SetColor(Int_t(fLineColor));
   }

   WriteReal(UtoPDF(xy[0].GetX()));
   WriteReal(VtoPDF(xy[0].GetY()));
   if (n <= 1) {
      if (n == 0) return;
      PrintFast(2," m");
      return;
   }

   PrintFast(2," m");

   for (Int_t i=1;i<n;i++) LineTo(UtoPDF(xy[i].GetX()), VtoPDF(xy[i].GetY()));

   if (nn > 0) {
      if (xy[0].GetX() == xy[n-1].GetX() && xy[0].GetY() == xy[n-1].GetY()) PrintFast(3," cl");
      PrintFast(2," S");
   } else {
      PrintFast(3," f*");
   }

   SetLineStyle(linestylesav);
   SetLineWidth(linewidthsav);
}


//______________________________________________________________________________
void TPDF::DrawPolyMarker(Int_t n, Float_t *xw, Float_t *yw)
{
   // Draw markers at the n WC points xw, yw

   Style_t linestylesav = fLineStyle;
   Width_t linewidthsav = fLineWidth;
   SetLineStyle(1);
   SetLineWidth(1);
   SetColor(Int_t(fMarkerColor));
   Int_t ms = abs(fMarkerStyle);

   if (ms >= 6 && ms <= 19) ms = 20;
   if (ms == 4) ms = 24;

   // Define the marker size
   Float_t msize  = fMarkerSize;
   if (fMarkerStyle == 1) {
     msize = 1.;
   } else if (fMarkerStyle == 6) {
     msize = 1.;
   } else if (fMarkerStyle == 7) {
     msize = 1.5;
   } else {
      const Int_t kBASEMARKER = 8;
      Float_t sbase = msize*kBASEMARKER;
      Float_t s2x = sbase / Float_t(gPad->GetWw() * gPad->GetAbsWNDC());
      msize = this->UtoPDF(s2x) - this->UtoPDF(0);
   }

   Double_t m  = msize;
   Double_t m2 = m/2;
   Double_t m3 = m/3;
   Double_t m4 = m2*1.333333333333;
   Double_t m6 = m/6;

   // Draw the marker according to the type
   Double_t ix,iy;
   for (Int_t i=0;i<n;i++) {
      ix = XtoPDF(xw[i]);
      iy = YtoPDF(yw[i]);
      // Dot (.)
      if (ms == 1) {
         MoveTo(ix-1, iy);
         LineTo(ix  , iy);
      // Plus (+)
      } else if (ms == 2) {
         MoveTo(ix-m2, iy);
         LineTo(ix+m2, iy);
         MoveTo(ix   , iy-m2);
         LineTo(ix   , iy+m2);
      // X shape (X)
      } else if (ms == 5) {
         MoveTo(ix-m2, iy-m2);
         LineTo(ix+m2, iy+m2);
         MoveTo(ix-m2, iy+m2);
         LineTo(ix+m2, iy-m2);
      // Asterisk shape (*)
      } else if (ms == 3 || ms == 31) {
         MoveTo(ix-m2, iy);
         LineTo(ix+m2, iy);
         MoveTo(ix   , iy-m2);
         LineTo(ix   , iy+m2);
         MoveTo(ix-m2, iy-m2);
         LineTo(ix+m2, iy+m2);
         MoveTo(ix-m2, iy+m2);
         LineTo(ix+m2, iy-m2);
      // Circle
      } else if (ms == 24 || ms == 20) {
         MoveTo(ix-m2, iy);
         WriteReal(ix-m2); WriteReal(iy+m4);
         WriteReal(ix+m2); WriteReal(iy+m4);
         WriteReal(ix+m2); WriteReal(iy)   ; PrintFast(2," c");
         WriteReal(ix+m2); WriteReal(iy-m4);
         WriteReal(ix-m2); WriteReal(iy-m4);
         WriteReal(ix-m2); WriteReal(iy)   ; PrintFast(4," c h");
      // Square
      } else if (ms == 25 || ms == 21) {
         WriteReal(ix-m2); WriteReal(iy-m2);
         WriteReal(m)    ; WriteReal(m)    ; PrintFast(3," re");
      // Down triangle
      } else if (ms == 23 || ms == 32) {
         MoveTo(ix   , iy-m2);
         LineTo(ix+m2, iy+m2);
         LineTo(ix-m2, iy+m2);
         PrintFast(2," h");
      // Up triangle
      } else if (ms == 26 || ms == 22) {
         MoveTo(ix-m2, iy-m2);
         LineTo(ix+m2, iy-m2);
         LineTo(ix   , iy+m2);
         PrintFast(2," h");
      } else if (ms == 27 || ms == 33) {
         MoveTo(ix   , iy-m2);
         LineTo(ix+m3, iy);
         LineTo(ix   , iy+m2);
         LineTo(ix-m3, iy)   ;
         PrintFast(2," h");
      } else if (ms == 28 || ms == 34) {
         MoveTo(ix-m6, iy-m6);
         LineTo(ix-m6, iy-m2);
         LineTo(ix+m6, iy-m2);
         LineTo(ix+m6, iy-m6);
         LineTo(ix+m2, iy-m6);
         LineTo(ix+m2, iy+m6);
         LineTo(ix+m6, iy+m6);
         LineTo(ix+m6, iy+m2);
         LineTo(ix-m6, iy+m2);
         LineTo(ix-m6, iy+m6);
         LineTo(ix-m2, iy+m6);
         LineTo(ix-m2, iy-m6);
         PrintFast(2," h");
      } else if (ms == 29 || ms == 30) {
         MoveTo(ix           , iy+m2);
         LineTo(ix+0.112255*m, iy+0.15451*m);
         LineTo(ix+0.47552*m , iy+0.15451*m);
         LineTo(ix+0.181635*m, iy-0.05902*m);
         LineTo(ix+0.29389*m , iy-0.40451*m);
         LineTo(ix           , iy-0.19098*m);
         LineTo(ix-0.29389*m , iy-0.40451*m);
         LineTo(ix-0.181635*m, iy-0.05902*m);
         LineTo(ix-0.47552*m , iy+0.15451*m);
         LineTo(ix-0.112255*m, iy+0.15451*m);
         PrintFast(2," h");
      } else {
         MoveTo(ix-1, iy);
         LineTo(ix  , iy);
      }
   }

   if ((ms > 19 && ms < 24) || ms == 29 || ms == 33 || ms == 34) {
      PrintFast(2," f");
   } else {
      PrintFast(2," S");
   }

   SetLineStyle(linestylesav);
   SetLineWidth(linewidthsav);
}


//______________________________________________________________________________
void TPDF::DrawPolyMarker(Int_t n, Double_t *xw, Double_t *yw)
{
   // Draw markers at the n WC points xw, yw

   Style_t linestylesav = fLineStyle;
   Width_t linewidthsav = fLineWidth;
   SetLineStyle(1);
   SetLineWidth(1);
   SetColor(Int_t(fMarkerColor));
   Int_t ms = abs(fMarkerStyle);

   if (ms >= 6 && ms <= 19) ms = 20;
   if (ms == 4) ms = 24;

   // Define the marker size
   Float_t msize  = fMarkerSize;
   if (fMarkerStyle == 1) {
     msize = 1.;
   } else if (fMarkerStyle == 6) {
     msize = 1.5;
   } else if (fMarkerStyle == 7) {
     msize = 3.;
   } else {
      const Int_t kBASEMARKER = 8;
      Float_t sbase = msize*kBASEMARKER;
      Float_t s2x = sbase / Float_t(gPad->GetWw() * gPad->GetAbsWNDC());
      msize = this->UtoPDF(s2x) - this->UtoPDF(0);
   }

   Double_t m  = msize;
   Double_t m2 = m/2;
   Double_t m3 = m/3;
   Double_t m4 = m2*1.333333333333;
   Double_t m6 = m/6;

   // Draw the marker according to the type
   Double_t ix,iy;
   for (Int_t i=0;i<n;i++) {
      ix = XtoPDF(xw[i]);
      iy = YtoPDF(yw[i]);
      // Dot (.)
      if (ms == 1) {
         MoveTo(ix-1, iy);
         LineTo(ix  , iy);
      // Plus (+)
      } else if (ms == 2) {
         MoveTo(ix-m2, iy);
         LineTo(ix+m2, iy);
         MoveTo(ix   , iy-m2);
         LineTo(ix   , iy+m2);
      // X shape (X)
      } else if (ms == 5) {
         MoveTo(ix-m2, iy-m2);
         LineTo(ix+m2, iy+m2);
         MoveTo(ix-m2, iy+m2);
         LineTo(ix+m2, iy-m2);
      // Asterisk shape (*)
      } else if (ms == 3 || ms == 31) {
         MoveTo(ix-m2, iy);
         LineTo(ix+m2, iy);
         MoveTo(ix   , iy-m2);
         LineTo(ix   , iy+m2);
         MoveTo(ix-m2, iy-m2);
         LineTo(ix+m2, iy+m2);
         MoveTo(ix-m2, iy+m2);
         LineTo(ix+m2, iy-m2);
      // Circle
      } else if (ms == 24 || ms == 20) {
         MoveTo(ix-m2, iy);
         WriteReal(ix-m2); WriteReal(iy+m4);
         WriteReal(ix+m2); WriteReal(iy+m4);
         WriteReal(ix+m2); WriteReal(iy)   ; PrintFast(2," c");
         WriteReal(ix+m2); WriteReal(iy-m4);
         WriteReal(ix-m2); WriteReal(iy-m4);
         WriteReal(ix-m2); WriteReal(iy)   ; PrintFast(4," c h");
      // Square
      } else if (ms == 25 || ms == 21) {
         WriteReal(ix-m2); WriteReal(iy-m2);
         WriteReal(m)    ; WriteReal(m)    ; PrintFast(3," re");
      // Down triangle
      } else if (ms == 23 || ms == 32) {
         MoveTo(ix   , iy-m2);
         LineTo(ix+m2, iy+m2);
         LineTo(ix-m2, iy+m2);
         PrintFast(2," h");
      // Up triangle
      } else if (ms == 26 || ms == 22) {
         MoveTo(ix-m2, iy-m2);
         LineTo(ix+m2, iy-m2);
         LineTo(ix   , iy+m2);
         PrintFast(2," h");
      } else if (ms == 27 || ms == 33) {
         MoveTo(ix   , iy-m2);
         LineTo(ix+m3, iy);
         LineTo(ix   , iy+m2);
         LineTo(ix-m3, iy)   ;
         PrintFast(2," h");
      } else if (ms == 28 || ms == 34) {
         MoveTo(ix-m6, iy-m6);
         LineTo(ix-m6, iy-m2);
         LineTo(ix+m6, iy-m2);
         LineTo(ix+m6, iy-m6);
         LineTo(ix+m2, iy-m6);
         LineTo(ix+m2, iy+m6);
         LineTo(ix+m6, iy+m6);
         LineTo(ix+m6, iy+m2);
         LineTo(ix-m6, iy+m2);
         LineTo(ix-m6, iy+m6);
         LineTo(ix-m2, iy+m6);
         LineTo(ix-m2, iy-m6);
         PrintFast(2," h");
      } else if (ms == 29 || ms == 30) {
         MoveTo(ix           , iy+m2);
         LineTo(ix+0.112255*m, iy+0.15451*m);
         LineTo(ix+0.47552*m , iy+0.15451*m);
         LineTo(ix+0.181635*m, iy-0.05902*m);
         LineTo(ix+0.29389*m , iy-0.40451*m);
         LineTo(ix           , iy-0.19098*m);
         LineTo(ix-0.29389*m , iy-0.40451*m);
         LineTo(ix-0.181635*m, iy-0.05902*m);
         LineTo(ix-0.47552*m , iy+0.15451*m);
         LineTo(ix-0.112255*m, iy+0.15451*m);
         PrintFast(2," h");
      } else {
         MoveTo(ix-1, iy);
         LineTo(ix  , iy);
      }
   }

   if ((ms > 19 && ms < 24) || ms == 29 || ms == 33 || ms == 34) {
      PrintFast(2," f");
   } else {
      PrintFast(2," S");
   }

   SetLineStyle(linestylesav);
   SetLineWidth(linewidthsav);
}


//______________________________________________________________________________
void TPDF::DrawPS(Int_t nn, Float_t *xw, Float_t *yw)
{
   // Draw a PolyLine
   //
   //  Draw a polyline through the points xw,yw.
   //  If nn=1 moves only to point xw,yw.
   //  If nn=0 the XW(1) and YW(1) are  written  in the PDF file
   //          according to the current NT.
   //  If nn>0 the line is clipped as a line.
   //  If nn<0 the line is clipped as a fill area.

   static Float_t dyhatch[24] = {.0075,.0075,.0075,.0075,.0075,.0075,.0075,.0075,
                                 .01  ,.01  ,.01  ,.01  ,.01  ,.01  ,.01  ,.01  ,
                                 .015 ,.015 ,.015 ,.015 ,.015 ,.015 ,.015 ,.015};
   static Float_t anglehatch[24] = {180, 90,135, 45,150, 30,120, 60,
                                    180, 90,135, 45,150, 30,120, 60,
                                    180, 90,135, 45,150, 30,120, 60};
   Int_t  n = 0, fais = 0 , fasi = 0;

   Style_t linestylesav = fLineStyle;
   Width_t linewidthsav = fLineWidth;

   if (nn > 0) {
      n = nn;
      SetLineStyle(fLineStyle);
      SetLineWidth(fLineWidth);
      SetColor(Int_t(fLineColor));
   }
   if (nn < 0) {
      n = -nn;
      SetLineStyle(1);
      SetLineWidth(1);
      SetColor(Int_t(fFillColor));
      fais = fFillStyle/1000;
      fasi = fFillStyle%1000;
      if (fais == 3 || fais == 2) {
         if (fasi > 100 && fasi <125) {
            DrawHatch(dyhatch[fasi-101],anglehatch[fasi-101], n, xw, yw);
            SetLineStyle(linestylesav);
            SetLineWidth(linewidthsav);
            return;
         }
         if (fasi > 0 && fasi < 26) {
            SetFillPatterns(fasi, Int_t(fFillColor));
         }
      }
   }

   WriteReal(XtoPDF(xw[0]));
   WriteReal(YtoPDF(yw[0]));
   if (n <= 1) {
      if (n == 0) return;
      PrintFast(2," m");
      return;
   }

   PrintFast(2," m");

   for (Int_t i=1;i<n;i++) LineTo(XtoPDF(xw[i]), YtoPDF(yw[i]));

   if (nn > 0) {
      if (xw[0] == xw[n-1] && yw[0] == yw[n-1]) PrintFast(2," h");
      PrintFast(2," S");
   } else {
      if (fais == 0) {PrintFast(2," s"); return;}
      if (fais == 3 || fais == 2) {
         if (fasi > 0 && fasi < 26) {
            PrintFast(3," f*");
            fRed   = -1;
            fGreen = -1;
            fBlue  = -1;
            fAlpha = -1.;
         }
         SetLineStyle(linestylesav);
         SetLineWidth(linewidthsav);
         return;
      }
      PrintFast(3," f*");
   }

   SetLineStyle(linestylesav);
   SetLineWidth(linewidthsav);
}


//______________________________________________________________________________
void TPDF::DrawPS(Int_t nn, Double_t *xw, Double_t *yw)
{
   // Draw a PolyLine
   //
   // Draw a polyline through  the points xw,yw.
   // If nn=1 moves only to point xw,yw.
   // If nn=0 the xw(1) and YW(1) are  written  in the PDF file
   //         according to the current NT.
   // If nn>0 the line is clipped as a line.
   // If nn<0 the line is clipped as a fill area.

   static Float_t dyhatch[24] = {.0075,.0075,.0075,.0075,.0075,.0075,.0075,.0075,
                                 .01  ,.01  ,.01  ,.01  ,.01  ,.01  ,.01  ,.01  ,
                                 .015 ,.015 ,.015 ,.015 ,.015 ,.015 ,.015 ,.015};
   static Float_t anglehatch[24] = {180, 90,135, 45,150, 30,120, 60,
                                    180, 90,135, 45,150, 30,120, 60,
                                    180, 90,135, 45,150, 30,120, 60};
   Int_t  n = 0, fais = 0, fasi = 0;

   Style_t linestylesav = fLineStyle;
   Width_t linewidthsav = fLineWidth;

   if (nn > 0) {
      n = nn;
      SetLineStyle(fLineStyle);
      SetLineWidth(fLineWidth);
      SetColor(Int_t(fLineColor));
   }
   if (nn < 0) {
      n = -nn;
      SetLineStyle(1);
      SetLineWidth(1);
      SetColor(Int_t(fFillColor));
      fais = fFillStyle/1000;
      fasi = fFillStyle%1000;
      if (fais == 3 || fais == 2) {
         if (fasi > 100 && fasi <125) {
            DrawHatch(dyhatch[fasi-101],anglehatch[fasi-101], n, xw, yw);
            SetLineStyle(linestylesav);
            SetLineWidth(linewidthsav);
            return;
         }
         if (fasi > 0 && fasi < 26) {
            SetFillPatterns(fasi, Int_t(fFillColor));
         }
      }
   }

   WriteReal(XtoPDF(xw[0]));
   WriteReal(YtoPDF(yw[0]));
   if (n <= 1) {
      if (n == 0) return;
      PrintFast(2," m");
      return;
   }

   PrintFast(2," m");

   for (Int_t i=1;i<n;i++) LineTo(XtoPDF(xw[i]), YtoPDF(yw[i]));

   if (nn > 0) {
      if (xw[0] == xw[n-1] && yw[0] == yw[n-1]) PrintFast(2," h");
      PrintFast(2," S");
   } else {
      if (fais == 0) {PrintFast(2," s"); return;}
      if (fais == 3 || fais == 2) {
         if (fasi > 0 && fasi < 26) {
            PrintFast(3," f*");
            fRed   = -1;
            fGreen = -1;
            fBlue  = -1;
            fAlpha = -1.;
         }
         SetLineStyle(linestylesav);
         SetLineWidth(linewidthsav);
         return;
      }
      PrintFast(3," f*");
   }

   SetLineStyle(linestylesav);
   SetLineWidth(linewidthsav);
}


//______________________________________________________________________________
void TPDF::FontEncode()
{
   // Font encoding

   static const char *sdtfonts[] = {
   "/Times-Italic"         , "/Times-Bold"         , "/Times-BoldItalic",
   "/Helvetica"            , "/Helvetica-Oblique"  , "/Helvetica-Bold"  ,
   "/Helvetica-BoldOblique", "/Courier"            , "/Courier-Oblique" ,
   "/Courier-Bold"         , "/Courier-BoldOblique", "/Symbol"          ,
   "/Times-Roman"          , "/ZapfDingbats"       , "/Symbol"};

   for (Int_t i=0; i<kNumberOfFonts; i++) {
      NewObject(kObjFont+i);
      PrintStr("<<@");
      PrintStr("/Type /Font@");
      PrintStr("/Subtype /Type1@");
      PrintStr("/Name /F");
      WriteInteger(i+1,0);
      PrintStr("@");
      PrintStr("/BaseFont ");
      PrintStr(sdtfonts[i]);
      PrintStr("@");
      if (i!=11 && i!=13 && i!=14) {
         PrintStr("/Encoding /WinAnsiEncoding");
         PrintStr("@");
      }
      PrintStr(">>@");
      PrintStr("endobj@");
   }
}


//______________________________________________________________________________
void TPDF::LineTo(Double_t x, Double_t y)
{
   // Draw a line to a new position

   WriteReal(x);
   WriteReal(y);
   PrintFast(2," l");
}


//______________________________________________________________________________
void TPDF::MoveTo(Double_t x, Double_t y)
{
   // Move to a new position

   WriteReal(x);
   WriteReal(y);
   PrintFast(2," m");
}


//______________________________________________________________________________
void TPDF::NewObject(Int_t n)
{
   // Create a new object in the PDF file

   if (!fObjPos || n >= fObjPosSize) {
      Int_t newN = TMath::Max(2*fObjPosSize,n+1);
      Int_t *saveo = new Int_t [newN];
      if (fObjPos && fObjPosSize) {
         memcpy(saveo,fObjPos,fObjPosSize*sizeof(Int_t));
         memset(&saveo[fObjPosSize],0,(newN-fObjPosSize)*sizeof(Int_t));
         delete [] fObjPos;
      }
      fObjPos     = saveo;
      fObjPosSize = newN;
   }
   fObjPos[n-1] = fNByte;
   fNbObj       = TMath::Max(fNbObj,n);
   WriteInteger(n, 0);
   PrintStr(" 0 obj");
   PrintStr("@");
}


//______________________________________________________________________________
void TPDF::NewPage()
{
   // Start a new PDF page.

   if (!fPageNotEmpty) return;

   // Compute pad conversion coefficients
   if (gPad) {
      Double_t ww   = gPad->GetWw();
      Double_t wh   = gPad->GetWh();
      fYsize        = fXsize*wh/ww;
   } else {
      fYsize = 27;
   }

   fNbPage++;

   if (fNbPage>1) {
      // Close the currently opened page
      WriteCompressedBuffer();
      PrintStr("endstream@");
      Int_t streamLength = fNByte-fStartStream-10;
      PrintStr("endobj@");
      NewObject(4*(fNbPage-2)+kObjFirstPage+2);
      WriteInteger(streamLength, 0);
      PrintStr("@");
      PrintStr("endobj@");
      NewObject(4*(fNbPage-2)+kObjFirstPage+3);
      PrintStr("<<@");
      if (!strstr(GetTitle(),"PDF")) {
         PrintStr("/Title (");
         PrintStr(GetTitle());
         PrintStr(")@");
      } else {
         PrintStr("/Title (Page");
         WriteInteger(fNbPage-1);
         PrintStr(")@");
      }
      PrintStr("/Dest [");
      WriteInteger(4*(fNbPage-2)+kObjFirstPage);
      PrintStr(" 0 R /XYZ null null 0]@");
      PrintStr("/Parent");
      WriteInteger(kObjContents);
      PrintStr(" 0 R");
      PrintStr("@");
      PrintStr("/Next");
      WriteInteger(4*(fNbPage-1)+kObjFirstPage+3);
      PrintStr(" 0 R");
      PrintStr("@");
      if (fNbPage>2) {
         PrintStr("/Prev");
         WriteInteger(4*(fNbPage-3)+kObjFirstPage+3);
         PrintStr(" 0 R");
         PrintStr("@");
      }
      PrintStr(">>@");
   }

   // Start a new page
   NewObject(4*(fNbPage-1)+kObjFirstPage);
   PrintStr("<<@");
   PrintStr("/Type /Page@");
   PrintStr("@");
   PrintStr("/Parent");
   WriteInteger(kObjPages);
   PrintStr(" 0 R");
   PrintStr("@");

   Double_t xlow=0, ylow=0, xup=1, yup=1;
   if (gPad) {
      xlow = gPad->GetAbsXlowNDC();
      xup  = xlow + gPad->GetAbsWNDC();
      ylow = gPad->GetAbsYlowNDC();
      yup  = ylow + gPad->GetAbsHNDC();
   }

   PrintStr("/MediaBox [");
   Double_t width, height;
   switch (fPageFormat) {
      case 100 :
         width  = 8.5*2.54;
         height = 11.*2.54;
         break;
      case 200 :
         width  = 8.5*2.54;
         height = 14.*2.54;
         break;
      case 300 :
         width  = 11.*2.54;
         height = 17.*2.54;
         break;
      default  :
         width  = 21.0*TMath::Power(TMath::Sqrt(2.), 4-fPageFormat);
         height = 29.7*TMath::Power(TMath::Sqrt(2.), 4-fPageFormat);
   };
   WriteReal(CMtoPDF(fXsize*xlow));
   WriteReal(CMtoPDF(fYsize*ylow));
   WriteReal(CMtoPDF(width));
   WriteReal(CMtoPDF(height));
   PrintStr("]");
   PrintStr("@");

   Double_t xmargin = CMtoPDF(0.7);
   Double_t ymargin = 0;
   if (fPageOrientation == 1) ymargin = CMtoPDF(TMath::Sqrt(2.)*0.7);
   if (fPageOrientation == 2) ymargin = CMtoPDF(height)-CMtoPDF(0.7);

   PrintStr("/CropBox [");
   if (fPageOrientation == 1) {
      WriteReal(xmargin);
      WriteReal(ymargin);
      WriteReal(xmargin+CMtoPDF(fXsize*xup));
      WriteReal(ymargin+CMtoPDF(fYsize*yup));
   }
   if (fPageOrientation == 2) {
      WriteReal(xmargin);
      WriteReal(CMtoPDF(height)-CMtoPDF(fXsize*xup)-xmargin);
      WriteReal(xmargin+CMtoPDF(fYsize*yup));
      WriteReal(CMtoPDF(height)-xmargin);
   }
   PrintStr("]");
   PrintStr("@");

   if (fPageOrientation == 1) PrintStr("/Rotate 0@");
   if (fPageOrientation == 2) PrintStr("/Rotate 90@");

   PrintStr("/Resources");
   WriteInteger(kObjPageResources);
   PrintStr(" 0 R");
   PrintStr("@");

   PrintStr("/Contents");
   WriteInteger(4*(fNbPage-1)+kObjFirstPage+1);
   PrintStr(" 0 R@");
   PrintStr(">>@");
   PrintStr("endobj@");

   NewObject(4*(fNbPage-1)+kObjFirstPage+1);
   PrintStr("<<@");
   PrintStr("/Length");
   WriteInteger(4*(fNbPage-1)+kObjFirstPage+2);
   PrintStr(" 0 R@");
   PrintStr("/Filter [/FlateDecode]@");
   PrintStr(">>@");
   PrintStr("stream@");
   fStartStream = fNByte;
   fCompress = kTRUE;

   // Force the line width definition next time TPDF::SetLineWidth will be called.
   fLineWidth = -1;

   // Force the color definition next time TPDF::SetColor will be called.
   fRed   = -1;
   fGreen = -1;
   fBlue  = -1;
   fAlpha = -1.;

   PrintStr("1 0 0 1");
   if (fPageOrientation == 2) {
      ymargin = CMtoPDF(height)-CMtoPDF(fXsize*xup)-xmargin;
      xmargin = xmargin+CMtoPDF(fYsize*yup);
   }
   WriteReal(xmargin);
   WriteReal(ymargin);
   PrintStr(" cm");
   if (fPageOrientation == 2) PrintStr(" 0 1 -1 0 0 0 cm");
}


//______________________________________________________________________________
void TPDF::Off()
{
   // Deactivate an already open PDF file

   gVirtualPS = 0;
}


//______________________________________________________________________________
void TPDF::On()
{
   // Activate an already open PDF file

   // fType is used to know if the PDF file is open. Unlike TPostScript, TPDF
   // has no "workstation type".

   if (!fType) {
      Error("On", "no PDF file open");
      Off();
      return;
   }
   gVirtualPS = this;
}


//______________________________________________________________________________
void TPDF::Open(const char *fname, Int_t wtype)
{
   // Open a PDF file

   Int_t i;

   if (fStream) {
      Warning("Open", "PDF file already open");
      return;
   }

   fLenBuffer = 0;
   fRed       = -1;
   fGreen     = -1;
   fBlue      = -1;
   fAlpha     = -1.;
   fType      = abs(wtype);
   SetLineScale(gStyle->GetLineScalePS()/4.);
   gStyle->GetPaperSize(fXsize, fYsize);
   Float_t xrange, yrange;
   if (gPad) {
      Double_t ww = gPad->GetWw();
      Double_t wh = gPad->GetWh();
      if (fType == 113) {
         ww *= gPad->GetWNDC();
         wh *= gPad->GetHNDC();
      }
      Double_t ratio = wh/ww;
      xrange = fXsize;
      yrange = fXsize*ratio;
      if (yrange > fYsize) { yrange = fYsize; xrange = yrange/ratio;}
      fXsize = xrange; fYsize = yrange;
   }

   // Open OS file
   fStream = new std::ofstream();
#ifdef R__WIN32
      fStream->open(fname, std::ofstream::out | std::ofstream::binary);
#else
      fStream->open(fname, std::ofstream::out);
#endif
   if (fStream == 0 || !fStream->good()) {
      printf("ERROR in TPDF::Open: Cannot open file:%s\n",fname);
      if (fStream == 0) return;
   }

   gVirtualPS = this;

   for (i=0; i<fSizBuffer; i++) fBuffer[i] = ' ';

   // The page orientation is last digit of PDF workstation type
   //  orientation = 1 for portrait
   //  orientation = 2 for landscape
   fPageOrientation = fType%10;
   if (fPageOrientation < 1 || fPageOrientation > 2) {
      Error("Open", "Invalid page orientation %d", fPageOrientation);
      return;
   }

   // format = 0-99 is the European page format (A4,A3 ...)
   // format = 100 is the US format  8.5x11.0 inch
   // format = 200 is the US format  8.5x14.0 inch
   // format = 300 is the US format 11.0x17.0 inch
   fPageFormat = fType/1000;
   if (fPageFormat == 0)  fPageFormat = 4;
   if (fPageFormat == 99) fPageFormat = 0;

   fRange = kFALSE;

   // Set a default range
   Range(fXsize, fYsize);

   fObjPos = 0;
   fObjPosSize = 0;
   fNbObj = 0;
   fNbPage = 0;

   PrintStr("%PDF-1.4@");
   PrintStr("%\342\343\317\323");
   PrintStr("@");

   NewObject(kObjRoot);
   PrintStr("<<@");
   PrintStr("/Type /Catalog@");
   PrintStr("/Pages");
   WriteInteger(kObjPages);
   PrintStr(" 0 R@");
   PrintStr("/Outlines");
   WriteInteger(kObjOutlines);
   PrintStr(" 0 R@");
   PrintStr("/PageMode /UseOutlines@");
   PrintStr(">>@");
   PrintStr("endobj@");

   NewObject(kObjInfo);
   PrintStr("<<@");
   PrintStr("/Creator (ROOT Version ");
   PrintStr(gROOT->GetVersion());
   PrintStr(")");
   PrintStr("@");
   PrintStr("/CreationDate (");
   TDatime t;
   char str[17];
   snprintf(str,17,"D:%4.4d%2.2d%2.2d%2.2d%2.2d%2.2d",
                t.GetYear()  , t.GetMonth(),
                t.GetDay()   , t.GetHour(),
                t.GetMinute(), t.GetSecond());
   PrintStr(str);
   PrintStr(")");
   PrintStr("@");
   PrintStr("/Title (");
   if (strlen(GetName())<=80) PrintStr(GetName());
   PrintStr(")");
   PrintStr("@");
   PrintStr("/Keywords (ROOT)@");
   PrintStr(">>@");
   PrintStr("endobj@");

   NewObject(kObjPageResources);
   PrintStr("<<@");
   PrintStr("/ProcSet [/PDF /Text]@");

   PrintStr("/Font@");
   PrintStr("<<@");
   for (i=0; i<kNumberOfFonts; i++) {
      PrintStr(" /F");
      WriteInteger(i+1,0);
      WriteInteger(kObjFont+i);
      PrintStr(" 0 R");
   }
   PrintStr("@");
   PrintStr(">>@");

   PrintStr("/ExtGState");
   WriteInteger(kObjTransList);
   PrintStr(" 0 R @");
   if (fAlphas.size()) fAlphas.clear();

   PrintStr("/ColorSpace << /Cs8");
   WriteInteger(kObjColorSpace);
   PrintStr(" 0 R >>");
   PrintStr("@");
   PrintStr("/Pattern");
   WriteInteger(kObjPatternList);
   PrintStr(" 0 R");
   PrintStr("@");
   PrintStr(">>@");
   PrintStr("endobj@");

   FontEncode();
   PatternEncode();

   NewPage();
   fPageNotEmpty = kFALSE;
}

//______________________________________________________________________________
void TPDF::PatternEncode()
{
   // Patterns encoding

   Int_t patternNb = kObjPattern;

   NewObject(kObjColorSpace);
   if (gStyle->GetColorModelPS()) {
      PrintStr("[/Pattern /DeviceCMYK]@");
   } else {
      PrintStr("[/Pattern /DeviceRGB]@");
   }
   PrintStr("endobj@");
   NewObject(kObjPatternResourses);
   PrintStr("<</ProcSet[/PDF]>>@");
   PrintStr("endobj@");

   NewObject(kObjPatternList);
   PrintStr("<<@");
   PrintStr(" /P01");
   WriteInteger(patternNb++);
   PrintStr(" 0 R");
   PrintStr(" /P02");
   WriteInteger(patternNb++);
   PrintStr(" 0 R");
   PrintStr(" /P03");
   WriteInteger(patternNb++);
   PrintStr(" 0 R");
   PrintStr(" /P04");
   WriteInteger(patternNb++);
   PrintStr(" 0 R");
   PrintStr(" /P05");
   WriteInteger(patternNb++);
   PrintStr(" 0 R");
   PrintStr(" /P06");
   WriteInteger(patternNb++);
   PrintStr(" 0 R");
   PrintStr(" /P07");
   WriteInteger(patternNb++);
   PrintStr(" 0 R");
   PrintStr(" /P08");
   WriteInteger(patternNb++);
   PrintStr(" 0 R");
   PrintStr(" /P09");
   WriteInteger(patternNb++);
   PrintStr(" 0 R");
   PrintStr(" /P10");
   WriteInteger(patternNb++);
   PrintStr(" 0 R");
   PrintStr(" /P11");
   WriteInteger(patternNb++);
   PrintStr(" 0 R");
   PrintStr(" /P12");
   WriteInteger(patternNb++);
   PrintStr(" 0 R");
   PrintStr(" /P13");
   WriteInteger(patternNb++);
   PrintStr(" 0 R");
   PrintStr(" /P14");
   WriteInteger(patternNb++);
   PrintStr(" 0 R");
   PrintStr(" /P15");
   WriteInteger(patternNb++);
   PrintStr(" 0 R");
   PrintStr(" /P16");
   WriteInteger(patternNb++);
   PrintStr(" 0 R");
   PrintStr(" /P17");
   WriteInteger(patternNb++);
   PrintStr(" 0 R");
   PrintStr(" /P18");
   WriteInteger(patternNb++);
   PrintStr(" 0 R");
   PrintStr(" /P19");
   WriteInteger(patternNb++);
   PrintStr(" 0 R");
   PrintStr(" /P20");
   WriteInteger(patternNb++);
   PrintStr(" 0 R");
   PrintStr(" /P21");
   WriteInteger(patternNb++);
   PrintStr(" 0 R");
   PrintStr(" /P22");
   WriteInteger(patternNb++);
   PrintStr(" 0 R");
   PrintStr(" /P23");
   WriteInteger(patternNb++);
   PrintStr(" 0 R");
   PrintStr(" /P24");
   WriteInteger(patternNb++);
   PrintStr(" 0 R");
   PrintStr(" /P25");
   WriteInteger(patternNb++);
   PrintStr(" 0 R@");
   PrintStr(">>@");
   PrintStr("endobj@");

   patternNb = kObjPattern;

   // P01
   NewObject(patternNb++);
   PrintStr("<</Type/Pattern/Matrix[1 0 0 1 20 28]/PatternType 1/Resources");
   WriteInteger(kObjPatternResourses);
   PrintStr(" 0 R/PaintType 2/TilingType 1/BBox[0 0 100 100]/XStep 98/YStep 4/Length 91/Filter/FlateDecode>>");
   PrintStr("@");
   fStream->write("stream",6); fNByte += 6;
   fStream->write("\r\nH\211*\3442T\310T\3402P0P04\200\340\242T\256p\205<\240\220\027P0K\301P\241\034(\254\340\253\020m\250\020k\240\220\302e\244`\242\220\313ei\t\244r\200\272\215A\034\v \225\003\2241\202\310\030\201e\f!2\206@N0W \027@\200\001\0|c\024\357\n", 93);
   fNByte += 93;
   PrintStr("endstream@");
   PrintStr("endobj@");

   // P02
   NewObject(patternNb++);
   PrintStr("<</Type/Pattern/Matrix[0.75 0 0 0.75 20 28]/PatternType 1/Resources");
   WriteInteger(kObjPatternResourses);
   PrintStr(" 0 R/PaintType 2/TilingType 1/BBox[0 0 100 100]/XStep 96/YStep 4/Length 92/Filter/FlateDecode>>@");
   PrintStr("@");
   fStream->write("stream",6); fNByte += 6;
   fStream->write("\r\nH\211$\2121\n\2000\024C\367\234\"G\370\277\025\321+\b\016\342\340P\334tP\252\240\213\3277\332!\204\274\227\v\316\2150\032\335J\356\025\023O\241Np\247\363\021f\317\344\214\234\215\v\002+\036h\033U\326/~\243Ve\231PL\370\215\027\343\032#\006\274\002\f\0\242`\025:\n", 94);
   fNByte += 94;
   PrintStr("endstream@");
   PrintStr("endobj@");

   // P03
   NewObject(patternNb++);
   PrintStr("<</Type/Pattern/Matrix[0.5 0 0 0.5 20 28]/PatternType 1/Resources");
   WriteInteger(kObjPatternResourses);
   PrintStr(" 0 R/PaintType 2/TilingType 1/BBox[0 0 100 100]/XStep 96/YStep 16/Length 93/Filter/FlateDecode>>@");
   PrintStr("@");
   fStream->write("stream",6); fNByte += 6;
   fStream->write("\r\nH\211$\2121\n\2000\024C\367\234\"G\370\261(\366\n\202\20388\210\233\016J\025t\361\372\376\332!\204\274\227\033\342N\030\215\262\222g\303\304\313Q\347\360\240\370:f\317Y\f\\\214+**\360Dls'\177\306\274\032\257\344\256.\252\376\215\212\221\217\021\003>\001\006\0\317\243\025\254\n", 95);
   fNByte += 95;
   PrintStr("endstream@");
   PrintStr("endobj@");

   // P04
   NewObject(patternNb++);
   PrintStr("<</Type/Pattern/Matrix[0.06 0 0 0.06 20 28]/PatternType 1/Resources");
   WriteInteger(kObjPatternResourses);
   PrintStr(" 0 R/PaintType 2/TilingType 1/BBox[0 0 100 100]/XStep 100/YStep 100/Length 63/Filter/FlateDecode>>");
   PrintStr("@");
   fStream->write("stream",6); fNByte += 6;
   fStream->write("\r\nH\211*\3442T\310T\3402P0P04\200\340\242T\256p\205<\240\220\027P0K\301D\241\034(\254\340\253\020\035k\240\220\002V\231\313\005S\233\303\025\314\025\310\005\020`\0\344\270\r\274\n", 65);
   fNByte += 65;
   PrintStr("endstream@");
   PrintStr("endobj@");

   // P05
   NewObject(patternNb++);
   PrintStr("<</Type/Pattern/Matrix[0.06 0 0 0.06 20 28]/PatternType 1/Resources");
   WriteInteger(kObjPatternResourses);
   PrintStr(" 0 R/PaintType 2/TilingType 1/BBox[0 0 100 100]/XStep 100/YStep 100/Length 66/Filter/FlateDecode>>");
   PrintStr("@");
   fStream->write("stream",6); fNByte += 6;
   fStream->write("\r\nH\211*\3442T\310T\3402P0P04\200\340\242T\256p\205<\240\220\027P0K\301D\241\034(\254\340\253\020\035k\240\220\302\005Q\223\313\005\"\r\024r\270\202\271\002\271\0\002\f\0\344\320\r\274\n", 68);
   fNByte += 68;
   PrintStr("endstream@");
   PrintStr("endobj@");

   // P06
   NewObject(patternNb++);
   PrintStr("<</Type/Pattern/Matrix[0.03 0 0 0.03 20 28]/PatternType 1/Resources");
   WriteInteger(kObjPatternResourses);
   PrintStr(" 0 R/PaintType 2/TilingType 1/BBox[0 0 100 100]/XStep 100/YStep 100/Length 66/Filter/FlateDecode>>");
   PrintStr("@");
   fStream->write("stream",6); fNByte += 6;
   fStream->write("\r\nH\211*\3442T\310T\3402P0P04\200\340\242T\256p\205<\240\220\027P0K\301D\241\034(\254\340\253\020\035k\240\220\302e\nR\232\v\242@js\270\202\271\002\271\0\002\f\0\345X\r\305\n", 68);
   fNByte += 68;
   PrintStr("endstream@");
   PrintStr("endobj@");

   // P07
   NewObject(patternNb++);
   PrintStr("<</Type/Pattern/Matrix[0.03 0 0 0.03 20 28]/PatternType 1/Resources");
   WriteInteger(kObjPatternResourses);
   PrintStr(" 0 R/PaintType 2/TilingType 1/BBox[0 0 100 100]/XStep 100/YStep 100/Length 68/Filter/FlateDecode>>");
   PrintStr("@");
   fStream->write("stream",6); fNByte += 6;
   fStream->write("\r\nH\211*\3442T\310T\3402P0P04\200\340\242T\256p\205<\240\220\027P0K\301D\241\034(\254\340\253\020\035k\240\220\002\02465P\310\345\002)\0042r\270\202\271\002\271\0\002\f\0\345=\r\305\n", 70);
   fNByte += 70;
   PrintStr("endstream@");
   PrintStr("endobj@");

   // P08
   NewObject(patternNb++);
   PrintStr("<</Type/Pattern/Matrix[0.06 0 0 0.06 20 28]/PatternType 1/Resources");
   WriteInteger(kObjPatternResourses);
   PrintStr(" 0 R/PaintType 2/TilingType 1/BBox[0 0 101 101]/XStep 100/YStep 100/Length 139/Filter/FlateDecode>>");
   PrintStr("@");
   fStream->write("stream",6); fNByte += 6;
   fStream->write("\r\nH\211D\217\261\016\3020\fDw\177\305\315L6Q\225|\003\022C\305\300Puk+\201\032$\272\360\373\330\265\323\016\271\330\367\234\344\"x\201\030\214\252\232\030+%\353VZ.jd\367\205\003x\241({]\311\324]\323|\342\006\033J\201:\306\325\230Jg\226J\261\275D\257#\337=\220\260\354k\233\351\211\217Z75\337\020\374\324\306\035\303\310\230\342x=\303\371\275\307o\332s\331\223\224\240G\330\a\365\364\027`\0\nX1}\n",141);
   fNByte += 141;
   PrintStr("endstream@");
   PrintStr("endobj@");

   // P09
   NewObject(patternNb++);
   PrintStr("<</Type/Pattern/Matrix[0.06 0 0 0.06 20 28]/PatternType 1/Resources");
   WriteInteger(kObjPatternResourses);
   PrintStr(" 0 R/PaintType 2/TilingType 1/BBox[0 0 100 100]/XStep 100/YStep 100/Length 108/Filter/FlateDecode>>");
   PrintStr("@");
   fStream->write("stream",6); fNByte += 6;
   fStream->write("\r\nH\211*\3442T\310T\3402P0P04\200\340\242T\256p\205<\240\220\027P0K\301D\241\034(\254\340\253\020\035k\240\220\002\02465P\310\005RFFz&\020\002,d\240\220\314en\256g\0065\b,\001b\230\202$\240\232\214@\362\246`\2169H\336\024\2426\231\v&\200,\n\326\030\314\025\310\005\020`\0\f@\036\227\n", 110);
   fNByte += 110;
   PrintStr("endstream@");
   PrintStr("endobj@");

   // P10
   NewObject(patternNb++);
   PrintStr("<</Type/Pattern/Matrix[0.06 0 0 0.06 20 28]/PatternType 1/Resources");
   WriteInteger(kObjPatternResourses);
   PrintStr(" 0 R/PaintType 2/TilingType 1/BBox[0 0 100 100]/XStep 100/YStep 100/Length 93/Filter/FlateDecode>>");
   PrintStr("@");
   fStream->write("stream",6); fNByte += 6;
   fStream->write("\r\nH\211*\3442T\310T\3402P0P04\200\340\242T\256p\205<\240\220\027P0K\301D\241\034(\254\340\253\020\035k\240\220\002\02465P\310\345\002)\0042r\200\332\r\241\\C \017dN.\027L\312\0\302\205\2535\205j6\205X\224\303\025\314\025\310\005\020`\0\2127\031\t\n", 95);
   fNByte += 95;
   PrintStr("endstream@");
   PrintStr("endobj@");

   // P11
   NewObject(patternNb++);
   PrintStr("<</Type/Pattern/Matrix[0.125 0 0 0.125 20 28]/PatternType 1/Resources");
   WriteInteger(kObjPatternResourses);
   PrintStr(" 0 R/PaintType 2/TilingType 1/BBox[0 0 100 100]/XStep 100/YStep 100/Length 164/Filter/FlateDecode>>");
   PrintStr("@");
   fStream->write("stream",6); fNByte += 6;
   fStream->write("\r\nH\211\\\2171\016\3020\fEw\237\342\037\301ip\223^\001\211\001u`@l0\200(\022,\\\037;v\204\332\241\211\336\373\337V\363\246\204;\210\301H\354\337\347F'\274T\355U>\220\360U\215\003\316\027\306\2655\027=\a\306\223\304I\002m\332\330\356&\030\325\333fZ\275F\337\205\235\265O\270\032\004\331\214\336\305\270\004\227`\357i\256\223\342;]\344\255(!\372\356\205j\030\377K\335\220\344\377\210\274\306\022\330\337T{\214,\212;\301\3508\006\346\206\021O=\216|\212|\246#\375\004\030\0\216FF\207\n", 166);
   fNByte += 166;
   PrintStr("endstream@");
   PrintStr("endobj@");

   // P12
   NewObject(patternNb++);
   PrintStr("<</Type/Pattern/Matrix[0.125 0 0 0.125 20 28]/PatternType 1/Resources");
   WriteInteger(kObjPatternResourses);
   PrintStr(" 0 R/PaintType 2/TilingType 1/BBox[0 0 100 100]/XStep 100/YStep 100/Length 226/Filter/FlateDecode>>");
   PrintStr("@");
   fStream->write("stream",6); fNByte += 6;
   fStream->write("\r\nH\211<P;n\3030\f\335y\n\236 \220DK\242\256P\240C\321\241C\221\311\311\220\242\016\220.\275~D\221/\203I\342}\370(?(\363\215)q\342\234\374\373\273\322\027\337'\3646\301\037\316\374?a~\347\357s\342\313\2045\361A9\237\322fc\231\200\236F\263\301\334;\211\017\207\rN\311\252S\\\227{\247\006w\207\244\303\255p+(\205\333\360e/v\356a\315\317\360\272\320b|w\276\203o\340k\b\004\027\v$b\226\235,\242\254t(\024\nu\305Vm\313\021\375\327\272\257\227fuf\226ju\356\222x\030\024\313\261S\215\377\341\274,\203\254\253Z\\\262A\262\205eD\350\210\320\201\225\212\320\036\241\355\025\372JE,\2266\344\366\310U\344\016HFx>\351\203\236\002\f\0d}e\216\n", 228);
   fNByte += 228;
   PrintStr("endstream@");
   PrintStr("endobj@");

   // P13
   NewObject(patternNb++);
   PrintStr("<</Type/Pattern/Matrix[0.06 0 0 0.06 20 28]/PatternType 1/Resources");
   WriteInteger(kObjPatternResourses);
   PrintStr(" 0 R/PaintType 2/TilingType 1/BBox[0 0 100 100]/XStep 100/YStep 100/Length 69/Filter/FlateDecode>>");
   PrintStr("@");
   fStream->write("stream",6); fNByte += 6;
   fStream->write("\r\nH\211*\3442T\310T\3402P0P04\200\340\242T\256p\205<\240\220\027P0K\301D\241\034(\254\340\253\020\035k\240\220\002V\231\313\005S\233\303\005\241!\" ~0W \027@\200\001\0\331\227\020\253\n", 71);
   fNByte += 71;
   PrintStr("endstream@");
   PrintStr("endobj@");

   // P14
   NewObject(patternNb++);
   PrintStr("<</Type/Pattern/Matrix[0.15 0 0 0.15 20 28]/PatternType 1/Resources");
   WriteInteger(kObjPatternResourses);
   PrintStr(" 0 R/PaintType 2/TilingType 1/BBox[0 0 100 100]/XStep 80/YStep 80/Length 114/Filter/FlateDecode>>");
   PrintStr("@");
   fStream->write("stream",6); fNByte += 6;
   fStream->write("\r\nH\2114\214=\n\2000\f\205\367\234\342\035!-\241\364\f\202\20388\210\233\016J+\350\342\365M\3723\224\327\367}I\036r8A\f\206\343\372\336\203\026\334\212\006\205\027\004\237b\214X7\306\256\33032\331\240~\022y[\315\026\206\222\372\330}\264\036\253\217\335\353\240\030\b%\223\245o=X\227\346\245\355K\341\345@\3613M\364\v0\0\207o\"\261\n", 116);
   fNByte += 116;
   PrintStr("endstream@");
   PrintStr("endobj@");

   // P15
   NewObject(patternNb++);
   PrintStr("<</Type/Pattern/Matrix[0.102 0 0 0.102 20 28]/PatternType 1/Resources");
   WriteInteger(kObjPatternResourses);
   PrintStr(" 0 R/PaintType 2/TilingType 1/BBox[0 0 60 60]/XStep 60/YStep 60/Length 218/Filter/FlateDecode>>");
   PrintStr("@");
   fStream->write("stream",6); fNByte += 6;
   fStream->write("\r\nH\211<\2211\016\3020\fEw\237\302'@\211c\267w@b@\f\f\210\2510\200(\022,\\\037\347\307\256Z\325\221\375\337\377\225\363\241\312\017\246\302\205'\274\337;\235\371\355\215\275\267\236\\\371\307\265\360\201/\327\3027o\233\361J\262\233\247~\362g\336\211zur!A]{\035}\031S\343\006p\241\226dKI\v\326\202\265\3153\331)X)\335fE\205M\235\373\327\r*\374\026\252\022\216u\223\200\361I\211\177\031\022\001#``\342GI\211\004c\221gi\246\231\247\221\247\231\247\233$XM3\315<\215<\315<K\211e\036#\215a4\366\344\035lm\214Z\314b\211Xj\337K\\\201$\332\325\v\365\2659\204\362\242\274'\v\221\r\321\211\216\364\027`\0\212'_\215\n", 220);
   fNByte += 220;
   PrintStr("endstream@");
   PrintStr("endobj@");

   // P16
   NewObject(patternNb++);
   PrintStr("<</Type/Pattern/Matrix[0.1 0 0 0.05 20 28]/PatternType 1/Resources");
   WriteInteger(kObjPatternResourses);
   PrintStr(" 0 R/PaintType 2/TilingType 1/BBox[0 0 100 100]/XStep 100/YStep 100/Length 123/Filter/FlateDecode>>");
   PrintStr("@");
   fStream->write("stream",6); fNByte += 6;
   fStream->write("\r\nH\211*\3442T\310T\3402P0P04\200\340\242T\256p\205<\240\220\027P0K\301D\241\034(\254\340\253\020\035k\240\220\302ej\240\0D\271 \332\314X\317B\301\330\002H\230\233*\030\231\202\310d.CC=#\020\v*\rV\235\214\254\v\210r@\264\261\031P\241\031H5D\253\021H\267\005\3104 \v\344\016\260\002\020\003lB0W \027@\200\001\0hU \305\n", 125);
   fNByte += 125;
   PrintStr("endstream@");
   PrintStr("endobj@");

   // P17
   NewObject(patternNb++);
   PrintStr("<</Type/Pattern/Matrix[0.06 0 0 0.06 20 28]/PatternType 1/Resources");
   WriteInteger(kObjPatternResourses);
   PrintStr(" 0 R/PaintType 2/TilingType 1/BBox[0 0 100 100]/XStep 100/YStep 100/Length 66/Filter/FlateDecode>>");
   PrintStr("@");
   fStream->write("stream",6); fNByte += 6;
   fStream->write("\r\nH\211*\3442T\310T\3402P0P04\200\340\242T\256p\205<\240\220\027P0K\301D\241\034(\254\340\253\020md\242\020k\240\220\002V\234\313\005S\236\303\025\314\025\310\005\020`\0\r\351\016B\n", 68);
   fNByte += 68;
   PrintStr("endstream@");
   PrintStr("endobj@");

   // P18
   NewObject(patternNb++);
   PrintStr("<</Type/Pattern/Matrix[0.06 0 0 0.06 20 28]/PatternType 1/Resources");
   WriteInteger(kObjPatternResourses);
   PrintStr(" 0 R/PaintType 2/TilingType 1/BBox[0 0 100 100]/XStep 100/YStep 100/Length 69/Filter/FlateDecode>>");
   PrintStr("@");
   fStream->write("stream",6); fNByte += 6;
   fStream->write("\r\nH\211*\3442T\310T\3402P0P04\200\340\242T\256p\205<\240\220\027P0K\301D\241\034(\254\340\253\020md\242\020k\240\220\302\005Q\226\313\005\"\r\024r\270\202\271\002\271\0\002\f\0\016\001\016B\n", 71);
   fNByte += 71;
   PrintStr("endstream@");
   PrintStr("endobj@");

   // P19
   NewObject(patternNb++);
   PrintStr("<</Type/Pattern/Matrix[0.117 0 0 0.117 20 28]/PatternType 1/Resources");
   WriteInteger(kObjPatternResourses);
   PrintStr(" 0 R/PaintType 2/TilingType 1/BBox[0 0 100 100]/XStep 100/YStep 100/Length 149/Filter/FlateDecode>>");
   PrintStr("@");
   fStream->write("stream",6); fNByte += 6;
   fStream->write("\r\nH\211L\216;\016\302@\fD{\237bN\020\331+6a\257\200D\201((P\252@\001R\220\240\341\372\370\263\216(\326\266f\336\330\373&\301\003\304`\b\307\373\334\351\202\227J\a\025\237\020|U\306\021\327\231q\243\306\250\214\325\372T\006\336\367\032\262\326\205\3124\264b\243$\"n.\244=\314\250!\2139\033\327\022i=\323\317\2518\332T}\347.\202\346W\373\372j\315\221\344\266\213=\237\241\344\034\361\264!\236w\344\177\271o8\323\211~\002\f\0\366\3026\233\n", 151);
   fNByte += 151;
   PrintStr("endstream@");
   PrintStr("endobj@");

   // P20
   NewObject(patternNb++);
   PrintStr("<</Type/Pattern/Matrix[0.05 0 0 0.1 20 28]/PatternType 1/Resources");
   WriteInteger(kObjPatternResourses);
   PrintStr(" 0 R/PaintType 2/TilingType 1/BBox[0 0 100 100]/XStep 100/YStep 100/Length 122/Filter/FlateDecode>>");
   PrintStr("@");
   fStream->write("stream",6); fNByte += 6;
   fStream->write("\r\nH\211<L;\016\2030\f\335}\212w\002\344$M\2323 1 \006\006\304\224vhU\220`\341\372<\aT\311\366\263\336o\023\207\017D\241pz\355\376\226\021+\251\226\344\027\017\034\244\321a\232\025/\211\n\316r\343ORh\262}\317\210\344\032o\310)\302\2233\245\252[m\274\332\313\277!$\332\371\371\210`N\242\267$\217\263\246\252W\257\245\006\351\345\024`\0o\347 \305\n", 124);
   fNByte += 124;
   PrintStr("endstream@");
   PrintStr("endobj@");

   // P21
   NewObject(patternNb++);
   PrintStr("<</Type/Pattern/Matrix[0.125 0 0 0.125 20 28]/PatternType 1/Resources");
   WriteInteger(kObjPatternResourses);
   PrintStr(" 0 R/PaintType 2/TilingType 1/BBox[0 0 101 101]/XStep 100/YStep 100/Length 117/Filter/FlateDecode>>");
   PrintStr("@");
   fStream->write("stream",6); fNByte += 6;
   fStream->write("\r\nH\211D\2151\n\2000\fE\367\234\342\037!)\224\336Ap\020\a\aq\323A\251\202.^\337$-\025\022^\372\033^n\022\354 \006CX\274\237\215&\\\032u\032\036\020\274\032\243\307\2740V]\027\234\024\242\"\033\2642En\324\312\224bc\262\\\230\377\301\332WM\224\212(U\221\375\265\301\025\016?\350\317P\215\221\033\213o\244\201>\001\006\0\031I'f\n", 119);
   fNByte += 119;
   PrintStr("endstream@");
   PrintStr("endobj@");

   // P22
   NewObject(patternNb++);
   PrintStr("<</Type/Pattern/Matrix[0.125 0 0 0.125 20 28]/PatternType 1/Resources");
   WriteInteger(kObjPatternResourses);
   PrintStr(" 0 R/PaintType 2/TilingType 1/BBox[0 0 101 101]/XStep 100/YStep 100/Length 118/Filter/FlateDecode>>");
   PrintStr("@");
   fStream->write("stream",6); fNByte += 6;
   fStream->write("\r\nH\211<\215=\n\204P\f\204\373\234b\216\220<\b\357\016\302\026ba!vZ(\273\v\332x}\223\274\237\"|\223a\230\271Hp\200\030\fa\211\273w\232\3617k0\363\204\3401\033\037,+c#\3170~\2244\304\327EV\243r\247\272oOcr\337\323]H\t\226\252\334\252r\255\362\257\213(\t\304\250\326\315T\267\032\275q\242\221^\001\006\0\272\367(&\n", 120);
   fNByte += 120;
   PrintStr("endstream@");
   PrintStr("endobj@");

   // P23
   NewObject(patternNb++);
   PrintStr("<</Type/Pattern/Matrix[0.06 0 0 0.06 20 28]/PatternType 1/Resources");
   WriteInteger(kObjPatternResourses);
   PrintStr(" 0 R/PaintType 2/TilingType 1/BBox[0 0 100 100]/XStep 100/YStep 100/Length 169/Filter/FlateDecode>>");
   PrintStr("@");
   fStream->write("stream",6); fNByte += 6;
   fStream->write("\r\nH\211<\220\273\n\0021\020E\373\371\212[[M\326\331\354\344\027\004\v\261\260\020;\025\224D\320\306\337w\036\254p\363\230\223\341$\344M\005\017\020\203Q8\307\347F'\274\f\355\f>Q\3605\214=\316\005\v.\214kt\217\230;)\324\366\245Fa\213e\320v\212r\022X\006\211Fi\3242\250J\224\302\020\367h\212\254I\\\325R\225o\03143\346U\235@a\t[\202Za\tA\202E`\351~O\002\235`\351~S\202\306h.m\253\264)\232K\217t\310\017q\354\a\353\247\364\377C\356\033\372\t0\0\bm:\375\n", 171);
   fNByte += 171;
   PrintStr("endstream@");
   PrintStr("endobj@");

   // P24
   NewObject(patternNb++);
   PrintStr("<</Type/Pattern/Matrix[0.125 0 0 0.125 20 28]/PatternType 1/Resources");
   WriteInteger(kObjPatternResourses);
   PrintStr(" 0 R/PaintType 2/TilingType 1/BBox[0 0 100 100]/XStep 100/YStep 100/Length 280/Filter/FlateDecode>>");
   PrintStr("@");
   fStream->write("stream",6); fNByte += 6;
   fStream->write("\r\nH\211DQ9N\004A\f\314\373\025\216\211\326\343v\037_@\"@\004\004\210\f\220@\003\022$|\177\335\345j\220v\345\251\303\343*\215\312\273\024\275\\d\375?\361dM\3162\306\337\214\337Y\336n\240m\217\036\301y\343\\<,i\250\0038F\035)\347l\322\026o\377\023\353|[\254\177\343\005;\315\317ky\224\257\240n\203\374\020\225\337\240\345N\236T\272<_\344\245\304^\3238\030\tc\236E\233xO\034\363\204>\251\317\324\233\023{\352\235\376\336S\357Fl\251\017\372\207\247>xoh&_\366Ud\331\253\314D\023\332\241\211\016\205\246\235\326\236*\275\307\204z8!s\031\335\306\\\306C\306\\\225\376\312\\\225\307\252\246\356\364\273Q\347\271:\371\341l\177\311e\210\3571\211\251#\374\302H\037:\342c\241\323\2617\320 \034\250\0\302\323a{\005%\302a\373(Zx\313\026\213@\215p\324}\026=\274e\217E8s\326}\026M\036\312}\271\n0\0\215\263\207\016\n", 282);
   fNByte += 282;
   PrintStr("endstream@");
   PrintStr("endobj@");

   // P25
   NewObject(patternNb++);
   PrintStr("<</Type/Pattern/Matrix[0.125 0 0 0.125 20 28]/PatternType 1/Resources");
   WriteInteger(kObjPatternResourses);
   PrintStr(" 0 R/PaintType 2/TilingType 1/BBox[0 0 101 101]/XStep 100/YStep 100/Length 54/Filter/FlateDecode>>");
   PrintStr("@");
   fStream->write("stream",6); fNByte += 6;
   fStream->write("\r\nH\2112T\310T\3402P0P\310\34526P\0\242\034.s\004m\016\242\r\r\f\024@\030\302\002\321iZP\305`M\346\310\212\201R\0\001\006\0\206\322\017\200\n", 56);
   fNByte += 56;
   PrintStr("endstream@");
   PrintStr("endobj@");
}

//______________________________________________________________________________
void TPDF::PrintStr(const char *str)
{
   // Output the string str in the output buffer

   Int_t len = strlen(str);
   if (len == 0) return;
   fPageNotEmpty = kTRUE;

   if (fCompress) {
      if (fLenBuffer+len >= fSizBuffer) {
         fBuffer  = TStorage::ReAllocChar(fBuffer, 2*fSizBuffer, fSizBuffer);
         fSizBuffer = 2*fSizBuffer;
      }
      strcpy(fBuffer + fLenBuffer, str);
      fLenBuffer += len;
      return;
   }

   TVirtualPS::PrintStr(str);
}


//______________________________________________________________________________
void TPDF::PrintFast(Int_t len, const char *str)
{
   // Fast version of Print

   fPageNotEmpty = kTRUE;
   if (fCompress) {
      if (fLenBuffer+len >= fSizBuffer) {
         fBuffer  = TStorage::ReAllocChar(fBuffer, 2*fSizBuffer, fSizBuffer);
         fSizBuffer = 2*fSizBuffer;
      }
      strcpy(fBuffer + fLenBuffer, str);
      fLenBuffer += len;
      return;
   }

   TVirtualPS::PrintFast(len, str);
}


//______________________________________________________________________________
void TPDF::Range(Float_t xsize, Float_t ysize)
{
   // Set the range for the paper in centimetres

   Float_t xps, yps, xncm, yncm, dxwn, dywn, xwkwn, ywkwn, xymax;

   fXsize = xsize;
   fYsize = ysize;

   xps = xsize;
   yps = ysize;

   if (xsize <= xps && ysize < yps) {
      if ( xps > yps) xymax = xps;
      else            xymax = yps;
      xncm  = xsize/xymax;
      yncm  = ysize/xymax;
      dxwn  = ((xps/xymax)-xncm)/2;
      dywn  = ((yps/xymax)-yncm)/2;
   } else {
      if (xps/yps < 1) xwkwn = xps/yps;
      else             xwkwn = 1;
      if (yps/xps < 1) ywkwn = yps/xps;
      else             ywkwn = 1;

      if (xsize < ysize)  {
         xncm = ywkwn*xsize/ysize;
         yncm = ywkwn;
         dxwn = (xwkwn-xncm)/2;
         dywn = 0;
         if (dxwn < 0) {
            xncm = xwkwn;
            dxwn = 0;
            yncm = xwkwn*ysize/xsize;
            dywn = (ywkwn-yncm)/2;
         }
      } else {
         xncm = xwkwn;
         yncm = xwkwn*ysize/xsize;
         dxwn = 0;
         dywn = (ywkwn-yncm)/2;
         if (dywn < 0) {
            yncm = ywkwn;
            dywn = 0;
            xncm = ywkwn*xsize/ysize;
            dxwn = (xwkwn-xncm)/2;
         }
      }
   }
   fRange = kTRUE;
}


//______________________________________________________________________________
void TPDF::SetAlpha(Float_t a)
{
   // Set the alpha channel value.

   if (a == fAlpha) return;
   fAlpha = a;
   if (fAlpha  <= 0.000001) fAlpha  = 0;

   Bool_t known = kFALSE;
   for (int i=0; i<(int)fAlphas.size(); i++) {
      if (fAlpha == fAlphas[i]) {
         known = kTRUE;
         break;
      }
   }
   if (!known) fAlphas.push_back(fAlpha);
   PrintStr(Form(" /ca%3.2f gs /CA%3.2f gs",fAlpha,fAlpha));
}


//______________________________________________________________________________
void TPDF::SetColor(Int_t color)
{
   // Set color with its color index.

   if (color < 0) color = 0;
   TColor *col = gROOT->GetColor(color);

   if (col) {
      SetColor(col->GetRed(), col->GetGreen(), col->GetBlue());
      SetAlpha(col->GetAlpha());
   } else {
      SetColor(1., 1., 1.);
      SetAlpha(1.);
   }
}


//______________________________________________________________________________
void TPDF::SetColor(Float_t r, Float_t g, Float_t b)
{
   // Set color with its R G B components:
   //
   //  r: % of red in [0,1]
   //  g: % of green in [0,1]
   //  b: % of blue in [0,1]

   if (r == fRed && g == fGreen && b == fBlue) return;

   fRed   = r;
   fGreen = g;
   fBlue  = b;
   if (fRed   <= 0.000001) fRed   = 0;
   if (fGreen <= 0.000001) fGreen = 0;
   if (fBlue  <= 0.000001) fBlue  = 0;

   if (gStyle->GetColorModelPS()) {
      Double_t colCyan, colMagenta, colYellow;
      Double_t colBlack = TMath::Min(TMath::Min(1-fRed,1-fGreen),1-fBlue);
      if (colBlack==1) {
         colCyan    = 0;
         colMagenta = 0;
         colYellow  = 0;
      } else {
         colCyan    = (1-fRed-colBlack)/(1-colBlack);
         colMagenta = (1-fGreen-colBlack)/(1-colBlack);
         colYellow  = (1-fBlue-colBlack)/(1-colBlack);
      }
      if (colCyan    <= 0.000001) colCyan    = 0;
      if (colMagenta <= 0.000001) colMagenta = 0;
      if (colYellow  <= 0.000001) colYellow  = 0;
      if (colBlack   <= 0.000001) colBlack   = 0;
      WriteReal(colCyan);
      WriteReal(colMagenta);
      WriteReal(colYellow);
      WriteReal(colBlack);
      PrintFast(2," K");
      WriteReal(colCyan);
      WriteReal(colMagenta);
      WriteReal(colYellow);
      WriteReal(colBlack);
      PrintFast(2," k");
   } else {
      WriteReal(fRed);
      WriteReal(fGreen);
      WriteReal(fBlue);
      PrintFast(3," RG");
      WriteReal(fRed);
      WriteReal(fGreen);
      WriteReal(fBlue);
      PrintFast(3," rg");
   }
}


//______________________________________________________________________________
void TPDF::SetFillColor( Color_t cindex )
{
   // Set color index for fill areas

   fFillColor = cindex;
   if (gStyle->GetFillColor() <= 0) cindex = 0;
}


//______________________________________________________________________________
void TPDF::SetFillPatterns(Int_t ipat, Int_t color)
{
   // Set the fill patterns (1 to 25) for fill areas

   char cpat[10];
   TColor *col = gROOT->GetColor(color);
   if (!col) return;
   PrintStr(" /Cs8 cs");
   Double_t colRed   = col->GetRed();
   Double_t colGreen = col->GetGreen();
   Double_t colBlue  = col->GetBlue();
   if (gStyle->GetColorModelPS()) {
      Double_t colBlack = TMath::Min(TMath::Min(1-colRed,1-colGreen),1-colBlue);
      if (colBlack==1) {
         WriteReal(0);
         WriteReal(0);
         WriteReal(0);
         WriteReal(colBlack);
      } else {
         Double_t colCyan    = (1-colRed-colBlack)/(1-colBlack);
         Double_t colMagenta = (1-colGreen-colBlack)/(1-colBlack);
         Double_t colYellow  = (1-colBlue-colBlack)/(1-colBlack);
         WriteReal(colCyan);
         WriteReal(colMagenta);
         WriteReal(colYellow);
         WriteReal(colBlack);
      }
   } else {
      WriteReal(colRed);
      WriteReal(colGreen);
      WriteReal(colBlue);
   }
   snprintf(cpat,10," /P%2.2d scn", ipat);
   PrintStr(cpat);
}


//______________________________________________________________________________
void TPDF::SetLineColor( Color_t cindex )
{
   // Set color index for lines

   fLineColor = cindex;
}


//______________________________________________________________________________
void TPDF::SetLineStyle(Style_t linestyle)
{
   // Change the line style
   //
   // linestyle = 2 dashed
   //           = 3 dotted
   //           = 4 dash-dotted
   //           = else solid (1 in is used most of the time)

   if ( linestyle == fLineStyle) return;
   fLineStyle = linestyle;
   TString st = (TString)gStyle->GetLineStyleString(linestyle);
   PrintFast(2," [");
   TObjArray *tokens = st.Tokenize(" ");
   for (Int_t j = 0; j<tokens->GetEntries(); j++) {
      Int_t it;
      sscanf(((TObjString*)tokens->At(j))->GetName(), "%d", &it);
      WriteInteger((Int_t)(it/4));
   }
   delete tokens;
   PrintFast(5,"] 0 d");
}


//______________________________________________________________________________
void TPDF::SetLineWidth(Width_t linewidth)
{
   // Change the line width

   if (linewidth == fLineWidth) return;
   fLineWidth = linewidth;
   WriteReal(fLineScale*fLineWidth);
   PrintFast(2," w");
}


//______________________________________________________________________________
void TPDF::SetMarkerColor( Color_t cindex )
{
   // Set color index for markers.

   fMarkerColor = cindex;
}


//______________________________________________________________________________
void TPDF::SetTextColor( Color_t cindex )
{
   // Set color index for text

   fTextColor = cindex;
}


//______________________________________________________________________________
void TPDF::Text(Double_t xx, Double_t yy, const char *chars)
{
   // Draw text
   //
   // xx: x position of the text
   // yy: y position of the text
   // chars: text to be drawn

   if (fTextSize <= 0) return;

   const Double_t kDEGRAD = TMath::Pi()/180.;
   char str[8];
   Double_t x = xx;
   Double_t y = yy;

   // Text color
   SetColor(Int_t(fTextColor));

   // Clipping
   PrintStr(" q");
   Double_t x1 = XtoPDF(gPad->GetX1());
   Double_t x2 = XtoPDF(gPad->GetX2());
   Double_t y1 = YtoPDF(gPad->GetY1());
   Double_t y2 = YtoPDF(gPad->GetY2());
   WriteReal(x1);
   WriteReal(y1);
   WriteReal(x2 - x1);
   WriteReal(y2 - y1);
   PrintStr(" re W n");

   // Start the text
   if (!fCompress) PrintStr("@");

   // Font and text size
   Int_t font = abs(fTextFont)/10;
   if (font > kNumberOfFonts || font < 1) font = 1;

   Double_t wh = (Double_t)gPad->XtoPixel(gPad->GetX2());
   Double_t hh = (Double_t)gPad->YtoPixel(gPad->GetY1());
   Float_t tsize, ftsize;
   if (wh < hh) {
      tsize = fTextSize*wh;
      Int_t sizeTTF = (Int_t)(tsize*kScale+0.5); // TTF size
      ftsize = (sizeTTF*fXsize*gPad->GetAbsWNDC())/wh;
   } else {
      tsize = fTextSize*hh;
      Int_t sizeTTF = (Int_t)(tsize*kScale+0.5); // TTF size
      ftsize = (sizeTTF*fYsize*gPad->GetAbsHNDC())/hh;
   }
   Double_t fontsize = 72*(ftsize)/2.54;
   if (fontsize <= 0) return;

   // Text alignment
   Float_t tsizex = gPad->AbsPixeltoX(Int_t(tsize))-gPad->AbsPixeltoX(0);
   Float_t tsizey = gPad->AbsPixeltoY(0)-gPad->AbsPixeltoY(Int_t(tsize));
   Int_t txalh = fTextAlign/10;
   if (txalh < 1) txalh = 1; if (txalh > 3) txalh = 3;
   Int_t txalv = fTextAlign%10;
   if (txalv < 1) txalv = 1; if (txalv > 3) txalv = 3;
   if (txalv == 3) {
      y -= 0.8*tsizey*TMath::Cos(kDEGRAD*fTextAngle);
      x += 0.8*tsizex*TMath::Sin(kDEGRAD*fTextAngle);
   } else if (txalv == 2) {
      y -= 0.4*tsizey*TMath::Cos(kDEGRAD*fTextAngle);
      x += 0.4*tsizex*TMath::Sin(kDEGRAD*fTextAngle);
   }

   if (txalh > 1) {
      TText t;
      UInt_t w=0, h;
      t.SetTextSize(fTextSize);
      t.SetTextFont(fTextFont);
      t.GetTextExtent(w, h, chars);
      Double_t twx = gPad->AbsPixeltoX(w)-gPad->AbsPixeltoX(0);
      Double_t twy = gPad->AbsPixeltoY(0)-gPad->AbsPixeltoY(w);
      if (txalh == 2) {
         x = x-(twx/2)*TMath::Cos(kDEGRAD*fTextAngle);
         y = y-(twy/2)*TMath::Sin(kDEGRAD*fTextAngle);
      }
      if (txalh == 3) {
         x = x-twx*TMath::Cos(kDEGRAD*fTextAngle);
         y = y-twy*TMath::Sin(kDEGRAD*fTextAngle);
      }
   }

   // Text angle
   if (fTextAngle == 0) {
      PrintStr(" 1 0 0 1");
      WriteReal(XtoPDF(x));
      WriteReal(YtoPDF(y));
   } else if (fTextAngle == 90) {
      PrintStr(" 0 1 -1 0");
      WriteReal(XtoPDF(x));
      WriteReal(YtoPDF(y));
   } else if (fTextAngle == 270) {
      PrintStr(" 0 -1 1 0");
      WriteReal(XtoPDF(x));
      WriteReal(YtoPDF(y));
   } else {
      WriteReal(TMath::Cos(kDEGRAD*fTextAngle));
      WriteReal(TMath::Sin(kDEGRAD*fTextAngle));
      WriteReal(-TMath::Sin(kDEGRAD*fTextAngle));
      WriteReal(TMath::Cos(kDEGRAD*fTextAngle));
      WriteReal(XtoPDF(x));
      WriteReal(YtoPDF(y));
   }
   PrintStr(" cm");

   // Symbol Italic tan(15) = .26794
   if (font == 15) PrintStr(" 1 0 0.26794 1 0 0 cm");

   PrintStr(" BT");

   snprintf(str,8," /F%d",font);
   PrintStr(str);
   WriteReal(fontsize);
   PrintStr(" Tf");

   const Int_t len=strlen(chars);

   // Calculate the individual character placements.
   // Otherwise, if a string is printed in one line the kerning is not
   // performed. In order to measure the precise character positions we need to
   // trick FreeType into rendering high-resolution characters otherwise it will
   // stick to the screen pixel grid which is far worse than we can achieve on
   // print.
   const Float_t scale = 16.0;
   // Save current text attributes.
   TText saveAttText;
   saveAttText.TAttText::operator=(*this);
   TText t;
   t.SetTextSize(fTextSize * scale);
   t.SetTextFont(fTextFont);
   UInt_t wa1=0, wa0=0;
   t.GetTextAdvance(wa0, chars, kFALSE);
   t.GetTextAdvance(wa1, chars);
   t.TAttText::Modify();
   Bool_t kerning;
   if (wa0-wa1 != 0) kerning = kTRUE;
   else              kerning = kFALSE;
   Int_t *charDeltas = 0;
   if (kerning) {
        charDeltas = new Int_t[len];
        for (Int_t i = 0;i < len;i++) {
            UInt_t ww=0;
            t.GetTextAdvance(ww, chars + i);
            charDeltas[i] = wa1 - ww;
        }
        for (Int_t i = len - 1;i > 0;i--) {
            charDeltas[i] -= charDeltas[i-1];
        }
        char tmp[2];
        tmp[1] = 0;
        for (Int_t i = 1;i < len;i++) {
            tmp[0] = chars[i-1];
            UInt_t width=0;
            t.GetTextAdvance(width, &tmp[0], kFALSE);
            Double_t wwl = gPad->AbsPixeltoX(width - charDeltas[i]) - gPad->AbsPixeltoX(0);
            wwl -= 0.5*(gPad->AbsPixeltoX(1) - gPad->AbsPixeltoX(0)); // half a pixel ~ rounding error
            charDeltas[i] = (Int_t)((1000.0/Float_t(fontsize))*(XtoPDF(wwl) - XtoPDF(0))/scale);
        }
   }
   // Restore text attributes.
   saveAttText.TAttText::Modify();

   // Ouput the text. Escape some characters if needed
   if (kerning) PrintStr(" [");
   else         PrintStr(" (");

   for (Int_t i=0; i<len;i++) {
      if (chars[i]!='\n') {
         if (kerning) PrintStr("(");
         if (chars[i]=='(' || chars[i]==')') {
            snprintf(str,8,"\\%c",chars[i]);
         } else {
            snprintf(str,8,"%c",chars[i]);
         }
         PrintStr(str);
         if (kerning) {
            PrintStr(") ");
            if (i < len-1) {
               WriteInteger(charDeltas[i+1]);
            }
         }
      }
   }

   if (kerning) PrintStr("] TJ ET Q");
   else         PrintStr(") Tj ET Q");
   if (!fCompress) PrintStr("@");
   if (kerning) delete [] charDeltas;
}


//______________________________________________________________________________
void TPDF::TextNDC(Double_t u, Double_t v, const char *chars)
{
   // Write a string of characters in NDC

   Double_t x = gPad->GetX1() + u*(gPad->GetX2() - gPad->GetX1());
   Double_t y = gPad->GetY1() + v*(gPad->GetY2() - gPad->GetY1());
   Text(x, y, chars);
}


//______________________________________________________________________________
Double_t TPDF::UtoPDF(Double_t u)
{
   // Convert U from NDC coordinate to PDF

   Double_t cm = fXsize*(gPad->GetAbsXlowNDC() + u*gPad->GetAbsWNDC());
   return 72*cm/2.54;
}


//______________________________________________________________________________
Double_t TPDF::VtoPDF(Double_t v)
{
   // Convert V from NDC coordinate to PDF

   Double_t cm = fYsize*(gPad->GetAbsYlowNDC() + v*gPad->GetAbsHNDC());
   return 72*cm/2.54;
}


//______________________________________________________________________________
Double_t TPDF::XtoPDF(Double_t x)
{
   // Convert X from world coordinate to PDF

   Double_t u = (x - gPad->GetX1())/(gPad->GetX2() - gPad->GetX1());
   return  UtoPDF(u);
}


//______________________________________________________________________________
Double_t TPDF::YtoPDF(Double_t y)
{
   // Convert Y from world coordinate to PDF

   Double_t v = (y - gPad->GetY1())/(gPad->GetY2() - gPad->GetY1());
   return  VtoPDF(v);
}


//______________________________________________________________________________
void TPDF::WriteCompressedBuffer()
{
   // Write the buffer in a compressed way

   z_stream stream;
   int err;
   char *out = new char[2*fLenBuffer];

   stream.next_in   = (Bytef*)fBuffer;
   stream.avail_in  = (uInt)fLenBuffer;
   stream.next_out  = (Bytef*)out;
   stream.avail_out = (uInt)2*fLenBuffer;
   stream.zalloc    = (alloc_func)0;
   stream.zfree     = (free_func)0;
   stream.opaque    = (voidpf)0;

   err = deflateInit(&stream, Z_DEFAULT_COMPRESSION);
   if (err != Z_OK) {
      Error("WriteCompressedBuffer", "error in deflateInit (zlib)");
      return;
   }

   err = deflate(&stream, Z_FINISH);
   if (err != Z_STREAM_END) {
      deflateEnd(&stream);
      Error("WriteCompressedBuffer", "error in deflate (zlib)");
      return;
   }

   err = deflateEnd(&stream);

   fStream->write(out, stream.total_out);

   fNByte += stream.total_out;
   fStream->write("\n",1); fNByte++;
   fLenBuffer = 0;
   delete [] out;
   fCompress = kFALSE;
}

//______________________________________________________________________________
void TPDF::WriteReal(Float_t z, Bool_t space)
{
   // Write a Real number to the file.
   // This method overwrites TVirtualPS::WriteReal. Some PDF reader like
   // Acrobat do not work when a PDF file contains reals with exponent. This
   // method writes the real number "z" using the format "%f" instead of the
   // format "%g" when writing it with "%g" generates a number with exponent.

   char str[15];
   if (space) {
      snprintf(str,15," %g", z);
      if (strstr(str,"e") || strstr(str,"E")) snprintf(str,15," %10.8f", z);
   } else {
      snprintf(str,15,"%g", z);
      if (strstr(str,"e") || strstr(str,"E")) snprintf(str,15,"%10.8f", z);
   }
   PrintStr(str);
}
 TPDF.cxx:1
 TPDF.cxx:2
 TPDF.cxx:3
 TPDF.cxx:4
 TPDF.cxx:5
 TPDF.cxx:6
 TPDF.cxx:7
 TPDF.cxx:8
 TPDF.cxx:9
 TPDF.cxx:10
 TPDF.cxx:11
 TPDF.cxx:12
 TPDF.cxx:13
 TPDF.cxx:14
 TPDF.cxx:15
 TPDF.cxx:16
 TPDF.cxx:17
 TPDF.cxx:18
 TPDF.cxx:19
 TPDF.cxx:20
 TPDF.cxx:21
 TPDF.cxx:22
 TPDF.cxx:23
 TPDF.cxx:24
 TPDF.cxx:25
 TPDF.cxx:26
 TPDF.cxx:27
 TPDF.cxx:28
 TPDF.cxx:29
 TPDF.cxx:30
 TPDF.cxx:31
 TPDF.cxx:32
 TPDF.cxx:33
 TPDF.cxx:34
 TPDF.cxx:35
 TPDF.cxx:36
 TPDF.cxx:37
 TPDF.cxx:38
 TPDF.cxx:39
 TPDF.cxx:40
 TPDF.cxx:41
 TPDF.cxx:42
 TPDF.cxx:43
 TPDF.cxx:44
 TPDF.cxx:45
 TPDF.cxx:46
 TPDF.cxx:47
 TPDF.cxx:48
 TPDF.cxx:49
 TPDF.cxx:50
 TPDF.cxx:51
 TPDF.cxx:52
 TPDF.cxx:53
 TPDF.cxx:54
 TPDF.cxx:55
 TPDF.cxx:56
 TPDF.cxx:57
 TPDF.cxx:58
 TPDF.cxx:59
 TPDF.cxx:60
 TPDF.cxx:61
 TPDF.cxx:62
 TPDF.cxx:63
 TPDF.cxx:64
 TPDF.cxx:65
 TPDF.cxx:66
 TPDF.cxx:67
 TPDF.cxx:68
 TPDF.cxx:69
 TPDF.cxx:70
 TPDF.cxx:71
 TPDF.cxx:72
 TPDF.cxx:73
 TPDF.cxx:74
 TPDF.cxx:75
 TPDF.cxx:76
 TPDF.cxx:77
 TPDF.cxx:78
 TPDF.cxx:79
 TPDF.cxx:80
 TPDF.cxx:81
 TPDF.cxx:82
 TPDF.cxx:83
 TPDF.cxx:84
 TPDF.cxx:85
 TPDF.cxx:86
 TPDF.cxx:87
 TPDF.cxx:88
 TPDF.cxx:89
 TPDF.cxx:90
 TPDF.cxx:91
 TPDF.cxx:92
 TPDF.cxx:93
 TPDF.cxx:94
 TPDF.cxx:95
 TPDF.cxx:96
 TPDF.cxx:97
 TPDF.cxx:98
 TPDF.cxx:99
 TPDF.cxx:100
 TPDF.cxx:101
 TPDF.cxx:102
 TPDF.cxx:103
 TPDF.cxx:104
 TPDF.cxx:105
 TPDF.cxx:106
 TPDF.cxx:107
 TPDF.cxx:108
 TPDF.cxx:109
 TPDF.cxx:110
 TPDF.cxx:111
 TPDF.cxx:112
 TPDF.cxx:113
 TPDF.cxx:114
 TPDF.cxx:115
 TPDF.cxx:116
 TPDF.cxx:117
 TPDF.cxx:118
 TPDF.cxx:119
 TPDF.cxx:120
 TPDF.cxx:121
 TPDF.cxx:122
 TPDF.cxx:123
 TPDF.cxx:124
 TPDF.cxx:125
 TPDF.cxx:126
 TPDF.cxx:127
 TPDF.cxx:128
 TPDF.cxx:129
 TPDF.cxx:130
 TPDF.cxx:131
 TPDF.cxx:132
 TPDF.cxx:133
 TPDF.cxx:134
 TPDF.cxx:135
 TPDF.cxx:136
 TPDF.cxx:137
 TPDF.cxx:138
 TPDF.cxx:139
 TPDF.cxx:140
 TPDF.cxx:141
 TPDF.cxx:142
 TPDF.cxx:143
 TPDF.cxx:144
 TPDF.cxx:145
 TPDF.cxx:146
 TPDF.cxx:147
 TPDF.cxx:148
 TPDF.cxx:149
 TPDF.cxx:150
 TPDF.cxx:151
 TPDF.cxx:152
 TPDF.cxx:153
 TPDF.cxx:154
 TPDF.cxx:155
 TPDF.cxx:156
 TPDF.cxx:157
 TPDF.cxx:158
 TPDF.cxx:159
 TPDF.cxx:160
 TPDF.cxx:161
 TPDF.cxx:162
 TPDF.cxx:163
 TPDF.cxx:164
 TPDF.cxx:165
 TPDF.cxx:166
 TPDF.cxx:167
 TPDF.cxx:168
 TPDF.cxx:169
 TPDF.cxx:170
 TPDF.cxx:171
 TPDF.cxx:172
 TPDF.cxx:173
 TPDF.cxx:174
 TPDF.cxx:175
 TPDF.cxx:176
 TPDF.cxx:177
 TPDF.cxx:178
 TPDF.cxx:179
 TPDF.cxx:180
 TPDF.cxx:181
 TPDF.cxx:182
 TPDF.cxx:183
 TPDF.cxx:184
 TPDF.cxx:185
 TPDF.cxx:186
 TPDF.cxx:187
 TPDF.cxx:188
 TPDF.cxx:189
 TPDF.cxx:190
 TPDF.cxx:191
 TPDF.cxx:192
 TPDF.cxx:193
 TPDF.cxx:194
 TPDF.cxx:195
 TPDF.cxx:196
 TPDF.cxx:197
 TPDF.cxx:198
 TPDF.cxx:199
 TPDF.cxx:200
 TPDF.cxx:201
 TPDF.cxx:202
 TPDF.cxx:203
 TPDF.cxx:204
 TPDF.cxx:205
 TPDF.cxx:206
 TPDF.cxx:207
 TPDF.cxx:208
 TPDF.cxx:209
 TPDF.cxx:210
 TPDF.cxx:211
 TPDF.cxx:212
 TPDF.cxx:213
 TPDF.cxx:214
 TPDF.cxx:215
 TPDF.cxx:216
 TPDF.cxx:217
 TPDF.cxx:218
 TPDF.cxx:219
 TPDF.cxx:220
 TPDF.cxx:221
 TPDF.cxx:222
 TPDF.cxx:223
 TPDF.cxx:224
 TPDF.cxx:225
 TPDF.cxx:226
 TPDF.cxx:227
 TPDF.cxx:228
 TPDF.cxx:229
 TPDF.cxx:230
 TPDF.cxx:231
 TPDF.cxx:232
 TPDF.cxx:233
 TPDF.cxx:234
 TPDF.cxx:235
 TPDF.cxx:236
 TPDF.cxx:237
 TPDF.cxx:238
 TPDF.cxx:239
 TPDF.cxx:240
 TPDF.cxx:241
 TPDF.cxx:242
 TPDF.cxx:243
 TPDF.cxx:244
 TPDF.cxx:245
 TPDF.cxx:246
 TPDF.cxx:247
 TPDF.cxx:248
 TPDF.cxx:249
 TPDF.cxx:250
 TPDF.cxx:251
 TPDF.cxx:252
 TPDF.cxx:253
 TPDF.cxx:254
 TPDF.cxx:255
 TPDF.cxx:256
 TPDF.cxx:257
 TPDF.cxx:258
 TPDF.cxx:259
 TPDF.cxx:260
 TPDF.cxx:261
 TPDF.cxx:262
 TPDF.cxx:263
 TPDF.cxx:264
 TPDF.cxx:265
 TPDF.cxx:266
 TPDF.cxx:267
 TPDF.cxx:268
 TPDF.cxx:269
 TPDF.cxx:270
 TPDF.cxx:271
 TPDF.cxx:272
 TPDF.cxx:273
 TPDF.cxx:274
 TPDF.cxx:275
 TPDF.cxx:276
 TPDF.cxx:277
 TPDF.cxx:278
 TPDF.cxx:279
 TPDF.cxx:280
 TPDF.cxx:281
 TPDF.cxx:282
 TPDF.cxx:283
 TPDF.cxx:284
 TPDF.cxx:285
 TPDF.cxx:286
 TPDF.cxx:287
 TPDF.cxx:288
 TPDF.cxx:289
 TPDF.cxx:290
 TPDF.cxx:291
 TPDF.cxx:292
 TPDF.cxx:293
 TPDF.cxx:294
 TPDF.cxx:295
 TPDF.cxx:296
 TPDF.cxx:297
 TPDF.cxx:298
 TPDF.cxx:299
 TPDF.cxx:300
 TPDF.cxx:301
 TPDF.cxx:302
 TPDF.cxx:303
 TPDF.cxx:304
 TPDF.cxx:305
 TPDF.cxx:306
 TPDF.cxx:307
 TPDF.cxx:308
 TPDF.cxx:309
 TPDF.cxx:310
 TPDF.cxx:311
 TPDF.cxx:312
 TPDF.cxx:313
 TPDF.cxx:314
 TPDF.cxx:315
 TPDF.cxx:316
 TPDF.cxx:317
 TPDF.cxx:318
 TPDF.cxx:319
 TPDF.cxx:320
 TPDF.cxx:321
 TPDF.cxx:322
 TPDF.cxx:323
 TPDF.cxx:324
 TPDF.cxx:325
 TPDF.cxx:326
 TPDF.cxx:327
 TPDF.cxx:328
 TPDF.cxx:329
 TPDF.cxx:330
 TPDF.cxx:331
 TPDF.cxx:332
 TPDF.cxx:333
 TPDF.cxx:334
 TPDF.cxx:335
 TPDF.cxx:336
 TPDF.cxx:337
 TPDF.cxx:338
 TPDF.cxx:339
 TPDF.cxx:340
 TPDF.cxx:341
 TPDF.cxx:342
 TPDF.cxx:343
 TPDF.cxx:344
 TPDF.cxx:345
 TPDF.cxx:346
 TPDF.cxx:347
 TPDF.cxx:348
 TPDF.cxx:349
 TPDF.cxx:350
 TPDF.cxx:351
 TPDF.cxx:352
 TPDF.cxx:353
 TPDF.cxx:354
 TPDF.cxx:355
 TPDF.cxx:356
 TPDF.cxx:357
 TPDF.cxx:358
 TPDF.cxx:359
 TPDF.cxx:360
 TPDF.cxx:361
 TPDF.cxx:362
 TPDF.cxx:363
 TPDF.cxx:364
 TPDF.cxx:365
 TPDF.cxx:366
 TPDF.cxx:367
 TPDF.cxx:368
 TPDF.cxx:369
 TPDF.cxx:370
 TPDF.cxx:371
 TPDF.cxx:372
 TPDF.cxx:373
 TPDF.cxx:374
 TPDF.cxx:375
 TPDF.cxx:376
 TPDF.cxx:377
 TPDF.cxx:378
 TPDF.cxx:379
 TPDF.cxx:380
 TPDF.cxx:381
 TPDF.cxx:382
 TPDF.cxx:383
 TPDF.cxx:384
 TPDF.cxx:385
 TPDF.cxx:386
 TPDF.cxx:387
 TPDF.cxx:388
 TPDF.cxx:389
 TPDF.cxx:390
 TPDF.cxx:391
 TPDF.cxx:392
 TPDF.cxx:393
 TPDF.cxx:394
 TPDF.cxx:395
 TPDF.cxx:396
 TPDF.cxx:397
 TPDF.cxx:398
 TPDF.cxx:399
 TPDF.cxx:400
 TPDF.cxx:401
 TPDF.cxx:402
 TPDF.cxx:403
 TPDF.cxx:404
 TPDF.cxx:405
 TPDF.cxx:406
 TPDF.cxx:407
 TPDF.cxx:408
 TPDF.cxx:409
 TPDF.cxx:410
 TPDF.cxx:411
 TPDF.cxx:412
 TPDF.cxx:413
 TPDF.cxx:414
 TPDF.cxx:415
 TPDF.cxx:416
 TPDF.cxx:417
 TPDF.cxx:418
 TPDF.cxx:419
 TPDF.cxx:420
 TPDF.cxx:421
 TPDF.cxx:422
 TPDF.cxx:423
 TPDF.cxx:424
 TPDF.cxx:425
 TPDF.cxx:426
 TPDF.cxx:427
 TPDF.cxx:428
 TPDF.cxx:429
 TPDF.cxx:430
 TPDF.cxx:431
 TPDF.cxx:432
 TPDF.cxx:433
 TPDF.cxx:434
 TPDF.cxx:435
 TPDF.cxx:436
 TPDF.cxx:437
 TPDF.cxx:438
 TPDF.cxx:439
 TPDF.cxx:440
 TPDF.cxx:441
 TPDF.cxx:442
 TPDF.cxx:443
 TPDF.cxx:444
 TPDF.cxx:445
 TPDF.cxx:446
 TPDF.cxx:447
 TPDF.cxx:448
 TPDF.cxx:449
 TPDF.cxx:450
 TPDF.cxx:451
 TPDF.cxx:452
 TPDF.cxx:453
 TPDF.cxx:454
 TPDF.cxx:455
 TPDF.cxx:456
 TPDF.cxx:457
 TPDF.cxx:458
 TPDF.cxx:459
 TPDF.cxx:460
 TPDF.cxx:461
 TPDF.cxx:462
 TPDF.cxx:463
 TPDF.cxx:464
 TPDF.cxx:465
 TPDF.cxx:466
 TPDF.cxx:467
 TPDF.cxx:468
 TPDF.cxx:469
 TPDF.cxx:470
 TPDF.cxx:471
 TPDF.cxx:472
 TPDF.cxx:473
 TPDF.cxx:474
 TPDF.cxx:475
 TPDF.cxx:476
 TPDF.cxx:477
 TPDF.cxx:478
 TPDF.cxx:479
 TPDF.cxx:480
 TPDF.cxx:481
 TPDF.cxx:482
 TPDF.cxx:483
 TPDF.cxx:484
 TPDF.cxx:485
 TPDF.cxx:486
 TPDF.cxx:487
 TPDF.cxx:488
 TPDF.cxx:489
 TPDF.cxx:490
 TPDF.cxx:491
 TPDF.cxx:492
 TPDF.cxx:493
 TPDF.cxx:494
 TPDF.cxx:495
 TPDF.cxx:496
 TPDF.cxx:497
 TPDF.cxx:498
 TPDF.cxx:499
 TPDF.cxx:500
 TPDF.cxx:501
 TPDF.cxx:502
 TPDF.cxx:503
 TPDF.cxx:504
 TPDF.cxx:505
 TPDF.cxx:506
 TPDF.cxx:507
 TPDF.cxx:508
 TPDF.cxx:509
 TPDF.cxx:510
 TPDF.cxx:511
 TPDF.cxx:512
 TPDF.cxx:513
 TPDF.cxx:514
 TPDF.cxx:515
 TPDF.cxx:516
 TPDF.cxx:517
 TPDF.cxx:518
 TPDF.cxx:519
 TPDF.cxx:520
 TPDF.cxx:521
 TPDF.cxx:522
 TPDF.cxx:523
 TPDF.cxx:524
 TPDF.cxx:525
 TPDF.cxx:526
 TPDF.cxx:527
 TPDF.cxx:528
 TPDF.cxx:529
 TPDF.cxx:530
 TPDF.cxx:531
 TPDF.cxx:532
 TPDF.cxx:533
 TPDF.cxx:534
 TPDF.cxx:535
 TPDF.cxx:536
 TPDF.cxx:537
 TPDF.cxx:538
 TPDF.cxx:539
 TPDF.cxx:540
 TPDF.cxx:541
 TPDF.cxx:542
 TPDF.cxx:543
 TPDF.cxx:544
 TPDF.cxx:545
 TPDF.cxx:546
 TPDF.cxx:547
 TPDF.cxx:548
 TPDF.cxx:549
 TPDF.cxx:550
 TPDF.cxx:551
 TPDF.cxx:552
 TPDF.cxx:553
 TPDF.cxx:554
 TPDF.cxx:555
 TPDF.cxx:556
 TPDF.cxx:557
 TPDF.cxx:558
 TPDF.cxx:559
 TPDF.cxx:560
 TPDF.cxx:561
 TPDF.cxx:562
 TPDF.cxx:563
 TPDF.cxx:564
 TPDF.cxx:565
 TPDF.cxx:566
 TPDF.cxx:567
 TPDF.cxx:568
 TPDF.cxx:569
 TPDF.cxx:570
 TPDF.cxx:571
 TPDF.cxx:572
 TPDF.cxx:573
 TPDF.cxx:574
 TPDF.cxx:575
 TPDF.cxx:576
 TPDF.cxx:577
 TPDF.cxx:578
 TPDF.cxx:579
 TPDF.cxx:580
 TPDF.cxx:581
 TPDF.cxx:582
 TPDF.cxx:583
 TPDF.cxx:584
 TPDF.cxx:585
 TPDF.cxx:586
 TPDF.cxx:587
 TPDF.cxx:588
 TPDF.cxx:589
 TPDF.cxx:590
 TPDF.cxx:591
 TPDF.cxx:592
 TPDF.cxx:593
 TPDF.cxx:594
 TPDF.cxx:595
 TPDF.cxx:596
 TPDF.cxx:597
 TPDF.cxx:598
 TPDF.cxx:599
 TPDF.cxx:600
 TPDF.cxx:601
 TPDF.cxx:602
 TPDF.cxx:603
 TPDF.cxx:604
 TPDF.cxx:605
 TPDF.cxx:606
 TPDF.cxx:607
 TPDF.cxx:608
 TPDF.cxx:609
 TPDF.cxx:610
 TPDF.cxx:611
 TPDF.cxx:612
 TPDF.cxx:613
 TPDF.cxx:614
 TPDF.cxx:615
 TPDF.cxx:616
 TPDF.cxx:617
 TPDF.cxx:618
 TPDF.cxx:619
 TPDF.cxx:620
 TPDF.cxx:621
 TPDF.cxx:622
 TPDF.cxx:623
 TPDF.cxx:624
 TPDF.cxx:625
 TPDF.cxx:626
 TPDF.cxx:627
 TPDF.cxx:628
 TPDF.cxx:629
 TPDF.cxx:630
 TPDF.cxx:631
 TPDF.cxx:632
 TPDF.cxx:633
 TPDF.cxx:634
 TPDF.cxx:635
 TPDF.cxx:636
 TPDF.cxx:637
 TPDF.cxx:638
 TPDF.cxx:639
 TPDF.cxx:640
 TPDF.cxx:641
 TPDF.cxx:642
 TPDF.cxx:643
 TPDF.cxx:644
 TPDF.cxx:645
 TPDF.cxx:646
 TPDF.cxx:647
 TPDF.cxx:648
 TPDF.cxx:649
 TPDF.cxx:650
 TPDF.cxx:651
 TPDF.cxx:652
 TPDF.cxx:653
 TPDF.cxx:654
 TPDF.cxx:655
 TPDF.cxx:656
 TPDF.cxx:657
 TPDF.cxx:658
 TPDF.cxx:659
 TPDF.cxx:660
 TPDF.cxx:661
 TPDF.cxx:662
 TPDF.cxx:663
 TPDF.cxx:664
 TPDF.cxx:665
 TPDF.cxx:666
 TPDF.cxx:667
 TPDF.cxx:668
 TPDF.cxx:669
 TPDF.cxx:670
 TPDF.cxx:671
 TPDF.cxx:672
 TPDF.cxx:673
 TPDF.cxx:674
 TPDF.cxx:675
 TPDF.cxx:676
 TPDF.cxx:677
 TPDF.cxx:678
 TPDF.cxx:679
 TPDF.cxx:680
 TPDF.cxx:681
 TPDF.cxx:682
 TPDF.cxx:683
 TPDF.cxx:684
 TPDF.cxx:685
 TPDF.cxx:686
 TPDF.cxx:687
 TPDF.cxx:688
 TPDF.cxx:689
 TPDF.cxx:690
 TPDF.cxx:691
 TPDF.cxx:692
 TPDF.cxx:693
 TPDF.cxx:694
 TPDF.cxx:695
 TPDF.cxx:696
 TPDF.cxx:697
 TPDF.cxx:698
 TPDF.cxx:699
 TPDF.cxx:700
 TPDF.cxx:701
 TPDF.cxx:702
 TPDF.cxx:703
 TPDF.cxx:704
 TPDF.cxx:705
 TPDF.cxx:706
 TPDF.cxx:707
 TPDF.cxx:708
 TPDF.cxx:709
 TPDF.cxx:710
 TPDF.cxx:711
 TPDF.cxx:712
 TPDF.cxx:713
 TPDF.cxx:714
 TPDF.cxx:715
 TPDF.cxx:716
 TPDF.cxx:717
 TPDF.cxx:718
 TPDF.cxx:719
 TPDF.cxx:720
 TPDF.cxx:721
 TPDF.cxx:722
 TPDF.cxx:723
 TPDF.cxx:724
 TPDF.cxx:725
 TPDF.cxx:726
 TPDF.cxx:727
 TPDF.cxx:728
 TPDF.cxx:729
 TPDF.cxx:730
 TPDF.cxx:731
 TPDF.cxx:732
 TPDF.cxx:733
 TPDF.cxx:734
 TPDF.cxx:735
 TPDF.cxx:736
 TPDF.cxx:737
 TPDF.cxx:738
 TPDF.cxx:739
 TPDF.cxx:740
 TPDF.cxx:741
 TPDF.cxx:742
 TPDF.cxx:743
 TPDF.cxx:744
 TPDF.cxx:745
 TPDF.cxx:746
 TPDF.cxx:747
 TPDF.cxx:748
 TPDF.cxx:749
 TPDF.cxx:750
 TPDF.cxx:751
 TPDF.cxx:752
 TPDF.cxx:753
 TPDF.cxx:754
 TPDF.cxx:755
 TPDF.cxx:756
 TPDF.cxx:757
 TPDF.cxx:758
 TPDF.cxx:759
 TPDF.cxx:760
 TPDF.cxx:761
 TPDF.cxx:762
 TPDF.cxx:763
 TPDF.cxx:764
 TPDF.cxx:765
 TPDF.cxx:766
 TPDF.cxx:767
 TPDF.cxx:768
 TPDF.cxx:769
 TPDF.cxx:770
 TPDF.cxx:771
 TPDF.cxx:772
 TPDF.cxx:773
 TPDF.cxx:774
 TPDF.cxx:775
 TPDF.cxx:776
 TPDF.cxx:777
 TPDF.cxx:778
 TPDF.cxx:779
 TPDF.cxx:780
 TPDF.cxx:781
 TPDF.cxx:782
 TPDF.cxx:783
 TPDF.cxx:784
 TPDF.cxx:785
 TPDF.cxx:786
 TPDF.cxx:787
 TPDF.cxx:788
 TPDF.cxx:789
 TPDF.cxx:790
 TPDF.cxx:791
 TPDF.cxx:792
 TPDF.cxx:793
 TPDF.cxx:794
 TPDF.cxx:795
 TPDF.cxx:796
 TPDF.cxx:797
 TPDF.cxx:798
 TPDF.cxx:799
 TPDF.cxx:800
 TPDF.cxx:801
 TPDF.cxx:802
 TPDF.cxx:803
 TPDF.cxx:804
 TPDF.cxx:805
 TPDF.cxx:806
 TPDF.cxx:807
 TPDF.cxx:808
 TPDF.cxx:809
 TPDF.cxx:810
 TPDF.cxx:811
 TPDF.cxx:812
 TPDF.cxx:813
 TPDF.cxx:814
 TPDF.cxx:815
 TPDF.cxx:816
 TPDF.cxx:817
 TPDF.cxx:818
 TPDF.cxx:819
 TPDF.cxx:820
 TPDF.cxx:821
 TPDF.cxx:822
 TPDF.cxx:823
 TPDF.cxx:824
 TPDF.cxx:825
 TPDF.cxx:826
 TPDF.cxx:827
 TPDF.cxx:828
 TPDF.cxx:829
 TPDF.cxx:830
 TPDF.cxx:831
 TPDF.cxx:832
 TPDF.cxx:833
 TPDF.cxx:834
 TPDF.cxx:835
 TPDF.cxx:836
 TPDF.cxx:837
 TPDF.cxx:838
 TPDF.cxx:839
 TPDF.cxx:840
 TPDF.cxx:841
 TPDF.cxx:842
 TPDF.cxx:843
 TPDF.cxx:844
 TPDF.cxx:845
 TPDF.cxx:846
 TPDF.cxx:847
 TPDF.cxx:848
 TPDF.cxx:849
 TPDF.cxx:850
 TPDF.cxx:851
 TPDF.cxx:852
 TPDF.cxx:853
 TPDF.cxx:854
 TPDF.cxx:855
 TPDF.cxx:856
 TPDF.cxx:857
 TPDF.cxx:858
 TPDF.cxx:859
 TPDF.cxx:860
 TPDF.cxx:861
 TPDF.cxx:862
 TPDF.cxx:863
 TPDF.cxx:864
 TPDF.cxx:865
 TPDF.cxx:866
 TPDF.cxx:867
 TPDF.cxx:868
 TPDF.cxx:869
 TPDF.cxx:870
 TPDF.cxx:871
 TPDF.cxx:872
 TPDF.cxx:873
 TPDF.cxx:874
 TPDF.cxx:875
 TPDF.cxx:876
 TPDF.cxx:877
 TPDF.cxx:878
 TPDF.cxx:879
 TPDF.cxx:880
 TPDF.cxx:881
 TPDF.cxx:882
 TPDF.cxx:883
 TPDF.cxx:884
 TPDF.cxx:885
 TPDF.cxx:886
 TPDF.cxx:887
 TPDF.cxx:888
 TPDF.cxx:889
 TPDF.cxx:890
 TPDF.cxx:891
 TPDF.cxx:892
 TPDF.cxx:893
 TPDF.cxx:894
 TPDF.cxx:895
 TPDF.cxx:896
 TPDF.cxx:897
 TPDF.cxx:898
 TPDF.cxx:899
 TPDF.cxx:900
 TPDF.cxx:901
 TPDF.cxx:902
 TPDF.cxx:903
 TPDF.cxx:904
 TPDF.cxx:905
 TPDF.cxx:906
 TPDF.cxx:907
 TPDF.cxx:908
 TPDF.cxx:909
 TPDF.cxx:910
 TPDF.cxx:911
 TPDF.cxx:912
 TPDF.cxx:913
 TPDF.cxx:914
 TPDF.cxx:915
 TPDF.cxx:916
 TPDF.cxx:917
 TPDF.cxx:918
 TPDF.cxx:919
 TPDF.cxx:920
 TPDF.cxx:921
 TPDF.cxx:922
 TPDF.cxx:923
 TPDF.cxx:924
 TPDF.cxx:925
 TPDF.cxx:926
 TPDF.cxx:927
 TPDF.cxx:928
 TPDF.cxx:929
 TPDF.cxx:930
 TPDF.cxx:931
 TPDF.cxx:932
 TPDF.cxx:933
 TPDF.cxx:934
 TPDF.cxx:935
 TPDF.cxx:936
 TPDF.cxx:937
 TPDF.cxx:938
 TPDF.cxx:939
 TPDF.cxx:940
 TPDF.cxx:941
 TPDF.cxx:942
 TPDF.cxx:943
 TPDF.cxx:944
 TPDF.cxx:945
 TPDF.cxx:946
 TPDF.cxx:947
 TPDF.cxx:948
 TPDF.cxx:949
 TPDF.cxx:950
 TPDF.cxx:951
 TPDF.cxx:952
 TPDF.cxx:953
 TPDF.cxx:954
 TPDF.cxx:955
 TPDF.cxx:956
 TPDF.cxx:957
 TPDF.cxx:958
 TPDF.cxx:959
 TPDF.cxx:960
 TPDF.cxx:961
 TPDF.cxx:962
 TPDF.cxx:963
 TPDF.cxx:964
 TPDF.cxx:965
 TPDF.cxx:966
 TPDF.cxx:967
 TPDF.cxx:968
 TPDF.cxx:969
 TPDF.cxx:970
 TPDF.cxx:971
 TPDF.cxx:972
 TPDF.cxx:973
 TPDF.cxx:974
 TPDF.cxx:975
 TPDF.cxx:976
 TPDF.cxx:977
 TPDF.cxx:978
 TPDF.cxx:979
 TPDF.cxx:980
 TPDF.cxx:981
 TPDF.cxx:982
 TPDF.cxx:983
 TPDF.cxx:984
 TPDF.cxx:985
 TPDF.cxx:986
 TPDF.cxx:987
 TPDF.cxx:988
 TPDF.cxx:989
 TPDF.cxx:990
 TPDF.cxx:991
 TPDF.cxx:992
 TPDF.cxx:993
 TPDF.cxx:994
 TPDF.cxx:995
 TPDF.cxx:996
 TPDF.cxx:997
 TPDF.cxx:998
 TPDF.cxx:999
 TPDF.cxx:1000
 TPDF.cxx:1001
 TPDF.cxx:1002
 TPDF.cxx:1003
 TPDF.cxx:1004
 TPDF.cxx:1005
 TPDF.cxx:1006
 TPDF.cxx:1007
 TPDF.cxx:1008
 TPDF.cxx:1009
 TPDF.cxx:1010
 TPDF.cxx:1011
 TPDF.cxx:1012
 TPDF.cxx:1013
 TPDF.cxx:1014
 TPDF.cxx:1015
 TPDF.cxx:1016
 TPDF.cxx:1017
 TPDF.cxx:1018
 TPDF.cxx:1019
 TPDF.cxx:1020
 TPDF.cxx:1021
 TPDF.cxx:1022
 TPDF.cxx:1023
 TPDF.cxx:1024
 TPDF.cxx:1025
 TPDF.cxx:1026
 TPDF.cxx:1027
 TPDF.cxx:1028
 TPDF.cxx:1029
 TPDF.cxx:1030
 TPDF.cxx:1031
 TPDF.cxx:1032
 TPDF.cxx:1033
 TPDF.cxx:1034
 TPDF.cxx:1035
 TPDF.cxx:1036
 TPDF.cxx:1037
 TPDF.cxx:1038
 TPDF.cxx:1039
 TPDF.cxx:1040
 TPDF.cxx:1041
 TPDF.cxx:1042
 TPDF.cxx:1043
 TPDF.cxx:1044
 TPDF.cxx:1045
 TPDF.cxx:1046
 TPDF.cxx:1047
 TPDF.cxx:1048
 TPDF.cxx:1049
 TPDF.cxx:1050
 TPDF.cxx:1051
 TPDF.cxx:1052
 TPDF.cxx:1053
 TPDF.cxx:1054
 TPDF.cxx:1055
 TPDF.cxx:1056
 TPDF.cxx:1057
 TPDF.cxx:1058
 TPDF.cxx:1059
 TPDF.cxx:1060
 TPDF.cxx:1061
 TPDF.cxx:1062
 TPDF.cxx:1063
 TPDF.cxx:1064
 TPDF.cxx:1065
 TPDF.cxx:1066
 TPDF.cxx:1067
 TPDF.cxx:1068
 TPDF.cxx:1069
 TPDF.cxx:1070
 TPDF.cxx:1071
 TPDF.cxx:1072
 TPDF.cxx:1073
 TPDF.cxx:1074
 TPDF.cxx:1075
 TPDF.cxx:1076
 TPDF.cxx:1077
 TPDF.cxx:1078
 TPDF.cxx:1079
 TPDF.cxx:1080
 TPDF.cxx:1081
 TPDF.cxx:1082
 TPDF.cxx:1083
 TPDF.cxx:1084
 TPDF.cxx:1085
 TPDF.cxx:1086
 TPDF.cxx:1087
 TPDF.cxx:1088
 TPDF.cxx:1089
 TPDF.cxx:1090
 TPDF.cxx:1091
 TPDF.cxx:1092
 TPDF.cxx:1093
 TPDF.cxx:1094
 TPDF.cxx:1095
 TPDF.cxx:1096
 TPDF.cxx:1097
 TPDF.cxx:1098
 TPDF.cxx:1099
 TPDF.cxx:1100
 TPDF.cxx:1101
 TPDF.cxx:1102
 TPDF.cxx:1103
 TPDF.cxx:1104
 TPDF.cxx:1105
 TPDF.cxx:1106
 TPDF.cxx:1107
 TPDF.cxx:1108
 TPDF.cxx:1109
 TPDF.cxx:1110
 TPDF.cxx:1111
 TPDF.cxx:1112
 TPDF.cxx:1113
 TPDF.cxx:1114
 TPDF.cxx:1115
 TPDF.cxx:1116
 TPDF.cxx:1117
 TPDF.cxx:1118
 TPDF.cxx:1119
 TPDF.cxx:1120
 TPDF.cxx:1121
 TPDF.cxx:1122
 TPDF.cxx:1123
 TPDF.cxx:1124
 TPDF.cxx:1125
 TPDF.cxx:1126
 TPDF.cxx:1127
 TPDF.cxx:1128
 TPDF.cxx:1129
 TPDF.cxx:1130
 TPDF.cxx:1131
 TPDF.cxx:1132
 TPDF.cxx:1133
 TPDF.cxx:1134
 TPDF.cxx:1135
 TPDF.cxx:1136
 TPDF.cxx:1137
 TPDF.cxx:1138
 TPDF.cxx:1139
 TPDF.cxx:1140
 TPDF.cxx:1141
 TPDF.cxx:1142
 TPDF.cxx:1143
 TPDF.cxx:1144
 TPDF.cxx:1145
 TPDF.cxx:1146
 TPDF.cxx:1147
 TPDF.cxx:1148
 TPDF.cxx:1149
 TPDF.cxx:1150
 TPDF.cxx:1151
 TPDF.cxx:1152
 TPDF.cxx:1153
 TPDF.cxx:1154
 TPDF.cxx:1155
 TPDF.cxx:1156
 TPDF.cxx:1157
 TPDF.cxx:1158
 TPDF.cxx:1159
 TPDF.cxx:1160
 TPDF.cxx:1161
 TPDF.cxx:1162
 TPDF.cxx:1163
 TPDF.cxx:1164
 TPDF.cxx:1165
 TPDF.cxx:1166
 TPDF.cxx:1167
 TPDF.cxx:1168
 TPDF.cxx:1169
 TPDF.cxx:1170
 TPDF.cxx:1171
 TPDF.cxx:1172
 TPDF.cxx:1173
 TPDF.cxx:1174
 TPDF.cxx:1175
 TPDF.cxx:1176
 TPDF.cxx:1177
 TPDF.cxx:1178
 TPDF.cxx:1179
 TPDF.cxx:1180
 TPDF.cxx:1181
 TPDF.cxx:1182
 TPDF.cxx:1183
 TPDF.cxx:1184
 TPDF.cxx:1185
 TPDF.cxx:1186
 TPDF.cxx:1187
 TPDF.cxx:1188
 TPDF.cxx:1189
 TPDF.cxx:1190
 TPDF.cxx:1191
 TPDF.cxx:1192
 TPDF.cxx:1193
 TPDF.cxx:1194
 TPDF.cxx:1195
 TPDF.cxx:1196
 TPDF.cxx:1197
 TPDF.cxx:1198
 TPDF.cxx:1199
 TPDF.cxx:1200
 TPDF.cxx:1201
 TPDF.cxx:1202
 TPDF.cxx:1203
 TPDF.cxx:1204
 TPDF.cxx:1205
 TPDF.cxx:1206
 TPDF.cxx:1207
 TPDF.cxx:1208
 TPDF.cxx:1209
 TPDF.cxx:1210
 TPDF.cxx:1211
 TPDF.cxx:1212
 TPDF.cxx:1213
 TPDF.cxx:1214
 TPDF.cxx:1215
 TPDF.cxx:1216
 TPDF.cxx:1217
 TPDF.cxx:1218
 TPDF.cxx:1219
 TPDF.cxx:1220
 TPDF.cxx:1221
 TPDF.cxx:1222
 TPDF.cxx:1223
 TPDF.cxx:1224
 TPDF.cxx:1225
 TPDF.cxx:1226
 TPDF.cxx:1227
 TPDF.cxx:1228
 TPDF.cxx:1229
 TPDF.cxx:1230
 TPDF.cxx:1231
 TPDF.cxx:1232
 TPDF.cxx:1233
 TPDF.cxx:1234
 TPDF.cxx:1235
 TPDF.cxx:1236
 TPDF.cxx:1237
 TPDF.cxx:1238
 TPDF.cxx:1239
 TPDF.cxx:1240
 TPDF.cxx:1241
 TPDF.cxx:1242
 TPDF.cxx:1243
 TPDF.cxx:1244
 TPDF.cxx:1245
 TPDF.cxx:1246
 TPDF.cxx:1247
 TPDF.cxx:1248
 TPDF.cxx:1249
 TPDF.cxx:1250
 TPDF.cxx:1251
 TPDF.cxx:1252
 TPDF.cxx:1253
 TPDF.cxx:1254
 TPDF.cxx:1255
 TPDF.cxx:1256
 TPDF.cxx:1257
 TPDF.cxx:1258
 TPDF.cxx:1259
 TPDF.cxx:1260
 TPDF.cxx:1261
 TPDF.cxx:1262
 TPDF.cxx:1263
 TPDF.cxx:1264
 TPDF.cxx:1265
 TPDF.cxx:1266
 TPDF.cxx:1267
 TPDF.cxx:1268
 TPDF.cxx:1269
 TPDF.cxx:1270
 TPDF.cxx:1271
 TPDF.cxx:1272
 TPDF.cxx:1273
 TPDF.cxx:1274
 TPDF.cxx:1275
 TPDF.cxx:1276
 TPDF.cxx:1277
 TPDF.cxx:1278
 TPDF.cxx:1279
 TPDF.cxx:1280
 TPDF.cxx:1281
 TPDF.cxx:1282
 TPDF.cxx:1283
 TPDF.cxx:1284
 TPDF.cxx:1285
 TPDF.cxx:1286
 TPDF.cxx:1287
 TPDF.cxx:1288
 TPDF.cxx:1289
 TPDF.cxx:1290
 TPDF.cxx:1291
 TPDF.cxx:1292
 TPDF.cxx:1293
 TPDF.cxx:1294
 TPDF.cxx:1295
 TPDF.cxx:1296
 TPDF.cxx:1297
 TPDF.cxx:1298
 TPDF.cxx:1299
 TPDF.cxx:1300
 TPDF.cxx:1301
 TPDF.cxx:1302
 TPDF.cxx:1303
 TPDF.cxx:1304
 TPDF.cxx:1305
 TPDF.cxx:1306
 TPDF.cxx:1307
 TPDF.cxx:1308
 TPDF.cxx:1309
 TPDF.cxx:1310
 TPDF.cxx:1311
 TPDF.cxx:1312
 TPDF.cxx:1313
 TPDF.cxx:1314
 TPDF.cxx:1315
 TPDF.cxx:1316
 TPDF.cxx:1317
 TPDF.cxx:1318
 TPDF.cxx:1319
 TPDF.cxx:1320
 TPDF.cxx:1321
 TPDF.cxx:1322
 TPDF.cxx:1323
 TPDF.cxx:1324
 TPDF.cxx:1325
 TPDF.cxx:1326
 TPDF.cxx:1327
 TPDF.cxx:1328
 TPDF.cxx:1329
 TPDF.cxx:1330
 TPDF.cxx:1331
 TPDF.cxx:1332
 TPDF.cxx:1333
 TPDF.cxx:1334
 TPDF.cxx:1335
 TPDF.cxx:1336
 TPDF.cxx:1337
 TPDF.cxx:1338
 TPDF.cxx:1339
 TPDF.cxx:1340
 TPDF.cxx:1341
 TPDF.cxx:1342
 TPDF.cxx:1343
 TPDF.cxx:1344
 TPDF.cxx:1345
 TPDF.cxx:1346
 TPDF.cxx:1347
 TPDF.cxx:1348
 TPDF.cxx:1349
 TPDF.cxx:1350
 TPDF.cxx:1351
 TPDF.cxx:1352
 TPDF.cxx:1353
 TPDF.cxx:1354
 TPDF.cxx:1355
 TPDF.cxx:1356
 TPDF.cxx:1357
 TPDF.cxx:1358
 TPDF.cxx:1359
 TPDF.cxx:1360
 TPDF.cxx:1361
 TPDF.cxx:1362
 TPDF.cxx:1363
 TPDF.cxx:1364
 TPDF.cxx:1365
 TPDF.cxx:1366
 TPDF.cxx:1367
 TPDF.cxx:1368
 TPDF.cxx:1369
 TPDF.cxx:1370
 TPDF.cxx:1371
 TPDF.cxx:1372
 TPDF.cxx:1373
 TPDF.cxx:1374
 TPDF.cxx:1375
 TPDF.cxx:1376
 TPDF.cxx:1377
 TPDF.cxx:1378
 TPDF.cxx:1379
 TPDF.cxx:1380
 TPDF.cxx:1381
 TPDF.cxx:1382
 TPDF.cxx:1383
 TPDF.cxx:1384
 TPDF.cxx:1385
 TPDF.cxx:1386
 TPDF.cxx:1387
 TPDF.cxx:1388
 TPDF.cxx:1389
 TPDF.cxx:1390
 TPDF.cxx:1391
 TPDF.cxx:1392
 TPDF.cxx:1393
 TPDF.cxx:1394
 TPDF.cxx:1395
 TPDF.cxx:1396
 TPDF.cxx:1397
 TPDF.cxx:1398
 TPDF.cxx:1399
 TPDF.cxx:1400
 TPDF.cxx:1401
 TPDF.cxx:1402
 TPDF.cxx:1403
 TPDF.cxx:1404
 TPDF.cxx:1405
 TPDF.cxx:1406
 TPDF.cxx:1407
 TPDF.cxx:1408
 TPDF.cxx:1409
 TPDF.cxx:1410
 TPDF.cxx:1411
 TPDF.cxx:1412
 TPDF.cxx:1413
 TPDF.cxx:1414
 TPDF.cxx:1415
 TPDF.cxx:1416
 TPDF.cxx:1417
 TPDF.cxx:1418
 TPDF.cxx:1419
 TPDF.cxx:1420
 TPDF.cxx:1421
 TPDF.cxx:1422
 TPDF.cxx:1423
 TPDF.cxx:1424
 TPDF.cxx:1425
 TPDF.cxx:1426
 TPDF.cxx:1427
 TPDF.cxx:1428
 TPDF.cxx:1429
 TPDF.cxx:1430
 TPDF.cxx:1431
 TPDF.cxx:1432
 TPDF.cxx:1433
 TPDF.cxx:1434
 TPDF.cxx:1435
 TPDF.cxx:1436
 TPDF.cxx:1437
 TPDF.cxx:1438
 TPDF.cxx:1439
 TPDF.cxx:1440
 TPDF.cxx:1441
 TPDF.cxx:1442
 TPDF.cxx:1443
 TPDF.cxx:1444
 TPDF.cxx:1445
 TPDF.cxx:1446
 TPDF.cxx:1447
 TPDF.cxx:1448
 TPDF.cxx:1449
 TPDF.cxx:1450
 TPDF.cxx:1451
 TPDF.cxx:1452
 TPDF.cxx:1453
 TPDF.cxx:1454
 TPDF.cxx:1455
 TPDF.cxx:1456
 TPDF.cxx:1457
 TPDF.cxx:1458
 TPDF.cxx:1459
 TPDF.cxx:1460
 TPDF.cxx:1461
 TPDF.cxx:1462
 TPDF.cxx:1463
 TPDF.cxx:1464
 TPDF.cxx:1465
 TPDF.cxx:1466
 TPDF.cxx:1467
 TPDF.cxx:1468
 TPDF.cxx:1469
 TPDF.cxx:1470
 TPDF.cxx:1471
 TPDF.cxx:1472
 TPDF.cxx:1473
 TPDF.cxx:1474
 TPDF.cxx:1475
 TPDF.cxx:1476
 TPDF.cxx:1477
 TPDF.cxx:1478
 TPDF.cxx:1479
 TPDF.cxx:1480
 TPDF.cxx:1481
 TPDF.cxx:1482
 TPDF.cxx:1483
 TPDF.cxx:1484
 TPDF.cxx:1485
 TPDF.cxx:1486
 TPDF.cxx:1487
 TPDF.cxx:1488
 TPDF.cxx:1489
 TPDF.cxx:1490
 TPDF.cxx:1491
 TPDF.cxx:1492
 TPDF.cxx:1493
 TPDF.cxx:1494
 TPDF.cxx:1495
 TPDF.cxx:1496
 TPDF.cxx:1497
 TPDF.cxx:1498
 TPDF.cxx:1499
 TPDF.cxx:1500
 TPDF.cxx:1501
 TPDF.cxx:1502
 TPDF.cxx:1503
 TPDF.cxx:1504
 TPDF.cxx:1505
 TPDF.cxx:1506
 TPDF.cxx:1507
 TPDF.cxx:1508
 TPDF.cxx:1509
 TPDF.cxx:1510
 TPDF.cxx:1511
 TPDF.cxx:1512
 TPDF.cxx:1513
 TPDF.cxx:1514
 TPDF.cxx:1515
 TPDF.cxx:1516
 TPDF.cxx:1517
 TPDF.cxx:1518
 TPDF.cxx:1519
 TPDF.cxx:1520
 TPDF.cxx:1521
 TPDF.cxx:1522
 TPDF.cxx:1523
 TPDF.cxx:1524
 TPDF.cxx:1525
 TPDF.cxx:1526
 TPDF.cxx:1527
 TPDF.cxx:1528
 TPDF.cxx:1529
 TPDF.cxx:1530
 TPDF.cxx:1531
 TPDF.cxx:1532
 TPDF.cxx:1533
 TPDF.cxx:1534
 TPDF.cxx:1535
 TPDF.cxx:1536
 TPDF.cxx:1537
 TPDF.cxx:1538
 TPDF.cxx:1539
 TPDF.cxx:1540
 TPDF.cxx:1541
 TPDF.cxx:1542
 TPDF.cxx:1543
 TPDF.cxx:1544
 TPDF.cxx:1545
 TPDF.cxx:1546
 TPDF.cxx:1547
 TPDF.cxx:1548
 TPDF.cxx:1549
 TPDF.cxx:1550
 TPDF.cxx:1551
 TPDF.cxx:1552
 TPDF.cxx:1553
 TPDF.cxx:1554
 TPDF.cxx:1555
 TPDF.cxx:1556
 TPDF.cxx:1557
 TPDF.cxx:1558
 TPDF.cxx:1559
 TPDF.cxx:1560
 TPDF.cxx:1561
 TPDF.cxx:1562
 TPDF.cxx:1563
 TPDF.cxx:1564
 TPDF.cxx:1565
 TPDF.cxx:1566
 TPDF.cxx:1567
 TPDF.cxx:1568
 TPDF.cxx:1569
 TPDF.cxx:1570
 TPDF.cxx:1571
 TPDF.cxx:1572
 TPDF.cxx:1573
 TPDF.cxx:1574
 TPDF.cxx:1575
 TPDF.cxx:1576
 TPDF.cxx:1577
 TPDF.cxx:1578
 TPDF.cxx:1579
 TPDF.cxx:1580
 TPDF.cxx:1581
 TPDF.cxx:1582
 TPDF.cxx:1583
 TPDF.cxx:1584
 TPDF.cxx:1585
 TPDF.cxx:1586
 TPDF.cxx:1587
 TPDF.cxx:1588
 TPDF.cxx:1589
 TPDF.cxx:1590
 TPDF.cxx:1591
 TPDF.cxx:1592
 TPDF.cxx:1593
 TPDF.cxx:1594
 TPDF.cxx:1595
 TPDF.cxx:1596
 TPDF.cxx:1597
 TPDF.cxx:1598
 TPDF.cxx:1599
 TPDF.cxx:1600
 TPDF.cxx:1601
 TPDF.cxx:1602
 TPDF.cxx:1603
 TPDF.cxx:1604
 TPDF.cxx:1605
 TPDF.cxx:1606
 TPDF.cxx:1607
 TPDF.cxx:1608
 TPDF.cxx:1609
 TPDF.cxx:1610
 TPDF.cxx:1611
 TPDF.cxx:1612
 TPDF.cxx:1613
 TPDF.cxx:1614
 TPDF.cxx:1615
 TPDF.cxx:1616
 TPDF.cxx:1617
 TPDF.cxx:1618
 TPDF.cxx:1619
 TPDF.cxx:1620
 TPDF.cxx:1621
 TPDF.cxx:1622
 TPDF.cxx:1623
 TPDF.cxx:1624
 TPDF.cxx:1625
 TPDF.cxx:1626
 TPDF.cxx:1627
 TPDF.cxx:1628
 TPDF.cxx:1629
 TPDF.cxx:1630
 TPDF.cxx:1631
 TPDF.cxx:1632
 TPDF.cxx:1633
 TPDF.cxx:1634
 TPDF.cxx:1635
 TPDF.cxx:1636
 TPDF.cxx:1637
 TPDF.cxx:1638
 TPDF.cxx:1639
 TPDF.cxx:1640
 TPDF.cxx:1641
 TPDF.cxx:1642
 TPDF.cxx:1643
 TPDF.cxx:1644
 TPDF.cxx:1645
 TPDF.cxx:1646
 TPDF.cxx:1647
 TPDF.cxx:1648
 TPDF.cxx:1649
 TPDF.cxx:1650
 TPDF.cxx:1651
 TPDF.cxx:1652
 TPDF.cxx:1653
 TPDF.cxx:1654
 TPDF.cxx:1655
 TPDF.cxx:1656
 TPDF.cxx:1657
 TPDF.cxx:1658
 TPDF.cxx:1659
 TPDF.cxx:1660
 TPDF.cxx:1661
 TPDF.cxx:1662
 TPDF.cxx:1663
 TPDF.cxx:1664
 TPDF.cxx:1665
 TPDF.cxx:1666
 TPDF.cxx:1667
 TPDF.cxx:1668
 TPDF.cxx:1669
 TPDF.cxx:1670
 TPDF.cxx:1671
 TPDF.cxx:1672
 TPDF.cxx:1673
 TPDF.cxx:1674
 TPDF.cxx:1675
 TPDF.cxx:1676
 TPDF.cxx:1677
 TPDF.cxx:1678
 TPDF.cxx:1679
 TPDF.cxx:1680
 TPDF.cxx:1681
 TPDF.cxx:1682
 TPDF.cxx:1683
 TPDF.cxx:1684
 TPDF.cxx:1685
 TPDF.cxx:1686
 TPDF.cxx:1687
 TPDF.cxx:1688
 TPDF.cxx:1689
 TPDF.cxx:1690
 TPDF.cxx:1691
 TPDF.cxx:1692
 TPDF.cxx:1693
 TPDF.cxx:1694
 TPDF.cxx:1695
 TPDF.cxx:1696
 TPDF.cxx:1697
 TPDF.cxx:1698
 TPDF.cxx:1699
 TPDF.cxx:1700
 TPDF.cxx:1701
 TPDF.cxx:1702
 TPDF.cxx:1703
 TPDF.cxx:1704
 TPDF.cxx:1705
 TPDF.cxx:1706
 TPDF.cxx:1707
 TPDF.cxx:1708
 TPDF.cxx:1709
 TPDF.cxx:1710
 TPDF.cxx:1711
 TPDF.cxx:1712
 TPDF.cxx:1713
 TPDF.cxx:1714
 TPDF.cxx:1715
 TPDF.cxx:1716
 TPDF.cxx:1717
 TPDF.cxx:1718
 TPDF.cxx:1719
 TPDF.cxx:1720
 TPDF.cxx:1721
 TPDF.cxx:1722
 TPDF.cxx:1723
 TPDF.cxx:1724
 TPDF.cxx:1725
 TPDF.cxx:1726
 TPDF.cxx:1727
 TPDF.cxx:1728
 TPDF.cxx:1729
 TPDF.cxx:1730
 TPDF.cxx:1731
 TPDF.cxx:1732
 TPDF.cxx:1733
 TPDF.cxx:1734
 TPDF.cxx:1735
 TPDF.cxx:1736
 TPDF.cxx:1737
 TPDF.cxx:1738
 TPDF.cxx:1739
 TPDF.cxx:1740
 TPDF.cxx:1741
 TPDF.cxx:1742
 TPDF.cxx:1743
 TPDF.cxx:1744
 TPDF.cxx:1745
 TPDF.cxx:1746
 TPDF.cxx:1747
 TPDF.cxx:1748
 TPDF.cxx:1749
 TPDF.cxx:1750
 TPDF.cxx:1751
 TPDF.cxx:1752
 TPDF.cxx:1753
 TPDF.cxx:1754
 TPDF.cxx:1755
 TPDF.cxx:1756
 TPDF.cxx:1757
 TPDF.cxx:1758
 TPDF.cxx:1759
 TPDF.cxx:1760
 TPDF.cxx:1761
 TPDF.cxx:1762
 TPDF.cxx:1763
 TPDF.cxx:1764
 TPDF.cxx:1765
 TPDF.cxx:1766
 TPDF.cxx:1767
 TPDF.cxx:1768
 TPDF.cxx:1769
 TPDF.cxx:1770
 TPDF.cxx:1771
 TPDF.cxx:1772
 TPDF.cxx:1773
 TPDF.cxx:1774
 TPDF.cxx:1775
 TPDF.cxx:1776
 TPDF.cxx:1777
 TPDF.cxx:1778
 TPDF.cxx:1779
 TPDF.cxx:1780
 TPDF.cxx:1781
 TPDF.cxx:1782
 TPDF.cxx:1783
 TPDF.cxx:1784
 TPDF.cxx:1785
 TPDF.cxx:1786
 TPDF.cxx:1787
 TPDF.cxx:1788
 TPDF.cxx:1789
 TPDF.cxx:1790
 TPDF.cxx:1791
 TPDF.cxx:1792
 TPDF.cxx:1793
 TPDF.cxx:1794
 TPDF.cxx:1795
 TPDF.cxx:1796
 TPDF.cxx:1797
 TPDF.cxx:1798
 TPDF.cxx:1799
 TPDF.cxx:1800
 TPDF.cxx:1801
 TPDF.cxx:1802
 TPDF.cxx:1803
 TPDF.cxx:1804
 TPDF.cxx:1805
 TPDF.cxx:1806
 TPDF.cxx:1807
 TPDF.cxx:1808
 TPDF.cxx:1809
 TPDF.cxx:1810
 TPDF.cxx:1811
 TPDF.cxx:1812
 TPDF.cxx:1813
 TPDF.cxx:1814
 TPDF.cxx:1815
 TPDF.cxx:1816
 TPDF.cxx:1817
 TPDF.cxx:1818
 TPDF.cxx:1819
 TPDF.cxx:1820
 TPDF.cxx:1821
 TPDF.cxx:1822
 TPDF.cxx:1823
 TPDF.cxx:1824
 TPDF.cxx:1825
 TPDF.cxx:1826
 TPDF.cxx:1827
 TPDF.cxx:1828
 TPDF.cxx:1829
 TPDF.cxx:1830
 TPDF.cxx:1831
 TPDF.cxx:1832
 TPDF.cxx:1833
 TPDF.cxx:1834
 TPDF.cxx:1835
 TPDF.cxx:1836
 TPDF.cxx:1837
 TPDF.cxx:1838
 TPDF.cxx:1839
 TPDF.cxx:1840
 TPDF.cxx:1841
 TPDF.cxx:1842
 TPDF.cxx:1843
 TPDF.cxx:1844
 TPDF.cxx:1845
 TPDF.cxx:1846
 TPDF.cxx:1847
 TPDF.cxx:1848
 TPDF.cxx:1849
 TPDF.cxx:1850
 TPDF.cxx:1851
 TPDF.cxx:1852
 TPDF.cxx:1853
 TPDF.cxx:1854
 TPDF.cxx:1855
 TPDF.cxx:1856
 TPDF.cxx:1857
 TPDF.cxx:1858
 TPDF.cxx:1859
 TPDF.cxx:1860
 TPDF.cxx:1861
 TPDF.cxx:1862
 TPDF.cxx:1863
 TPDF.cxx:1864
 TPDF.cxx:1865
 TPDF.cxx:1866
 TPDF.cxx:1867
 TPDF.cxx:1868
 TPDF.cxx:1869
 TPDF.cxx:1870
 TPDF.cxx:1871
 TPDF.cxx:1872
 TPDF.cxx:1873
 TPDF.cxx:1874
 TPDF.cxx:1875
 TPDF.cxx:1876
 TPDF.cxx:1877
 TPDF.cxx:1878
 TPDF.cxx:1879
 TPDF.cxx:1880
 TPDF.cxx:1881
 TPDF.cxx:1882
 TPDF.cxx:1883
 TPDF.cxx:1884
 TPDF.cxx:1885
 TPDF.cxx:1886
 TPDF.cxx:1887
 TPDF.cxx:1888
 TPDF.cxx:1889
 TPDF.cxx:1890
 TPDF.cxx:1891
 TPDF.cxx:1892
 TPDF.cxx:1893
 TPDF.cxx:1894
 TPDF.cxx:1895
 TPDF.cxx:1896
 TPDF.cxx:1897
 TPDF.cxx:1898
 TPDF.cxx:1899
 TPDF.cxx:1900
 TPDF.cxx:1901
 TPDF.cxx:1902
 TPDF.cxx:1903
 TPDF.cxx:1904
 TPDF.cxx:1905
 TPDF.cxx:1906
 TPDF.cxx:1907
 TPDF.cxx:1908
 TPDF.cxx:1909
 TPDF.cxx:1910
 TPDF.cxx:1911
 TPDF.cxx:1912
 TPDF.cxx:1913
 TPDF.cxx:1914
 TPDF.cxx:1915
 TPDF.cxx:1916
 TPDF.cxx:1917
 TPDF.cxx:1918
 TPDF.cxx:1919
 TPDF.cxx:1920
 TPDF.cxx:1921
 TPDF.cxx:1922
 TPDF.cxx:1923
 TPDF.cxx:1924
 TPDF.cxx:1925
 TPDF.cxx:1926
 TPDF.cxx:1927
 TPDF.cxx:1928
 TPDF.cxx:1929
 TPDF.cxx:1930
 TPDF.cxx:1931
 TPDF.cxx:1932
 TPDF.cxx:1933
 TPDF.cxx:1934
 TPDF.cxx:1935
 TPDF.cxx:1936
 TPDF.cxx:1937
 TPDF.cxx:1938
 TPDF.cxx:1939
 TPDF.cxx:1940
 TPDF.cxx:1941
 TPDF.cxx:1942
 TPDF.cxx:1943
 TPDF.cxx:1944
 TPDF.cxx:1945
 TPDF.cxx:1946
 TPDF.cxx:1947
 TPDF.cxx:1948
 TPDF.cxx:1949
 TPDF.cxx:1950
 TPDF.cxx:1951
 TPDF.cxx:1952
 TPDF.cxx:1953
 TPDF.cxx:1954
 TPDF.cxx:1955
 TPDF.cxx:1956
 TPDF.cxx:1957
 TPDF.cxx:1958
 TPDF.cxx:1959
 TPDF.cxx:1960
 TPDF.cxx:1961
 TPDF.cxx:1962
 TPDF.cxx:1963
 TPDF.cxx:1964
 TPDF.cxx:1965
 TPDF.cxx:1966
 TPDF.cxx:1967
 TPDF.cxx:1968
 TPDF.cxx:1969
 TPDF.cxx:1970
 TPDF.cxx:1971
 TPDF.cxx:1972
 TPDF.cxx:1973
 TPDF.cxx:1974
 TPDF.cxx:1975
 TPDF.cxx:1976
 TPDF.cxx:1977
 TPDF.cxx:1978
 TPDF.cxx:1979
 TPDF.cxx:1980
 TPDF.cxx:1981
 TPDF.cxx:1982
 TPDF.cxx:1983
 TPDF.cxx:1984
 TPDF.cxx:1985
 TPDF.cxx:1986
 TPDF.cxx:1987
 TPDF.cxx:1988
 TPDF.cxx:1989
 TPDF.cxx:1990
 TPDF.cxx:1991
 TPDF.cxx:1992
 TPDF.cxx:1993
 TPDF.cxx:1994
 TPDF.cxx:1995
 TPDF.cxx:1996
 TPDF.cxx:1997
 TPDF.cxx:1998
 TPDF.cxx:1999
 TPDF.cxx:2000
 TPDF.cxx:2001
 TPDF.cxx:2002
 TPDF.cxx:2003
 TPDF.cxx:2004
 TPDF.cxx:2005
 TPDF.cxx:2006
 TPDF.cxx:2007
 TPDF.cxx:2008
 TPDF.cxx:2009
 TPDF.cxx:2010
 TPDF.cxx:2011
 TPDF.cxx:2012
 TPDF.cxx:2013
 TPDF.cxx:2014
 TPDF.cxx:2015
 TPDF.cxx:2016
 TPDF.cxx:2017
 TPDF.cxx:2018
 TPDF.cxx:2019
 TPDF.cxx:2020
 TPDF.cxx:2021
 TPDF.cxx:2022
 TPDF.cxx:2023
 TPDF.cxx:2024
 TPDF.cxx:2025
 TPDF.cxx:2026
 TPDF.cxx:2027
 TPDF.cxx:2028
 TPDF.cxx:2029
 TPDF.cxx:2030
 TPDF.cxx:2031
 TPDF.cxx:2032
 TPDF.cxx:2033
 TPDF.cxx:2034
 TPDF.cxx:2035
 TPDF.cxx:2036
 TPDF.cxx:2037
 TPDF.cxx:2038
 TPDF.cxx:2039
 TPDF.cxx:2040
 TPDF.cxx:2041
 TPDF.cxx:2042
 TPDF.cxx:2043
 TPDF.cxx:2044
 TPDF.cxx:2045
 TPDF.cxx:2046
 TPDF.cxx:2047
 TPDF.cxx:2048
 TPDF.cxx:2049
 TPDF.cxx:2050
 TPDF.cxx:2051
 TPDF.cxx:2052
 TPDF.cxx:2053
 TPDF.cxx:2054
 TPDF.cxx:2055
 TPDF.cxx:2056
 TPDF.cxx:2057
 TPDF.cxx:2058
 TPDF.cxx:2059
 TPDF.cxx:2060
 TPDF.cxx:2061
 TPDF.cxx:2062
 TPDF.cxx:2063
 TPDF.cxx:2064
 TPDF.cxx:2065
 TPDF.cxx:2066
 TPDF.cxx:2067
 TPDF.cxx:2068
 TPDF.cxx:2069
 TPDF.cxx:2070
 TPDF.cxx:2071
 TPDF.cxx:2072
 TPDF.cxx:2073
 TPDF.cxx:2074
 TPDF.cxx:2075
 TPDF.cxx:2076
 TPDF.cxx:2077
 TPDF.cxx:2078
 TPDF.cxx:2079
 TPDF.cxx:2080
 TPDF.cxx:2081
 TPDF.cxx:2082
 TPDF.cxx:2083
 TPDF.cxx:2084
 TPDF.cxx:2085
 TPDF.cxx:2086
 TPDF.cxx:2087
 TPDF.cxx:2088
 TPDF.cxx:2089
 TPDF.cxx:2090
 TPDF.cxx:2091
 TPDF.cxx:2092
 TPDF.cxx:2093
 TPDF.cxx:2094
 TPDF.cxx:2095
 TPDF.cxx:2096
 TPDF.cxx:2097
 TPDF.cxx:2098
 TPDF.cxx:2099
 TPDF.cxx:2100
 TPDF.cxx:2101
 TPDF.cxx:2102
 TPDF.cxx:2103
 TPDF.cxx:2104
 TPDF.cxx:2105
 TPDF.cxx:2106
 TPDF.cxx:2107
 TPDF.cxx:2108
 TPDF.cxx:2109
 TPDF.cxx:2110
 TPDF.cxx:2111
 TPDF.cxx:2112
 TPDF.cxx:2113
 TPDF.cxx:2114
 TPDF.cxx:2115
 TPDF.cxx:2116
 TPDF.cxx:2117
 TPDF.cxx:2118
 TPDF.cxx:2119
 TPDF.cxx:2120
 TPDF.cxx:2121
 TPDF.cxx:2122
 TPDF.cxx:2123
 TPDF.cxx:2124
 TPDF.cxx:2125
 TPDF.cxx:2126
 TPDF.cxx:2127
 TPDF.cxx:2128
 TPDF.cxx:2129
 TPDF.cxx:2130
 TPDF.cxx:2131
 TPDF.cxx:2132
 TPDF.cxx:2133
 TPDF.cxx:2134
 TPDF.cxx:2135
 TPDF.cxx:2136
 TPDF.cxx:2137
 TPDF.cxx:2138
 TPDF.cxx:2139
 TPDF.cxx:2140
 TPDF.cxx:2141
 TPDF.cxx:2142
 TPDF.cxx:2143
 TPDF.cxx:2144
 TPDF.cxx:2145
 TPDF.cxx:2146
 TPDF.cxx:2147
 TPDF.cxx:2148
 TPDF.cxx:2149
 TPDF.cxx:2150
 TPDF.cxx:2151
 TPDF.cxx:2152
 TPDF.cxx:2153
 TPDF.cxx:2154
 TPDF.cxx:2155
 TPDF.cxx:2156
 TPDF.cxx:2157
 TPDF.cxx:2158
 TPDF.cxx:2159
 TPDF.cxx:2160
 TPDF.cxx:2161
 TPDF.cxx:2162
 TPDF.cxx:2163
 TPDF.cxx:2164
 TPDF.cxx:2165
 TPDF.cxx:2166
 TPDF.cxx:2167
 TPDF.cxx:2168
 TPDF.cxx:2169
 TPDF.cxx:2170
 TPDF.cxx:2171
 TPDF.cxx:2172
 TPDF.cxx:2173
 TPDF.cxx:2174
 TPDF.cxx:2175
 TPDF.cxx:2176
 TPDF.cxx:2177
 TPDF.cxx:2178
 TPDF.cxx:2179
 TPDF.cxx:2180
 TPDF.cxx:2181
 TPDF.cxx:2182
 TPDF.cxx:2183
 TPDF.cxx:2184
 TPDF.cxx:2185
 TPDF.cxx:2186
 TPDF.cxx:2187
 TPDF.cxx:2188
 TPDF.cxx:2189
 TPDF.cxx:2190
 TPDF.cxx:2191
 TPDF.cxx:2192
 TPDF.cxx:2193
 TPDF.cxx:2194
 TPDF.cxx:2195
 TPDF.cxx:2196
 TPDF.cxx:2197
 TPDF.cxx:2198
 TPDF.cxx:2199
 TPDF.cxx:2200
 TPDF.cxx:2201
 TPDF.cxx:2202
 TPDF.cxx:2203
 TPDF.cxx:2204
 TPDF.cxx:2205
 TPDF.cxx:2206
 TPDF.cxx:2207
 TPDF.cxx:2208
 TPDF.cxx:2209
 TPDF.cxx:2210
 TPDF.cxx:2211
 TPDF.cxx:2212
 TPDF.cxx:2213
 TPDF.cxx:2214
 TPDF.cxx:2215
 TPDF.cxx:2216
 TPDF.cxx:2217
 TPDF.cxx:2218
 TPDF.cxx:2219
 TPDF.cxx:2220
 TPDF.cxx:2221
 TPDF.cxx:2222
 TPDF.cxx:2223
 TPDF.cxx:2224
 TPDF.cxx:2225
 TPDF.cxx:2226
 TPDF.cxx:2227
 TPDF.cxx:2228
 TPDF.cxx:2229
 TPDF.cxx:2230
 TPDF.cxx:2231
 TPDF.cxx:2232
 TPDF.cxx:2233
 TPDF.cxx:2234
 TPDF.cxx:2235
 TPDF.cxx:2236
 TPDF.cxx:2237
 TPDF.cxx:2238
 TPDF.cxx:2239
 TPDF.cxx:2240
 TPDF.cxx:2241
 TPDF.cxx:2242
 TPDF.cxx:2243
 TPDF.cxx:2244
 TPDF.cxx:2245
 TPDF.cxx:2246
 TPDF.cxx:2247
 TPDF.cxx:2248
 TPDF.cxx:2249
 TPDF.cxx:2250
 TPDF.cxx:2251
 TPDF.cxx:2252
 TPDF.cxx:2253
 TPDF.cxx:2254
 TPDF.cxx:2255
 TPDF.cxx:2256
 TPDF.cxx:2257
 TPDF.cxx:2258
 TPDF.cxx:2259
 TPDF.cxx:2260
 TPDF.cxx:2261
 TPDF.cxx:2262
 TPDF.cxx:2263
 TPDF.cxx:2264
 TPDF.cxx:2265
 TPDF.cxx:2266
 TPDF.cxx:2267
 TPDF.cxx:2268
 TPDF.cxx:2269
 TPDF.cxx:2270
 TPDF.cxx:2271
 TPDF.cxx:2272
 TPDF.cxx:2273
 TPDF.cxx:2274
 TPDF.cxx:2275
 TPDF.cxx:2276
 TPDF.cxx:2277
 TPDF.cxx:2278
 TPDF.cxx:2279
 TPDF.cxx:2280
 TPDF.cxx:2281
 TPDF.cxx:2282
 TPDF.cxx:2283
 TPDF.cxx:2284
 TPDF.cxx:2285
 TPDF.cxx:2286
 TPDF.cxx:2287
 TPDF.cxx:2288
 TPDF.cxx:2289
 TPDF.cxx:2290
 TPDF.cxx:2291
 TPDF.cxx:2292
 TPDF.cxx:2293
 TPDF.cxx:2294
 TPDF.cxx:2295
 TPDF.cxx:2296
 TPDF.cxx:2297
 TPDF.cxx:2298
 TPDF.cxx:2299
 TPDF.cxx:2300
 TPDF.cxx:2301
 TPDF.cxx:2302
 TPDF.cxx:2303
 TPDF.cxx:2304
 TPDF.cxx:2305
 TPDF.cxx:2306
 TPDF.cxx:2307
 TPDF.cxx:2308
 TPDF.cxx:2309
 TPDF.cxx:2310
 TPDF.cxx:2311
 TPDF.cxx:2312
 TPDF.cxx:2313
 TPDF.cxx:2314
 TPDF.cxx:2315
 TPDF.cxx:2316
 TPDF.cxx:2317
 TPDF.cxx:2318
 TPDF.cxx:2319
 TPDF.cxx:2320
 TPDF.cxx:2321
 TPDF.cxx:2322
 TPDF.cxx:2323
 TPDF.cxx:2324
 TPDF.cxx:2325
 TPDF.cxx:2326
 TPDF.cxx:2327
 TPDF.cxx:2328
 TPDF.cxx:2329
 TPDF.cxx:2330
 TPDF.cxx:2331
 TPDF.cxx:2332
 TPDF.cxx:2333
 TPDF.cxx:2334
 TPDF.cxx:2335
 TPDF.cxx:2336
 TPDF.cxx:2337
 TPDF.cxx:2338
 TPDF.cxx:2339
 TPDF.cxx:2340
 TPDF.cxx:2341
 TPDF.cxx:2342
 TPDF.cxx:2343
 TPDF.cxx:2344
 TPDF.cxx:2345
 TPDF.cxx:2346
 TPDF.cxx:2347
 TPDF.cxx:2348
 TPDF.cxx:2349
 TPDF.cxx:2350
 TPDF.cxx:2351
 TPDF.cxx:2352
 TPDF.cxx:2353
 TPDF.cxx:2354
 TPDF.cxx:2355
 TPDF.cxx:2356
 TPDF.cxx:2357
 TPDF.cxx:2358
 TPDF.cxx:2359
 TPDF.cxx:2360
 TPDF.cxx:2361
 TPDF.cxx:2362
 TPDF.cxx:2363
 TPDF.cxx:2364
 TPDF.cxx:2365
 TPDF.cxx:2366
 TPDF.cxx:2367
 TPDF.cxx:2368
 TPDF.cxx:2369
 TPDF.cxx:2370
 TPDF.cxx:2371
 TPDF.cxx:2372
 TPDF.cxx:2373
 TPDF.cxx:2374
 TPDF.cxx:2375
 TPDF.cxx:2376
 TPDF.cxx:2377
 TPDF.cxx:2378
 TPDF.cxx:2379
 TPDF.cxx:2380
 TPDF.cxx:2381
 TPDF.cxx:2382
 TPDF.cxx:2383
 TPDF.cxx:2384
 TPDF.cxx:2385
 TPDF.cxx:2386
 TPDF.cxx:2387
 TPDF.cxx:2388
 TPDF.cxx:2389
 TPDF.cxx:2390
 TPDF.cxx:2391
 TPDF.cxx:2392
 TPDF.cxx:2393
 TPDF.cxx:2394
 TPDF.cxx:2395
 TPDF.cxx:2396
 TPDF.cxx:2397
 TPDF.cxx:2398
 TPDF.cxx:2399
 TPDF.cxx:2400
 TPDF.cxx:2401
 TPDF.cxx:2402
 TPDF.cxx:2403
 TPDF.cxx:2404
 TPDF.cxx:2405
 TPDF.cxx:2406
 TPDF.cxx:2407
 TPDF.cxx:2408
 TPDF.cxx:2409
 TPDF.cxx:2410
 TPDF.cxx:2411
 TPDF.cxx:2412
 TPDF.cxx:2413
 TPDF.cxx:2414
 TPDF.cxx:2415
 TPDF.cxx:2416
 TPDF.cxx:2417
 TPDF.cxx:2418
 TPDF.cxx:2419
 TPDF.cxx:2420
 TPDF.cxx:2421
 TPDF.cxx:2422
 TPDF.cxx:2423
 TPDF.cxx:2424
 TPDF.cxx:2425
 TPDF.cxx:2426
 TPDF.cxx:2427
 TPDF.cxx:2428
 TPDF.cxx:2429
 TPDF.cxx:2430
 TPDF.cxx:2431
 TPDF.cxx:2432
 TPDF.cxx:2433
 TPDF.cxx:2434
 TPDF.cxx:2435
 TPDF.cxx:2436
 TPDF.cxx:2437
 TPDF.cxx:2438
 TPDF.cxx:2439
 TPDF.cxx:2440
 TPDF.cxx:2441
 TPDF.cxx:2442
 TPDF.cxx:2443
 TPDF.cxx:2444
 TPDF.cxx:2445
 TPDF.cxx:2446
 TPDF.cxx:2447
 TPDF.cxx:2448
 TPDF.cxx:2449
 TPDF.cxx:2450
 TPDF.cxx:2451
 TPDF.cxx:2452
 TPDF.cxx:2453
 TPDF.cxx:2454
 TPDF.cxx:2455
 TPDF.cxx:2456
 TPDF.cxx:2457
 TPDF.cxx:2458
 TPDF.cxx:2459
 TPDF.cxx:2460
 TPDF.cxx:2461
 TPDF.cxx:2462
 TPDF.cxx:2463
 TPDF.cxx:2464
 TPDF.cxx:2465
 TPDF.cxx:2466
 TPDF.cxx:2467
 TPDF.cxx:2468
 TPDF.cxx:2469
 TPDF.cxx:2470
 TPDF.cxx:2471
 TPDF.cxx:2472
 TPDF.cxx:2473
 TPDF.cxx:2474
 TPDF.cxx:2475
 TPDF.cxx:2476
 TPDF.cxx:2477
 TPDF.cxx:2478
 TPDF.cxx:2479
 TPDF.cxx:2480