Index: trunk/examples/extended/electromagnetic/TestEm13/src/DetectorConstruction.cc
===================================================================
--- trunk/examples/extended/electromagnetic/TestEm13/src/DetectorConstruction.cc	(revision 812)
+++ trunk/examples/extended/electromagnetic/TestEm13/src/DetectorConstruction.cc	(revision 1230)
@@ -25,5 +25,5 @@
 //
 // $Id: DetectorConstruction.cc,v 1.5 2006/06/29 16:44:24 gunter Exp $
-// GEANT4 tag $Name:  $
+// GEANT4 tag $Name: geant4-09-03-cand-01 $
 //
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
Index: trunk/examples/extended/electromagnetic/TestEm13/src/DetectorMessenger.cc
===================================================================
--- trunk/examples/extended/electromagnetic/TestEm13/src/DetectorMessenger.cc	(revision 812)
+++ trunk/examples/extended/electromagnetic/TestEm13/src/DetectorMessenger.cc	(revision 1230)
@@ -25,5 +25,5 @@
 //
 // $Id: DetectorMessenger.cc,v 1.2 2006/06/29 16:44:27 gunter Exp $
-// GEANT4 tag $Name:  $
+// GEANT4 tag $Name: geant4-09-03-cand-01 $
 //
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
Index: trunk/examples/extended/electromagnetic/TestEm13/src/EventAction.cc
===================================================================
--- trunk/examples/extended/electromagnetic/TestEm13/src/EventAction.cc	(revision 812)
+++ trunk/examples/extended/electromagnetic/TestEm13/src/EventAction.cc	(revision 1230)
@@ -25,5 +25,5 @@
 //
 // $Id: EventAction.cc,v 1.2 2006/06/29 16:44:30 gunter Exp $
-// GEANT4 tag $Name:  $
+// GEANT4 tag $Name: geant4-09-03-cand-01 $
 // 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
Index: trunk/examples/extended/electromagnetic/TestEm13/src/EventActionMessenger.cc
===================================================================
--- trunk/examples/extended/electromagnetic/TestEm13/src/EventActionMessenger.cc	(revision 812)
+++ trunk/examples/extended/electromagnetic/TestEm13/src/EventActionMessenger.cc	(revision 1230)
@@ -25,5 +25,5 @@
 //
 // $Id: EventActionMessenger.cc,v 1.2 2006/06/29 16:44:32 gunter Exp $
-// GEANT4 tag $Name:  $
+// GEANT4 tag $Name: geant4-09-03-cand-01 $
 // 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
Index: trunk/examples/extended/electromagnetic/TestEm13/src/PhysListEmLivermore.cc
===================================================================
--- trunk/examples/extended/electromagnetic/TestEm13/src/PhysListEmLivermore.cc	(revision 812)
+++ trunk/examples/extended/electromagnetic/TestEm13/src/PhysListEmLivermore.cc	(revision 1230)
@@ -25,6 +25,6 @@
 //
 //
-// $Id: PhysListEmLivermore.cc,v 1.3 2006/06/29 16:44:34 gunter Exp $
-// GEANT4 tag $Name:  $
+// $Id: PhysListEmLivermore.cc,v 1.5 2009/11/19 17:30:25 maire Exp $
+// GEANT4 tag $Name: geant4-09-03-cand-01 $
 //
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -35,14 +35,32 @@
 #include "G4ProcessManager.hh"
 
-#include "G4LowEnergyCompton.hh"
-#include "G4LowEnergyGammaConversion.hh"
-#include "G4LowEnergyPhotoElectric.hh"
-#include "G4LowEnergyRayleigh.hh"
+// gamma
 
-#include "G4LowEnergyIonisation.hh"
-#include "G4LowEnergyBremsstrahlung.hh"
+#include "G4PhotoElectricEffect.hh"
+#include "G4LivermorePhotoElectricModel.hh"
+
+#include "G4ComptonScattering.hh"
+#include "G4LivermoreComptonModel.hh"
+
+#include "G4GammaConversion.hh"
+#include "G4LivermoreGammaConversionModel.hh"
+
+#include "G4RayleighScattering.hh" 
+#include "G4LivermoreRayleighModel.hh"
+
+// e-
+
 #include "G4eIonisation.hh"
+#include "G4LivermoreIonisationModel.hh"
+#include "G4UniversalFluctuation.hh"
+
 #include "G4eBremsstrahlung.hh"
+#include "G4LivermoreBremsstrahlungModel.hh"
+
+// e+
+
 #include "G4eplusAnnihilation.hh"
+
+// mu
 
 #include "G4MuIonisation.hh"
@@ -50,5 +68,9 @@
 #include "G4MuPairProduction.hh"
 
-#include "G4hLowEnergyIonisation.hh"
+// hadrons, ions
+
+#include "G4hIonisation.hh"
+#include "G4ionIonisation.hh"
+
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -67,5 +89,5 @@
 void PhysListEmLivermore::ConstructProcess()
 {
-  // Add LowEn or standard EM Processes
+  // Add standard EM Processes
 
   theParticleIterator->reset();
@@ -74,35 +96,78 @@
     G4ProcessManager* pmanager = particle->GetProcessManager();
     G4String particleName = particle->GetParticleName();
-     
+
+    //Applicability range for Livermore models
+    //for higher energies, the Standard models are used   
+    G4double highEnergyLimit = 1*GeV;
+         
     if (particleName == "gamma") {
       // gamma         
-      pmanager->AddDiscreteProcess(new G4LowEnergyPhotoElectric);
-      pmanager->AddDiscreteProcess(new G4LowEnergyCompton);
-      pmanager->AddDiscreteProcess(new G4LowEnergyGammaConversion);
-      pmanager->AddDiscreteProcess(new G4LowEnergyRayleigh);
+
+      G4PhotoElectricEffect* phot = new G4PhotoElectricEffect();
+      G4LivermorePhotoElectricModel* 
+      photModel = new G4LivermorePhotoElectricModel();
+      photModel->SetHighEnergyLimit(highEnergyLimit);
+      phot->AddEmModel(0, photModel);
+      pmanager->AddDiscreteProcess(phot);
+
+      G4ComptonScattering* compt = new G4ComptonScattering();
+      G4LivermoreComptonModel* 
+      comptModel = new G4LivermoreComptonModel();
+      comptModel->SetHighEnergyLimit(highEnergyLimit);
+      compt->AddEmModel(0, comptModel);
+      pmanager->AddDiscreteProcess(compt);
+
+      G4GammaConversion* conv = new G4GammaConversion();
+      G4LivermoreGammaConversionModel* 
+      convModel = new G4LivermoreGammaConversionModel();
+      convModel->SetHighEnergyLimit(highEnergyLimit);
+      conv->AddEmModel(0, convModel);
+      pmanager->AddDiscreteProcess(conv);
+
+      G4RayleighScattering* rayl = new G4RayleighScattering();
+      G4LivermoreRayleighModel* 
+      raylModel = new G4LivermoreRayleighModel();
+      raylModel->SetHighEnergyLimit(highEnergyLimit);
+      rayl->AddEmModel(0, raylModel);
+      pmanager->AddDiscreteProcess(rayl);
       
     } else if (particleName == "e-") {
       //electron
-      pmanager->AddProcess(new G4LowEnergyIonisation,     -1, 1, 1);
-      pmanager->AddProcess(new G4LowEnergyBremsstrahlung, -1,-1, 2);
-	    
+
+      G4eIonisation* eIoni = new G4eIonisation();
+      G4LivermoreIonisationModel* 
+      eIoniModel = new G4LivermoreIonisationModel();
+      eIoniModel->SetHighEnergyLimit(highEnergyLimit); 
+      eIoni->AddEmModel(0, eIoniModel, new G4UniversalFluctuation() );
+      pmanager->AddProcess(eIoni,                   -1, 1, 1);
+      
+      G4eBremsstrahlung* eBrem = new G4eBremsstrahlung();
+      G4LivermoreBremsstrahlungModel* 
+      eBremModel = new G4LivermoreBremsstrahlungModel();
+      eBremModel->SetHighEnergyLimit(highEnergyLimit);
+      eBrem->AddEmModel(0, eBremModel);
+      pmanager->AddProcess(eBrem,                   -1, 2, 2);
+      	    
     } else if (particleName == "e+") {
       //positron
-      pmanager->AddProcess(new G4eIonisation,        -1, 1, 1);
-      pmanager->AddProcess(new G4eBremsstrahlung,    -1, 2, 2);
-      pmanager->AddProcess(new G4eplusAnnihilation,   0,-1, 3);
+      pmanager->AddProcess(new G4eIonisation,       -1, 1, 1);
+      pmanager->AddProcess(new G4eBremsstrahlung,   -1, 2, 2);
+      pmanager->AddProcess(new G4eplusAnnihilation,  0,-1, 3);
       
     } else if( particleName == "mu+" || 
                particleName == "mu-"    ) {
       //muon  
-      pmanager->AddProcess(new G4MuIonisation,       -1, 1, 1);
-      pmanager->AddProcess(new G4MuBremsstrahlung,   -1, 2, 2);
-      pmanager->AddProcess(new G4MuPairProduction,   -1, 3, 3);       
+      pmanager->AddProcess(new G4MuIonisation,      -1, 1, 1);
+      pmanager->AddProcess(new G4MuBremsstrahlung,  -1, 2, 2);
+      pmanager->AddProcess(new G4MuPairProduction,  -1, 3, 3);       
      
+    } else if( particleName == "alpha" || particleName == "GenericIon" ) { 
+      pmanager->AddProcess(new G4ionIonisation,     -1, 1, 1);
+
     } else if ((!particle->IsShortLived()) &&
 	       (particle->GetPDGCharge() != 0.0) && 
 	       (particle->GetParticleName() != "chargedgeantino")) {
       //all others charged particles except geantino
-      pmanager->AddProcess(new G4hLowEnergyIonisation, -1, 1, 1);
+      pmanager->AddProcess(new G4hIonisation,       -1, 1, 1);
     }
   }
Index: trunk/examples/extended/electromagnetic/TestEm13/src/PhysListEmPenelope.cc
===================================================================
--- trunk/examples/extended/electromagnetic/TestEm13/src/PhysListEmPenelope.cc	(revision 812)
+++ trunk/examples/extended/electromagnetic/TestEm13/src/PhysListEmPenelope.cc	(revision 1230)
@@ -25,6 +25,6 @@
 //
 //
-// $Id: PhysListEmPenelope.cc,v 1.3 2006/06/29 16:44:36 gunter Exp $
-// GEANT4 tag $Name:  $
+// $Id: PhysListEmPenelope.cc,v 1.6 2009/11/19 17:30:25 maire Exp $
+// GEANT4 tag $Name: geant4-09-03-cand-01 $
 //
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -35,12 +35,33 @@
 #include "G4ProcessManager.hh"
 
-#include "G4PenelopeCompton.hh"
-#include "G4PenelopeGammaConversion.hh"
-#include "G4PenelopePhotoElectric.hh"
-#include "G4PenelopeRayleigh.hh"
+// gamma
 
-#include "G4PenelopeIonisation.hh"
-#include "G4PenelopeBremsstrahlung.hh"
-#include "G4PenelopeAnnihilation.hh"
+#include "G4PhotoElectricEffect.hh"
+#include "G4PenelopePhotoElectricModel.hh"
+
+#include "G4ComptonScattering.hh"
+#include "G4PenelopeComptonModel.hh"
+
+#include "G4GammaConversion.hh"
+#include "G4PenelopeGammaConversionModel.hh"
+
+#include "G4RayleighScattering.hh" 
+#include "G4PenelopeRayleighModel.hh"
+
+// e-
+
+#include "G4eIonisation.hh"
+#include "G4PenelopeIonisationModel.hh"
+#include "G4UniversalFluctuation.hh"
+
+#include "G4eBremsstrahlung.hh"
+#include "G4PenelopeBremsstrahlungModel.hh"
+
+// e+
+
+#include "G4eplusAnnihilation.hh"
+#include "G4PenelopeAnnihilationModel.hh"
+
+// mu
 
 #include "G4MuIonisation.hh"
@@ -48,6 +69,9 @@
 #include "G4MuPairProduction.hh"
 
+// hadrons, ions
+
 #include "G4hIonisation.hh"
 #include "G4ionIonisation.hh"
+
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -66,5 +90,5 @@
 void PhysListEmPenelope::ConstructProcess()
 {
-  // Add Penelope or standard EM Processes
+  // Add standard EM Processes
 
   theParticleIterator->reset();
@@ -73,38 +97,95 @@
     G4ProcessManager* pmanager = particle->GetProcessManager();
     G4String particleName = particle->GetParticleName();
-     
+
+    //Applicability range for Penelope models
+    //for higher energies, the Standard models are used   
+    G4double highEnergyLimit = 1*GeV;
+         
     if (particleName == "gamma") {
       // gamma         
-      pmanager->AddDiscreteProcess(new G4PenelopePhotoElectric);
-      pmanager->AddDiscreteProcess(new G4PenelopeCompton);
-      pmanager->AddDiscreteProcess(new G4PenelopeGammaConversion);
-      pmanager->AddDiscreteProcess(new G4PenelopeRayleigh);
+
+      G4PhotoElectricEffect* phot = new G4PhotoElectricEffect();
+      G4PenelopePhotoElectricModel* 
+      photModel = new G4PenelopePhotoElectricModel();
+      photModel->SetHighEnergyLimit(highEnergyLimit);
+      phot->AddEmModel(0, photModel);
+      pmanager->AddDiscreteProcess(phot);
+
+      G4ComptonScattering* compt = new G4ComptonScattering();
+      G4PenelopeComptonModel* 
+      comptModel = new G4PenelopeComptonModel();
+      comptModel->SetHighEnergyLimit(highEnergyLimit);
+      compt->AddEmModel(0, comptModel);
+      pmanager->AddDiscreteProcess(compt);
+
+      G4GammaConversion* conv = new G4GammaConversion();
+      G4PenelopeGammaConversionModel* 
+      convModel = new G4PenelopeGammaConversionModel();
+      convModel->SetHighEnergyLimit(highEnergyLimit);
+      conv->AddEmModel(0, convModel);
+      pmanager->AddDiscreteProcess(conv);
+
+      G4RayleighScattering* rayl = new G4RayleighScattering();
+      G4PenelopeRayleighModel* 
+      raylModel = new G4PenelopeRayleighModel();
+      raylModel->SetHighEnergyLimit(highEnergyLimit);
+      rayl->AddEmModel(0, raylModel);
+      pmanager->AddDiscreteProcess(rayl);
       
     } else if (particleName == "e-") {
       //electron
-      pmanager->AddProcess(new G4PenelopeIonisation,     -1, 1, 1);
-      pmanager->AddProcess(new G4PenelopeBremsstrahlung, -1,-1, 2);
-	    
+
+      G4eIonisation* eIoni = new G4eIonisation();
+      G4PenelopeIonisationModel* 
+      eIoniModel = new G4PenelopeIonisationModel();
+      eIoniModel->SetHighEnergyLimit(highEnergyLimit); 
+      eIoni->AddEmModel(0, eIoniModel, new G4UniversalFluctuation() );
+      pmanager->AddProcess(eIoni,                   -1, 1, 1);
+      
+      G4eBremsstrahlung* eBrem = new G4eBremsstrahlung();
+      G4PenelopeBremsstrahlungModel* 
+      eBremModel = new G4PenelopeBremsstrahlungModel();
+      eBremModel->SetHighEnergyLimit(highEnergyLimit);
+      eBrem->AddEmModel(0, eBremModel);
+      pmanager->AddProcess(eBrem,                   -1, 2, 2);
+      	    
     } else if (particleName == "e+") {
       //positron
-      pmanager->AddProcess(new G4PenelopeIonisation,     -1, 1, 1);
-      pmanager->AddProcess(new G4PenelopeBremsstrahlung, -1,-1, 2);      
-      pmanager->AddProcess(new G4PenelopeAnnihilation,    0,-1, 3);
+      G4eIonisation* eIoni = new G4eIonisation();
+      G4PenelopeIonisationModel* 
+      eIoniModel = new G4PenelopeIonisationModel();
+      eIoniModel->SetHighEnergyLimit(highEnergyLimit); 
+      eIoni->AddEmModel(0, eIoniModel, new G4UniversalFluctuation() );
+      pmanager->AddProcess(eIoni,                   -1, 1, 1);
       
+      G4eBremsstrahlung* eBrem = new G4eBremsstrahlung();
+      G4PenelopeBremsstrahlungModel* 
+      eBremModel = new G4PenelopeBremsstrahlungModel();
+      eBremModel->SetHighEnergyLimit(highEnergyLimit);
+      eBrem->AddEmModel(0, eBremModel);
+      pmanager->AddProcess(eBrem,                   -1, 2, 2);      
+
+      G4eplusAnnihilation* eAnni = new G4eplusAnnihilation();
+      G4PenelopeAnnihilationModel* 
+      eAnniModel = new G4PenelopeAnnihilationModel();
+      eAnniModel->SetHighEnergyLimit(highEnergyLimit); 
+      eAnni->AddEmModel(0, eAnniModel);
+      pmanager->AddProcess(eAnni,                    0,-1, 3);
+            
     } else if( particleName == "mu+" || 
                particleName == "mu-"    ) {
       //muon  
-      pmanager->AddProcess(new G4MuIonisation,       -1, 1, 1);
-      pmanager->AddProcess(new G4MuBremsstrahlung,   -1, 2, 2);
-      pmanager->AddProcess(new G4MuPairProduction,   -1, 3, 3);       
+      pmanager->AddProcess(new G4MuIonisation,      -1, 1, 1);
+      pmanager->AddProcess(new G4MuBremsstrahlung,  -1, 2, 2);
+      pmanager->AddProcess(new G4MuPairProduction,  -1, 3, 3);       
      
     } else if( particleName == "alpha" || particleName == "GenericIon" ) { 
-      pmanager->AddProcess(new G4ionIonisation,      -1, 1, 1);
-     
+      pmanager->AddProcess(new G4ionIonisation,     -1, 1, 1);
+
     } else if ((!particle->IsShortLived()) &&
 	       (particle->GetPDGCharge() != 0.0) && 
 	       (particle->GetParticleName() != "chargedgeantino")) {
       //all others charged particles except geantino
-      pmanager->AddProcess(new G4hIonisation,        -1, 1, 1);
+      pmanager->AddProcess(new G4hIonisation,       -1, 1, 1);
     }
   }
Index: trunk/examples/extended/electromagnetic/TestEm13/src/PhysListEmStandard.cc
===================================================================
--- trunk/examples/extended/electromagnetic/TestEm13/src/PhysListEmStandard.cc	(revision 812)
+++ trunk/examples/extended/electromagnetic/TestEm13/src/PhysListEmStandard.cc	(revision 1230)
@@ -26,5 +26,5 @@
 //
 // $Id: PhysListEmStandard.cc,v 1.3 2006/06/29 16:44:38 gunter Exp $
-// GEANT4 tag $Name:  $
+// GEANT4 tag $Name: geant4-09-03-cand-01 $
 //
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
Index: trunk/examples/extended/electromagnetic/TestEm13/src/PhysicsList.cc
===================================================================
--- trunk/examples/extended/electromagnetic/TestEm13/src/PhysicsList.cc	(revision 812)
+++ trunk/examples/extended/electromagnetic/TestEm13/src/PhysicsList.cc	(revision 1230)
@@ -25,6 +25,6 @@
 //
 // 
-// $Id: PhysicsList.cc,v 1.5 2006/06/29 16:44:40 gunter Exp $
-// GEANT4 tag $Name:  $
+// $Id: PhysicsList.cc,v 1.7 2009/11/19 17:30:25 maire Exp $
+// GEANT4 tag $Name: geant4-09-03-cand-01 $
 //
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -199,9 +199,8 @@
 
   if (name == "standard") {
-
     emName = name;
     delete emPhysicsList;
     emPhysicsList = new PhysListEmStandard(name);
-      
+   
   } else if (name == "livermore") {
     emName = name;
@@ -213,5 +212,5 @@
     delete emPhysicsList;
     emPhysicsList = new PhysListEmPenelope(name);
-            
+                         
   } else {
     G4cout << "PhysicsList::AddPhysicsList: <" << name << ">"
Index: trunk/examples/extended/electromagnetic/TestEm13/src/PhysicsListMessenger.cc
===================================================================
--- trunk/examples/extended/electromagnetic/TestEm13/src/PhysicsListMessenger.cc	(revision 812)
+++ trunk/examples/extended/electromagnetic/TestEm13/src/PhysicsListMessenger.cc	(revision 1230)
@@ -25,5 +25,5 @@
 //
 // $Id: PhysicsListMessenger.cc,v 1.3 2006/06/29 16:44:43 gunter Exp $
-// GEANT4 tag $Name:  $
+// GEANT4 tag $Name: geant4-09-03-cand-01 $
 //
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
Index: trunk/examples/extended/electromagnetic/TestEm13/src/PrimaryGeneratorAction.cc
===================================================================
--- trunk/examples/extended/electromagnetic/TestEm13/src/PrimaryGeneratorAction.cc	(revision 812)
+++ trunk/examples/extended/electromagnetic/TestEm13/src/PrimaryGeneratorAction.cc	(revision 1230)
@@ -25,5 +25,5 @@
 //
 // $Id: PrimaryGeneratorAction.cc,v 1.2 2006/06/29 16:44:45 gunter Exp $
-// GEANT4 tag $Name:  $
+// GEANT4 tag $Name: geant4-09-03-cand-01 $
 // 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
Index: trunk/examples/extended/electromagnetic/TestEm13/src/RunAction.cc
===================================================================
--- trunk/examples/extended/electromagnetic/TestEm13/src/RunAction.cc	(revision 812)
+++ trunk/examples/extended/electromagnetic/TestEm13/src/RunAction.cc	(revision 1230)
@@ -25,5 +25,5 @@
 //
 // $Id: RunAction.cc,v 1.6 2006/06/29 16:44:47 gunter Exp $
-// GEANT4 tag $Name:  $
+// GEANT4 tag $Name: geant4-09-03-cand-01 $
 // 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
Index: trunk/examples/extended/electromagnetic/TestEm13/src/SteppingAction.cc
===================================================================
--- trunk/examples/extended/electromagnetic/TestEm13/src/SteppingAction.cc	(revision 812)
+++ trunk/examples/extended/electromagnetic/TestEm13/src/SteppingAction.cc	(revision 1230)
@@ -24,6 +24,6 @@
 // ********************************************************************
 //
-// $Id: SteppingAction.cc,v 1.6 2007/06/24 22:26:54 maire Exp $
-// GEANT4 tag $Name:  $
+// $Id: SteppingAction.cc,v 1.7 2009/09/25 11:27:13 maire Exp $
+// GEANT4 tag $Name: geant4-09-03-cand-01 $
 // 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
Index: trunk/examples/extended/electromagnetic/TestEm13/src/SteppingVerbose.cc
===================================================================
--- trunk/examples/extended/electromagnetic/TestEm13/src/SteppingVerbose.cc	(revision 812)
+++ trunk/examples/extended/electromagnetic/TestEm13/src/SteppingVerbose.cc	(revision 1230)
@@ -25,5 +25,5 @@
 //
 // $Id: SteppingVerbose.cc,v 1.2 2006/06/29 16:44:51 gunter Exp $
-// GEANT4 tag $Name:  $
+// GEANT4 tag $Name: geant4-09-03-cand-01 $
 //
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
