From c45225d7c7057db3a84ce9740c7ac7957d8d41d2 Mon Sep 17 00:00:00 2001 From: Markus Frank <markus.frank@cern.ch> Date: Tue, 24 Nov 2015 16:02:16 +0000 Subject: [PATCH] Support for multi-threaded Geant4 applications using DDG4Details are described in the release notes. --- CMakeLists.txt | 2 +- DDCore/include/DD4hep/Printout.h | 3 + .../include/DD4hep/objects/BasicGrammar_inl.h | 2 +- DDCore/src/BasicGrammarTypes.cpp | 6 +- DDCore/src/Printout.cpp | 11 +- DDCore/src/XML/DocumentHandler.cpp | 6 +- DDCore/src/XML/Layering.cpp | 4 +- DDEve/include/DDEve/DisplayConfiguration.h | 7 +- DDG4/CMakeLists.txt | 19 + DDG4/examples/{CLICSidSimu.py => SiDSim.py} | 58 +- DDG4/examples/SiDSim_MT.py | 190 ++ DDG4/examples/SiD_Markus.py | 131 +- DDG4/examples/testDDPython.py | 68 + DDG4/include/DDG4/ComponentProperties.h | 2 + DDG4/include/DDG4/Geant4Action.h | 68 +- DDG4/include/DDG4/Geant4Config.h | 50 +- DDG4/include/DDG4/Geant4Context.h | 3 +- DDG4/include/DDG4/Geant4Converter.h | 5 +- .../include/DDG4/Geant4DetectorConstruction.h | 131 +- DDG4/include/DDG4/Geant4EventAction.h | 50 + DDG4/include/DDG4/Geant4GeneratorAction.h | 48 + DDG4/include/DDG4/Geant4GeometryInfo.h | 4 - DDG4/include/DDG4/Geant4Handle.h | 40 +- DDG4/include/DDG4/Geant4Kernel.h | 109 +- DDG4/include/DDG4/Geant4OutputAction.h | 2 + DDG4/include/DDG4/Geant4ParticleHandler.h | 18 +- DDG4/include/DDG4/Geant4RunAction.h | 49 + DDG4/include/DDG4/Geant4SensDetAction.h | 19 +- DDG4/include/DDG4/Geant4StackingAction.h | 50 + DDG4/include/DDG4/Geant4SteppingAction.h | 48 + DDG4/include/DDG4/Geant4TrackingAction.h | 56 +- DDG4/include/DDG4/Geant4UserInitialization.h | 88 + DDG4/include/DDG4Python/DDPython.h | 97 + DDG4/include/DDG4Python/Geant4PythonAction.h | 54 + DDG4/include/DDG4Python/Geant4PythonCall.h | 63 + .../Geant4PythonDetectorConstruction.h | 95 + .../DDG4Python/Geant4PythonInitialization.h | 86 + DDG4/lcio/Geant4Output2LCIO.cpp | 17 +- .../Geant4DetectorGeometryConstruction.cpp | 114 + .../Geant4DetectorSensitivesConstruction.cpp | 123 + DDG4/plugins/Geant4Factories.cpp | 13 + DDG4/plugins/Geant4FieldTrackingSetup.cpp | 58 +- DDG4/plugins/Geant4MaterialScanner.cpp | 22 +- DDG4/plugins/Geant4SensDet.cpp | 32 +- DDG4/plugins/Geant4TrackerWeightedSD.cpp | 19 +- .../Geant4UserActionInitialization.cpp | 90 + DDG4/pyddg4.cpp | 79 + DDG4/python/DD4hep.py | 2 + DDG4/python/DDG4.py | 191 +- DDG4/python/DDG4Dict.C | 194 +- DDG4/src/ComponentProperties.cpp | 5 + DDG4/src/Geant4Action.cpp | 40 +- DDG4/src/Geant4Converter.cpp | 255 +- DDG4/src/Geant4DetectorConstruction.cpp | 163 +- DDG4/src/Geant4EventAction.cpp | 86 +- DDG4/src/Geant4Exec.cpp | 372 ++- DDG4/src/Geant4GeneratorAction.cpp | 72 +- DDG4/src/Geant4Handle.cpp | 397 +-- DDG4/src/Geant4HitCollection.cpp | 9 +- DDG4/src/Geant4Hits.cpp | 22 +- DDG4/src/Geant4InputHandling.cpp | 1 - DDG4/src/Geant4Kernel.cpp | 218 +- DDG4/src/Geant4OutputAction.cpp | 11 +- DDG4/src/Geant4Particle.cpp | 3 +- DDG4/src/Geant4RunAction.cpp | 84 +- DDG4/src/Geant4SensDetAction.cpp | 11 +- DDG4/src/Geant4StackingAction.cpp | 79 +- DDG4/src/Geant4SteppingAction.cpp | 72 +- DDG4/src/Geant4TrackingAction.cpp | 107 +- DDG4/src/Geant4UserInitialization.cpp | 88 + DDG4/src/python/DDG4Python.C | 36 + DDG4/src/python/Geant4PythonAction.cpp | 62 + DDG4/src/python/Geant4PythonCall.cpp | 95 + .../Geant4PythonDetectorConstruction.cpp | 82 + .../Geant4PythonDetectorConstructionLast.cpp | 56 + .../src/python/Geant4PythonInitialization.cpp | 66 + DDG4/src/python/PyDDG4.cpp | 45 + DDG4/src/python/PyDDG4.h | 30 + DDG4/tpython/DDPython.C | 33 + DDG4/tpython/DDPython.cpp | 287 ++ doc/CompileAllOptionPermutations.sh | 19 +- doc/DDG4Manual.pdf | Bin 692081 -> 778078 bytes doc/LaTex/DDG4-Detector-Construction.png | Bin 0 -> 45785 bytes doc/LaTex/DDG4-User-Initialization.png | Bin 0 -> 25604 bytes doc/LaTex/DDG4Manual-Components.tex | 703 +++++ doc/LaTex/DDG4Manual-HighLevel.tex | 160 ++ doc/LaTex/DDG4Manual-Implementation.tex | 699 +++++ doc/LaTex/DDG4Manual-Introduction.tex | 108 + doc/LaTex/DDG4Manual-MT.tex | 359 +++ doc/LaTex/DDG4Manual-Setup.tex | 725 +++++ doc/LaTex/DDG4Manual.tex | 2340 +---------------- doc/doxygen/DD4hepGroups.h | 1 + doc/doxygen/ROOTClasses.h | 33 +- doc/release.notes | 17 + 94 files changed, 7402 insertions(+), 3345 deletions(-) rename DDG4/examples/{CLICSidSimu.py => SiDSim.py} (85%) create mode 100644 DDG4/examples/SiDSim_MT.py create mode 100644 DDG4/examples/testDDPython.py create mode 100644 DDG4/include/DDG4/Geant4UserInitialization.h create mode 100644 DDG4/include/DDG4Python/DDPython.h create mode 100644 DDG4/include/DDG4Python/Geant4PythonAction.h create mode 100644 DDG4/include/DDG4Python/Geant4PythonCall.h create mode 100644 DDG4/include/DDG4Python/Geant4PythonDetectorConstruction.h create mode 100644 DDG4/include/DDG4Python/Geant4PythonInitialization.h create mode 100644 DDG4/plugins/Geant4DetectorGeometryConstruction.cpp create mode 100644 DDG4/plugins/Geant4DetectorSensitivesConstruction.cpp create mode 100644 DDG4/plugins/Geant4UserActionInitialization.cpp create mode 100644 DDG4/pyddg4.cpp create mode 100644 DDG4/src/Geant4UserInitialization.cpp create mode 100644 DDG4/src/python/DDG4Python.C create mode 100644 DDG4/src/python/Geant4PythonAction.cpp create mode 100644 DDG4/src/python/Geant4PythonCall.cpp create mode 100644 DDG4/src/python/Geant4PythonDetectorConstruction.cpp create mode 100644 DDG4/src/python/Geant4PythonDetectorConstructionLast.cpp create mode 100644 DDG4/src/python/Geant4PythonInitialization.cpp create mode 100644 DDG4/src/python/PyDDG4.cpp create mode 100644 DDG4/src/python/PyDDG4.h create mode 100644 DDG4/tpython/DDPython.C create mode 100644 DDG4/tpython/DDPython.cpp create mode 100644 doc/LaTex/DDG4-Detector-Construction.png create mode 100644 doc/LaTex/DDG4-User-Initialization.png create mode 100644 doc/LaTex/DDG4Manual-Components.tex create mode 100644 doc/LaTex/DDG4Manual-HighLevel.tex create mode 100644 doc/LaTex/DDG4Manual-Implementation.tex create mode 100644 doc/LaTex/DDG4Manual-Introduction.tex create mode 100644 doc/LaTex/DDG4Manual-MT.tex create mode 100644 doc/LaTex/DDG4Manual-Setup.tex diff --git a/CMakeLists.txt b/CMakeLists.txt index 6d3b529a6..de027c57f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,7 +46,7 @@ endif() #--------------------------------------------------------------------------------------------------- #fg: moved to here from DD4hep.cmake to not force CMAKE_CXX_FLAGS upon dependent packages if ( DD4HEP_USE_CXX11 ) - set ( CMAKE_CXX_FLAGS "-std=c++11 -Wall -Wextra -pedantic -Wshadow -Wformat-security -Wno-long-long -Wdeprecated") + set ( CMAKE_CXX_FLAGS "-std=c++11 -ftls-model=global-dynamic -Wall -Wextra -pedantic -Wshadow -Wformat-security -Wno-long-long -Wdeprecated") add_definitions(-DDD4HEP_USE_CXX11) else() set( CMAKE_CXX_FLAGS "-Wall -Wextra -pedantic -Wshadow -Wformat-security -Wno-long-long -Wdeprecated") diff --git a/DDCore/include/DD4hep/Printout.h b/DDCore/include/DD4hep/Printout.h index 247646e2a..f2ed650a2 100644 --- a/DDCore/include/DD4hep/Printout.h +++ b/DDCore/include/DD4hep/Printout.h @@ -185,6 +185,9 @@ namespace DD4hep { #endif // __CINT__ + /// Set new printout format for the 3 fields: source-level-message. All 3 are strings + std::string setPrintFormat(const std::string& new_format); + /// Set new print level. Returns the old print level PrintLevel setPrintLevel(PrintLevel new_level); diff --git a/DDCore/include/DD4hep/objects/BasicGrammar_inl.h b/DDCore/include/DD4hep/objects/BasicGrammar_inl.h index a2406a4bd..50f7ff56a 100644 --- a/DDCore/include/DD4hep/objects/BasicGrammar_inl.h +++ b/DDCore/include/DD4hep/objects/BasicGrammar_inl.h @@ -130,7 +130,7 @@ namespace DD4hep { } /// Helper function to parse data type - static std::string pre_parse_obj(const std::string& in) { + static inline std::string pre_parse_obj(const std::string& in) { std::string res = ""; res.reserve(1024); for(const char* c = in.c_str(); *c; ++c) { diff --git a/DDCore/src/BasicGrammarTypes.cpp b/DDCore/src/BasicGrammarTypes.cpp index 6e97c8de4..ce98b6514 100644 --- a/DDCore/src/BasicGrammarTypes.cpp +++ b/DDCore/src/BasicGrammarTypes.cpp @@ -37,9 +37,9 @@ namespace ROOT { } } } -template class std::less<ROOT::Math::XYZPoint>; -template class std::less<ROOT::Math::XYZVector>; -template class std::less<ROOT::Math::PxPyPzEVector>; +template struct std::less<ROOT::Math::XYZPoint>; +template struct std::less<ROOT::Math::XYZVector>; +template struct std::less<ROOT::Math::PxPyPzEVector>; DD4HEP_DEFINE_PARSER_GRAMMAR_U_CONT(char) DD4HEP_DEFINE_PARSER_GRAMMAR_U_CONT(short) diff --git a/DDCore/src/Printout.cpp b/DDCore/src/Printout.cpp index ab19e5263..3168c708f 100644 --- a/DDCore/src/Printout.cpp +++ b/DDCore/src/Printout.cpp @@ -24,6 +24,8 @@ using namespace std; +static std::string print_fmt = "%-16s %5s %s"; + static size_t _the_printer(void*, DD4hep::PrintLevel lvl, const char* src, const char* text) { const char* p_lvl = "?????"; if ( lvl> DD4hep::ALWAYS ) lvl = DD4hep::ALWAYS; @@ -40,7 +42,7 @@ static size_t _the_printer(void*, DD4hep::PrintLevel lvl, const char* src, const default: break; } - size_t len = ::fprintf(stdout, "%-16s %5s %s",src,p_lvl,text); + size_t len = ::fprintf(stdout, print_fmt.c_str(), src, p_lvl, text); // size_t len = ::fputs(src, stdout); // len += fputs(": ", stdout); // len += fputs(text, stdout); @@ -280,6 +282,13 @@ DD4hep::PrintLevel DD4hep::printLevel() { return print_lvl; } +/// Set new printout format for the 3 fields: source-level-message. All 3 are strings +string DD4hep::setPrintFormat(const string& new_format) { + string old = print_fmt; + print_fmt = new_format; + return old; +} + /// Customize printer function void DD4hep::setPrinter(void* arg, output_function_t fcn) { print_arg = arg; diff --git a/DDCore/src/XML/DocumentHandler.cpp b/DDCore/src/XML/DocumentHandler.cpp index 61882d57f..0d334d47e 100644 --- a/DDCore/src/XML/DocumentHandler.cpp +++ b/DDCore/src/XML/DocumentHandler.cpp @@ -188,9 +188,9 @@ Document DocumentHandler::load(Handle_t base, const XMLCh* fname) const { Document DocumentHandler::load(const std::string& fname) const { printout(DEBUG,"DocumentHandler","+++ Loading document URI: %s",fname.c_str()); - XMLURL xerurl = (const XMLCh*) Strng_t(fname); - string path = _toString(xerurl.getPath()); - string proto = _toString(xerurl.getProtocolName()); + XMLURL xerurl = (const XMLCh*) Strng_t(fname.find(":")==std::string::npos ? "file:"+fname : fname); + string path = _toString(xerurl.getPath()); + string proto = _toString(xerurl.getProtocolName()); dd4hep_ptr < XercesDOMParser > parser(make_parser(m_errHdlr.get())); printout(DEBUG,"DocumentHandler","+++ protocol:%s path:%s",proto.c_str(), path.c_str()); try { diff --git a/DDCore/src/XML/Layering.cpp b/DDCore/src/XML/Layering.cpp index 2f014946c..8bde57841 100644 --- a/DDCore/src/XML/Layering.cpp +++ b/DDCore/src/XML/Layering.cpp @@ -145,4 +145,6 @@ void Layering::sensitivePositionsInLayer(XML::Element e, std::vector<double>& se sens_pos.push_back(pos - slice.thickness()/2.); } } -} \ No newline at end of file +} + + diff --git a/DDEve/include/DDEve/DisplayConfiguration.h b/DDEve/include/DDEve/DisplayConfiguration.h index 5fde5f9a8..c4e06b46a 100644 --- a/DDEve/include/DDEve/DisplayConfiguration.h +++ b/DDEve/include/DDEve/DisplayConfiguration.h @@ -46,9 +46,10 @@ namespace DD4hep { COLLECTION=1<<5 }; struct Defaults { - char load_geo; - char show_evt; - short color; + char load_geo; + char show_evt; + short default_pad; + int color; float alpha; }; struct Calo3D : public Defaults { diff --git a/DDG4/CMakeLists.txt b/DDG4/CMakeLists.txt index 0383c15b3..5a19eab7f 100644 --- a/DDG4/CMakeLists.txt +++ b/DDG4/CMakeLists.txt @@ -25,6 +25,20 @@ dd4hep_add_dictionary( G__DDG4 SOURCES python/DDG4Dict.C ) dd4hep_add_plugin(DDG4Plugins GENERATED G__DDG4.cxx SOURCES plugins/*.cpp) +#--------------------------- Plugin library for the simulation framework --------- +dd4hep_add_dictionary(G__DDG4Python SOURCES src/python/DDG4Python.C ) +#--------------------------- Plugin library for the simulation framework --------- +dd4hep_add_dictionary(G__DDPython SOURCES tpython/DDPython.C ) +#--------------------------- Specialized python plugins -------------------------- +dd4hep_add_regular_library(DDPython + GENERATED G__DDPython.cxx + USES [ROOT REQUIRED COMPONENTS PyROOT] + OPTIONAL [PYTHON REQUIRED SOURCES tpython/DDPython.cpp]) +#--------------------------- Specialized python plugins -------------------------- +dd4hep_add_plugin(DDG4Python + GENERATED G__DDG4Python.cxx + LINK_LIBRARIES DDPython + OPTIONAL [PYTHON REQUIRED SOURCES src/python/*.cpp]) #--------------------------- LCIO Plugins for new simulation framework ----------- dd4hep_add_plugin(DDG4LCIO OPTIONAL [LCIO REQUIRED SOURCES lcio/*.cpp] ) @@ -37,6 +51,11 @@ dd4hep_add_executable(g4gdmlDisplay SOURCES g4gdmlDisplay.cpp) dd4hep_add_executable(g4FromXML SOURCES g4FromXML.cpp) #----------------------------------------------------------------------------------- dd4hep_add_executable(dd_sim SOURCES ddsim.cpp) +#---Helper to overcome deficiency of the python executable concerning multi-threading +dd4hep_add_executable(pyddg4 + LINK_LIBRARIES DDPython + USES [ROOT REQUIRED COMPONENTS PyROOT] + OPTIONAL [PYTHON REQUIRED SOURCES pyddg4.cpp]) #---Package installation procedure(s) ---------------------------------------------- dd4hep_install_dir(examples DESTINATION examples/DDG4) dd4hep_install_files(FILES python/*.py python/*.C DESTINATION python) diff --git a/DDG4/examples/CLICSidSimu.py b/DDG4/examples/SiDSim.py similarity index 85% rename from DDG4/examples/CLICSidSimu.py rename to DDG4/examples/SiDSim.py index 318e26eaf..f43e866fb 100644 --- a/DDG4/examples/CLICSidSimu.py +++ b/DDG4/examples/SiDSim.py @@ -5,6 +5,7 @@ from DDG4 import OutputLevel as Output from SystemOfUnits import * # # +print \ """ DD4hep simulation example setup using the python configuration @@ -22,10 +23,10 @@ def run(): geant4 = DDG4.Geant4(kernel,tracker='Geant4TrackerCombineAction') geant4.printDetectors() - # Configure UI + print "# Configure UI" geant4.setupCshUI() - # Configure G4 magnetic field tracking + print "# Configure G4 magnetic field tracking" field = geant4.addConfig('Geant4FieldTrackingSetupAction/MagFieldTrackingSetup') field.stepper = "HelixGeant4Runge" field.equation = "Mag_UsualEqRhs" @@ -41,14 +42,13 @@ def run(): print '+++++> ',field.name,'-> eps_max = ',field.eps_max print '+++++> ',field.name,'-> delta_one_step = ',field.delta_one_step - # Setup random generator + print "# Setup random generator" rndm = DDG4.Action(kernel,'Geant4Random/Random') rndm.Seed = 987654321 rndm.initialize() - rndm.showStatus() - rndm.Seed = 987654321 + ##rndm.showStatus() - # Configure Run actions + print "# Configure Run actions" run1 = DDG4.RunAction(kernel,'Geant4TestRunAction/RunInit') run1.Property_int = 12345 run1.Property_double = -5e15*keV @@ -58,13 +58,15 @@ def run(): kernel.registerGlobalAction(run1) kernel.runAction().adopt(run1) - # Configure Event actions + print "# Configure Event actions" prt = DDG4.EventAction(kernel,'Geant4ParticlePrint/ParticlePrint') prt.OutputLevel = Output.INFO prt.OutputType = 3 # Print both: table and tree kernel.eventAction().adopt(prt) - # Configure I/O + print """ + Configure I/O + """ evt_lcio = geant4.setupLCIOOutput('LcioOutput','CLICSiD_'+time.strftime('%Y-%m-%d_%H-%M')) evt_lcio.OutputLevel = Output.ERROR @@ -76,51 +78,51 @@ def run(): kernel.generatorAction().adopt(gen) #VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV - """ + print """ Generation of isotrope tracks of a given multiplicity with overlay: """ - # First particle generator: pi+ + print "# First particle generator: pi+" gen = DDG4.GeneratorAction(kernel,"Geant4IsotropeGenerator/IsotropPi+"); + gen.Mask = 1 gen.Particle = 'pi+' - gen.Energy = 100 * GeV + gen.Energy = 100 * GeV gen.Multiplicity = 2 - gen.Mask = 1 kernel.generatorAction().adopt(gen) - # Install vertex smearing for this interaction + print "# Install vertex smearing for this interaction" gen = DDG4.GeneratorAction(kernel,"Geant4InteractionVertexSmear/SmearPi+"); - gen.Mask = 1 + gen.Mask = 1 gen.Offset = (20*mm, 10*mm, 10*mm, 0*ns) - gen.Sigma = (4*mm, 1*mm, 1*mm, 0*ns) + gen.Sigma = (4*mm, 1*mm, 1*mm, 0*ns) kernel.generatorAction().adopt(gen) - # Second particle generator: e- + print "# Second particle generator: e-" gen = DDG4.GeneratorAction(kernel,"Geant4IsotropeGenerator/IsotropE-"); + gen.Mask = 2 gen.Particle = 'e-' - gen.Energy = 25 * GeV + gen.Energy = 25 * GeV gen.Multiplicity = 3 - gen.Mask = 2 kernel.generatorAction().adopt(gen) - # Install vertex smearing for this interaction + print " Install vertex smearing for this interaction" gen = DDG4.GeneratorAction(kernel,"Geant4InteractionVertexSmear/SmearE-"); - gen.Mask = 2 + gen.Mask = 2 gen.Offset = (-20*mm, -10*mm, -10*mm, 0*ns) - gen.Sigma = (12*mm, 8*mm, 8*mm, 0*ns) + gen.Sigma = (12*mm, 8*mm, 8*mm, 0*ns) kernel.generatorAction().adopt(gen) #^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - # Merge all existing interaction records + print "# Merge all existing interaction records" gen = DDG4.GeneratorAction(kernel,"Geant4InteractionMerger/InteractionMerger") gen.OutputLevel = 4 #generator_output_level gen.enableUI() kernel.generatorAction().adopt(gen) - # Finally generate Geant4 primaries + print "# Finally generate Geant4 primaries" gen = DDG4.GeneratorAction(kernel,"Geant4PrimaryHandler/PrimaryHandler") gen.OutputLevel = 4 #generator_output_level gen.enableUI() kernel.generatorAction().adopt(gen) - # And handle the simulation particles. + print "# ....and handle the simulation particles." part = DDG4.GeneratorAction(kernel,"Geant4ParticleHandler/ParticleHandler") kernel.generatorAction().adopt(part) #part.SaveProcesses = ['conv','Decay'] @@ -134,7 +136,7 @@ def run(): user.enableUI() part.adopt(user) - # Setup global filters fur use in sensntive detectors + print "# Setup global filters fur use in sensntive detectors" f1 = DDG4.Filter(kernel,'GeantinoRejectFilter/GeantinoRejector') f2 = DDG4.Filter(kernel,'ParticleRejectFilter/OpticalPhotonRejector') f2.particle = 'opticalphoton' @@ -148,7 +150,7 @@ def run(): kernel.registerGlobalFilter(f3) kernel.registerGlobalFilter(f4) - # First the tracking detectors + print "# First the tracking detectors" seq,act = geant4.setupTracker('SiVertexBarrel') seq.adopt(f1) #seq.adopt(f4) @@ -161,7 +163,7 @@ def run(): seq,act = geant4.setupTracker('SiTrackerBarrel') seq,act = geant4.setupTracker('SiTrackerEndcap') seq,act = geant4.setupTracker('SiTrackerForward') - # Now the calorimeters + print "# Now setup the calorimeters" seq,act = geant4.setupCalorimeter('EcalBarrel') seq,act = geant4.setupCalorimeter('EcalEndcap') seq,act = geant4.setupCalorimeter('HcalBarrel') @@ -172,7 +174,7 @@ def run(): seq,act = geant4.setupCalorimeter('LumiCal') seq,act = geant4.setupCalorimeter('BeamCal') - # Now build the physics list: + print "# Now build the physics list:" phys = geant4.setupPhysics('QGSP_BERT') ph = DDG4.PhysicsList(kernel,'Geant4PhysicsList/Myphysics') ph.addParticleConstructor('G4BosonConstructor') diff --git a/DDG4/examples/SiDSim_MT.py b/DDG4/examples/SiDSim_MT.py new file mode 100644 index 000000000..b0d514656 --- /dev/null +++ b/DDG4/examples/SiDSim_MT.py @@ -0,0 +1,190 @@ +# +# +import os, time, DDG4 +from DDG4 import OutputLevel as Output +from SystemOfUnits import * +# +# +print \ +""" + + DD4hep simulation example setup DDG4 + in multi-threaded mode using the python configuration + + @author M.Frank + @version 1.0 + +""" + + +def setupWorker(geant4): + kernel = geant4.kernel() + print '#PYTHON: +++ Creating Geant4 worker thread ....' + print "#PYTHON: Configure Run actions" + run1 = DDG4.RunAction(kernel,'Geant4TestRunAction/RunInit') + run1.Property_int = 12345 + run1.Property_double = -5e15*keV + run1.Property_string = 'Startrun: Hello_2' + print run1.Property_string, run1.Property_double, run1.Property_int + run1.enableUI() + kernel.registerGlobalAction(run1) + kernel.runAction().adopt(run1) + + print "#PYTHON: Configure Event actions" + prt = DDG4.EventAction(kernel,'Geant4ParticlePrint/ParticlePrint') + prt.OutputLevel = Output.INFO + prt.OutputType = 3 # Print both: table and tree + kernel.eventAction().adopt(prt) + + print "\n#PYTHON: Configure I/O\n" + evt_lcio = geant4.setupLCIOOutput('LcioOutput','CLICSiD_'+time.strftime('%Y-%m-%d_%H-%M')) + evt_lcio.OutputLevel = Output.ERROR + + evt_root = geant4.setupROOTOutput('RootOutput','CLICSiD_'+time.strftime('%Y-%m-%d_%H-%M')) + + generator_output_level = Output.INFO + + gen = DDG4.GeneratorAction(kernel,"Geant4GeneratorActionInit/GenerationInit") + kernel.generatorAction().adopt(gen) + #VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV + print "#PYTHON:\n#PYTHON: Generation of isotrope tracks of a given multiplicity with overlay:\n#PYTHON:" + print "#PYTHON: First particle generator: pi+" + gen = DDG4.GeneratorAction(kernel,"Geant4IsotropeGenerator/IsotropPi+"); + gen.Mask = 1 + gen.Particle = 'pi+' + gen.Energy = 100 * GeV + gen.Multiplicity = 2 + kernel.generatorAction().adopt(gen) + print "#PYTHON: Install vertex smearing for this interaction" + gen = DDG4.GeneratorAction(kernel,"Geant4InteractionVertexSmear/SmearPi+"); + gen.Mask = 1 + gen.Offset = (20*mm, 10*mm, 10*mm, 0*ns) + gen.Sigma = (4*mm, 1*mm, 1*mm, 0*ns) + kernel.generatorAction().adopt(gen) + + print "#PYTHON: Second particle generator: e-" + gen = DDG4.GeneratorAction(kernel,"Geant4IsotropeGenerator/IsotropE-"); + gen.Mask = 2 + gen.Particle = 'e-' + gen.Energy = 25 * GeV + gen.Multiplicity = 3 + kernel.generatorAction().adopt(gen) + print "#PYTHON: Install vertex smearing for this interaction" + gen = DDG4.GeneratorAction(kernel,"Geant4InteractionVertexSmear/SmearE-"); + gen.Mask = 2 + gen.Offset = (-20*mm, -10*mm, -10*mm, 0*ns) + gen.Sigma = (12*mm, 8*mm, 8*mm, 0*ns) + kernel.generatorAction().adopt(gen) + #^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + print "#PYTHON: Merge all existing interaction records" + gen = DDG4.GeneratorAction(kernel,"Geant4InteractionMerger/InteractionMerger") + gen.OutputLevel = 4 #generator_output_level + gen.enableUI() + kernel.generatorAction().adopt(gen) + + print "#PYTHON: Finally generate Geant4 primaries" + gen = DDG4.GeneratorAction(kernel,"Geant4PrimaryHandler/PrimaryHandler") + gen.OutputLevel = 4 #generator_output_level + gen.enableUI() + kernel.generatorAction().adopt(gen) + + print "#PYTHON: ....and handle the simulation particles." + part = DDG4.GeneratorAction(kernel,"Geant4ParticleHandler/ParticleHandler") + kernel.generatorAction().adopt(part) + #part.SaveProcesses = ['conv','Decay'] + part.SaveProcesses = ['Decay'] + part.MinimalKineticEnergy = 100*MeV + part.OutputLevel = 5 # generator_output_level + part.enableUI() + user = DDG4.Action(kernel,"Geant4TCUserParticleHandler/UserParticleHandler") + user.TrackingVolume_Zmax = DDG4.EcalEndcap_zmin + user.TrackingVolume_Rmax = DDG4.EcalBarrel_rmin + user.enableUI() + part.adopt(user) + print '#PYTHON: +++ Geant4 worker thread configured successfully....' + return 1 + +def setupMaster(geant4): + kernel = geant4.master() + print '#PYTHON: +++ Setting up master thread for ',kernel.NumberOfThreads,' workers.' + return 1 + +def setupSensitives(geant4): + print "#PYTHON: Setting up all sensitive detectors" + geant4.printDetectors() + print "#PYTHON: First the tracking detectors" + seq,act = geant4.setupTracker('SiVertexBarrel') + seq,act = geant4.setupTracker('SiVertexEndcap') + seq,act = geant4.setupTracker('SiTrackerBarrel') + seq,act = geant4.setupTracker('SiTrackerEndcap') + seq,act = geant4.setupTracker('SiTrackerForward') + print "#PYTHON: Now setup the calorimeters" + seq,act = geant4.setupCalorimeter('EcalBarrel') + seq,act = geant4.setupCalorimeter('EcalEndcap') + seq,act = geant4.setupCalorimeter('HcalBarrel') + seq,act = geant4.setupCalorimeter('HcalEndcap') + seq,act = geant4.setupCalorimeter('HcalPlug') + seq,act = geant4.setupCalorimeter('MuonBarrel') + seq,act = geant4.setupCalorimeter('MuonEndcap') + seq,act = geant4.setupCalorimeter('LumiCal') + seq,act = geant4.setupCalorimeter('BeamCal') + return 1 + +def run(): + kernel = DDG4.Kernel() + lcdd = kernel.lcdd() + install_dir = os.environ['DD4hepINSTALL'] + DDG4.Core.setPrintFormat("%-32s %6s %s") + kernel.loadGeometry("file:"+install_dir+"/DDDetectors/compact/SiD.xml") + DDG4.importConstants(lcdd) + + kernel.NumberOfThreads = 3 + geant4 = DDG4.Geant4(kernel,tracker='Geant4TrackerCombineAction') + print "# Configure UI" + geant4.setupCshUI() + + print "# Geant4 user initialization action" + geant4.addUserInitialization(worker=setupWorker, worker_args=(geant4,), + master=setupMaster,master_args=(geant4,)) + + print "# Configure G4 geometry setup" + seq,act = geant4.addDetectorConstruction("Geant4DetectorGeometryConstruction/ConstructGeo") + + print "# Configure G4 sensitive detectors: python setup callback" + seq,act = geant4.addDetectorConstruction("Geant4PythonDetectorConstruction/SetupSD", + sensitives=setupSensitives,sensitives_args=(geant4,)) + print "# Configure G4 sensitive detectors: atach'em to the sensitive volumes" + seq,act = geant4.addDetectorConstruction("Geant4DetectorSensitivesConstruction/ConstructSD") + # allow_threads=True) + + print "# Configure G4 magnetic field tracking" + seq,field = geant4.addDetectorConstruction("Geant4FieldTrackingConstruction/MagFieldTrackingSetup") + field.stepper = "HelixGeant4Runge" + field.equation = "Mag_UsualEqRhs" + field.eps_min = 5e-05 * mm + field.eps_max = 0.001 * mm + field.min_chord_step = 0.01 * mm + field.delta_chord = 0.25 * mm + field.delta_intersection = 1e-05 * mm + field.delta_one_step = 0.001 * mm + print '+++++> ',field.name,'-> stepper = ',field.stepper + print '+++++> ',field.name,'-> equation = ',field.equation + print '+++++> ',field.name,'-> eps_min = ',field.eps_min + print '+++++> ',field.name,'-> eps_max = ',field.eps_max + print '+++++> ',field.name,'-> delta_one_step = ',field.delta_one_step + + print "# Setup random generator" + rndm = DDG4.Action(kernel,'Geant4Random/Random') + rndm.Seed = 987654321 + rndm.initialize() + ##rndm.showStatus() + + print "# Now build the physics list:" + phys = geant4.setupPhysics('QGSP_BERT') + phys.dump() + + geant4.run() + +if __name__ == "__main__": + run() diff --git a/DDG4/examples/SiD_Markus.py b/DDG4/examples/SiD_Markus.py index a96b8f4b1..23769ca60 100644 --- a/DDG4/examples/SiD_Markus.py +++ b/DDG4/examples/SiD_Markus.py @@ -4,6 +4,7 @@ import os, time, DDG4 from DDG4 import OutputLevel as Output from SystemOfUnits import * # +global geant4 # """ @@ -13,40 +14,12 @@ from SystemOfUnits import * @version 1.0 """ -def run(): - kernel = DDG4.Kernel() - lcdd = kernel.lcdd() - install_dir = os.environ['DD4hepINSTALL'] - kernel.loadGeometry("file:"+install_dir+"/DDDetectors/compact/SiD_Markus.xml") - DDG4.importConstants(lcdd) - DDG4.Core.setPrintLevel(Output.WARNING) - - geant4 = DDG4.Geant4(kernel,tracker='Geant4TrackerWeightedAction') - geant4.printDetectors() - # Configure UI - geant4.setupCshUI() - - # Configure G4 magnetic field tracking - field = geant4.addConfig('Geant4FieldTrackingSetupAction/MagFieldTrackingSetup') - field.stepper = "HelixGeant4Runge" - field.equation = "Mag_UsualEqRhs" - field.eps_min = 5e-05 * mm - field.eps_max = 0.001 * mm - field.min_chord_step = 0.01 * mm - field.delta_chord = 0.25 * mm - field.delta_intersection = 1e-05 * mm - field.delta_one_step = 0.001 * mm - print '+++++> ',field.name,'-> stepper = ',field.stepper - print '+++++> ',field.name,'-> equation = ',field.equation - print '+++++> ',field.name,'-> eps_min = ',field.eps_min - print '+++++> ',field.name,'-> eps_max = ',field.eps_max - print '+++++> ',field.name,'-> delta_one_step = ',field.delta_one_step - - # Setup random generator - rndm = DDG4.Action(kernel,'Geant4Random/Random') - rndm.Seed = 987654321 - rndm.initialize() +def setupWorker(): + k = DDG4.Kernel() + kernel = k.worker() + print 'PYTHON: +++ Creating Geant4 worker thread ....' + # Configure Run actions run1 = DDG4.RunAction(kernel,'Geant4TestRunAction/RunInit') run1.Property_int = 12345 @@ -143,11 +116,15 @@ def run(): user.TrackingVolume_Rmax = DDG4.EcalBarrel_rmin user.enableUI() part.adopt(user) + print 'PYTHON: +++ Geant4 worker thread configured successfully....' + return 1 + +def setupMaster(): + print 'PYTHON: +++ Setting up master thread.....' + return 1 - # Setup global filters fur use in sensntive detectors - f1 = DDG4.Filter(kernel,'GeantinoRejectFilter/GeantinoRejector') - kernel.registerGlobalFilter(f1) - +def setupSensitives(): + global geant4 # First the tracking detectors seq,act = geant4.setupTracker('SiVertexBarrel') act.OutputLevel = Output.ERROR @@ -155,6 +132,75 @@ def run(): seq,act = geant4.setupTracker('SiVertexEndcap') act.OutputLevel = Output.ERROR act.CollectSingleDeposits = False + print 'PYTHON: +++ Setting up Geant4 sensitive detectors for worker thread.....' + return 1 + +def dummy_sd(): + print 'PYTHON: +++ Setting up DUMMY Geant4 sensitive detectors for worker thread.....' + return 1 + +def dummy_geom(): + print 'PYTHON: +++ Setting up DUMMY Geant4 geometry for worker thread.....' + return 1 + + +def run(): + global geant4 + kernel = DDG4.Kernel() + lcdd = kernel.lcdd() + install_dir = os.environ['DD4hepINSTALL'] + kernel.loadGeometry("file:"+install_dir+"/DDDetectors/compact/SiD_Markus.xml") + DDG4.importConstants(lcdd) + DDG4.Core.setPrintLevel(Output.DEBUG) + DDG4.Core.setPrintFormat("%-32s %6s %s") + + kernel.NumberOfThreads = 3 + geant4 = DDG4.Geant4(kernel,tracker='Geant4TrackerWeightedAction') + geant4.printDetectors() + # Configure UI + geant4.setupCshUI() + + # Geant4 user initialization action + geant4.addUserInitialization(worker=setupWorker, master=setupMaster) + + # Configure G4 geometry setup + seq,act = geant4.addDetectorConstruction("Geant4DetectorGeometryConstruction/ConstructGeo") + + # Configure G4 magnetic field tracking + seq,fld = geant4.addDetectorConstruction("Geant4FieldTrackingConstruction/MagFieldTrackingSetup") + fld.stepper = "HelixGeant4Runge" + fld.equation = "Mag_UsualEqRhs" + fld.eps_min = 5e-05 * mm + fld.eps_max = 0.001 * mm + fld.min_chord_step = 0.01 * mm + fld.delta_chord = 0.25 * mm + fld.delta_intersection = 1e-05 * mm + fld.delta_one_step = 0.001 * mm + print '+++++> ',fld.name,'-> stepper = ',fld.stepper + print '+++++> ',fld.name,'-> equation = ',fld.equation + print '+++++> ',fld.name,'-> eps_min = ',fld.eps_min + print '+++++> ',fld.name,'-> eps_max = ',fld.eps_max + print '+++++> ',fld.name,'-> delta_one_step = ',fld.delta_one_step + + seq,act = geant4.addDetectorConstruction("Geant4PythonDetectorConstruction/DummyDet", + geometry=dummy_geom, + sensitives=dummy_sd) + # Configure G4 sensitive detectors + seq,act = geant4.addDetectorConstruction("Geant4PythonDetectorConstruction/SetupSD", + sensitives=setupSensitives) + + # Configure G4 sensitive detectors + seq,act = geant4.addDetectorConstruction("Geant4DetectorSensitivesConstruction/ConstructSD", + allow_threads=True) + + # Setup random generator + rndm = DDG4.Action(kernel,'Geant4Random/Random') + rndm.Seed = 987654321 + rndm.initialize() + + # Setup global filters fur use in sensntive detectors + f1 = DDG4.Filter(kernel,'GeantinoRejectFilter/GeantinoRejector') + kernel.registerGlobalFilter(f1) #seq,act = geant4.setupTracker('SiTrackerBarrel') #seq,act = geant4.setupTracker('SiTrackerEndcap') @@ -174,12 +220,15 @@ def run(): phys = geant4.setupPhysics('QGSP_BERT') phys.dump() - kernel.configure() - kernel.initialize() + #kernel.configure() + #kernel.initialize() #DDG4.setPrintLevel(Output.DEBUG) - kernel.run() - kernel.terminate() + #kernel.run() + #kernel.terminate() + return 1 if __name__ == "__main__": + import sys + print sys.argv run() diff --git a/DDG4/examples/testDDPython.py b/DDG4/examples/testDDPython.py new file mode 100644 index 000000000..09de2e3ee --- /dev/null +++ b/DDG4/examples/testDDPython.py @@ -0,0 +1,68 @@ +from ROOT import gSystem +gSystem.Load('libDDPython') +from ROOT import DD4hep as Core + +name_space = __import__(__name__) +def import_namespace_item(ns,nam): + scope = getattr(name_space,ns) + attr = getattr(scope,nam) + setattr(name_space,nam,attr) + return attr + +def a_func(): + print 'Hello world' + return 1 + +class a_class: + def __init__(self): + pass + def fcn(self): + print 'Hello world from member function fcn' + return 1 + def fcn_except(self,args,aa): + print 'Hello world from member function fcn1 a1=',args,' a2=',aa + raise RuntimeError('Exception from python test object a_class') + return 6 + + +py = import_namespace_item('Core','DDPython') + +print '+++++ Test: Execute statements in python with C++ indirection' +py.instance().execute('import sys') +py.instance().execute('print "Arguments:", sys.argv') +print '\n' + +obj=a_class() +import sys, traceback + +print '+++++ Test: simple function call' +ret = py.instance().call(a_func,None) +print 'ret:',ret +print '\n' + +print '+++++ Test: object method call' +ret = py.instance().call(obj.fcn,None) +print 'ret:',ret +print '\n' + +print '+++++ Test: object method call with non callable' +try: + ret = py.instance().call(1,None) + print 'ret:',ret +except: + traceback.print_exc() +print '\n' + +print '+++++ Test: object method call with exception in python callback' +try: + ret = py.instance().call(obj.fcn_except,(1,[1,2,3,4,5,6],)) + print 'ret:',ret +except: + traceback.print_exc() +print '\n' +print '+++++ All Done....\n\n' + +#py.instance().prompt() + +sys.exit(0) + diff --git a/DDG4/include/DDG4/ComponentProperties.h b/DDG4/include/DDG4/ComponentProperties.h index a595d9678..488acaa8d 100644 --- a/DDG4/include/DDG4/ComponentProperties.h +++ b/DDG4/include/DDG4/ComponentProperties.h @@ -226,6 +226,8 @@ namespace DD4hep { template <typename FUNCTOR> void for_each(FUNCTOR& func) { std::for_each(m_properties.begin(), m_properties.end(), func); } + /// Export properties of another instance + void adopt(const PropertyManager& copy); /// Dump string values void dump() const; }; diff --git a/DDG4/include/DDG4/Geant4Action.h b/DDG4/include/DDG4/Geant4Action.h index bc71dcacf..7080256c8 100644 --- a/DDG4/include/DDG4/Geant4Action.h +++ b/DDG4/include/DDG4/Geant4Action.h @@ -89,23 +89,21 @@ namespace DD4hep { class Geant4Action { protected: /// Reference to the Geant4 context - Geant4Context m_context; + Geant4Context* m_context; /// Control directory of this action Geant4UIMessenger* m_control; /// Default property: Output level - int m_outputLevel; + int m_outputLevel; /// Default property: Flag to create control instance - bool m_needsControl; + bool m_needsControl; /// Action name - std::string m_name; + std::string m_name; /// Property pool - PropertyManager m_properties; + PropertyManager m_properties; /// Reference count. Initial value: 1 - long m_refCount; + long m_refCount; - //fg: ContextUpdate needs to be public for the clang compiler - // as it is used in SequenceHdl::setContextToClients() public: /// Functor to update the context of a Geant4Action object /** @@ -113,18 +111,30 @@ namespace DD4hep { * \version 1.0 * \ingroup DD4HEP_SIMULATION */ - class ContextUpdate { - public: + class ContextSwap { /// reference to the context; - const Geant4Context* context; + Geant4Context* context; + Geant4Action* action; + public: /// Constructor - ContextUpdate(const Geant4Context* c=0) : context(c) {} - /// Callback - void operator()(Geant4Action* action) const; + ContextSwap(Geant4Action* a,Geant4Context* c) : action(a) { + context = action->context(); + action->updateContext(c); + } + /// Destructor + ~ContextSwap() { + action->updateContext(context); + } }; - friend class ContextUpdate; + protected: + /// Functor to access elements by name + struct FindByName { + std::string _n; + FindByName(const std::string& n) : _n(n) {} + bool operator()(const Geant4Action* a) { return a->name() == _n; } + }; /// Actor class to manipulate action groups /** * \author M.Frank @@ -161,12 +171,18 @@ namespace DD4hep { typename _V::iterator end() { return m_v.end(); } typename _V::const_iterator begin() const { return m_v.begin(); } typename _V::const_iterator end() const { return m_v.end(); } + /// Context updates - void operator()(const ContextUpdate& context) { - if (m_v.empty()) - return; - for (typename _V::iterator i = m_v.begin(); i != m_v.end(); ++i) - context(*i); + void updateContext(Geant4Context* ctxt) { + (*this)(&T::updateContext,ctxt); + } + /// Element access by name + template <typename F> typename _V::value_type get(const F& f) const { + if (!m_v.empty()) { + typename _V::const_iterator i=std::find_if(m_v.begin(),m_v.end(),f); + return i==m_v.end() ? 0 : (*i); + } + return 0; } /// NON-CONST actions template <typename R, typename Q> void operator()(R (Q::*pmf)()) { @@ -245,9 +261,15 @@ namespace DD4hep { /// Decrease reference count. Implicit destruction long release(); /// Access the context - const Geant4Context* context() const { - return &m_context; + Geant4Context* context() const { + return m_context; + } + /// Set or update client context + virtual void updateContext(Geant4Context* ctxt) { + m_context = ctxt; } + /// Set or update client for the use in a new thread fiber + virtual void configureFiber(Geant4Context* thread_context); /// Access name of the action const std::string& name() const { return m_name; @@ -290,7 +312,7 @@ namespace DD4hep { /// Install command control messenger if wanted virtual void installCommandMessenger(); /// Install property control messenger if wanted - void installPropertyMessenger(); + virtual void installPropertyMessenger(); /// Support for messages with variable output level using output level void print(const char* fmt, ...) const; diff --git a/DDG4/include/DDG4/Geant4Config.h b/DDG4/include/DDG4/Geant4Config.h index b8520a291..4d5a05dbc 100644 --- a/DDG4/include/DDG4/Geant4Config.h +++ b/DDG4/include/DDG4/Geant4Config.h @@ -40,6 +40,7 @@ namespace DD4hep { class Geant4ActionPhase; class Geant4GeneratorAction; class Geant4PhysicsList; + class Geant4UserInitialization; class Geant4UserParticleHandler; class Geant4GeneratorActionSequence; class Geant4RunActionSequence; @@ -49,6 +50,9 @@ namespace DD4hep { class Geant4StackingActionSequence; class Geant4PhysicsListActionSequence; class Geant4SensDetActionSequence; + class Geant4UserInitializationSequence; + class Geant4DetectorConstruction; + class Geant4DetectorConstructionSequence; /// Convenience namespace to ease the setupup of DDG4 applications namespace Setup { @@ -56,28 +60,32 @@ namespace DD4hep { typedef Geant4Kernel Kernel; //typedef Geant4Handle<Geant4Kernel> KernelH; // Actions - typedef Geant4Handle<Geant4Action> Action; - typedef Geant4Handle<Geant4Filter> Filter; - typedef Geant4Handle<Geant4PhaseAction> PhaseAction; - typedef Geant4Handle<Geant4GeneratorAction> GenAction; - typedef Geant4Handle<Geant4RunAction> RunAction; - typedef Geant4Handle<Geant4EventAction> EventAction; - typedef Geant4Handle<Geant4TrackingAction> TrackAction; - typedef Geant4Handle<Geant4StackingAction> StackAction; - typedef Geant4Handle<Geant4SteppingAction> StepAction; - typedef Geant4Handle<Geant4PhysicsList> PhysicsList; - typedef Geant4Handle<Geant4ActionPhase> Phase; - typedef Geant4Handle<Geant4Sensitive> Sensitive; + typedef Geant4Handle<Geant4Action> Action; + typedef Geant4Handle<Geant4Filter> Filter; + typedef Geant4Handle<Geant4PhaseAction> PhaseAction; + typedef Geant4Handle<Geant4GeneratorAction> GenAction; + typedef Geant4Handle<Geant4RunAction> RunAction; + typedef Geant4Handle<Geant4EventAction> EventAction; + typedef Geant4Handle<Geant4TrackingAction> TrackAction; + typedef Geant4Handle<Geant4StackingAction> StackAction; + typedef Geant4Handle<Geant4SteppingAction> StepAction; + typedef Geant4Handle<Geant4PhysicsList> PhysicsList; + typedef Geant4Handle<Geant4ActionPhase> Phase; + typedef Geant4Handle<Geant4Sensitive> Sensitive; + typedef Geant4Handle<Geant4UserInitialization> Initialization; + typedef Geant4Handle<Geant4DetectorConstruction> DetectorConstruction; // Sequences - typedef Geant4Handle<Geant4SensDetActionSequence> SensitiveSeq; - typedef Geant4Handle<Geant4GeneratorActionSequence> GeneratorSeq; - typedef Geant4Handle<Geant4RunActionSequence> RunActionSeq; - typedef Geant4Handle<Geant4EventActionSequence> EventActionSeq; - typedef Geant4Handle<Geant4TrackingActionSequence> TrackActionSeq; - typedef Geant4Handle<Geant4SteppingActionSequence> StepActionSeq; - typedef Geant4Handle<Geant4StackingActionSequence> StackActionSeq; - typedef Geant4Handle<Geant4PhysicsListActionSequence> PhysicsActionSeq; + typedef Geant4Handle<Geant4SensDetActionSequence> SensitiveSeq; + typedef Geant4Handle<Geant4GeneratorActionSequence> GeneratorSeq; + typedef Geant4Handle<Geant4RunActionSequence> RunActionSeq; + typedef Geant4Handle<Geant4EventActionSequence> EventActionSeq; + typedef Geant4Handle<Geant4TrackingActionSequence> TrackActionSeq; + typedef Geant4Handle<Geant4SteppingActionSequence> StepActionSeq; + typedef Geant4Handle<Geant4StackingActionSequence> StackActionSeq; + typedef Geant4Handle<Geant4PhysicsListActionSequence> PhysicsActionSeq; + typedef Geant4Handle<Geant4UserInitializationSequence> InitializationSeq; + typedef Geant4Handle<Geant4DetectorConstructionSequence> DetectorConstructionSeq; } } // End namespace Simulation @@ -93,9 +101,11 @@ namespace DD4hep { #include "DDG4/Geant4TrackingAction.h" #include "DDG4/Geant4SteppingAction.h" #include "DDG4/Geant4StackingAction.h" +#include "DDG4/Geant4DetectorConstruction.h" #include "DDG4/Geant4ActionPhase.h" #include "DDG4/Geant4SensDetAction.h" #include "DDG4/Geant4ParticleHandler.h" +#include "DDG4/Geant4UserInitialization.h" #include "DDG4/Geant4UserParticleHandler.h" #include "DDG4/ComponentUtils.h" #include "DD4hep/LCDD.h" diff --git a/DDG4/include/DDG4/Geant4Context.h b/DDG4/include/DDG4/Geant4Context.h index e84471a22..958e360b0 100644 --- a/DDG4/include/DDG4/Geant4Context.h +++ b/DDG4/include/DDG4/Geant4Context.h @@ -166,6 +166,7 @@ namespace DD4hep { * \ingroup DD4HEP_SIMULATION */ class Geant4Context { + friend class Geant4Kernel; public: #ifdef R__DICTIONARY_FILENAME /// ROOT does not know how to process the nested ns otherwise @@ -176,9 +177,9 @@ namespace DD4hep { Geant4Kernel* m_kernel; Geant4Run* m_run; Geant4Event* m_event; - public: /// Default constructor Geant4Context(Geant4Kernel* kernel); + public: /// Default destructor virtual ~Geant4Context(); /// Set the geant4 run reference diff --git a/DDG4/include/DDG4/Geant4Converter.h b/DDG4/include/DDG4/Geant4Converter.h index 06c261ee2..901fd40cb 100644 --- a/DDG4/include/DDG4/Geant4Converter.h +++ b/DDG4/include/DDG4/Geant4Converter.h @@ -76,14 +76,11 @@ namespace DD4hep { /// Convert the geometry type LimitSet into the corresponding Geant4 object(s). virtual void* handleLimitSet(LimitSet limitset, const std::set<const TGeoVolume*>& volumes) const; - /// Convert the geometry type SensitiveDetector into the corresponding Geant4 object(s). - virtual void* handleSensitive(SensitiveDetector sens_det, const std::set<const TGeoVolume*>& volumes) const; - /// Handle the geant 4 specific properties void handleProperties(LCDD::Properties& prp) const; /// Print the geometry type SensitiveDetector - virtual void* printSensitive(SensitiveDetector sens_det, const std::set<const TGeoVolume*>& volumes) const; + virtual void printSensitive(SensitiveDetector sens_det, const std::set<const TGeoVolume*>& volumes) const; /// Print Geant4 placement virtual void* printPlacement(const std::string& name, const TGeoNode* node) const; diff --git a/DDG4/include/DDG4/Geant4DetectorConstruction.h b/DDG4/include/DDG4/Geant4DetectorConstruction.h index 8e52a7e69..f925d3927 100644 --- a/DDG4/include/DDG4/Geant4DetectorConstruction.h +++ b/DDG4/include/DDG4/Geant4DetectorConstruction.h @@ -16,12 +16,14 @@ #define DD4HEP_GEANT4DETECTORCONSTRUCTION_H // Framework include files -#include "DD4hep/Printout.h" #include "DDG4/Geant4Action.h" #include "DDG4/Geant4GeometryInfo.h" -// Geant4 include files -#include "G4VUserDetectorConstruction.hh" +// Forward declarations +class G4VUserDetectorConstruction; +class G4VSensitiveDetector; +class G4LogicalVolume; + /// Namespace for the AIDA detector description toolkit namespace DD4hep { @@ -36,29 +38,109 @@ namespace DD4hep { // Forward declarations class Geant4Kernel; + class Geant4DetectorConstruction; + class Geant4DetectorConstructionContext; + class Geant4DetectorConstructionSequence; + + /// Geant4 detector construction context definition. + /** + * Detector construction context to allow the workers a simplified + * access to the object created. + * + * The context is a stack based object. Do not keep a pointer to + * The object scope does not span beyond the actional function call. + * + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_SIMULATION + */ + struct Geant4DetectorConstructionContext { + /// Reference to geometry object + Geometry::LCDD& lcdd; + /// Reference to the world after construction + G4VPhysicalVolume* world; + /// The cached geometry information + Geant4GeometryInfo* geometry; + /// G4 User detector initializer + G4VUserDetectorConstruction* detector; + /// Initializing Constructor + Geant4DetectorConstructionContext(Geometry::LCDD& l, + G4VUserDetectorConstruction* d) + : lcdd(l), world(0), geometry(0), detector(d) { } + /// Default destructor + ~Geant4DetectorConstructionContext() { } + /// Helper: Assign sensitive detector to logical volume + void setSensitiveDetector(G4LogicalVolume* vol, G4VSensitiveDetector* sd); + }; - /// Class to create Geant4 detector geometry from TGeo representation in memory + /// Basic implementation of the Geant4 detector construction action. /** - * On demand (ie. when calling "Construct") the DD4hep geometry is converted - * to Geant4 with all volumes, assemblies, shapes, materials etc. - * The actuak work is performed by the Geant4Converter class called by this method. + * Concrete implementation of the Geant4 detector construction action. + * The sequences as the object's master dispatches the callbacks for + * the "constructGeo()" method to create a detector geometry and the + * "constructSensitives()" call to create the sensitive detectors + * and the "constructField" to each worker subclassing + * Geant4DetectorConstruction. + * + * Please note: + * constructField() and constructSensitives() are executed in a + * thread-local context. See the Geant4 documentation for details: + * https://twiki.cern.ch/twiki/bin/view/Geant4/QuickMigrationGuideForGeant4V10 * * \author M.Frank * \version 1.0 * \ingroup DD4HEP_SIMULATION */ - class Geant4DetectorConstruction : public Geant4Action, public G4VUserDetectorConstruction { + class Geant4DetectorConstruction : public Geant4Action { public: - /// Instance accessor - static Geant4DetectorConstruction* instance(Geant4Kernel& kernel); - /// Initializing constructor for DDG4 - Geant4DetectorConstruction(Geant4Kernel& kernel); - /// Initializing constructor for other clients - Geant4DetectorConstruction(Geometry::LCDD& lcdd); + /// Standard Constructor + Geant4DetectorConstruction(Geant4Context* context, const std::string& nam); /// Default destructor virtual ~Geant4DetectorConstruction(); - /// Geometry construction callback: Invoke the conversion to Geant4 - G4VPhysicalVolume* Construct(); + /// Geometry construction callback. Called at "Construct()" + virtual void constructGeo(Geant4DetectorConstructionContext* ctxt); + /// Electromagnetic field construction callback. Called at "ConstructSDandField()" + virtual void constructField(Geant4DetectorConstructionContext* ctxt); + /// Sensitive detector construction callback. Called at "ConstructSDandField()" + virtual void constructSensitives(Geant4DetectorConstructionContext* ctxt); + }; + + /// Concrete basic implementation of the Geant4 detector construction sequencer. + /** + * Concrete implementation of the Geant4 detector construction sequence. + * The sequence dispatches the callbacks for the "Construct()" method to + * create a detector geometry and to dispatch the "ConstructSDandField()" + * calls for each worker. + * + * Please note: + * constructField() and constructSensitives() are executed in a + * thread-local context. See the Geant4 documentation for details: + * https://twiki.cern.ch/twiki/bin/view/Geant4/QuickMigrationGuideForGeant4V10 + * + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_SIMULATION + */ + class Geant4DetectorConstructionSequence : public Geant4Action { + protected: + /// The list of action objects to be called + Actors<Geant4DetectorConstruction> m_actors; + + public: + /// Standard Constructor + Geant4DetectorConstructionSequence(Geant4Context* context, const std::string& nam); + /// Default destructor + virtual ~Geant4DetectorConstructionSequence(); + /// Set or update client context + virtual void updateContext(Geant4Context* ctxt); + /// Add an actor responding to all callbacks. Sequence takes ownership. + void adopt(Geant4DetectorConstruction* action); + /// Geometry construction callback. Called at "Construct()" + virtual void constructGeo(Geant4DetectorConstructionContext* ctxt); + /// Electromagnetic field construction callback. Called at "ConstructSDandField()" + virtual void constructField(Geant4DetectorConstructionContext* ctxt); + /// Sensitive detector construction callback. Called at "ConstructSDandField()" + virtual void constructSensitives(Geant4DetectorConstructionContext* ctxt); //@{ Accessor to the various geant4 maps after construction @@ -80,19 +162,12 @@ namespace DD4hep { /// Access to the converted regions const Geant4GeometryMaps::RegionMap& regions() const; /// Access to the converted sensitive detectors - const Geant4GeometryMaps::SensDetMap& sensitives() const; + //const Geant4GeometryMaps::SensDetMap& sensitives() const; //@} - - private: - /// Printlevel used for the geometry conversion - PrintLevel m_outputLevel; - /// Reference to geometry object - Geometry::LCDD& m_lcdd; - /// Reference to the world after construction - G4VPhysicalVolume* m_world; }; - } -} -#endif + } // End namespace Simulation +} // End namespace DD4hep + +#endif // DD4HEP_DDG4_GEANT4DETECTORCONSTRUCTION_H diff --git a/DDG4/include/DDG4/Geant4EventAction.h b/DDG4/include/DDG4/Geant4EventAction.h index 4cb74040e..f6fe64b9f 100644 --- a/DDG4/include/DDG4/Geant4EventAction.h +++ b/DDG4/include/DDG4/Geant4EventAction.h @@ -27,6 +27,11 @@ namespace DD4hep { /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { + // Forward declarations + class Geant4EventAction; + class Geant4SharedEventAction; + class Geant4EventActionSequence; + /// Concrete basic implementation of the Geant4 event action /** * The EventAction is called for every event. @@ -47,6 +52,8 @@ namespace DD4hep { * \ingroup DD4HEP_SIMULATION */ class Geant4EventAction : public Geant4Action { + public: + typedef Geant4SharedEventAction shared_type; public: /// Standard constructor Geant4EventAction(Geant4Context* context, const std::string& nam); @@ -58,12 +65,49 @@ namespace DD4hep { virtual void end(const G4Event* event); }; + /// Implementation of the Geant4 shared event action + /** + * Wrapper to share single instances of event actions for + * multi-threaded purposes. The wrapper ensures the locking + * of the basic actions to avoid race conditions. + * + * Shared action should be 'fast'. The global lock otherwise + * inhibits the efficient use of the multiple threads. + * + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_SIMULATION + */ + class Geant4SharedEventAction : public Geant4EventAction { + protected: + /// Reference to the shared action + Geant4EventAction* m_action; + public: + /// Standard constructor + Geant4SharedEventAction(Geant4Context* context, const std::string& nam); + /// Default destructor + virtual ~Geant4SharedEventAction(); + /// Set or update client for the use in a new thread fiber + virtual void configureFiber(Geant4Context* thread_context); + /// Underlying object to be used during the execution of this thread + virtual void use(Geant4EventAction* action); + /// Begin-of-event callback + virtual void begin(const G4Event* event); + /// End-of-event callback + virtual void end(const G4Event* event); + }; + /// Concrete implementation of the Geant4 event action sequence /** * The sequence dispatches the callbacks at the beginning and the and * of an event to all registered Geant4EventAction members and all * registered callbacks. * + * Note Multi-Threading issue: + * Neither callbacks not the action list is protected against multiple + * threads calling the Geant4 callbacks! + * These must be protected in the user actions themselves. + * * \author M.Frank * \version 1.0 * \ingroup DD4HEP_SIMULATION @@ -83,6 +127,12 @@ namespace DD4hep { Geant4EventActionSequence(Geant4Context* context, const std::string& nam); /// Default destructor virtual ~Geant4EventActionSequence(); + /// Set or update client context + virtual void updateContext(Geant4Context* ctxt); + /// Set or update client for the use in a new thread fiber + virtual void configureFiber(Geant4Context* thread_context); + /// Get an action by name + Geant4EventAction* get(const std::string& name) const; /// Register begin-of-event callback template <typename Q, typename T> void callAtBegin(Q* p, void (T::*f)(const G4Event*)) { diff --git a/DDG4/include/DDG4/Geant4GeneratorAction.h b/DDG4/include/DDG4/Geant4GeneratorAction.h index dc44809a1..354c52d41 100644 --- a/DDG4/include/DDG4/Geant4GeneratorAction.h +++ b/DDG4/include/DDG4/Geant4GeneratorAction.h @@ -26,6 +26,11 @@ namespace DD4hep { /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { + // Forward declarations + class Geant4GeneratorAction; + class Geant4SharedGeneratorAction; + class Geant4GeneratorActionSequence; + /// Concrete implementation of the Geant4 generator action base class /** * The Geant4GeneratorAction is called for every event. @@ -41,6 +46,8 @@ namespace DD4hep { * \ingroup DD4HEP_SIMULATION */ class Geant4GeneratorAction : public Geant4Action { + public: + typedef Geant4SharedGeneratorAction shared_type; protected: Callback m_calls; public: @@ -53,6 +60,36 @@ namespace DD4hep { } }; + /// Implementation of the Geant4 shared generator action + /** + * Wrapper to share single instances of generator actions for + * multi-threaded purposes. The wrapper ensures the locking + * of the basic actions to avoid race conditions. + * + * Shared action should be 'fast'. The global lock otherwise + * inhibits the efficient use of the multiple threads. + * + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_SIMULATION + */ + class Geant4SharedGeneratorAction : public Geant4GeneratorAction { + protected: + /// Reference to the shared action + Geant4GeneratorAction* m_action; + public: + /// Standard constructor + Geant4SharedGeneratorAction(Geant4Context* context, const std::string& nam); + /// Default destructor + virtual ~Geant4SharedGeneratorAction(); + /// Set or update client for the use in a new thread fiber + virtual void configureFiber(Geant4Context* thread_context); + /// Underlying object to be used during the execution of this thread + virtual void use(Geant4GeneratorAction* action); + /// User generator callback + virtual void operator()(G4Event* event); + }; + /// Concrete implementation of the Geant4 generator action sequence /** * The sequence dispatches the callbacks at the beginning @@ -61,6 +98,11 @@ namespace DD4hep { * * The callback signature is: void operator()(G4Event* event) * + * Note Multi-Threading issue: + * Neither callbacks not the action list is protected against multiple + * threads calling the Geant4 callbacks! + * These must be protected in the user actions themselves. + * * \author M.Frank * \version 1.0 * \ingroup DD4HEP_SIMULATION @@ -76,6 +118,12 @@ namespace DD4hep { Geant4GeneratorActionSequence(Geant4Context* context, const std::string& name); /// Default destructor virtual ~Geant4GeneratorActionSequence(); + /// Set or update client context + virtual void updateContext(Geant4Context* ctxt); + /// Set or update client for the use in a new thread fiber + virtual void configureFiber(Geant4Context* thread_context); + /// Get an action by name + Geant4GeneratorAction* get(const std::string& name) const; /// Register primary particle generation callback. Types Q and T must be polymorph! template <typename Q, typename T> void call(Q* p, void (T::*f)(G4Event*)) { diff --git a/DDG4/include/DDG4/Geant4GeometryInfo.h b/DDG4/include/DDG4/Geant4GeometryInfo.h index 860b5f1d7..3b66db96c 100644 --- a/DDG4/include/DDG4/Geant4GeometryInfo.h +++ b/DDG4/include/DDG4/Geant4GeometryInfo.h @@ -74,7 +74,6 @@ namespace DD4hep { typedef std::map<LimitSet, G4UserLimits*> LimitMap; typedef std::map<PlacedVolume, G4VPhysicalVolume*> PlacementMap; typedef std::map<Region, G4Region*> RegionMap; - typedef std::map<SensitiveDetector, G4VSensitiveDetector*> SensDetMap; typedef std::map<Volume, G4LogicalVolume*> VolumeMap; typedef std::map<PlacedVolume, Geant4AssemblyVolume*> AssemblyMap; @@ -111,10 +110,7 @@ namespace DD4hep { Geant4GeometryMaps::RegionMap g4Regions; Geant4GeometryMaps::VisMap g4Vis; Geant4GeometryMaps::LimitMap g4Limits; - Geant4GeometryMaps::SensDetMap g4SensDets; - Geant4GeometryMaps::Geant4PathMap g4Paths; - Geant4GeometryMaps::SensitiveVolumes sensitives; Geant4GeometryMaps::RegionVolumes regions; Geant4GeometryMaps::LimitVolumes limits; diff --git a/DDG4/include/DDG4/Geant4Handle.h b/DDG4/include/DDG4/Geant4Handle.h index 53ec8d813..fba05d189 100644 --- a/DDG4/include/DDG4/Geant4Handle.h +++ b/DDG4/include/DDG4/Geant4Handle.h @@ -44,28 +44,45 @@ namespace DD4hep { void checked_assign(TYPE* p); public: typedef TYPE handled_type; + /// Pointer to referenced object mutable handled_type* value; + /// Default constructor explicit Geant4Handle(); + /// Construction initialized with object pointer Geant4Handle(handled_type* typ); + /// Cross type initialization template <typename T> Geant4Handle(T* typ) : value(0) { checked_assign(dynamic_cast<handled_type*>(typ)); } + /// Copy constructor Geant4Handle(const Geant4Handle& handle); - Geant4Handle(Geant4Kernel&, const char* type_name); - Geant4Handle(Geant4Kernel&, const std::string& type_name); + /// Initializing constructor + Geant4Handle(Geant4Kernel&, const char* type_name, bool shared=false); + /// Initializing constructor + Geant4Handle(Geant4Kernel&, const std::string& type_name, bool shared=false); /// Constructor only implemented for sensitive objects - Geant4Handle(Geant4Kernel& ctxt, const std::string& type_name, const std::string& detector); + Geant4Handle(Geant4Kernel& ctxt, const std::string& type_name, const std::string& detector, bool shared=false); + /// Default destructor ~Geant4Handle(); + /// Property accessor Property& operator[](const std::string& property_name) const; + /// Assignment operator Geant4Handle& operator=(const Geant4Handle& handle); + /// Assignment operator Geant4Handle& operator=(handled_type* ptr); + /// Validity check bool operator!() const; + /// Access to the underlying object + Geant4Action* action() const; + /// Access to the underlying object + handled_type* operator->() const; + /// Conversion operator operator handled_type*() const; + /// Access to the underlying object handled_type* get() const; + /// Release the underlying object handled_type* release(); - handled_type* operator->() const; - Geant4Action* action() const; }; /// Handle to Geant4 actions with built-in creation mechanism @@ -77,12 +94,25 @@ namespace DD4hep { class KernelHandle { public: typedef Geant4Kernel handled_type; + /// Pointer to referenced object mutable handled_type* value; + /// Default constructor explicit KernelHandle(); + /// Construction initialized with object pointer + explicit KernelHandle(Geant4Kernel* k); + /// Copy constructor + KernelHandle(const KernelHandle& k) : value(k.value) {} + /// Default destructor ~KernelHandle() {} + /// Conversion operator operator handled_type*() const { return value; } + /// Access to the underlying object handled_type* get() const { return value; } + /// Access to the underlying object handled_type* operator->() const { return value; } + /// Access to worker thread + KernelHandle worker(); + /// Destroy referenced object (program termination) void destroy(); }; diff --git a/DDG4/include/DDG4/Geant4Kernel.h b/DDG4/include/DDG4/Geant4Kernel.h index b2e7832ed..5dd89f249 100644 --- a/DDG4/include/DDG4/Geant4Kernel.h +++ b/DDG4/include/DDG4/Geant4Kernel.h @@ -19,10 +19,14 @@ #include "DDG4/Geant4Primitives.h" #include "DDG4/Geant4Action.h" +// Geant4 headers +#include "G4Threading.hh" + // C/C++ include files #include <map> #include <string> #include <typeinfo> +#include <pthread.h> // Forward declarations class G4RunManager; @@ -52,6 +56,8 @@ namespace DD4hep { class Geant4StackingActionSequence; class Geant4GeneratorActionSequence; class Geant4PhysicsListActionSequence; + class Geant4DetectorConstructionSequence; + class Geant4UserInitializationSequence; class Geant4SensDetActionSequence; class Geant4SensDetSequences; @@ -64,6 +70,7 @@ namespace DD4hep { class Geant4Kernel { public: typedef DD4hep::Geometry::LCDD LCDD; + typedef std::map<unsigned long, Geant4Kernel*> Workers; typedef std::map<std::string, Geant4ActionPhase*> Phases; typedef std::map<std::string, Geant4Action*> GlobalActions; @@ -71,30 +78,38 @@ namespace DD4hep { /// Reference to the run manager G4RunManager* m_runManager; /// Top level control directory - G4UIdirectory* m_control; + G4UIdirectory* m_control; /// Property pool - PropertyManager m_properties; + PropertyManager m_properties; /// Reference to the Geant4 primary generator action - Geant4GeneratorActionSequence* m_generatorAction; + Geant4GeneratorActionSequence* m_generatorAction; /// Reference to the Geant4 run action - Geant4RunActionSequence* m_runAction; + Geant4RunActionSequence* m_runAction; /// Reference to the Geant4 event action - Geant4EventActionSequence* m_eventAction; + Geant4EventActionSequence* m_eventAction; /// Reference to the Geant4 track action - Geant4TrackingActionSequence* m_trackingAction; + Geant4TrackingActionSequence* m_trackingAction; /// Reference to the Geant4 step action - Geant4SteppingActionSequence* m_steppingAction; + Geant4SteppingActionSequence* m_steppingAction; /// Reference to the Geant4 stacking action - Geant4StackingActionSequence* m_stackingAction; + Geant4StackingActionSequence* m_stackingAction; + /// Reference to the Geant4 detector construction sequence + Geant4DetectorConstructionSequence* m_constructionAction; + /// Reference to the Geant4 sensitive action sequences - Geant4SensDetSequences* m_sensDetActions; - /// Reference to the geant4 physics list - Geant4PhysicsListActionSequence* m_physicsList; + Geant4SensDetSequences* m_sensDetActions; + /// Reference to the Geant4 physics list + Geant4PhysicsListActionSequence* m_physicsList; + /// Reference to the user initialization object + Geant4UserInitializationSequence* m_userInit; + /// Reference to Geant4 track manager G4TrackingManager* m_trackMgr; /// Action phases - Phases m_phases; + Phases m_phases; + /// Worker threads + Workers m_workers; /// Globally registered actions GlobalActions m_globalActions; /// Globally registered filters of sensitive detectors @@ -112,12 +127,40 @@ namespace DD4hep { /// Property: Client output levels typedef std::map<std::string,int> ClientOutputLevels; ClientOutputLevels m_clientLevels; + + /// Property: Running in multi threaded context + //bool m_multiThreaded; + /// Master property: Number of execution threads in multi threaded mode. + int m_numThreads; + /// Flag: Master instance (id<0) or worker (id >= 0) + unsigned long m_id, m_ident; + /// Parent reference + Geant4Kernel* m_master; + Geant4Context* m_threadContext; + + bool isMaster() const { return this == m_master; } + bool isWorker() const { return this != m_master; } + /// Helper to register an action sequence template <typename C> bool registerSequence(C*& seq, const std::string& name); +#ifndef __CINT__ + /// Standard constructor for workers + Geant4Kernel(LCDD& lcdd, Geant4Kernel* m, unsigned long identifier); +#endif + public: - /// Standard constructor + /// Standard constructor for the master instance Geant4Kernel(LCDD& lcdd); + + /// Thread's master context + Geant4Context* workerContext(); + + /// Thread's master context + Geant4Kernel& master() const { return *m_master; } + + //bool isMultiThreaded() const { return m_multiThreaded; } + bool isMultiThreaded() const { return m_numThreads > 0; } public: /// Embedded helper class to facilitate map access to the phases. @@ -145,6 +188,7 @@ namespace DD4hep { }; /// Default destructor virtual ~Geant4Kernel(); + #ifndef __CINT__ /// Instance accessor static Geant4Kernel& instance(LCDD& lcdd); @@ -173,12 +217,16 @@ namespace DD4hep { void setTrackMgr(G4TrackingManager* mgr) { m_trackMgr = mgr; } - /// Access to the Geant4 run manager - G4RunManager& runManager(); /// Access the command directory const std::string& directoryName() const { return m_controlName; } + /// Access worker identifier + unsigned long id() const { + return m_ident; + } + /// Access to the Geant4 run manager + G4RunManager& runManager(); /// Declare property template <typename T> Geant4Kernel& declareProperty(const std::string& nam, T& val); /// Declare property @@ -288,6 +336,13 @@ namespace DD4hep { return *stackingAction(true); } + /// Access detector construcion action sequence (geometry+sensitives+field) + Geant4DetectorConstructionSequence* detectorConstruction(bool create); + /// Access detector construcion action sequence (geometry+sensitives+field) + Geant4DetectorConstructionSequence& detectorConstruction() { + return *detectorConstruction(true); + } + /// Access to the sensitive detector sequences from the kernel object Geant4SensDetSequences& sensitiveActions() const; /// Access to the sensitive detector action from the kernel object @@ -299,19 +354,33 @@ namespace DD4hep { Geant4PhysicsListActionSequence& physicsList() { return *physicsList(true); } + /// Access to the user initialization object + Geant4UserInitializationSequence* userInitialization(bool create); + /// Access to the user initialization object + Geant4UserInitializationSequence& userInitialization() { + return *userInitialization(true); + } /// Construct detector geometry using lcdd plugin void loadGeometry(const std::string& compact_file); + /** Geant4 Multi threading support */ + /// Create identified worker instance + Geant4Kernel& createWorker(); + /// Access worker instance by it's identifier + Geant4Kernel& worker(unsigned long thread_identifier); + /// Access number of workers + int numWorkers() const; + /// Run the simulation: Configure Geant4 - void configure(); + int configure(); /// Run the simulation: Initialize Geant4 - void initialize(); + int initialize(); /// Run the simulation: Simulate the number of events given by the property "NumEvents" - void run(); + int run(); /// Run the simulation: Simulate the number of events "num_events" and modify the property "NumEvents" - void runEvents(int num_events); + int runEvents(int num_events); /// Run the simulation: Terminate Geant4 - void terminate(); + int terminate(); /// Load XML file void loadXML(const char* fname); }; diff --git a/DDG4/include/DDG4/Geant4OutputAction.h b/DDG4/include/DDG4/Geant4OutputAction.h index 4d19c8f30..b7ebfdbb3 100644 --- a/DDG4/include/DDG4/Geant4OutputAction.h +++ b/DDG4/include/DDG4/Geant4OutputAction.h @@ -64,6 +64,8 @@ namespace DD4hep { Geant4OutputAction(Geant4Context* c, const std::string& nam); /// Default destructor virtual ~Geant4OutputAction(); + /// Set or update client for the use in a new thread fiber + virtual void configureFiber(Geant4Context* ctxt); /// begin-of-event callback virtual void begin(const G4Event* event); diff --git a/DDG4/include/DDG4/Geant4ParticleHandler.h b/DDG4/include/DDG4/Geant4ParticleHandler.h index a129a7f4d..e18be8ef9 100644 --- a/DDG4/include/DDG4/Geant4ParticleHandler.h +++ b/DDG4/include/DDG4/Geant4ParticleHandler.h @@ -80,6 +80,7 @@ namespace DD4hep { protected: + /** Property variables used to configure the object */ /// Property: Steer printout at tracking action begin bool m_printStartTracking; /// Property: Steer printout at tracking action end @@ -90,21 +91,24 @@ namespace DD4hep { bool m_ownsParticles; /// Property: Energy cut below which particles are not collected, but assigned to the parent double m_kinEnergyCut; + /// Property: All the processes of which the decay products will be explicitly stored + Processes m_processNames; - /// Global particle identifier. Obtained at the begin of the event. - int m_globalParticleID; + /** Object variables, which are constant after initialization */ /// User action pointer Geant4UserParticleHandler* m_userHandler; + + /** EVENT DEPENDENT: variables containing data depending on the current event. */ + /// Global particle identifier. Obtained at the begin of the event. + int m_globalParticleID; /// Primary map Geant4PrimaryMap* m_primaryMap; /// Local buffer about the 'current' G4Track - Particle m_currTrack; + Particle m_currTrack; /// Map with stored MC Particles - ParticleMap m_particleMap; + ParticleMap m_particleMap; /// Map associating the G4Track identifiers with identifiers of existing MCParticles - TrackEquivalents m_equivalentTracks; - /// All the processes of which the decay products will be explicitly stored - Processes m_processNames; + TrackEquivalents m_equivalentTracks; /// Recombine particles and associate the to parents with cleanup int recombineParents(); diff --git a/DDG4/include/DDG4/Geant4RunAction.h b/DDG4/include/DDG4/Geant4RunAction.h index ed065e532..4d14b02fa 100644 --- a/DDG4/include/DDG4/Geant4RunAction.h +++ b/DDG4/include/DDG4/Geant4RunAction.h @@ -27,6 +27,11 @@ namespace DD4hep { /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { + // Forward declarations + class Geant4RunAction; + class Geant4SharedRunAction; + class Geant4RunActionSequence; + /// Concrete basic implementation of the Geant4 run action base class. /** * The Run Action is called once per start and end of a run. @@ -39,6 +44,8 @@ namespace DD4hep { * \ingroup DD4HEP_SIMULATION */ class Geant4RunAction: public Geant4Action { + public: + typedef Geant4SharedRunAction shared_type; public: /// Standard constructor Geant4RunAction(Geant4Context* context, const std::string& nam); @@ -50,6 +57,38 @@ namespace DD4hep { virtual void end(const G4Run* run); }; + /// Implementation of the Geant4 shared run action + /** + * Wrapper to share single instances of run actions for + * multi-threaded purposes. The wrapper ensures the locking + * of the basic actions to avoid race conditions. + * + * Shared action should be 'fast'. The global lock otherwise + * inhibits the efficient use of the multiple threads. + * + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_SIMULATION + */ + class Geant4SharedRunAction : public Geant4RunAction { + protected: + /// Reference to the shared action + Geant4RunAction* m_action; + public: + /// Standard constructor + Geant4SharedRunAction(Geant4Context* context, const std::string& nam); + /// Default destructor + virtual ~Geant4SharedRunAction(); + /// Set or update client for the use in a new thread fiber + virtual void configureFiber(Geant4Context* thread_context); + /// Underlying object to be used during the execution of this thread + virtual void use(Geant4RunAction* action); + /// Begin-of-run callback + virtual void begin(const G4Run* run); + /// End-of-run callback + virtual void end(const G4Run* run); + }; + /// Concrete basic implementation of the Geant4 run action sequencer. /** * Concrete implementation of the Geant4 run action sequence. @@ -57,6 +96,10 @@ namespace DD4hep { * of a run to all registered Geant4RunAction members and all * registered callbacks. * + * Note Multi-Threading issue: + * Callbacks and the action list is protected against multiple + * threads calling the Geant4 callbacks! + * * \author M.Frank * \version 1.0 * \ingroup DD4HEP_SIMULATION @@ -74,6 +117,12 @@ namespace DD4hep { Geant4RunActionSequence(Geant4Context* context, const std::string& nam); /// Default destructor virtual ~Geant4RunActionSequence(); + /// Set or update client context + virtual void updateContext(Geant4Context* ctxt); + /// Set or update client for the use in a new thread fiber + virtual void configureFiber(Geant4Context* thread_context); + /// Get an action by name + Geant4RunAction* get(const std::string& name) const; /// Register begin-of-run callback. Types Q and T must be polymorph! template <typename Q, typename T> void callAtBegin(Q* p, void (T::*f)(const G4Run*)) { diff --git a/DDG4/include/DDG4/Geant4SensDetAction.h b/DDG4/include/DDG4/Geant4SensDetAction.h index 91c0faff2..c6bba4499 100644 --- a/DDG4/include/DDG4/Geant4SensDetAction.h +++ b/DDG4/include/DDG4/Geant4SensDetAction.h @@ -319,6 +319,9 @@ namespace DD4hep { return m_sensitiveType; } + /// Set or update client context + virtual void updateContext(Geant4Context* ctxt); + /// Called at construction time of the sensitive detector to declare all hit collections size_t defineCollections(Geant4ActionSD* sens_det); @@ -395,6 +398,11 @@ namespace DD4hep { /** * Concrete implementation of the sensitive detector action sequence * + * Note Multi-Threading issue: + * Neither callbacks not the action list is protected against multiple + * threads calling the Geant4 callbacks! + * These must be protected in the user actions themselves. + * * \author M.Frank * \version 1.0 * \ingroup DD4HEP_SIMULATION @@ -442,7 +450,7 @@ namespace DD4hep { * * Users may override any of the templated callbacks or the of the virtual functions * of the base class using explicit template specialization. - * An example may be found in DDG4/plugins/eant4SDActions. + * An example may be found in DDG4/plugins/Geant4SDActions. * * \author M.Frank * \version 1.0 @@ -453,9 +461,10 @@ namespace DD4hep { typedef T UserData; protected: /// Collection identifier - size_t m_collectionID; + size_t m_collectionID; /// User data block - UserData m_userData; + UserData m_userData; + public: /// Standard , initializing constructor Geant4SensitiveAction(Geant4Context* context, @@ -465,9 +474,9 @@ namespace DD4hep { /// Default destructor virtual ~Geant4SensitiveAction(); /// Initialization overload for specialization - void initialize(); + virtual void initialize(); /// Finalization overload for specialization - void finalize(); + virtual void finalize(); /// Define collections created by this sensitivie action object virtual void defineCollections() {} /// G4VSensitiveDetector interface: Method invoked at the begining of each event. diff --git a/DDG4/include/DDG4/Geant4StackingAction.h b/DDG4/include/DDG4/Geant4StackingAction.h index 4c05ffe5d..95e492840 100644 --- a/DDG4/include/DDG4/Geant4StackingAction.h +++ b/DDG4/include/DDG4/Geant4StackingAction.h @@ -23,6 +23,11 @@ namespace DD4hep { /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { + // Forward declarations + class Geant4StackingAction; + class Geant4SharedStackingAction; + class Geant4StackingActionSequence; + /// Concrete implementation of the Geant4 stacking action base class /** * \author M.Frank @@ -30,6 +35,8 @@ namespace DD4hep { * \ingroup DD4HEP_SIMULATION */ class Geant4StackingAction: public Geant4Action { + public: + typedef Geant4SharedStackingAction shared_type; public: /// Standard constructor Geant4StackingAction(Geant4Context* ctxt, const std::string& name); @@ -43,12 +50,49 @@ namespace DD4hep { } }; + /// Implementation of the Geant4 shared stacking action + /** + * Wrapper to share single instances of stacking actions for + * multi-threaded purposes. The wrapper ensures the locking + * of the basic actions to avoid race conditions. + * + * Shared action should be 'fast'. The global lock otherwise + * inhibits the efficient use of the multiple threads. + * + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_SIMULATION + */ + class Geant4SharedStackingAction : public Geant4StackingAction { + protected: + /// Reference to the shared action + Geant4StackingAction* m_action; + public: + /// Standard constructor + Geant4SharedStackingAction(Geant4Context* context, const std::string& nam); + /// Default destructor + virtual ~Geant4SharedStackingAction(); + /// Set or update client for the use in a new thread fiber + virtual void configureFiber(Geant4Context* thread_context); + /// Underlying object to be used during the execution of this thread + virtual void use(Geant4StackingAction* action); + /// New-stage callback + virtual void newStage(); + /// Preparation callback + virtual void prepare(); + }; + /// Concrete implementation of the Geant4 stacking action sequence /** * The sequence dispatches the callbacks for each stepping action * to all registered Geant4StackingAction members and all * registered callbacks. * + * Note Multi-Threading issue: + * Neither callbacks not the action list is protected against multiple + * threads calling the Geant4 callbacks! + * These must be protected in the user actions themselves. + * * \author M.Frank * \version 1.0 * \ingroup DD4HEP_SIMULATION @@ -66,6 +110,12 @@ namespace DD4hep { Geant4StackingActionSequence(Geant4Context* ctxt, const std::string& name); /// Default destructor virtual ~Geant4StackingActionSequence(); + /// Set or update client context + virtual void updateContext(Geant4Context* ctxt); + /// Set or update client for the use in a new thread fiber + virtual void configureFiber(Geant4Context* thread_context); + /// Get an action by name + Geant4StackingAction* get(const std::string& name) const; /// Register begin-of-event callback. Types Q and T must be polymorph! template <typename T> void callAtNewStage(T* p, void (T::*f)()) { m_newStage.add(p, f); diff --git a/DDG4/include/DDG4/Geant4SteppingAction.h b/DDG4/include/DDG4/Geant4SteppingAction.h index 39a8fcc13..b1d2087a3 100644 --- a/DDG4/include/DDG4/Geant4SteppingAction.h +++ b/DDG4/include/DDG4/Geant4SteppingAction.h @@ -27,6 +27,11 @@ namespace DD4hep { /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { + // Forward declarations + class Geant4SteppingAction; + class Geant4SharedSteppingAction; + class Geant4SteppingActionSequence; + /// Concrete implementation of the Geant4 stepping action sequence /** * \author M.Frank @@ -34,6 +39,8 @@ namespace DD4hep { * \ingroup DD4HEP_SIMULATION */ class Geant4SteppingAction: public Geant4Action { + public: + typedef Geant4SharedSteppingAction shared_type; public: /// Standard constructor Geant4SteppingAction(Geant4Context* context, const std::string& name); @@ -43,12 +50,47 @@ namespace DD4hep { virtual void operator()(const G4Step* step, G4SteppingManager* mgr); }; + /// Implementation of the Geant4 shared stepping action + /** + * Wrapper to share single instances of stepping actions for + * multi-threaded purposes. The wrapper ensures the locking + * of the basic actions to avoid race conditions. + * + * Shared action should be 'fast'. The global lock otherwise + * inhibits the efficient use of the multiple threads. + * + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_SIMULATION + */ + class Geant4SharedSteppingAction : public Geant4SteppingAction { + protected: + /// Reference to the shared action + Geant4SteppingAction* m_action; + public: + /// Standard constructor + Geant4SharedSteppingAction(Geant4Context* context, const std::string& nam); + /// Default destructor + virtual ~Geant4SharedSteppingAction(); + /// Set or update client for the use in a new thread fiber + virtual void configureFiber(Geant4Context* thread_context); + /// Underlying object to be used during the execution of this thread + virtual void use(Geant4SteppingAction* action); + /// User stepping callback + virtual void operator()(const G4Step* step, G4SteppingManager* mgr); + }; + /// Concrete implementation of the Geant4 stepping action sequence /** * The sequence dispatches the callbacks for each stepping action * to all registered Geant4SteppingAction members and all * registered callbacks. * + * Note Multi-Threading issue: + * Neither callbacks not the action list is protected against multiple + * threads calling the Geant4 callbacks! + * These must be protected in the user actions themselves. + * * \author M.Frank * \version 1.0 * \ingroup DD4HEP_SIMULATION @@ -65,6 +107,12 @@ namespace DD4hep { Geant4SteppingActionSequence(Geant4Context* context, const std::string& name); /// Default destructor virtual ~Geant4SteppingActionSequence(); + /// Set or update client context + virtual void updateContext(Geant4Context* ctxt); + /// Set or update client for the use in a new thread fiber + virtual void configureFiber(Geant4Context* thread_context); + /// Get an action by name + Geant4SteppingAction* get(const std::string& name) const; /// Register stepping action callback. Types Q and T must be polymorph! template <typename Q, typename T> void call(Q* p, void (T::*f)(const G4Step*, G4SteppingManager*)) { diff --git a/DDG4/include/DDG4/Geant4TrackingAction.h b/DDG4/include/DDG4/Geant4TrackingAction.h index 23390de42..2537b33da 100644 --- a/DDG4/include/DDG4/Geant4TrackingAction.h +++ b/DDG4/include/DDG4/Geant4TrackingAction.h @@ -29,6 +29,9 @@ namespace DD4hep { // Forward declarations class Geant4TrackInformation; + class Geant4TrackingAction; + class Geant4SharedTrackingAction; + class Geant4TrackingActionSequence; /// Default base class for all geant 4 tracking actions used in DDG4. /** @@ -37,6 +40,8 @@ namespace DD4hep { * \ingroup DD4HEP_SIMULATION */ class Geant4TrackingAction: public Geant4Action { + public: + typedef Geant4SharedTrackingAction shared_type; public: /// Standard constructor Geant4TrackingAction(Geant4Context* context, const std::string& name = ""); @@ -44,28 +49,59 @@ namespace DD4hep { virtual ~Geant4TrackingAction(); /// Access the Geant4 tracking manager. Only use between tracking pre- and post action G4TrackingManager* trackMgr() const { - return m_context.trackMgr(); + return m_context ? m_context->trackMgr() : 0; } /// Mark the track to be kept for MC truth propagation void mark(const G4Track* track) const; - /// Get the valid Geant4 tarck information - Geant4TrackInformation* trackInfo(G4Track* track) const; - /// Mark all children of the track to be stored - bool storeChildren() const; - /// Mark a single child of the track to be stored - bool storeChild(Geant4TrackInformation* info) const; /// Pre-track action callback virtual void begin(const G4Track* track); /// Post-track action callback virtual void end(const G4Track* track); }; + /// Implementation of the Geant4 shared track action + /** + * Wrapper to share single instances of track actions for + * multi-threaded purposes. The wrapper ensures the locking + * of the basic actions to avoid race conditions. + * + * Shared action should be 'fast'. The global lock otherwise + * inhibits the efficient use of the multiple threads. + * + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_SIMULATION + */ + class Geant4SharedTrackingAction : public Geant4TrackingAction { + protected: + /// Reference to the shared action + Geant4TrackingAction* m_action; + public: + /// Standard constructor + Geant4SharedTrackingAction(Geant4Context* context, const std::string& nam); + /// Default destructor + virtual ~Geant4SharedTrackingAction(); + /// Set or update client for the use in a new thread fiber + virtual void configureFiber(Geant4Context* thread_context); + /// Underlying object to be used during the execution of this thread + virtual void use(Geant4TrackingAction* action); + /// Begin-of-track callback + virtual void begin(const G4Track* track); + /// End-of-track callback + virtual void end(const G4Track* track); + }; + /// Concrete implementation of the Geant4 tracking action sequence /** * The sequence dispatches the callbacks for each tracking action * to all registered Geant4SteppingAction members and all * registered callbacks. * + * Note Multi-Threading issue: + * Neither callbacks not the action list is protected against multiple + * threads calling the Geant4 callbacks! + * These must be protected in the user actions themselves. + * * \author M.Frank * \version 1.0 * \ingroup DD4HEP_SIMULATION @@ -87,6 +123,12 @@ namespace DD4hep { Geant4TrackingActionSequence(Geant4Context* context, const std::string& name); /// Default destructor virtual ~Geant4TrackingActionSequence(); + /// Set or update client context + virtual void updateContext(Geant4Context* ctxt); + /// Set or update client for the use in a new thread fiber + virtual void configureFiber(Geant4Context* thread_context); + /// Get an action by name + Geant4TrackingAction* get(const std::string& name) const; /// Register Pre-track action callback before anything else template <typename Q, typename T> void callUpFront(Q* p, void (T::*f)(const G4Track*), diff --git a/DDG4/include/DDG4/Geant4UserInitialization.h b/DDG4/include/DDG4/Geant4UserInitialization.h new file mode 100644 index 000000000..0e91f50b4 --- /dev/null +++ b/DDG4/include/DDG4/Geant4UserInitialization.h @@ -0,0 +1,88 @@ +// $Id$ +//========================================================================== +// AIDA Detector description implementation for LCD +//-------------------------------------------------------------------------- +// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) +// All rights reserved. +// +// For the licensing terms see $DD4hepINSTALL/LICENSE. +// For the list of contributors see $DD4hepINSTALL/doc/CREDITS. +// +// Author : M.Frank +// +//========================================================================== +#ifndef DD4HEP_DDG4_GEANT4USERINITIALIZATION_H +#define DD4HEP_DDG4_GEANT4USERINITIALIZATION_H + +// Framework include files +#include "DDG4/Geant4Action.h" + +// Forward declarations + +/// Namespace for the AIDA detector description toolkit +namespace DD4hep { + + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit + namespace Simulation { + + /// Base class to initialize a multi-threaded or single threaded Geant4 application + /** + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_SIMULATION + */ + class Geant4UserInitialization : public Geant4Action { + protected: + public: + /// Standard constructor + Geant4UserInitialization(Geant4Context* c, const std::string& nam); + /// Default destructor + virtual ~Geant4UserInitialization(); + /// Callback function to build setup for the MT worker thread + virtual void build() const; + /// Callback function to build setup for the MT master thread + virtual void buildMaster() const; + }; + + /// Class to orchestrate a modular initializion of a multi- or single threaded Geant4 application + /** + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_SIMULATION + */ + class Geant4UserInitializationSequence : public Geant4UserInitialization { + protected: + /// Callback sequence to initialize the thread master + CallbackSequence m_masterCalls; + /// Callback sequence to initialize worker elements + CallbackSequence m_workerCalls; + /// The list of action objects to be called + Actors<Geant4UserInitialization> m_actors; + + public: + /// Standard constructor + Geant4UserInitializationSequence(Geant4Context* c, const std::string& nam); + /// Default destructor + virtual ~Geant4UserInitializationSequence(); + /// Register callback to setup worker. Types Q and T must be polymorph! + template <typename Q, typename T> void build(Q* p, void (T::*f)()) { + m_workerCalls.add(p, f); + } + /// Register callback to setup master. Types Q and T must be polymorph! + template <typename Q, typename T> void buildMaster(Q* p, void (T::*f)()) { + m_masterCalls.add(p, f); + } + /// Add an actor responding to all callbacks. Sequence takes ownership. + void adopt(Geant4UserInitialization* action); + + /// Set client context + virtual void updateContext(Geant4Context* ctxt); + /// Callback function to build setup for the MT worker thread + virtual void build() const; + /// Callback function to build setup for the MT master thread + virtual void buildMaster() const; + }; + + } // End namespace Simulation +} // End namespace DD4hep +#endif // DD4HEP_DDG4_GEANT4USERINITIALIZATION_H diff --git a/DDG4/include/DDG4Python/DDPython.h b/DDG4/include/DDG4Python/DDPython.h new file mode 100644 index 000000000..1e165431d --- /dev/null +++ b/DDG4/include/DDG4Python/DDPython.h @@ -0,0 +1,97 @@ +// AIDA Detector description implementation for LCD +//-------------------------------------------------------------------------- +// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) +// All rights reserved. +// +// For the licensing terms see $DD4hepINSTALL/LICENSE. +// For the list of contributors see $DD4hepINSTALL/doc/CREDITS. +// +// \author Markus Frank +// \date 2015-11-07 +// +//========================================================================== +// $Id$ +#ifndef DD4HEP_DDG4_DDPYTHON_H +#define DD4HEP_DDG4_DDPYTHON_H 1 + +// C/C++ include files +#include <string> +#include "TPyReturn.h" + +/// Namespace for the AIDA detector description toolkit +namespace DD4hep { + + struct DDPythonGlobalState; + + /** @class DDPython DDPython.h DDG4/DDPython.h */ + class DDPython { + private: + void* context; + /// Standard constructor + DDPython( ); + protected: + static bool isMainThread(); + public: + struct GILState { + int state; + explicit GILState(int); + ~GILState(); + }; + struct BlockThreads { + explicit BlockThreads(int); + ~BlockThreads(); + }; + struct AllowThreads { + explicit AllowThreads(int); + ~AllowThreads(); + }; + + /// Save thread state + static void allowThreads(); + static void restoreThread(); + /// Object instantiator + static DDPython instance(); + static void shutdown(); + static void setMainThread(); + /// Release python object + static void releaseObject(PyObject*& obj); + /// Release python object + static void assignObject(PyObject*& obj, PyObject* new_obj); + + /// Copy constructor + DDPython(const DDPython& ) {} + /// Destructor + ~DDPython( ); + int setArgs(int argc, char** argv) const; + int runFile(const std::string& fname) const; + int execute(const std::string& cmd) const; + int evaluate(const std::string& cmd) const; + + /// Call a python object with argument (typically a dictionary) + /** Note: + * - Typical call from python -> C -> python + * - Errors are printed and then cleared. A return code of NULL is passed + * to the caller in the event of an error condition + * - The returned object is NOT owned by the caller. + * - No GIL state handling by the caller necessary + */ + PyObject* call(PyObject* method, PyObject* args); + /// Call a python object with argument (typically a dictionary). + /** Note: + * - Typical call from C -> python -> C + * - Errors are printed and then cleared. A return code of NULL is passed + * to the caller in the event of an error condition + * - The returned object TPyReturn must be destructed (ie. leave scope) + * BEFORE the GIL is released. + * - The caller MUST ensure the GIL state in case of multi-threading! + */ + TPyReturn callC(PyObject* method, PyObject* args); + /// Invoke command prompt + void prompt() const; + void afterFork() const; + private: + + }; +} + +#endif // DD4HEP_DDG4_DDPYTHON_H diff --git a/DDG4/include/DDG4Python/Geant4PythonAction.h b/DDG4/include/DDG4Python/Geant4PythonAction.h new file mode 100644 index 000000000..5649770ad --- /dev/null +++ b/DDG4/include/DDG4Python/Geant4PythonAction.h @@ -0,0 +1,54 @@ +// AIDA Detector description implementation for LCD +//-------------------------------------------------------------------------- +// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) +// All rights reserved. +// +// For the licensing terms see $DD4hepINSTALL/LICENSE. +// For the list of contributors see $DD4hepINSTALL/doc/CREDITS. +// +// \author Markus Frank +// \date 2015-11-03 +// +//========================================================================== +// $Id$ +#ifndef DD4HEP_DDG4_GEANT4PYTHONACTION_H +#define DD4HEP_DDG4_GEANT4PYTHONACTION_H + +// Framework include files +#include "DDG4/Geant4Action.h" +#include "TPyReturn.h" + +/// Namespace for the AIDA detector description toolkit +namespace DD4hep { + + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit + namespace Simulation { + + /// Base class to initialize a multi-threaded or single threaded Geant4 application + /** + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_SIMULATION + */ + class Geant4PythonAction : public Geant4Action { + public: + /// Standard constructor + Geant4PythonAction(Geant4Context* ctx, const std::string& nam); + /// Default destructor + virtual ~Geant4PythonAction() {} + + /** Public class methods */ + /// Execute command in the python interpreter. + static int call(PyObject* method, PyObject* args); + /// Execute command in the python interpreter. + static int exec(const std::string& cmd); + /// Execute command in the python interpreter. + static int eval(const std::string& cmd); + /// Execute command in the python interpreter. + static int runFile(const std::string& cmd); + /// Invoke command prompt + static void prompt(); + }; + } // End namespace Simulation +} // End namespace DD4hep +#endif // DD4HEP_DDG4_GEANT4PYTHONACTION_H diff --git a/DDG4/include/DDG4Python/Geant4PythonCall.h b/DDG4/include/DDG4Python/Geant4PythonCall.h new file mode 100644 index 000000000..7fce64f2b --- /dev/null +++ b/DDG4/include/DDG4Python/Geant4PythonCall.h @@ -0,0 +1,63 @@ +// AIDA Detector description implementation for LCD +//-------------------------------------------------------------------------- +// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) +// All rights reserved. +// +// For the licensing terms see $DD4hepINSTALL/LICENSE. +// For the list of contributors see $DD4hepINSTALL/doc/CREDITS. +// +// \author Markus Frank +// \date 2015-11-03 +// +//========================================================================== +// $Id$ +#ifndef DD4HEP_DDG4_GEANT4PYTHONCALL_H +#define DD4HEP_DDG4_GEANT4PYTHONCALL_H + +// ROOT include files +#include "TPyReturn.h" + +/// Namespace for the AIDA detector description toolkit +namespace DD4hep { + + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit + namespace Simulation { + + /// Base class to initialize a multi-threaded or single threaded Geant4 application + /** + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_SIMULATION + */ + class Geant4PythonCall { + /// Python callable reference + PyObject* m_callable; + /// Python arguments object + PyObject* m_arguments; + + public: + /// Standard constructor + Geant4PythonCall(); + /// Default destructor + virtual ~Geant4PythonCall(); + + /// Check if call is set + bool isValid() const { return m_callable != 0; } + + /// Execute command in the python interpreter. + template <typename RETURN> RETURN execute() const; + + /// Execute command in the python interpreter. + template <typename RETURN> RETURN execute(PyObject* callable) const; + + /// Execute command in the python interpreter. + template <typename RETURN> RETURN execute(PyObject* callable, PyObject* args) const; + + /// Set the callback structures for callbacks with arguments + void set(PyObject* callable, PyObject* args); + /// Set the callback structures for callbacks without arguments + void set(PyObject* callable); + }; + } // End namespace Simulation +} // End namespace DD4hep +#endif // DD4HEP_DDG4_GEANT4PYTHONCALL_H diff --git a/DDG4/include/DDG4Python/Geant4PythonDetectorConstruction.h b/DDG4/include/DDG4Python/Geant4PythonDetectorConstruction.h new file mode 100644 index 000000000..832b0427d --- /dev/null +++ b/DDG4/include/DDG4Python/Geant4PythonDetectorConstruction.h @@ -0,0 +1,95 @@ +// AIDA Detector description implementation for LCD +//-------------------------------------------------------------------------- +// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) +// All rights reserved. +// +// For the licensing terms see $DD4hepINSTALL/LICENSE. +// For the list of contributors see $DD4hepINSTALL/doc/CREDITS. +// +// \author Markus Frank +// \date 2015-11-03 +// +//========================================================================== +// $Id$ +#ifndef DD4HEP_DDG4_GEANT4PYTHONDETECTORCONSTRUCTION_H +#define DD4HEP_DDG4_GEANT4PYTHONDETECTORCONSTRUCTION_H + +// Framework include files +#include "DDG4/Geant4DetectorConstruction.h" +#include "DDG4Python/Geant4PythonCall.h" + +/// Namespace for the AIDA detector description toolkit +namespace DD4hep { + + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit + namespace Simulation { + + /// Base class to initialize a multi-threaded or single threaded Geant4 application + /** + * Geant4PythonDetectorConstruction is the corresponding + * python action to populate the detector construction sequencer. + * and supports three ccallbacks: + * + * // Set the Detector initialization command + * void setConstructGeo(PyObject* callable, PyObject* args); + * // Set the field initialization command + * void setConstructField(PyObject* callable, PyObject* args); + * // Set the sensitive detector initialization command + * void setConstructSensitives(PyObject* callable, PyObject* args); + * + * to be used in python as call sequence within the master thread: + * + * init_seq = self.master().detectorConstruction(True) + * init_action = DetectorConstruction(self.master(),name_type) + * init_action.setConstructGeo(geometry_setup_call, < geometry_args > ) + * init_action.setConstructField(field_setup_call, < field_args > ) + * init_action.setConstructSensitives(sensitives_setup_call, < sensitives_args >) + * init_seq.adopt(init_action) + * + * If any of the three callback is not set, the corresponding actiion is not executed. + * Hereby are geometry_setup_call, field_setup_call and sensitives\_setup\_call + * the callable objects to configure the geometry, the tracking field + * and the sensitive detectors. + * < geometry_args >, < field_args > and < sensitives\_args > are + * the corresponding callable arguments in the form of a python tuple object. + * + * All python callbacks are supposed to return the integer '1' on success. + * Any other return code is assumed to be failure. + * + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_SIMULATION + */ + class Geant4PythonDetectorConstruction : public Geant4DetectorConstruction { + protected: + /// Sensitive detector initialization command. Default: empty + Geant4PythonCall m_constructSD; + /// Field initialization command. Default: empty + Geant4PythonCall m_constructFLD; + /// Geometry initialization command. Default: empty + Geant4PythonCall m_constructGEO; + /// Execute command in the python interpreter + void exec(const std::string& desc, const Geant4PythonCall& cmd) const; + + public: + /// Standard constructor + Geant4PythonDetectorConstruction(Geant4Context* c, const std::string& nam); + /// Default destructor + virtual ~Geant4PythonDetectorConstruction() {} + /// Set the Detector initialization command + void setConstructGeo(PyObject* callable, PyObject* args); + /// Set the field initialization command + void setConstructField(PyObject* callable, PyObject* args); + /// Set the sensitive detector initialization command + void setConstructSensitives(PyObject* callable, PyObject* args); + /// Geometry construction callback. Called at "Construct()" + virtual void constructGeo(Geant4DetectorConstructionContext* ctxt); + /// Electromagnetic field construction callback. Called at "ConstructSDandField()" + virtual void constructField(Geant4DetectorConstructionContext* ctxt); + /// Sensitive detector construction callback. Called at "ConstructSDandField()" + virtual void constructSensitives(Geant4DetectorConstructionContext* ctxt); + + }; + } // End namespace Simulation +} // End namespace DD4hep +#endif // DD4HEP_DDG4_GEANT4PYTHONDETECTORCONSTRUCTION_H diff --git a/DDG4/include/DDG4Python/Geant4PythonInitialization.h b/DDG4/include/DDG4Python/Geant4PythonInitialization.h new file mode 100644 index 000000000..3b64d9fb5 --- /dev/null +++ b/DDG4/include/DDG4Python/Geant4PythonInitialization.h @@ -0,0 +1,86 @@ +// AIDA Detector description implementation for LCD +//-------------------------------------------------------------------------- +// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) +// All rights reserved. +// +// For the licensing terms see $DD4hepINSTALL/LICENSE. +// For the list of contributors see $DD4hepINSTALL/doc/CREDITS. +// +// \author Markus Frank +// \date 2015-11-03 +// +//========================================================================== +// $Id$ +#ifndef DD4HEP_DDG4_GEANT4PYTHONINITIALIZATION_H +#define DD4HEP_DDG4_GEANT4PYTHONINITIALIZATION_H + +// Framework include files +#include "DDG4/Geant4UserInitialization.h" +#include "DDG4Python/Geant4PythonCall.h" + +/// Namespace for the AIDA detector description toolkit +namespace DD4hep { + + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit + namespace Simulation { + + /// Base class to initialize a multi-threaded or single threaded Geant4 application + /** + * Geant4PythonInitialization allows to configure python callbacks + * for the master and the worker thread setup using the calls: + * + * /// Set the Detector initialization command + * void setMasterSetup(PyObject* callable, PyObject* args); + * /// Set the field initialization command + * void setWorkerSetup(PyObject* callable, PyObject* args); + * + * or in python as a call sequence within the master thread: + * + * init_seq = kernel.userInitialization(True) + * init_action = UserInitialization(kernel,'Geant4PythonInitialization/PyG4Init') + * init_action.setWorkerSetup(worker_setup_call, < worker_args > ) + * init_action.setMasterSetup(master_setup_call, < master_args > ) + * init_seq.adopt(init_action) + * + * The callback argument list worker_args and master_args + * are python tuples containing all arguments expected by the callbacks + * worker_setup_call and master_setup_call respecyively. + * The class Geant4PythonInitialization is a subclass of + * Geant4UserInitialization and will call the provided functions + * according to the protocol explained earlier in this section. + * + * All python callbacks are supposed to return the integer '1' on success. + * Any other return code is assumed to be failure. + * + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_SIMULATION + */ + class Geant4PythonInitialization : public Geant4UserInitialization { + protected: + /// Master initialization command. Default: empty + Geant4PythonCall m_masterSetup; + /// Worker initialization command. Default: empty + Geant4PythonCall m_workerSetup; + + /// Execute command in the python interpreter + void exec(const std::string& desc, const Geant4PythonCall& cmd) const; + + public: + /// Standard constructor + Geant4PythonInitialization(Geant4Context* c, const std::string& nam); + /// Default destructor + virtual ~Geant4PythonInitialization() {} + + /// Set the Detector initialization command + void setMasterSetup(PyObject* callable, PyObject* args); + /// Set the field initialization command + void setWorkerSetup(PyObject* callable, PyObject* args); + /// Callback function to build setup for the MT worker thread + virtual void build() const; + /// Callback function to build setup for the MT master thread + virtual void buildMaster() const; + }; + } // End namespace Simulation +} // End namespace DD4hep +#endif // DD4HEP_DDG4_GEANT4PYTHONINITIALIZATION_H diff --git a/DDG4/lcio/Geant4Output2LCIO.cpp b/DDG4/lcio/Geant4Output2LCIO.cpp index abbdf18d9..4ae43bf90 100644 --- a/DDG4/lcio/Geant4Output2LCIO.cpp +++ b/DDG4/lcio/Geant4Output2LCIO.cpp @@ -18,6 +18,9 @@ // Framework include files #include "DD4hep/VolumeManager.h" #include "DDG4/Geant4OutputAction.h" +// Geant4 headers +#include "G4Threading.hh" +#include "G4AutoLock.hh" #include "DD4hep/LCDD.h" #include <G4Version.hh> @@ -125,6 +128,9 @@ namespace DD4hep { using namespace DD4hep::Simulation; using namespace DD4hep; using namespace std; +namespace { + G4Mutex action_mutex=G4MUTEX_INITIALIZER; +} #include "DDG4/Factories.h" DECLARE_GEANT4ACTION(Geant4Output2LCIO) @@ -139,6 +145,7 @@ Geant4Output2LCIO::Geant4Output2LCIO(Geant4Context* ctxt, const string& nam) /// Default destructor Geant4Output2LCIO::~Geant4Output2LCIO() { + G4AutoLock protection_lock(&action_mutex); if ( m_file ) { m_file->close(); deletePtr(m_file); @@ -149,6 +156,7 @@ Geant4Output2LCIO::~Geant4Output2LCIO() { // Callback to store the Geant4 run information void Geant4Output2LCIO::beginRun(const G4Run* ) { if ( 0 == m_file && !m_output.empty() ) { + G4AutoLock protection_lock(&action_mutex); m_file = lcio::LCFactory::getInstance()->createLCWriter(); m_file->open(m_output,lcio::LCIO::WRITE_NEW); } @@ -162,12 +170,17 @@ void Geant4Output2LCIO::endRun(const G4Run* run) { /// Commit data at end of filling procedure void Geant4Output2LCIO::commit( OutputContext<G4Event>& /* ctxt */) { lcio::LCEventImpl* e = context()->event().extension<lcio::LCEventImpl>(); - m_file->writeEvent(e); - // std::cout << " ########### Geant4Output2LCIO::commit() : writing LCIO event to file .... " << std::endl ; + if ( m_file ) { + G4AutoLock protection_lock(&action_mutex); + m_file->writeEvent(e); + return; + } + except("+++ Failed to write output file. [Stream is not open]"); } /// Callback to store the Geant4 run information void Geant4Output2LCIO::saveRun(const G4Run* run) { + G4AutoLock protection_lock(&action_mutex); // --- write an lcio::RunHeader --------- lcio::LCRunHeaderImpl* rh = new lcio::LCRunHeaderImpl; for (std::map< std::string, std::string >::iterator it = m_runHeader.begin(); it != m_runHeader.end(); ++it) { diff --git a/DDG4/plugins/Geant4DetectorGeometryConstruction.cpp b/DDG4/plugins/Geant4DetectorGeometryConstruction.cpp new file mode 100644 index 000000000..4645b7ae0 --- /dev/null +++ b/DDG4/plugins/Geant4DetectorGeometryConstruction.cpp @@ -0,0 +1,114 @@ +// AIDA Detector description implementation for LCD +//-------------------------------------------------------------------------- +// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) +// All rights reserved. +// +// For the licensing terms see $DD4hepINSTALL/LICENSE. +// For the list of contributors see $DD4hepINSTALL/doc/CREDITS. +// +// \author Markus Frank +// \date 2015-11-09 +// +//========================================================================== +// $Id$ + +// Framework include files +#include "DDG4/Geant4DetectorConstruction.h" + +/// Namespace for the AIDA detector description toolkit +namespace DD4hep { + + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit + namespace Simulation { + + /// Class to create Geant4 detector geometry from TGeo representation in memory + /** + * On demand (ie. when calling "Construct") the DD4hep geometry is converted + * to Geant4 with all volumes, assemblies, shapes, materials etc. + * The actuak work is performed by the Geant4Converter class called by this method. + * + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_SIMULATION + */ + class Geant4DetectorGeometryConstruction : public Geant4DetectorConstruction { + /// Property: Dump geometry hierarchy + bool m_dumpHierarchy; + /// Property: G4 GDML dump file name (default: empty. If non empty, dump) + std::string m_dumpGDML; + + public: + /// Initializing constructor for DDG4 + Geant4DetectorGeometryConstruction(Geant4Context* ctxt, const std::string& nam); + /// Default destructor + virtual ~Geant4DetectorGeometryConstruction(); + /// Geometry construction callback. Called at "Construct()" + void constructGeo(Geant4DetectorConstructionContext* ctxt); + }; + } // End namespace Simulation +} // End namespace DD4hep + + +// Framework include files +#include "DD4hep/InstanceCount.h" +#include "DD4hep/Printout.h" +#include "DD4hep/LCDD.h" + +#include "DDG4/Geant4HierarchyDump.h" +#include "DDG4/Geant4Converter.h" +#include "DDG4/Geant4Kernel.h" +#include "DDG4/Factories.h" + +// Geant4 include files +#include "G4PVPlacement.hh" +#ifdef GEANT4_HAS_GDML +#include "G4GDMLParser.hh" +#endif + +using namespace std; +using namespace DD4hep; +using namespace DD4hep::Simulation; +DECLARE_GEANT4ACTION(Geant4DetectorGeometryConstruction) + +/// Initializing constructor for other clients +Geant4DetectorGeometryConstruction::Geant4DetectorGeometryConstruction(Geant4Context* ctxt, const string& nam) + : Geant4DetectorConstruction(ctxt,nam) +{ + declareProperty("DumpHierarchy", m_dumpHierarchy=false); + declareProperty("DumpGDML", m_dumpGDML=""); + InstanceCount::increment(this); +} + +/// Default destructor +Geant4DetectorGeometryConstruction::~Geant4DetectorGeometryConstruction() { + InstanceCount::decrement(this); +} + +/// Geometry construction callback. Called at "Construct()" +void Geant4DetectorGeometryConstruction::constructGeo(Geant4DetectorConstructionContext* ctxt) { + Geant4Mapping& g4map = Geant4Mapping::instance(); + Geometry::DetElement world = ctxt->lcdd.world(); + Geant4Converter conv(ctxt->lcdd, outputLevel()); + ctxt->geometry = conv.create(world).detach(); + g4map.attach(ctxt->geometry); + G4VPhysicalVolume* w = ctxt->geometry->world(); + ctxt->lcdd.apply("DD4hepVolumeManager", 0, 0); + // Create Geant4 volume manager + g4map.volumeManager(); + if ( m_dumpHierarchy ) { + Geant4HierarchyDump dmp(ctxt->lcdd); + dmp.dump("",w); + } +#ifdef GEANT4_HAS_GDML + const char* gdml_dmp = ::getenv("DUMP_GDML"); + if ( !m_dumpGDML.empty() || ) { + G4GDMLParser parser; + if ( !m_dumpGDML.empty() ) + parser.Write(m_dumpGDML.c_str(), w); + else if ( gdml_dmp ) + parser.Write(gdml_dmp, w); + } +#endif + ctxt->world = w; +} + diff --git a/DDG4/plugins/Geant4DetectorSensitivesConstruction.cpp b/DDG4/plugins/Geant4DetectorSensitivesConstruction.cpp new file mode 100644 index 000000000..70620c637 --- /dev/null +++ b/DDG4/plugins/Geant4DetectorSensitivesConstruction.cpp @@ -0,0 +1,123 @@ +// AIDA Detector description implementation for LCD +//-------------------------------------------------------------------------- +// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) +// All rights reserved. +// +// For the licensing terms see $DD4hepINSTALL/LICENSE. +// For the list of contributors see $DD4hepINSTALL/doc/CREDITS. +// +// \author Markus Frank +// \date 2015-11-09 +// +//========================================================================== +// $Id$ + +// Framework include files +#include "DDG4/Geant4DetectorConstruction.h" + +/// Namespace for the AIDA detector description toolkit +namespace DD4hep { + + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit + namespace Simulation { + + /// Class to create Geant4 detector geometry from TGeo representation in memory + /** + * On demand the sensitive detectors are created and attached to all sensitive + * volumes. The relevant callback is executed when the call to + * ConstructSDandField() of the corresponding G4VUserDetectorConstruction + * instance is called. The call is thread-local! + * + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_SIMULATION + */ + class Geant4DetectorSensitivesConstruction : public Geant4DetectorConstruction { + public: + /// Initializing constructor for DDG4 + Geant4DetectorSensitivesConstruction(Geant4Context* ctxt, const std::string& nam); + /// Default destructor + virtual ~Geant4DetectorSensitivesConstruction(); + /// Sensitives construction callback. Called at "ConstructSDandField()" + void constructSensitives(Geant4DetectorConstructionContext* ctxt); + }; + } // End namespace Simulation +} // End namespace DD4hep + + +// Framework include files +#include "DD4hep/InstanceCount.h" +#include "DD4hep/Printout.h" +#include "DD4hep/Plugins.h" +#include "DD4hep/LCDD.h" + +#include "DDG4/Geant4Mapping.h" +#include "DDG4/Factories.h" + +// ROOT include files +#include "TGeoManager.h" +// Geant4 include files +#include "G4SDManager.hh" +#include "G4PVPlacement.hh" +#include "G4VSensitiveDetector.hh" + +using namespace std; +using namespace DD4hep; +using namespace DD4hep::Simulation; + +DECLARE_GEANT4ACTION(Geant4DetectorSensitivesConstruction) + +/// Initializing constructor for other clients +Geant4DetectorSensitivesConstruction::Geant4DetectorSensitivesConstruction(Geant4Context* ctxt, const string& nam) + : Geant4DetectorConstruction(ctxt,nam) +{ + InstanceCount::increment(this); +} + +/// Default destructor +Geant4DetectorSensitivesConstruction::~Geant4DetectorSensitivesConstruction() { + InstanceCount::decrement(this); +} + +/// Sensitive detector construction callback. Called at "ConstructSDandField()" +void Geant4DetectorSensitivesConstruction::constructSensitives(Geant4DetectorConstructionContext* ctxt) { + typedef Geometry::GeoHandlerTypes::SensitiveVolumes _SV; + typedef Geometry::GeoHandlerTypes::ConstVolumeSet VolSet; + Geant4GeometryInfo* p = Geant4Mapping::instance().ptr(); + G4VSensitiveDetector* g4sd = 0; + _SV& vols = p->sensitives; + + for(_SV::const_iterator iv=vols.begin(); iv != vols.end(); ++iv) { + Geometry::SensitiveDetector sd = (*iv).first; + string typ = sd.type(), nam = sd.name(); + g4sd = PluginService::Create<G4VSensitiveDetector*>(typ, nam, &ctxt->lcdd); + if (!g4sd) { + string tmp = typ; + tmp[0] = ::toupper(tmp[0]); + typ = "Geant4" + tmp; + g4sd = PluginService::Create<G4VSensitiveDetector*>(typ, nam, &ctxt->lcdd); + if ( !g4sd ) { + PluginDebug dbg; + g4sd = PluginService::Create<G4VSensitiveDetector*>(typ, nam, &ctxt->lcdd); + if ( !g4sd ) { + throw runtime_error("ConstructSDandField: FATAL Failed to " + "create Geant4 sensitive detector " + nam + + " of type " + typ + "."); + } + } + } + g4sd->Activate(true); + G4SDManager::GetSDMpointer()->AddNewDetector(g4sd); + const VolSet& sens_vols = (*iv).second; + for(VolSet::const_iterator i=sens_vols.begin(); i!= sens_vols.end(); ++i) { + const TGeoVolume* vol = *i; + G4LogicalVolume* g4v = p->g4Volumes[vol]; + if ( !g4v ) { + throw runtime_error("ConstructSDandField: Failed to access G4LogicalVolume for SD "+ + nam + " of type " + typ + "."); + } + ctxt->setSensitiveDetector(g4v,g4sd); + } + } + print("Geant4Converter", "++ Handled %ld sensitive detectors.",vols.size()); +} diff --git a/DDG4/plugins/Geant4Factories.cpp b/DDG4/plugins/Geant4Factories.cpp index 03bb7e605..bec66e5d6 100644 --- a/DDG4/plugins/Geant4Factories.cpp +++ b/DDG4/plugins/Geant4Factories.cpp @@ -23,33 +23,46 @@ DECLARE_GEANT4ACTION(Geant4Random) DECLARE_GEANT4ACTION(Geant4PhaseAction) #include "DDG4/Geant4RunAction.h" +DECLARE_GEANT4ACTION(Geant4SharedRunAction) DECLARE_GEANT4ACTION(Geant4RunActionSequence) #include "DDG4/Geant4EventAction.h" +DECLARE_GEANT4ACTION(Geant4SharedEventAction) DECLARE_GEANT4ACTION(Geant4EventActionSequence) #include "DDG4/Geant4SteppingAction.h" +DECLARE_GEANT4ACTION(Geant4SharedSteppingAction) DECLARE_GEANT4ACTION(Geant4SteppingActionSequence) #include "DDG4/Geant4TrackingAction.h" +DECLARE_GEANT4ACTION(Geant4SharedTrackingAction) DECLARE_GEANT4ACTION(Geant4TrackingActionSequence) #include "DDG4/Geant4StackingAction.h" +DECLARE_GEANT4ACTION(Geant4SharedStackingAction) DECLARE_GEANT4ACTION(Geant4StackingActionSequence) #include "DDG4/Geant4GeneratorAction.h" +DECLARE_GEANT4ACTION(Geant4SharedGeneratorAction) DECLARE_GEANT4ACTION(Geant4GeneratorActionSequence) #include "DDG4/Geant4PhysicsList.h" DECLARE_GEANT4ACTION(Geant4PhysicsList) DECLARE_GEANT4ACTION(Geant4PhysicsListActionSequence) +#include "DDG4/Geant4DetectorConstruction.h" +DECLARE_GEANT4ACTION(Geant4DetectorConstruction) +DECLARE_GEANT4ACTION(Geant4DetectorConstructionSequence) + #include "DDG4/Geant4SensDetAction.h" DECLARE_GEANT4ACTION(Geant4SensDetActionSequence) #include "DDG4/Geant4UIManager.h" DECLARE_GEANT4ACTION(Geant4UIManager) +#include "DDG4/Geant4UserInitialization.h" +DECLARE_GEANT4ACTION(Geant4UserInitializationSequence) + #include "DDG4/Geant4MonteCarloTruth.h" DECLARE_GEANT4ACTION(Geant4DummyTruthHandler) diff --git a/DDG4/plugins/Geant4FieldTrackingSetup.cpp b/DDG4/plugins/Geant4FieldTrackingSetup.cpp index 56fa11ea9..937c1e033 100644 --- a/DDG4/plugins/Geant4FieldTrackingSetup.cpp +++ b/DDG4/plugins/Geant4FieldTrackingSetup.cpp @@ -18,7 +18,7 @@ // Framework include files #include "DD4hep/LCDD.h" #include "DDG4/Geant4ActionPhase.h" - +#include "DDG4/Geant4DetectorConstruction.h" /// Namespace for the AIDA detector description toolkit namespace DD4hep { @@ -76,7 +76,10 @@ namespace DD4hep { * @author M.Frank * @version 1.0 */ - class Geant4FieldTrackingSetupAction : public Geant4PhaseAction, public Geant4FieldTrackingSetup { + class Geant4FieldTrackingSetupAction : + public Geant4PhaseAction, + public Geant4FieldTrackingSetup + { protected: public: /// Standard constructor @@ -89,6 +92,32 @@ namespace DD4hep { void operator()(); }; + + /// Detector construction action to perform the setup of the Geant4 tracking in magnetic fields + /** Geant4FieldTrackingSetupAction. + * + * The phase action configures the Geant4FieldTrackingSetup base class using properties + * and then configures the Geant4 tracking in magnetic fields. + * + * @author M.Frank + * @version 1.0 + */ + class Geant4FieldTrackingConstruction : + public Geant4DetectorConstruction, + public Geant4FieldTrackingSetup + { + protected: + public: + /// Standard constructor + Geant4FieldTrackingConstruction(Geant4Context* context, const std::string& nam); + + /// Default destructor + virtual ~Geant4FieldTrackingConstruction() {} + + /// Phase action callback + void operator()(); + + }; } // End namespace Simulation } // End namespace DD4hep #endif // DD4HEP_DDG4_GEANT4FIELDTRACKINGSETUP_H @@ -234,5 +263,30 @@ void Geant4FieldTrackingSetupAction::operator()() { delta_chord,delta_one_step,delta_intersection); } + +/// Standard constructor +Geant4FieldTrackingConstruction::Geant4FieldTrackingConstruction(Geant4Context* ctxt, const std::string& nam) + : Geant4DetectorConstruction(ctxt,nam), Geant4FieldTrackingSetup() +{ + declareProperty("equation", eq_typ); + declareProperty("stepper", stepper_typ); + declareProperty("min_chord_step", min_chord_step = 1.0e-2); + declareProperty("delta_chord", delta_chord = -1.0); + declareProperty("delta_one_step", delta_one_step = -1.0); + declareProperty("delta_intersection", delta_intersection = -1.0); + declareProperty("eps_min", eps_min = -1.0); + declareProperty("eps_max", eps_max = -1.0); +} + +/// Post-track action callback +void Geant4FieldTrackingConstruction::operator()() { + execute(context()->lcdd()); + print("Geant4 magnetic field tracking configured. G4MagIntegratorStepper:%s G4Mag_EqRhs:%s " + "Epsilon:[min:%f mm max:%f mm] Delta:[chord:%f 1-step:%f intersect:%f]", + stepper_typ.c_str(),eq_typ.c_str(),eps_min, eps_max, + delta_chord,delta_one_step,delta_intersection); +} + DECLARE_GEANT4_SETUP(Geant4FieldSetup,setup_fields) DECLARE_GEANT4ACTION(Geant4FieldTrackingSetupAction) +DECLARE_GEANT4ACTION(Geant4FieldTrackingConstruction) diff --git a/DDG4/plugins/Geant4MaterialScanner.cpp b/DDG4/plugins/Geant4MaterialScanner.cpp index 700a6e0f3..dd7a03d6c 100644 --- a/DDG4/plugins/Geant4MaterialScanner.cpp +++ b/DDG4/plugins/Geant4MaterialScanner.cpp @@ -97,9 +97,8 @@ namespace DD4hep { #include "G4Material.hh" using namespace std; -using namespace CLHEP; - using namespace DD4hep::Simulation; + #include "DDG4/Factories.h" DECLARE_GEANT4ACTION(Geant4MaterialScanner) @@ -173,6 +172,7 @@ void Geant4MaterialScanner::begin(const G4Track* track) { /// End-of-tracking callback void Geant4MaterialScanner::end(const G4Track* track) { + using namespace CLHEP; if ( !m_steps.empty() ) { const char* line = " +--------------------------------------------------------------------------------------------------------------------------------------------------\n"; const char* fmt1 = " | %5d %-20s %3.0f %8.3f %8.4f %11.4f %11.4f %10.3f %8.2f %11.6f %11.6f (%7.2f,%7.2f,%7.2f)\n"; @@ -189,28 +189,28 @@ void Geant4MaterialScanner::end(const G4Track* track) { int count = 1; for(Steps::const_iterator i=m_steps.begin(); i!=m_steps.end(); ++i, ++count) { const G4LogicalVolume* logVol = (*i)->volume; - G4Material* m = logVol->GetMaterial(); + G4Material* material = logVol->GetMaterial(); const Position& prePos = (*i)->pre; const Position& postPos = (*i)->post; Position direction = postPos - prePos; double length = direction.R()/cm; - double intLen = m->GetNuclearInterLength()/cm; - double radLen = m->GetRadlen()/cm; - double density = m->GetDensity()/(gram/cm3); + double intLen = material->GetNuclearInterLength()/cm; + double radLen = material->GetRadlen()/cm; + double density = material->GetDensity()/(gram/cm3); double nLambda = length / intLen; double nx0 = length / radLen; double Aeff = 0.0; double Zeff = 0.0; const char* fmt = radLen >= 1e5 ? fmt2 : fmt1; - const double* fractions = m->GetFractionVector(); - for(size_t j=0; j<m->GetNumberOfElements(); ++j) { - Zeff += fractions[j]*(m->GetElement(j)->GetZ()); - Aeff += fractions[j]*(m->GetElement(j)->GetA())/gram; + const double* fractions = material->GetFractionVector(); + for(size_t j=0; j<material->GetNumberOfElements(); ++j) { + Zeff += fractions[j]*(material->GetElement(j)->GetZ()); + Aeff += fractions[j]*(material->GetElement(j)->GetA())/gram; } m_sumX0 += nx0; m_sumLambda += nLambda; m_sumPath += length; - ::printf(fmt,count,m->GetName().c_str(), + ::printf(fmt,count,material->GetName().c_str(), Zeff, Aeff, density, radLen, intLen, length, m_sumPath,m_sumX0,m_sumLambda, postPos.X()/cm,postPos.Y()/cm,postPos.Z()/cm); diff --git a/DDG4/plugins/Geant4SensDet.cpp b/DDG4/plugins/Geant4SensDet.cpp index b0d72aebb..3bc22c80a 100644 --- a/DDG4/plugins/Geant4SensDet.cpp +++ b/DDG4/plugins/Geant4SensDet.cpp @@ -33,8 +33,6 @@ namespace DD4hep { /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { - Geant4Context* ddg4_globalContext(); - /// Private helper to support sequence reference counting /** * \author M.Frank @@ -82,12 +80,14 @@ namespace DD4hep { : G4VSensitiveDetector(nam), G4VSDFilter(nam), Geant4Action(0,nam), Geant4ActionSD(nam), Base() { - Geant4Kernel& kernel = Geant4Kernel::access(lcdd); - m_sensitive = lcdd.sensitiveDetector(nam); - m_context = Geant4Context(&kernel); + Geant4Kernel& master = Geant4Kernel::access(lcdd); + Geant4Kernel& kernel = master.worker(::pthread_self()); + m_sensitive = lcdd.sensitiveDetector(nam); + m_context = kernel.workerContext(); m_outputLevel = kernel.getOutputLevel(nam); _aquire(kernel.sensitiveAction(nam)); m_sequence->defineCollections(this); + m_sequence->updateContext(m_context); this->G4VSensitiveDetector::SetFilter(this); } @@ -121,25 +121,11 @@ namespace DD4hep { virtual G4bool Accept(const G4Step* step) const { return m_sequence->accept(step); } /// Method invoked at the begining of each event. - virtual void Initialize(G4HCofThisEvent* hce) { - m_context.setRun(&ddg4_globalContext()->run()); - m_context.setEvent(&ddg4_globalContext()->event()); - (Geant4Action::ContextUpdate(&m_context))(m_sequence); - m_sequence->begin(hce); -#if 0 - const G4Event& evt = context()->event(); - error(name(), "%s> calling Initialize(event_id=%d Context: run=%p (%d) evt=%p (%d))", - GetName().c_str(), evt.GetEventID(), - &context()->run(), context()->run().run().GetRunID(), - &context()->event(), context()->event().event().GetEventID()); -#endif - } + virtual void Initialize(G4HCofThisEvent* hce) + { m_sequence->begin(hce); } /// Method invoked at the end of each event. - virtual void EndOfEvent(G4HCofThisEvent* hce) { - m_sequence->end(hce); - m_context.setEvent(0); - (Geant4Action::ContextUpdate(&m_context))(m_sequence); - } + virtual void EndOfEvent(G4HCofThisEvent* hce) + { m_sequence->end(hce); } /// Method for generating hit(s) using the information of G4Step object. virtual G4bool ProcessHits(G4Step* step,G4TouchableHistory* hist) { return m_sequence->process(step,hist); } diff --git a/DDG4/plugins/Geant4TrackerWeightedSD.cpp b/DDG4/plugins/Geant4TrackerWeightedSD.cpp index b67f340b8..ee51e48aa 100644 --- a/DDG4/plugins/Geant4TrackerWeightedSD.cpp +++ b/DDG4/plugins/Geant4TrackerWeightedSD.cpp @@ -337,7 +337,7 @@ namespace DD4hep { } /// Post-event action callback - void endEvent(const G4Event*) { + void endEvent() { // We need to add the possibly last added hit to the collection here. // otherwise the last hit would be assigned to the next event and the // MC truth would be screwed. @@ -349,11 +349,8 @@ namespace DD4hep { } } /// Pre event action callback - void startEvent(const G4Event* event) { + void startEvent() { thisSD = dynamic_cast<G4VSensitiveDetector*>(&sensitive->detector()); - if ( event ) { - sensitive->print("++++++++++++++++++++++++++ START EVENT %d",event->GetEventID()); - } } }; @@ -361,12 +358,20 @@ namespace DD4hep { template <> void Geant4SensitiveAction<TrackerWeighted>::initialize() { declareProperty("HitPostionCombination", m_userData.hit_position_type); declareProperty("CollectSingleDeposits", m_userData.single_deposit_mode); - eventAction().callAtBegin(&m_userData,&TrackerWeighted::startEvent); - eventAction().callAtEnd(&m_userData,&TrackerWeighted::endEvent); m_userData.e_cut = m_sensitive.energyCutoff(); m_userData.sensitive = this; } + /// G4VSensitiveDetector interface: Method invoked at the begining of each event. + template <> void Geant4SensitiveAction<TrackerWeighted>::begin(G4HCofThisEvent* hce) { + m_userData.startEvent(); + } + + /// G4VSensitiveDetector interface: Method invoked at the end of each event. + template <> void Geant4SensitiveAction<TrackerWeighted>::end(G4HCofThisEvent* hce) { + m_userData.endEvent(); + } + /// Define collections created by this sensitivie action object template <> void Geant4SensitiveAction<TrackerWeighted>::defineCollections() { m_collectionID = defineCollection<Geant4Tracker::Hit>(m_sensitive.readout().name()); diff --git a/DDG4/plugins/Geant4UserActionInitialization.cpp b/DDG4/plugins/Geant4UserActionInitialization.cpp new file mode 100644 index 000000000..41dfec1cc --- /dev/null +++ b/DDG4/plugins/Geant4UserActionInitialization.cpp @@ -0,0 +1,90 @@ +#if 0 +// AIDA Detector description implementation for LCD +//-------------------------------------------------------------------------- +// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) +// All rights reserved. +// +// For the licensing terms see $DD4hepINSTALL/LICENSE. +// For the list of contributors see $DD4hepINSTALL/doc/CREDITS. +// +// \author Markus Frank +// \date 2015-11-03 +// +//========================================================================== +// $Id$ +#ifndef DD4HEP_DDG4_GEANT4USERACTIONINITIALIZATION_H +#define DD4HEP_DDG4_GEANT4USERACTIONINITIALIZATION_H + +// Framework include files +#include "DDG4/Geant4UserInitialization.h" + +/// Namespace for the AIDA detector description toolkit +namespace DD4hep { + + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit + namespace Simulation { + + /// Base class to initialize a multi-threaded or single threaded Geant4 application + /** + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_SIMULATION + */ + class Geant4UserActionInitialization : public Geant4UserInitialization { + public: + /// Standard constructor + Geant4UserActionInitialization(Geant4Context* c, const std::string& nam); + /// Default destructor + virtual ~Geant4UserActionInitialization() {} + + /// Callback function to build setup for the MT worker thread + virtual void build(); + /// Callback function to build setup for the MT master thread + virtual void buildMaster(); + }; + } // End namespace Simulation +} // End namespace DD4hep +#endif // DD4HEP_DDG4_GEANT4USERACTIONINITIALIZATION_H + + +// AIDA Detector description implementation for LCD +//-------------------------------------------------------------------------- +// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) +// All rights reserved. +// +// For the licensing terms see $DD4hepINSTALL/LICENSE. +// For the list of contributors see $DD4hepINSTALL/doc/CREDITS. +// +// \author Markus Frank +// \date 2015-11-03 +// +//========================================================================== +// $Id$ + +// Framework include files +#include "DDG4/Factories.h" +//#include "DDG4/Geant4UserActionInitialization.h" +#include "DDG4/Geant4Context.h" + +// C/C++ include files + +using namespace std; +using namespace DD4hep::Simulation; + +//DECLARE_GEANT4ACTION(Geant4UserActionInitialization) + +/// Standard constructor, initializes variables +Geant4UserActionInitialization::Geant4UserActionInitialization(Geant4Context* ctxt, const string& nam) + : Geant4UserInitialization(ctxt,nam) +{ +} + +/// Callback function to build setup for the MT worker thread +void Geant4UserActionInitialization::build() { + +} + +/// Callback function to build setup for the MT master thread +void Geant4UserActionInitialization::buildMaster() { +} +#endif diff --git a/DDG4/pyddg4.cpp b/DDG4/pyddg4.cpp new file mode 100644 index 000000000..91cae04f7 --- /dev/null +++ b/DDG4/pyddg4.cpp @@ -0,0 +1,79 @@ +// $Id$ +//========================================================================== +// AIDA Detector description implementation for LCD +//-------------------------------------------------------------------------- +// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) +// All rights reserved. +// +// For the licensing terms see $DD4hepINSTALL/LICENSE. +// For the list of contributors see $DD4hepINSTALL/doc/CREDITS. +// +// Author : M.Frank +// +//========================================================================== +#include "TSystem.h" +#include "TInterpreter.h" +#include "DDG4Python/DDPython.h" +#include "Python.h" +#include <string> +#include <vector> +using namespace std; +using namespace DD4hep; + +static int load_libs(const vector<char*>& libs) { + for(size_t i=0; i<libs.size(); ++i) { + int ret = gSystem->Load(libs[i]); + if ( 0 != ret ) { + ::printf("+++ Failed to load library: %s [ignored]\n",libs[i]); + return ret; + } + else { + ::printf("+++ Successfully loaded library: %s\n",libs[i]); + } + } + return 0; +} + +int main(int argc, char** argv) { + bool have_prompt = false; + bool do_execute = false; + vector<char*> args; + vector<char*> libs; + int first_arg = 1; + int ret; + + if ( argc>first_arg && strncmp(argv[first_arg],"-p",2)==0 ) { + have_prompt = true; + args.push_back(argv[0]); + ++first_arg; + } + else if ( argc>first_arg && strncmp(argv[first_arg],"-e",2)==0 ) { + do_execute = true; + ++first_arg; + } + for(int i=first_arg; i<argc; ++i) { + if ( 0 == ::strcmp(argv[i],"-L") ) + libs.push_back(argv[++i]); + else + args.push_back(argv[i]); + } + if ( !have_prompt && args.size()>0 ) { + libs.push_back((char*)"libDDG4Python"); + if ( 0 == (ret=load_libs(libs)) ) { + DDPython::instance().setArgs(args.size(), &args[0]); + DDPython::instance().setMainThread(); + DDPython::instance().runFile(args[0]); + if ( do_execute ) + return gInterpreter->ProcessLine("PyDDG4::execute()"); + else + return 0; + } + return ret; + } + if ( 0 == (ret=load_libs(libs)) ) { + ::printf("+++ Calling now Py_Main...\n"); + ret = ::Py_Main(args.size(), &args[0]); + //::printf("+++ Return code Py_Main=%d\n",ret); + } + return ret; +} diff --git a/DDG4/python/DD4hep.py b/DDG4/python/DD4hep.py index aaf6c3848..16d4a1a78 100644 --- a/DDG4/python/DD4hep.py +++ b/DDG4/python/DD4hep.py @@ -26,6 +26,7 @@ def compileAClick(dictionary,g4=True): gSystem.AddIncludePath(inc) gSystem.AddLinkedLibs(lib) #####print "Includes: ",gSystem.GetIncludePath(),"\n","Linked libs:",gSystem.GetLinkedLibs() + print 'Loading AClick ',dictionary package = imp.find_module('DDG4') dic = os.path.dirname(package[1])+os.sep+dictionary ###print dic @@ -95,6 +96,7 @@ import_namespace_item('Core','run_interpreter') def import_geometry(): import_namespace_item('Core','setPrintLevel') + import_namespace_item('Core','setPrintFormat') import_namespace_item('Core','printLevel') import_namespace_item('Geo','LCDD') import_namespace_item('Core','evaluator') diff --git a/DDG4/python/DDG4.py b/DDG4/python/DDG4.py index 8dbc0c815..61c4f4567 100644 --- a/DDG4/python/DDG4.py +++ b/DDG4/python/DDG4.py @@ -130,38 +130,59 @@ def _setKernelProperty(self, name, value): #--------------------------------------------------------------------------- def _kernel_phase(self,name): return self.addSimplePhase(name,False) #--------------------------------------------------------------------------- +def _kernel_worker(self): return Kernel(self.get().createWorker()) +#--------------------------------------------------------------------------- Kernel.phase = _kernel_phase Kernel.registerGlobalAction = _registerGlobalAction Kernel.registerGlobalFilter = _registerGlobalFilter +Kernel.createWorker = _kernel_worker Kernel.__getattr__ = _getKernelProperty Kernel.__setattr__ = _setKernelProperty #--------------------------------------------------------------------------- -ActionHandle = Sim.ActionHandle +ActionHandle = Sim.ActionHandle +#--------------------------------------------------------------------------- +def SensitiveAction(kernel,nam,det,shared=False): + return Interface.createSensitive(kernel,nam,det,shared) +#--------------------------------------------------------------------------- +def Action(kernel,nam,shared=False): + return Interface.createAction(kernel,nam,shared) #--------------------------------------------------------------------------- -def SensitiveAction(kernel,nam,det): return Interface.createSensitive(kernel,nam,det) +def Filter(kernel,nam,shared=False): + return Interface.createFilter(kernel,nam,shared) #--------------------------------------------------------------------------- -def Action(kernel,nam): return Interface.createAction(kernel,nam) +def PhaseAction(kernel,nam,shared=False): + return Interface.createPhaseAction(kernel,nam,shared) #--------------------------------------------------------------------------- -def Filter(kernel,nam): return Interface.createFilter(kernel,nam) +def RunAction(kernel,nam,shared=False): + return Interface.createRunAction(kernel,nam,shared) #--------------------------------------------------------------------------- -def PhaseAction(kernel,nam): return Interface.createPhaseAction(kernel,nam) +def EventAction(kernel,nam,shared=False): + return Interface.createEventAction(kernel,nam,shared) #--------------------------------------------------------------------------- -def RunAction(kernel,nam): return Interface.createRunAction(kernel,nam) +def GeneratorAction(kernel,nam,shared=False): + return Interface.createGeneratorAction(kernel,nam,shared) #--------------------------------------------------------------------------- -def EventAction(kernel,nam): return Interface.createEventAction(kernel,nam) +def TrackingAction(kernel,nam,shared=False): + return Interface.createTrackingAction(kernel,nam,shared) #--------------------------------------------------------------------------- -def GeneratorAction(kernel,nam): return Interface.createGeneratorAction(kernel,nam) +def SteppingAction(kernel,nam,shared=False): + return Interface.createSteppingAction(kernel,nam,shared) #--------------------------------------------------------------------------- -def TrackingAction(kernel,nam): return Interface.createTrackingAction(kernel,nam) +def StackingAction(kernel,nam,shared=False): + return Interface.createStackingAction(kernel,nam,shared) #--------------------------------------------------------------------------- -def SteppingAction(kernel,nam): return Interface.createSteppingAction(kernel,nam) +def DetectorConstruction(kernel,nam): + return Interface.createDetectorConstruction(kernel,nam) #--------------------------------------------------------------------------- -def StackingAction(kernel,nam): return Interface.createStackingAction(kernel,nam) +def PhysicsList(kernel,nam): + return Interface.createPhysicsList(kernel,nam) #--------------------------------------------------------------------------- -def PhysicsList(kernel,nam): return Interface.createPhysicsList(kernel,nam) +def UserInitialization(kernel, nam): + return Interface.createUserInitialization(kernel,nam) #--------------------------------------------------------------------------- -def SensitiveSequence(kernel, nam): return Interface.createSensDetSequence(kernel,nam) +def SensitiveSequence(kernel, nam): + return Interface.createSensDetSequence(kernel,nam) #--------------------------------------------------------------------------- def _setup(obj): def _adopt(self,action): self.__adopt(action.get()) @@ -188,12 +209,18 @@ _setup('Geant4SteppingActionSequence') _setup('Geant4StackingActionSequence') _setup('Geant4PhysicsListActionSequence') _setup('Geant4SensDetActionSequence') +_setup('Geant4DetectorConstructionSequence') +_setup('Geant4UserInitializationSequence') _setup('Geant4Sensitive') _setup('Geant4ParticleHandler') _import_class('Sim','Geant4Filter') _import_class('Sim','Geant4RunAction') +_import_class('Sim','Geant4TrackingAction') +_import_class('Sim','Geant4StackingAction') _import_class('Sim','Geant4PhaseAction') _import_class('Sim','Geant4UserParticleHandler') +_import_class('Sim','Geant4UserInitialization') +_import_class('Sim','Geant4DetectorConstruction') #--------------------------------------------------------------------------- def _get(self, name): @@ -238,7 +265,9 @@ _props('PhysicsListHandle') _props('TrackingActionHandle') _props('SteppingActionHandle') _props('StackingActionHandle') +_props('DetectorConstructionHandle') _props('SensitiveHandle') +_props('UserInitializationHandle') _props('Geant4ParticleHandler') _props('Geant4UserParticleHandler') @@ -248,8 +277,10 @@ _props('EventActionSequenceHandle') _props('TrackingActionSequenceHandle') _props('SteppingActionSequenceHandle') _props('StackingActionSequenceHandle') +_props('DetectorConstructionSequenceHandle') _props('PhysicsListActionSequenceHandle') _props('SensDetActionSequenceHandle') +_props('UserInitializationSequenceHandle') _props('Geant4PhysicsListActionSequence') @@ -266,18 +297,26 @@ _props('Geant4PhysicsListActionSequence') \version 1.0 """ -class Simple: - def __init__(self, kernel=None,calo='Geant4CalorimeterAction',tracker='Geant4SimpleTrackerAction'): +class Geant4: + def __init__(self, kernel=None, + calo='Geant4CalorimeterAction', + tracker='Geant4SimpleTrackerAction'): kernel.UI = "UI" kernel.printProperties() - self.kernel = kernel + self._kernel = kernel if kernel is None: - self.kernel = Kernel() - self.lcdd = self.kernel.lcdd() + self._kernel = Kernel() + self.lcdd = self._kernel.lcdd() self.sensitive_types = {} self.sensitive_types['tracker'] = tracker self.sensitive_types['calorimeter'] = calo + + def kernel(self): + return self._kernel.worker() + def master(self): + return self._kernel + """ Configure the Geant4 command executive @@ -285,7 +324,7 @@ class Simple: """ def setupUI(self,typ='csh',vis=False,ui=True,macro=None): # Configure UI - ui_action = Action(self.kernel,"Geant4UIManager/UI") + ui_action = Action(self.master(),"Geant4UIManager/UI") if vis: ui_action.HaveVIS = True else: ui_action.HaveVIS = False if ui: ui_action.HaveUI = True @@ -293,7 +332,7 @@ class Simple: ui_action.SessionType = typ if macro: ui_action.SetupUI = macro - self.kernel.registerGlobalAction(ui_action) + self.master().registerGlobalAction(ui_action) return ui_action """ @@ -304,14 +343,66 @@ class Simple: def setupCshUI(self,typ='csh',vis=False,ui=True,macro=None): return self.setupUI(typ='csh',vis=vis,ui=ui,macro=macro) + """ + Configure Geant4 user initialization for optionasl multi-threading mode + + \author M.Frank + """ + def addUserInitialization(self, worker, worker_args=None, master=None, master_args=None): + import sys + init_seq = self.master().userInitialization(True) + init_action = UserInitialization(self.master(),'Geant4PythonInitialization/PyG4Init') + # + if worker: + init_action.setWorkerSetup(worker, worker_args) + else: + raise exceptions.RuntimeError('Invalid argument for Geant4 worker initialization') + # + if master: + init_action.setMasterSetup(master,master_args) + # + init_seq.adopt(init_action) + return init_seq,init_action + + """ + Configure Geant4 user initialization for optionasl multi-threading mode + + \author M.Frank + """ + def addDetectorConstruction(self, name_type, + field=None, field_args=None, + geometry=None, geometry_args=None, + sensitives=None, sensitives_args=None, + allow_threads=False): + init_seq = self.master().detectorConstruction(True) + init_action = DetectorConstruction(self.master(),name_type) + # + if geometry: + init_action.setConstructGeo(geometry,geometry_args) + # + if field: + init_action.setConstructField(field,field_args) + # + if sensitives: + init_action.setConstructSensitives(sensitives,sensitives_args) + # + init_seq.adopt(init_action) + if allow_threads: + last_action = DetectorConstruction(self.master(),"Geant4PythonDetectorConstructionLast/LastDetectorAction") + init_seq.adopt(last_action) + + return init_seq,init_action + """ Add a new phase action to an arbitrary step. \author M.Frank """ - def addPhaseAction(self,phase_name,factory_specification,ui=True): - action = PhaseAction(self.kernel,factory_specification) - self.kernel.phase('configure').add(action) + def addPhaseAction(self,phase_name,factory_specification,ui=True,instance=None): + if instance is None: + instance = self.kernel() + action = PhaseAction(instance,factory_specification) + instance.phase(phase_name).add(action) if ui: action.enableUI() return action @@ -324,7 +415,7 @@ class Simple: \author M.Frank """ def addConfig(self, factory_specification): - return self.addPhaseAction('configure',factory_specification) + return self.addPhaseAction('configure',factory_specification,instance=self.master()) """ Add a new phase action to the 'initialize' step. @@ -365,10 +456,10 @@ class Simple: \author M.Frank """ def execute(self): - self.kernel.configure() - self.kernel.initialize() - self.kernel.run() - self.kernel.terminate() + self.kernel().configure() + self.kernel().initialize() + self.kernel().run() + self.kernel().terminate() return self def printDetectors(self): @@ -384,8 +475,8 @@ class Simple: print '+++ %-32s type:%-12s --> Sensitive type: %s'%(o.name(), typ, sdtyp,) def setupDetector(self,name,sensitive_type): - seq = SensitiveSequence(self.kernel,'Geant4SensDetActionSequence/'+name) - act = SensitiveAction(self.kernel,sensitive_type+'/'+name+'Handler',name) + seq = SensitiveSequence(self.kernel(),'Geant4SensDetActionSequence/'+name) + act = SensitiveAction(self.kernel(),sensitive_type+'/'+name+'Handler',name) seq.enableUI() act.enableUI() seq.add(act) @@ -404,7 +495,7 @@ class Simple: return self.setupDetector(name,type) def setupPhysics(self,name): - phys = self.kernel.physicsList() + phys = self.master().physicsList() phys.extends = name phys.decays = True phys.enableUI() @@ -412,14 +503,14 @@ class Simple: return phys def setupGun(self, name, particle, energy, isotrop=True, multiplicity=1, position=(0.0,0.0,0.0)): - gun = GeneratorAction(self.kernel,"Geant4ParticleGun/"+name) + gun = GeneratorAction(self.kernel(),"Geant4ParticleGun/"+name,True) gun.energy = energy gun.particle = particle gun.multiplicity = multiplicity gun.position = position gun.isotrop = isotrop gun.enableUI() - self.kernel.generatorAction().add(gun) + self.kernel().generatorAction().add(gun) return gun """ @@ -428,12 +519,14 @@ class Simple: \author M.Frank """ def setupROOTOutput(self,name,output,mc_truth=True): - evt_root = EventAction(self.kernel,'Geant4Output2ROOT/'+name) + evt_root = EventAction(self.kernel(),'Geant4Output2ROOT/'+name,True) evt_root.HandleMCTruth = mc_truth evt_root.Control = True - evt_root.Output = output + '' if output.endswith('.root') else '.root' + if not output.endswith('.root'): + output = output + '.root' + evt_root.Output = output evt_root.enableUI() - self.kernel.eventAction().add(evt_root) + self.kernel().eventAction().add(evt_root) return evt_root """ @@ -442,11 +535,11 @@ class Simple: \author M.Frank """ def setupLCIOOutput(self,name,output): - evt_lcio = EventAction(self.kernel,'Geant4Output2LCIO/'+name) + evt_lcio = EventAction(self.kernel(),'Geant4Output2LCIO/'+name,True) evt_lcio.Control = True evt_lcio.Output = output evt_lcio.enableUI() - self.kernel.eventAction().add(evt_lcio) + self.kernel().eventAction().add(evt_lcio) return evt_lcio """ @@ -462,9 +555,9 @@ class Simple: \author M.Frank """ def buildInputStage(self, generator_input_modules, output_level=None, have_mctruth=True): - ga = self.kernel.generatorAction() + ga = self.kernel().generatorAction() # Register Generation initialization action - gen = GeneratorAction(self.kernel,"Geant4GeneratorActionInit/GenerationInit") + gen = GeneratorAction(self.kernel(),"Geant4GeneratorActionInit/GenerationInit") if output_level is not None: gen.OutputLevel = output_level ga.adopt(gen) @@ -478,7 +571,7 @@ class Simple: ga.adopt(gen) # Merge all existing interaction records - gen = GeneratorAction(self.kernel,"Geant4InteractionMerger/InteractionMerger") + gen = GeneratorAction(self.kernel(),"Geant4InteractionMerger/InteractionMerger") gen.enableUI() if output_level is not None: gen.OutputLevel = output_level @@ -486,7 +579,7 @@ class Simple: # Finally generate Geant4 primaries if have_mctruth: - gen = GeneratorAction(self.kernel,"Geant4PrimaryHandler/PrimaryHandler") + gen = GeneratorAction(self.kernel(),"Geant4PrimaryHandler/PrimaryHandler") gen.enableUI() if output_level is not None: gen.OutputLevel = output_level @@ -494,4 +587,16 @@ class Simple: # Puuuhh! All done. return self -Geant4 = Simple + """ + Execute the main Geant4 action + \author M.Frank + """ + def run(self): + #self.master().configure() + #self.master().initialize() + #self.master().run() + #self.master().terminate() + from ROOT import PyDDG4 + PyDDG4.run(self.master().get()) + +Simple = Geant4 diff --git a/DDG4/python/DDG4Dict.C b/DDG4/python/DDG4Dict.C index ea0602cfd..476d3d169 100644 --- a/DDG4/python/DDG4Dict.C +++ b/DDG4/python/DDG4Dict.C @@ -56,8 +56,10 @@ namespace DD4hep { ACTIONHANDLE(TrackingAction); ACTIONHANDLE(SteppingAction); ACTIONHANDLE(StackingAction); + ACTIONHANDLE(DetectorConstruction); ACTIONHANDLE(Sensitive); ACTIONHANDLE(ParticleHandler); + ACTIONHANDLE(UserInitialization); ACTIONHANDLE(GeneratorActionSequence); ACTIONHANDLE(RunActionSequence); @@ -65,94 +67,113 @@ namespace DD4hep { ACTIONHANDLE(TrackingActionSequence); ACTIONHANDLE(SteppingActionSequence); ACTIONHANDLE(StackingActionSequence); + ACTIONHANDLE(DetectorConstructionSequence); ACTIONHANDLE(PhysicsListActionSequence); ACTIONHANDLE(SensDetActionSequence); + ACTIONHANDLE(UserInitializationSequence); struct PropertyResult { - string data; - int status; - PropertyResult() : status(0) {} - PropertyResult(const string& d, int s) : data(d), status(s) {} + string data; + int status; + PropertyResult() : status(0) {} + PropertyResult(const string& d, int s) : data(d), status(s) {} PropertyResult(const PropertyResult& c) : data(c.data), status(c.status) {} - ~PropertyResult() {} - }; + ~PropertyResult() {} + }; struct Geant4ActionCreation { - template <typename H,typename T> static H cr(KernelHandle& kernel, const string& name_type) { - T action(*kernel.get(),name_type); - H handle(action.get()); - return handle; - } - static ActionHandle createAction(KernelHandle& kernel, const string& name_type) - { return cr<ActionHandle,Setup::Action>(kernel,name_type); } - static FilterHandle createFilter(KernelHandle& kernel, const string& name_type) - { return cr<FilterHandle,Setup::Filter>(kernel,name_type); } - static PhaseActionHandle createPhaseAction(KernelHandle& kernel, const string& name_type) - { return cr<PhaseActionHandle,Setup::PhaseAction>(kernel,name_type); } - static PhysicsListHandle createPhysicsList(KernelHandle& kernel, const string& name_type) - { return cr<PhysicsListHandle,Setup::PhysicsList>(kernel,name_type); } - static RunActionHandle createRunAction(KernelHandle& kernel, const string& name_type) - { return cr<RunActionHandle,Setup::RunAction>(kernel,name_type); } - static EventActionHandle createEventAction(KernelHandle& kernel, const string& name_type) - { return cr<EventActionHandle,Setup::EventAction>(kernel,name_type); } - static TrackingActionHandle createTrackingAction(KernelHandle& kernel, const string& name_type) - { return cr<TrackingActionHandle,Setup::TrackAction>(kernel,name_type); } - static SteppingActionHandle createSteppingAction(KernelHandle& kernel, const string& name_type) - { return cr<SteppingActionHandle,Setup::StepAction>(kernel,name_type); } - static StackingActionHandle createStackingAction(KernelHandle& kernel, const string& name_type) - { return cr<StackingActionHandle,Setup::StackAction>(kernel,name_type); } - static GeneratorActionHandle createGeneratorAction(KernelHandle& kernel, const string& name_type) - { return cr<GeneratorActionHandle,Setup::GenAction>(kernel,name_type); } - static SensitiveHandle createSensitive(KernelHandle& kernel, const string& name_type, const string& detector) - { return SensitiveHandle(Setup::Sensitive(*kernel.get(),name_type,detector).get()); } - static SensDetActionSequenceHandle createSensDetSequence(KernelHandle& kernel, const string& name_type) - { return cr<SensDetActionSequenceHandle,Setup::SensitiveSeq>(kernel,name_type); } - - static Geant4Action* toAction(Geant4Filter* f) { return f; } - static Geant4Action* toAction(Geant4Action* f) { return f; } - static Geant4Action* toAction(Geant4PhaseAction* f) { return f; } - static Geant4Action* toAction(Geant4Sensitive* f) { return f; } - static Geant4Action* toAction(Geant4PhysicsList* f) { return f; } - static Geant4Action* toAction(Geant4RunAction* f) { return f; } - static Geant4Action* toAction(Geant4EventAction* f) { return f; } - static Geant4Action* toAction(Geant4TrackingAction* f) { return f; } - static Geant4Action* toAction(Geant4SteppingAction* f) { return f; } - static Geant4Action* toAction(Geant4StackingAction* f) { return f; } - static Geant4Action* toAction(Geant4GeneratorAction* f) { return f; } - static Geant4Action* toAction(Geant4GeneratorActionSequence* f) { return f; } - static Geant4Action* toAction(Geant4RunActionSequence* f) { return f; } - static Geant4Action* toAction(Geant4EventActionSequence* f) { return f; } - static Geant4Action* toAction(Geant4TrackingActionSequence* f) { return f; } - static Geant4Action* toAction(Geant4SteppingActionSequence* f) { return f; } - static Geant4Action* toAction(Geant4StackingActionSequence* f) { return f; } - static Geant4Action* toAction(Geant4PhysicsListActionSequence* f){ return f; } - static Geant4Action* toAction(Geant4SensDetActionSequence* f) { return f; } - - static Geant4Action* toAction(FilterHandle f) { return f.action; } - static Geant4Action* toAction(ActionHandle f) { return f.action; } - static Geant4Action* toAction(PhaseActionHandle f) { return f.action; } - static Geant4Action* toAction(SensitiveHandle f) { return f.action; } - static Geant4Action* toAction(PhysicsListHandle f) { return f.action; } - static Geant4Action* toAction(RunActionHandle f) { return f.action; } - static Geant4Action* toAction(EventActionHandle f) { return f.action; } - static Geant4Action* toAction(TrackingActionHandle f) { return f.action; } - static Geant4Action* toAction(SteppingActionHandle f) { return f.action; } - static Geant4Action* toAction(StackingActionHandle f) { return f.action; } - static Geant4Action* toAction(GeneratorActionHandle f) { return f.action; } - static Geant4Action* toAction(GeneratorActionSequenceHandle f) { return f.action; } - static Geant4Action* toAction(RunActionSequenceHandle f) { return f.action; } - static Geant4Action* toAction(EventActionSequenceHandle f) { return f.action; } - static Geant4Action* toAction(TrackingActionSequenceHandle f) { return f.action; } - static Geant4Action* toAction(SteppingActionSequenceHandle f) { return f.action; } - static Geant4Action* toAction(StackingActionSequenceHandle f) { return f.action; } - static Geant4Action* toAction(PhysicsListActionSequenceHandle f) { return f.action; } - static Geant4Action* toAction(SensDetActionSequenceHandle f) { return f.action; } - static PropertyResult getProperty(Geant4Action* action, const string& name) { - if ( action->hasProperty(name) ) { - return PropertyResult(action->property(name).str(),1); - } - return PropertyResult("",0); - } + template <typename H,typename T> static H cr(KernelHandle& kernel, const string& name_type, bool shared) { + T action(*kernel.get(),name_type,shared); + H handle(action.get()); + return handle; + } + static ActionHandle createAction(KernelHandle& kernel, const string& name_type, bool shared) + { return cr<ActionHandle,Setup::Action>(kernel,name_type,shared); } + static FilterHandle createFilter(KernelHandle& kernel, const string& name_type, bool shared) + { return cr<FilterHandle,Setup::Filter>(kernel,name_type,shared); } + static PhaseActionHandle createPhaseAction(KernelHandle& kernel, const string& name_type, bool shared) + { return cr<PhaseActionHandle,Setup::PhaseAction>(kernel,name_type,shared); } + static PhysicsListHandle createPhysicsList(KernelHandle& kernel, const string& name_type) + { return cr<PhysicsListHandle,Setup::PhysicsList>(kernel,name_type,false); } + static RunActionHandle createRunAction(KernelHandle& kernel, const string& name_type, bool shared) + { return cr<RunActionHandle,Setup::RunAction>(kernel,name_type,shared); } + static EventActionHandle createEventAction(KernelHandle& kernel, const string& name_type, bool shared) + { return cr<EventActionHandle,Setup::EventAction>(kernel,name_type,shared); } + static TrackingActionHandle createTrackingAction(KernelHandle& kernel, const string& name_type, bool shared) + { return cr<TrackingActionHandle,Setup::TrackAction>(kernel,name_type,shared); } + static SteppingActionHandle createSteppingAction(KernelHandle& kernel, const string& name_type, bool shared) + { return cr<SteppingActionHandle,Setup::StepAction>(kernel,name_type,shared); } + static StackingActionHandle createStackingAction(KernelHandle& kernel, const string& name_type, bool shared) + { return cr<StackingActionHandle,Setup::StackAction>(kernel,name_type,shared); } + + static GeneratorActionHandle createGeneratorAction(KernelHandle& kernel, const string& name_type, bool shared) + { return cr<GeneratorActionHandle,Setup::GenAction>(kernel,name_type,shared); } + + static DetectorConstructionHandle createDetectorConstruction(KernelHandle& kernel, const string& name_type) + { return cr<DetectorConstructionHandle,Setup::DetectorConstruction>(kernel,name_type,false); } + + static UserInitializationHandle createUserInitialization(KernelHandle& kernel, const string& name_type) + { return UserInitializationHandle(Setup::Initialization(*kernel.get(),name_type,false).get());} + + static SensitiveHandle createSensitive(KernelHandle& kernel, const string& name_type, const string& detector, bool shared) + { return SensitiveHandle(Setup::Sensitive(*kernel.get(),name_type,detector,shared).get()); } + + static SensDetActionSequenceHandle createSensDetSequence(KernelHandle& kernel, const string& name_type) + { return cr<SensDetActionSequenceHandle,Setup::SensitiveSeq>(kernel,name_type,false); } + + static Geant4Action* toAction(Geant4Filter* f) { return f; } + static Geant4Action* toAction(Geant4Action* f) { return f; } + static Geant4Action* toAction(Geant4PhaseAction* f) { return f; } + static Geant4Action* toAction(Geant4Sensitive* f) { return f; } + static Geant4Action* toAction(Geant4PhysicsList* f) { return f; } + static Geant4Action* toAction(Geant4RunAction* f) { return f; } + static Geant4Action* toAction(Geant4EventAction* f) { return f; } + static Geant4Action* toAction(Geant4TrackingAction* f) { return f; } + static Geant4Action* toAction(Geant4SteppingAction* f) { return f; } + static Geant4Action* toAction(Geant4StackingAction* f) { return f; } + static Geant4Action* toAction(Geant4GeneratorAction* f) { return f; } + static Geant4Action* toAction(Geant4GeneratorActionSequence* f) { return f; } + static Geant4Action* toAction(Geant4RunActionSequence* f) { return f; } + static Geant4Action* toAction(Geant4EventActionSequence* f) { return f; } + static Geant4Action* toAction(Geant4TrackingActionSequence* f) { return f; } + static Geant4Action* toAction(Geant4SteppingActionSequence* f) { return f; } + static Geant4Action* toAction(Geant4StackingActionSequence* f) { return f; } + static Geant4Action* toAction(Geant4PhysicsListActionSequence* f){ return f; } + static Geant4Action* toAction(Geant4SensDetActionSequence* f) { return f; } + static Geant4Action* toAction(Geant4UserInitialization* f) { return f; } + static Geant4Action* toAction(Geant4UserInitializationSequence* f){ return f; } + static Geant4Action* toAction(Geant4DetectorConstruction* f) { return f; } + static Geant4Action* toAction(Geant4DetectorConstructionSequence* f){ return f; } + + static Geant4Action* toAction(FilterHandle f) { return f.action; } + static Geant4Action* toAction(ActionHandle f) { return f.action; } + static Geant4Action* toAction(PhaseActionHandle f) { return f.action; } + static Geant4Action* toAction(SensitiveHandle f) { return f.action; } + static Geant4Action* toAction(PhysicsListHandle f) { return f.action; } + static Geant4Action* toAction(RunActionHandle f) { return f.action; } + static Geant4Action* toAction(EventActionHandle f) { return f.action; } + static Geant4Action* toAction(TrackingActionHandle f) { return f.action; } + static Geant4Action* toAction(SteppingActionHandle f) { return f.action; } + static Geant4Action* toAction(StackingActionHandle f) { return f.action; } + static Geant4Action* toAction(GeneratorActionHandle f) { return f.action; } + static Geant4Action* toAction(GeneratorActionSequenceHandle f) { return f.action; } + static Geant4Action* toAction(RunActionSequenceHandle f) { return f.action; } + static Geant4Action* toAction(EventActionSequenceHandle f) { return f.action; } + static Geant4Action* toAction(TrackingActionSequenceHandle f) { return f.action; } + static Geant4Action* toAction(SteppingActionSequenceHandle f) { return f.action; } + static Geant4Action* toAction(StackingActionSequenceHandle f) { return f.action; } + static Geant4Action* toAction(PhysicsListActionSequenceHandle f) { return f.action; } + static Geant4Action* toAction(SensDetActionSequenceHandle f) { return f.action; } + static Geant4Action* toAction(UserInitializationHandle f) { return f.action; } + static Geant4Action* toAction(UserInitializationSequenceHandle f){ return f.action; } + static Geant4Action* toAction(DetectorConstructionHandle f) { return f.action; } + static Geant4Action* toAction(DetectorConstructionSequenceHandle f){ return f.action; } + static PropertyResult getProperty(Geant4Action* action, const string& name) { + if ( action->hasProperty(name) ) { + return PropertyResult(action->property(name).str(),1); + } + return PropertyResult("",0); + } static int setProperty(Geant4Action* action, const string& name, const string& value) { if ( action->hasProperty(name) ) { action->property(name).str(value); @@ -225,6 +246,9 @@ namespace { #pragma link C++ class SteppingActionHandle; #pragma link C++ class StackingActionHandle; #pragma link C++ class SensitiveHandle; +#pragma link C++ class UserInitializationHandle; +#pragma link C++ class DetectorConstructionHandle; + #pragma link C++ class GeneratorActionSequenceHandle; #pragma link C++ class RunActionSequenceHandle; #pragma link C++ class EventActionSequenceHandle; @@ -233,6 +257,8 @@ namespace { #pragma link C++ class StackingActionSequenceHandle; #pragma link C++ class PhysicsListActionSequenceHandle; #pragma link C++ class SensDetActionSequenceHandle; +#pragma link C++ class UserInitializationSequenceHandle; +#pragma link C++ class DetectorConstructionSequenceHandle; #pragma link C++ class Geant4DataDump; @@ -267,6 +293,12 @@ namespace { #pragma link C++ class Geant4PhysicsListActionSequence; #pragma link C++ class Geant4PhysicsList; +#pragma link C++ class Geant4UserInitializationSequence; +#pragma link C++ class Geant4UserInitialization; + +#pragma link C++ class Geant4DetectorConstructionSequence; +#pragma link C++ class Geant4DetectorConstruction; + #pragma link C++ class Geant4ParticleHandler; #pragma link C++ class Geant4UserParticleHandler; #pragma link C++ class Geant4Filter; diff --git a/DDG4/src/ComponentProperties.cpp b/DDG4/src/ComponentProperties.cpp index 77f61dd5d..8ecfaa630 100644 --- a/DDG4/src/ComponentProperties.cpp +++ b/DDG4/src/ComponentProperties.cpp @@ -138,6 +138,11 @@ PropertyManager::~PropertyManager() { m_properties.clear(); } +/// Export properties of another instance +void PropertyManager::adopt(const PropertyManager& copy) { + m_properties = copy.m_properties; +} + /// Check for existence bool PropertyManager::exists(const std::string& name) const { Properties::const_iterator i = m_properties.find(name); diff --git a/DDG4/src/Geant4Action.cpp b/DDG4/src/Geant4Action.cpp index b6bab5291..ede1afe22 100644 --- a/DDG4/src/Geant4Action.cpp +++ b/DDG4/src/Geant4Action.cpp @@ -43,26 +43,22 @@ TypeName TypeName::split(const string& type_name, const string& delim) { TypeName TypeName::split(const string& type_name) { return split(type_name,"/"); } - -void Geant4Action::ContextUpdate::operator()(Geant4Action* action) const { - if ( context ) { - action->m_context.setRun(context->runPtr()); - action->m_context.setEvent(context->eventPtr()); - } #if 0 - else { - action->m_context.setRun(0); - action->m_context.setEvent(0); +void Geant4Action::ContextUpdate::operator()(Geant4Action* action) const { + action->m_context = context; + if ( 0 == action->m_context ) { + + cout << "EERIOR" << endl; + } -#endif } - +#endif /// Standard constructor Geant4Action::Geant4Action(Geant4Context* ctxt, const string& nam) - : m_context(0), - m_control(0), m_outputLevel(INFO), m_needsControl(false), m_name(nam), m_refCount(1) { + : m_context(ctxt), m_control(0), m_outputLevel(INFO), m_needsControl(false), m_name(nam), + m_refCount(1) +{ InstanceCount::increment(this); - if ( ctxt ) m_context = *ctxt; m_outputLevel = ctxt ? ctxt->kernel().getOutputLevel(nam) : (printLevel()-1); declareProperty("Name", m_name); declareProperty("name", m_name); @@ -150,6 +146,10 @@ void Geant4Action::enableUI() { installMessengers(); } +/// Set or update client for the use in a new thread fiber +void Geant4Action::configureFiber(Geant4Context* /* thread_context */) { +} + /// Support for messages with variable output level using output level void Geant4Action::print(const char* fmt, ...) const { int level = outputLevel(); @@ -278,30 +278,30 @@ void Geant4Action::abortRun(const string& exception, const char* fmt, ...) const /// Access to the main run action sequence from the kernel object Geant4RunActionSequence& Geant4Action::runAction() const { - return m_context.kernel().runAction(); + return m_context->kernel().runAction(); } /// Access to the main event action sequence from the kernel object Geant4EventActionSequence& Geant4Action::eventAction() const { - return m_context.kernel().eventAction(); + return m_context->kernel().eventAction(); } /// Access to the main stepping action sequence from the kernel object Geant4SteppingActionSequence& Geant4Action::steppingAction() const { - return m_context.kernel().steppingAction(); + return m_context->kernel().steppingAction(); } /// Access to the main tracking action sequence from the kernel object Geant4TrackingActionSequence& Geant4Action::trackingAction() const { - return m_context.kernel().trackingAction(); + return m_context->kernel().trackingAction(); } /// Access to the main stacking action sequence from the kernel object Geant4StackingActionSequence& Geant4Action::stackingAction() const { - return m_context.kernel().stackingAction(); + return m_context->kernel().stackingAction(); } /// Access to the main generator action sequence from the kernel object Geant4GeneratorActionSequence& Geant4Action::generatorAction() const { - return m_context.kernel().generatorAction(); + return m_context->kernel().generatorAction(); } diff --git a/DDG4/src/Geant4Converter.cpp b/DDG4/src/Geant4Converter.cpp index 04cf9004d..12a09961e 100644 --- a/DDG4/src/Geant4Converter.cpp +++ b/DDG4/src/Geant4Converter.cpp @@ -52,13 +52,11 @@ #include "TMath.h" // Geant4 include files -#include "G4VSensitiveDetector.hh" #include "G4VisAttributes.hh" #include "G4ProductionCuts.hh" #include "G4VUserRegionInformation.hh" #include "G4Element.hh" -#include "G4SDManager.hh" #include "G4Box.hh" #include "G4Trd.hh" #include "G4Tubs.hh" @@ -95,10 +93,9 @@ #include <sstream> using namespace DD4hep::Simulation; -using namespace DD4hep::Simulation::Geant4GeometryMaps; +//using namespace DD4hep::Simulation::Geant4GeometryMaps; using namespace DD4hep::Geometry; using namespace DD4hep; -using namespace CLHEP; using namespace std; #include "DDG4/Geant4AssemblyVolume.h" @@ -126,13 +123,13 @@ void Geant4AssemblyVolume::imprint(Geant4GeometryInfo& info, unsigned int numberOfDaughters; if( copyNumBase == 0 ) - { - numberOfDaughters = pMotherLV->GetNoDaughters(); - } + { + numberOfDaughters = pMotherLV->GetNoDaughters(); + } else - { - numberOfDaughters = copyNumBase; - } + { + numberOfDaughters = copyNumBase; + } // We start from the first available index // @@ -156,58 +153,58 @@ void Geant4AssemblyVolume::imprint(Geant4GeometryInfo& info, G4Transform3D Tfinal = transformation * Ta; if ( triplets[i].GetVolume() ) - { - // Generate the unique name for the next PV instance - // The name has format: - // - // av_WWW_impr_XXX_YYY_ZZZ - // where the fields mean: - // WWW - assembly volume instance number - // XXX - assembly volume imprint number - // YYY - the name of a log. volume we want to make a placement of - // ZZZ - the log. volume index inside the assembly volume - // - std::stringstream pvName; - pvName << "av_" - << GetAssemblyID() - << "_impr_" - << GetImprintsCount() - << "_" - << triplets[i].GetVolume()->GetName().c_str() - << "_pv_" - << i - << std::ends; - - // Generate a new physical volume instance inside a mother - // (as we allow 3D transformation use G4ReflectionFactory to - // take into account eventual reflection) - // - G4PhysicalVolumesPair pvPlaced - = G4ReflectionFactory::Instance()->Place( Tfinal, - pvName.str().c_str(), - triplets[i].GetVolume(), - pMotherLV, - false, - numberOfDaughters + i, - surfCheck ); - - // Register the physical volume created by us so we can delete it later - // - fPVStore.push_back( pvPlaced.first ); - info.g4VolumeImprints[vol].push_back(make_pair(new_chain,pvPlaced.first)); + { + // Generate the unique name for the next PV instance + // The name has format: + // + // av_WWW_impr_XXX_YYY_ZZZ + // where the fields mean: + // WWW - assembly volume instance number + // XXX - assembly volume imprint number + // YYY - the name of a log. volume we want to make a placement of + // ZZZ - the log. volume index inside the assembly volume + // + std::stringstream pvName; + pvName << "av_" + << GetAssemblyID() + << "_impr_" + << GetImprintsCount() + << "_" + << triplets[i].GetVolume()->GetName().c_str() + << "_pv_" + << i + << std::ends; + + // Generate a new physical volume instance inside a mother + // (as we allow 3D transformation use G4ReflectionFactory to + // take into account eventual reflection) + // + G4PhysicalVolumesPair pvPlaced + = G4ReflectionFactory::Instance()->Place( Tfinal, + pvName.str().c_str(), + triplets[i].GetVolume(), + pMotherLV, + false, + numberOfDaughters + i, + surfCheck ); + + // Register the physical volume created by us so we can delete it later + // + fPVStore.push_back( pvPlaced.first ); + info.g4VolumeImprints[vol].push_back(make_pair(new_chain,pvPlaced.first)); #if 0 - cout << " Assembly:Parent:" << parent->GetName() << " " << node->GetName() - << " " << (void*)node << " G4:" << pvName.str() << " Daughter:" - << DetectorTools::placementPath(new_chain) << endl; - cout << endl; + cout << " Assembly:Parent:" << parent->GetName() << " " << node->GetName() + << " " << (void*)node << " G4:" << pvName.str() << " Daughter:" + << DetectorTools::placementPath(new_chain) << endl; + cout << endl; #endif - if ( pvPlaced.second ) { - G4Exception("G4AssemblyVolume::MakeImprint(..)", "GeomVol0003", FatalException, - "Fancy construct popping new mother from the stack!"); - //fPVStore.push_back( pvPlaced.second ); - } + if ( pvPlaced.second ) { + G4Exception("G4AssemblyVolume::MakeImprint(..)", "GeomVol0003", FatalException, + "Fancy construct popping new mother from the stack!"); + //fPVStore.push_back( pvPlaced.second ); } + } else if ( triplets[i].GetAssembly() ) { // Place volumes in this assembly with composed transformation imprint(info, parent, new_chain, (Geant4AssemblyVolume*)triplets[i].GetAssembly(), pMotherLV, Tfinal, i*100+copyNumBase, surfCheck ); @@ -266,7 +263,7 @@ namespace { /// Initializing Constructor Geant4Converter::Geant4Converter(LCDD& lcdd_ref) -: Geant4Mapping(lcdd_ref), m_checkOverlaps(true) { + : Geant4Mapping(lcdd_ref), m_checkOverlaps(true) { this->Geant4Mapping::init(); m_propagateRegions = true; m_outputLevel = PrintLevel(printLevel() - 1); @@ -274,7 +271,7 @@ Geant4Converter::Geant4Converter(LCDD& lcdd_ref) /// Initializing Constructor Geant4Converter::Geant4Converter(LCDD& lcdd_ref, PrintLevel level) -: Geant4Mapping(lcdd_ref), m_checkOverlaps(true) { + : Geant4Mapping(lcdd_ref), m_checkOverlaps(true) { this->Geant4Mapping::init(); m_propagateRegions = true; m_outputLevel = level; @@ -319,12 +316,12 @@ void* Geant4Converter::handleMaterial(const string& name, Material medium) const if (!mat) { mat = G4Material::GetMaterial(name, false); if (!mat) { - TGeoMaterial* m = medium->GetMaterial(); + TGeoMaterial* material = medium->GetMaterial(); G4State state = kStateUndefined; - double density = m->GetDensity() * (CLHEP::gram / CLHEP::cm3); + double density = material->GetDensity() * (CLHEP::gram / CLHEP::cm3); if (density < 1e-25) density = 1e-25; - switch (m->GetState()) { + switch (material->GetState()) { case TGeoMaterial::kMatStateSolid: state = kStateSolid; break; @@ -339,12 +336,13 @@ void* Geant4Converter::handleMaterial(const string& name, Material medium) const state = kStateUndefined; break; } - if (m->IsMixture()) { + if (material->IsMixture()) { double A_total = 0.0; double W_total = 0.0; - TGeoMixture* mix = (TGeoMixture*) m; + TGeoMixture* mix = (TGeoMixture*) material; int nElements = mix->GetNelements(); - mat = new G4Material(name, density, nElements, state, m->GetTemperature(), m->GetPressure()); + mat = new G4Material(name, density, nElements, state, + material->GetTemperature(), material->GetPressure()); for (int i = 0; i < nElements; ++i) { A_total += (mix->GetAmixt())[i]; W_total += (mix->GetWmixt())[i]; @@ -362,10 +360,11 @@ void* Geant4Converter::handleMaterial(const string& name, Material medium) const } } else { - double z = m->GetZ(), a = m->GetA(); + double z = material->GetZ(), a = material->GetA(); if ( z < 1.0000001 ) z = 1.0; if ( a < 0.5000001 ) a = 1.0; - mat = new G4Material(name, z, a, density, state, m->GetTemperature(), m->GetPressure()); + mat = new G4Material(name, z, a, density, state, + material->GetTemperature(), material->GetPressure()); } stringstream str; str << (*mat); @@ -504,28 +503,28 @@ void* Geant4Converter::handleSolid(const string& name, const TGeoShape* shape) c TGeoShape* ls = boolean->GetLeftShape(); TGeoShape* rs = boolean->GetRightShape(); if (strcmp(ls->ClassName(), "TGeoScaledShape") == 0 && - strcmp(rs->ClassName(), "TGeoBBox") == 0) { - if (strcmp(((TGeoScaledShape *)ls)->GetShape()->ClassName(), "TGeoSphere") == 0) { - if (oper == TGeoBoolNode::kGeoIntersection) { - TGeoScaledShape* lls = (TGeoScaledShape *)ls; - TGeoBBox* rrs = (TGeoBBox*)rs; - double sx = lls->GetScale()->GetScale()[0]; - double sy = lls->GetScale()->GetScale()[1]; - double radius = ((TGeoSphere *)lls->GetShape())->GetRmax(); - double dz = rrs->GetDZ(); - double zorig = rrs->GetOrigin()[2]; - double zcut2 = dz + zorig; - double zcut1 = 2 * zorig - zcut2; - solid = new G4Ellipsoid(name, - sx * radius * CM_2_MM, - sy * radius * CM_2_MM, - radius * CM_2_MM, - zcut1 * CM_2_MM, - zcut2 * CM_2_MM); - data().g4Solids[shape] = solid; - return solid; - } - } + strcmp(rs->ClassName(), "TGeoBBox") == 0) { + if (strcmp(((TGeoScaledShape *)ls)->GetShape()->ClassName(), "TGeoSphere") == 0) { + if (oper == TGeoBoolNode::kGeoIntersection) { + TGeoScaledShape* lls = (TGeoScaledShape *)ls; + TGeoBBox* rrs = (TGeoBBox*)rs; + double sx = lls->GetScale()->GetScale()[0]; + double sy = lls->GetScale()->GetScale()[1]; + double radius = ((TGeoSphere *)lls->GetShape())->GetRmax(); + double dz = rrs->GetDZ(); + double zorig = rrs->GetOrigin()[2]; + double zcut2 = dz + zorig; + double zcut1 = 2 * zorig - zcut2; + solid = new G4Ellipsoid(name, + sx * radius * CM_2_MM, + sy * radius * CM_2_MM, + radius * CM_2_MM, + zcut1 * CM_2_MM, + zcut2 * CM_2_MM); + data().g4Solids[shape] = solid; + return solid; + } + } } if (m->IsRotation()) { @@ -561,7 +560,7 @@ void* Geant4Converter::handleSolid(const string& name, const TGeoShape* shape) c /// Dump logical volume in GDML format to output stream void* Geant4Converter::handleVolume(const string& name, const TGeoVolume* volume) const { Geant4GeometryInfo& info = data(); - VolumeMap::const_iterator volIt = info.g4Volumes.find(volume); + Geant4GeometryMaps::VolumeMap::const_iterator volIt = info.g4Volumes.find(volume); if (volIt == info.g4Volumes.end() ) { const TGeoVolume* v = volume; Volume _v = Ref_t(v); @@ -572,17 +571,6 @@ void* Geant4Converter::handleVolume(const string& name, const TGeoVolume* volume G4Material* medium = 0; bool assembly = s->IsA() == TGeoShapeAssembly::Class() || v->IsA() == TGeoVolumeAssembly::Class(); - SensitiveDetector det = _v.sensitiveDetector(); - G4VSensitiveDetector* sd = 0; - - if (det.isValid()) { - sd = info.g4SensDets[det.ptr()]; - if (!sd) { - throw runtime_error("G4Cnv::volume[" + name + "]: + FATAL Failed to " - "access Geant4 sensitive detector."); - } - sd->Activate(true); - } LimitSet lim = _v.limitSet(); G4UserLimits* user_limits = 0; if (lim.isValid()) { @@ -607,8 +595,8 @@ void* Geant4Converter::handleVolume(const string& name, const TGeoVolume* volume } } PrintLevel lvl = m_outputLevel; //string(det.name())=="SiTrackerBarrel" ? WARNING : m_outputLevel; - printout(lvl, "Geant4Converter", "++ Convert Volume %-32s: %p %s/%s assembly:%s sensitive:%s", n.c_str(), v, - s->IsA()->GetName(), v->IsA()->GetName(), yes_no(assembly), yes_no(det.isValid())); + printout(lvl, "Geant4Converter", "++ Convert Volume %-32s: %p %s/%s assembly:%s", + n.c_str(), v, s->IsA()->GetName(), v->IsA()->GetName(), yes_no(assembly)); if (assembly) { //info.g4AssemblyVolumes[v] = new Geant4AssemblyVolume(); @@ -622,21 +610,19 @@ void* Geant4Converter::handleVolume(const string& name, const TGeoVolume* volume throw runtime_error("G4Converter: No Geant4 material present for volume:" + n); } if (user_limits) { - printout(m_outputLevel, "Geant4Converter", "++ Volume + Apply LIMITS settings:%-24s to volume %s.", lim.name(), _v.name()); + printout(m_outputLevel, "Geant4Converter", "++ Volume + Apply LIMITS settings:%-24s to volume %s.", + lim.name(), _v.name()); } - G4LogicalVolume* vol = new G4LogicalVolume(solid, medium, n, 0, sd, user_limits); + G4LogicalVolume* vol = new G4LogicalVolume(solid, medium, n, 0, 0, user_limits); if (region) { - printout(m_outputLevel, "Geant4Converter", "++ Volume + Apply REGION settings: %s to volume %s.", reg.name(), _v.name()); + printout(m_outputLevel, "Geant4Converter", "++ Volume + Apply REGION settings: %s to volume %s.", + reg.name(), _v.name()); vol->SetRegion(region); region->AddRootLogicalVolume(vol); } if (vis_attr) { vol->SetVisAttributes(vis_attr); } - if (sd) { - printout(m_outputLevel, "Geant4Converter", "++ Volume: + %s <> %s Solid:%s Mat:%s SD:%s", name.c_str(), vol->GetName().c_str(), - solid->GetName().c_str(), medium->GetName().c_str(), sd->GetName().c_str()); - } info.g4Volumes[v] = vol; printout(m_outputLevel, "Geant4Converter", "++ Volume + %s converted: %p ---> G4: %p", n.c_str(), v, vol); } @@ -678,7 +664,7 @@ void* Geant4Converter::handleAssembly(const std::string& name, const TGeoNode* n TGeoMatrix* tr = d->GetMatrix(); MyTransform3D transform(tr->GetTranslation(),tr->IsRotation() ? tr->GetRotationMatrix() : s_identity_rot); if ( dau_vol->IsA() == TGeoVolumeAssembly::Class() ) { - AssemblyMap::iterator assIt = info.g4AssemblyVolumes.find(d); + Geant4GeometryMaps::AssemblyMap::iterator assIt = info.g4AssemblyVolumes.find(d); if ( assIt == info.g4AssemblyVolumes.end() ) { printout(FATAL, "Geant4Converter", "+++ Invalid child assembly at %s : %d parent: %s child:%s", __FILE__, __LINE__, name.c_str(), d->GetName()); @@ -690,7 +676,7 @@ void* Geant4Converter::handleAssembly(const std::string& name, const TGeoNode* n transform.dx(), transform.dy(), transform.dz()); } else { - VolumeMap::iterator volIt = info.g4Volumes.find(dau_vol); + Geant4GeometryMaps::VolumeMap::iterator volIt = info.g4Volumes.find(dau_vol); if ( volIt == info.g4Volumes.end() ) { printout(FATAL, "Geant4Converter", "+++ Invalid child volume at %s : %d parent: %s child:%s", __FILE__, __LINE__, name.c_str(), d->GetName()); @@ -710,7 +696,7 @@ void* Geant4Converter::handleAssembly(const std::string& name, const TGeoNode* n /// Dump volume placement in GDML format to output stream void* Geant4Converter::handlePlacement(const string& name, const TGeoNode* node) const { Geant4GeometryInfo& info = data(); - PlacementMap::const_iterator g4it = info.g4Placements.find(node); + Geant4GeometryMaps::PlacementMap::const_iterator g4it = info.g4Placements.find(node); G4VPhysicalVolume* g4 = (g4it == info.g4Placements.end()) ? 0 : (*g4it).second; if (!g4) { TGeoVolume* mot_vol = node->GetMotherVolume(); @@ -729,7 +715,7 @@ void* Geant4Converter::handlePlacement(const string& name, const TGeoNode* node) bool node_is_assembly = vol->IsA() == TGeoVolumeAssembly::Class(); bool mother_is_assembly = mot_vol ? mot_vol->IsA() == TGeoVolumeAssembly::Class() : false; MyTransform3D transform(tr->GetTranslation(),tr->IsRotation() ? tr->GetRotationMatrix() : s_identity_rot); - VolumeMap::const_iterator volIt = info.g4Volumes.find(mot_vol); + Geant4GeometryMaps::VolumeMap::const_iterator volIt = info.g4Volumes.find(mot_vol); if ( mother_is_assembly ) { // @@ -805,8 +791,8 @@ void* Geant4Converter::handleRegion(Region region, const set<const TGeoVolume*>& LimitSet ls = m_lcdd.limitSet(nam); if (ls.isValid()) { bool found = false; - const LimitMap& lm = data().g4Limits; - for (LimitMap::const_iterator j = lm.begin(); j != lm.end(); ++j) { + const Geant4GeometryMaps::LimitMap& lm = data().g4Limits; + for (Geant4GeometryMaps::LimitMap::const_iterator j = lm.begin(); j != lm.end(); ++j) { if (nam == (*j).first->GetName()) { g4->SetUserLimits((*j).second); found = true; @@ -850,35 +836,6 @@ void* Geant4Converter::handleLimitSet(LimitSet limitset, const set<const TGeoVol return g4; } -/// Convert the geometry type SensitiveDetector into the corresponding Geant4 object(s). -void* Geant4Converter::handleSensitive(SensitiveDetector sens_det, const set<const TGeoVolume*>& /* volumes */) const { - Geant4GeometryInfo& info = data(); - G4VSensitiveDetector* g4 = info.g4SensDets[sens_det]; - if (!g4) { - SensitiveDetector sd = Ref_t(sens_det); - string type = sd.type(), name = sd.name(); - g4 = PluginService::Create<G4VSensitiveDetector*>(type, name, &m_lcdd); - if (!g4) { - string tmp = type; - tmp[0] = ::toupper(tmp[0]); - type = "Geant4" + tmp; - g4 = PluginService::Create<G4VSensitiveDetector*>(type, name, &m_lcdd); - if (!g4) { - PluginDebug dbg; - g4 = PluginService::Create<G4VSensitiveDetector*>(type, name, &m_lcdd); - if ( !g4 ) { - throw runtime_error("Geant4Converter<SensitiveDetector>: FATAL Failed to " - "create Geant4 sensitive detector factory " + name + " of type " + type + "."); - } - } - } - g4->Activate(true); - G4SDManager::GetSDMpointer()->AddNewDetector(g4); - info.g4SensDets[sens_det] = g4; - } - return g4; -} - /// Convert the geometry visualisation attributes to the corresponding Geant4 object(s). void* Geant4Converter::handleVis(const string& /* name */, VisAttr attr) const { Geant4GeometryInfo& info = data(); @@ -946,9 +903,8 @@ void Geant4Converter::handleProperties(LCDD::Properties& prp) const { } /// Convert the geometry type SensitiveDetector into the corresponding Geant4 object(s). -void* Geant4Converter::printSensitive(SensitiveDetector sens_det, const set<const TGeoVolume*>& /* volumes */) const { +void Geant4Converter::printSensitive(SensitiveDetector sens_det, const set<const TGeoVolume*>& /* volumes */) const { Geant4GeometryInfo& info = data(); - G4VSensitiveDetector* g4 = info.g4SensDets[sens_det]; ConstVolumeSet& volset = info.sensitives[sens_det]; SensitiveDetector sd = Ref_t(sens_det); stringstream str; @@ -972,7 +928,6 @@ void* Geant4Converter::printSensitive(SensitiveDetector sens_det, const set<cons << vol->GetNoDaughters() << " daughters."; printout(INFO, "Geant4Converter", str.str().c_str()); } - return g4; } string printSolid(G4VSolid* sol) { @@ -1066,8 +1021,6 @@ Geant4Converter& Geant4Converter::create(DetElement top) { printout(m_outputLevel, "Geant4Converter", "++ Handled %ld solids.", geo.solids.size()); handleRefs(this, geo.vis, &Geant4Converter::handleVis); printout(m_outputLevel, "Geant4Converter", "++ Handled %ld visualization attributes.", geo.vis.size()); - handleMap(this, geo.sensitives, &Geant4Converter::handleSensitive); - printout(m_outputLevel, "Geant4Converter", "++ Handled %ld sensitive detectors.", geo.sensitives.size()); handleMap(this, geo.limits, &Geant4Converter::handleLimitSet); printout(m_outputLevel, "Geant4Converter", "++ Handled %ld limit sets.", geo.limits.size()); handleMap(this, geo.regions, &Geant4Converter::handleRegion); diff --git a/DDG4/src/Geant4DetectorConstruction.cpp b/DDG4/src/Geant4DetectorConstruction.cpp index bd5bbea5f..8715ca3c1 100644 --- a/DDG4/src/Geant4DetectorConstruction.cpp +++ b/DDG4/src/Geant4DetectorConstruction.cpp @@ -13,137 +13,156 @@ //========================================================================== // Framework include files +#include "DD4hep/InstanceCount.h" +#include "DDG4/Geant4Mapping.h" +#include "DDG4/Geant4GeometryInfo.h" #include "DDG4/Geant4DetectorConstruction.h" -#include "DDG4/Geant4HierarchyDump.h" -#include "DDG4/Geant4Converter.h" -#include "DDG4/Geant4Kernel.h" -#include "DD4hep/LCDD.h" -#include "TGeoManager.h" -#include "G4PVPlacement.hh" - -// C/C++ include files -#include <iostream> - -#ifdef GEANT4_HAS_GDML -#include "G4GDMLParser.hh" -#endif +#include "G4VUserDetectorConstruction.hh" +#include "G4SDManager.hh" using namespace std; using namespace DD4hep; using namespace DD4hep::Simulation; -namespace { - static Geant4DetectorConstruction* s_instance = 0; +/// Helper: Assign sensitive detector to logical volume +void Geant4DetectorConstructionContext::setSensitiveDetector(G4LogicalVolume* vol, G4VSensitiveDetector* sd) { + //detector->SetSensitiveDetector(vol,sd); + G4SDManager::GetSDMpointer()->AddNewDetector(sd); + vol->SetSensitiveDetector(sd); +} + +/// Standard Constructor +Geant4DetectorConstruction::Geant4DetectorConstruction(Geant4Context* ctxt, const std::string& nam) + : Geant4Action(ctxt,nam) +{ } -/// Instance accessor -Geant4DetectorConstruction* Geant4DetectorConstruction::instance(Geant4Kernel& kernel) { - if ( 0 == s_instance ) s_instance = new Geant4DetectorConstruction(kernel); - return s_instance; +/// Default destructor +Geant4DetectorConstruction::~Geant4DetectorConstruction() { } -/// Initializing constructor for other clients -Geant4DetectorConstruction::Geant4DetectorConstruction(Geometry::LCDD& lcdd) - : Geant4Action(0,"DetectorConstruction"), m_lcdd(lcdd), m_world(0) -{ - m_outputLevel = PrintLevel(printLevel()-1); - s_instance = this; +/// Geometry construction callback. Called at "Construct()" +void Geant4DetectorConstruction::constructGeo(Geant4DetectorConstructionContext* ) { } -/// Initializing constructor for DDG4 -Geant4DetectorConstruction::Geant4DetectorConstruction(Geant4Kernel& kernel) - : Geant4Action(0,"DetectorConstruction"), m_lcdd(kernel.lcdd()), m_world(0) +/// Electromagnetic field construction callback. Called at "ConstructSDandField()" +void Geant4DetectorConstruction::constructField(Geant4DetectorConstructionContext* ) { +} + +/// Sensitive detector construction callback. Called at "ConstructSDandField()" +void Geant4DetectorConstruction::constructSensitives(Geant4DetectorConstructionContext* ) { +} + + +/// Standard Constructor +Geant4DetectorConstructionSequence::Geant4DetectorConstructionSequence(Geant4Context* ctxt, const std::string& nam) + : Geant4Action(ctxt,nam) { - m_outputLevel = kernel.getOutputLevel("Geant4Converter"); - s_instance = this; + m_needsControl = true; + InstanceCount::increment(this); } /// Default destructor -Geant4DetectorConstruction::~Geant4DetectorConstruction() { - s_instance = 0; -} - -G4VPhysicalVolume* Geant4DetectorConstruction::Construct() { - Geant4Mapping& g4map = Geant4Mapping::instance(); - Geometry::DetElement world = m_lcdd.world(); - Geant4Converter conv(m_lcdd, m_outputLevel); - Geant4GeometryInfo* geo_info = conv.create(world).detach(); - g4map.attach(geo_info); - m_world = geo_info->world(); - m_lcdd.apply("DD4hepVolumeManager", 0, 0); - // Create Geant4 volume manager - g4map.volumeManager(); - //Geant4HierarchyDump dmp(m_lcdd); - //dmp.dump("",m_world); -#ifdef GEANT4_HAS_GDML - if ( ::getenv("DUMP_GDML") ) { - G4GDMLParser parser; - parser.Write("detector.gdml",m_world); +Geant4DetectorConstructionSequence::~Geant4DetectorConstructionSequence() { + m_actors(&Geant4DetectorConstruction::release); + InstanceCount::decrement(this); +} + +/// Set or update client context +void Geant4DetectorConstructionSequence::updateContext(Geant4Context* ctxt) { + m_context = ctxt; + m_actors(&Geant4DetectorConstruction::updateContext,ctxt); +} + +/// Add an actor responding to all callbacks. Sequence takes ownership. +void Geant4DetectorConstructionSequence::adopt(Geant4DetectorConstruction* action) { + if (action) { + action->addRef(); + m_actors.add(action); + return; } -#endif - return m_world; + throw runtime_error("Geant4RunActionSequence: Attempt to add invalid actor!"); +} + +/// Geometry construction callback. Called at "Construct()" +void Geant4DetectorConstructionSequence::constructGeo(Geant4DetectorConstructionContext* ctxt) { + m_actors(&Geant4DetectorConstruction::constructGeo, ctxt); +} + +/// Electromagnetic field construction callback. Called at "ConstructSDandField()" +void Geant4DetectorConstructionSequence::constructField(Geant4DetectorConstructionContext* ctxt) { + m_actors(&Geant4DetectorConstruction::constructField, ctxt); +} + +/// Sensitive detector construction callback. Called at "ConstructSDandField()" +void Geant4DetectorConstructionSequence::constructSensitives(Geant4DetectorConstructionContext* ctxt) { + m_actors(&Geant4DetectorConstruction::constructSensitives, ctxt); } /// Access to the converted regions -const Geant4GeometryMaps::RegionMap& Geant4DetectorConstruction::regions() const { +const Geant4GeometryMaps::RegionMap& Geant4DetectorConstructionSequence::regions() const { Geant4GeometryInfo* p = Geant4Mapping::instance().ptr(); if ( p ) return p->g4Regions; - throw runtime_error("+++ Geant4DetectorConstruction::regions: Access not possible. Geometry is not yet converted!"); + throw runtime_error("+++ Geant4DetectorConstructionSequence::regions: Access not possible. Geometry is not yet converted!"); } - +#if 0 /// Access to the converted sensitive detectors -const Geant4GeometryMaps::SensDetMap& Geant4DetectorConstruction::sensitives() const { +const Geant4GeometryMaps::SensDetMap& Geant4DetectorConstructionSequence::sensitives() const { Geant4GeometryInfo* p = Geant4Mapping::instance().ptr(); if ( p ) return p->g4SensDets; - throw runtime_error("+++ Geant4DetectorConstruction::sensitives: Access not possible. Geometry is not yet converted!"); + throw runtime_error("+++ Geant4DetectorConstructionSequence::sensitives: Access not possible. Geometry is not yet converted!"); } - +#endif /// Access to the converted volumes -const Geant4GeometryMaps::VolumeMap& Geant4DetectorConstruction::volumes() const { +const Geant4GeometryMaps::VolumeMap& Geant4DetectorConstructionSequence::volumes() const { Geant4GeometryInfo* p = Geant4Mapping::instance().ptr(); if ( p ) return p->g4Volumes; - throw runtime_error("+++ Geant4DetectorConstruction::volumes: Access not possible. Geometry is not yet converted!"); + throw runtime_error("+++ Geant4DetectorConstructionSequence::volumes: Access not possible. Geometry is not yet converted!"); } /// Access to the converted shapes -const Geant4GeometryMaps::SolidMap& Geant4DetectorConstruction::shapes() const { +const Geant4GeometryMaps::SolidMap& Geant4DetectorConstructionSequence::shapes() const { Geant4GeometryInfo* p = Geant4Mapping::instance().ptr(); if ( p ) return p->g4Solids; - throw runtime_error("+++ Geant4DetectorConstruction::shapes: Access not possible. Geometry is not yet converted!"); + throw runtime_error("+++ Geant4DetectorConstructionSequence::shapes: Access not possible. Geometry is not yet converted!"); } /// Access to the converted limit sets -const Geant4GeometryMaps::LimitMap& Geant4DetectorConstruction::limits() const { +const Geant4GeometryMaps::LimitMap& Geant4DetectorConstructionSequence::limits() const { Geant4GeometryInfo* p = Geant4Mapping::instance().ptr(); if ( p ) return p->g4Limits; - throw runtime_error("+++ Geant4DetectorConstruction::limits: Access not possible. Geometry is not yet converted!"); + throw runtime_error("+++ Geant4DetectorConstructionSequence::limits: Access not possible. Geometry is not yet converted!"); } /// Access to the converted assemblies -const Geant4GeometryMaps::AssemblyMap& Geant4DetectorConstruction::assemblies() const { +const Geant4GeometryMaps::AssemblyMap& Geant4DetectorConstructionSequence::assemblies() const { Geant4GeometryInfo* p = Geant4Mapping::instance().ptr(); if ( p ) return p->g4AssemblyVolumes; - throw runtime_error("+++ Geant4DetectorConstruction::assemblies: Access not possible. Geometry is not yet converted!"); + throw runtime_error("+++ Geant4DetectorConstructionSequence::assemblies: Access not possible. Geometry is not yet converted!"); } /// Access to the converted placements -const Geant4GeometryMaps::PlacementMap& Geant4DetectorConstruction::placements() const { +const Geant4GeometryMaps::PlacementMap& Geant4DetectorConstructionSequence::placements() const { Geant4GeometryInfo* p = Geant4Mapping::instance().ptr(); if ( p ) return p->g4Placements; - throw runtime_error("+++ Geant4DetectorConstruction::placements: Access not possible. Geometry is not yet converted!"); + throw runtime_error("+++ Geant4DetectorConstructionSequence::placements: Access not possible. Geometry is not yet converted!"); } /// Access to the converted materials -const Geant4GeometryMaps::MaterialMap& Geant4DetectorConstruction::materials() const { +const Geant4GeometryMaps::MaterialMap& Geant4DetectorConstructionSequence::materials() const { Geant4GeometryInfo* p = Geant4Mapping::instance().ptr(); if ( p ) return p->g4Materials; - throw runtime_error("+++ Geant4DetectorConstruction::materials: Access not possible. Geometry is not yet converted!"); + throw runtime_error("+++ Geant4DetectorConstructionSequence::materials: Access not possible. Geometry is not yet converted!"); } /// Access to the converted elements -const Geant4GeometryMaps::ElementMap& Geant4DetectorConstruction::elements() const { +const Geant4GeometryMaps::ElementMap& Geant4DetectorConstructionSequence::elements() const { Geant4GeometryInfo* p = Geant4Mapping::instance().ptr(); if ( p ) return p->g4Elements; - throw runtime_error("+++ Geant4DetectorConstruction::elements: Access not possible. Geometry is not yet converted!"); + throw runtime_error("+++ Geant4DetectorConstructionSequence::elements: Access not possible. Geometry is not yet converted!"); } + + + + diff --git a/DDG4/src/Geant4EventAction.cpp b/DDG4/src/Geant4EventAction.cpp index 01e3c763c..b4ec0cab4 100644 --- a/DDG4/src/Geant4EventAction.cpp +++ b/DDG4/src/Geant4EventAction.cpp @@ -15,15 +15,23 @@ // Framework include files #include "DD4hep/InstanceCount.h" #include "DDG4/Geant4EventAction.h" +// Geant4 headers +#include "G4Threading.hh" +#include "G4AutoLock.hh" // C/C++ include files #include <stdexcept> using namespace std; using namespace DD4hep::Simulation; +namespace { + G4Mutex event_action_mutex=G4MUTEX_INITIALIZER; +} + /// Standard constructor Geant4EventAction::Geant4EventAction(Geant4Context* ctxt, const string& nam) - : Geant4Action(ctxt, nam) { + : Geant4Action(ctxt, nam) +{ InstanceCount::increment(this); } @@ -33,11 +41,60 @@ Geant4EventAction::~Geant4EventAction() { } /// begin-of-event callback -void Geant4EventAction::begin(const G4Event*) { +void Geant4EventAction::begin(const G4Event* ) { +} + +/// End-of-event callback +void Geant4EventAction::end(const G4Event* ) { +} + +/// Standard constructor +Geant4SharedEventAction::Geant4SharedEventAction(Geant4Context* ctxt, const string& nam) + : Geant4EventAction(ctxt, nam) +{ + InstanceCount::increment(this); +} + +/// Default destructor +Geant4SharedEventAction::~Geant4SharedEventAction() { + releasePtr(m_action); + InstanceCount::decrement(this); +} + +/// Set or update client for the use in a new thread fiber +void Geant4SharedEventAction::configureFiber(Geant4Context* thread_context) { + m_action->configureFiber(thread_context); +} + +/// Underlying object to be used during the execution of this thread +void Geant4SharedEventAction::use(Geant4EventAction* action) { + if (action) { + action->addRef(); + m_properties.adopt(action->properties()); + m_action = action; + return; + } + throw runtime_error("Geant4SharedEventAction: Attempt to use invalid actor!"); +} + +/// Begin-of-event callback +void Geant4SharedEventAction::begin(const G4Event* event) { + if ( m_action ) { + G4AutoLock protection_lock(&event_action_mutex); { + ContextSwap swap(m_action,context()); + m_action->begin(event); + } + } } /// End-of-event callback -void Geant4EventAction::end(const G4Event*) { +void Geant4SharedEventAction::end(const G4Event* event) { + if ( m_action ) { + G4AutoLock protection_lock(&event_action_mutex); { + ContextSwap swap(m_action,context()); + m_action->end(event); + } + } } /// Standard constructor @@ -57,9 +114,26 @@ Geant4EventActionSequence::~Geant4EventActionSequence() { InstanceCount::decrement(this); } +/// Set or update client context +void Geant4EventActionSequence::updateContext(Geant4Context* ctxt) { + m_context = ctxt; + m_actors.updateContext(ctxt); +} + +/// Set or update client for the use in a new thread fiber +void Geant4EventActionSequence::configureFiber(Geant4Context* thread_context) { + m_actors(&Geant4Action::configureFiber, thread_context); +} + +/// Get an action by name +Geant4EventAction* Geant4EventActionSequence::get(const string& nam) const { + return m_actors.get(FindByName(TypeName::split(nam).second)); +} + /// Add an actor responding to all callbacks. Sequence takes ownership. void Geant4EventActionSequence::adopt(Geant4EventAction* action) { if (action) { + G4AutoLock protection_lock(&event_action_mutex); action->addRef(); m_actors.add(action); return; @@ -68,16 +142,14 @@ void Geant4EventActionSequence::adopt(Geant4EventAction* action) { } /// Pre-track action callback -void Geant4EventActionSequence::begin(const G4Event* event) { - m_actors(ContextUpdate(context())); +void Geant4EventActionSequence::begin(const G4Event* event) { m_actors(&Geant4EventAction::begin, event); m_begin(event); } /// Post-track action callback -void Geant4EventActionSequence::end(const G4Event* event) { +void Geant4EventActionSequence::end(const G4Event* event) { m_end(event); m_actors(&Geant4EventAction::end, event); m_final(event); - m_actors(ContextUpdate()); } diff --git a/DDG4/src/Geant4Exec.cpp b/DDG4/src/Geant4Exec.cpp index 5c94ec606..a49ba203d 100644 --- a/DDG4/src/Geant4Exec.cpp +++ b/DDG4/src/Geant4Exec.cpp @@ -23,13 +23,15 @@ #include "DDG4/Geant4TrackingAction.h" #include "DDG4/Geant4StackingAction.h" #include "DDG4/Geant4GeneratorAction.h" +#include "DDG4/Geant4UserInitialization.h" +#include "DDG4/Geant4DetectorConstruction.h" #include "DDG4/Geant4PhysicsList.h" #include "DDG4/Geant4UIManager.h" #include "DDG4/Geant4Kernel.h" #include "DDG4/Geant4Random.h" // Geant4 include files -#include <G4Version.hh> +#include "G4Version.hh" #include "G4UserRunAction.hh" #include "G4UserEventAction.hh" #include "G4UserTrackingAction.hh" @@ -38,31 +40,29 @@ #include "G4VUserPhysicsList.hh" #include "G4VModularPhysicsList.hh" #include "G4VUserPrimaryGeneratorAction.hh" +#include "G4VUserActionInitialization.hh" +#include "G4VUserDetectorConstruction.hh" // C/C++ include files #include <memory> #include <stdexcept> +namespace { + G4Mutex action_mutex=G4MUTEX_INITIALIZER; +} + /// Namespace for the AIDA detector description toolkit namespace DD4hep { /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit namespace Simulation { - namespace { - Geant4Context* s_globalContext = 0; - } - - Geant4Context* ddg4_globalContext() { - return s_globalContext; - } - /// Sequence handler implementing common actions to all sequences. template <typename T> class SequenceHdl { public: typedef SequenceHdl<T> Base; T* m_sequence; - Geant4Context* m_activeContext; + mutable Geant4Context* m_activeContext; /// Default constructor SequenceHdl() : m_sequence(0), m_activeContext(0) { @@ -78,6 +78,12 @@ namespace DD4hep { m_sequence = s; if ( m_sequence ) m_sequence->addRef(); } + void updateContext(Geant4Context* ctxt) { + m_activeContext = ctxt; + if ( m_sequence ) { + m_sequence->updateContext(ctxt); + } + } void _release() { releasePtr(m_sequence); InstanceCount::decrement(this); @@ -88,21 +94,17 @@ namespace DD4hep { Geant4Kernel& kernel() const { return context()->kernel(); } - - void setContextToClients() { - if ( m_sequence ) (Geant4Action::ContextUpdate(m_activeContext))(m_sequence); - } - void releaseContextFromClients() { - if ( m_sequence ) Geant4Action::ContextUpdate(0)(m_sequence); + void configureFiber(Geant4Context* ctxt) { + if ( m_sequence ) { + m_sequence->configureFiber(ctxt); + } } void createClientContext(const G4Run* run) { Geant4Run* r = new Geant4Run(run); m_activeContext->setRun(r); - setContextToClients(); } void destroyClientContext(const G4Run*) { Geant4Run* r = m_activeContext->runPtr(); - releaseContextFromClients(); if ( r ) { m_activeContext->setRun(0); deletePtr(r); @@ -111,11 +113,9 @@ namespace DD4hep { void createClientContext(const G4Event* evt) { Geant4Event* e = new Geant4Event(evt,Geant4Random::instance()); m_activeContext->setEvent(e); - setContextToClients(); } void destroyClientContext(const G4Event*) { Geant4Event* e = m_activeContext->eventPtr(); - releaseContextFromClients(); if ( e ) { m_activeContext->setEvent(0); deletePtr(e); @@ -132,12 +132,17 @@ namespace DD4hep { * @author M.Frank * @version 1.0 */ - class Geant4UserRunAction : public G4UserRunAction, public SequenceHdl<Geant4RunActionSequence> { + class Geant4UserRunAction : + public G4UserRunAction, + public SequenceHdl<Geant4RunActionSequence> + { public: Geant4UserEventAction* eventAction; /// Standard constructor Geant4UserRunAction(Geant4Context* ctxt, Geant4RunActionSequence* seq) : Base(ctxt, seq), eventAction(0) { + updateContext(ctxt); + configureFiber(ctxt); } /// Default destructor virtual ~Geant4UserRunAction() { @@ -154,12 +159,17 @@ namespace DD4hep { * @author M.Frank * @version 1.0 */ - class Geant4UserEventAction : public G4UserEventAction, public SequenceHdl<Geant4EventActionSequence> { + class Geant4UserEventAction : + public G4UserEventAction, + public SequenceHdl<Geant4EventActionSequence> + { public: Geant4UserRunAction* runAction; /// Standard constructor Geant4UserEventAction(Geant4Context* ctxt, Geant4EventActionSequence* seq) : Base(ctxt, seq), runAction(0) { + updateContext(ctxt); + configureFiber(ctxt); } /// Default destructor virtual ~Geant4UserEventAction() { @@ -176,18 +186,22 @@ namespace DD4hep { * @author M.Frank * @version 1.0 */ - class Geant4UserTrackingAction : public G4UserTrackingAction, public SequenceHdl<Geant4TrackingActionSequence> { + class Geant4UserTrackingAction : + public G4UserTrackingAction, + public SequenceHdl<Geant4TrackingActionSequence> + { public: /// Standard constructor Geant4UserTrackingAction(Geant4Context* ctxt, Geant4TrackingActionSequence* seq) : Base(ctxt, seq) { + updateContext(ctxt); + configureFiber(ctxt); } /// Default destructor virtual ~Geant4UserTrackingAction() { } /// Pre-track action callback virtual void PreUserTrackingAction(const G4Track* trk) { - setContextToClients(); m_sequence->context()->kernel().setTrackMgr(fpTrackingManager); m_sequence->begin(trk); } @@ -195,7 +209,6 @@ namespace DD4hep { virtual void PostUserTrackingAction(const G4Track* trk) { m_sequence->end(trk); m_sequence->context()->kernel().setTrackMgr(0); - releaseContextFromClients(); //Let's leave this out for now...Frank has dirty tricks. } }; @@ -205,50 +218,53 @@ namespace DD4hep { * @author M.Frank * @version 1.0 */ - class Geant4UserStackingAction : public G4UserStackingAction, public SequenceHdl<Geant4StackingActionSequence> { + class Geant4UserStackingAction : + public G4UserStackingAction, + public SequenceHdl<Geant4StackingActionSequence> + { public: /// Standard constructor Geant4UserStackingAction(Geant4Context* ctxt, Geant4StackingActionSequence* seq) : Base(ctxt, seq) { + updateContext(ctxt); + configureFiber(ctxt); } /// Default destructor virtual ~Geant4UserStackingAction() { } /// New-stage callback virtual void NewStage() { - setContextToClients(); m_sequence->newStage(); - releaseContextFromClients(); //Let's leave this out for now...Frank has dirty tricks. } /// Preparation callback virtual void PrepareNewEvent() { - setContextToClients(); m_sequence->prepare(); - releaseContextFromClients(); //Let's leave this out for now...Frank has dirty tricks. } }; + /// Concrete implementation of the Geant4 generator action /** @class Geant4UserGeneratorAction * * @author M.Frank * @version 1.0 */ - class Geant4UserGeneratorAction : public G4VUserPrimaryGeneratorAction, public SequenceHdl<Geant4GeneratorActionSequence> { + class Geant4UserGeneratorAction : + public G4VUserPrimaryGeneratorAction, + public SequenceHdl<Geant4GeneratorActionSequence> + { public: /// Standard constructor Geant4UserGeneratorAction(Geant4Context* ctxt, Geant4GeneratorActionSequence* seq) : G4VUserPrimaryGeneratorAction(), Base(ctxt, seq) { + updateContext(ctxt); + configureFiber(ctxt); } /// Default destructor virtual ~Geant4UserGeneratorAction() { } /// Generate primary particles - virtual void GeneratePrimaries(G4Event* event) { - createClientContext(event); - (*m_sequence)(event); - releaseContextFromClients(); //Let's leave this out for now...Frank has dirty tricks. - } + virtual void GeneratePrimaries(G4Event* event); }; /// Concrete implementation of the Geant4 stepping action @@ -257,54 +273,214 @@ namespace DD4hep { * @author M.Frank * @version 1.0 */ - class Geant4UserSteppingAction : public G4UserSteppingAction, public SequenceHdl<Geant4SteppingActionSequence> { + class Geant4UserSteppingAction : + public G4UserSteppingAction, + public SequenceHdl<Geant4SteppingActionSequence> + { public: /// Standard constructor Geant4UserSteppingAction(Geant4Context* ctxt, Geant4SteppingActionSequence* seq) : Base(ctxt, seq) { + updateContext(ctxt); + configureFiber(ctxt); } /// Default destructor virtual ~Geant4UserSteppingAction() { } /// User stepping callback virtual void UserSteppingAction(const G4Step* s) { - setContextToClients(); (*m_sequence)(s, fpSteppingManager); - releaseContextFromClients(); //Let's leave this out for now...Frank has dirty tricks. } }; + /// Concrete implementation of the Geant4 user detector construction action sequence + /** @class Geant4UserDetectorConstruction + * + * @author M.Frank + * @version 1.0 + */ + class Geant4UserDetectorConstruction : + public G4VUserDetectorConstruction, + public SequenceHdl<Geant4DetectorConstructionSequence> + { + protected: + Geant4DetectorConstructionContext m_ctxt; + public: + /// Standard constructor + Geant4UserDetectorConstruction(Geant4Context* ctxt, Geant4DetectorConstructionSequence* seq) + : G4VUserDetectorConstruction(), Base(ctxt, seq), + m_ctxt(ctxt->kernel().lcdd(), this) + { + } + /// Default destructor + virtual ~Geant4UserDetectorConstruction() { + } + /// Call the actions for the construction of the sensitive detectors and the field + virtual void ConstructSDandField(); + /// Call the actions to construct the detector geometry + virtual G4VPhysicalVolume* Construct(); + }; + + /// Concrete implementation of the Geant4 user initialization action sequence + /** @class Geant4UserActionInitialization + * + * @author M.Frank + * @version 1.0 + */ + class Geant4UserActionInitialization : + public G4VUserActionInitialization, + public SequenceHdl<Geant4UserInitializationSequence> + { + public: + /// Standard constructor + Geant4UserActionInitialization(Geant4Context* ctxt, Geant4UserInitializationSequence* seq) + : G4VUserActionInitialization(), Base(ctxt, seq) { + } + /// Default destructor + virtual ~Geant4UserActionInitialization() { + } + /// Build the actions for the worker thread + virtual void Build() const; + /// Build the action sequences for the master thread + virtual void BuildForMaster() const; + }; + /// Begin-of-run callback void Geant4UserRunAction::BeginOfRunAction(const G4Run* run) { createClientContext(run); kernel().executePhase("begin-run",(const void**)&run); - eventAction->setContextToClients(); - m_sequence->begin(run); + if ( m_sequence ) m_sequence->begin(run); // Action not mandatory } /// End-of-run callback void Geant4UserRunAction::EndOfRunAction(const G4Run* run) { - m_sequence->end(run); + if ( m_sequence ) m_sequence->end(run); // Action not mandatory kernel().executePhase("end-run",(const void**)&run); - eventAction->releaseContextFromClients(); destroyClientContext(run); } /// Begin-of-event callback void Geant4UserEventAction::BeginOfEventAction(const G4Event* evt) { - runAction->setContextToClients(); - setContextToClients(); kernel().executePhase("begin-event",(const void**)&evt); - m_sequence->begin(evt); + if ( m_sequence ) m_sequence->begin(evt); // Action not mandatory } /// End-of-event callback void Geant4UserEventAction::EndOfEventAction(const G4Event* evt) { - m_sequence->end(evt); - runAction->releaseContextFromClients(); + if ( m_sequence ) m_sequence->end(evt); // Action not mandatory kernel().executePhase("end-event",(const void**)&evt); destroyClientContext(evt); } + + /// Generate primary particles + void Geant4UserGeneratorAction::GeneratePrimaries(G4Event* event) { + createClientContext(event); + if ( m_sequence ) { + (*m_sequence)(event); + return; + } + throw std::runtime_error("GeneratePrimaries: Panic! No action sequencer defined. " + "No primary particles can be produced."); + } + + /// Instantiate Geant4 sensitive detectors and electro-magnetic field + void Geant4UserDetectorConstruction::ConstructSDandField() { + G4AutoLock protection_lock(&action_mutex); + Geant4Context* ctx = m_sequence->context(); + Geant4Kernel* krnl = 0; + try { + krnl = &kernel().worker(::pthread_self()); + } + catch(...) { + } + if ( 0 == krnl ) { + krnl = &kernel().createWorker(); + } + updateContext(krnl->workerContext()); + m_sequence->constructField(&m_ctxt); + m_sequence->constructSensitives(&m_ctxt); + updateContext(ctx); + } + + /// Construct electro magnetic field entity from the DD4hep field + G4VPhysicalVolume* Geant4UserDetectorConstruction::Construct() { + // The G4TransportationManager is thread-local. + // Thus, regardless of whether the field class object is global or local + // to a certain volume, a field object must be assigned to G4FieldManager. + G4AutoLock protection_lock(&action_mutex); + updateContext(m_sequence->context()); + m_sequence->constructGeo(&m_ctxt); + if ( 0 == m_ctxt.world ) { + m_sequence->except("+++ Executing G4 detector construction did not result in a valid world volume!"); + } + return m_ctxt.world; + } + + /// Build the actions for the worker thread + void Geant4UserActionInitialization::Build() const { + G4AutoLock protection_lock(&action_mutex); + Geant4Kernel* krnl = 0; + try { + krnl = &kernel().worker(::pthread_self()); + } + catch(...) { + } + if ( 0 == krnl ) { + krnl = &kernel().createWorker(); + } + Geant4Context* ctx = krnl->workerContext(); + + if ( m_sequence ) { + Geant4Context* old = m_sequence->context(); + m_sequence->info("+++ Executing Geant4UserActionInitialization::Build. " + "Context:%p Kernel:%p [%ld]", (void*)ctx, (void*)krnl, krnl->id()); + + m_sequence->updateContext(ctx); + m_sequence->build(); + m_sequence->updateContext(old); + } + // Set user generator action sequence. Not optional, since event context is defined inside + Geant4UserGeneratorAction* gen_action = new Geant4UserGeneratorAction(ctx,krnl->generatorAction(false)); + SetUserAction(gen_action); + + // Set the run action sequence. Not optional, since run context is defined/destroyed inside + Geant4UserRunAction* run_action = new Geant4UserRunAction(ctx,krnl->runAction(false)); + SetUserAction(run_action); + + // Set the event action sequence. Not optional, since event context is destroyed inside + Geant4UserEventAction* evt_action = new Geant4UserEventAction(ctx,krnl->eventAction(false)); + run_action->eventAction = evt_action; + evt_action->runAction = run_action; + SetUserAction(evt_action); + + // Set the tracking action sequence + Geant4TrackingActionSequence* trk_action = krnl->trackingAction(false); + if ( trk_action ) { + Geant4UserTrackingAction* action = new Geant4UserTrackingAction(ctx, trk_action); + SetUserAction(action); + } + // Set the stepping action sequence + Geant4SteppingActionSequence* stp_action = krnl->steppingAction(false); + if ( stp_action ) { + Geant4UserSteppingAction* action = new Geant4UserSteppingAction(ctx, stp_action); + SetUserAction(action); + } + // Set the stacking action sequence + Geant4StackingActionSequence* stk_action = krnl->stackingAction(false); + if ( stk_action ) { + Geant4UserStackingAction* action = new Geant4UserStackingAction(ctx, stk_action); + SetUserAction(action); + } + + } + + /// Build the action sequences for the master thread + void Geant4UserActionInitialization::BuildForMaster() const { + if ( m_sequence ) { + m_sequence->info("+++ Executing Geant4UserActionInitialization::BuildForMaster...."); + m_sequence->buildMaster(); + } + } } } @@ -322,11 +498,40 @@ using namespace DD4hep::Simulation; #include "G4RunManager.hh" #include "G4PhysListFactory.hh" +class Geant4Compatibility { +public: + Geant4Compatibility() {} + Geant4DetectorConstructionSequence* buildDefaultDetectorConstruction(Geant4Kernel& kernel); +}; +Geant4DetectorConstructionSequence* Geant4Compatibility::buildDefaultDetectorConstruction(Geant4Kernel& kernel) { + Geant4Action* cr; + Geant4DetectorConstruction* det_cr; + Geant4Context* ctx = kernel.workerContext(); + Geant4DetectorConstructionSequence* seq = kernel.detectorConstruction(true); + printout(WARNING, "Geant4Exec", "+++ Building default Geant4DetectorConstruction for single threaded compatibility."); + + // Attach first the geometry converter from DD4hep to Geant4 + cr = PluginService::Create<Geant4Action*>("Geant4DetectorGeometryConstruction",ctx,string("ConstructGeometry")); + det_cr = dynamic_cast<Geant4DetectorConstruction*>(cr); + if ( det_cr ) + seq->adopt(det_cr); + else + throw runtime_error("Panic! Failed to build Geant4DetectorGeometryConstruction."); + // Attach the sensitive detector manipulator: + cr = PluginService::Create<Geant4Action*>("Geant4DetectorSensitivesConstruction",ctx,string("ConstructSensitives")); + det_cr = dynamic_cast<Geant4DetectorConstruction*>(cr); + if ( det_cr ) + seq->adopt(det_cr); + else + throw runtime_error("Panic! Failed to build Geant4DetectorSensitivesConstruction."); + return seq; +} + /// Configure the simulation int Geant4Exec::configure(Geant4Kernel& kernel) { CLHEP::HepRandom::setTheEngine(new CLHEP::RanecuEngine); Geometry::LCDD& lcdd = kernel.lcdd(); - Geant4Context* ctx = s_globalContext = new Geant4Context(&kernel); + Geant4Context* ctx = kernel.workerContext(); Geant4Random* rndm = Geant4Random::instance(false); if ( !rndm ) { @@ -334,7 +539,6 @@ int Geant4Exec::configure(Geant4Kernel& kernel) { /// Initialize the engine etc. rndm->initialize(); } - kernel.executePhase("configure",0); // Construct the default run manager @@ -343,52 +547,45 @@ int Geant4Exec::configure(Geant4Kernel& kernel) { // Check if the geometry was loaded if (lcdd.sensitiveDetectors().size() <= 1) { printout(WARNING, "Geant4Exec", "+++ Only %d subdetectors present. " - "You sure you loaded the geometry properly?",int(lcdd.sensitiveDetectors().size())); + "You sure you loaded the geometry properly?", + int(lcdd.sensitiveDetectors().size())); } - // Get the detector constructed - Geant4DetectorConstruction* detector = Geant4DetectorConstruction::instance(kernel); - runManager.SetUserInitialization(detector); - Geant4PhysicsListActionSequence* seq = kernel.physicsList(false); - if ( 0 == seq ) { - seq = kernel.physicsList(true); - seq->property("Extends").set<string>("QGSP_BERT"); + // Get the detector constructed + Geant4DetectorConstructionSequence* user_det = kernel.detectorConstruction(false); + if ( 0 == user_det && kernel.isMultiThreaded() ) { + throw runtime_error("Panic! No valid detector construction sequencer present. [Mandatory MT]"); + } + if ( 0 == user_det && !kernel.isMultiThreaded() ) { + user_det = Geant4Compatibility().buildDefaultDetectorConstruction(kernel); } - G4VUserPhysicsList* physics = seq->extensionList(); + Geant4UserDetectorConstruction* det_seq = new Geant4UserDetectorConstruction(ctx,user_det); + runManager.SetUserInitialization(det_seq); + + // Get the physics list constructed + Geant4PhysicsListActionSequence* phys_seq = kernel.physicsList(false); + if ( 0 == phys_seq ) { + string phys_model = "QGSP_BERT"; + phys_seq = kernel.physicsList(true); + phys_seq->property("extends").set<string>(phys_model); + } + G4VUserPhysicsList* physics = phys_seq->extensionList(); if (0 == physics) { throw runtime_error("Panic! No valid user physics list present!"); } runManager.SetUserInitialization(physics); - // Set user generator action sequence. Not optional, since event context is defined inside - Geant4UserGeneratorAction* gen_action = - new Geant4UserGeneratorAction(ctx,kernel.generatorAction(false)); - runManager.SetUserAction(gen_action); - - // Set the run action sequence. Not optional, since run context is defined/destroyed inside - Geant4UserRunAction* run_action = new Geant4UserRunAction(ctx,kernel.runAction(false)); - runManager.SetUserAction(run_action); - - // Set the event action sequence. Not optional, since event context is destroyed inside - Geant4UserEventAction* evt_action = new Geant4UserEventAction(ctx,kernel.eventAction(false)); - runManager.SetUserAction(evt_action); - run_action->eventAction = evt_action; - evt_action->runAction = run_action; - - // Set the tracking action sequence - if (kernel.trackingAction(false)) { - Geant4UserTrackingAction* action = new Geant4UserTrackingAction(ctx,kernel.trackingAction(false)); - runManager.SetUserAction(action); - } - // Set the stepping action sequence - if (kernel.steppingAction(false)) { - Geant4UserSteppingAction* action = new Geant4UserSteppingAction(ctx,kernel.steppingAction(false)); - runManager.SetUserAction(action); + + // Construct the remaining user initialization in multi-threaded mode + Geant4UserInitializationSequence* user_init = kernel.userInitialization(false); + if ( 0 == user_init && kernel.isMultiThreaded() ) { + throw runtime_error("Panic! No valid user initialization sequencer present. [Mandatory MT]"); } - // Set the stacking action sequence - if (kernel.stackingAction(false)) { - Geant4UserStackingAction* action = new Geant4UserStackingAction(ctx,kernel.stackingAction(false)); - runManager.SetUserAction(action); + else if ( 0 == user_init && !kernel.isMultiThreaded() ) { + // Use default actions registered to the default kernel. Will do the right thing... + user_init = kernel.userInitialization(true); } + Geant4UserActionInitialization* init = new Geant4UserActionInitialization(ctx,user_init); + runManager.SetUserInitialization(init); return 1; } @@ -432,6 +629,5 @@ int Geant4Exec::run(Geant4Kernel& kernel) { /// Run the simulation int Geant4Exec::terminate(Geant4Kernel& kernel) { kernel.executePhase("terminate",0); - deletePtr(s_globalContext); return 1; } diff --git a/DDG4/src/Geant4GeneratorAction.cpp b/DDG4/src/Geant4GeneratorAction.cpp index f6a1d6fea..c54dbb16d 100644 --- a/DDG4/src/Geant4GeneratorAction.cpp +++ b/DDG4/src/Geant4GeneratorAction.cpp @@ -15,14 +15,21 @@ // Framework include files #include "DD4hep/InstanceCount.h" #include "DDG4/Geant4GeneratorAction.h" - +// Geant4 headers +#include "G4Threading.hh" +#include "G4AutoLock.hh" // C/C++ include files #include <stdexcept> +using namespace std; using namespace DD4hep::Simulation; +namespace { + G4Mutex action_mutex=G4MUTEX_INITIALIZER; +} + /// Standard constructor -Geant4GeneratorAction::Geant4GeneratorAction(Geant4Context* ctxt, const std::string& nam) +Geant4GeneratorAction::Geant4GeneratorAction(Geant4Context* ctxt, const string& nam) : Geant4Action(ctxt, nam) { InstanceCount::increment(this); } @@ -33,7 +40,45 @@ Geant4GeneratorAction::~Geant4GeneratorAction() { } /// Standard constructor -Geant4GeneratorActionSequence::Geant4GeneratorActionSequence(Geant4Context* ctxt, const std::string& nam) +Geant4SharedGeneratorAction::Geant4SharedGeneratorAction(Geant4Context* ctxt, const string& nam) + : Geant4GeneratorAction(ctxt, nam) +{ + InstanceCount::increment(this); +} + +/// Default destructor +Geant4SharedGeneratorAction::~Geant4SharedGeneratorAction() { + releasePtr(m_action); + InstanceCount::decrement(this); +} + +/// Set or update client for the use in a new thread fiber +void Geant4SharedGeneratorAction::configureFiber(Geant4Context* thread_context) { + m_action->configureFiber(thread_context); +} + +/// Underlying object to be used during the execution of this thread +void Geant4SharedGeneratorAction::use(Geant4GeneratorAction* action) { + if (action) { + action->addRef(); + m_action = action; + return; + } + throw runtime_error("Geant4SharedGeneratorAction: Attempt to use invalid actor!"); +} + +/// User generator callback +void Geant4SharedGeneratorAction::operator()(G4Event* event) { + if ( m_action ) { + G4AutoLock protection_lock(&action_mutex); { + ContextSwap swap(m_action,context()); + (*m_action)(event); + } + } +} + +/// Standard constructor +Geant4GeneratorActionSequence::Geant4GeneratorActionSequence(Geant4Context* ctxt, const string& nam) : Geant4Action(ctxt, nam) { m_needsControl = true; InstanceCount::increment(this); @@ -47,20 +92,35 @@ Geant4GeneratorActionSequence::~Geant4GeneratorActionSequence() { InstanceCount::decrement(this); } +/// Set or update client context +void Geant4GeneratorActionSequence::updateContext(Geant4Context* ctxt) { + m_context = ctxt; + m_actors.updateContext(ctxt); +} + +/// Set or update client for the use in a new thread fiber +void Geant4GeneratorActionSequence::configureFiber(Geant4Context* thread_context) { + m_actors(&Geant4Action::configureFiber, thread_context); +} + +/// Get an action by name +Geant4GeneratorAction* Geant4GeneratorActionSequence::get(const string& nam) const { + return m_actors.get(FindByName(TypeName::split(nam).second)); +} + /// Add an actor responding to all callbacks. Sequence takes ownership. void Geant4GeneratorActionSequence::adopt(Geant4GeneratorAction* action) { if (action) { + G4AutoLock protection_lock(&action_mutex); action->addRef(); m_actors.add(action); return; } - throw std::runtime_error("Geant4GeneratorActionSequence: Attempt to add invalid actor!"); + throw runtime_error("Geant4GeneratorActionSequence: Attempt to add invalid actor!"); } /// Generator callback void Geant4GeneratorActionSequence::operator()(G4Event* event) { - m_actors(ContextUpdate(context())); m_actors(&Geant4GeneratorAction::operator(), event); m_calls(event); - m_actors(ContextUpdate(0)); } diff --git a/DDG4/src/Geant4Handle.cpp b/DDG4/src/Geant4Handle.cpp index 38e9091a5..956b94acc 100644 --- a/DDG4/src/Geant4Handle.cpp +++ b/DDG4/src/Geant4Handle.cpp @@ -28,6 +28,12 @@ #include "DDG4/Geant4SensDetAction.h" #include "DDG4/Geant4PhysicsList.h" #include "DDG4/Geant4ActionPhase.h" +#include "DDG4/Geant4UserInitialization.h" +#include "DDG4/Geant4DetectorConstruction.h" + +// Geant4 include files +#include "G4Threading.hh" +#include "G4AutoLock.hh" // C/C++ include files #include <stdexcept> @@ -35,181 +41,248 @@ using namespace std; using namespace DD4hep; using namespace DD4hep::Simulation; +namespace { + G4Mutex creation_mutex=G4MUTEX_INITIALIZER; +} namespace DD4hep { namespace Simulation { -template <typename TYPE> static inline TYPE* checked_value(TYPE* p) { - if (p) { - return p; - } - throw runtime_error( - format("Geant4Handle", "Attempt to access an invalid object of type:%s!", typeName(typeid(TYPE)).c_str())); -} + template <typename TYPE> static inline TYPE* checked_value(TYPE* p) { + if (p) { + return p; + } + throw runtime_error(format("Geant4Handle", "Attempt to access an invalid object of type:%s!", typeName(typeid(TYPE)).c_str())); + } -template <typename TYPE> Geant4Handle<TYPE>::Geant4Handle() - : value(0) { -} + template <typename TYPE> Geant4Handle<TYPE>::Geant4Handle() + : value(0) { + } -template <typename TYPE> Geant4Handle<TYPE>::Geant4Handle(TYPE* typ) -: value(typ) { - if (value) - value->addRef(); -} + template <typename TYPE> Geant4Handle<TYPE>::Geant4Handle(TYPE* typ) + : value(typ) { + if (value) + value->addRef(); + } -template <typename TYPE> Geant4Handle<TYPE>::Geant4Handle(const Geant4Handle<TYPE>& handle) - : value(0) { - value = handle.get(); - if (value) - value->addRef(); -} + template <typename TYPE> Geant4Handle<TYPE>::Geant4Handle(const Geant4Handle<TYPE>& handle) + : value(0) { + value = handle.get(); + if (value) + value->addRef(); + } -template <typename TYPE> Geant4Handle<TYPE>::Geant4Handle(Geant4Kernel& kernel, const string& type_name) - : value(0) { - TypeName typ = TypeName::split(type_name); - Geant4Context ctxt(&kernel); - Geant4Action* object = PluginService::Create<Geant4Action*>(typ.first, &ctxt, typ.second); - if (!object && typ.first == typ.second) { - typ.first = typeName(typeid(TYPE)); - printout(DEBUG, "Geant4Handle<Geant4Sensitive>", "Object factory for %s not found. Try out %s", typ.second.c_str(), - typ.first.c_str()); - object = PluginService::Create<Geant4Action*>(typ.first, &ctxt, typ.second); - if (!object) { - size_t idx = typ.first.rfind(':'); - if (idx != string::npos) - typ.first = string(typ.first.substr(idx + 1)); - printout(DEBUG, "Geant4Handle<Geant4Sensitive>", "Try out object factory for %s", typ.first.c_str()); - object = PluginService::Create<Geant4Action*>(typ.first, &ctxt, typ.second); + template <typename TYPE> TYPE* _create_object(Geant4Kernel& kernel, const TypeName& typ) { + Geant4Context* ctxt = kernel.workerContext(); + Geant4Action* object = PluginService::Create<Geant4Action*>(typ.first, ctxt, typ.second); + if (!object && typ.first == typ.second) { + string _t = typeName(typeid(TYPE)); + printout(DEBUG, "Geant4Handle", "Object factory for %s not found. Try out %s", + typ.second.c_str(), _t.c_str()); + object = PluginService::Create<Geant4Action*>(_t, ctxt, typ.second); + if (!object) { + size_t idx = _t.rfind(':'); + if (idx != string::npos) + _t = string(_t.substr(idx + 1)); + printout(DEBUG, "Geant4Handle", "Try out object factory for %s",_t.c_str()); + object = PluginService::Create<Geant4Action*>(_t, ctxt, typ.second); + } + } + if (object) { + TYPE* ptr = dynamic_cast<TYPE*>(object); + if (ptr) { + return ptr; + } + throw runtime_error(format("Geant4Handle", "Failed to convert object of type %s to handle of type %s!", + typ.first.c_str(),typ.second.c_str())); + } + throw runtime_error(format("Geant4Handle", "Failed to create object of type %s!", typ.first.c_str())); } - } - if (object) { - TYPE* ptr = dynamic_cast<TYPE*>(object); - if (ptr) { - value = ptr; - return; - } - throw runtime_error( - format("Geant4Handle", "Failed to convert object of type %s to handle of type %s!", type_name.c_str(), - typeName(typeid(TYPE)).c_str())); - } - throw runtime_error(format("Geant4Handle", "Failed to create object of type %s!", type_name.c_str())); -} -template <typename TYPE> Geant4Handle<TYPE>::Geant4Handle(Geant4Kernel& kernel, const char* type_name_char) - : value(0) { - string type_name = type_name_char; - TypeName typ = TypeName::split(type_name); - Geant4Context ctxt(&kernel); - Geant4Action* object = PluginService::Create<Geant4Action*>(typ.first, &ctxt, typ.second); - if (!object && typ.first == typ.second) { - typ.first = typeName(typeid(TYPE)); - printout(DEBUG, "Geant4Handle<Geant4Sensitive>", "Object factory for %s not found. Try out %s", typ.second.c_str(), - typ.first.c_str()); - object = PluginService::Create<Geant4Action*>(typ.first, &ctxt, typ.second); - if (!object) { - size_t idx = typ.first.rfind(':'); - if (idx != string::npos) - typ.first = string(typ.first.substr(idx + 1)); - printout(DEBUG, "Geant4Handle<Geant4Sensitive>", "Try out object factory for %s", typ.first.c_str()); - object = PluginService::Create<Geant4Action*>(typ.first, &ctxt, typ.second); + template <typename TYPE, typename CONT> + TYPE* _create_share(Geant4Kernel& kernel, + CONT& (Geant4Kernel::*pmf)(), + const string& type_name, + const string& shared_typ, + bool shared, TYPE*) + { + TypeName typ = TypeName::split(type_name); + Geant4Kernel& k = shared ? kernel.master() : kernel; + if ( shared && k.isMultiThreaded() ) { + typedef typename TYPE::shared_type _ST; + TypeName s_type = TypeName::split(shared_typ+"/"+typ.second); + _ST* object = (_ST*)_create_object<TYPE>(kernel,s_type); + CONT& container = (k.*pmf)(); + TYPE* value = 0; + // Need to protect the global action sequence! + G4AutoLock protection_lock(&creation_mutex); { + value = container.get(typ.second); + if ( !value ) value = _create_object<TYPE>(k,typ); + container.adopt(value); + } + object->use(value); + value->info("+++ Created shared object for %s of type %s.", + typ.second.c_str(),typeName(typeid(TYPE)).c_str()); + return object; + } + TYPE* value = _create_object<TYPE>(k,typ); + return value; } - } - if (object) { - TYPE* ptr = dynamic_cast<TYPE*>(object); - if (ptr) { - value = ptr; - return; - } - throw runtime_error( - format("Geant4Handle", "Failed to convert object of type %s to handle of type %s!", type_name.c_str(), - typeName(typeid(TYPE)).c_str())); - } - throw runtime_error(format("Geant4Handle", "Failed to create object of type %s!", type_name.c_str())); -} -template <typename TYPE> Geant4Handle<TYPE>::~Geant4Handle() { - if (value) - value->release(); - value = 0; -} + template <typename TYPE> + Geant4Handle<TYPE>::Geant4Handle(Geant4Kernel& kernel, const string& type_name, bool /* shared */) { + value = _create_object<TYPE>(kernel,TypeName::split(type_name)); + } -template <typename TYPE> TYPE* Geant4Handle<TYPE>::release() { - TYPE* temp = value; - value = 0; - return temp; -} + template <typename TYPE> + Geant4Handle<TYPE>::Geant4Handle(Geant4Kernel& kernel, const char* type_name_char, bool /* shared */) { + value = _create_object<TYPE>(kernel,TypeName::split(type_name_char ? type_name_char : "????")); + } -template <typename TYPE> void Geant4Handle<TYPE>::checked_assign(TYPE* p) { - if (value) - value->release(); - value = checked_value(p); - if (value) - value->addRef(); -} + template <typename TYPE> Geant4Handle<TYPE>::~Geant4Handle() { + if (value) + value->release(); + value = 0; + } -template <typename TYPE> Property& Geant4Handle<TYPE>::operator[](const string& property_name) const { - PropertyManager& pm = checked_value(value)->properties(); - return pm[property_name]; -} + template <typename TYPE> TYPE* Geant4Handle<TYPE>::release() { + TYPE* temp = value; + value = 0; + return temp; + } -template <typename TYPE> Geant4Handle<TYPE>::operator TYPE*() const { - return checked_value(value); -} + template <typename TYPE> void Geant4Handle<TYPE>::checked_assign(TYPE* p) { + if (value) + value->release(); + value = checked_value(p); + if (value) + value->addRef(); + } -template <typename TYPE> bool Geant4Handle<TYPE>::operator!() const { - return 0 == value; -} + template <typename TYPE> Property& Geant4Handle<TYPE>::operator[](const string& property_name) const { + PropertyManager& pm = checked_value(value)->properties(); + return pm[property_name]; + } -template <typename TYPE> TYPE* Geant4Handle<TYPE>::get() const { - return checked_value(value); -} + template <typename TYPE> Geant4Handle<TYPE>::operator TYPE*() const { + return checked_value(value); + } -template <typename TYPE> TYPE* Geant4Handle<TYPE>::operator->() const { - return checked_value(value); -} + template <typename TYPE> bool Geant4Handle<TYPE>::operator!() const { + return 0 == value; + } -template <typename TYPE> Geant4Action* Geant4Handle<TYPE>::action() const { - return checked_value(value); -} + template <typename TYPE> TYPE* Geant4Handle<TYPE>::get() const { + return checked_value(value); + } -template <typename TYPE> Geant4Handle<TYPE>& Geant4Handle<TYPE>::operator=(const Geant4Handle& handle) { - if ( &handle != this ) { - if (value) value->release(); - value = handle.get(); - if (value) value->addRef(); - } - return *this; -} + template <typename TYPE> TYPE* Geant4Handle<TYPE>::operator->() const { + return checked_value(value); + } -template <typename TYPE> Geant4Handle<TYPE>& Geant4Handle<TYPE>::operator=(TYPE* typ) { - if ( typ != value ) { - if (value) value->release(); - value = typ; - if (value) value->addRef(); - } - return *this; -} + template <typename TYPE> Geant4Action* Geant4Handle<TYPE>::action() const { + return checked_value(value); + } -//namespace DD4hep { -// namespace Simulation { + template <typename TYPE> Geant4Handle<TYPE>& Geant4Handle<TYPE>::operator=(const Geant4Handle& handle) { + if ( &handle != this ) { + if (value) value->release(); + value = handle.get(); + if (value) value->addRef(); + } + return *this; + } + + template <typename TYPE> Geant4Handle<TYPE>& Geant4Handle<TYPE>::operator=(TYPE* typ) { + if ( typ != value ) { + if (value) value->release(); + value = typ; + if (value) value->addRef(); + } + return *this; + } + + //namespace DD4hep { + // namespace Simulation { KernelHandle::KernelHandle() { value = &Geant4Kernel::instance(Geometry::LCDD::getInstance()); } + KernelHandle::KernelHandle(Geant4Kernel* k) : value(k) { + } + KernelHandle KernelHandle::worker() { + Geant4Kernel* k = value ? &value->worker(::pthread_self()) : 0; + if ( k ) return KernelHandle(k); + throw runtime_error(format("KernelHandle", "Cannot access worker context [Invalid Handle]")); + } void KernelHandle::destroy() { if ( value ) delete value; value = 0; } + template <> + Geant4Handle<Geant4RunAction>::Geant4Handle(Geant4Kernel& kernel, const string& type_name, bool shared) { + value = _create_share(kernel,&Geant4Kernel::runAction,type_name,"Geant4SharedRunAction",shared,(handled_type*)0); + } + template <> + Geant4Handle<Geant4RunAction>::Geant4Handle(Geant4Kernel& kernel, const char* type_name, bool shared) { + value = _create_share(kernel,&Geant4Kernel::runAction,type_name,"Geant4SharedRunAction",shared,(handled_type*)0); + } + + template <> + Geant4Handle<Geant4EventAction>::Geant4Handle(Geant4Kernel& kernel, const string& type_name, bool shared) { + value = _create_share(kernel,&Geant4Kernel::eventAction,type_name,"Geant4SharedEventAction",shared,(handled_type*)0); + } + template <> + Geant4Handle<Geant4EventAction>::Geant4Handle(Geant4Kernel& kernel, const char* type_name, bool shared) { + value = _create_share(kernel,&Geant4Kernel::eventAction,type_name,"Geant4SharedEventAction",shared,(handled_type*)0); + } + + template <> + Geant4Handle<Geant4GeneratorAction>::Geant4Handle(Geant4Kernel& kernel, const string& type_name, bool shared) { + value = _create_share(kernel,&Geant4Kernel::generatorAction,type_name,"Geant4SharedGeneratorAction",shared,(handled_type*)0); + } + template <> + Geant4Handle<Geant4GeneratorAction>::Geant4Handle(Geant4Kernel& kernel, const char* type_name, bool shared) { + value = _create_share(kernel,&Geant4Kernel::generatorAction,type_name,"Geant4SharedGeneratorAction",shared,(handled_type*)0); + } + + template <> + Geant4Handle<Geant4TrackingAction>::Geant4Handle(Geant4Kernel& kernel, const string& type_name, bool shared) { + value = _create_share(kernel,&Geant4Kernel::trackingAction,type_name,"Geant4SharedTrackingAction",shared,(handled_type*)0); + } + template <> + Geant4Handle<Geant4TrackingAction>::Geant4Handle(Geant4Kernel& kernel, const char* type_name, bool shared) { + value = _create_share(kernel,&Geant4Kernel::trackingAction,type_name,"Geant4SharedTrackingAction",shared,(handled_type*)0); + } + + template <> + Geant4Handle<Geant4SteppingAction>::Geant4Handle(Geant4Kernel& kernel, const string& type_name, bool shared) { + value = _create_share(kernel,&Geant4Kernel::steppingAction,type_name,"Geant4SharedSteppingAction",shared,(handled_type*)0); + } + template <> + Geant4Handle<Geant4SteppingAction>::Geant4Handle(Geant4Kernel& kernel, const char* type_name, bool shared) { + value = _create_share(kernel,&Geant4Kernel::steppingAction,type_name,"Geant4SharedSteppingAction",shared,(handled_type*)0); + } + + template <> + Geant4Handle<Geant4StackingAction>::Geant4Handle(Geant4Kernel& kernel, const string& type_name, bool shared) { + value = _create_share(kernel,&Geant4Kernel::stackingAction,type_name,"Geant4SharedStackingAction",shared,(handled_type*)0); + } + template <> + Geant4Handle<Geant4StackingAction>::Geant4Handle(Geant4Kernel& kernel, const char* type_name, bool shared) { + value = _create_share(kernel,&Geant4Kernel::stackingAction,type_name,"Geant4SharedStackingAction",shared,(handled_type*)0); + } + template <> Geant4Handle<Geant4Sensitive>::Geant4Handle(Geant4Kernel& kernel, const string& type_name, - const string& detector) { + const string& detector, bool /* shared */) { try { - Geant4Context ctxt(&kernel); + Geant4Context* ctxt = kernel.workerContext(); TypeName typ = TypeName::split(type_name); Geometry::LCDD& lcdd = kernel.lcdd(); Geometry::DetElement det = lcdd.detector(detector); - Geant4Sensitive* object = PluginService::Create<Geant4Sensitive*>(typ.first, &ctxt, typ.second, &det, &lcdd); + Geant4Sensitive* object = PluginService::Create<Geant4Sensitive*>(typ.first, ctxt, typ.second, &det, &lcdd); if (object) { value = object; return; @@ -221,32 +294,36 @@ template <typename TYPE> Geant4Handle<TYPE>& Geant4Handle<TYPE>::operator=(TYPE* catch (...) { printout(ERROR, "Geant4Handle<Geant4Sensitive>", "Exception: Unknown exception"); } - throw runtime_error( - format("Geant4Handle<Geant4Sensitive>", "Failed to create sensitive object of type %s for detector %s!", + throw runtime_error(format("Geant4Handle<Geant4Sensitive>", + "Failed to create sensitive object of type %s for detector %s!", type_name.c_str(), detector.c_str())); } -template class Geant4Handle<Geant4Action> ; -template class Geant4Handle<Geant4Filter> ; -template class Geant4Handle<Geant4Sensitive> ; -template class Geant4Handle<Geant4ActionPhase> ; -template class Geant4Handle<Geant4PhaseAction> ; -template class Geant4Handle<Geant4GeneratorAction> ; -template class Geant4Handle<Geant4RunAction> ; -template class Geant4Handle<Geant4EventAction> ; -template class Geant4Handle<Geant4TrackingAction> ; -template class Geant4Handle<Geant4SteppingAction> ; -template class Geant4Handle<Geant4StackingAction> ; -template class Geant4Handle<Geant4PhysicsList> ; - -template class Geant4Handle<Geant4GeneratorActionSequence> ; -template class Geant4Handle<Geant4PhysicsListActionSequence> ; -template class Geant4Handle<Geant4RunActionSequence> ; -template class Geant4Handle<Geant4EventActionSequence> ; -template class Geant4Handle<Geant4TrackingActionSequence> ; -template class Geant4Handle<Geant4SteppingActionSequence> ; -template class Geant4Handle<Geant4StackingActionSequence> ; -template class Geant4Handle<Geant4SensDetActionSequence> ; + template class Geant4Handle<Geant4Action>; + template class Geant4Handle<Geant4Filter>; + template class Geant4Handle<Geant4Sensitive>; + template class Geant4Handle<Geant4ActionPhase>; + template class Geant4Handle<Geant4PhaseAction>; + template class Geant4Handle<Geant4GeneratorAction>; + template class Geant4Handle<Geant4RunAction>; + template class Geant4Handle<Geant4EventAction>; + template class Geant4Handle<Geant4TrackingAction>; + template class Geant4Handle<Geant4SteppingAction>; + template class Geant4Handle<Geant4StackingAction>; + template class Geant4Handle<Geant4DetectorConstruction>; + template class Geant4Handle<Geant4PhysicsList>; + template class Geant4Handle<Geant4UserInitialization>; + + template class Geant4Handle<Geant4GeneratorActionSequence>; + template class Geant4Handle<Geant4PhysicsListActionSequence>; + template class Geant4Handle<Geant4RunActionSequence>; + template class Geant4Handle<Geant4EventActionSequence>; + template class Geant4Handle<Geant4TrackingActionSequence>; + template class Geant4Handle<Geant4SteppingActionSequence>; + template class Geant4Handle<Geant4StackingActionSequence>; + template class Geant4Handle<Geant4SensDetActionSequence>; + template class Geant4Handle<Geant4UserInitializationSequence>; + template class Geant4Handle<Geant4DetectorConstructionSequence>; } } diff --git a/DDG4/src/Geant4HitCollection.cpp b/DDG4/src/Geant4HitCollection.cpp index 1b1a2f28b..aa9cfc5f8 100644 --- a/DDG4/src/Geant4HitCollection.cpp +++ b/DDG4/src/Geant4HitCollection.cpp @@ -21,7 +21,7 @@ using namespace DD4hep; using namespace DD4hep::Simulation; -static G4Allocator<Geant4HitWrapper> HitWrapperAllocator; +G4ThreadLocal G4Allocator<Geant4HitWrapper>* HitWrapperAllocator = 0; Geant4HitWrapper::InvalidHit::~InvalidHit() { } @@ -47,12 +47,15 @@ Geant4HitWrapper::~Geant4HitWrapper() { /// Geant4 required object allocator void* Geant4HitWrapper::operator new(size_t) { - return HitWrapperAllocator.MallocSingle(); + if ( HitWrapperAllocator ) + return HitWrapperAllocator->MallocSingle(); + HitWrapperAllocator = new G4Allocator<Geant4HitWrapper>; + return HitWrapperAllocator->MallocSingle(); } /// Geat4 required object destroyer void Geant4HitWrapper::operator delete(void *p) { - HitWrapperAllocator.FreeSingle((Geant4HitWrapper*) p); + HitWrapperAllocator->FreeSingle((Geant4HitWrapper*) p); } /// Pointer/Object release diff --git a/DDG4/src/Geant4Hits.cpp b/DDG4/src/Geant4Hits.cpp index 86a96f1ec..acf871076 100644 --- a/DDG4/src/Geant4Hits.cpp +++ b/DDG4/src/Geant4Hits.cpp @@ -28,6 +28,10 @@ using namespace std; using namespace DD4hep::Simulation; +G4ThreadLocal G4Allocator<Geant4TrackerHit>* TrackerHitAllocator = 0; +G4ThreadLocal G4Allocator<Geant4CalorimeterHit>* CalorimeterHitAllocator = 0; + + /// Check if the Geant4 track is a Geantino bool Geant4Hit::isGeantino(G4Track* track) { if (track) { @@ -50,8 +54,6 @@ Geant4Hit::Contribution Geant4Hit::extractContribution(G4Step* step) { return contrib; } -static G4Allocator<Geant4TrackerHit> TrackerHitAllocator; - /// Default constructor Geant4TrackerHit::Geant4TrackerHit() : Geant4Hit(), position(), momentum(), length(0.0), truth(), energyDeposit(0.0) { @@ -103,16 +105,17 @@ Geant4TrackerHit& Geant4TrackerHit::storePoint(G4Step* step, G4StepPoint* pnt) { /// Geant4 required object allocator void* Geant4TrackerHit::operator new(size_t) { - return TrackerHitAllocator.MallocSingle(); + if ( TrackerHitAllocator ) + return TrackerHitAllocator->MallocSingle(); + TrackerHitAllocator = new G4Allocator<Geant4TrackerHit>; + return TrackerHitAllocator->MallocSingle(); } /// Geat4 required object destroyer void Geant4TrackerHit::operator delete(void *p) { - TrackerHitAllocator.FreeSingle((Geant4TrackerHit*) p); + TrackerHitAllocator->FreeSingle((Geant4TrackerHit*) p); } -static G4Allocator<Geant4CalorimeterHit> CalorimeterHitAllocator; - /// Standard constructor Geant4CalorimeterHit::Geant4CalorimeterHit(const Position& pos) : Geant4Hit(), position(pos), truth(), energyDeposit(0) { @@ -120,11 +123,14 @@ Geant4CalorimeterHit::Geant4CalorimeterHit(const Position& pos) /// Geant4 required object allocator void* Geant4CalorimeterHit::operator new(size_t) { - return CalorimeterHitAllocator.MallocSingle(); + if ( CalorimeterHitAllocator ) + return CalorimeterHitAllocator->MallocSingle(); + CalorimeterHitAllocator = new G4Allocator<Geant4CalorimeterHit>; + return CalorimeterHitAllocator->MallocSingle(); } /// Geat4 required object destroyer void Geant4CalorimeterHit::operator delete(void *p) { - CalorimeterHitAllocator.FreeSingle((Geant4CalorimeterHit*) p); + CalorimeterHitAllocator->FreeSingle((Geant4CalorimeterHit*) p); } diff --git a/DDG4/src/Geant4InputHandling.cpp b/DDG4/src/Geant4InputHandling.cpp index 82dc8df2b..3f7bd611a 100644 --- a/DDG4/src/Geant4InputHandling.cpp +++ b/DDG4/src/Geant4InputHandling.cpp @@ -31,7 +31,6 @@ #include <cmath> using namespace std; -using namespace CLHEP; using namespace DD4hep; using namespace DD4hep::Simulation; diff --git a/DDG4/src/Geant4Kernel.cpp b/DDG4/src/Geant4Kernel.cpp index 6dccbc048..dcadd8339 100644 --- a/DDG4/src/Geant4Kernel.cpp +++ b/DDG4/src/Geant4Kernel.cpp @@ -19,6 +19,7 @@ #include "DD4hep/InstanceCount.h" #include "DDG4/Geant4Kernel.h" +#include "DDG4/Geant4Context.h" #include "DDG4/Geant4ActionPhase.h" #include "DDG4/Geant4RunAction.h" @@ -28,10 +29,16 @@ #include "DDG4/Geant4TrackingAction.h" #include "DDG4/Geant4StackingAction.h" #include "DDG4/Geant4GeneratorAction.h" +#include "DDG4/Geant4DetectorConstruction.h" +#include "DDG4/Geant4UserInitialization.h" #include "DDG4/Geant4SensDetAction.h" // Geant4 include files +#ifdef G4MULTITHREADED +#include "G4MTRunManager.hh" +#else #include "G4RunManager.hh" +#endif #include "G4UIdirectory.hh" // C/C++ include files @@ -61,9 +68,9 @@ Geant4Kernel::PhaseSelector& Geant4Kernel::PhaseSelector::operator=(const PhaseS /// Phase access to the map Geant4ActionPhase& Geant4Kernel::PhaseSelector::operator[](const std::string& nam) const { - Geant4ActionPhase* phase = m_kernel->getPhase(nam); - if (phase) { - return *phase; + Geant4ActionPhase* action_phase = m_kernel->getPhase(nam); + if ( action_phase ) { + return *action_phase; } throw runtime_error(format("Geant4Kernel", "Attempt to access the nonexisting phase '%s'", nam.c_str())); } @@ -71,44 +78,73 @@ Geant4ActionPhase& Geant4Kernel::PhaseSelector::operator[](const std::string& na /// Standard constructor Geant4Kernel::Geant4Kernel(LCDD& lcdd_ref) : m_runManager(0), m_generatorAction(0), m_runAction(0), m_eventAction(0), - m_trackingAction(0), m_steppingAction(0), m_stackingAction(0), m_sensDetActions(0), - m_physicsList(0), m_lcdd(lcdd_ref), phase(this) { -#if 0 - registerSequence(m_runAction, "RunAction"); - registerSequence(m_eventAction, "EventAction"); - registerSequence(m_steppingAction, "SteppingAction"); - registerSequence(m_trackingAction, "TrackingAction"); - registerSequence(m_stackingAction, "StackingAction"); - registerSequence(m_generatorAction,"GeneratorAction"); -#endif + m_trackingAction(0), m_steppingAction(0), m_stackingAction(0), m_constructionAction(0), + m_sensDetActions(0), m_physicsList(0), m_userInit(0), m_lcdd(lcdd_ref), + m_numThreads(0), m_id(pthread_self()), m_master(this), phase(this) +{ m_sensDetActions = new Geant4SensDetSequences(); m_lcdd.addExtension < Geant4Kernel > (this); + m_ident = -1; declareProperty("UI",m_uiName); - declareProperty("OutputLevel",m_outputLevel = DEBUG); - declareProperty("NumEvents",m_numEvent = 10); - declareProperty("OutputLevels",m_clientLevels); + declareProperty("OutputLevel", m_outputLevel = DEBUG); + declareProperty("NumEvents", m_numEvent = 10); + declareProperty("OutputLevels", m_clientLevels); + declareProperty("NumberOfThreads",m_numThreads); + //declareProperty("MultiThreaded", m_multiThreaded=false); m_controlName = "/ddg4/"; m_control = new G4UIdirectory(m_controlName.c_str()); - m_control->SetGuidance("Control for all named Geant4 actions"); + m_control->SetGuidance("Control for named Geant4 actions"); + m_threadContext = new Geant4Context(this); + InstanceCount::increment(this); +} + +/// Standard constructor +Geant4Kernel::Geant4Kernel(LCDD& lcdd_ref, Geant4Kernel* m, unsigned long ident) + : m_runManager(0), m_generatorAction(0), m_runAction(0), m_eventAction(0), + m_trackingAction(0), m_steppingAction(0), m_stackingAction(0), m_constructionAction(0), + m_sensDetActions(0), m_physicsList(0), m_userInit(0), m_lcdd(lcdd_ref), m_id(ident), + m_master(m), phase(this) +{ + char text[64]; + m_numThreads = 1; + //m_multiThreaded = m_master->m_multiThreaded; + m_ident = m_master->m_workers.size(); + m_sensDetActions = new Geant4SensDetSequences(); + declareProperty("UI",m_uiName = m_master->m_uiName); + declareProperty("OutputLevel", m_outputLevel = m_master->m_outputLevel); + declareProperty("OutputLevels",m_clientLevels = m_master->m_clientLevels); + ::snprintf(text,sizeof(text),"/ddg4.%d/",(int)(m_master->m_workers.size())); + m_controlName = text; + m_control = new G4UIdirectory(m_controlName.c_str()); + m_control->SetGuidance("Control for thread specific Geant4 actions"); + m_threadContext = new Geant4Context(this); InstanceCount::increment(this); } /// Default destructor Geant4Kernel::~Geant4Kernel() { + destroyObjects(m_workers)(); + if ( isMaster() ) { + releaseObjects(m_globalFilters)(); + releaseObjects(m_globalActions)(); + } destroyPhases(); - for_each(m_globalFilters.begin(), m_globalFilters.end(), releaseObjects(m_globalFilters)); - for_each(m_globalActions.begin(), m_globalActions.end(), releaseObjects(m_globalActions)); deletePtr (m_runManager); releasePtr (m_physicsList); + releasePtr (m_constructionAction); releasePtr (m_stackingAction); releasePtr (m_steppingAction); releasePtr (m_trackingAction); releasePtr (m_eventAction); releasePtr (m_generatorAction); releasePtr (m_runAction); + releasePtr (m_userInit); deletePtr (m_sensDetActions); - m_lcdd.removeExtension < Geant4Kernel > (false); - m_lcdd.destroyInstance(); + deletePtr (m_threadContext); + if ( isMaster() ) { + m_lcdd.removeExtension < Geant4Kernel > (false); + m_lcdd.destroyInstance(); + } InstanceCount::decrement(this); } @@ -118,10 +154,58 @@ Geant4Kernel& Geant4Kernel::instance(LCDD& lcdd) { return obj; } +/// Accessof the Geant4Kernel object from the LCDD reference extension (if present and registered) +Geant4Kernel& Geant4Kernel::access(LCDD& lcdd) { + Geant4Kernel* kernel = lcdd.extension<Geant4Kernel>(); + if (!kernel) { + throw runtime_error(format("Geant4Kernel", "DDG4: The LCDD object has no registered " + "extension of type Geant4Kernel [No-Extension]")); + } + return *kernel; +} + +Geant4Context* Geant4Kernel::workerContext() { + if ( m_threadContext ) return m_threadContext; + throw runtime_error(format("Geant4Kernel", "DDG4: Master kernel object has no thread context! [Invalid Handle]")); +} + +/// Create identified worker instance +Geant4Kernel& Geant4Kernel::createWorker() { + if ( isMaster() ) { + unsigned long identifier = ::pthread_self(); + Geant4Kernel* w = new Geant4Kernel(m_lcdd, this, identifier); + m_workers[identifier] = w; + printout(INFO,"Geant4Kernel","+++ Created worker instance id=%ul",identifier); + return *w; + } + throw runtime_error(format("Geant4Kernel", "DDG4: Only the master instance may create workers.")); +} + +/// Access worker instance by it's identifier +Geant4Kernel& Geant4Kernel::worker(unsigned long identifier) { + Workers::iterator i = m_workers.find(identifier); + if ( i != m_workers.end() ) { + return *((*i).second); + } + else if ( !isMultiThreaded() ) { + unsigned long self = ::pthread_self(); + if ( identifier == self ) { + return *this; + } + } + throw runtime_error(format("Geant4Kernel", "DDG4: The Kernel object 0x%p does not exists!",(void*)identifier)); +} + +/// Access number of workers +int Geant4Kernel::numWorkers() const { + return m_workers.size(); +} + void Geant4Kernel::printProperties() const { - printout(ALWAYS,"Geant4Kernel","OutputLevel: %d",m_outputLevel); - printout(ALWAYS,"Geant4Kernel","UI: %s",m_uiName.c_str()); + printout(ALWAYS,"Geant4Kernel","OutputLevel: %d", m_outputLevel); + printout(ALWAYS,"Geant4Kernel","UI: %s", m_uiName.c_str()); printout(ALWAYS,"Geant4Kernel","NumEvents: %ld",m_numEvent); + printout(ALWAYS,"Geant4Kernel","NumThreads: %d", m_numThreads); for(ClientOutputLevels::const_iterator i=m_clientLevels.begin(); i!=m_clientLevels.end();++i) { printout(ALWAYS,"Geant4Kernel","OutputLevel[%s]: %d",(*i).first.c_str(),(*i).second); } @@ -137,16 +221,6 @@ DD4hep::Property& Geant4Kernel::property(const std::string& name) { return properties()[name]; } -/// Accessof the Geant4Kernel object from the LCDD reference extension (if present and registered) -Geant4Kernel& Geant4Kernel::access(LCDD& lcdd) { - Geant4Kernel* kernel = lcdd.extension<Geant4Kernel>(); - if (!kernel) { - throw runtime_error(format("Geant4Kernel", "DDG4: The LCDD object has no registered " - "extension of type Geant4Kernel [No-Extension]")); - } - return *kernel; -} - /// Fill cache with the global output level of a named object. Must be set before instantiation void Geant4Kernel::setOutputLevel(const std::string object, PrintLevel new_level) { m_clientLevels[object] = new_level; @@ -168,9 +242,30 @@ DD4hep::PrintLevel Geant4Kernel::setOutputLevel(PrintLevel new_level) { /// Access to the Geant4 run manager G4RunManager& Geant4Kernel::runManager() { - if (m_runManager) + if ( m_runManager ) { return *m_runManager; - return *(m_runManager = new G4RunManager); + } + else if ( isMaster() ) { +#ifdef G4MULTITHREADED + if ( m_numThreads > 0 ) { + printout(WARNING,"Geant4Kernel","+++ Multi-threaded mode requested with %d worker threads.",m_numThreads); + G4MTRunManager* run_mgr = new G4MTRunManager; + run_mgr->SetNumberOfThreads(m_numThreads); + m_runManager = run_mgr; + return *m_runManager; + } +#endif + if ( m_numThreads > 0 ) { + printout(WARNING,"Geant4Kernel","+++ Multi-threaded mode requested, " + "but not supported by this compilation of Geant4."); + printout(WARNING,"Geant4Kernel","+++ Falling back to single threaded mode."); + m_numThreads = 0; + } + return *(m_runManager = new G4RunManager); + } + throw runtime_error(format("Geant4Kernel", + "DDG4: Only the master thread may instantiate " + "a G4RunManager object!")); } /// Construct detector geometry using lcdd plugin @@ -186,17 +281,17 @@ void Geant4Kernel::loadXML(const char* fname) { m_lcdd.apply("DD4hepXMLLoader", 1, (char**) args); } -void Geant4Kernel::configure() { - Geant4Exec::configure(*this); +int Geant4Kernel::configure() { + return Geant4Exec::configure(*this); } -void Geant4Kernel::initialize() { - Geant4Exec::initialize(*this); +int Geant4Kernel::initialize() { + return Geant4Exec::initialize(*this); } -void Geant4Kernel::run() { +int Geant4Kernel::run() { try { - Geant4Exec::run(*this); + return Geant4Exec::run(*this); } catch(const exception& e) { printout(FATAL,"Geant4Kernel","+++ Exception while simulating:%s",e.what()); @@ -204,20 +299,22 @@ void Geant4Kernel::run() { catch(...) { printout(FATAL,"Geant4Kernel","+++ UNKNOWN exception while simulating."); } + return 0; } -void Geant4Kernel::runEvents(int num_events) { +int Geant4Kernel::runEvents(int num_events) { m_numEvent = num_events; - Geant4Exec::run(*this); + return Geant4Exec::run(*this); } -void Geant4Kernel::terminate() { +int Geant4Kernel::terminate() { Geant4Exec::terminate(*this); destroyPhases(); for_each(m_globalFilters.begin(), m_globalFilters.end(), releaseObjects(m_globalFilters)); for_each(m_globalActions.begin(), m_globalActions.end(), releaseObjects(m_globalActions)); deletePtr (m_runManager); releasePtr (m_physicsList); + releasePtr (m_constructionAction); releasePtr (m_stackingAction); releasePtr (m_steppingAction); releasePtr (m_trackingAction); @@ -226,12 +323,12 @@ void Geant4Kernel::terminate() { releasePtr (m_runAction); deletePtr (m_sensDetActions); //return *this; + return 1; } template <class C> bool Geant4Kernel::registerSequence(C*& seq, const std::string& name) { if (!name.empty()) { - Geant4Context ctxt(this); - seq = new C(&ctxt, name); + seq = new C(workerContext(), name); seq->installMessengers(); return true; } @@ -338,8 +435,7 @@ Geant4ActionPhase* Geant4Kernel::addPhase(const std::string& nam, const type_inf const type_info& arg2, bool throw_on_exist) { Phases::const_iterator i = m_phases.find(nam); if (i == m_phases.end()) { - Geant4Context ctxt(this); - Geant4ActionPhase* p = new Geant4ActionPhase(&ctxt, nam, arg0, arg1, arg2); + Geant4ActionPhase* p = new Geant4ActionPhase(workerContext(), nam, arg0, arg1, arg2); m_phases.insert(make_pair(nam, p)); return p; } @@ -408,6 +504,13 @@ Geant4StackingActionSequence* Geant4Kernel::stackingAction(bool create) { return m_stackingAction; } +/// Access detector construcion action sequence (geometry+sensitives+field) +Geant4DetectorConstructionSequence* Geant4Kernel::detectorConstruction(bool create) { + if (!m_constructionAction && create) + registerSequence(m_constructionAction, "StackingAction"); + return m_constructionAction; +} + /// Access to the sensitive detector sequences from the kernel object Geant4SensDetSequences& Geant4Kernel::sensitiveActions() const { return *m_sensDetActions; @@ -416,10 +519,10 @@ Geant4SensDetSequences& Geant4Kernel::sensitiveActions() const { /// Access to the sensitive detector action from the kernel object Geant4SensDetActionSequence* Geant4Kernel::sensitiveAction(const string& nam) { Geant4SensDetActionSequence* ptr = m_sensDetActions->find(nam); - if (ptr) + if (ptr) { return ptr; - Geant4Context ctxt(this); - ptr = new Geant4SensDetActionSequence(&ctxt, nam); + } + ptr = new Geant4SensDetActionSequence(workerContext(), nam); m_sensDetActions->insert(nam, ptr); return ptr; } @@ -430,3 +533,16 @@ Geant4PhysicsListActionSequence* Geant4Kernel::physicsList(bool create) { registerSequence(m_physicsList, "PhysicsList"); return m_physicsList; } + +/// Access to the physics list +Geant4UserInitializationSequence* Geant4Kernel::userInitialization(bool create) { + if ( !m_userInit && create ) { + if ( isMaster() ) + registerSequence(m_userInit, "UserInitialization"); + else + throw runtime_error(format("Geant4Kernel", + "DDG4: Only the master thread may initialize " + "a user initialization object!")); + } + return m_userInit; +} diff --git a/DDG4/src/Geant4OutputAction.cpp b/DDG4/src/Geant4OutputAction.cpp index 7bad4ffe1..016afbc1e 100644 --- a/DDG4/src/Geant4OutputAction.cpp +++ b/DDG4/src/Geant4OutputAction.cpp @@ -34,8 +34,8 @@ Geant4OutputAction::Geant4OutputAction(Geant4Context* ctxt, const string& nam) InstanceCount::increment(this); declareProperty("Output", m_output); declareProperty("HandleErrorsAsFatal", m_errorFatal=true); - context()->runAction().callAtBegin(this, &Geant4OutputAction::beginRun); - context()->runAction().callAtEnd(this, &Geant4OutputAction::endRun); + //ctxt->runAction().callAtBegin(this, &Geant4OutputAction::beginRun); + //ctxt->runAction().callAtEnd(this, &Geant4OutputAction::endRun); } /// Default destructor @@ -43,6 +43,13 @@ Geant4OutputAction::~Geant4OutputAction() { InstanceCount::decrement(this); } +/// Set or update client for the use in a new thread fiber with seperate action sequences +void Geant4OutputAction::configureFiber(Geant4Context* thread_ctxt) { + Geant4EventAction::configureFiber(thread_ctxt); + thread_ctxt->runAction().callAtBegin(this, &Geant4OutputAction::beginRun); + thread_ctxt->runAction().callAtEnd(this, &Geant4OutputAction::endRun); +} + /// begin-of-event callback void Geant4OutputAction::begin(const G4Event* /* event */) { } diff --git a/DDG4/src/Geant4Particle.cpp b/DDG4/src/Geant4Particle.cpp index f2a82824c..9ba33508f 100644 --- a/DDG4/src/Geant4Particle.cpp +++ b/DDG4/src/Geant4Particle.cpp @@ -27,7 +27,6 @@ #include <iostream> -using namespace CLHEP; using namespace DD4hep; using namespace DD4hep::Simulation; typedef ReferenceBitMask<int> PropertyMask; @@ -156,7 +155,7 @@ const G4ParticleDefinition* Geant4ParticleHandle::definition() const { G4ParticleTable* tab = G4ParticleTable::GetParticleTable(); G4ParticleDefinition* def = tab->FindParticle(particle->pdgID); if ( 0 == def && 0 == particle->pdgID ) { - if ( fabs(particle->charge) < 0.001 ) + if ( 0 == particle->charge ) return G4Geantino::Definition(); return G4ChargedGeantino::Definition(); } diff --git a/DDG4/src/Geant4RunAction.cpp b/DDG4/src/Geant4RunAction.cpp index cb2045c7c..58b049a6c 100644 --- a/DDG4/src/Geant4RunAction.cpp +++ b/DDG4/src/Geant4RunAction.cpp @@ -15,14 +15,21 @@ // Framework include files #include "DD4hep/InstanceCount.h" #include "DDG4/Geant4RunAction.h" - +// Geant4 headers +#include "G4Threading.hh" +#include "G4AutoLock.hh" // C/C++ include files #include <stdexcept> +using namespace std; using namespace DD4hep::Simulation; +namespace { + G4Mutex action_mutex=G4MUTEX_INITIALIZER; +} + /// Standard constructor -Geant4RunAction::Geant4RunAction(Geant4Context* ctxt, const std::string& nam) +Geant4RunAction::Geant4RunAction(Geant4Context* ctxt, const string& nam) : Geant4Action(ctxt, nam) { InstanceCount::increment(this); } @@ -41,7 +48,55 @@ void Geant4RunAction::end(const G4Run*) { } /// Standard constructor -Geant4RunActionSequence::Geant4RunActionSequence(Geant4Context* ctxt, const std::string& nam) +Geant4SharedRunAction::Geant4SharedRunAction(Geant4Context* ctxt, const string& nam) + : Geant4RunAction(ctxt, nam) +{ + InstanceCount::increment(this); +} + +/// Default destructor +Geant4SharedRunAction::~Geant4SharedRunAction() { + releasePtr(m_action); + InstanceCount::decrement(this); +} + +/// Set or update client for the use in a new thread fiber +void Geant4SharedRunAction::configureFiber(Geant4Context* thread_context) { + m_action->configureFiber(thread_context); +} + +/// Underlying object to be used during the execution of this thread +void Geant4SharedRunAction::use(Geant4RunAction* action) { + if (action) { + action->addRef(); + m_action = action; + return; + } + throw runtime_error("Geant4SharedRunAction: Attempt to use invalid actor!"); +} + +/// Begin-of-run callback +void Geant4SharedRunAction::begin(const G4Run* run) { + if ( m_action ) { + G4AutoLock protection_lock(&action_mutex); { + ContextSwap swap(m_action,context()); + m_action->begin(run); + } + } +} + +/// End-of-run callback +void Geant4SharedRunAction::end(const G4Run* run) { + if ( m_action ) { + G4AutoLock protection_lock(&action_mutex); { + ContextSwap swap(m_action,context()); + m_action->end(run); + } + } +} + +/// Standard constructor +Geant4RunActionSequence::Geant4RunActionSequence(Geant4Context* ctxt, const string& nam) : Geant4Action(ctxt, nam) { m_needsControl = true; InstanceCount::increment(this); @@ -56,26 +111,43 @@ Geant4RunActionSequence::~Geant4RunActionSequence() { InstanceCount::decrement(this); } +/// Set or update client context +void Geant4RunActionSequence::updateContext(Geant4Context* ctxt) { + m_context = ctxt; + m_actors.updateContext(ctxt); +} + +/// Set or update client for the use in a new thread fiber +void Geant4RunActionSequence::configureFiber(Geant4Context* thread_context) { + m_actors(&Geant4Action::configureFiber, thread_context); +} + +/// Get an action by name +Geant4RunAction* Geant4RunActionSequence::get(const string& nam) const { + return m_actors.get(FindByName(TypeName::split(nam).second)); +} + /// Add an actor responding to all callbacks. Sequence takes ownership. void Geant4RunActionSequence::adopt(Geant4RunAction* action) { if (action) { + G4AutoLock protection_lock(&action_mutex); action->addRef(); m_actors.add(action); return; } - throw std::runtime_error("Geant4RunActionSequence: Attempt to add invalid actor!"); + throw runtime_error("Geant4RunActionSequence: Attempt to add invalid actor!"); } /// Pre-track action callback void Geant4RunActionSequence::begin(const G4Run* run) { - m_actors(ContextUpdate(context())); + G4AutoLock protection_lock(&action_mutex); m_actors(&Geant4RunAction::begin, run); m_begin(run); } /// Post-track action callback void Geant4RunActionSequence::end(const G4Run* run) { + G4AutoLock protection_lock(&action_mutex); m_end(run); m_actors(&Geant4RunAction::end, run); - m_actors(ContextUpdate()); } diff --git a/DDG4/src/Geant4SensDetAction.cpp b/DDG4/src/Geant4SensDetAction.cpp index 04a9c098b..05552e435 100644 --- a/DDG4/src/Geant4SensDetAction.cpp +++ b/DDG4/src/Geant4SensDetAction.cpp @@ -35,6 +35,7 @@ using namespace std; using namespace DD4hep; using namespace DD4hep::Simulation; +#if 0 namespace { Geant4ActionSD* _getSensitiveDetector(const string& name) { G4SDManager* mgr = G4SDManager::GetSDMpointer(); @@ -55,6 +56,7 @@ namespace { return action_sd; } } +#endif /// Standard action constructor Geant4ActionSD::Geant4ActionSD(const std::string& nam) @@ -238,6 +240,13 @@ Geant4SensDetActionSequence::~Geant4SensDetActionSequence() { InstanceCount::decrement(this); } +/// Set or update client context +void Geant4SensDetActionSequence::updateContext(Geant4Context* ctxt) { + m_context = ctxt; + m_actors.updateContext(ctxt); + m_filters.updateContext(ctxt); +} + /// Add an actor responding to all callbacks. Sequence takes ownership. void Geant4SensDetActionSequence::adoptFilter(Geant4Action* action) { Geant4Filter* filter = dynamic_cast<Geant4Filter*>(action); @@ -338,7 +347,6 @@ bool Geant4SensDetActionSequence::process(G4Step* step, G4TouchableHistory* hist */ void Geant4SensDetActionSequence::begin(G4HCofThisEvent* hce) { m_hce = hce; - m_actors(ContextUpdate(context())); for (size_t count = 0; count < m_collections.size(); ++count) { const HitCollection& cr = m_collections[count]; Geant4HitCollection* c = (*cr.second.second)(name(), cr.first, cr.second.first); @@ -353,7 +361,6 @@ void Geant4SensDetActionSequence::begin(G4HCofThisEvent* hce) { void Geant4SensDetActionSequence::end(G4HCofThisEvent* hce) { m_end(hce); m_actors(&Geant4Sensitive::end, hce); - m_actors(ContextUpdate()); // G4HCofThisEvent must be availible until end-event. m_hce = 0; } diff --git a/DDG4/src/Geant4StackingAction.cpp b/DDG4/src/Geant4StackingAction.cpp index 839509afd..bd675c2bd 100644 --- a/DDG4/src/Geant4StackingAction.cpp +++ b/DDG4/src/Geant4StackingAction.cpp @@ -15,14 +15,21 @@ // Framework include files #include "DD4hep/InstanceCount.h" #include "DDG4/Geant4StackingAction.h" +// Geant4 headers +#include "G4Threading.hh" +#include "G4AutoLock.hh" // C/C++ include files #include <stdexcept> +using namespace std; using namespace DD4hep::Simulation; +namespace { + G4Mutex action_mutex=G4MUTEX_INITIALIZER; +} /// Standard constructor -Geant4StackingAction::Geant4StackingAction(Geant4Context* ctxt, const std::string& nam) +Geant4StackingAction::Geant4StackingAction(Geant4Context* ctxt, const string& nam) : Geant4Action(ctxt, nam) { InstanceCount::increment(this); } @@ -33,7 +40,55 @@ Geant4StackingAction::~Geant4StackingAction() { } /// Standard constructor -Geant4StackingActionSequence::Geant4StackingActionSequence(Geant4Context* ctxt, const std::string& nam) +Geant4SharedStackingAction::Geant4SharedStackingAction(Geant4Context* ctxt, const string& nam) + : Geant4StackingAction(ctxt, nam) +{ + InstanceCount::increment(this); +} + +/// Default destructor +Geant4SharedStackingAction::~Geant4SharedStackingAction() { + releasePtr(m_action); + InstanceCount::decrement(this); +} + +/// Set or update client for the use in a new thread fiber +void Geant4SharedStackingAction::configureFiber(Geant4Context* thread_context) { + m_action->configureFiber(thread_context); +} + +/// Underlying object to be used during the execution of this thread +void Geant4SharedStackingAction::use(Geant4StackingAction* action) { + if (action) { + action->addRef(); + m_action = action; + return; + } + throw runtime_error("Geant4SharedStackingAction: Attempt to use invalid actor!"); +} + +/// Begin-of-stacking callback +void Geant4SharedStackingAction::newStage() { + if ( m_action ) { + G4AutoLock protection_lock(&action_mutex); { + ContextSwap swap(m_action,context()); + m_action->newStage(); + } + } +} + +/// End-of-stacking callback +void Geant4SharedStackingAction::prepare() { + if ( m_action ) { + G4AutoLock protection_lock(&action_mutex); { + ContextSwap swap(m_action,context()); + m_action->prepare(); + } + } +} + +/// Standard constructor +Geant4StackingActionSequence::Geant4StackingActionSequence(Geant4Context* ctxt, const string& nam) : Geant4Action(ctxt, nam) { m_needsControl = true; InstanceCount::increment(this); @@ -55,12 +110,27 @@ void Geant4StackingActionSequence::adopt(Geant4StackingAction* action) { m_actors.add(action); return; } - throw std::runtime_error("Geant4StackingActionSequence: Attempt to add invalid actor!"); + throw runtime_error("Geant4StackingActionSequence: Attempt to add invalid actor!"); +} + +/// Set or update client context +void Geant4StackingActionSequence::updateContext(Geant4Context* ctxt) { + m_context = ctxt; + m_actors.updateContext(ctxt); +} + +/// Set or update client for the use in a new thread fiber +void Geant4StackingActionSequence::configureFiber(Geant4Context* thread_context) { + m_actors(&Geant4Action::configureFiber, thread_context); +} + +/// Get an action by name +Geant4StackingAction* Geant4StackingActionSequence::get(const string& nam) const { + return m_actors.get(FindByName(TypeName::split(nam).second)); } /// Pre-track action callback void Geant4StackingActionSequence::newStage() { - m_actors(ContextUpdate(context())); m_actors(&Geant4StackingAction::newStage); m_newStage(); } @@ -69,5 +139,4 @@ void Geant4StackingActionSequence::newStage() { void Geant4StackingActionSequence::prepare() { m_actors(&Geant4StackingAction::prepare); m_prepare(); - m_actors(ContextUpdate()); } diff --git a/DDG4/src/Geant4SteppingAction.cpp b/DDG4/src/Geant4SteppingAction.cpp index 289d8668c..bbd90a6cd 100644 --- a/DDG4/src/Geant4SteppingAction.cpp +++ b/DDG4/src/Geant4SteppingAction.cpp @@ -15,11 +15,20 @@ // Framework include files #include "DD4hep/InstanceCount.h" #include "DDG4/Geant4SteppingAction.h" +// Geant4 headers +#include "G4Threading.hh" +#include "G4AutoLock.hh" +// C/C++ include files +#include <stdexcept> +using namespace std; using namespace DD4hep::Simulation; +namespace { + G4Mutex action_mutex=G4MUTEX_INITIALIZER; +} /// Standard constructor -Geant4SteppingAction::Geant4SteppingAction(Geant4Context* ctxt, const std::string& nam) +Geant4SteppingAction::Geant4SteppingAction(Geant4Context* ctxt, const string& nam) : Geant4Action(ctxt, nam) { InstanceCount::increment(this); } @@ -34,7 +43,45 @@ void Geant4SteppingAction::operator()(const G4Step*, G4SteppingManager*) { } /// Standard constructor -Geant4SteppingActionSequence::Geant4SteppingActionSequence(Geant4Context* ctxt, const std::string& nam) +Geant4SharedSteppingAction::Geant4SharedSteppingAction(Geant4Context* ctxt, const string& nam) + : Geant4SteppingAction(ctxt, nam) +{ + InstanceCount::increment(this); +} + +/// Default destructor +Geant4SharedSteppingAction::~Geant4SharedSteppingAction() { + releasePtr(m_action); + InstanceCount::decrement(this); +} + +/// Underlying object to be used during the execution of this thread +void Geant4SharedSteppingAction::use(Geant4SteppingAction* action) { + if (action) { + action->addRef(); + m_action = action; + return; + } + throw runtime_error("Geant4SharedSteppingAction: Attempt to use invalid actor!"); +} + +/// Set or update client for the use in a new thread fiber +void Geant4SharedSteppingAction::configureFiber(Geant4Context* thread_context) { + m_action->configureFiber(thread_context); +} + +/// User stepping callback +void Geant4SharedSteppingAction::operator()(const G4Step* s, G4SteppingManager* m) { + if ( m_action ) { + G4AutoLock protection_lock(&action_mutex); { + ContextSwap swap(m_action,context()); + (*m_action)(s,m); + } + } +} + +/// Standard constructor +Geant4SteppingActionSequence::Geant4SteppingActionSequence(Geant4Context* ctxt, const string& nam) : Geant4Action(ctxt, nam) { m_needsControl = true; InstanceCount::increment(this); @@ -48,20 +95,35 @@ Geant4SteppingActionSequence::~Geant4SteppingActionSequence() { InstanceCount::decrement(this); } +/// Set or update client for the use in a new thread fiber +void Geant4SteppingActionSequence::configureFiber(Geant4Context* thread_context) { + m_actors(&Geant4Action::configureFiber, thread_context); +} + +/// Set or update client context +void Geant4SteppingActionSequence::updateContext(Geant4Context* ctxt) { + m_context = ctxt; + m_actors.updateContext(ctxt); +} + +/// Get an action by name +Geant4SteppingAction* Geant4SteppingActionSequence::get(const string& nam) const { + return m_actors.get(FindByName(TypeName::split(nam).second)); +} + /// Pre-track action callback void Geant4SteppingActionSequence::operator()(const G4Step* step, G4SteppingManager* mgr) { - m_actors(ContextUpdate(context())); m_actors(&Geant4SteppingAction::operator(), step, mgr); m_calls(step, mgr); - m_actors(ContextUpdate()); } /// Add an actor responding to all callbacks. Sequence takes ownership. void Geant4SteppingActionSequence::adopt(Geant4SteppingAction* action) { if (action) { + G4AutoLock protection_lock(&action_mutex); action->addRef(); m_actors.add(action); return; } - throw std::runtime_error("Geant4SteppingActionSequence: Attempt to add invalid actor!"); + throw runtime_error("Geant4SteppingActionSequence: Attempt to add invalid actor!"); } diff --git a/DDG4/src/Geant4TrackingAction.cpp b/DDG4/src/Geant4TrackingAction.cpp index 72767b028..2eeded641 100644 --- a/DDG4/src/Geant4TrackingAction.cpp +++ b/DDG4/src/Geant4TrackingAction.cpp @@ -20,6 +20,8 @@ // Geant4 include files #include "G4Track.hh" +#include "G4Threading.hh" +#include "G4AutoLock.hh" #include "G4TrackingManager.hh" #include "G4VUserTrackInformation.hh" @@ -31,9 +33,12 @@ using namespace DD4hep; using namespace DD4hep::Simulation; class G4Step; class G4TouchableHistory; +namespace { + G4Mutex action_mutex=G4MUTEX_INITIALIZER; +} /// Standard constructor -Geant4TrackingActionSequence::Geant4TrackingActionSequence(Geant4Context* ctxt, const std::string& nam) +Geant4TrackingActionSequence::Geant4TrackingActionSequence(Geant4Context* ctxt, const string& nam) : Geant4Action(ctxt, nam) { m_needsControl = true; InstanceCount::increment(this); @@ -50,19 +55,35 @@ Geant4TrackingActionSequence::~Geant4TrackingActionSequence() { InstanceCount::decrement(this); } +/// Set or update client context +void Geant4TrackingActionSequence::updateContext(Geant4Context* ctxt) { + m_context = ctxt; + m_actors.updateContext(ctxt); +} + +/// Set or update client for the use in a new thread fiber +void Geant4TrackingActionSequence::configureFiber(Geant4Context* thread_context) { + m_actors(&Geant4Action::configureFiber, thread_context); +} + +/// Get an action by name +Geant4TrackingAction* Geant4TrackingActionSequence::get(const string& nam) const { + return m_actors.get(FindByName(TypeName::split(nam).second)); +} + /// Add an actor responding to all callbacks. Sequence takes ownership. void Geant4TrackingActionSequence::adopt(Geant4TrackingAction* action) { if (action) { + G4AutoLock protection_lock(&action_mutex); action->addRef(); m_actors.add(action); return; } - throw std::runtime_error("Geant4TrackingActionSequence: Attempt to add invalid actor!"); + throw runtime_error("Geant4TrackingActionSequence: Attempt to add invalid actor!"); } /// Pre-track action callback void Geant4TrackingActionSequence::begin(const G4Track* track) { - m_actors(ContextUpdate(context())); m_front(track); m_actors(&Geant4TrackingAction::begin, track); m_begin(track); @@ -73,11 +94,10 @@ void Geant4TrackingActionSequence::end(const G4Track* track) { m_end(track); m_actors(&Geant4TrackingAction::end, track); m_final(track); - m_actors(ContextUpdate(0)); } /// Standard constructor -Geant4TrackingAction::Geant4TrackingAction(Geant4Context* ctxt, const std::string& nam) +Geant4TrackingAction::Geant4TrackingAction(Geant4Context* ctxt, const string& nam) : Geant4Action(ctxt, nam) { InstanceCount::increment(this); } @@ -101,49 +121,50 @@ void Geant4TrackingAction::mark(const G4Track* track) const { if ( truth ) truth->mark(track,true); } -/// Get the valid Geant4 tarck information -Geant4TrackInformation* Geant4TrackingAction::trackInfo(G4Track* track) const { - if (track) { - Geant4TrackInformation* gau = 0; - G4VUserTrackInformation* g4 = track->GetUserInformation(); - if (0 == g4) { - gau = new Geant4TrackInformation(); - track->SetUserInformation(gau); - return gau; // RETURN - } - gau = fast_cast<Geant4TrackInformation*>(g4); - if (!gau) { - error("trackInfo: invalid cast to Geant4TrajckInformation"); - } - return gau; +/// Standard constructor +Geant4SharedTrackingAction::Geant4SharedTrackingAction(Geant4Context* ctxt, const string& nam) + : Geant4TrackingAction(ctxt, nam) +{ + InstanceCount::increment(this); +} + +/// Default destructor +Geant4SharedTrackingAction::~Geant4SharedTrackingAction() { + releasePtr(m_action); + InstanceCount::decrement(this); +} + +/// Set or update client for the use in a new thread fiber +void Geant4SharedTrackingAction::configureFiber(Geant4Context* thread_context) { + m_action->configureFiber(thread_context); +} + +/// Underlying object to be used during the execution of this thread +void Geant4SharedTrackingAction::use(Geant4TrackingAction* action) { + if (action) { + action->addRef(); + m_action = action; + return; } - error("trackInfo: [Invalid G4Track]"); - return 0; -} - -/// Mark all children of the track to be stored -bool Geant4TrackingAction::storeChildren() const { - G4TrackVector* v = trackMgr()->GimmeSecondaries(); - if (v) { // loop over all children - for (G4TrackVector::const_iterator i = v->begin(); i != v->end(); ++i) { - G4Track* t = *i; - if (t) { - storeChild(trackInfo(t)); - } + throw runtime_error("Geant4SharedTrackingAction: Attempt to use invalid actor!"); +} + +/// Begin-of-track callback +void Geant4SharedTrackingAction::begin(const G4Track* track) { + if ( m_action ) { + G4AutoLock protection_lock(&action_mutex); { + ContextSwap swap(m_action,context()); + m_action->begin(track); } - return true; } - return false; } -/// Mark a single child of the track to be stored -bool Geant4TrackingAction::storeChild(Geant4TrackInformation* track_info) const { - if (0 != track_info) { - if (!track_info->storeTrack()) { - track_info->storeTrack(true); +/// End-of-track callback +void Geant4SharedTrackingAction::end(const G4Track* track) { + if ( m_action ) { + G4AutoLock protection_lock(&action_mutex); { + ContextSwap swap(m_action,context()); + m_action->end(track); } - return true; } - error("storeChild: Geant4TrackInformation points to NULL!"); - return false; } diff --git a/DDG4/src/Geant4UserInitialization.cpp b/DDG4/src/Geant4UserInitialization.cpp new file mode 100644 index 000000000..d86a8140d --- /dev/null +++ b/DDG4/src/Geant4UserInitialization.cpp @@ -0,0 +1,88 @@ +// $Id$ +//========================================================================== +// AIDA Detector description implementation for LCD +//-------------------------------------------------------------------------- +// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) +// All rights reserved. +// +// For the licensing terms see $DD4hepINSTALL/LICENSE. +// For the list of contributors see $DD4hepINSTALL/doc/CREDITS. +// +// Author : M.Frank +// +//========================================================================== + +// Framework include files +#include "DD4hep/InstanceCount.h" +#include "DDG4/Geant4UserInitialization.h" + +// C/C++ include files +#include <stdexcept> + +using namespace std; +using namespace DD4hep::Simulation; + +/// Standard constructor +Geant4UserInitialization::Geant4UserInitialization(Geant4Context* ctxt, const string& nam) + : Geant4Action(ctxt, nam) { + m_needsControl = false; + InstanceCount::increment(this); +} + +/// Default destructor +Geant4UserInitialization::~Geant4UserInitialization() { + InstanceCount::decrement(this); +} + +/// Callback function to build setup for the MT worker thread +void Geant4UserInitialization::build() const { +} + +/// Callback function to build setup for the MT master thread +void Geant4UserInitialization::buildMaster() const { +} + +/// Standard constructor +Geant4UserInitializationSequence::Geant4UserInitializationSequence(Geant4Context* ctxt, const string& nam) + : Geant4UserInitialization(ctxt, nam) { + m_needsControl = false; + InstanceCount::increment(this); +} + +/// Default destructor +Geant4UserInitializationSequence::~Geant4UserInitializationSequence() { + InstanceCount::decrement(this); + m_workerCalls.clear(); + m_masterCalls.clear(); + m_actors(&Geant4Action::release); + m_actors.clear(); +} + +/// Add an actor responding to all callbacks. Sequence takes ownership. +void Geant4UserInitializationSequence::adopt(Geant4UserInitialization* action) { + if (action) { + action->addRef(); + m_actors.add(action); + return; + } + throw runtime_error("Geant4UserInitializationSequence: Attempt to add invalid actor!"); +} + +/// Callback function to build setup for the MT worker thread +void Geant4UserInitializationSequence::build() const { + m_actors(&Geant4UserInitialization::build); + m_workerCalls(); +} + +/// Callback function to build setup for the MT master thread +void Geant4UserInitializationSequence::buildMaster() const { + m_actors(&Geant4UserInitialization::buildMaster); + m_masterCalls(); +} + +/// Set client context +void Geant4UserInitializationSequence::updateContext(Geant4Context* ctxt) { + m_context = ctxt; + m_actors.updateContext(ctxt); +} + diff --git a/DDG4/src/python/DDG4Python.C b/DDG4/src/python/DDG4Python.C new file mode 100644 index 000000000..6e9c95087 --- /dev/null +++ b/DDG4/src/python/DDG4Python.C @@ -0,0 +1,36 @@ +// $Id$ +//========================================================================== +// AIDA Detector description implementation for LCD +//-------------------------------------------------------------------------- +// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) +// All rights reserved. +// +// For the licensing terms see $DD4hepINSTALL/LICENSE. +// For the list of contributors see $DD4hepINSTALL/doc/CREDITS. +// +//==================================================================== +// +// Define the ROOT dictionaries for all data classes to be saved +// which are created by the DDG4 examples. +// +// Author : M.Frank +// +//==================================================================== +// FRamework include files +#include "DDG4Python/Geant4PythonCall.h" +#include "DDG4Python/Geant4PythonAction.h" +#include "DDG4Python/Geant4PythonInitialization.h" +#include "DDG4Python/Geant4PythonDetectorConstruction.h" +#include "PyDDG4.h" + + +// CINT configuration +#if defined(__MAKECINT__) +#pragma link C++ namespace DD4hep; +#pragma link C++ namespace DD4hep::Simulation; +#pragma link C++ class DD4hep::Simulation::Geant4PythonCall; +#pragma link C++ class DD4hep::Simulation::Geant4PythonAction; +#pragma link C++ class DD4hep::Simulation::Geant4PythonInitialization; +#pragma link C++ class DD4hep::Simulation::Geant4PythonDetectorConstruction; +#pragma link C++ class PyDDG4; +#endif diff --git a/DDG4/src/python/Geant4PythonAction.cpp b/DDG4/src/python/Geant4PythonAction.cpp new file mode 100644 index 000000000..448b398a2 --- /dev/null +++ b/DDG4/src/python/Geant4PythonAction.cpp @@ -0,0 +1,62 @@ +// Framework include files +// AIDA Detector description implementation for LCD +//-------------------------------------------------------------------------- +// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) +// All rights reserved. +// +// For the licensing terms see $DD4hepINSTALL/LICENSE. +// For the list of contributors see $DD4hepINSTALL/doc/CREDITS. +// +// \author Markus Frank +// \date 2015-11-03 +// +//========================================================================== +// $Id$ + +// Framework include files +#include "DDG4/Factories.h" +#include "DDG4Python/Geant4PythonAction.h" +#include "DDG4Python/Geant4PythonCall.h" +#include "DDG4Python/DDPython.h" + +// C/C++ include files +#include <stdexcept> +#include <fstream> + +using namespace std; +using namespace DD4hep; +using namespace DD4hep::Simulation; + +DECLARE_GEANT4ACTION(Geant4PythonAction) + +/// Standard constructor, initializes variables +Geant4PythonAction::Geant4PythonAction(Geant4Context* ctxt, const string& nam) + : Geant4Action(ctxt,nam) +{ + m_needsControl = true; +} + +/// Execute command in the python interpreter. Directly forwarded to TPython. +int Geant4PythonAction::exec(const std::string& cmd) { + return DDPython::instance().execute(cmd); +} + +/// Execute command in the python interpreter. +int Geant4PythonAction::eval(const std::string& cmd) { + return DDPython::instance().evaluate(cmd); +} + +/// Execute command in the python interpreter. +int Geant4PythonAction::runFile(const std::string& cmd) { + return DDPython::instance().runFile(cmd); +} + +/// Execute command in the python interpreter. +int Geant4PythonAction::call(PyObject* method, PyObject* args) { + return Geant4PythonCall().execute<int>(method,args); +} + +/// Invoke command prompt +void Geant4PythonAction::prompt() { + DDPython::instance().prompt(); +} diff --git a/DDG4/src/python/Geant4PythonCall.cpp b/DDG4/src/python/Geant4PythonCall.cpp new file mode 100644 index 000000000..a580f40c6 --- /dev/null +++ b/DDG4/src/python/Geant4PythonCall.cpp @@ -0,0 +1,95 @@ +// Framework include files +// AIDA Detector description implementation for LCD +//-------------------------------------------------------------------------- +// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) +// All rights reserved. +// +// For the licensing terms see $DD4hepINSTALL/LICENSE. +// For the list of contributors see $DD4hepINSTALL/doc/CREDITS. +// +// \author Markus Frank +// \date 2015-11-03 +// +//========================================================================== +// $Id$ + +// Framework include files +#include "DDG4Python/Geant4PythonCall.h" +#include "DDG4Python/DDPython.h" + +// C/C++ include files +#include <stdexcept> +#include "Python.h" + +using namespace std; +using namespace DD4hep; +using namespace DD4hep::Simulation; + +/// Standard constructor, initializes variables +Geant4PythonCall::Geant4PythonCall() + : m_callable(0), m_arguments(0) +{ + DDPython::instance(); +} + +Geant4PythonCall::~Geant4PythonCall() { + DDPython::GILState state(0); + DDPython::releaseObject(m_callable); + DDPython::releaseObject(m_arguments); +} + +/// Set the callback structures for callbacks with arguments +void Geant4PythonCall::set(PyObject* callable, PyObject* arguments) { + DDPython::GILState state(0); + DDPython::assignObject(m_callable,callable); + DDPython::assignObject(m_arguments,arguments); +} + +/// Set the callback structures for callbacks without arguments +void Geant4PythonCall::set(PyObject* callable) { + DDPython::GILState state(0); + DDPython::assignObject(m_callable,callable); + DDPython::assignObject(m_arguments,0); +} + +namespace DD4hep { namespace Simulation { + + /// Execute command in the python interpreter. + template <typename RETURN> RETURN Geant4PythonCall::execute() const { + DDPython::GILState state(0); + TPyReturn ret(DDPython::instance().callC(m_callable, m_arguments)); + return (RETURN)ret; + } + + /// Execute command in the python interpreter. + template <typename RETURN> RETURN Geant4PythonCall::execute(PyObject* method) const { + DDPython::GILState state(0); + TPyReturn ret(DDPython::instance().callC(method,0)); + return (RETURN)ret; + } + + /// Execute command in the python interpreter. + template <typename RETURN> RETURN Geant4PythonCall::execute(PyObject* method, PyObject* args) const { + DDPython::GILState state(0); + TPyReturn ret(DDPython::instance().callC(method,args)); + return (RETURN)ret; + } +#define INSTANTIATE(X) \ + template X Geant4PythonCall::execute<X>() const; \ + template X Geant4PythonCall::execute<X>(PyObject* method) const; \ + template X Geant4PythonCall::execute<X>(PyObject* method, PyObject* args) const + + INSTANTIATE(char); + INSTANTIATE(short); + INSTANTIATE(int); + INSTANTIATE(long); + INSTANTIATE(unsigned short); + INSTANTIATE(unsigned int); + INSTANTIATE(unsigned long); + INSTANTIATE(float); + INSTANTIATE(double); + INSTANTIATE(char*); + INSTANTIATE(const char*); + INSTANTIATE(PyObject*); + INSTANTIATE(void*); + }} diff --git a/DDG4/src/python/Geant4PythonDetectorConstruction.cpp b/DDG4/src/python/Geant4PythonDetectorConstruction.cpp new file mode 100644 index 000000000..968f393a4 --- /dev/null +++ b/DDG4/src/python/Geant4PythonDetectorConstruction.cpp @@ -0,0 +1,82 @@ +// AIDA Detector description implementation for LCD +//-------------------------------------------------------------------------- +// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) +// All rights reserved. +// +// For the licensing terms see $DD4hepINSTALL/LICENSE. +// For the list of contributors see $DD4hepINSTALL/doc/CREDITS. +// +// \author Markus Frank +// \date 2015-11-03 +// +//========================================================================== +// $Id$ + +// Framework include files +#include "DDG4/Geant4Context.h" +#include "DDG4/Geant4Kernel.h" + +#include "DDG4Python/DDPython.h" +#include "DDG4Python/Geant4PythonAction.h" +#include "DDG4Python/Geant4PythonDetectorConstruction.h" + +using namespace std; +using namespace DD4hep::Simulation; + +#include "DDG4/Factories.h" +DECLARE_GEANT4ACTION(Geant4PythonDetectorConstruction) + +/// Standard constructor, initializes variables +Geant4PythonDetectorConstruction::Geant4PythonDetectorConstruction(Geant4Context* ctxt, const string& nam) +: Geant4DetectorConstruction(ctxt,nam), + m_constructSD(), m_constructFLD(), m_constructGEO() +{ + m_needsControl = true; +} + +/// Set the Detector initialization command +void Geant4PythonDetectorConstruction::setConstructGeo(PyObject* callable, PyObject* args) { + m_constructGEO.set(callable, args); +} + +/// Set the field initialization command +void Geant4PythonDetectorConstruction::setConstructField(PyObject* callable, PyObject* args) { + m_constructFLD.set(callable, args); +} + +/// Set the sensitive detector initialization command +void Geant4PythonDetectorConstruction::setConstructSensitives(PyObject* callable, PyObject* args) { + m_constructSD.set(callable, args); +} + +/// Execute command in the python interpreter +void Geant4PythonDetectorConstruction::exec(const string& desc, const Geant4PythonCall& cmd) const { + if ( cmd.isValid() ) { + int ret = cmd.execute<int>(); + if ( ret != 1 ) { + except("+++ %s returned %d, not SUCCESS (1). Terminating setup",desc.c_str(), ret); + } + } +} + +/// Callback function to build setup for the MT worker thread +void Geant4PythonDetectorConstruction::constructGeo(Geant4DetectorConstructionContext* ) { + info("+++ Worker:%ld Execute PYTHON constructGeo %s....", + context()->kernel().id(), m_constructGEO.isValid() ? "" : "[empty]"); + DDPython::BlockThreads blocker(0); + exec("constructGeo", m_constructGEO); +} + +/// Callback function to build setup for the MT master thread +void Geant4PythonDetectorConstruction::constructField(Geant4DetectorConstructionContext* ) { + info("+++ Worker:%ld Execute PYTHON constructField %s....", + context()->kernel().id(), m_constructFLD.isValid() ? "" : "[empty]"); + exec("constructField", m_constructFLD); +} + +/// Callback function to build setup for the MT master thread +void Geant4PythonDetectorConstruction::constructSensitives(Geant4DetectorConstructionContext* ) { + info("+++ Worker:%ld Execute PYTHON constructSensitives %s....", + context()->kernel().id(), m_constructSD.isValid() ? "" : "[empty]"); + exec("constructSensitives", m_constructSD); +} diff --git a/DDG4/src/python/Geant4PythonDetectorConstructionLast.cpp b/DDG4/src/python/Geant4PythonDetectorConstructionLast.cpp new file mode 100644 index 000000000..ee70a6194 --- /dev/null +++ b/DDG4/src/python/Geant4PythonDetectorConstructionLast.cpp @@ -0,0 +1,56 @@ +// AIDA Detector description implementation for LCD +//-------------------------------------------------------------------------- +// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) +// All rights reserved. +// +// For the licensing terms see $DD4hepINSTALL/LICENSE. +// For the list of contributors see $DD4hepINSTALL/doc/CREDITS. +// +// \author Markus Frank +// \date 2015-11-03 +// +//========================================================================== +// $Id$ +#ifndef DD4HEP_DDG4_GEANT4PYTHONDETECTORCONSTRUCTIONLAST_H +#define DD4HEP_DDG4_GEANT4PYTHONDETECTORCONSTRUCTIONLAST_H + +// Framework include files +#include "DDG4/Geant4DetectorConstruction.h" +#include "DDG4Python/DDPython.h" + +/// Namespace for the AIDA detector description toolkit +namespace DD4hep { + + /// Namespace for the Geant4 based simulation part of the AIDA detector description toolkit + namespace Simulation { + + /// Base class to initialize a multi-threaded or single threaded Geant4 application + /** + * All python callbacks are supposed to return the integer '1' on success. + * Any other return code is assumed to be failure. + * + * \author M.Frank + * \version 1.0 + * \ingroup DD4HEP_SIMULATION + */ + class Geant4PythonDetectorConstructionLast : public Geant4DetectorConstruction { + public: + /// Standard constructor + Geant4PythonDetectorConstructionLast(Geant4Context* ctxt, const std::string& nam) + : Geant4DetectorConstruction(ctxt,nam) {} + /// Default destructor + virtual ~Geant4PythonDetectorConstructionLast() {} + /// Geometry construction callback. Called at "Construct()" + virtual void constructGeo(Geant4DetectorConstructionContext*) { + info("+++ Python setup finished. From now on THREADS ARE ALLOWED!"); + DDPython::allowThreads(); + } + }; + } // End namespace Simulation +} // End namespace DD4hep +#endif // DD4HEP_DDG4_GEANT4PYTHONDETECTORCONSTRUCTIONLAST_H + +using namespace DD4hep::Simulation; + +#include "DDG4/Factories.h" +DECLARE_GEANT4ACTION(Geant4PythonDetectorConstructionLast) diff --git a/DDG4/src/python/Geant4PythonInitialization.cpp b/DDG4/src/python/Geant4PythonInitialization.cpp new file mode 100644 index 000000000..1558eeead --- /dev/null +++ b/DDG4/src/python/Geant4PythonInitialization.cpp @@ -0,0 +1,66 @@ +// AIDA Detector description implementation for LCD +//-------------------------------------------------------------------------- +// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) +// All rights reserved. +// +// For the licensing terms see $DD4hepINSTALL/LICENSE. +// For the list of contributors see $DD4hepINSTALL/doc/CREDITS. +// +// \author Markus Frank +// \date 2015-11-03 +// +//========================================================================== +// $Id$ + +// Framework include files +#include "DDG4/Factories.h" +#include "DDG4/Geant4Kernel.h" +#include "DDG4Python/DDPython.h" +#include "DDG4Python/Geant4PythonInitialization.h" + +using namespace std; +using namespace DD4hep::Simulation; + +DECLARE_GEANT4ACTION(Geant4PythonInitialization) + +/// Standard constructor, initializes variables +Geant4PythonInitialization::Geant4PythonInitialization(Geant4Context* ctxt, const string& nam) +: Geant4UserInitialization(ctxt,nam), m_masterSetup(), m_workerSetup() +{ + m_needsControl = true; +} + +/// Set the Detector initialization command +void Geant4PythonInitialization::setMasterSetup(PyObject* callable, PyObject* args) { + m_masterSetup.set(callable, args); +} + +/// Set the field initialization command +void Geant4PythonInitialization::setWorkerSetup(PyObject* callable, PyObject* args) { + m_workerSetup.set(callable, args); +} + +/// Execute command in the python interpreter +void Geant4PythonInitialization::exec(const string& desc, const Geant4PythonCall& cmd) const { + if ( cmd.isValid() ) { + int ret = cmd.execute<int>(); + if ( ret != 1 ) { + except("+++ %s returned %d, not SUCCESS (1). Terminating setup",desc.c_str(), ret); + } + } +} + +/// Callback function to build setup for the MT worker thread +void Geant4PythonInitialization::build() const { + info("+++ Worker:%ld Build PYTHON Worker %s....", + context()->kernel().id(), m_workerSetup.isValid() ? "[empty]" : ""); + exec("Worker setup command",m_workerSetup); +} + +/// Callback function to build setup for the MT master thread +void Geant4PythonInitialization::buildMaster() const { + DDPython::BlockThreads blocker(0); + info("+++ Build PYTHON Master [id:%ld] %s ....", + context()->kernel().id(), m_masterSetup.isValid() ? "[empty]" : ""); + exec("Master setup command",m_masterSetup); +} diff --git a/DDG4/src/python/PyDDG4.cpp b/DDG4/src/python/PyDDG4.cpp new file mode 100644 index 000000000..0c3e50942 --- /dev/null +++ b/DDG4/src/python/PyDDG4.cpp @@ -0,0 +1,45 @@ +// Framework include files +// AIDA Detector description implementation for LCD +//-------------------------------------------------------------------------- +// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) +// All rights reserved. +// +// For the licensing terms see $DD4hepINSTALL/LICENSE. +// For the list of contributors see $DD4hepINSTALL/doc/CREDITS. +// +// \author Markus Frank +// \date 2015-11-03 +// +//========================================================================== +// $Id$ + +// Framework include files +#include "PyDDG4.h" +#include "DD4hep/LCDD.h" +#include "DDG4Python/DDPython.h" + +int PyDDG4::run(Kernel& kernel) { + int ret; + DD4hep::DDPython::AllowThreads allow(0); + if ( 1 != (ret=kernel.configure()) ) return ret; + if ( 1 != (ret=kernel.initialize()) ) return ret; + if ( 1 != (ret=kernel.run()) ) return ret; + if ( 1 != (ret=kernel.terminate()) ) return ret; + //DD4hep::DDPython::shutdown(); + return ret; +} + +int PyDDG4::execute() { + Kernel& k = Kernel::access(DD4hep::Geometry::LCDD::getInstance()); + return run(k); +} + +int PyDDG4::process(const char* fname) { + return DD4hep::DDPython::instance().runFile(fname); +} + +int PyDDG4::run(const char* fname) { + int ret = DD4hep::DDPython::instance().runFile(fname); + if ( 1 != ret ) return ret; + return execute(); +} diff --git a/DDG4/src/python/PyDDG4.h b/DDG4/src/python/PyDDG4.h new file mode 100644 index 000000000..8f42e26af --- /dev/null +++ b/DDG4/src/python/PyDDG4.h @@ -0,0 +1,30 @@ +// Framework include files +// AIDA Detector description implementation for LCD +//-------------------------------------------------------------------------- +// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) +// All rights reserved. +// +// For the licensing terms see $DD4hepINSTALL/LICENSE. +// For the list of contributors see $DD4hepINSTALL/doc/CREDITS. +// +// \author Markus Frank +// \date 2015-11-03 +// +//========================================================================== +// $Id$ +#ifndef DD4HEP_DDG4_PYDDG4_H +#define DD4HEP_DDG4_PYDDG4_H + +// Framework include files +#include "DDG4/Geant4Kernel.h" + +struct PyDDG4 { + typedef DD4hep::Simulation::Geant4Kernel Kernel; + + static int execute(); + static int process(const char* fname); + static int run(Kernel& kernel); + static int run(const char* fname); +}; + +#endif // DD4HEP_DDG4_PYDDG4_H diff --git a/DDG4/tpython/DDPython.C b/DDG4/tpython/DDPython.C new file mode 100644 index 000000000..c6092688d --- /dev/null +++ b/DDG4/tpython/DDPython.C @@ -0,0 +1,33 @@ +// $Id$ +//========================================================================== +// AIDA Detector description implementation for LCD +//-------------------------------------------------------------------------- +// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) +// All rights reserved. +// +// For the licensing terms see $DD4hepINSTALL/LICENSE. +// For the list of contributors see $DD4hepINSTALL/doc/CREDITS. +// +//==================================================================== +// +// Define the ROOT dictionaries for all data classes to be saved +// which are created by the DDG4 examples. +// +// Author : M.Frank +// +//==================================================================== +// FRamework include files +#include "DDG4Python/DDPython.h" + +struct DD4hepPython { + static void setMainThread() { + DD4hep::DDPython::setMainThread(); + } +}; + +// CINT configuration +#if defined(__MAKECINT__) +#pragma link C++ namespace DD4hep; +#pragma link C++ class DD4hep::DDPython; +#pragma link C++ class DD4hepPython; +#endif diff --git a/DDG4/tpython/DDPython.cpp b/DDG4/tpython/DDPython.cpp new file mode 100644 index 000000000..64afefd54 --- /dev/null +++ b/DDG4/tpython/DDPython.cpp @@ -0,0 +1,287 @@ +// AIDA Detector description implementation for LCD +//-------------------------------------------------------------------------- +// Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN) +// All rights reserved. +// +// For the licensing terms see $DD4hepINSTALL/LICENSE. +// For the list of contributors see $DD4hepINSTALL/doc/CREDITS. +// +// \author Markus Frank +// \date 2015-11-07 +// +//========================================================================== +// $Id$ + +// Framework include files +#include "DDG4Python/DDPython.h" +#include "DD4hep/Printout.h" + +// C/C++ include files +#include "TPyReturn.h" +#include "Python.h" +#include <fstream> +#include <sstream> +#include <pthread.h> + +// Forward declartions + +using namespace std; +using namespace DD4hep; + +namespace { + string loadScript(const string& fname) { + ifstream file(fname.c_str()); + stringstream str; + if( file ) { + char ch; + while( file.get(ch) ) str.put(ch); + file.close(); + return str.str(); + } + return ""; + } + + static int _blockers = 0; + static pthread_t _mainThread = 0; + static int _refCount = 0; + static DDPython* _instance = 0; + static PyObject* _main_dict = 0; + static PyThreadState *_save_state = 0; + int _execPy(const char* cmd) { + DDPython::GILState state(0); + PyObject* ret = ::PyRun_String((char*)cmd, Py_file_input,_main_dict,_main_dict); + if ( ::PyErr_Occurred() ) { + ::PyErr_Print(); + ::PyErr_Clear(); + return 0; + } + if ( ret && ret == Py_None ) { + Py_DECREF( ret ); + return 1; + } + else if ( ret ) { + TPyReturn r(ret); + Py_DECREF( ret ); + return (int)r; + } + return 0; + } + int _evalPy(const char* cmd) { + DDPython::GILState state(0); + PyObject* ret = ::PyRun_String((char*)cmd, Py_eval_input,_main_dict,_main_dict); + if ( ::PyErr_Occurred() ) { + ::PyErr_Print(); + ::PyErr_Clear(); + return 0; + } + if ( ret && ret == Py_None ) { + Py_DECREF( ret ); + return 1; + } + else if ( ret ) { + TPyReturn r(ret); + Py_DECREF( ret ); + return (int)r; + } + return 0; + } +} + +DDPython::GILState::GILState(int) { + if ( ::Py_IsInitialized() ) { + PyGILState_STATE st = (PyGILState_STATE)::PyGILState_Ensure(); + state = (int)st; + } +} + +DDPython::GILState::~GILState() { + if ( ::Py_IsInitialized() ) { + PyGILState_STATE st = (PyGILState_STATE)state; + ::PyGILState_Release(st); + } +} + +DDPython::BlockThreads::BlockThreads(int) { + if ( _blockers == 0 ) { + DDPython::restoreThread(); + } + ++_blockers; +} + +DDPython::BlockThreads::~BlockThreads() { + --_blockers; + if ( _blockers == 0 ) { + DDPython::allowThreads(); + } +} + +DDPython::AllowThreads::AllowThreads(int) { + DDPython::allowThreads(); +} + +DDPython::AllowThreads::~AllowThreads() { + DDPython::restoreThread(); +} + +/// Standard constructor, initializes variables +DDPython::DDPython() { + ++_refCount; + bool inited = ::Py_IsInitialized(); + if ( !inited ) { + ::Py_Initialize(); + ::PyEval_InitThreads(); + } + else { + _refCount += 1000; // Ensure we do not call Py_Finalize()! + } + if ( !_main_dict ) { + // retrieve the main dictionary + PyObject* module = ::PyImport_AddModule("__main__"); + if ( !module || ::PyErr_Occurred() ) { + ::PyErr_Print(); + ::PyErr_Clear(); + ::printf("WARNING: main dictionary pointer is NULL. Try to continue like this!\n"); + } + else { + _main_dict = ::PyModule_GetDict(module); + if ( _main_dict ) { + Py_INCREF( _main_dict ); + } + ::printf("Pointer to main dict:%p\n",(void*)_main_dict); + } + setMainThread(); + } + //if ( !isMainThread() ) context = ::PyEval_SaveThread(); + if ( !_save_state ) { + //_save_state = ::PyEval_SaveThread(); + } +} + +/// Default Destructor +DDPython::~DDPython() { + --_refCount; + if ( 0 == _refCount && ::Py_IsInitialized() ) { + DD4hep::printout(ALWAYS,"DDPython","+++ Shutdown python interpreter......"); + if ( _main_dict ) { + Py_DECREF(_main_dict); + _main_dict = 0; + } + if ( _save_state ) { + ::PyEval_RestoreThread(_save_state); + } + ::Py_Finalize(); + _instance = 0; + } +} + + +DDPython DDPython::instance() { + if ( 0 == _instance ) _instance = new DDPython(); + return DDPython(); +} + +/// Save thread state +void DDPython::allowThreads() { + if ( !_save_state && ::Py_IsInitialized() ) { + _save_state = ::PyEval_SaveThread(); + } +} + +void DDPython::restoreThread() { + if ( _save_state ) { + ::PyEval_RestoreThread(_save_state); + _save_state = 0; + } +} + +int DDPython::setArgs(int argc, char** argv) const { + ::PySys_SetArgv(argc,argv); + return 1; +} + +void DDPython::shutdown() { + if ( 0 != _instance ) { + if ( 1 == _refCount ) { + delete _instance; + _instance = 0; + } + } +} + +int DDPython::runFile(const std::string& fname) const { + std::string cmd = loadScript(fname); + return execute(cmd); +} + +int DDPython::evaluate(const std::string& cmd) const { + return _evalPy(cmd.c_str()); +} + +int DDPython::execute(const std::string& cmd) const { + return _execPy(cmd.c_str()); +} + +PyObject* DDPython::call(PyObject* method, PyObject* args) { + DDPython::GILState state(0); + if ( PyCallable_Check(method) ) { + PyObject* ret = ::PyObject_CallObject(method,args==Py_None ? NULL : args); + return ret; + } + ::PyErr_SetString(PyExc_RuntimeError,"DDPython::call: The argument is not a callable object!"); + return 0; +} + +TPyReturn DDPython::callC(PyObject* method, PyObject* args) { + if ( PyCallable_Check(method) ) { + PyObject* arg = args==Py_None || args==0 ? 0 : args; + PyObject* ret = ::PyObject_CallObject(method,arg); + if ( ::PyErr_Occurred() ) { + ::PyErr_Print(); + ::PyErr_Clear(); + return TPyReturn(); + } + else if ( ret ) { + return TPyReturn(ret); + } + } + throw runtime_error("DDPython::callC: Object is not callable!"); +} + +/// Release python object +void DDPython::releaseObject(PyObject*& obj) { + if ( obj && ::Py_IsInitialized() ) { + Py_DECREF(obj); + } + obj = 0; +} + +/// Release python object +void DDPython::assignObject(PyObject*& obj, PyObject* new_obj) { + if ( ::Py_IsInitialized() ) { + if ( obj ) Py_DECREF(obj); + if ( new_obj ) Py_INCREF(new_obj); + } + obj = new_obj; +} + +void DDPython::prompt() const { + DDPython::GILState state(0); + ::PyRun_InteractiveLoop(stdin,const_cast<char*>("\0")); +} + +void DDPython::afterFork() const { + if ( ::Py_IsInitialized() ) { + cout << "[INFO] Re-init python after forking....." << endl; + ::PyOS_AfterFork(); + ::PyEval_InitThreads(); + ::PyEval_ReleaseLock(); + } +} + +void DDPython::setMainThread() { + _mainThread = pthread_self(); +} + +bool DDPython::isMainThread() { + return _mainThread == pthread_self(); +} diff --git a/doc/CompileAllOptionPermutations.sh b/doc/CompileAllOptionPermutations.sh index cbfd717dd..79fa66b41 100755 --- a/doc/CompileAllOptionPermutations.sh +++ b/doc/CompileAllOptionPermutations.sh @@ -5,8 +5,8 @@ INSTALL_G4=${SW}/g4_10.01.p02_dbg/lib/Geant4-10.1.2; INSTALL_LCIO=${SW}/lcio/v02-04-03; INSTALL_XERCESC=${SW}/xercesc; CHECKOUT=${dir_name}/../../DD4hep.trunk/checkout; -export ROOTSYS=${SW}/root_v6.04.00_dbg; export ROOTSYS=${SW}/root_v5.34.25_dbg; +export ROOTSYS=${SW}/root_v6.04.00_dbg; . ${ROOTSYS}/bin/thisroot.sh; #cat ${ROOTSYS}/bin/thisroot.sh; # @@ -46,7 +46,7 @@ make_build() echo ${CMD}; exit 1 fi - make install VERBOSE=1 -j 5; + make install VERBOSE=1 -j 4; if [ $? -ne 0 ]; then make_output "DANGER WILL ROBINSON DANGER!" "++++ Failed BUILD:" echo ${CMD}; @@ -62,10 +62,17 @@ make_build() build_all() { - for DOGEANT4 in OFF ON; do - for DOXERCESC in OFF ON; do + DEF_MODES="ON OFF"; + G4_MODES="${DEF_MODES}"; + XERCES_MODES="${DEF_MODES}"; + LCIO_MODES="${DEF_MODES}"; + #G4_MODES="ON"; + #XERCES_MODES="ON"; + #LCIO_MODES="ON"; + for DOGEANT4 in ${G4_MODES}; do + for DOXERCESC in ${XERCES_MODES}; do for DOGEAR in OFF; do - for DOLCIO in OFF ON; do + for DOLCIO in ${LCIO_MODES}; do folder=build_Xer${DOXERCESC}_Geant${DOGEANT4}_Gear${DOGEAR}_Lcio${DOLCIO} WORK_DIR=${dir_name}/${folder}; mkdir -p ${WORK_DIR}/EX; @@ -76,6 +83,7 @@ build_all() OPTS="`make_opt ${DOGEANT4} -DDD4HEP_USE_GEANT4 -DGeant4_DIR=${INSTALL_G4}`\ `make_opt ${DOLCIO} -DDD4HEP_USE_LCIO -DLCIO_DIR=${INSTALL_LCIO}` \ `make_opt ${DOXERCESC} -DDD4HEP_USE_XERCESC -DXERCESC_ROOT_DIR=${INSTALL_XERCESC}` \ + -DDD4HEP_NO_REFLEX=ON -DDD4HEP_USE_CXX11=ON \ -DROOTSYS=${ROOTSYS} -DCMAKE_INSTALL_PREFIX=${WORK_DIR}/DD4hep"; CMD="cd ${dir_name}/$folder ; cmake ${OPTS} ${CHECKOUT};"; make_build; @@ -86,6 +94,7 @@ build_all() OPTS_ex="`make_opt ${DOGEANT4} -DDD4HEP_USE_GEANT4 -DGeant4_DIR=${INSTALL_G4}`\ `make_opt ${DOLCIO} -DDD4HEP_USE_LCIO -DLCIO_DIR=${INSTALL_LCIO}` \ `make_opt ${DOXERCESC} -DDD4HEP_USE_XERCESC -DXERCESC_ROOT_DIR=${INSTALL_XERCESC}` \ + -DDD4HEP_NO_REFLEX=ON -DDD4HEP_USE_CXX11=ON \ -DROOTSYS=${ROOTSYS}"; source ${DD4hep_DIR}/bin/thisdd4hep.sh; CMD="cd ${WORK_DIR}/EX; cmake ${OPTS} -DDD4hep_DIR=${DD4hep_DIR} ${CHECKOUT}/examples;"; diff --git a/doc/DDG4Manual.pdf b/doc/DDG4Manual.pdf index b1092bae184bd0aedd3ee8b3119553fae0953d26..f58fdb3aae2f13f06fa735ed98541c17f04ace50 100644 GIT binary patch delta 304348 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⪙$o!%f8u($=2iDoZLR)ntQ$< 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 delta 218737 zcmZs>bBr%c6f8Kltvj}D+qP}nzp-uGwsFVC9ox2z{T{M;FT4F$^+|UpomBdCol`q~ z4EK4|38ElOT<MK5z?6X8G#!TxNwl%uceK++zq1vW_UbC-EK}%>1|hQAmt~^lz0^jn zP0@+=+h43~8H@&0=sU*4$84APIWa}SFjc{{mcob}BILbd$va2`xxs?P#0W;DB-N}E zLaXAy6jG5VAVPF+$<6>%Q5-13Rwb~YQJMxOLMjPyi4tLE`8@zzlQ3KhsSQcq4!EbL z^V<O(rZzKh=pd3HQI@#M+59;rN|3B%q8XT2B9<m}y^#YKP;KDwBJiI?B;laga)far zQsjfk4pL)RDA}M}VP3tEbELKi2qI4y{?I+DufN!Z$YxM^ZBd-q5LQutS#T6)lS5_p zv~D2hi1m?yEOP;P5kR72k?@?k<AG3rUBh;PmqINaZ$xH!0V02z<}8<HSJ4@-_;4m0 zJ}o;82^Arc#gHL|nG?1eEU{b<<KZqe6*Il@RYhS)C70Zep8m>ET@o!ROHT(+N?L6L zAr}vvjEAURfmoBED>En(RbHG4t)TFY7cHgX5@rXWf;0j4JK?IqN>S5NNv;G7^cNnG zV94#p;S>Hu&G1WU*dUmy12=&eO4$eCIqOnp!;$<48qr}WNK7C=ZYCq#@R}Mfi6~hV zp^!#YfHm-!Rf70LfvRR9F2dhvEzqnnwgPO)!bqtrOe-J_`WH^A{P0iOx%~PH5KHsb zr1HLr_yG&;4#9}UHPjEEYTK{(XH(AK57%3Z^J7}2=N9L%L5&Rf2blu)l`CnOm?Cn; zBh1gR`D*ux>*^l3%_{<V54N4M$y#=zr(XN#CpQK?uci0L3<jqB*MHfNbC!RtE`D|1 zZBM2UXj<J4e006J6%Lz9z5*{iR~nk04{hCfYXE#__O{8y1|LPzzOmcjMBQfSua3&~ zR&qu=ScO`+3V!P3Y7a-}gBn=V(M>!^ixAGoDqu<yjzCYLZC&rF<<+4CV_IKl(flmq zdf$T8(044}<=q#W4Nn$H!jpOvO}{!2$?vdVROj4O)d(i-Y<YEQQ#}=&2FtTaIIYqj zTmYQUrl<9NJT}p72o*J{7s+Zfy2)huvo^!}7)!N>e!%Feo)(x<IPfER$PMom%Mr~e z<IL?r$_uOR3vlIX0o%SQ-z)U37XK%h%UZZcM2c1H_^1@uqZN(?zd`C#R__k5&;6Fs zExC)WrCGS{5mo0`M`!1^EC0u58)%Wd5P+Ovx#y5}-Y#<1GV2amIDL*uAih4fj96ph z5N~X$74SeMA2-50=lGF>uwkn(dR$c$-4S(8J$s|#xoNbP$E2lu9G&iNRl`+|5Ds53 zvBWvn`EkxmzmQ`et;QyBENHS-abm9aeBZ@nUE=f}qc$~Camjp{PO*Aob;e>~2vD$B zpT%mAZ1LIdxE60(fBeXWvG4Y)p#u=k`u^LuHDRLq>IFzL0|1tg0=+ftw5{zXOZW8* z6b^C&C*+C-^ya>umhk~$S(xAU==MG%T$Z~x7Ji%;U=}H4Y6PP@W!eU)hu(LXH{3t( zK6&ZAj3=b#U3X6ZAWh;8NBhpm039>?z2ve{rpTBK&mR{S_&1qj9k(;e0=m!CHm>6@ zM_agu-^JGt(9s_=ILl*f+Mu5oDz}#|V{QHH&wcEhrUm%eM^CtXn_*-yX7;8ouFhsg zcK-u87+b?IvoH}d68?t>d3j+NWX<d?TrCM%IXDUb*MMOVw@Qagg~A8uDNosNG9vYS z(s-5xSQZ~=kFmOMfm!}r>H_D2Vzz^ABuy_$E;BHYR@EliGvngHxrxD$LPkWP0SYCY zB(xlr+@|-Z3pf|fh;&qvr=uHjHHz{JSbe2SGVAw@fwWlmO`BnG?N5om<VhJ0Qj<+| z#uNi%9F0`Qz@lnDirfL%8dTT0Z_=LTEH1CVmeX2<bydmC`?WtVBYkxuSlosoqq(LN zU9*%`DwLGM)*&D>EzPA+m#oO?br(M__usg@H)y8*!||6Em13NXNfzM4G{yBnECI5I z_sY(oL*4=rrvc|ml5@?+(=IBuh$|LZ!i!lFg#j(vn>cjt#5e>rqoza8iz^)EG)lIS zN}w5L=AlNq*hq26WjmFenxJR($!KP3A^V*o-^Me@NuJfc7IROO0;4|8h6V^5DSvKU zAx5@c<m~pBe~cL|`4eP$XJq#)B-cF3U3N8Mmz6}U5WZ2&JkGm*K5ct{DUj%t_$=G0 zAS2MjmvWA0$bkU@zY#_8w$4Qg9rW%V4P`i%`ncrM%7>>%J_^+Tju|OBE1J(<;%=FR zsTjC1JVrw~S(#KAmdfUAF3;U+SP>);mBDLu&-R)t|D)c<&Zo+5C;xK#;mpcxKV~3~ zn)vzuVFokT|G|vrZAkn6^uhorG%zMsR@VQK7^wkT@tf>O{<{W+64(_T2Skyg`3tu4 zE#Mor|H4@jwKHu{6UijT$Y<+s6GSGQYqtN+4+e~wJk3mVKw2#lh9SZ;i)kj51~HBV z8GAe*N6l+0pSMwnw5O5{%4tr9ja+*0;A|~v00zRnr^f@uQI~e@>+1{_Nfkv)Y2oc} zLDK+^#9}a2LhR}T*W7PdeVPJCYK5!S5ia<B7unwZQ5kS<`uhvr7kv|(b?4D_4z4zs zVx9)|f@MOHxZCGNL+Jha9v#m`l&+Q8zFXg}pFbDNbZ=}}^js6l(ClQQ=9z3?hvl4_ zLpz^@<hm1k)yZ4nK{Ubx$()qIh<jZwit>Ojl^{i;AX&x(^%@@z4hOKT2Zd@})*D1e z_?q*_g)Eovtb0KaNorcCR4S>!oQOdjT*)p_kcT3X_sZD_b3()tan%6zs0V`SSu4uN zSykM5YST5l);|@Fv94?#a4E$5Zp+rX%yckaP=9sXYaybW8(0jPgO=ao@^KhC*|Gt2 zebqGEwg??vyV@oQwN$(few+43YWnznm&Ja2`180*(yB=XGzDF3xn7L9pju+YQbQm3 z`76SSq=i2x$z@DD*W=fUf32MrE_+h1s$1<RgH1;4Wo=2SC6zJ!&tSV-M!ww#P4)f= z1;%#SI_;b>^jfuWSj|Eg@N$&OITHb}uvA{tD0t|tEpCFpLBMd-X>f29IHK?lLz~+y zr+0KfVZEXi4o711Z*kKf5zYC|dYcQv2OzGK6=a(tn^Q=Mfgk-IqH1^YDgG!(k}nEb zPlwKxk<5NZl*c&AD@eV0kaa#MQc!<cPohZpNd9Fqbq9V#gTT!eDf>GS@8k$bLLFh5 zZOA}PEtRk+K$+7u3W6eo%<LO+zBkV?fjPs_{YfDJ){j?C_Lf<a`bwzgBw^(#y+~Q0 zM0fJMv{ZUnvS~MV|5Qfwa*&Y~x;|Jz2wnZFbI4J}X8(=3C<<WlC>@)5O<?jeaxwK; zGR=?sv>ohCrPr0i*`7V_K2-wD)A|-SZn_O}7oqGzg3ATMGzh8E^9eoFEE&SbP|NLO zXzL1{Wm-~1L7inQNbnFjjY4J;ziPYgWIY5N@@Q=0P$=fE48!B`UK%j!$_kH4o_s&+ z=>slZL)|bI|9x^I_&F?tyUIWMAvGLvAsTHh@jY2mdTV^wM!QG-Yuf}Q(3>BM>6z)w z*Hu=>vaCt7LUf0xcj11J#tbxq_8oGUHOu{S?-nAJ;Kl8Zwjzfz<mKRS;x?~Mb@rf0 z!4ZL4$QMCGgOUxRuOLX!Jq<X=9!j+jhUQjIBPfg$*s(49ZC{0%h7_Z_;6Mz?++^@M zJD6w|i0;D*A1;-4i2VihaCln|+b^c#5v~)m4xxj8s2La+^Ylt7QhuV%0`kmBm7XfA z!A@hw-#k+@fRV8$nD5b`B50C?FW-<w0)Xd-(*<M98Ko?f^a27``OyvkV!f=PNs9-q zCJiqcDB06KveJ5Qb{HD^Xr+ZX$iYgvb6R*fUKj_P=R}d^IJ*Ln+hGaI%pDsU6*78V ztMb9I5rm267&G|1_M$qWK<lavkBQ;t&QT%~5wKCon_wBuA5x>%^h))rPvcK6wW8vD z^=*gY@?jYv_%Q`ze9HvE4b*=~a<$;>0!VTZ(?mE;zu3-@iSvbcKoO}@<|ALSdlp%& zA#d_UYJ+eYbtM4uOMPei7rVS0oAfI@1Ps|tQ{FI7HsjxBd}h$2Na5gEprx>c;@lnI zOv(Hz3j24k(MH^gC<2L}bA@iQKb7ika_4N(RDdFoJh6905Y%J9(adSzNb%3JbY#Os z^&F?)`^Bw5Jpl0eaC86Bu~wC7sLbiQPv1n@o^A*S#~}C@>r4}fsWe#HO{zcR(*SXl z8QN4_^WkV$|AnDG!kjsEznf_K7Zhc9Ztef)edl6HFZ=;P1?Avk`d>QdI9n=xQ5<RP z_L0gp1rg<<cf<|@OEzOVgsG=Tf)lDcTq%!Mjx_UcyTWtPNE;Xe(ZrfR|JsIjm4U{0 zca@H~J{ZAKB<FD69_ujE%gI!-fV?o86zR<Vj)IFMqcuC@*vu@&BH06dRI<Tdux@ss z73*26H#?8l10E9tf=L{plcW2Qk)*H$&mR6%ypco4^Y&|Tq?|OrdW4iP<ZVvf?4A+2 z;YlrNQ*ZIBPPVE`cji*9lDaqf!(#+&mg*WCvr7GO<Hl($c>|w2cTTNrvV`x$|K;Im z9q!5+UpGn75qfS|m@35o&f}KE0eDQ`TS?OR{M%|)*E?mH2t)=z%<yPG;A&%dMTCO_ z<N8-vCQXz`Y^CdwI3MX~b<#icQ@~69Q<a$EFJ(+%XD5hU5Ee^=w{U|&I`~@PH#k<l zu!<uaZ&-j0w(jZdDo?O^y`9XO$yys*x5j)F=}&1`Rd%U&_J;$t+6KvudsUCjiS%Q9 zrK6k!FF~W7zOF7n+2j0yNM%YYz?V&^ua$*K0XIPs213CoCXFu}SWC7Nlh87QY1I*` ztQgAVwP!xM91&3qCU(~CQZ9SG`c$m)s{Rr&Il$@H<LtLQIY8OkE~KyST%l@O4I+Lj zlVH$F>8Yb1DY_)IG!vJ#M=1DD)}oh4;79vKd}`1<aC$kwsRxtX|916t15(oDZjFCo zWpli&J(n!?vFeewGA9AeL*AsOA6M$1o+7q~37>~eR~YPl#-HhhzgWasc0^1>5rk3N zlpN~uq4ks8YJXDf{)o({k;c-xDZ6Y)uXaH|;YrVCKbCu`QLJP_AH*l&wMs{mAUlV! zuPdF(uMmX*41(>IC`=yZyS#;Pi+?F$@Tn$hBTNzYYbUE)<OR+<obAuTJo$Q9;(h=| zUapd2m@7Jm)HXvOp$jBd5OwECHO?X@ZS$K~(gtRC-9jr9pyxfgeYt|dN~YDNUD6Ln z#qzY8vi_c!*kb8J!K5rhC2h@0HdUy&wX<e0?lTeqTU{3h;&FV0NC+8T6m|28MNRH0 zv3`%%WA{t1tmRP(Qj~CPJ#tOs@}uB?gB*`R_7Uv~_BYQfn0FMIy!8t(lkidRhw@=R za#hHRVwP*a!{qau%Ocf+Vp{byioNu7@a~lAWeRpEfmQ;Sdz`~iuZwY6eVO`|Rmz>} zg|$5Zk`p2lyPbPW5Y8YVaZkefpd;8E6zhvt=9mrUEA?f!EI>;tmLZ#2u9AQbHAv2^ zx@fx<7#g%nW4#-WolWBn#5_37rkyy`rmv@3=i%`0^9A}*za+jUI@8HRBMCR>7096b z8hAu?I5LOBk|<)MU9HZ#iMnRN1ZeH7H&ije&f7C*$4uQ<vS|j*w3Z*#&B*zdY>n7h z<ULMYv@gg~gulBmcf^OlcUOFLtS5@wG@ZOsk6>K_hAr}+Qju}D&#L71p0hRbR4;Xf zEIY|)gJbwHb#07hH7zKX_XjFF44=3<Jla^St>fkJ<g@`ZAE1(<j>g5M3DNTi3%?Q2 zy}GqUk&3_=I4q=~xxtwXswPo={O0peySkBDS8p-!{&bot4>hrKnIeXc$b<QgFUetW z;X`+!Ivk##V9Y98mzm4!HkooEhTDGh!qtci@=qia<&)`(PKjMLnGII+J1J&8=}PS5 zzE4Ztr<DI(%CQ%w6t?-%_}y^jF-jM(zV4J;COwcC|88GxT2nh+_C7RO>#R@eX3X;< zmc+n(_>q!)sB`-+&4GY$TBD;mmE5J7rEFWGXyfI9`k}iAnk|D*aMy?jv1a+8W)$v@ zo<qT%P9>DqJou1x-ns9rw(G!MnKH(r5pbv%8lpqgslU8(Xo|bvgcvW%ioy?w3{yW3 zwL4fpZMirJr+4jdxqNvPVnQK4;TP(TOtc(1Q$DV0LA|=X)YAyfJkhCP&OLL&BN&RB z_C!PG<u)SqMisvtInTE0E+IZ+qIY~A7u%e_BWzhkq98m29y$8EbVP8EODiDC1Gkf6 zUFaW;G?UHIL@yWFy$CbzC`1Fe$4};%lpAljOl&3lt*c=(Uh~nj(nXxm-uK~bl<qHb z-j*S^kTNsCWidVZD9wH$tMjMi$rD=-2+3~frLl(ob6<oEyxGu|8NW1jVYv%xjRw9B zKEkRXWXH*Ow1#cS!s~La?+C;nHnRy`;$Bs=eA+zN)2^05M(R!ZzPJZajwl=Y!Oz_+ zm3HM9J2R5av<o=zgx>|9PNkOf$Ce21Sz<zvf)nndS~OGkXCg~43|>P{p)5`~VkG@e zO>yI%TRN65=Sm{5i5(o9AK4XM<;LEB!=gsVO|V~axpp9q5Z;Lh#YDpB5@2>k{k&m- zCEQd*t$*SHl4O+ss>Fu9Dx3M``2lJ6H=|BYyhFug<orJb(Epak>@1w=z^PDFfa7#M zhYd!wu-kWZ_4=e}tj+t=8_I?#YxM2$x+;Cm0m*;D!jJ#Hzqy=}ng*(@aLjC@&<<Sw z)2|e#d}~;QK1PISq=Jqxk;H^Mae3lMB#~y9J3h90LI2zZInQGcM=*l5_&+Qewra6k zq9J^$^(Bh$eWn9~qEHcv;0b9%07=fD);yS0NVNmO99jaGwCpwlP($<Ct73hRpu~K| zEEd|P*}~~+N@Hqz8BI*e4#}VH^84n~vStU9THO70IW{O`<ZPk%J@NmpE%DcTKK`0P zfv2;RLzE)P?IFfP)zsc%5Moh7_qDOK2ZX^GXG4QfX|6AAf*tGoM+wVP0g#A-(7La{ zO8f(miFV|Yk&yL|P2#%<Pv_(m$!%^@S>z6=C%T7kA25cy<g;rcOYomS!{)jCE0i4` ziDMETgx7s31ff*h0zhI4jctKo8gtEsd{(<y5p;4cntUyWT2_ErzvCPf(n617&cB%? zo5Dj7-V@^Hs!7#PD%sUN0se&O{elqvpya$jF1two#8QVVI~kJnql7~NmHhH@be#0u zD{hUc6O$#<x?Eh>ZrknWJu!!{wp<hx)d=0#1b-2>uSzLNc3(b($7arCWV+6}F~u{! z5fxtt{y=5^Id@daJrQeaZRKn@Krt|!_!`7?{!P4K>wS=~kG@~11h{57Wc#JwJxp_& zs@LoOo7$$z>H47bHbWhRT=%y&q)$)WY^J-k*6{F|t5$2;E<KryYxvNxzC8tBzZVX# z@NV_bpzpHgjg!iQT->~|`%^|BFP^bM-5d{G3<7gLKV#0ZMD(GXH5k~vs8y@dokA$< z8T}G4zuR3r!!f=-1&sVZDayq0|D`Ak8(Vrq3@{a-S6ixniyfu!Q{zbq(UFF@b#4Zf zComXW*8IWQ**9U?cN@><-10v9@v@v<TD6@QA%T!_k33qZQS*7Zs2l<LOC`Jq?wM#V zNiqFHv7N!+3%RO75ggt}4rg*PgqwRY?rmmM{g3`D!w>v#%9U4%T>MTQ0N{H+(@xEo zVw4Fuzq)&Kowvfnkb;mH+N$8?%|o~i(kNF@)5u;NVv0N5o8f(04KJn#QE`*?-sFQ{ z=7e|Qn+e8F%m7pP2A#(C9JOJ|^fr!)(LhD)t+H9nDAX3;74ZK(m?7DkV$vTr%0vIF zf`j1|7t`-U@JF8U<(mlRu!)m*arz};*sKDuNB*yn>kCTb6gCYqHN**IArQC8^pH{( zZC9QTFLi-R_kc)!fc5Eb8jQRn=BCH^G{-JRUP#f9Qgy?8)5pE>KED(iB%LHEJ);Kv zYhX>#R4~j(Cl?VFH0?|QiEEq$R@u<9)r2e4mgo0JcZd$*+6wPslm8nQKVCB{^v^P2 zqQ&JF;W9r%CD*fNR0%phvP-CDq0Hm;pOofkX!arfAt&>)W%k@w-RI4zB$<V$u@SC= zh2s=xpJfJSfxdL8S=NJnv7HpDoLCd@1uJ~jWosiFvUmxpke*&OV(dPGZb;d?OgBq> zqNn4X_dw%ZajgV-z=EDsSwrRYeryt8Z#avC(XBUlPKa#tFK~V+^IdPzb?8ZA4dHUZ zcEviC<k@OfFY&8n>mO8x7hj{O^J&MQ>1+7S9(6dYhFYU-to_(U$zt|}ET_6e|9$Xw zkW#(yA2?}ZourrqxEh45i;u!u9M6$lSiQRor<8@@!`q1hUv6(r{0>QzaIGZ(KOW8u zt3js}ir_Y*2#wC6%=|oQNb|W43w*wp`Eu@8>G}79sh)PAn*U()AC*`w(y^4&Xz<8m z!p7XoxSLvIipsTBB+_VV^b+ZP^W^DF-V1;_=i}6*-=j=(1La}8rU6cwSYIRmT1E|G z8(;B@YV5Zhf~ju+u#$-<S@{G2mVmYKfIvCjR}B+K`+815b|r-{_R(-!W<?mooM@02 zgIhMLR#btH23(pz-Q#;0z5!8`!?uWglF<q~=Q(DL6X?@DNs8^(h51MHjjh;L^FIDn za|!plQzThR?JjCba7E9Q#M7z0)QyfNc@$Q}g*M5A|HLT8ivUX5J#Y^I9e58~on&mk z?*T@mIDihE+-1zzTFSx8qz1<l7j!xxpM0LN6$Nw>_NU?@L_sfvR2!l^A}r2+E)-a$ zwZY#N?<pqgOb=6i4kCo*O7CJFqzJSr*p$3s(ps>+v?!FV1J@;7^r)!uWEhqosp&q# zlgVGywE5kV!d34b1riQ0rb9aPPC){4DPMeOa@Orag4^xo3xsr{ByarL-HRAX0WNzf zZ*Iw-Oc43_FiV?o@(43YkS^_7@%J+sMHsfBtu+@2A=x@1g|E@Ka8n6Q1fiQ-E#{T? zA@FuoSMZl-2zV&P@mKGje@iG)^qf)MIyCVJ#JCGIsW`iRq+1N278cn+*5yJZNut`C zY__C<)kSJ`{zSC-5apKu>MpR3su%v^=rg0TJGjH<QC@g4dQ7|4!Ui{|W-*o~MVu)` z3i)B(#kcqTC0+<zQ6I28i<-zGK}abLVVUE6N^g}Jek-Yb<!LC1k0)CzP9+<mkRL%n zp4>c;xV#UPnqUIZtM!W*oRQccseFhl(iVMmWydq65bN7OZPD6pG{QpU{(BoHC3|Kk zXATYaP__oNzvP~hsv|VMgzG}%%+B~L>fRd6*mQu+oxgD%)SjyN{$fls)<10y_geO4 zsk5nym3JIt!i@<fBn%#-VzN4vM!n?qz_u9C%xGZIt8xo4IAAmWtHCnPRCDgi>;=u8 z1yH9P-nUuKuwsT)c)ASDU@X1SDL1q+9bDARiIvHhzfw!3A3R&B=LU~(Y2{R0^L5e^ z#CR3$+DLXFfe4Qbmtx4Jt!xbJ@Uf~wK@rjOWz!o^ad)XQzj|+pc3~rVogg_5LaUH8 zgg)BRYH|f&GB?4P$YC(X(SeL&`+^@wK8+JERs~F((=aJ)G{)&w)NyqSM?r=mM(yE3 z+!BJ2b91sbp^tsc-_hcxvBTY_WY64aDph^1<5k^>SWjbYgNmGruubCl*8Dl@mMM{z za-58LLhD*ByWs9&c6T>+(^|SG<_t$6)8)j1{@4aw_`!z(qkz%3|M`fTAcix_XBbO{ z3OuW!!AkzF{XpT2S@dm+fEgo=1aBegu>vAz0^i%A;F;`Bfh%<){fD5fJthW;-{*2E zxM`kEe`ZVoH{>^#i1KD9*<`kuJGBTWdtBZdod6T?31Wc(nWrKQauh;Tf;>iyf*9zs zG3gHAJ!AGM6WA;>>go`^Q4EP&C*Um5cGr6e!bSLYYd{O!8@~Z}JVDh3I>5Xc_wL2P zvs=l1p@#~(IWwKe)|StC`(xZ>@#dAq;|!L9KG;B7)?LA1mdp#g#bAc8R`F(`A|J>P zO{74CCbV`ph^)<XN4N_^X{hwy!NA!EXo~>%-be@!<&*xQY|36!x3?xP)62yd=4H-V zx_9TJFJ-wpGYP76!V?ka4&+G*Xnb53ZW;SYYCy4?Dj&&OibqFBN*d$w<UVj*PPRWD zO;m>Anw|LR(Ey7*5z%RzI0jL$Q6|)fWo1HR<N~g$F0D+*FKRg}7v?`!^E(AKJAZ)0 zeT*T)=IG#jzr?ZYVV@_4=rpe>Q*}T5Oo0A<4_nj#{)U8!|FOJ|QviriFYZ`FeZPqa zRxaL{jGjcf3?bRhImSs%_44r5{6a`iOD)%;hzZ^}E>u3r5UOl2Ck_%`4lR0U(%wDr zV4A+Q#1)IO2A<TvW3>{FN*Ap<^DsaPPExBHXJvJFiSA|b!NLem6kP*(dv2_oq$q-h z(T0;!wPvb&s5}c0R*Wpj*qRgU)}`z-W!|L2YN0p?qlpwKB$nEeJX}1Ft&(1+GakbI zoK}@+(_fd7B@u^Et-Q$wtcFKRn;;WPZ%{qPx|`wDXc*kHAHhp1L^0-P`XWFDftlH{ zdk1H8u~nPNLwg!c)tdSloKW|UD*fYXjQZ1M4m+#E91y7K%U0&s<20}ZN%GAFvSjb< zkg~jICq*<O%OK`keJ3cBf(xYf1e*~ZFrj)lu8PwN{SS<P?-lUnJ_=!7Imt3Wn%aRz zV`l~L%fzI=t9FX<$J&n$S_YtJU%lyFX<sZ+azLrE)&U~W73B^SQ1Pq>ta%Zl)(eJ? zB=$1Pp}r{RmM9k}I^b|(?a(rDgro~o7je}mQeNBPi0(3<0U2~66CwBmtXh#6sKTbE zypETHeZ{@sJ_xQUVU~?+@UX-I-%S!mLip@xng#v~uEPBRBgx^^>;P!f3N*!K=}1WS zk*^7eK`T+51Zwlx82@lMsAiXf<#i0o1WITTM83+|tp;hsu=DDP@Q`LV=vVDP(_Skl zv%>ju6v`(z^CA5jid&rh;g(&!GfIS<EO(6q#la0sQTCMh;Fb52iHgt@w}7kFQxb>i z%k5luRN1C>;E&q_Qv^^*Wv4_9!Fg^$c$nh>;ugmDeqro2G5pV&s9bIv9TS3S33(Vs z`KFNU!$z1hxRrOp?X)yK9j|WvlbSm(T4v`e?}CX74(8&BK_yp%dk-2@<VfH84o89f z`s|<QR91f<=?vFnW0m=phYyyFETN$-3BoJY3$FFu;%gEUegQ*rO9X1$l+y=GGw*Y< zrON0%AA=gxvf*73e!4NqC<T>P<0mMxu@(M^bRd<(%S)(L2#CTaY@uOJ@JZr>&)#p? z=H5xlQurZs*dU;XXq!4C2E62BA*U|sb0#-3qLoqIx6HbTv%#$?Yb?MHFM+uiV~JAu z#$-y3v7VNQT7U~Gfu}uwiF(I2bMKDBqPO`%L=P@4Bm^#Mb?ULm!VvRTJ2B%mB^#Dy zK<Ex-Z@>;>upO74BrDkQ6NV|={C5&{B_|owi>p++X67&}yf9*5J!*1kNW$Xc3ErO$ z`VkvS`6bk^;y|xGhkgWDS1nupq;Tpe2gC8`sz~}>M?gIF%pj$VgP{Xsjm6s=|Beu5 zhHWR=E^|~t>+^iP8=$lW1&V;k%+byM>|xU-yKnG4ny)}q4s=dh4L-)B$@m>L2;}cE zcQifnj#R8A#RhvC{{iC<+{<(W7(T%zGbnUVo~|HaBM-N-5CihhMTUumSMTEx*5S)3 z*+y#0E`Z2n23+EcCEm=1HF@+49S2tocA@t@WOm(gV?r#K!B`*JoO<)jDv>TD+-{WD zmgwYM7zRcXX}Y*kzHG{Ha!&%6_r6~1(Bo?Rf}QbQo!!OOvyz7&H>o2i^0WEh-oGG! zN7UMzpOqkfJDV?mU@J^8Ad=S%s^c}alr2S47(iZrydn?p$-w4js6RjLCFfd+5S5&X zPo!L9v+qesuXm;#jOdnRDau=Jj`&T0k&V2&y}^#?DjW7Mj<k=+RU*dkRs5TW+jFWK zDavi#NIDsJ2kcC}oEkvy@R?xsjnp71V+=CloG?Qu_LtHCH92;{fonj(P5LR{!WW-L z03d(jjgE1!I~DYkthFW$vSxU<843ioJJc~ws)sbQftKH4e}4Rvv;}p=b(#!Gf4}eO zR&0<f#HKxEpTXX)zjFF_W2!aGy}FtsD-4j}n%CQpY)tfNtR#kZA|^dZpR^_uWi^za z26vgSCLyMlY9WO|`FiU93o6qz)AwJ!KRM+NDg9mx7Bw9{2%IkY=#Cj=+p!tz9v2jV zZmOem$c#y7=*-s!BvO0)Ck%sZoJ6vrhJQxmV<3&Q-nAi|{&ky7nRN^dy8=Jved|6| z>-o`Tbp;k!IEZ+K1ycqt5{lXf$};v?AyxYJ1!T3usKjE(Uru$$Bqp&DNWg4HKb49# z**2S(W`3|;wa*nq7ck7C!5Gfk^`E2W9XPyQUh;_F)J*~O?b(w!zS=Mpm<H$SUNM;K zWUsN*l&?vVZ+hD~oNoxnegnzH8k-pT0%Ntg|B8rviGRE$ne0o7O*i3=oyUVGmnF|W zI-H6^V%)FA?^1!5r>lI$r0=hnDCaa^idn3ERzp5Q#|5@>=B|-sm;BE7TL&+|+Zr_F z9|r2e!I#LNRndH*5xkt>daqYAcRuq0bRO`I88O!8qTwzJj0}os7U6WIvjRbA2PEo% zoPgTMuC!~Vn0t%Jxw?}pF=OftJ^`xCZRfK7j+vsbA~6&P!+knueI}k3k6*|JP2D(R z$<7GdHhTW8mMb(yorkteuOKmiCDt3Xv=_!fttNR?PHHk?c|O-mhfj&JJF2w>*J|{N z<N6Gq#HnKkA%kIA4F6UZt#M4Rt?SK*ap9g0_Yw-d)$Hgg3T=f%T|IJl(3ZSJd7;BV z_Eg?f)KPrG^U$KDg1)QVSBlN0nn;?IphT`Lq~0CXa1u9C^SS|!^kg^S-1`1NGd-yD za!6&USzy6So`qSor`QU(Jwo`+)t!oPE!HKz6+8s;zjj1+pxXy<co&Refs6Z<ex}X4 z6BFbQfkp!@g2iKAkbGgM@g0cwT9glD>&^9BRC;gLZoZ-g_NbaBURXjB96K38WZ{~V z#XE37$+pbr+Jq0rebqjo)hDyz0%ONp5p#j{&gD@H*ry3QFS`*-4XWSDkI(1!i1cC2 zSqV>~4x6gEV;~Q{_9Ih;bD4~wd`3$chnN0xpHxJLfSj^#p*2xF)p3V8ckjCVtKR;K z$f^JG0*8O>Y2n?;xVLC-7#xlR*U#hmS;?&W7Eh46O#DjQdwCMDCa0i#LYR?<!nv)g zL-FueJ1ny$Bx~qkN&6%svQl5Mu#CAC_9`XR@En(U+KItPp1cGM#-nth#vAkBklWWZ z<+N~+3u_)OHhc(l6}N!yP)}Bub{>X|McF&h3#ck8)*AsO5NnaF3UvlvnH1Kbr85u} z0XLSt=UK2A-_shPg~)9$cry?D4AzV+lF>&v!prtkO!g6NSlRzy2Wg3p*@0PG{yrzk zRRKWwB<~g~bc5;KIg9lCnKe>)q2)i15*F@g`SP0_MY)kFy@^T8^mb#?gbql3ad)gg z;g=a!=rf`tn{4*k1;N0%)F4vAfW&-uXh<0DTasq`g)}IjM_K2h(n^&}qLFZ!Ho!0_ zhN?#?+K7Y;5;|D(gE=w|l%+2A!76Fk?7^bg7aupbmu)inBGzS3_9qQo9_z6O%H3FV zyH$pmv0S|8lvw`$P$(OgwB%Prcxq;lfVV@Ngy{w#=X&rb5`C&)d|WcHxB>Qpw5zz< z)H`^!qaO>99?<mdf-r_EuBPj<p04=<)g0T?sGIg%v4{z=$i&BxQ@Y-CEqH#}TBS(_ z+-LKI@!eqvx00<pMTqB{sRII<wCm1<R&YOb2F~H>@eU48dLi3lJcnCz;&c=PcH!;J zK=``LpaSVk^j_z|CLA_RtAbsp!I^16cFdhbRBU94v&WDhGiKu5jM=y|g^8dH?VB(a z@8;+PxbK9lcj)&?XbRC`onX7WMfBDWty>ld4&eupIlY=9MlZ1V&TnK^3>3cw;xI=4 zVM)97^E@?3I`Vqr*qqZmtfGAY>0>{N-}wc`bHZ`|A2m7<rvKbBb)Zbmv+t8h$xmz4 z2%N0{uhWW|jWHcL2>icVosOIX9tTSATs@()G(BFEq<SJONdSqE7N{0wgWI_H-GH)r zZ*wDC7^}AFuiwsPp@8WG%XNhhA`=^n>GS1>uNX7RFgS&f9yQi9x(iCM4PH@nqtP@y zM%>6qlvX1*GVOr_^rL7_2Ayb<4Dc>&h*{i85_!yWX;}shJx2{dZUX%$FNg-+M#W|F z*2OjTQpJsJN;s=SouzN=u~}FU0_ZrVhF<$X0YY-J^^F0j?+BQY9Fv%E3+0|Jj|_Z{ zdILilXcFX9Q1ti~{89VR)G!_ll8=;0l1?z6go5KNLYZx^mpZTbU#T<}wWmn1X^(x} zphMG?u%Wi@EHWZs81_i{Ew<A(a91^*Mqj%{i7Bu^H&V4;Oar2aysiWT(^ye^Uq{nj ztWmf|&@aX0Lb{k}ItRj+*gkdKp<n~d734e%SAF?Rwa_T=WSM$N7j+3y2inzcfU}bm zH%-H>O~-x~W?842rF8V}$GpXQsA{x5;G;$;gLOk`lGq3!6zi#HHLzTg6YKy(2j!y? zYE<Z^0k3?{)k<c`D!K~7nz)x0E1!OsM5lB~)SZS)hPlf6m<^!;eh22#COsEisg1e@ zqmQ?bqNyN(fbw3vS1-CbNXj(-hl@JT29J&oWt$f(pXRF$1xA-w7|VQU!X(CX7mQ_0 zl7^HQ-T)XNjS?nH|CJ696iC64Igma!V580Bb(+Goe?L62Jxm+B+05RI&R#xt@9lgz znew>#yv5w@)70CpX}|of+q$=oCg51**yZcEo7E=ps0Qfvc5R$AUuvZH*VpAE2*hjA z<=63hKbyPs`bU@FrrsHK-e3sm<aHI#Y<gr@FE0b!!OZ>Q-`~&AGkJQq`?|Ng9Q12; z`+S-|%%>j^KFW(N$|2M9Sunw0x9AjBHq&)qk0y-0Uiv*~+P~hHFPDwIS~@pSIGYrY zrbiy$FU(zh{5rd^QC9Aj1=Ra%4Za)RhjJgI7YevU{|K+IzBmI*ts*fUiOb(Ayg!}y ze?0;;ES6!5h`qX&manrp82UMzjmpsP!JV8fPN3(x`wpSEWD_FYZ`nyt76cggFYY)n z=m1>3Z-^-zwB9cm$k4lfzngQb*;AO+wLIa>aSB@xw$Ec}%>@}Gult#ZHZ<X%8&&a3 z>eePL&)|Q2eXoz9(<IYg2{hRk{N!dTbJGAfR^=o8MY+d|)z$E%d5CI>^O|TL#V`Lp zG(S6hz*mO0u|6sNWc{ulq|-IJdKQjT>FZs+Hjb^*%k}cy|8HQSm*?iSa;%m9e}mSk zYCZky2kUf=?w*a~W%_z|um3_kUin&{4MPCq_k$N>9^W4;zvoZm_o0)I_T^{8i8tr> z*W>2ne_R9v`U@|PH7*}cSQj<BYT*}JU9?qm1B};|-RTeBO`FFPR7#d~eF=w>j}X1q zQ~ZebuV!e>d@!*)SVc^4AP&kRWi0E_#B$+9WCX}Gh7vn_$%GL85=lX;6^O-ent_0Y z6mu^`vdsD;iZ@yP^3D(C10zaiJ~So=LU$^$`tdBnWc=xO#uR9HG-O=hbupt%2<nWc zx3CJ;iJg~<V}u;8X|y7TD;}^D;MiqKd}KFG4lifQQeYTjsEEONFffO6#sucx!~}WY zfVm*}&r$VKb%R&R|MpSEJ^?3yAOR+Mv!LSrA%T`Pup=eR|Eh2{iHNp|bStuoD4C$M z`t8s}l#Q1uL}@Hpvu5&-8}0r(Pb`2b%#_8>(T9ectsxnlAg`AsGZYmai+U}IH3l90 zUiSJZfDpK&Ld?eFFTfQ4y%yoqgm}PHO0jvVbmjodGW1L?C&%4y4Pb#KOaO%Bpqyt~ z{N`RNwn>0w5!JCAa3Ow*fmD+L#Q>F&0M97WvuJ@@Ed#;f1f7c?PO$6&yHS#AI+`%z z?ty~Gnf$k)iunzcGgJlz!aiB$UTdr?VHPL?Ea<adazMQ!Fd~Iu)cU^*2$moRb_1AW zxCWUX_P<#8;KeTP(<-sW03X1A?BG+X@xqw>dS&+zSHO<&kmhO1t?%-NBp;5{s8g?K zC^2X}%=VXp_^koEs%5K?>zwUMf^RXDXFb;8Xv*e<M^xaulC^&cncI&#BT<eSQ?T(c zVu(UU^>F6&Y*Hu<rl4v|CbmU!EJdP&13QlYer+!NkQ<as7&UZ|0dCsfQ8HB$9!YP+ znEb?1LnM#15Sgn_2Ia_1cY?2LW(EvP0>bY+;q<5EDE=|&Mb3zngB1?uibgsjIM1RK zQ2v3o{CGoV%J=*U9c5=3BkTBQ#4-Z}1|!9Lz;Y*(=M$-{6ka&}_l%TK082;9(<zGg zR5Y7;QrrrmJdzcG573@iZwPlF_8=+9;&`VC93fF0CEuh9Bx-rC2|r`l2t`PC5-5az zmlk20aqwS6aL|NF08h9$pN0*X(0iI$U4$j!E+aA0jZ^Q{8X}-T+NdVXoNynC)`1D( z9J>)i$YIhFd>zgctQX?-MHwVB5VlbF%o2PV8z}MY9z-Y%;6NfWs;MM1W?kV26A|t! zH;Ny*lgWh_Su|u;{k<$vMC&R?z)kt($<BG`WC-*8cqo_$%y+}t@O)Ue5?`+^&}Ypv z-lN}$YeG;OUm4#SZ#H>Yr!NNo#4+}#w!m&*082vkAGUHqVUdNt1qi4b{zzd_{KiC+ zSKA6LVdFy*AjU}s{w^%eh%^s7iZTiQz`J83bOYQoD2p3q7H-U$^89$Q7(V4`>A`3& zvrwI?>fO-|hK+_Wobo{pJM-O~Yg19x<v5l`%v+EqP#DJSI5EJSlP<(KBg>eCy~i1M zVBMl(KMF_RD<Ano$P*M(;bin&%z{Z(^s|2xm)%tZ5QSq;lG(k}iV8zizbxm(U_J|j zd95EBee8rD_xc_NgYE+!-5WIW)DaabAi#v(B}ag)Qd$@;$TTA<covfTUx)akVTOKn zGqqpS;OqL?(dCBe#|0Da)z;Hfix~&oXiNhrYSm((Q+WsR<c;&!=h<GE(eWfCynG|< z5_(G%AVsNLIRM%3*u+?9ej}cyI&WCg6OsVa6Bi{Z)#E_hm-a!J2B<aI)vvz^;~1j4 z;M0%9F?q#4`_9xdgrth^OnH3|ZGj7~d-b}=8K8bWui#CJdl<Yz%2_xsJ)*KA<H)6P zC`DW1OP`Na)#sn<$x;3_SWOSX2BznHTH@o>WT_^w6lUK%4OUrb8<fL(3MIxrH||gp z_r_I19n=sHS{v8Dnw530z&5Ac@~^l1J<?kXI5aQ09bzG49P|B-ovY!6_oRFfZ}WU3 z{1O1}BmVmXHg_&?`#*nxEbRZ&X$Qj2l8zh=PMy9H0}KzWnSK@nj0XS#qm*%K${vz8 zw?+b!+C%mXp$^9SF-<rY2G_C<nN(B6uk+W1#@4agev)-n(K6l=ES;n=@Z%ld>+1f% z{UN=@?vyKDuXC`k)9+1}N{HrFvvO>PSN*R&M1=?6=7hgx8&to4IivS4ZP^^%s&>eu zypN}j*leiEQtG*J`vow<_)_l7`@9?=jcVVGzV>A5q!+8kl@xXwomi%yZnmuI$28;L z|L*#H199*Wr$g7Y6r>Q@pcNJe_{N9C&G<wc7CvR~@JI{)d!{QHL5h&I_ekqXl{()D zmqZ%sH4$+!O$v5K+6j$47E(8H8gKzC_}%u;)*!qxSLi}fffW#dZ!`Gl*9)3K_^}jr z@v4?0`Df=!%Zc(Lt>nPd_M!>va+a#8K_}P_=Lb|WX{4@CWE$_F11JGc6M|K0wZ?QU zfmc;PUQK7^dUo@0r^k>R{T}eFpQ#1KJt1a{1bh1X{0u3g{>Yh%94Xfu+ZiFWmqfU* z0;GyDfa;Z$@C>kcfFokOpJvDn7n|Ftv%{C921bJN0V}D>qi8qv!|6Hcfv%&>3LAvT zt~>rifcqG@`LBAcR{*y}zlJ#Z;;x=#V=xSnzQ7ZE0%(jC-Hbi2i+(b7a&R+HH5`Nw zPyiEf8B!Sq;n!LX$+@1M*)8}+XPM<ECdO3=J(3OS+65S-0Wy$<;~4QO3)MD?BUd!R zGf0!wL`>I+Xw;;nr1yF8TJyjf<iq44om`ZtmIVU7pU6@u>j^X2MFW*_$R0GKin!U> zTQy5b9$y5mCXO3Ilw{HlE8d6t88Y+8l2+C1V##4^$OL~}D(F-amdY>g_<ZD{XrNZ; zvE!Q`1qb|$H-y{`-Z%;>Zg=n?Q3yLLIVX9^1y}82kafFX{rR`OjGLZVfiq!;T^C(Q zpRX55)yN3B!l(M`$)yL7IVLlK7EPv2M!{G}or%`QNyI(e19f(D-!;zE0|`ue;S{_M zOf>=-;@x%uVFAMyNeG?3Ef1t|m^?N?%vmA|Y5^2njA^OiRiQ|H7S)Ciq54Z4DS&Nd zQ(TP1<r_f)VrPYYdt&4hi}r*rFO82PCB}<k5+!uf<2kMHGmVvYmhr-ti5$UuCR5_) za356HbJ#UsW^t8os0-L7Ln*LM@K@zojVb9`269N(+|gsB-G_nzm@!j*&`({)$8EO= zrhv&93e3cVw<!sIL=DK5vBa<u!Nu9iDyuia6?M-s0S(%ea%97V{kXJQsM|<NqHF}D zzl1;iaDx0QUgEyyfAaSmP7Hpji)#R&1cxCs@Mtz;`jp7coQ;-YaV1*L_gmvE&u3_N zZ+R<7K1Tr=c0vMvt>A=PpqvIVV+PI{@_@kM2j2-}fU2JkTRN2Jj(1?)EooUbHl)Ff zpU1}aT&bT|54e)~)Z(uDwdOY-L%c$1f(6PkhM;+5gjrufUN*&?@>^CW=7Sr;c46jY ztIzs*Ie5`l!uS{OazV2-N1u|V6led;8f6PxPiEhDfXoS90`zy=>vKo_=1AdC6QCM< zEJ%8Zp^$=~g4%XlkJHzdHs<M%vUi+c)tHz7qZ>AR4|<;$KS!VP8Yg^-oM>IGgKw-H zsYhS(cx}DS{+`ZYhSsG`o~57Fp=H~n*d@)P>^NLcfI^%mpSAyh8~j`kQ=b$Nc#1;r zA%Czo_aOn+HD%$URF%Z*74PFhHDC=U*@9s@R~0LpZsAD@7VliN^8;8&vf=wxUNfr_ zwa+fno{<PW<PhRbfkTD&4ig=>b1n7u83IxT?<UJ$kJZ%4-r?VLDTB3+bu0nGwv{H9 z@nclW&lSdvd=3UdwD-0nvom9~X^1jpmlGZ1)8k4%0Xra%**2{wra}3w2q05dU9o92 z?4aN%kb1xF$Mfqw5a>dHM<_3@W*}BxsLA0!Xk^;>RY6+ow(W`GjAYXVj3bzh%A|$; z=D&EMB(l7EiTVPo?OaZ;#%YMH@g%mw!%)f(&?*>M^6IX1a6&;$-8G#XY_q|U#<I>9 z96|g<79{9VQWzX%;q-;u7f8>01ZGbQ`iOvTm_XkN1OhE5w=ec^|H%hNiJ)vwcz~%` z-q4!t#`zjVGaVF&ehDcbr)9IM;Di1K`D~Lb{h#@TneBg67?|5Vl7WZkL0DM+*UZ5b zq*M%ql|9|D5)uvge|v&bwR9Y|*fIR)>am`rAh@GMmD|xi_w2KXN7&EV7t7l;$5F10 ziWAF9(8fM5Uv(w*uAH(%1L3?R|Kv@Lxfm_zfdJ0yDvTRxoYAADud)`S1q_C*l*`EI z>cd)8O{2((F$3QouBo<r@%6uOf0XB36l7m%>UQz<dwi44yQu+n&WX1O?L3JS9jaV- z@IJ}b9+n>c;;Yx?T@J23t?A0*yK?TF2G?TP=Uo;Hn?EZn_AM$b^6EUKRcG!UL40W* zJuAib;$?5o-bbaEW&d*9o_jt%_ro!F{|MF-dQu${GYFN@(no`U|31H(t`2S>c9W*5 zb#|BMmggp^<pcr9C+ar+fR?2OoJ$Ed)yNyAwKx_p@aO)_I7n4Vjy1*DCp`T<ysv<_ zR>Dv+$anQ^ol9o!x`F(-*=LoF)3`Ke6}f$@-mu2^y^^Z`%qzcB!*R=d?!}Hb*Povr zJr|&WKY8)>W>6MbQ`x>x2XBPr2`u_#jjg6NvHKXnUH$_wl9&qX1GYd<#IN7m^+^%4 zxovk$iB4Rf;;@DXH>CT!r#4$-Mtk@KBR`dN=16*O`h+SZ6eYR&FX2!I9lpKijqd<- zMchp;ZGXAF7Z+JBE}piXqRfm|2C>_ttF5A58ig_V6-s`~Rpia4YlDk?KeJ_yCh1n% zFq_6SyNnnx+XS+Ps)J^OaUKcBC0Lwb<WTQ+31aa9oMQUX+<DGAmt82aw<QN;xPTlv z`is!EoE9En|0WmAl41FLWSAj-y(%dAc*dGwYzIWr<(ZGcEPu4}&)XI#q7>;0HdQT= zE0@Rb!4hE*C|4G=-(<~m0se+-rPqmqJP@nGeAXHOvX8ny%ztNF%vx*irRtHK&+d!P zPxQCN?QsGVk@<TYoB$lpr(qi|7}ucJ*}`PTb3n=}M_tPiWlcVS_f=xC08Ao7x<h>N zUA7JXDgv!TIv3Z|4!PqAglEV3y=sp_#lcM@-m~118wJk~%T<;~r|UeQu%zWjRNoRl zuvQ%4a<DZ`V0rqD-dx>ljH~g>8m<EvOOfR2p>+H$DjQNs6jelpYfUPENJibi3JLe> zItG6!Wn=SPWdaq3!yjDa84A1LTQ)G?fbMCc{Qx!Q`P(R2b>;}pu?y>%XU}~Yhih)J z0ud;z?!Tw@@{sH}x{4@*PTdM)&TGXM0)z`dNxoN#4TziCGnbbRo)d0W;JfJ<HYFrz zU9P7OXbPfDRFajR3?h4=C{hp%4Bt(neZTl-%`3k*_(;C#1EDo1j+Xz$#vo4q84z&T z?e#)5DBYd@ATMxu=6wYqd|N^uz`g&`N>=0b8v4XQs<SxRq-jQ+JZe-VBakQ*QH24} zL5lxry}pd2l8;}^43B_NGBaI~8DNWSW`M25jvyRV7naBW23}7{SdWQ|4>s|}Ki`p4 z4<BmO6{J2A#HXDdgNLn4$Odn7)N(vq-^sq)_NCKQ*h1CZ4TAQa4*h_%E`i74t2?6Q zDaeCnndh7W9>l71eut>j5+_;=UE%@MDOIQC?mTf0)6Sn;Bt2@kcno17^|W=!9-=fH z%l*{aTTgN@LkE!=(_l^GQePO3&8sv5m#iCe3Jv5>CYuw>i{iv((RHRu966;;KX@V^ zaYr!*3OoD(gBe}UATv{@BM_#{LTc2H_x&d#Ue3Mb$T-jy@kI?(r)g;0JW~T8So3w> z^lW;VPWBW|MM!HZ<Q6)RyY~Hp-Yn2xSE)VV%T(ua&x3MPM@~1xzMu_N!_c*;%LmF8 zOc2AEQA3Ln2${TgsIIUX?hUdPxnf+U%nL3`lNbwR8J8Gyk*8;D=(?E(P}LK1(T0N& zK9&Xz+k{XNs{Cu+ZI5c=WcvZU#&%{80ta;lgyxplU_mIYL=O1Wgyjuz(MyJmpLanI zFhxOC;EBtEd*v*FZp1)sX~moHrNc6M@Q<;RSH$E`lkqXV`hF2%r(2;UL2kNzL&s}8 zvn~0Mf$2(rcT``laT@tkeg8jfy<>YNT(Gqp+qOEkZQHhOd&Rapwv!dxwr#WHbe!~g z_TKNu^B?A{s;g?;W7JJE7O~Qo>e3fji<;;dU=URP(I;S_9S{eMdr`|?rGv_Tf+)n> zbTk)!*IBvX`GQMxp~w#ZHfD**NCH}AV3c&}&@VU>+}a1YX0i|Alg7j-F|BdfiM)WT z?y3;s1uPDZlswcR3NLN9-$PP%p-jQovq(&?a=9E4Q#a;rHraLJ{~g+i08O%6PKFJh z^-RUDSbLMaY}5pRE_$!8whcKa%A$>9HVOt~#V69HEn2g<FI-=cm28cZes@Z`J;Y<% zF1Ma1=}tS~32t<~!vr2Spn{DpdnePrc`F_QMLz|&_AP1)jZqfDCS*U_VRSH;`X%Va zbY)Y?ig4YlYR04fOqzwAcN?+v?bOB6hiCkWu6mO09m)rgxt9oAx3YN&ByM{9H1H$P z@4qI3F1TV&ozSKoLQaZ5A5Qk_b_i=ZWl0d-j?7r5&k(4|BSV(s`ncLfE>j=~s2O0o zWPg_#6?`<)nx<pVuj_!S3r?%ZF?T+Q`rMe2AGPjk9@dyr;KWattB)#|-oCKLPV?)H z<f9{p!9W1`BfL)ENp3u^#56%!aicE+LqqDPT<fK(O#-*}*5ZxEb>Ej}lQig;M?<c# zVd4N*gY2LTDVt&1DrNw~D38SGNWAe!<@}Q$xvG0_aj0ZjQNrH>$Jg<d2iM{ndPacc zmf|>gj!eV1@-QXVAwHR))Prk9wg-M4sFwr&aDM<?cSA`1UE%0||5nr=ZST`=?CI~I z<jSu@yF`fe(a{p#*gCD^zx+`j6c8WMJkVk_cO>Z-o!xf4$4|9RN21<4Ek~Ju;IKtc zF8_H&6NwBA>rpBzpP#PfL^@+DdQ{?MHju4DA~LGfi^7Eai_1RYl`qYU82wv|3gUJ4 z5zhtGX|e29RvyXHpwy5xgdY`kpb!|d_d61vWi`{Bnp6&D6jc0dde%o}?wR7#o?#%{ zJi8iC%lWqN>QDD`*GM0YhH9^COuqEek>A`q%c1G>cZR_02#OB-KR)TWGBqwL)YRR5 z!<T}5sR@sQW_lyo-q@`4MC62mbFDqoQ=9-E4|^)X!)^J=-zr+6^S7$bL7@cpdsZr5 z1)ylF*<&xHdVQ{3>;fNgrza3<zqr8yl5M^s@t0S&StSj+Dsqn5{HL_$a|1!q4x~ES zb4l}bcCClcd{=@?gdF`}JW0119JU+uWw#MMuF=0@1|MlJa{Tz@OD<cV@?Ot`R12y9 z&arlG*P!jAN{_7r`?bCfnbh-2AcWQgELvM8FxA<M-ad$-q<6socdldqf0G<d3)rwI zI2*_R0ekIWuVA^*U~C-ig+E{~kf7|Ti_k3X6A<9enYe76|3AzED<?ZkyGkxNClp{P zv`H##9k>s<4s#&K^(ayBb1)c4A0Y?IH-Q^yB^WJM@`>Hu`5j{8_p9*GMftbPD)B=N zRfw5Zje*Go&2dT~|6KAIe~bCx^nvwLraDe{zPu$il765=kT;C-Tg=>>b(N8g_ymfu zif%f|OCuo4I^UXuU)GRJ^f;OM9tV&L*1#JLReQVntE117MsbJy#!cNK!9kHy?ZnZs z&*|xxU|4j?1jhxzh_gtzT8C*ZDu(cL-1rORaxZS*Qb(~@FmoW>e))AXfk<Z%#?OSr zn+1Z{T6srIlU(Uw6#3h({5x*#4B}~<RV_Q)i@Zg`8oD9#-}jwUj^$*eE)Bq<ts?dL zqNv`{i3+~V#F-cm$Kp1@B;yJU|2pwnN|N&swYwiqq=`Qo$Cf*Sr)bUPAr5a6Q#V=x z-P=@@+IfJ*Ym@m-Gc=<3n~m0D4pIW7S`$T-{E@#lx|o6@C>NzQ&1#pDwW^b64nEG` z6qy(@C_HB=h(U6lQ5$Kqnk@i5M^->y@jC*=M7zxL7bs%Xl!>It6u5<Zhs9(HDva2w z4BBy2`ONgyR-Ah1<*aolPJw(EY|liz8H?K7-Oe|EN)B8JXhH~h<~fEEA+%lk%TXoA zh<9Ty&6oM(Vyko9R`!Dc8L`Lx2KWhbL4wGV!l`IEH=TRD+Nh!R(;q-F0?Zb@g#q(Y z&?2if!|DvBv7K#4Lkry`3l_Xh)E-%o)1L?#ZaUoWsB{Fi{E6x9tJJnuIJLK;=1)Am zNhZRJV#TVd(if`bA<@)NNDuAesK$ScZ@1f54dLp?h)c|)$>^C>M2tQHc>o7Hz4-y2 z1z*WN<n*cyLKgD_A9H{Q0uw`sWcAWQRDf*)WKK`@7+4>?plX7W8J~Z-0ON6eHJn~^ z{e71iPjV6}@;;)`Hh7yxyO2rKBVl>;-(C&S*ZS2Y{#E~X6UV-yIG+mnRn?p7E<z!E zqIQCTlIjA>ZXFet@EO$Q@P+tL?*Xy>S1AqOeX8f7!Ap2lsSbc_B7-9Bcaf}8Qfm^X z1kH&3mv>Ph<E*QJ(!@wSbPzZ_hxUdLcFZRvqv++wu*Cxk`U#~`4g?(<qds9X>v;Mw zy<7H}BeQuZ^3Mo!=-N*OROg$TSTjtr%#m-=KR%TA=K{R^I`W@*i7_VXC?g*Ba?<(t zn!#q7*NDX@KoVdU4vJMUj!A73q12%=<ZoouiwVdq6WTn)Tu?R1rbn)S6$9*_9}=1V zR^g90#t-hJz#z587FxAIAyem65VBSZduwM0uA(i*7b62ki9W41-89u!4D5S4<PZHA zbFy4vR>G+<%9dLg8n2zs1>{BXplbZ8bAm3sH|AUsIH1hqP;M2sOHG$2O#mU9q@Im1 ze{<(`&xb@AikeMBKUdtp)F5eoE-3o#x2hcS$;tzflb^kf=Lac`6f|)H$Yk_w;*uY5 zXyLxr|E*74|BoQ%VdeZkLx_E+|1pG^|IZMDrxHh{l-zb0%6&GwR5;k-??=<ENb>Kj z9Qw}U9eVti{<{RJt(0T;VNQssiDO{*U0?UF*%FK&Z*@)j*eTJb+Nokox0i>w2X&Xz z2r30G^|K|9CNlV;*c`+}#?R)v!^BSk^mZH8&A&OPo1=F5QkXR{wScG$FO>}Va&yrC zc$1cxjGBvzx6>=NT@K$?=`fUs_U@v6#uWL{u3KsM<z2*9!bk(QTPOz=>f`P}P&cS- zmnx~<IP!<%ztUn%Ig;(Zm9Hg2O#8V3-4NX&N3sn~%7tok>N>?oLf^TPbU1$KW%BB@ zzRql1$rzZ&#xi)Vi-7LvOW8(Rt>hVu=~$4;lO~b_N(HWwW%&-n-%6+q1teFm3Y7SK z@~aT4kzMlen$j}feVnf#%VfzGxY$PYDQL>t^}PdEbJ>gjqRc(k5(kJIY75P0eP*%Z z>7yn(hzsistsWJTpX1E<0UBch_O>$Wk<B@M4kl*q^qvY*#{j;XNay>=v}q*DAf<t$ zFt-LSD!M<nYmJ3Ac6NEo=`o*tUz!gvzJuAZ>jM-6l_2h@F)1!#n|1wQA90U)T<b~& zpqWiz)E5<@gOEzcb^;gJg$CK9twPI<D19I8zRl9!JqGt3tEJGWt?g?&Dbl2><#%6O z<xnu1RO+*;B!E2S!{<|FuKugTtvDbI`~4VtxW;HukjZ2$dN-wNd2Prh8~OJc%CA;X z2SES~HqC+uP<uCTDPK!IZBy-Z|0R#7uFF{T>{B6`6eq_MQAB49S(uC0Jew{>9%f8} zhyulf_Pj;2A=kwje11`ffm_(T(NhE%b{-iQx{b{(4G<HQK)@m+JI}3*cT1+`c1pX$ z)<Au|aV*(iGY9}G;e?QDAm}S?^;}1T5UTRl2!p<+yXYnQf{?+IEDh^=k=NNQZN;r{ zW%SJ!+F?_1+m@%Ex(pOsZ?7TFW;CYq<?Y(+gh$|S7Bmgg@Ll_1Xk^cYERezDp<^UH zgyOER0Pxnw@?&O)i%>Y5rjFL(LC_qqn~F8+TXzvjMg2i6U8gvZRtqtLu`)AV5id_* z&qPB$UwihE7?T04bPmHl*?0=b7Uq1a<0>MGs-s^Q^k!t|Cd;n{uf8fx)hUq^a^j2w zb>$)oYwk!F%O+mzSt}uqdm2%s%zdUb7&swK0Pct-G(FF}_m1V8Up`M*k;FEolq#gD zdhQHumkUe8aM3bm5qO1%8-++~Zi1~us<4@U(nccjLEOR5b2T_WRyO|NWSB<z&XQy1 z=}JxIVY=PqiJ_wSyM=;wFf_Lph-7%d@)rcJ2RC89e@=+KAdZ1`Ty6`;#_k8*da~fJ z06`eu5Vq-#8lQP)^!5LkTR-kxe+3v((3<gV-2ozK3kTlNt^MU0E0nON9IMlRVI-Ja z6&2<br3w!~q{+jfhWVotLJ46_h!i5C-rbARz-B_QfWn=6YwHEQ4ksVOb?tTQP`;^$ zgHY8b*{DwBE5;<ON>DFg{C<#Y-$N!Zz%_h;AF{o9Fj7_fLamdVoG)!Q6cUOs8Yw4Q zrj6b#peJe#0+M8kK6^ybqGNj3xXVx8F`s>-Awt#Wx+n_~DZeT7FBmo)oY>$-JoXJ6 z%gf7e9KOGv+jzZ0*Sa*7l%$p^k_Jn3gBaM4FBca)Arxd$ro#6&M|@3BvVrY^fEK7* znmd7drAl>|LRDiluzbu;Agjb-4T7|;ku*Oi_0aUNe_M|FQESvkJg{JRD#(U#g+vbg z;`^P)`a{}*Ub#F+VIol=vDoIft2>37C5XOVC9XFrb(H-5=;wU{ivbESVAz2$3gWvY zPRP5e4A@5MjG*hs4RU+njQHROsNHSF)oVi@@63cJ{F1JVxGfwFX5Db{La<%CpKvkZ zD|2<}7@`O{PY|Dz*plLgW)S&X%wnh}J?O0FN+T0qij<m=6-S0QRk6Bp*8$Y#2b8~r z!2h0E{VM+9!t5Brw_=gY*7&OCAhk;VF|1mwYLL(jl~DJ4aG^?w8J)5MB-RtZR)Mw$ zTig1#6?dbQ;T)$bA{$OTy<vAK_T4+pI;M0?V6!jS*sq5Y!|@%U4@tE^BSAS)`Q<_> z-lN4)|9gO!a?vCbE{UAPuE<9$mc@<qV%&33JN0pMaRK$T^!d_EybhFbnE9%ANdyW< zdB~@1K$8KapH_y16jSm5yU1NALlKw8q47$n)C1h(cj^9IM`}xxj;LE=y8pG2+q>=d zfPLRGqSuIi^5LKu7*1P}?!0Ar_*rZ%*Uh`^|JKzlcA*ci7g9`fgTUiXHjOdpn}5#Z z!?CgFZkRZHRk%HYbFb3M$8;a=AHjI*5UBYNr&SDKd*|nY6~q?+%F;w(d-v@<eXwg2 zHm>&(!$R>#k1TGL2=O^Jkm=@Xh+nDbAYbok)}J<z)1{BVA>|YnxBzdRlmWX6j(+Gp zzx)nvvPsEq(aY4`1HfHy)}}{%f0!}KtlB(%$Vqb*v^K!|`CleX_IEvGh8Q#$jYSOh zA&(n{43OA?8SD`?=My(PGo0QOGcfi89;*b6JX3@Nk}^}#9E`O6xE@?4JCoNO3@P&_ z1_l~}jfMGteLrXby3>B!W2pU~Kx3yQJ5lYP!(5E%#&n?KR+Iy>3=&EQIcg|KXe37K zKmYUAfsioO*N6AQ-ObTkegIo@i>}YTQeDc-Uo9DeuD~;3%yEs8QRkGLhV1lOQbr1O zX*BU?gm-|Kdd>FPs?k9~3fsE-#TM`1>)D!XC-s)89r_o*@v3F}W66NRFiw3$uVLGk zy_OI!*Y<c1<MWFxAw=*~pmomj>Xs5=-nx8OjhDmT-y7v;u^K+|h`IXC5CMj}j@4d9 z-|`9Hy{9Dwl?&PS_l}RJvu&+AE|N?We#9Me#o&qwg;WUKe-Bnpt>LXsTKV|qmsioA zL|P_Eop9uU2hG(hB5^8Ekz5RjI57-ng<TwSMX-59%vi60fPmJ7uZedN@K2BN)Sp5h zkR1)Lc78`stJu8y?j|N;i;oTU;YI)Tmcm#yHK%D`rUH)hg4d6*N3dbL(@q_7y#B!N zY%cqmIWH{iQ=V8riQViY@w{eD`2^jt+A<iQ53n1+gih@Q#Ms!RpcLbJNZ~0ND1RiI z_sP^6RUYir`?)>b)c5wMzLo*S8uw~{Wx59;&ZBk4$-nV%TM3|p&VT$FC@DDDLp}%z z=&*?Z+u%PzPXE#N3|JN%F3zUm%zNs#%Q=3p1K+5*{a0te6!*5$vg+C9G*}D-Mt2!5 zn5+VD{>qmuF%RuYHATE0FaW8>MR5Cv)CNaya15;uworFayIjb;{MVm9815A6>LyCT z6v_6&_ayzk7RDf8FuBK%1!`SiI+T3!?mYZ_>L2~N=2V|%9V=t|?5}!g{SY3l624TE z3LPQfJmUvO>sLRJwXT`ta`|-Z{sP5l4$uHWkD!9mMN`Q7>Ev!AKa<@FK1TZQ(QXGc zO$qC-r2C&y=#BLCLg~GKcKkt7T=DXCJ{emPX`g>(QhK``NY*3o(>gb8ZzFrF;eiPo zLiR1UQ+R6xmkxAdBM(E)mg@DS2B(<ZFKJidmzpklodC&|{@S+`>oHtx#VD8FQ>_3( zq?^}U9i!p1aD>J^-i`TO2PB8I`Hv)`mvab|;qFVqjx?t{ah-eV5u*3GO*{dQ>aH~C z31G*ROkD-Cp`D)&TRm^J+xU;w;c9GL(xy+7_y-z3bIYJ%PzHt30?&wP7r&{HbLXAW zc*Uel!EnV0X(D^}G<B_=IRf8t-3tM^0!|xO<4p^B@QnB*)~Qy0nOA?sd+i<!(mPQH z24=kc&><??NZZ=POm_OJMtdS3`OVplmSX4%lV9h@igSVZCuOM1q*q5WPlX`MU0bIU z+rj?+zS0#H%a=*Y)zFKf9Xh`nO{nz1#T)UfPUtrSm%fWoH^@nGuI*|e#{2=Grex0^ z5a;5!UDM{OYtA4eypxtz7!mSC0zusUK~~*z_g~s=-^NWRV#^aS@*rJzScm_uF~OG; z^ZX3)_r~R)SIc4<gP(iXtSjOuh6geHjY&{ZE>Yx3dCk*GF+$fXY&XC=^p)0n`bYZ- zNF7~xA1s&H^FbW5GBJH>3wQwd;`!j^zJ{#^PSfPf5?r=(uIs4Qabhe(1@hvfF7$#> zZ>Wy-Ac!;}s`mu08|_X)cvha+h32y;pxnq_)&B_PQt0!|VAB{C^hBc{So5jh<_eZ@ z!DP{9KqwOEg@Y#{s9nrKD9*M(|0M*WNnsHUmu6*&i2hMGPJ3(~MBV_fh$8-yuGD9O zA0=;0CVZfZ!#qI7!wRk*7J&_gjdu<O^~-%XeHkG^N@<WCj~_3;{w<0VMm|JB@Mq=~ zOO}Mt4%=|RKN!Q+o?P2C1it)!bvHqa*9}JeIHddUm`_qab(n6lKn(*+A2dDQa1>_z zv_B~V0@2aNm{@t?-Qx>jDHpycG;er?H}qEavL2LBqD>WI!MIyO?AV#RNZW9T#erKV z$%<wuR5~6t-+M4qireul426bos5uQEmb@UGGljavW@M1yy)ud7bY6__L6t5*+r?ZI zZzSUS7t@%Y(!1athuUW-f?zMYD4+5T<S=gbFOex$91|f4q-uD8yH%HH6MHr{ajXFE zV&O~(Nx|f(qQI|=D$6XonI50*Oo=juQ<-*-4LApiTYqZj%7g;A|6ZM`ngq6vkwkN` zEGpRn38$e8lp5{x#oND@lZ2HhmF*_Fh=gD%33{@f^-EC<c=1{dOk|nJ21CbD%<0|c zT7s5$j8a|v2XHRHa|zoWHIHkVY1U4cTjsUp=dsYg%kSB5zxvSr&%mdj>1@n<$oWZJ z`^)!%3xdlEg6s)HN}R*MV#*eYBlF5MA=S2`i)K7KJALNCg3Q+1Sz0@C`HM(m_HM)V zo&i`8sb<@3|6DcagRgHm@&d82f%ifFcH_MVj8{QBAvR|~_^+h&W-j{F2_0j)QVUrl zB96QL_LdLw0yn<6U*Gs6PVwm|fek_49nopgT*kws&<Vcblbwdm&Pz4j7>Q*3QP|Ov zk+#!nHSFU(u*_Cdo)5ah*ydds-@O?759R>gbP<S&A$GLaT%uqXWy8Vg%%B;IfIt35 z%`xv|1g{T(ljx6O_=HT56%qtY5cNsZTIWl1P-QKm2YG*$<d9u3p#$k0Do&c89P|TB zyqn@+_`K>b{s@bMFXz|W;}62gUA#n*PQhm4)bSZ57eK{je0e!nQu%8!5OMa{XnOHm zK_@u2cW2*H(;M0u=FON?xlUY7utJJAqI@AC?k5hgJ;4(6!<=T0i9>|Xs7})=`O*GZ zlmb83gDJy?ImB{Y5-!Rn%#G2DGtVXYq@cuErfpB?ydCljC-&UFq<6<K=cViVVbtT6 z@ZD!x(9~g$W8jYcNO=It<YRR8$<NaX;gy6171l6h>Nzw`Ki36|veJI1ZFRh7?~(gl z$WI0k!l6{r6Vu#m3nqic%h#0dfusSnDh#PfnQ@kvhS^DL9UuxL=lgkKu%?N9uYHyW z$Pvc#q#M(nGyi1^C4~s0+)MHwY9BAhc0Y-fL1<<>@EiW_zlFDlwK>~f5V^R%g|+t& zL>F6%0&vru;zH#qJ4xXg&|%(&2wQy%HQ@qW`p?X6=tzhZJdjEAL$*>TDL2f8oFOn@ zn9L9(^ek0^AskIg7TSEofhw@uxx3Ktt&(rJ9x+DoaN+4Rzv#`!X@rcUavK)x<*3>J zCH9^uIJiPxn2QFc&m|d^VKLFBr_d&c4I#<PglD?_uwk`O4018XVe0aNf%?V*EeQb? zvhzoeA)xgJ&SCQ$x@~FQ`wH@@bv)-AiS=N@<4qaQ?rExb;qB$kx|?H#@jg`uGvHtw zJ*;rq`BAeaA?AWZ!E?e~o84d)q`<&mzct{UWA^2b7ge!k8lA?h6s{;L7`5}+JIV*n zIrEPH<6f#YnKIZYM@954$qLTnHH863St>z}{R0o#h#|lEp$`?On5B8<nZ?aX8rqD~ zOg8Bo4-<%rQ&FgreDPlX)SLx3GBiK_5xqE!g_b*nR+Al&@dBw*S?zNg`CV<HV1uNY zK;KT_oWK61gV=;5cDiGnyq!2ImzP5sOR!sz2^nb2cA?i8Om*BG!|o}NPb&{N37B^{ z4&KDxzyHqscn!Db@2%QUI_*aSNlq)fbom=WKNtQN$A}WG?NmDl^Z59OCestiOV+{b zsKB&w=uYlwxaQ#u+jNT-i&2-Bc39^JZ!jyn0A#0J=R)<t>x4U(tLo2trZ=8g1#SW& zLs`<sy9HX)vELM)X-qBw<x&~|;!FSo3fYIMq!`SDzHP2CM{*D_jM>X>$MY}8Rj7qk zk(v-H3A*%E_^48SsDnh^v2tZ|8%Zv-sVpXcS*KY2H@2ZYU7}Rr>fbnb=>VB7YBvE) zK#_Z2j{J*HD5wJVx_{*Ng5)}Shwf$Nmz3ia<c8oFnqv7!qIjhWZY2=Fp!P>fP7$=v zHPyX7Pp8)Ms1-&RQ+(c|=AkY>bFAqE(FwO*_D1{OEZnIO87i%$gY>cd>%_{+3GgzC z9yB=86NYtCfacwRTg?S`0Alyc^0myCm2-3*0g+sCJT9)q=M{VIX!WCx;&fkE^x8|d z#$;z*)6#bKpLt<WX73FvbG@h7YR>-6pFYJhq753b&@xBL_^huO*!}NTHk?Nq;N?0R zBoY?i?{_Bre_;2OVicL6)nFK@L68{jp&Ag%VBl=r-2bCFVQz=ghUgOmWzIZ|fkDsQ z$bn!4Y&-67z6cnxO!Q4iL}1aVX8th^W_LmJ${CBUkid38oxt1rCC-+8WxD?P*AEG~ zD(AE@b#@5(SMthXr_n67;Maph8gpZm=%hFq*5=D(ffCNE8Bxy7V991o8aopihU3GV z`!qIiii-FkQ7=ml+?^-r<NIpz!LA+)R!$TZz^IuCUj&9VjZz=c9N45?hu!bPw6=c9 zxO`n=fda87qnG|!QWhnUcWZs=?xj=aq1LLitl2dtacPht<y>Bj4s<VRj?nxQxV5kr zOTQdmzvTFuxQeW#s41K&#*d_pF&30+>ViRf)c<|RwAS!CJY*$;#^g9Nc_Ru1dn_Cc z=%>ay7v@FHqUW}XRt2LWpMw%i&8>vj_HH@Rr*>*x3{oxa;gZ%F=#^ah+&rU3*<&Dh zy5g^~c^L0;L|H#xe+UZxF`YES8p-g0LQ4uy3Om{BV^udiw=+ktXZNNN)GuxIdF-u~ zzRng7r8W&Blnt8&AM_3iq1t%NEU+^G<T*H^R{6M_P8J7sGv$N&r+ahd@QcxNy1VFN zKvm(#s=x~qx>9_fZ3h&!XG<5A)z;;>=KO<R1xwy@N)SK6RY!>*RlQFdH39o#o}ofm zqNl6z=<62Uqyyjoa!lx`xa@S?@=%mrA?_dv|24Z=Za15dp-Q<2AG*XqC^~Wpu&D#Q zcJ3rk(T3{TyRgASvc?*duGRUm9Yrhi3kc3qwi}&__t!Hn&ye0<t>W8U{2dQdge3Iy z*k%)WS#ZDif=JECR?ukE!hbc@5<2R9z0-PbW7?|O35x2en?t!&=$gJ}aA<EeVY&4L zxm~UnhC7oQ6t3AzziyL8rqe_NG;4bhv!HdR3CbB4aHB5eH`3xl5=Dt$_CLn<OyJXT z;KBlX$S*{Z213&*qeE}K`NxE*u{>cAJaF#1=;=ZXukFl{-ZDe5COpzT6rykxhMAO? zFG9<Aw<(77wdoS#F!6E30)|p6l?qW@s0Xmu;uY6h6k9-r{Dn2+IK=+}TA3c{o#0mX zs2`e^j4k7TH5HHNHGT|%8NS*_*y*QS^UQEf4vBZN4Nx1{Ie>a;wR!kj5C=yb8Up<~ ztlgPz-RE=ZF1es3wa+sv;%|ddq>6*y8wr}tE7%OyZ9L@GvVzs^;LuK>Lz0C?e|5$S z(|i{~pY9bH_tfoKtQp_{!0zSOPEP9s73mMn#u~-RSV`dxR=_>tEuV?<dF%90IgFJ{ zaIVDsZ*Y1lHcY~y;Z$d~Qey`4yAtEZ52tF}b(3O8+gIw#pVh8~2-EK^D^HeGc=REN zEion}Z#pN?LU}$-&cTDG;|VtY!Gk~V7<fbbF`}PEdhLKVET2yTHVAu`^~A?`-BS^$ z6{BcxpUpxHOS6u?t{c_Bc2X|<CCaEW1qTQzeq#*wuFs3_PAuHqZr5Gr!>#c33%a(` z3lpMESg&lrOw0)zseCi39&Zcjv2|P&6TV@gS0S`iQ>$UChY}5}X%9#3wzzEGO13c< za|X}AsDR;-G_z6z2#JY_88FSInPAK2pCcrr`*DR?CkqV5J|9f_8*PPn)m3Axz$nAu zEoN_cf!SDj>_mNxq+p3cd^NJ}Nd2EvRImuH1$P(rea$WyNDuw<21}?*p$avW^Kh{) zXBYT^_(EtR@RuYpets8n%mgkjNQ2|9Ng#ycKt9op_*GxPrMei4NgeL6ec^(NK`;f* zw`!4#vg}_t0>1*AQ_4vBdH&>-p-tZYtuk%Sna(np9aZW)(!cDah&AW){bJ(hmxFme zLKMSuv)PrV4OGK%@^e-!z{_M+8dfdPLk;rRtZPj!eEgyQm0Cg19X3%Cg#u~h8INKx zb9=Y!1?vgGy28xpuYcB#ufCa%H`kF?FVl-xR|ScUJ;;hm`3g$-(ZV~BMfyY;Q^VCl zCgU5Tcjx2(3Q&6=1P5S^N3P(x9}0h~SkOX_)Yr5Dhn+_uSZqRY(u|xRf~oJ|%SBm` z%)v`7!En=@MP3Ix%2_TJkkjgwRq)tdWz(wsLz27zuu2DD8S09gDQNvR1Tq%sV!W_{ zc6&dmeMlE_sohz!4K<a+?mXZKOQ;rc0P{ZR<BlWx80b;9Y#z*c)HN5%Dgq3mfMVK6 zBvef*$Vvh!F*k88+?+}IOwt1q@MR4Yljn<-XN+1g%A~?f?d>CUTDTuo4RB-~-JBz< zjto;kF$$s^e0Lx8VMTq=X!=fIc6RKM3hyHi6I^@utt0d%eqICd#?Z`>4KJd1qmNse zX|RPSnC=r6Tep>4xTh{iCTYmV2wZg)w{z2#|5F2x36?%M$d0FMgcuEWRM~b>mxyO8 z<Vf()&~oW1=7KvPBP-Dqg#=h<B~u^yZv<@s$trv63(xVCCcXa!IkQ~LS=8Uf2A9;7 zWr8Kn0w=dBlDx!zyveTJZPsqvt7vL{3!a0`zo=&j8is9ub0J}ff_5p5^z;4(i$x5M z966ujUS;DwTR5|{<|uBx@k5YXf?&R%mwb*O#>o`#1^3Fd7dm_0BNZ2!G1hFJ5vNAW z{vj1ncNETcD-`8$*Oe~0j0n5vnHpLpN;W=h0lA}*=+xJ+=x#^428l-@FU2!{3DC*x z&J@VBY@x91^9|A;3=;zJ-3rbP$9d1}DuKWUByir%)cvbk+-*G|mqZ=r@%J3HlyezH zqoJe)Z!r>U%$=9vfBDUH6845FPd$7rvi)WcUhSrOQCs!+=j0KM$Wqlp8q1p;84fm0 znw9jZ5v@0wY5ImJ?TKFw-+AsoX)Xz(jA9Z&nl_k}zX{}6zoD_&LzoE+UHOe4=p>va zfL=?pp+2bDb*oOQ9v)O9y}r(BSZRH?-2i{R%_tYly>ApE#TR41-qEXoh@3tO%Jx1G zd7^Bzw@SBEd!R(hZgAV(Af4}gc|Si_;AENDq7341skEK&i=lcavW>+|<aaXe1N6Z| zP$3f*pbUB!kQ{c5i_nvZ0fEho%bYj`z^P}7?DgGHvWjF;neZl_FajDD?B?miE*vf( zA8>`BU=iUNz+&P5B0{JibMS4Dq9FsXmV@XQdhf{oPwO#D##0IxBhiDtJ>6bmb<P%G z>U{kGu9z+6bD-$&?It)JOp-w#H{>)Fj8lA)^|M@H`15uRWa|)XqPHku!)2)l%#c8r z>EF_z53TOdg1!ya&>>El4gXref?C{Y{(Hk^Bb&R&qWyFS*K8tr!Ak5b+6xQ@cC*;7 zA{+>=0zh*;zTLAbAz#UD$)bvQla9r2jFOPAkKUgG3K~oheU+p}<VE?~g>R=Re~XZj zBFdM`P;zdT0jNqIAw4u720O(7YG7bh%6o@d!-1`#L7`*ORI?kSUd>oxB6YIW>;{lW z&?T0t0zYlQ)|o3wCp&|Mc8&=_^&zAp|I}WF^QkBqkP4zkmp>&mV_OuB%Z@b!2p96B zhY{r5W&}tw8#^~?U9kh9Q@k~<HTl5}y5u_?_srwO{M@+YM=ER*!Z>^YHZwF&`Uqqc z&?06KiBR$}dDhNh5zkX_QSIxMLD6;U0Yy$rXCd(_uS!c%#aPD~7K+t2kN}vTa!!!n z2u+IG<sI<IUV}qN<m;l$Sa5#|xBG4B96+_*X6PI)BGWy#O5J@8HbY#b_!NsJga6#G z-<1b@oAO)c6~&ob@!gaIP74<NX`c<c*+5}CB0zVc{WN)ANcbWcN(cPpsA}Ci>1tHK zl6tcmi9~>~L-qF7MHB5jG&FlUOJuu<@EN|^cq+(z!;gDM&W?G@wXNozIdU>W`Eg<< zgHY=JBahjVy@5MQ4-b&BBV_A#^eVzY#;u4o(A_D*%`}I`+x~dKPJ8##k8Q6cJhIsx zRlpN7rw%d`0|KDxqd;Ni;~x+6@@8EQ0shaBDmLN)?w6&U;2eT|x8!faGs>XLS%Kl5 zXi2Fy8&>evUJzAI!ifldmUz3!8aFg>APDx(o{h$QLXiKJT4X(wT>R|1M%OBr#otW@ zy{2M=|1uOT5`5SIA~6w|VB$#FdT;iMcnN%M0Q}&9n6ALDt%LkfwtfD910<GpNTj}_ zBd_*?z{S;@idU{~CC=n;_DUP#F>#`v6-5xkyq>Rz(eYFzCq=`rmXw0Iy`Rso=TjcZ zYv|j%(Dz=L%I?AZ+sLoU=$EmLE&c6~(ZEcRzV6<fbr%posxZ&sca+Nn#lOg&1o(nc zer5}ip}Ib@2ex)u;-tjB$vRf!z=830uy!j(4b;-<{fLzXE4Y}?#j;Rd8&{SyqpNNG zT;oZO!-qklcva;+cMjdM*EawehVr$GQA@A((m$-uFb~Japj|sb>l3|V<YMM0A<0yL zmcA=>1NX%*q?7CN(m((1MoFHUzZ01+d*!?=Ij4&5VFl(0+yB7_05^9s2ely3Gn2Jo zFf$3OAb9bjNJP+{i`WuwN~g$|TQZdXyQ#p+*uN=*E@iq@L0|%|An!{Ivy&I(&?SfH zpC3Q|%(IDtD|T8WW@My~%{UH`6GX*YDD>96{NZ|2sc>^lpOezvub;!Zv;Jd2E;lry z=g`BP0AmH41+_`?q#6D?+E0Beo;q#HnOHp0f2+}5Fe`Q|w@6~MX`i-`clA`SrHW7X z#C3yUjv=c*sdxq;R3$KSpXi!!(~+S-+HtBuwpyo)vUARrB3Iyk!$8k3AA4Zh2Lpoa zK{Ju4jP?4_>G;u4!GueL0UsSn+!2_cs3~*^A}K{@>@iRzS$LHNbJXz0er%}*%h+F> zJ_N*ZRQfdtRksiYyG2fVVTs6jBR;oJJ6-%A5+Kd&NFf1k(Xb<1tQEYT-CyLb8MB(S z{KHb1S;$gnX{k}&Xxi&I=5l)LBr0nhP(JMSxQd%uUmi)5J#=?dbAO1GA+$9|cpbvB zO6*G4i)l#yU4gbM!%j1vbnTN>4Sdj?hyD5J&A(b}t)wNtRJ`T*J*zfWdyMjn+&IC8 zhtl+ZBxn$jg`n17*Oy7C8nblh0HkNWof0K8S*G=}*0Lq1p>e++pia_>-67ack7swm zO<*A7cgmzrX>W}t(Dz6xIleXHr+~Gn|J0sRweK6AVr{}fZZs1Uy|b8q-jl8fKkK-+ z#$e7jho!tU=nVH{eLE5qDws99-!)+mkGXK&CP4=*{?>ITgF#OWJqp7eT|fzYybv;8 zU?)(D0QaG2krZ3lK?;axTwjg*m=malrSBT-2TfSeV}__iJ`K{)+F}I-#Qz!@dfxj= zZu(t$5C~l4xriR%&QxH5C>!=Y0;Rtoa#;yt_4fQw_Q5xwkW^VBA-C~{dAhn1@XL-t ziJ$=Ro!lBfMj3?=Ws~b6mqbCNC3JDh5*{7cxGfyXtZGWPkVI72k94JsDm5H~n8}4( zy5=n&XmTGqD)$P>n{l-CkoI@-XZwUo^+UNdNLpwQ!-as55q1yCyYZpd`BfW=a*e}2 z?ems|??m-o<;pF*QtA5t(Y9fPv_>V+#7G9%!dhzo-uR=-Q~WiZuHw-IvMe+9ozuif zSEM|kNIeD3QB@F%ZnykU^^cIIwWT}HTGpV%J=nXfZ%!lnH*;n-N4)chjM-w8J6rsp z<##69%5iS(^=f<^;RO^&(ajl9qV$~%W`teBs3;#{O?ar|jep?fw5|;7^0ZX|1ae-$ zjK{V5XRm$R?Tff2LpPyjbJiTUiz!MN&95|t^8v`Sf3Ua5VFL|#=I34G5Suy&B*cRh z*<qJ0S1>-d<?b4r?t3Nk!mJ=Gd}=F_SV-Q&Yn<-k-^icEz}F7in(D}PxW!E`INm}c ztX?d=_7>DcA3bH@)J_#nV$rM#63-&QOy;7aB2mT%;p)Xs_*d2Qd-OBjVwSl|RPl6i zijY|H;b`#^v;pXatJepGp%Ard+LU1fa>s70<9~(QpS~7Kaw$lub?5o|-Fc%8mxy%< zx97N_>Y2<5pA8KwDQu&!?EqAYh_l4+p>aL7kA_bmx4#2@Asy@Otn@Tb5b78}5{Ylc z{f67_ZSS#i&qQ#jXr^MnS$ON}KVv9qX|gXpQ;gc`9xb`S*H`y6d4$4>;Cb<zIhR$c zY&K8#dX`4wA57@r61sa2I~jBa%7NVbKd{)@`@4YVu%`T(=lZa9h4ecjqR#h~GPjB| za!x3|4KJYar3$!EqelQ$&aDTaHeOvIap~2P{5RL1^~QJU-6xm89{nF#BimV8pS>{! zhH&3T)Ro7c^!e)AaNjq`F;IW{zLhQY?I%sGdlrk^opqXR^=)KUxP7Hht!CcUmrw+F zZ>4FvcU_wN>fuk<$9|}6a&j56EM?ro+{C@12Ra40*SuF5_FfQVYgrxmqh;qe{ZIS^ zwoLH<E!|+uT>rPtk^@4(M1cJ#o~;vtOaRAb{r`!|VrAp`KLeMt|G=se>Hh(%jGvn3 z?8T_53$_2Yr1jC3Bv39t$kP37(;ZPa^<?n|p~?gFpRe$Qla3K874zd<x!(TG14cRf zzo9Fp_y(trEWs}g=+q|s@IQtD!&sL?rP$KNmwF&vjG>k0wT66*h`&JrAr@Vdm3&Db zo`LQkD&mS)WdIixz9)RDC{d+J9Q9#cA&;}pClAkzeT!Amb1Fxih-T!Ra>Ig-;OxuV z;-aUk^2x3GP5Lf{5<P;n=9~|RHTIUH-rMKm64d;8-fUhy`u{?aY74$O|J_^+6MQvA z)GWxELUKyv%c8M=U32YEn%r`YzYeMMyjq@4C7WEq-UCLwWY6LBsi4)Qq?yuC2=9}~ z@IUe~PV)F&!eNRx({H<qyC6$atlM;!?>=7($no4iSdv1S-xKg*lpyI%yJZp0U|lju zYdP$${=Jc{ocMFw{oR#Gni;rBfub(<*v49y&~Xnx3rE3x>aL_iA#oz@BM`(=uVuE+ zVZDy&Is#Pv{Scp-GG)QpZn?;5R6!7MAtkW6>Hv!fiIRtun5^e}Tk(6ki=8hej;Hnb zwAE$5b(T0NOXk*o=J<FL)?^y+gHcoT!S$}=OC|N!XCLh<*=(9~)hp*x=siMV<fsbk z(k!IOs8plgj}0(s4SfH8eg7{W3^@UsiH5eNb{R0+6>NJp)W_6CK_kVXzR>Z9FpQY( zO9)Tz5;B3Yx!PK5PrU&QMh#31qyE6>(3ZWlC*<S~Hj^NXj$mzsn|<jujaU!yI?@r= zqQy*-x`#T$Q$zDqtyq;wKBNFzhnica%HYY1@k=uF2{lO4Xs85diR^ngA78e+<uI#( zJO<FiezU4C_-C>sL~NVSg7vfmZAbc`AyILX;ECZEL>F43Ui@VrS32#lsQ0t3*0tkm zeX|Rog20nxWmX396PP%OC<qQHtu-x2iusq~$CgVvla&=c$2D)S?$eN;enx8#d;(Za z)s3`N$VGZ0r0H)IW!FEN>2+@{xC?`bUe*AF9Ecz1kSqN9#uQQn<BBS_spN3rXIWbi zhj54L_AihHdv|Co4Rj?MN4_O=B~iBcmT&T-B}K(WvD0wPTigN&N7L94W*mBYu69W5 zZGo<2T&7|jq{+oB+!%424<k`AeXp=(w4t<MzhB}>;P*r%tRqhCjS$iIVSf_$e#QVx zB`F?6<gC=8b^&w|uF0%}x(=IIQ1-NcNa70tW5;k4%x0>Uo4j^2okQnj?T`&YVL}Uq zRrFs5|3U2rK=<`~_Thw0Lj@jq2Obn~t5a1Vl{4jIv4ga)frrKH1pHMUo-|yI9WgGH zhC}-<f3|Jq_)6Y1OS1DuFkPG}7y`gz6x18iB@R;E(?m%PM*;+FHY`%sw@*HQrhI3} zdQs6N^A6Gk*#PJi?Cs&2Nd*}+!J3dq4fRDC(Vj>R3DW5*pDKwLiXv0YTzte%K1x~O z^kQt;F)Gi67IMH6XBsxXq|7%YiI8D)oy29hs5zRAY$gT2MR8+oBVuJ?U<F_h&&$}r ztH2GFWX@GE2UP@Ih}^iz9uLcG2U#t2zMqSG>hFb;9M^cKmELV<1*5^54~3hTqlztF z|9u4Ix1BD&*%RIgnJDP>g~X)v_x26o%`YG9@2uB>&HX5^gagCyA4fR=Mq>%yJNkn< zLa=IwUiV!l1FYpOw>03hQvfI#KKbkTO?hym6H%QSYtwf(9SqlYVVeHs-ykIn@cUN7 zzQ0?yvI;@wA}OEQOc2=6u}+jmj~VR-LW=iVI0dOu;gsG!5xZz)N&HepHWdY!s9Oq_ zhCwawUT~MMgt($yE7_2~8+nFhj+aEBepixC9mk@AvWU_!r+lrXRRh9}_b=~wc5mcK z;%LlDUKsf%_?wC8MN!v`GsJ*?@UV_mU4yYJ_%G(_^20i)@o-mWB|4ZvAGFO-b?xaA z$xt=&S@LAHxVQIdbZw{Z&<LKevIsasZSzVP3v?HXfm^T2-nk)dFpfpZ-c5t0HuKoz z@Or>@Y;iW_2MI8v8Nk!n4m}Vy3qPBA7d;SAE9<Z9oga+f7+-CLZMjH04D~L|MjvT8 zrd5>-&G!YT%slQpKq5SJBtA2@DJiG3OU`LTBgydLQZVR;jMpB_Z_pl5!vOW%+Fy^G z5<7-dzl}KQU`^9Sp{OwZRA$Nc+u5Oh7ins&X>Z8&XwS}n5)kXzXhUPl!)A;t@KK8* za-HA@CXaz5`x3*KY`UFRmdWhg$qyTfYbG$~KW5gF2vre!El15F7x5I5z}Q_zDrRXi z&?fXdJBR$MHnUt-8<V~WJyvabh9Vfh<qCJ9WB*1QM~+F+w|rd7?)Poy;4p*6a|+^M zPFH{A_hnEw8bE)5lkhX|7*b7BoxXOYLtWh=6PGr6SbRB|c35N0{as}C=Dj7!n@m;n zhRW@QY4YK6hD0Fw8@8^<I%x50-H;b6&*Z`VvP93RO*hl`K3aT}E{0}|B`*Xq{QGL8 z1+Gl91dQP(OlQuGIQHhed?m+JaKWNy0(o}5VIc8E<v*}51EGD?u)v%Jvw!2si`iY7 z2VyAe!6?zI*w6Q2z$qWVUzIo73_7U(3PV*Jl4`RgWY78mJs`P<g!pm1yn6cDPTV(> zsMNWL$Vd2FZeHH<;Q_6wox*Nda3bKe5!qZG`4XK`9J&i6lfPp*eFa8?x9KJ2`~oou ztrm^#1h8BF4fPNVHHO|c04XN(K7msLcABV4udotRJ(i?+VX9I~?^D#|HC@}e`fjvT zWmx$n2Afu1RTG+4#uRVarfc!Z4jK^sapy5qpeiAUr24nb@%kz+uO?@>C8naKy1?$c zc72y^1&Yc2MO0{f^S+F9E<4hyG99{FV(F`;1whjP8!(TYDy5i<bYLk<f757sOk<2b zSu_=N0xsfIQ51g$HL*6F-8nPJ%fdGz>0$k|_KUgf`4afgxu38ZHRpES>|xs0!(aNR zTv(V^Y1A)-nGr9bk)|7rdt?=?pM*;|B;nmro$FoaRib_O^Me4vb(Cda#so~%Rda3i z#zq60D(=k0cSyT!q-}!+2X+XA0L{!!WZYuclX^d<px&~3+ZIJBT<n{j;M_x_<&4#R zW?%Zp6emP%XaI!mBeF(1Sh0K|ZIG1Zi`4>WqhI$!C^gr>d=;u6KT3QeE0HPi`%?%U zzdincM>J5@_EULCWf)Mlc1{gQR#;HB)Z`=dOn*a2CcuB8lxRQsMu)dlH$`VL7&NL9 zXe16PoD!jXySJFo&oRPwZVm?KldE!^pLcx2Mdp*1U5<CIksx+`NRh)<`M9cwu{b{u z;d5Eq7wW9Z(WADnC+k#k;}Q7l0yJHWb)_{?>Im^#PM-b`O@WVGZ{xi)W$0bG(%&Cv zldJz-9Rax0s>zIww^*VSGZPpY5sfZw9Xd>b35K;oC#zHSOqnt%;=qscJtM~OXnRAI z<(#Yf{|TtnGT7h1!nbhOG8)Q?knCy6Gw@hB`g}_0GOX2XYf%t<`Eh;vPSxUS0E)Pz zGUwqf$gq@f(EdCzJ(wZ}>@%5Wm|MEsN#0_y0w!@H^G0G_T@dxW@WXC!HjHUqLUSu- zD(#C>vt$%M{kkFvH_PdiJt)+l&Gv6TZ#O0M{=Ae~C>VHQYt1ud{#JK+evUnL<&B&2 zlCY_2=|4f8^y|>KEzxMv7aUgzrt~eIRK>GYU0J0WL>IEGX0Vr{<>n!3mVaON_Du(N z0gCHGSii$W%K5b@qe~Ih-{%Co->?+hQ(Gh+hPj*qdxnJ6`@L@^6&-@})T^m9aYwS{ zCzO64N?TwmZ|cRUbDk6GcG6zW1FSEtxY-F)aGSXo$6570?VJYLhE;8*NLCMUDrd#- z=~rlv+&FMBNPe|lTVbz{Dx?DUw$HA605<kMA_BX^fnh7Hb-IP2*mFedh6AIxdMID| zX2YGHZ9F1wDyx9@f09JDD7cCFVJLvWL9KKLPGqK=KF8Qw2Nlfjz*mL+ymrUOg07p^ zCr|*I`DIN>>N_KFO}P7<hFl1mJlt2l+K0drSpAoF|DTpg#t+b>{GSptTLGpez?~HU zW4U=Aq~pq&(}_dsO&}G=(y#ZqI3B|TwF@%QE{IE&;0~jb8KpxzQsKD<HTuC5x`86% zg7iCw2dmo!`lY_rpdVTGWf^KRKV*iSivSXTEL|zDuNhHWTomsWm^EE~GX-56Q@O3% zKgHg=5)!SB7~AvV4ExI=9MD?=$gj^9?ZZk0eRYQGuv}ca!z<=ucd39#qnpuaJnp+_ z3$#8Tzx{*sG^00VoP#x|B8O_Qt$`>VP$<Il-7-Kbq2)gS`(jO#InT-H&&YGYy|#nP zqITI>EtAWm@!;j4B2{6GhA*9hZ!6{3DY~6%Yv-qZ_!h=dX#AZ0%TTBlP^hSFD+#~m z6)3W^5~_3}MwG%_lxnhe=WGi?E!xbDKRCbOYU9p!yTCYU&zeE+;X|0Muy`?OEgDtn z#L|gQM(S|)prl}6EkQo~Qj-*H%AAyaDM)%66wa<TX}vJVq_Rqg$=Npa8BL+lh9tWY zxW3YD0-+x+%%eZ%1$Gw>V3$Ko6-^*QDZf)g%#4=T!K>-4%PmI((fQ9ve-UJor}aiz z*ANNZnUEI9K*-A&Ej3I*q+nO&)l!4K_V%KnvyZd{XZbBIT$kB3O_*<uMW!tkD)<?o zL$c?xal;K)p`OYU=6B<q_|vMJP<3fPK4(UOvvDX>YIDLJ9|PkE_#$i#e{`2pW*7(# zaEZSNNzWdl>v<8Q{eV;~?1;pi<d*wd0>;uZCDS#O;6G1LA#i$8;IidMp-1LPOdR}P z?)eS5gT?mH@eeLT#^t2H;(_<1mql&!;$2$5V-Ie9`wUWfJ@aCmziS_B<pO%e0v76N zc#>A<=&+n{CpWkV;1Fge87TUM4=;FDajy2;TRNY$Lv}!8HP_}c3C$*I$NbD6W1cpa zP+qaFM6LX-pcyIhf~sO|5YkPzznNr+1(LHKguK18dC_m*NKHv4BVd~&u=L>%GGRcD z(;t7PClYbZiDw#@t)*M~MwAHNJko@`p8>8&L~2M<@0EY2fN7`GOUiIln{vu8hqzZR zjO~p!rr=9Xbx1w6LGS@Ws5KYxw{6sJX>{;Fg0<d2a9m>_hdbA#D+yj!++jxfKM|vP z(n3{X(bT_(mCM<hB@^r_N0h=u5e4hj!$^bhVybUkWhn|HmYho(;|zn`)^ob3iU$-6 z=+ihPiaHO50q@*X!{scVpP*)QV6A+%Sm>aMQeVHY_)U|HCkp(S1zTFT@jQBfeWf2G zfW|Ftxb`<rDen=Uxt$I61?pDx^;W|rhyBIE&tiz0boI`g*rk5luB2#4AgBg`YlE{e z5<Gdl+}7+27=Xbcp-@&n#AWM)K1eBfj)J)`%qN=yP*nl95spNEC>z?lM<Tq0gM{~} z8u_d8gkoX&Bbb)2pgCkH0g*7vPpGcEWQ-@L2Sz#SAf(LI9S8);+%jg3!}$emSgc%M zQVy)lLXwf*MF<ck7H2q!7Sr3_{3g0S!5Nlyn-?BZVC`6RhX!3aQo^LWgxSvcI1`L! z_#9ING;hY;M%-X$PP0cx=9=15{^!~>z?u8%lEqcsGM|$moA7<W<)0XJ4r;7%=b7N) zjn)ga<<I$Cs^<#c!N_8pmi!R=Dxa!gi58uz*WZdfWr-b>P1tC+^I|xGexoTJ<~zq! zc7Lv)A$1uT3zMN$u1_2ukZKEjF~*nhzwBxU<gfSCH!tI}=7gfBG{;wrg5@`m`!oH2 zY`tT1r@<Dl9ox2T+qONy#J2g5ZQC{`w(W^+JDE5+*?T|roHyqa+*MuGclTQTTh|4Q zu;$>*>k;^xOsWLO`SwB(EDsr31Wc+?FQZM0=H@Ahc0eM?7X3<?EP3a-A`BDivk_v% zeyAarb;mPbE2@mmKx>rRr-+$;oXYTn(V>P9)|cVy3cMbXnkm{-amUk;;F>X_VS>{H z93!b7Ekj6gC&-PG(h|ajOF~yr6&Jh@dR~Wh2?s3N==S{FT^CCdfQJ2cE!|T><N|}^ zn_d5Wk^~1Nvy!49f;e(OZRd-e#TOQ9o0N%(%Wp0FP6a5}lyI$bMT-oM<}kLs>^+7; zi-FF;Anfp9_>T-sQiTe)+Uotw85Y9@YzU&^OAmwZz1%xK-F~VwWta?deBdtMR<dj{ zY*z1^+z&8$sGr+iA;3n2T4xE6ECkB^#w8LNnx&Sfo(aZL#A6Dd#TNqQfI{$;q8<F@ z#I!i7NNoFCazMO`833CfAWAUSBsc?I$4I=7P~QAX91uS*xbr16?ebS3ARUMV@TdX4 zX2B9VP&OK8V3yl<@6lC^8W;~YnV1L@HsQ(?u!~IxnpQwg))MhJ8ivUOZqla?7kpJ4 zpDxdZ0l_%P8vuKsxLyZ|FvMC+{8ePO2;r8>+(y{BNxHOtbA89jB}774gY3hq26Ubj z$5fo*%jqydxs9;3xmUyPp=de+AeUo3yEyB-89&LHTcnJ@)<*$_?I&kglH7pm+JY>3 zZ`beek?Z&l{;m09iKMgN+tn<XL#&lk@eguibD7>^o4uP~)Xu9^cPwV-C`;a$lY3#l z3HDhGtmKw5`jzBubFkZLWtLD-#JRTZj<m{~;Dp&@`4M<)Fu5}9g;POEy7wVlK$VJj zk+pWlHKxeE<Zi9*DX!!3qd(U>FZVMKHdk1wA2xO@o!QKZ*&XaTE|o!##VbpbUqYz1 zUGCG}=pzrM7x)RV#P+{t;Li~Lk0uwb71|OU0Roiur{C9~2}Om#@_!l5tgKA`6X<T~ z*xKW^BY)Kz^vAgywBb3uXkbAe8WqFO6^4<4*RsQjCOjLlw;akiIX~aL!;y0*awKZ5 zsr&FBnre17iOx*1+LPrxOi-OvlUO^(OuYHiQfDO<R^#!S<~WTXSgP2N)>d-`W_H66 z+@!0?+3l`Y%6ZHxC*1ueUV#Hq5d&b2F>9%y!KB{x4H*CCAiDF|hqt)J_jGU|FbGSA zoWT{BF5TxhBLjV_rX%+uhz7wON%GGE$^?Se$_0Z}CNY6UBEp73zx}IK(9eW+**6Y3 zGp0q7+=aZxN=>=%8CFnOpZFY-GQ~gnt1DK7f)919F^N*RVVuu_$T+K?Rs>+2eWb2| zcPPygnG_u_<w+V{pp7Vuj&?=A=Q@P$<%l%55e?j^Oke|nklpos&ur0U!C`t7v<lAi z$UOGwpqd=a2%0i$NRgVr<Oc<ucTz4QBa*E~7D(ZwF`ocQSX4-92vsBzcGgG5EQ*fB zc}zv7K@Q3*ssY~VpDINj#t1OXC!_l9)F#dMJ4r2&<`%4uZ^YCmT_lyVS_RBy6(<Fy zeh7=>h^PaV2)Z|#_N6~K1LZJ+W^f7=0;dr@N4t(iP1PYooE@&-Oc{PEDas58f(ab@ zcY4xq%!hI8a6>8a(8w{TK{p_t&EHg^rzUhStm*N{-H|B3Hni@*?!o}GK9Mvr1;bPz z4YxpVW)|b?U`D1kqFk!E-Afy#?)R%6jU~lF#HV~O?i{-FaU+CX@V5Od;iuAEMMAS8 zFMYlmzPDe#`~+WIpXz#8<W_g<AT|-wWj@?MW!PGMHB*Tn!zL`?qfz^-9)%2$f*<wF zPM(70+X7t%Ke7#cMF9XpC1F|9g_njz{^U91(#81^_+D6hGItEdd7#R&aP~;zjPSnb zoPR1@5i0mxx01PerB_v@pyH0ax@&FEyXnWCp@#Ky_W+tk6PG4tEm$sR<=boCx5(pM zU$XPMaBEW7#>S*?vPq7@T**oPc-i0(a}fQ(w^R#!NfeHqV>$qZpwc+-sb~e8W0k}Y z{1*mz7s%$-g2zjO1EI#VP*KQ8svwYYr`cB|`M>lh+!y*yVLyNOr-z-L?_YF8T?RYE zjUWRdw@>(g>_6Widz`NCs`AVh=QnWNK$m9>D$eyjFGR}yJJUMjSHVd+`^WV9$J9zG zkP9W18sRe&=(qq;;$*Qr^gY+|bK?YHC0k&ok}FIO@X)?^t}=<YyEwsE2TdHuyL28a z>}}1~w+x|04eO+zeDV>03%Alf0$VrXV`Iu~2UW^O3-P<i5dENcv*vc(BA4f$OL)#e zueRCeuFtIJdI}`%H?$n%P+DD@E9T*^Y$~4PD|xIb*_#2VJR=~zXbM&x0;tKxS0(X5 zxKati>EUTcF<OwbVO?`KG2jL`7_BdNYp*#HZfSwSxc(U|d~l0GmL*LwX>o~Y!j+ij z=BB~t!xqfB3YD!(g4<oGfSoNmjAuY)rDC4InKFOY>Ad{Yqz%`rhh|RRgS@Z77TvX7 z)%=x%Krf)9rz2HTGg$E9Zfo#LDLo~R@O;mtU-Mzu;n9)r)q$Pvz~c4g{YojQZH?ux zjY{pH2((@2e5t(FYSOt5DUM)Y;Cq0(#Q?8Mh`Sa~FB{<`ZC!2H?ibtKkXUF5#R{@- z6uYu)SReTsAMVsS^w{|@jM>X)UYHk4rTd**aW#NSIDSPCHmcA7w_;t9<kE-P8;f2? zhF3rO+gq!vh%`+ym_#9Np%DG=LZYBdC#OTmS0om!KWo~tn(X%t)p;}y@N`^@_rS@= zUiU{$8u5tb4&9UJ1yPf@c4hMKKa#x5^yb$U><SsI#!ZFcdbE)i8|ObsDjP8;lwRp| zQc3^;8H0@ESs(?i3+%<Ok{!1IN?6Js`RF*P^uJNuD4bIXm&(UdhMXg#B`%HYO<ko+ zuG|3ab8Y<!)v4A~d%F7wNwRP{SPAL0l7eFIIy!<NJdiz>%-Ony)2}b9iso449G|nX zxeQ{du?~_V?EvRUljN(4;C2FrP|dSaN^C&mkfoZyg3W{q*+3Ir0JxY;*4ON10LGk` z_Mpg8^r;E5g3*{b*B5{K!Amm`seH{4Pnjw4d_t@=2AcNh<*#GLbH)OvF`RPEL#0Wq zGA@ua1Y7Ba(@F%>r?xDyBx~G{Rx0vbNLU#{9VH&3fhK-|Ej#h|&kMaPo%h;)0aXC& z>Pa2+KitZR(wa9;>hS_Z_V#M=BfO4eX2qZAfoB2YRfA=*jP~74D$PSB{6rN8)%%ib zipT>^$gw)iv~0Txr;+DXs)!!jIuQXFbJ%5_lwQ_EOZdO9_P5gatexY7`HyoqzMD>W z5+OFNJD;FOGC%y?mH0d*kS}C#H)y~smfpM0Zekqrwx1-5d-7bN1xz^?nRe9oDp@D` zq)CkaRXdqa`btxCx}I%%5XV?76zBTH7m1L~#CCxw?FS^&o>#^kxc0b1V}@R&qzfER zRua1I^Wd5hUq_8MJ^o5zeexi329*`#ugTnm(~og6Vg0I;hsAJ_Mhn=Y{8vB<y?k-B zOJks4OeHeSTjM=jPL2pgl$|(7LXGGRqa-Vm7!^O`!c2*r{jVuI)l_^24jm26^<<S_ zu!7#2H2+e{J2y0)_V*66=;cba{YvbHtML9>R9$aMY;`6Fe?=Zvi;F4TyL8#E3ORTO z7vz?QCa}p}j^f4mI&ilwOydC#-`BAD$l>VOk7l+yfb?J04c@;P3M<l*51R3?k_M<I z=4*-GA;P>aej>4x(8Z}=4dR}2f;h<mT^yzG<m*J`EciDPzY=V|Ywxy4K5;|1HXf<H zlNB4}I|WRAtx@fA?Z>ny10e0&ve&t!bZv~0&u!i!!4qdIegDDxy0ridfy{eGfN*EJ zGj$Yat^()j%sr}S8nQ#^{@q!CCzfEqdP+&f1hG2>mXJ%eP)$mpO)gto2%q_ri}I70 zd@Dp=V%DbTpfR*Vr>!D0RHYBoQojenC(JaOPg(rb-?hf{0#gJ}4v+MX2VS~B6l6tR zx?18v${NM=<Nf4C)I&7gs9w6Uc1B#yBM$2^dUG%%Ul?N_9JJk2F?t$i=jqZf<9f^A zz-82Ml>ckuv8DYGjL<+hng8>IN|UB-4~_sxpgT|PM3*{XlijG+yMhPp7*L{LrzosK zNuj{{xAS}-Usa4FcO--))wO-%shG&JK=&f5gOt&N@ltCk+0rtB&_j?u2BSO{##`q@ zb*sBw@7sBmooz0ag$~&}NSMe1&+zwD%D0&-y-Ok&BO}57ech;LE!Q}-7IBVgCGrnI zywG<cE~$#kV9&&cE4C<)LtQx*p7*a~c2w<ykKQnQO(wc6jc${IrU9mLx@rVAtK3~= zBmp;pDzi(M&K{cPo!#TZ{&fEt$fH$6SS<DnvBUio6BO2+VjewxKm%u{DUWiw?*S|8 zv?~c}07Yu5m9vr_6_zDbM#9OOoTwo{dz3|w><_4QG<>j)VxF;#bPupjKpAI=$BdbI z?PY~~5aB4o!cMON7UfAVJ=Wg%MZK}OEUS_QPr;uZqbS1+(=+x`xoUiIuLg`so7Sco zSh=+J#Jc@H!SEJ**2X|L1rZu1YcJBFx+>-cSS5*BFeuxASJ;bJt`<-U-9J)*894<< zb&cITnJL?)O9o!E2L+Wzqe(__gHTUv+>_!|k7A6A+Eo`_X&v_Q2{b}xJvLIY(gTR! zgxAOg!)c)*BD<&Ba!$2y-sbbes}aW?<wLS-YG8k>GctepYAs)_N7~fwCN2)0I?-KB zzu_9bNl&5hi9i$Rj*+M{n?lV2u?LmnqXxK6?EifD6&%wbz$!fKN|1c?0=0FN7y2)s za0`AV!eTVsk{+r<#XfFvNbqoQar1r5uTe4a?^xzcSA*W`Dl%3XsSamwb8I4w-v(a0 zCY16;^gtta^z?xA{7wOjGJ~HNfuSzhjvQ~sN}^{Tc?zB>MzR$lU%hYyoStuD&P8RQ z*2+3a;+#0ruB9ypK;sD{-};AhVzZh99UsmUp`)eVhGcHyD`BFj)Ma)YV>LedAe&Nd zF^BXdAGYCx_jB%ePy1DEK+$B;*82roNa0G%27M4VBxhv{?<zkRkFA&(+exZO%^@4T zl<x3=Kl#@if@<fh{6RDW1Xz1b`KsKEHWG%b4_8eZ9PkBLbrMctBm86i>F4)3{&R}6 z(O>a^a53?u@o(f}{=+xppf^Gbt-p9UOrZ5`2-TF)Iea7#zsoFCy2w4AnOyc)pzpQ; zxJ(rz<^6ZjXjo3u`C3$z)=X$;c9Y$(B9-^MiZVkN>L2TV;(lu?04nqbf9hn^L2H=} zrvby7U4hVmMhI<{N766|%K1WxhcS3wZ}mc3?QqrDVw^mK%mAJnG2BK<q;z(fk+WBb zGf#HhyPD52S{k|7l7r0lqH^GX7o*IVsxr?Yx1fsVAUC+;u(XnL0g?cENNd}KW2FeO zN{RnNaP>3nA8+d)#=B0_F;^Wlxh57LcaGgFMK0Z$d_>;lRos$-=VYapIBKN;YEfF3 zBUued7<|VDTbb%=6S2puTw0o?J`nt2zxW9u`1Bi0fo(?5)kiM^iU9Jg!B7!zKn0O@ zYqHlCMSu>&j1ogWB~ifZeMg>b*x2cNhAk%_Ha?4A7^z=9ATWukRw4+iGcx*O$OD^F zTpF8LLi5Kn4en77%@CO_^a#JW1F-r86$feq;Z)y-D2+5(VtJ|)K@s<rG#XtGBf1z< z7dD~UyGY+^iCZ)MOw5p>V1;!GF>#A8Z0>k^)JSMY7unKYqz>p96d+^Pxlu4{I&%p+ z^DJxXuA;>P>?qgp1g2zQI68$!!7ZML3dbyy4XZ9@hX<8QS5fo^k5tqf@N;{*`>{|q zjaQEC{*|GOU%y}KnpsGokvHd>?q%3^481&W(M8Rs2tx8^)Ql~=)bxBoL)c_{ja&OB zuBFm0d8r<!ysev(V_yP(Tnxwm&B0kT+qyr_(tTnMc$vjSnu|q5=Fj+3B4cM^s-FDQ z+|&tBWC~WKPU#u62#!gJyxv2iYeP{c>7m_f_D?J*G8ArY_tmmto!?CPg$zzJXLrLq zs$N60H5U}Di?XWp=AO4jZV6(4!X(cQqqj6LzYoCiMG|%emG@e~Z#nRyDF?j}TB>Yy z9-&bHEE>PT*sn?o>Cdbw$)fm3ZB$6kdQGu~ys>`{XjH9_<BwngdMW=o_E2j3y{nmC z@?#t<^0l|d><KW1|Jl*3-P$F94yrpvc`}zhK@of{8bP;bOmLbh*I-l-CO2$zCDiKO zI?b&f3OTVOKH;cPk8C&R=bLkDZhp#)BwW9tS84TY6h&q!f{MrYfGB@BK>kLV*`)V# z=nQ|L2z|hYiNBb{Wq2>R64bu=g`U=s1%~$X7KP&mz5|QR#{U0;@3FA_7qdZ?#`AN= z0aCXVzPlm0fW+5r<Zu2gfC}y2ZaUNwHBo(JppOLqGTcQbaHicN_;eA&iqR@=@m6g{ zf6MjS1?G%;h@x+rnJBW~on=#yBzE=E`u+*s^_umdCvoitH0%D_beBE^7sB~%X+y8M zO!@BOnuS)OHI298diBsk<IWl;*&+p_3+SL)R#)Lv&*HEpw`xCKyKsVFLKn%7kSK<) zJ^d{1uUTY6Z!b@@dw#gTntw$(WQmq!fDVH4xR*u?P5e2-Dw+ekTQSJ(@U*?b+nf0~ zDd5NoH0<;OPi6YbDGAS)N`{Q7Hum>-WOsv9d2Op?&=SKadRJtnm6PFTIHemV%)zI$ zZHit@L+3=K!H9?ga9WLMIct@q(HUwtNNgJ$mF}kv!Zd{T=VE?*;{L%s*6n1!fg6XB zDrY++yXKs{m`sj62%38_95^xqVsgn6-7JD6MBg>;3s)46d=ktn@a!FG=%U-a)5e3q zr2xJfx(9BF1VXH~av@UUdX!8240Tmb??5Y((r<%d<P0}JzgM#JQ~S3`m7I5_*;SFS z4oh@qdVSfQeXcjuwK>E#p+6;7y$7Mg|FnIz!!tGdD><-)DJ$i<RWO!*k5E}9XHw<K zpdmy^8&d4L<PBiEa`7uveBxK0;f1+#(E%J@{0H9=f|Uuo#pMMM@*jz2si7zv&OgET z-xnQO2v<KC!GKMZ&&MfiInC7;K$mW@#CdG%Hahyb%chq4P}`utK%fWBrKl9o0H#sZ zlqr4V`iHw6Z^F5yc=k;^i!7<OAxSqw=nB7OEnHB!qD!5j#)w5Yr>{)}G;=c}D*;4j zX2)O*Ibw8Qs%lfz&|Eix!1%(I!e3JsxBiup!Yr{*()II1#GrayU?1g1#mV(eMz6P^ zc<T~mRbGA<ytOAv=a-2TTj6i$3{2-QGwkT|>WLDJcO|k7gV0Y1W_8b4ymznAi#^IB z*^CaE=HlLvhpVRr#G?{w?nIRc(txQfs>-R)hoG*g*ZpDGY<;x&C3kc*`t@M@7(kJc zmKfDiV3)1wm)b)2WpOcT`ZHx?d)JO7<vS$8g^F`C@@uTc@#GZ-O)^eii(Y>FLY-UT zlKet=4OM2Q+%9wa*nwxlu_-;=Q`fj#yNA@A!{5u0xyldlFoUvN6oo@^2mp}SdxYNz z^ee$=^;o8=_V;G|Fj(ZgSR|O=$bOatI?a8-(sG>@k}Fi@s+hz=m)@DFLvhU9dH}1> zEy~N_^tZFiofg*a<ExB`L<CP2DvKcR1Ba1h{ywAK?p_Qhru#TXY!?S=(GjMi^Te81 zZvHe?%$vi9)2nU5mfrSCJ|HbAX>qvI=57hvt|UbYK~mYC$hIb0q>e_Nx{xUtPV382 z_}mF(@nfw;*?rt80bQs4y_m*d+V{m$du(XQ5k6)pB|@kaFh>D84aq?u5e`k!zoney z!J;b>Cl_d)gk_;n8gA*B^**bie}Y-s0c2jD8T5e~4iV=~BZ^An2UuCb-&1jgqr<W< z#8OhIvZ0iw&6lYYX(=~-$6AMHkitzdHokrO1Z&mMChs&_Y6cRD)l-Af?>Rq!x_oPi z&q=|>Zwpd_;BFdE<a=LxR6tQ-=G<O+d~Y31sIS8mq(FB0)^XktlL5r}s*(FyksrxC zt5X+eI(hF3|I_Vw0LU)!3tQmy_%7Q($YcMp2gft^JN@KChXv-fNLzbT(zYQ!(aotm zhDS=GT5#J()|PMb19B6E>vKxZT%mPsea(9}Q^klgO^b{Sw^r&MzrBR@<j8a-kmmmY z8ZMX<pl<EB@OMpw(WO~|vdNrH10}1~iz?lM7fyM}l*p-w0t7EpStLiA2Pbx7rL&uC zjnchewp5B^f_RO@A2ze_n;itC$b7oGrO?7W3I$+qlb5r>l!$^aGMAp0qJtbsJ8n^| zoa+N28K8lZskyzhcRa7TgQ+;D`N!o9O5MhKlyQ{~7yZNa#3$dH#YLUR>uM2jJ>R@A zsA~&;V9=791+-0R#MKOjR9s-!2XQ`MlbplL6n7UCT|TM*J4FcxHiMC%Wc2tDHW2iK zKFpHMAFaK1Ac&7gWMpZ)s;zdpRQtO9h=Ob9hnn@6E<7hl2^6d*#?Q*%q<k4h{rjS2 z<WyGg;N$ZFW@iuAD!82yg2>BypxA9vwup$6PxElj05EhH-%#KUojJd_?5LTG7=3TO zo$CcR{s={V^-cLB)V3i1&-=bZCf~~^(d-e;OAn+A=TSI%u1wh&``m*pe?BPn(cOC9 zVgcKFPI!YCctfW8DMkNRdg74@h~Jm@bQkXs02DoYEMaH|@k`>XWcj;XYGD;(`pP7b zj4^2m7XZv|rn)6dGkQUXNf{UQ<g8l3xUEOW(A3o41(08mh>iC;Oy0D8IEc{onmxIH zf4)HrQlS^DWlgBd6`dpO-i9Ioa45NdMvGR>6bims^bH^tR&st=?5a$Lt>RUd<ElOl z2amHb!$ATkj%q+TBpbSzDT(uBi%qc)7f-<S0LmiEwa}Gs<7afA#P@V|n<^iCRA~nW zI#LW&9Q5};d+H{_wRQ~OS+1hIrjAMHH2><^l(2xu-NH~0JawWdrmhrW{?<n#U@}!@ zvh?ItHqk@M>HtzDu8!R2p$(qV2Q}s0e1`hTp*YTY38D)WT&*-wwU|C8b*P!?nX-$~ z8k+U`<nQpTov#sx3=ZlyT9E;L*8ZU@!62V4SPv0mfM9W31KK$^0plHoR*NL?$gVJd zC*0K9McoNvx{xXGO>$N1h8Z4gZGQ6uYaV<rwm^lVr8Cjb_cpV<=><-iycGOj8O`zE zGP)Hp3Y;1ol#P?+zp|lLg?Mm%u(Sg?aP-#xWN>mY5VoHg{a7f}*7tO905BXI_y0{Z zrvcc(*#R}$vT>UnC_V3*r{xfvja15Yn_b3~xqaIvd*jquK@vuau**fHGOUh%pUY8J zuB~`veFOekbg7X~`=d0m_aZN4UDZ$|jIyps=n0yxb$$T!awbjg|A--y$ulXGak%%h z-W5D=LN&hw05T@m(x-mpPX>r}+dg$Dbx@IP0GaNvAWU+{_zScai0%4Y0;?O%Z`)7Z ze<>C2?_9B;&ktPLZtqmj@@uSTJ%Z6CIV0_v$MafbR^LpQ{^lmJ?q)1YLulHJl=@!3 z)Jxfo+pE9+-5yjuBmPcP<%<iVn-(r38*73?|9)znt1`TjWQ5x%dDahadT`MNgQ0`& z1}wjKvFHsGr>A>Mmj<z^?9XeJ5qsOQ7nhL4Sr#@KUCrN)lqlT#k!N&e*5y>H#a9i; zCQ^+Jr02Z(K7jQYVV2)^Zs}hP0k~j}wmJ#f;-(%LCVUo)oQI5Exl{Pg-Mo(wk)o&S z<Z<&ai1I_q*mThLj`NMsiiI|;(M>#O0G*V#1(7J<q7N=?SVeSqf&&^2_wtjAodrQm zpoXW0?k_oXlLlEBUhh!Rpo7wvqbN%sk>A*Awwu%hzpsne>!c{E6XpJl^^9zhd>^f< zNpX=F?+d0b-%^Us_M)~!q~^*Yt}U>j-`BD-zU(pi?LC$9Hkb19!nMWD$Y8bZ1C%I# zUsqLNzct!YEa!~5)y7|hV-zJI^^-`ij-jBog^Q75;Z63~Wqm=L@798<3c~;3Ja<xz zdB->p`0zcoba>+#D@(=T#m-5^e~732*k*FGv@K^20<A}4=Ezc~k!5v!wJ~kW97(3? zLUpw2Rfc%eev>p8AgWE|@p@%Wfb7i5BT)RHu-9D$25D*(B#zALY#_cvuzZeB%hc)| zh}Wapr*#4*!Bv%W!?e-#9Uk5N?GH<bT&Hj<LkEbACBsUh6Vjr^gv7gc;qC-*5V^^i zBTq;i(DP`63_kqH2uzBx^`grG0SkqE()G}2T<J>}i;YB1LZI0xv-?L7K#{XS*1W=` zkK^R4i@lvo|D;B%L540!q7JUEa70qsr=2iNE+@$h0koHa7cp$50m)xeAC;ElljS*K z@Xe=pLl%d0*GwKw5J#TGR>L8y-SUG!l<W@ITm(lS4NQ9>yb`Hp{S8;x`WD^QrevB6 z7P!3hVFnlR{IPgV>?}M=0GVA$$@N8!6g`iTtNIlB`U2-gI`EUk1sVDgu6)rfwbRa{ zJvMgyVw-7`M&L0wfgCD~K`!PH5gA#`vOq!Jm_Rfn{bQpdrNZ}G&Ndwt4p83~kUlnA zT8VV{NvRU4yH|F;FPG8YU=1u)d`2InTL@Hy(Q0rwiJ)@<RNeMr0H_)mpOyCe9<1WY z;?fEOV^)w4Oc;V_`s-p3gSo@iVuD%t-pN&8zOnN<+k_mt7|nc$7>z=|XE27SDt0a} zk3Ks);%n{rmR=I6#OxMyYoRqw(p1l31@jBM0SO6Yv#EWwq-vxKh>%(^BZM}lqjj}- zL6siIC8?G#>lA7cz#74VD@8Fh%mgd3qtVtgTna>>##174_eQzL|1n+GFyzfPeRQG? z(fb6L0;zuR22tx{k9aYSWhL#eXBs@Jf-E{UxzRLv;Z%9FT2FT3Hcmiu-Wx1b@P^@j z6~6yP8;EL{Ev7Ohfi}_A$xQU%CCtK`XPQ6jDuYAWrveNOpu5r|{}0U{h+qC_&~RUz zYHPN(!K8Gg?V%7h0(bZ*B_5mDOb$Lk&j;aqz|@@Bfnx143HEFbaVx23NG757-qgj_ zlS#ME?BgQoD))a?8pz082vGVnhx*qD;iCzD&7;{(`QZ{$f6ySG?D-ZyI=zD8Bel{} zMjK|oyFYNj0K^uTz%M|;Jsbx@7gbnk+Dp_(kb6;h5%5t*6JaSLMgAaYC5I_xm@^;| z-dqDZV$_R+n56L$J%k38eY(l%VG;`+qVvk$K$G=2_l@w$tdLuSVbyc#Df(-Eb6qRt zi84Cxt=L=Po{dF}_H9iBeFS%SN%zjWKR@FJMhcnV0aDgf@>WaIlTdw{g>gi~+S;B5 z-}80^6|-{tQYG7TaW)C6x+fZv0(YRQ<G%j2zrn3o!#*|B2BaQ4cMU|Slgntm>LB=9 zhgpj`)=xO`tdwiiZt2k=W#dU0d$?cqjbw%(JKbNTyj0rivbUZ=am0P*f3*;P@k@>O zZfY(3NU8G?O61yf2atv2Oh^3Abc#iRq#SI!=1LqJ{HH{$y#B%LKnumILKQg+7Baji zOrL+%fJRXbzV!7QKucu48slK&6^OcsEAcO?{s3e(cangmz-|U(RibY*X#o~F1L10C ze}cj17siKc%3aGdP!@foX(t&H$$rJ4?F?<I0GML;U-o+z3wppjE0^dned?F76-pZI zZCbB&*v6PO?jfV*$xdVlwQK1l?c6KY#UoM-$Li6x>Sb1jH12pOURN&4NK(Kfx8=gk zx!OUXkaN9J@T8yMO_v#B+d5{8J7#B>e0!`$?1W`X0(eBRG2E0iJ{r;590>w*p!E4Q z0bKE0^x2>yjd)4hThdJ0fw4)l?nEVr@z+IIbM&%|ojDIjq50wBgx$RkmW7|Kl+kyq z4o9T;j0FD6wY<N56|BjOYUHEtS^D5thn2OStu$#y8@h_l=s!@(-vtNY+*1tO9{H6{ zg`o-yZ)MqfbqO5(!>optywLD&xlP<?05?-NO~81Ka+NVPn^nrBM86)={w59B<5{f5 zROUuk6095l?yy#jhw$U@^(_JAC$;JE=du?CwH9a2HdSdWlZ^^KK;X>VsNm+FP<a(m zv~Md9w#W4Z!vPN}kDKGH^Sb>cvH&`4&{M&{l)x}mj7j!V!MbPJ4e%zf&q`@=0LX4f z22o9Aq(O*doM4&3KLy5ib4jK6VD20b2n0=#_8%aV=`<eeGw@nhI(JY6baedFh!f|0 zk<j*b81E&!c_labY(tyWo=avlZpyZ3bK<DWu&2T@pdN!%&O_Y)*OIScT(#!(^%aD# zTH1Z7d*xu<$EnENPK)Xe-imnm2&k_k@##?fI``By#s2H<<w;PMcFy&PG8Pz(=q&}n zRRX$3_J8L=EF75hXH-k34*>bQDk)sM&(0!-Syzw{j9$**2`e?qb$AHQ@`|?hf(%Rb zatt?TXe(+9$&8;~kt>;Sq0eTh#Hr|T@_B|}ADkYRG77Fbd~*myuN0*?09fX89E@GZ zm)%~uJ7BFqS4WDufFP&KLNtGM(JKdoxyKS#FRO*);(*+wP8gjN%X1HQWXCCU8c5?+ zDZ7XDEIXkNgcS7ItFEpzyms`h$Y;DZrpj-^Lo`P|3{jgq=_UOz(#!g&xUAUF%vh)( zEMds|f@JIX=LutKXX5PQls2Xb1_#3RU**IP$f*Pz#Onv-^mAiG1Lb7m{vY36_QxHD z^q&hN6{x;Mu~fpubV$w+Fi3IuhHPdKiK8vL&Xoir?^)dqT-e`Qw`SW!42Z75mD{Xm zB|e$mI7uFJl7$Qt5=`ax_7|sq52H56Nyy?~3o;!6V`Aw(j;(w1)BpB0Uk-9lCYbf` z9X^k~_J?U}3$u?h#tPqE$<%&ieN($ut67KhzUaQubya1B^tP_;GK*|I_?=hRPULbn zQK_ZZ>#mxQqMWINt7`<5rd`|m1G%woo2&h)pwll;M)@TdjelaUA}ya5KR2Q_yyIzs zIH?yifaM~wYmi??6{Xes*EgsPE$s@;Tb)tI+060CqzftD9EduSbSD7OrYfGUr7Y_D zIo=EOcWPvICV%DfPSCviR;d5tohDh&6vr0F%fX7C`=|^4WKuk44D>-j(RT#jG9WkB zYZ)wWwf?B9wjvfcTxFVFxN&+NJ#94528{>@6<=npBo^TGw|Ne6PohhKSZK8W76CPy z`EzH1c92Fp69Phu@~Z~0pJhZ9?uClP<@O_To{z+x6KH7PFy;Y^A&skTRkZkB?{d(9 zI4tUqAZg)rdDZ@zRrAncWn=Tb5JidTO0Ug8o*zhE0JTgAy;3%pAR`Q9A6pA~C=%`= zL`tO0{Td<^pQOplVdQ3<*r0Y2uxJexF5Gi-E<f+v>Dzc!@6Ze|(KXxqnFde=4@hHZ z?6QWOli>cl@h_PfGt-iKKv?Y*<oBRhDMm(~(-hmJGd4#Z#%ciR(e4WO=_WV!m5=5n z#xC{<civpVH*7?$E~4xFUx1-of5fcCgS}W1w?9|1Cj(;r^icw^zA+fO$NqXwXAmz2 zP)X=Gnc!c{Ep|A7cmxpvC>dN8&<R?gGLo!Q>~8dxrsW8>$!dEC1)?#mKsSk|o+B{i zko)_eNeYq^?@u1zmv#cc{05^Z+`Gpm=JH0Vqx8!fxW0H(lK3tZ*#}dfs!$y6$9KlL zuq14HnFHq`bsO*^NUZLQ6^sFdG~>}-_d!e5WT7RWYSaW^<<8i@x9H%5=nda0e#bN) zR2&1HC{=f8W0@piG+_me&B40#;l-_k<dXTFf2g0Fo($#<d*f{qD_tXXb@?|Gw%RJN zV~9$`%WDG#WMNaYdGlc7_`!Yw)@DTHDm&Aq1td>q=O4?|!wvK;rL<!H>7<vKkU}_0 zupEb>8Aw(D+{+hGO^Q}+0+c4m8N6gr1N~U0Qhtl^j?c!;yrE+I6;Bi#4G!-V$thk$ zvw;VnIps}K{NJUBw;c1sP@6+FsjPerE<;su&Rv^^WTgD<Qpx#KnZ>7!KhWsP_h&+D z+DJ9eAA0g2AXl4ghN(i27=JG4xIx4BYsDboqY|9~75G*;422lbK@Kk&*>&kCstBN4 z6>>t<rCDAV{5X(G>hZVi2<FSi7t6%FZ~~Q%ImMx_@2>T>aU6Gjdb1$Bl^u+uJ+0`{ zlO;c3Lka})EF64nO*g9ZV}P9F%FGeGSw^K_WmUuNfiG0saJ%<>H7Yo?l7#Hv5jVt{ zvY2OpWsty@2M7Nj))>J>?Qq~;=S#i318sUO4)#Ry<MQl0nbg1)oIA!64QA+O@6r>{ z8;>v$mnekXs&Vm&t57fZa7`6>3UP<bcgeJ}L>t2>gY*F*iu33;-9g(q!>?e<6S*^L zFrIg%XWIKZHpu>zTv&wa0q@`reNTvl#3?Aio!*hQW$C~6gUB{j7Wburr|OoXTDHfU zPia|#574uxmW?21R{CIc<ub1xok#=*Fj>#9!8^wpAvyZzs@i!2C!$=bRPr~b@zY!V z`89z}m70pD(e=O}UzU*m`W-_3xGkfg%8c=UP@o;pJ<0TM?x{!LoBskwVM-T^b~Dle z-*%n-e*C7k{>>RaPVd-@)*t5OFC|g1#066wCZ`q-BOw^fjyHpZ6Tr127cX8{vg{p7 zSB#gCouV=!9gN1`8YF^+6+tZYciQ55k+}HJe95DGmW8OSEA!6$9<!3GwO0vE?)a~c zptJAi=cm-1uRh{&074kwtIX(zJNgPh6{>i-P(3h~U464*Pv$@q!~BCeKKVBp_ce^L zm{`gQm4o;%sx{F0xW8A)@Ho|F(weD;-|Y?olkHkQ1~#3}{NN|ltW9ZHhOR~jzfdJr zPeNKnFK~7{_JevS{qxn4u8oHQwUjIYtyNqw5$zU)bS~XJHQX~R)RQj)mv6s0&U!Ab z7<JH9NHf??7bT(DXFK?U{sHS}RY(TxFrHr8cR%Sr)LQ6;gh42pHO%eN&hLmzK4<(d z$I1O)NhWg`CnZEHCnaPh4ki-^5fhQUkrfdi-~S)xWM$?~15SaW2IwhG+66Hobv>Ya z2ZP40*b`PrRf(M!(C~|M6ERtp08um7ygjpXRTNqw>d!{InPUWmip-@l&B-8{VYB(( zXCM_rOv~&v)0UKI3CcC#wyixu9i?{#4_r+7;Aig0`<5q8lgiW&(Uj(&`%5cCD;c`Z zslckkhW)YVJuh&y1*AI9EMD=&oY0w5xIQ5jY|Y6(4J$eyoQ&&XC>3v|gHNNOmps(o zA-CT*$EnS;T_67NB>6SoO@4*wavp@D*2vwGMa+9K`*EpQfVM))w6WiI(|99oqQFU0 zW$&_!#R1b3q0o~5LK&HKk^viWNvx-nG-06+{arZARVvt@DVTb;I=s@`xq2D;aB2LD z?aLSsqv=~AJQT&2>`+E#pgHo_#J%)TmpvxuFf8B7pl;rPQ;bN-)Mny0NG^*PU0Q!J z_<tEFKevaUe8+#6)K*PCZi5DG>qIlZHe8L>zX5*IvW!r*;@sP6d*hEDQW%>CKJReb z;_Gv_gChlNj#i}ao?nhL1JuACaxt@9VyT84j`aG$`AH;nZHU4KW}anLg&K<qecEu< zMiCL`!MTBl*o<~@@v!)^X4cZuFJ<IGIeP2HHB{{sxhfnPKoBFRNfW8T>C<%@zE0~e zOjGRz&L%>|3lXdHOMltc!R-y|mv;CjcU4_A7s1;8(W229*jo6u#An;Snu`|K?uUO} z@3s$yPiCNPsUxoAnL471=!^2GxZn3NN%)t(MA<14Nu7tDWR+}kKqv}c_t^QA{%;_8 z%5qfVnTf3A0Hm$5eqqv-f-Q$kP``CIJt&-x=6vHJE$6os*rjLG>p0n|ad*j!n|bmM zMC-LVAcyt27|^KSwc9eT(#$K>axx|NH~z!<cE(p1XhFnrnW=IaR?w%R)MDIDw34{A z+eHoHdULCBzIj~TQ2=QH3n$!|cdcNw5+Dg~xlp7jfExPoPP<#Q)yo;V2`hOwuZwN9 zWB9nN)vR{E8k&jh<fJ!`#Ci6UMJ{yYNZsFX#B0tGzaw-&EU|Wzj=CZ?PtzMf=I#|M z>O(wLiCuMqu3t&y_uagp9acNe9RLP<xZl(&Gtse#K=mQtt=&K3H~%TY!pe>L+~3TI z-XlK{!0{5+FAs=lL#8|KWrSC#KroNct_xc&gyZqIx#sSyT8v!Ybd*pJva~6SPpnzN z?xrNs!$B-v3_d)Y(!r6m;xf5~zqap}*IRZYj^a+wYtCoDX`Ook8jo3`JSOQN5Vm2C zC)BYc%e?Q#(3eh?p7o<p)*HTgqn;vaBFsg(fbe9lfRR#BcM+re3MfQ#;uwpbE`7WX zrtYyJ1jTlf3z3S*#z)bBU}7yri3l!-4W^n0J?#dRL|E<lxITGo$RZD0emrcfib%U< z2(_$1;OS?j`kT-j?z<y-IyUo|S}EoJX1x{o(%yE@viiYqiW5gDfpx<cCZxiEwXy{| zNX%2h!m<M5|85On=KnHML0MV2{<k^gl_nJifBrWowExoaF5l1vW5ucGWT1!#D$e_5 zbc2&i$>n#S*H-BxeQ&+Y**aPAu=Ei|lz}B^X|nx~lYPyTSto6SF-?QzD)uEU9PMjc zC=r&py$2`lGsz+oL(WBWY6v``f6}pRe<hJhiZv|pVswx5?F{qkHVAh(3+R6qhh;}@ z@KpuL@L~7;@A|*deuGg%s}W16mG+AJgLa{rcr0}+QP$EK_-Et5WqH&NrWe4Y(oLg$ zOwV=HFX@<;HdW~w=7;@v&>)Nkd?uQlkexBUfW%lQmx25s_df*i>mh<=RGKi+CTe$w zu_LUC!*qBK;w1w_33ByrV-!*<yH%)qn8D7<$90Py8D_AhQ?!C_YW(j#S3PgDS(_|6 zcG&DKV1*(1G8D~~UMkd~an@KWOpHBwK4HdinmlQj1Y?9i&3+dD-|GHn92At9<G;x= zYCs9r<PV1S_PP$qX#qrA!bhsu$=R6GVUEo93WExc&?Mp?%zTyCkYjHTE1p&N%)|v& z10oJW*hB7~gC|nIAfn5JSU&2o7)@Z8z}s{9-I&8ci@Q*3iSZEz2{P;bwDxpR(!W#0 zmy_I+b!NSrpTcGTbh?fYK_!)f1e(DP1b{4SrUp_Nz#$V9MbZWr7geX7v|-eosuEhJ zy5m;W%v3OqBa*|;>B|xQnH;BT4=Gl8TdD^vuZTwJ_UBa!t2Zy^k8AcxOQUbgR(HpX zgNqli+jJ!ExQmfcSvq!&^4(+=71i$>Q6%P!%-tE~<$y%$A0ZW*T0eLCH5?o7KR`*O zV+ja7X(^ZX=q8~IxIr<nrW}m}8B!gvLVy=NxDP7HN)`JF34&s8%AgiU>+j&$!K9?; z$o#IFe%{0|TjMNrpV0u1n@VJG>;4R6{SemMqJ3#DJ33&~pdPIE<=1wg-qfpSHua6o z*p@m=*9|jt5uUEWqBS9l_nIJoI6#XBymiGMTL-@T^@O7+(pl^r+v+wU9><j$I+%g# zAIk(iO@cuGc6-fZ+JZqw3ksbPZrOu$I#T;S%M<uN<KlT?oW8$E(L%6^?YuF+d7Y?t zJF6QHEG#*#VFr$E7lkO0mtR2|Kuweo0-#6HCB;44$N?f>Y&PJY40vtPssPD0oK@f_ z3hRjif>b)%%lPLK_ZY^Qg_XhfC*VOoO`EfqS22*j5Sb#xWEPA2>fR>2*4ifEHQvhF ziw&D+UGJEvI#XWwCH^}qI-F|J4YVLiD~m9eQRzX^Dy%?ljWt*86jF%W?WCQ#*8IcC zvUP8U2Wcp8PFqF)oT^<(V*q1xuHFfVzjYZF2)-+ZJi}=}rtz7OJCkE2an7{vh^@uZ zkp&~<3o=1R(qxb%iI1sp?;WwoA<7QeYvHBdw%Kva5@<C>wS;u-cE~!lM=f?-gDEeL zrlYsKu#ka<Q)xh~&M(bL+wTw+sLGg%aBt5ZLVQj17Tl(bYwidF7C>&%ioK0uanDQJ zEc9jwTM!EcUT()TeeU1jV{@TdG45Z{za{Rq=bs(mqtDYf+s)OonM_+kSuaH_JsPMX z6V(R|cL<lR`IE)y7RG((KyjbB9@51vd6MWbc}7u6ZORZhHo6#*?Ls}QQD11XDjf|@ zb;PNoNS?TkxBf|75(5k&tw0nxp^nzkT=D%YiuPM5Ys*o4wtAtr;0dgUQRbd@`NuMF zVRG9b<fqy=kg|itB@&Qt{_#o4e15IAwaQ`xlZMDV20o|$RRo(NJT5sGgjuc@l%v&2 zoSRkUjOksgqowW(f;}4`M`gP3z-RO&Z4)6~#ELa;1;#*2o&czfs2zgZATem*5>|Xb zoA2d>2fwmK+v<ItjCXEFS(iCdZ>==B#Vwqpy7-^K2eiZTP_Gh`pc<lKW?|4Q5eb&f zn%XxRZE-ApE+JY!AWY!;z>1C|dZe+mlhe~sInBjIQNhegT6+VYXl^uLcQtJ&YC~vs z07H8v?ahACQvl(c_F1};RDYk;bMT60Ruh;~HpF5KyJOxlkgRsDK2i?3GDt}E{8XaR z%Z6~z2^3;L<Y;whpmJ)Kxt7q;xl8Mu1B9EQJ8L~NoEhY93eW698;@e!XZn1&Y?1w9 ztf?Ke8!8A0cq-XwsYKZC0bL85U(9oVP4BxWWCY8n76IYyut(Cf-K&?rvyN@e{!79b zBCJUxv)&2=!;Lv_6BO=?ta&FM*T;0Xu+!S7Q=T({{G3sD7CRB(SMQ^tw{h@$cKn-E zpU*dof|?aD-*>Csecju!Ovy4XIl}!20<ke^oA!fV*1m0ebwM{wuJ{Uh2(1kdtmR>0 zqaP?VEdWGv^P2P;^lhD%Jmd|B9xjacz35xqZ(aT`FvPl0{{o7HeI{6}J2<$2SyObr z-HhXbIR739butmS9LSS4BDpmPAw3S$tK7(X50<CjjJO=R)1|}Rym7syVAW6&T-PI+ zk}8dM-RW8`E!0c^V+ISE&(x)OM^HoE9ihHE5zXBt&xrRr3-vif=vb*xUTO{xr)L$h z-OFin5Q0b(<%%oTPa%{ZK9{I@O_iQQBkea&h~KD?JbtGmUuBSO_}@6ExoUf()fr4< zy3Q%ViL<Gnhzm}DkN=)ESS+mnk1~Ske=}h}awXZMA0EMfdS+u4jlcKB{cG2QI9rm& zM<P}TPU@u*{(!}#D;0~V9LV{7x)lLOCYNVOlOI(g-x1B-e05m%NbM0Cq-RHjjH98p zYgN0=`T<5ftlFO@izItZ{@jBmL~y<CdyQh&Wto460Qj=oAHx_V%f8-^*P>c=8J$uA z<|My1Z7@V+&D0?@2e;V_HmflO$?KNg#k-v@s!EbsJe@7FK9^KhhtS#O^;WW4PT&63 zpCi^>IH-_k9mD+l^XH)XVym(&qh9~<&!bhdQ;Kzz;Zs_ceO`Ava1Y6z21}B5zBH>f z9Lm=s<Czh>^$vpyg>&c2zWX(X%yBd*fby(R#|P|3bM4d5J=u&gMl7vSD(ARA!{pa| zsC#;7t=ZY43#=^xs_nb>_wl1Pz#z98G3DW~+oNhkL>5z)Iz4&N)1^>hPYfvmO}b7% zub1|Gf4TXwC#PqIK8Zu>-R#05PRV$<n2xnvzZY`W_f`%T&fIgehyL94=&8^Ypt4ML zLO_Oqx1GWtdu>^9s?<Q?DCF08{s~L+DmU>Dw^w(svC49|2@<v2D;AZ4`rTo?a_wqY zWnE&W)$r^@t&H6H(yBr=!i6ruCtjFF3qnRau`&E!Pa6}xtAAYMREjB=Ao$Syy4EEX z&2|khP`iJ6NKBQNq_!w$kTzrmV6!Ta3h@wJ91wUZ?COwu*PD;ffB$#nihQ#sSsLaI z8f`;}SqU}uy+>=$BdRuxb(iFkR~A(h8&q08;w{eFS~EvA8JproNEws|g8R#BxaeA# ze<To74PCFDFuUhU78A>YBVeI2vj9?egbCD)f1WA<z3U>o8ZKyqsJ!C>z<lqaXF6UR z-U1UeJFnun`vrw!;|-&VW6DlSGXCTDRTDc=lNyem`{}>9=2Y2_`|q)^iNJsyxXVra z!3*xCy`GH&FH#Pgw!vrO7?c6ttG}3-RmZBE#2_(uRa77eF`8Jfkm9s$3Yyl?Wr71A zu_7?nVYO>&gMIAYC_+C4@X6cNR?FaY7?D|JLZuo)O!keFN{i#Cgo4(&!C`QF&}70V zz`JqYnEiZH8MT%{h#{|*Irt^tVI)}Momq1FX=6mSvovb%cgc~m0xaH(30DH8^7vd! z$}<3lPUza)X>5lo-sQ+v@AnAo&(se0MGE(#8Pu@5e7oI0fvsu4P=uUNDJ~oO+R#pW zl5mX(f|a`cweHrUfWS5-eG>^ULFPopAd&TvBsZaA<|-qUW)!k(b`GU=o&jt45w+M{ zm<qdA<G7;A6IqQ8law(gPulk3kN#U-{6t=k!nFaG0@P!8;1>~Ba^zSBo7v1dWf|ka zNW}S0>h?{p&&LH|#h?mPuhUETxqiv-`$dnriHM~Qawi~<(%A_vo7HH=KORoFvzO5g z9veh1c<5RcZSG7J4Fm^e!TaW2s`vRb?S#X5U})VoQWRa)sbNR;ch&)Te0k!(yghMh zp;)ng$>>^ne$tN!(g9ev{cs@r$u|xmWIK62s$FElLy=Gb+3{_OdaEzNoTQJMf3b$m zjMP95s`tm~+u+yY6L)|NtKlm-2>S}pD*^qg!S&!a7JGlhm%C>54|dj1p}lewPjBz% zxy7&RiwiY?c>D;Hyo^W^A-F<l6)I~hWvifkLNLk?=}M@`$A84(B6#Enb$^Hd<=9kA zGiW1Fnj8<X6TM~bQ>bZ|+twJi&Hoe8hFlOKX>B?Wc@CiKlwt+$??>vpHn5AVbneGP zVBfu~$KJl*hm#(D8vW~52&H&K78>oD&5kPfdCW|}$}o)`=M*c+p02P9)BS3o^x6&? zJ|jdbTaW?r$eJv*UoG|q)CZ$9X#6za*~kz8#y$YJ&KeM<E{SkKr^hGI;rT1LW8`~+ zTDNl%W8Z~2sN7Ctbk9lgx=oBlyZ%lK<yOvv*yDQy^WGgYP}ljOuIx=%iY#|=sOfL( zGGFOR)Wd+Z<(|YsidDtv*ZbG_Ku6s8)#udsDDZFy#M>cLPkGrmrY5kGPq!4LqB_!_ z>aH8m!o6u1m&+N{=`^iET~={YReHTe_-R9*K-dooJ4Ta4hfXQ=WOl(nbPWBe^O($D zd6*lj52(L9k99zwYPQ>fKy%kh$(uaaY8p@obm5Q!HRv8(Do7lt$oGJuuIJ1RTQITs zvb-l~#f%@;2&=TP{8b%^mokv6^Y`&nH^&2TYUC-cqTd-0pRWU@z9fWliL*fh_w#yF z0<JEReYNg%GGcG11C`f<V80F|R&~!g`;bimj|NvX(qE-mSI0=i>sQ&&_5|cy*x!GW z&rqiX?nxk)M_SivdS!v)!%~ip;T8+CR>;taUlX)#MnwOcKLPRXyy~XM^TDrFMH(A` zX{0NE5CDnf9A@NZ{kLK&={beALrCF*Lx8~BsYpb}t8bjqwD(CL?5|yBeUeWZ%?cab zrRN?L@NID3-<ELfPT8DDVw6{+o8@>^(MBv-%C?U*+jbFj`=T(!lsbFQ(_)Lk(_&s@ zQFjRX`d}YwJ>CX_{Q_fW=F=sm$^cQo%gG?ZcPOnAm8ApMs?xH_K7>5qA03O)KI-e- zH>4>s!uz0EP@_QL;c<3+MUY@^hiccZ1haqQup=ila0^PrVfi4qEz`;{XyApZ%GJ6_ zHGR;oi?h)ATA*LyzBB1(VM@U~U1*W{0=eiFbp+@(!lw&vt82)wRB{K2H-&uwoASU< zXEfqk%mUQ2oy&pE0(&>4d5yymF7Q6$?8UhuqW?qGJ4a^{Y~kLqZBA_4b|#+Kw(U2Z z*tTtFV%rnjp4fVC&N=tH-+#5btJmtax~i-8u4n%q9fGM*uQT+EU)taqf_4*zVbZ1J zkCaLftXnGA@S<Vr@j{F2qOpnS8ZvEmNK2WE&b9%4#OFHw&1wI1kKj4na)o3$p^txa z@5%SQaSNbRLQaOE;gY{1shqnNKVJe2O)?g|qbrY1;VDKVOh;iXR0_c#W@A3-DBgPV ztcV=vehD(dal<-eR+`6OHB*4uY)}0m1rb$1=W7Jfz)7Pj?_gNTr`|iD{__iu!R}{3 zk*)T1Mh|~+2BWLr0{xjcG>H|V0Rkv=ZkC@x5cJCoJrDim2>yrOumefed$%;8c}$8K z^yHX<Kh#37{OJj8EZI_du=VwDNGlUb@_8?e$le^S!qkhG`b=1p0p*0|N>m3_M=?HQ zucpFPO2#<6kCIm!pA2o}=4Ur{#=sxp!Qjv)v-R~+c#EMx^-QW~{bE!8CdJe4kQhM2 zGpoQ?@v~@V_iA89=j}Yw6oC*x3O*CHXN>+J638~NvdWVT=mcjo+dm`3Dd1pR{$lH* zzNCzK@V(*zgGkdm$H%F%V@JV72%*iDr_Ye3R;jw1P46KqjMW2|oh8W8%zp5x;}Sdj z^u07H^FT~T+S9=>41qeb+cMPkS$q=Z^koYePZBmw|FbGMF3z~0mG%ZukY-|mpQ%!y zV+M*qlc|6Nv1{^Ss1Oc1YYAbf@L<#PaVjtdxYkE!BWLN)w2XlI6pMLN)^7i<+~Yqg zrEe1x!9&NJ(;Rvss?v*Dx?(MSNM8FW4(XR&r7F*6N6yc;KYjj=)+AQZc9%dq!6D?0 zTgIg*kolpL@R<MyPecG?=`a#ize%2SZbry54qx0}{Sk<<T!JmZ4$D}olH6ryTSGPU z>B&+a5Z*iTjvsfZhlg(T3iCI?WF@$h?YY}8nZ}bp-<$_RRe9Ms^FC|wa*ztzh28-U zg2Z7$5dL~mJN^X(o`N|zZ$Zke!`_79-ifM$?S5(~<yj;AjKly{GoGQzY^_^EbV9zr z$AS5y{Vz@I_fkfXpUe+)z8^GCDsi#!^-kyWu!FFm85neEv#~_FHyR(BcK;ySU;bg! zObo4h#6d+c85Iyn_wlZSv*U>G2I+t~M(jM^HZ==0BrD5Q#08jF{6e4PA*8Fb=Y#-l z7J4dUG-T-$vEH>dezEpha18i(44LhhQkD1nK?v{Tc}guJylVyR1=i*@5yCUhelNk1 zdbCKi4+}?1Ua$v$J4Zxx^<C2a;qTZ(UbG;Z=Ne$vqe=ULO#X_>6N(I~2a$3e`4*r* zi%3nMK*~D?1nvD2rua`ZfPwk{t1AEBnF0?_Y6=W3U|L=8+a4XmZ?<lZ3{tgOTG_zw zBDGX{-U#<tpvBLSeBGGjC!Pe=Wbbu1xf-3z0th58!tcHJ;YlB)ILij=P~@nI%)4@W zh$D`;%)#Lu?Bo*6DqU~04%H0!lbax>{^`d+iL`@Zq8p<Ei~UT>s@h&#CQc3dIBRX} zuJG1QK==u6jX0=|n4PxN2IrgfcC&}Gr7Av^R%$|<6q|z60A1nXuGq@p%-C9{iAkK~ zG!BL-*NBpd?{G<DWrHBv-NM^qR;h9~>z&Ti{nO|02E(p4R2{1}7Uop)-%5I?o4CBc z<)NGJ)FoPa63?}FC=u1A2=T?rM4zy80)4#3faqnf8Poy`&Yu;AKlEh0vYAI*oJ~}# z1WV))kZdxNJYZN%hTyJuTu%k2Ix_rrgL7-z{Ci`Pf|8g({)(*Xs?q8Hr8dHxuIxK) z{Z(H%GrmZ23Vk{f?f}=n%>{WutcRBq)Cbi?KEZb(QlNyWY1yLu864NVFrj4qKxn?S z3t$`7LiTZ3XKdb(;U+{+{h=ECm_zX3`?8W5Bu(@u%B4O=o%46az=TuS9HI7TyA+?m ze#!|4E+{-b5RGkU5XMpRK)fC=9XIZMMuX5I)L7&f-cd}Baz9u%d6zUcr7s<VoMbTg z{ZW2{QrFET_XvnHf3K({WCJ7DndH-0F2H7+0e;qeRNc(-5khlimCnavBsdKWn~niS zBtzJ)(>obw>_UzuBj0QyjW&$P2aJlr?VZvLGR_*yooRVsKgg0Q{Akl?*RhMA46(zp z-RHSj^q(g!hoJGJNVjMcad5|T10+tmvo>RZ5>vt#r)y`<sJ@n4&qT<oE4$CqZ@^bh zP}T70^%hM3vfp)$QFEEPA`6lQBrPTl%x+%AN=&O~B&mEsn{s}YD8?aeEh{S?kw;n7 zZ}&xClL|O`Be>#AZ&^j8NSWt5EXSt_iyu~S;8CRzbmNP3JYk|m?$&Ew4<zt@9r4T1 z)Pf<OB})f47_y6ob;m3EG`0-XlmJTxh-9(wyopH{<$@H3%npA^(tK8kxZb#>Yf`$$ z&OR`_fA0!DPF~NhK7lS5m<QMX0<M!q*FV%Rrm(746pebje5p8p0X8p;w%hq|E6}(m zL8qoa`Y)nU;pFkyOL2NnY$<X>LY!6ufTOk?2fIKjseAC^X-?r4$A%UmadR~`U<Y0x z=iexdhCI0hT*5KQ>Am4ytytRG1kco>OUT&BYnSFs@lU4mgpu=74WX=5?BZY{qeKq6 zixtV#gDNddib6T7{?&?t9bnzsXH#Ev@Aw||p1B1@unx~;YFl@mB5>>Vzkh-MW}jKv z*#3ux-qNyj`45xu>KhBQC=ZDaAsqjj%Be7u<C2xt?&0$H30(f$GYqXFF&TZQu2=6e zk<^SvL3eg@DrQt{KeVrB&&!<zSNw(wJS&2`J_5@L3wrozKMtOxNVU}8^Wi+KdcFsh z%4x^Tt2?DX>uvw~hRSRDkAbV8_T&3T)MOiA0U~28ksH=NO~f`?+6_!+aFZI|9=pG8 z?_$_bAJd*Ci>_p#%J0{;`8_wHp1$&mTZ`>otId-{n}cpt4zKPqTl(L*Xs%ip2`K^o zTo3k#4(iPjj#uWl_kVHN8g2O+OrDh?@+$G;;fvZBA1gaWhM*=wPzg#}c)oXRZGq~5 zjQD&R4BH^&d|sM#NR`N`bQ})y$x3NUnRTrKa~B#D^d7O$WCT9ML@iqlY7H%oMSnel zZ3k=53CD&VZl>F#4Oi0<>hwv~@?^vpjTP>CO@gpI^9ICMKjqfp9=nQ$nr@j-@16dt z<-IaDt=$KX>9Kc?2{^<h4zs0HiJmn8ztS_K1Fv^g+6zQcuUFaYhIRkO;mbepn4SLM z66M`kd&)rqIaDlei+?XkwZ|vx355+mtSVK)DPwZ)G7Dk(rhixAH?BfIk8X>A2(%`# ztB_j(8}ebj3F2LfqQ{KGw{g1iD1v80#OpGsKLi~_AX6&qR}UE`c6u_WW0Efcit!(s z`Ba4NJ}N7kk<{`%<>#=N6q0pky|gTEY=nge9}yEb#k(})a;I1GceP&m{`TrP5IO17 z=$<`m!8;o4u|IIJIw!j~1XYk-=Mr%+%^IA#YLH2RG6#1^5FlP6ZY2`deIsAl^)WOb zDhNV^J|t}q$8E!Dc3SLiI*WXO^iw{;)Rc{Zz&-Ps6UZGFN-Cn~AmyrZuB^t;wfxc) zSZ)x+P%^WY4Ud<~0S4YSWJ3ZM3i_2BDEU9M-JjiTpMg{oSZ3g>!J`m+=4*>OP{fjT z!5Mq1^K+HYw9~5`kCo$Xi}?x|UKgc5D{tDQ&tuTbirXI}Hy(EBqh<yGxvjctJfu_{ zKcfxc`8@xeI|puQor++`R;69Ejfvkd-M%UqZ24%CAbyEf$u$pDG*3W}b{=N6`VT`h z!m5O?h`)mq>Y&o`#oSf-Xt<q_@=u4bSi{^zE?cz29BWe!m`gF<Y64$DFXcvbL7q^+ zu-+M@_(|%>HPcyxpl`_mkrH48j}(I89G8AW(CEH0G4Y(=&NdQ@Yy-#vWDFv*DGpn( zWaHfE6YF&WK{V-)JMz)Dt()x*YludljdqcfNgI*IZSUtb4yZqfi0gN6m%JAQg;jp@ z+!voy5tt{6Q-8DT2+XVNiE(+Vw-b@vj$m%bbFckMgE~N$+n<&Iu&%kZ?T(Yay=U6I z)35f><xY~=(#ef-Up#u26p%>DPr|k==o?yZyt8F;CS+Lmi(5}bo~2=3CTSjWcmD!6 zKPPc=Jn64vk2jT{pdEF*7<mr~8lcsDd56wv>SL2&XBDaCz$cpt52d1hjYAegOZw9t z%)HN17WBC3BnO)Th!T|`(jj|&W>nELe0_|Ql6J3@m!v1lc@@okDZ>J~v?-p}&QwTM zFymZcHy?x@SHZ?*Tx~a5boM)+^Ag6mmaGTC#L(7`1lj9D^)Jf=Qwa%DVKNAfUim)b z4769e9473x`T28@<yCsF#|Dze1CV{EOxjNay&Aj>7zum;Ry(}rM;xe<p9$Ew6!hE; zw(k@Z?-?@0(HZF{^aCcyw75A(5_ZI;jTHw<*JYTo4aImpL#iLQ=T7v-8G>B&>?nJn zL-B!X$qmXPB{Ul<(4}a()+eUu_37d09P*$ML9@4Y>J@Vd-l*Iw0fQB+fJ8uE^E!|L zKhFiVSXu?pEf-nLN)ep`WE%<Hms?%z0yzK!fv-XesmdkYyr{g)t;Tgy$#9qe8or35 z{xwUDVg45hgIeK4ERn7RP6I0Zi7(t$@}pQr*F>+4-(uK6=B=w=JLeodUGnIAtMVH7 zZ2z>C*@4$~8=8B~L`Q${B6~ob_2?O8N4vKEi{J!c24>%<GL1<sE=3s4mg)}e&y(yv z!8TP-h2f!Xrn|X^qsMhq1LwTbvF(8Mu-(L5BXfwbl~kDCDd<sa9VUUteMgbN<tsh> z82C4KN&5<)mNX?+VC#i+s6{%Fx-Ml;$f82BiLT}bj0*9-Kz%WJVV6xR;#*urq<z9~ zrMm{O>8haK@{Hlo*Nw(5iX!4lewb5ZeE0h>QHu>8_ju)I6^wmJN^RZXsLi?5XzEeh zlDADH;Ewd-IRQfq4)<CqL-4B|nyML5AN6Luc0L!<h0mpn($U{TayzEYF$z>J*t;}z zWFLeqrPGJWJGv<$H;G+D|BaEcT+ik@+{Ff1Jbw~T40f=FYsg-IA$?&%Fol@|&-J6d z-L-<j$+HhaI+`(XF7D`U2RA)qlFV;%b3ODGIJ!-K^V_rzP`%#sZI9$>L)u9%PJY>S zDeu!7h}d$_HvkST*Q{Cy0Ux*!9so{nstgU3L~~&8zOMVBVHdv+Q2qH^-?D9CO`!qr zBeTtKZf;5s5E;d!<G&|c3MnTKDKIHLzi@MI29h1d7+>k#uh?Sbl;#y{&ScU|r7kY} z=*iau+_S|V7vzkZdi}&YA3da?Wrf4%yPq9lR9-ubE}m#Ew|X|~lTyP!J`tDC*ac!$ z^0{8+S!_cUBw-I>8Wh{rWT?T>#$y2~v#yu&J$z1SrV@o=s<?HucJ0$15BqUG?zOx! z#dA`)5AS<-_qUQPhqY_Uy9j{|yD{hJ@9C=PgM!_h2CHzfJG%%(TJ?>CKW${Y{w@L+ zSYb0!gN+NorCh~85gFo!_K)K59lRD8;@{@uein!HPN>3qNz&aRxJTP(HLL*)Sl>s2 z9BQ4u>Idex=we$a$Sm?$HH*Am@vkGYWo{$~aysv0&;&bgz@)0qeo-qXCg5)1nJ*f$ zEOj8=YKma)EVD;d_;#%>bI{$v`M2@Ap&=GeX+81lvbp!QY;m_Un-W*Gc~{<sH)SxC z{XR7Id~oRlVa6N0HG<M5gV<(hd+Il%G~@ev`7PmMDp7h^@KTWCzt^Z6#^u#AOTrhg zeon61p?Cs>hggfWOS`3n!T|j*a}T}E(d*mC5e!YaZO{j100Q>NuHXy2X4Jgsf1SA6 ziUMGe!5~oJ>!;gVgJAR^0kjFUp$clnB8RThBk=M_IEY{8DMdQYuqe(lu&+WeJ^Qju z6hdG=x=n$K9)wU(AU;jLULfIVprodoKo*|7p>6Q`QBHfK-c#*g_Ey=q>+hM3ZcY9< z9A?ufS-EdyG>3t~hl=;^*lf^e+52!l%R5WecX@mbeG42;a0CnifYe#@io{LDe$cRM zLT{FAGQJdqQR9snB`GIwsj%PsBI}fRjPkO)=|_FR#^5vArLClWM+K$A#7n=4^UG*| zw#mg%`sCB&KFRo4iMU)>Hq1zEUFvR((YR_5Olf%G@*4;!hnqCaj<^wAI-WPSZ^6tJ zP5t4FB~f+RA9z~y2Y_yFl5>6D0L5+Y@O*8+<z9b#JDbqTNsY)#BI<FOo7+pU4c>p+ z=o^X!6tIQB8iAufNpLyQ&ZN})8}dn3^yAYw@Oes8&5RJ(3Qh2GE${vA^xIk1&X+W$ zHECW%M66!PxI(}(&cfl-o~mZqU>~6cW!$53lW!^gXW8?uT088rg!foRi>hzpb4PFX zeR~>OH(#-Si^b)YgIP#`Eh3(-$0EQg)G{kM@Y3f3Vq-xE$0<g@W7ZFzx6gk0dG9Xv zmZ8(#!<tRSPu>NpOKa_|HkZV-;r)h*9OMkWUZlE?;jfp9fX>g~%g^u8Smw*3AAm&} zNes?Rk$Iex1hC5g%D?0)b<VkLXo;Ukdpw+>w=Mt~1mN*KN!C7gBN2nVvp^fBUQ`um z5tjYZYek$}Woa%MU%d(#U$qJwkIy*DS56Il8uH}T`M3u^H>5dHdx6fseY2@ZLclaF z9Gs@9dC30j*&6Mt4kfmaUn*LaG?nHxA$T&vOy;t|Cd4x;cuSHK0i?Y1=f}v`dB%on zU#_Nx1`5nBrodn<a%o2q!;HGaZhiE5gU)bOc`qvA{w(QM>ePJ!6t7|+|6k%H$NvzM zEdMWqz{>n>Nu!(%P7C->A&j8;t<<fKKAHXD>ulolF~X2WKjajS!jfT}(-}m;2#xT& zkggSsf7;n$OTLsYwVTJvC}c)p9N)W|%4oV5QEqf9^+X>ZI*oxKXe=P+#zH5xZ-g!M zKo2R5xI{b&GGUgvA?8b>i6*rm!;N!d-{v8#zZGPK8ukpb><6%*s7r^44CFwpow_!L zfL_$t`Yx29g}5Xu%eALOv9b6ZL`~vAh$-YvAc3Evv*F*t+L)gzXoZqR-zec%s*uBo zf$j(J5d1hnh$K;~fPGuw=;PbwBhjG*Km&<4BkTM%I-;a+9JtrsT@hehbu91FQ@ zfXGGQc})mQ6#)=bQ>ROjVxR}mphSa!VpY}eS43h?{mAF<gpwzWFFXOs)2FE<DU~LP zTW!e1ATHv?4Apc9i>9lDn=&f{-jE+SJr%OHgXzk#@qubTwG%Sa9XQb+N&bj6f<nY8 zZ&(kN+Os-gmi`^;nBl0hYgy-#Qh0BgL=YZ)CVy8S(GN%vPhSI{g8+;1HAE2i)0b00 zV%baOO$}zF33QZ;x4JAet*2b>N6YAfiyBu}gE0+Y^h5=R>dOE%m{E`qj1I6NC>)ot z8!Z&ImX($y)$QADB>xuPn$iAv%#SrK!7Qf*ljbj{9pE<xp#__zCLIo}LP*2jnPW>A z?bB3*GXfyR(ZGp#A^%84QN_^^T^>c}j2}QolqD77<-t{Bnz9<|n(5+Pssnx^;_0Mg z<sjxi+4^~TalT!3zEhYG!y7(97|dAExi}kFra4lBh8`!R1%&J-Ps5)6s2y!6xPOFg zKdim(6M_hMgmBU5{rb29Ji4+yS1GQFfn2?9GXbJrALP4P%SzvlhJXI*t^w*+EFPMC zZf<_3cI&F}z}mShbH%2;Tea~XVM=k;>Mo9ayVI8^DF@io{3~}1<a+XeRtjn&C^IVR zRNiz)2vrJL>0ntFY=ev{UeGk4DriAV;eSWiJw$*%l=c*Yk~Z?Mggt}?#DXRk!BVyo z@&Q4+gu>l%fX=CPsY5|?e~K@sEWii%7sYnCP}cNu`fam}UuCAbpuqM*egeLl!}7KI z^lKb;(~i{A^ZoF<_k8u?Y$Z{p#?t*SiOrk}d*%;}wGr#N>Es&9_P%XNN9HhN)J&4+ zYLSzeiZ1~GAJ@$~mymDztcGT7>z7VwC4fjGyUCgit#GO9G*LpFJ#a`icuLHBuJ#9F z9j}9WPq&s>>~hLWy=eqzkW@K;HFy=@xOYQlZwIqaS|hQSGc@>x{^}|`W_;YZ!46I4 zIrIs@`d&yN0>~F%>MK|Ng1>KOKRS6C3qkS@z=Nqk6y?W)_zDXou0;$YfEPW(1MEGK z`_M}L7O#52(pHI;%Wb4_X?a{H@bZz{Fxmc5GJ6;~GhuCm9=w__5Z8pugEd|ENa}Ii zjEqgR0#B~KVqz|DN>=eJY3UfHCU}W6lvKrb%A>MDw^wI>FY0v)3jh7@FdK)~kLe`Q zfL!TJc0~+^1On;%0x1dVRj`#8Q9x=us(^0tTxbG3R?aPnQv2+}i6nM^kE?T06w|i1 zLYNyaSQ^Ac<NkhqTV@-1>ZU-uEv8J{_cZMoDc6&cEr)2~Qk<tu4GYZ*7=fU;2OZB! zWXSJ1lu9%537oUZq4nT2|IS<4pFJhB$|>HYhY0S|cDiHH#!ZM`4*YBH0C1=ousyCN z8=@D2Q7LeS<tuGKv{Re4D<EA%pF0RC(Q<O#g0krBAi`M|J9MvV(cX>it~oZk>~E)# zD{U71j)mEmL4t93!x3-Yx5OzVGOmH9XeU~3g_HKfeuY@}@0Z<iad+wOIYe#w8}Nu$ z8ObT?OfOo(CfeqehUQ)a0PtTw4V<n7F}CL4yOO&Kx`x^-Hj<=CF-lPj7*8Tas#_JM z#Qh|Gd+Hq>Dp320<$zY`f~2*Ru@P;W*PdUP2wj!75tvzbpbsr23yk%>3B67uHIWAV zvV6_@NazeMrz>B4<cj7apSS$eM@T+Tpws<!s@^_{Z!Qgs=H5k@2Do~0k;aDFao;QQ zwnD05_=%73FxouL;t+@YIOFk84<QEF=)skfCi4cS2@sIrO2$2TgW?Wp%5t0&4?bTT zmuV7xtX}I`$~qUSGdKfsom4F?^;VwWpUk>zGnu=4>-%ZSnfC%J^}E7P9@X4>-dwd} zgqD-mXk+VUfZF<UfV6|js3U8h)U%}}Pw*7A28Zhkvd*kQ%YE4=M*&`ab`TjG9a*s~ zww&42s$uVrOeUxXxRUlSN14-k_CD69grffF0i^P@NpF;&q#py*agXu@#<A^!1Y49* zOT!O$M!(oqLu<S5dk&d}xUNEKMT*oq`(R$jEL&QV+a#T(0a6kbr>i5Y5GDCLP13Dz zCW<O!!4K1!XGf-g2zrUWQ9~wiy+^}kk4NHEHVSRkZ<@2`!w^1x{A(C&Qdfv@oDMxD zBDfT?5LG)aLj+2auRS%J5S2*gwP}xq4mw#-1`{zg^F~c)8oYz6Z>n*zX^%t~-tLOk zr@9qTXWFVQ#^mTv*~N<@Xz#0Vtj|W{0dM>gSNGr6;~lnjmS3_g^sQ0Hr+H|D?v7D8 zQOC<C{1L%Rm7n#da{ZELtW-uer&88o6arvj*ua;%h$sH%N1@%_^bP$(lkRjRuUjCs z?+?MWc`4{`rc~N~B#f}e&u=pmlz{6mOnzD6Axt8)itWv-BAIyisP-~;=vwg&Q8Ss6 zV!g}W>v%D<?(x<wkWkPpw!^L-lF{hH8zXVGWOOyz2|9)IzsGfmW`E3iZSxogQ)x}p zyrN+60oBBqHM07NTe&x)N(?_?5H0Q_FY)eZ);OO_>+F)uMZ*uRod(m*b*Yvg%Dp$P zb27}^7Vq~j4^vpzkZH1=Jogu7T62}rpQodBHac2!+>R%&PPRIymypi2(N}^hRm2n^ zmt<dug#2b?z<sWz6(mZ=#kjplRaBEjD0t4s08-SS<IrF!JZ7?AozMz&x5FaD<g>76 zV7kJrLG!FksB?-r8NO=T<lQ`42B4ZL;=yV(-I(`(u;D(Sg7Jm9CUp*uTdyu>OC17) z+4+!DYus^7nrY#hd+hn%1?Cx<91e#M&!eyh7rY4!2))zba`{Ey_fD4FwpRroR_reR z00`e4@S~^4A!}BF^I46w<?;Ma=G;adVh%oepV6oGgA7k*Ac%aQ0mG+k4hBmLtKC{1 zUIRKdBMm;j9IemGu^Y9WkGEu>XBz?9^D1gKT|#%Hz3|tzeb-3r^wV&q_lF&9(9+^( z5V`U%pMQIQzyzZu!|iYKM&02Q6&~6O0NSBekpKA-q~b!NPyJZ=Wi^sWX*Q1bCh0dK ze%AN$TEpFnIyqjf3kgl!M-5`wZhuhD{PGefIOAMj9`a%$4eHL!^|oVqu<>rmzvu%r zD<~@{X~`)~1ECX{Y~+UaB`WVXb=D6;U4DX&!&SZyYBIgZj!<n+9IqcW0JMOc03z;A zO~n4W<sXj*t~?3PW_OJ!IQZg69qz3z|5#vI?}rT|v=4A;4lcuOi;3z+c%W0jow~Ak zpgJ|c4!dXSy+S$AlOCy+>u>QxTs*xK+i0Wu+wI^3zj6$hd%brX3O#^<8JTx)`}?T2 zNjmQKJ9a6_P$g|RrLHy!+S=9P2Y3<+Ngc!q{{w+WyZPYNB-Q5UdwoPr*8DhEc^A{S zME(SEgSJ-rRS|VU!6?wx?`aeEYDrjFsmG_Yg131?u{Cn_^79dDsinz$1Sr-%QKQIO zjNbN7mn^VM1Qa~%YjBfJOM-)`$K%HDu?^9tTnUpM`_Agz1g=-n#*Ij>7x~4UdDt`q zrls_OtEllu+kYqC|A?d<-@5T{no8PDEDSq<7sfW=^wW*Y31tu&+UmD-JS9RxG{o!q z?gr>UL*IaXT&g?W(Uf3($ivW}2OUASDm0)E`JIo<$BMn<ar$HT2H~DqOiMJ;um=IA zOu8OIb8w9t{y1va<;A-p!K@amDO?3F*WIlpS3*2QHZ}I4R(HA4>VnasQ=8-W*nk;; zBbcp)#5r7d><+3ccK|K!g?W$NJ7%IkaZU!Kz?ct&bjbWm0&@`Xj1uU8uadc$i! z6tc{S-A;i&a5&Q_Q1bi2&_p6`WrkRW(X2BO^K)9MBjHA6dXcO21L-$6HOk@p^^jol zUY;E+ig1?XwuEPH+gNI6%O{v0NsjXXE3;5ReiM^lBcPY0ve1k$_=5aMJ7bdlRYAZ1 zq#7a;a7s0Wn_N<W*iYS13OLLz-J$%#(j=zs$~#_}=(J=btMI}_SVtlql$>t|ZZfBM z{}!v6TIh7w^75#N@lspTIiUrfUWrK}O|Ij$SlHEJWvGoaN~|Vn(_y19cJCJfeq~s| zb*k7%o#8DdRbNh5X$=|U`S&t9lMS?NbfrrEq{=L6PU+n3XuQ?h^5n_hT@ufv?+Ot! zEU7AtCJ;%5e-5I>R&I%2T#ZJrK`(2;Mh^6h4s~(y?qqbX$ieI!c_(Z04$j&tsutLa z0E3#Lt4Zm;WUf=cs7>L^Q=5zcD9R2FmnqaV+rD?{B3o&-g<3y#oIQl;*0flUaIv8j z#YLHEXwwukY7g37jM3Rx0hN;fTw$HN5A{t;4nLy&l48_n!H1+br#3+_1w*@K^^0)w z=4zgf40?GQ%d1q@KbnqqVKyXTg67DyZ=s#25-9K<l|?9qPS7B`$2uBP!Cw51MvPbx zL9S(Mm`V@_@tdUv$6$XLfvJxwF5h&~MzvOU<1I=qmoodi8gp%-yqd4rAYrrBKyUTO z*tw}qs$EZaX#ZJqo99fDz6ds-|L2)@mjFWt=$iq_p}mIWPRJ+6)o(wd#bUG_e`)Ae z@weDR6S`K{cjgJ_XP{|?yTO2i_ixV+$hC5>%9k_LcMSQ3>PW4yD)r!mY|l=AB>RsA zf)ck-Y2rugP>AAUFPlhylW0}mo~!d+Dj}zvzh@Z5#LC6!+LNQh#Dcrs#ZKLM+bjtN zV1oQxDu+TEkFqT{3R0=QTDh6x!n__jELRjVJXO?*>iIJ%RC_|9O(4E*#oH&35#rD@ zm+~q%y)gY&4_m|+`_{1TM%nKI<H1((9QP8Jwf_u(g7nXd-}6o^jf6PDF{@jsqx51S z)EubJT3M-DB_|BT7G+-z9fP?Y`bI7YKxx5WFInDZUGdq}S{>k;w}~5h#(1?#Wl8Zv z5(h?`-|}rD5Z|OhqD7_>5pn=;8^eebLqC`!%Xq%1(!mgcT%&co++P3Bi4#2Ag9$<{ zb$&g?9C}r^+k0C4qw<#16zb#`r>9vospXgfc^0nO+<Ox6_EGC)VjrV=++c_daDygm zd|S6iH%&|m;{_U0LKFDPx<x|Y9bAuntQds!M;&{Pg$I*pP#qd0p3;^pn1w4$bCr5z zYw5Ki3~aXaS|QB+v4_1#iTxnCEBaS~<z2b}-87@5yLBGH?W|lg>|da0<vh0}*unut zmndrx%)15aKN-&VxfbT4tA@>V01^8TKQ8S>TKcGc<6YAqC^$|cm2#Nb=1U8dJc6ex zY51mMLW&e3R=UZRyyp9gJWsuOIchW<MTuc4d+uHw3w-i|45G4ow>-}_N(%#+F_-Jx zyE&<ACj*k`-z|5cp1>tV=cNGk-YnFchWz$)W3<EGx|d=5peu{<oTiU-Azg<ul_xe@ z?w)o$z8kKKw@)uIkif);ll$Xk4LMEtAH@V6BCX&ER6}J2e0*tU7J|#W7)|8Gg=uF@ zoO=$L{}o?@adNg@Cd0^r0%&N<*hW}0bl2R=^**g8w2VQs6UpqwIeIbPyJg3tEt2m$ znUi0IS>^R#XKv`73bV1i7P2O;?L{}gx}4osjQRa=Vy!0JY~R$n*EoNKE{`*V-OEe; zWd$4DvexC!gYU9GfBGyq5H4%tUy}LL8tk`Au>boSY`L;+L?W)1P!m<S3w64~eZI*C z55MwH+`kLBl8{&v8XT4dXnQFz+vwSM-077u>dnok7ME6uHhb&{XPr)t+RgRt9J|p2 zd2CU74@A~@u`{uy6&7bX1E~pp5=Vq0%d0fRG#EZWe$E2<Y+o|1_{#t|e(qGJNDD3> z&jsk~XfuK*(*cYwyEzQ`zKjhgXRMq8`{qPw?=T2O7^=c;P#!wfNJA4hu24Y>g!A_5 z*9icpYYpc(z$}de?P2vWYM72?hqLq9jc<x95mFS#vSsT>&I@)nwBQUlKiK$I2mrR< z;l~L;Zea3n&5Z|ft3lroJ^1b5*&{U3lPmw855X&@aqsNR$0I;K1t2kd(Q57f6W^zY zd1merT{Y$A5L;9LUadqGgrcVwdkcyZ>xY@=-c7{_t3UEOl+Q-z`aTTd%tmlzs=Jwc z48Db5r=6gX8oYEB{maTyPy%;R;)T!F_>VKdOsG{y&vxGipmCe|RobDixs0n`CnoA# zFb*4MZs&#n2RfviQ6HjgOfRP_Vzsh$*G13wVkl;<kb+l0On)*<!a;hHd~%0Vf!dgl zW`4zUtRXG=YosS|@e*+o`Om9@bJNN_FzxWBFrPGKR#Z#BSk>h*PX=ivvh?nu_u&WS z$4?j=hKNM=qy3(W^sm|erx(Ug>-8L~fSAY#{=MPwGl!1t?xX(=NiLSu3>XYh&i~c* z`6W#Mr>-yL+AC5`afYOJ1t<sxxd?|LGFWj=BC7{mAtRgFcX2SpP>CWcxVpCHyNyd$ zUyl-9L=c^t%!j0w<4cZ_A;CAUF)G6<t3afC|I?|b8Wqd#4h<_eV+~@uw!BS(6(9^5 z%R9}1;j=5NMCaDd`@jl4jKq0p{;UPyOxY>PKndDJ*7K2LvyWiP($waBujPN-QhF3S zQ8ZCb^vn94%jiz;dtD`{KI6S6byiyW(eH5-*TJAZ?uY8D2h|pYXE!JpsckaS&!q#^ znO_s2yhraVpTi-&M-4@VfK-pPTqFV=zDP4H6~>~~Up{m?qm*MFuA6Ygk4$EdD{-~X z%Z(wuKEh?S`fgSE8r(G#DMHDOxeqPo1VJOI|Epgn7dy}hay;ydJKDU4yy@{fTzgpy ze+TcI4Jhk0`vT7PZX+@jjnIxI!$U8k{?X*0z`5HP_h5NCX~dlnYah*D6mR^wxwG?; z^6US80gnG7@W460_i+u;pwxhAji28NjQ@~J99;{|<uZ4({;VY$PabG6aQuzU0+$s< zvx!g@p^X6gc{KctkhN9xww8hp?2LkZ+Mo(K>Q~g1Iet?|3#-k0Rqx?>eILTqr&Sre zVnC#e5WU|U^_Sw$vJc^?RrC+cGt7xqK7VM|pHiF=j2xTTq<=E8=>gP#P&@u*{#_)p zJX!5!B(QcejIDK4iNh;`vYM1r+a@-uXh%UuDqj_vDqrQ{)%mwl#MqMQoMg;05vNN1 zh(S4>Nyj+n<c~HT!}I3s{YBC^!R0w)E|fi5nPb_Qd=doH*TY&9+^(KZF1~5S<C3&} z^>?KTXsYM(dS>96sUg5TVh&MM7@D5k6nqvDQtP=KOO~#FHrw}!<zN4vRxH!zqQyMb zt=Fk|u0`DFUdsByXD`y{kUC&tRGo2&hC#zpVZ&Z1J7>HxUcTE>FV)SZgpNxpa0&NR zyP_s4?7$05;h9Wu_T=8aR`NJt^~cghO9;nl1!z-atwIEgFfO1;;nKat5p|7Ag$eVv z&a~hna;&_VKACbR?{Z2n3fr3m^)be;dNQUmnx<N}%6lU<tFa&;{4&V5Dh86&S<Eq< zEF??9R<a<|dAxwMDrmEpgOj?u{1K|i#!>cR{_yq+!4@~6>)I>u05Vtk>ayio1P-S- z1D>{N$iHu6Sqvbxx}>zq!-(PZZ8YNiZ{JGa6nSLp2+^cEQ#VZ~1QWL6(<%LTYbw4O zzs7|{A|2hE)D(2JwJdd@MU2j2rnscr@T~;iMP-pgYv=MSYIFJ&Z50KHk~+kc+8<pf zD0NvTgV-B{%TB!>b(N&cVA!6t(kcA?uRV$FQ|minTL=Iqbr9L3<N}am1naNlNg1?O zshyjhF{wsnzy-$@p91U}jSHMaIVzWlyCb5eEzc{HTlYre8|dWkIuV)YL(5X{pje3& zKO9~ooOP~BJIu5!Z>Q?;ufAUnp{K6yPEtBe<ZfV8@P$M7IddL2$w(l5q&~B!;W0hV zf0|S1DkuQpuK@)^(eR5M!KaHLG!V-xzZKif0)1*yFH{y3T(^s<S!6@Ec9(PSp_-hh zZaxq|FxcPP?k1s`z#;f&qmXlFVkc3;_J2*e3v^(6YcwRfJUf?|Ze)0D0QtGu>WOYo z-`{y67}UCzYy8h9N@#*+2dNtioO=%P^*v2``^^C+=V%z6$DMNRYX2g^T6PnEJn3YI z`*PiqGACwk#HkU@$_FbD-+hQ7xn+or49Q#$Rjh<UREy&Qu+hg+-HT;fHo+>8NOa>| z4>IoujG}p-ZOZ3C<_(l8)AN5mS*@hP_w|5_){;DSa!xJL4WB>uLU2nrf%lP4CW7}> zI4%HQ^gRFS-*SaBT$D1<K_bSgQcE_6JyIYshU-a_60SaQ1e4QoS-#jaRG<@k2+Dz9 z(yl@+&mL6`lYd>CaQM@ye~txnVs^osFJsz0cj&7jW+IK?!VJ=zz!VV&8=1IzDT;@g zB6-CO74AqSboU`eMV(ETqZf>9AZVT>qnrb<{Wj+=@*F~IdBlr1Rpbv4B+T)s5-Xhc zD{ZpdIT?i;y4&Kt7r7IBEVIX;q|s};nXT9JWSjGcGO>T>`myjHMG3=U5iUK406Lhe zx^09$#QFZw*59mhcwCjFDs6uD6*)nDjWhX^U-t7lOdzrk5#P(-3cHW@F&gO)SqB1| z_nDviG=gt)-EU_)>erOwYUE)&nlO;1{3TH`;V<c8|D^I<|Aaj_KBnTmrt21rh#e^< zj);ki=y_)GPnA2~gHeCqgW;4R0D;#gN<<5ZJs~50I3|miNONQ0jJf11&#Qa6_V|VR zaPQA8ER=OL*o%`KvdRUsiXIf|+NKVe)D=J<Z!aj};NyF0h!vT^#d<r3e7*G`qql8O zdGl&3d5oz}<%<x*@Xsh78b&3MPA7zfAhPX3jJluMaQO4!+o_lKXU)11pG%%9304vj zTZN%&q{P7$fyu(lDjJ+kaIaa_BbwUquGz{R?tpLlGF(l_uw7;=v3yolXxbNWBZ77R zJV74l70VDcz0SdK`$F?%59Y4efJ#o>g|lOO`2NR&Kexh6<Jl+Xa5N+A_&K(&Cj}9j z+mf;T=&)0Ry+3O0`#dl<uc#x0rQW$hjX>b4;gre>!eM<eER9`@^M}Fj=KB@N+xtCr zbv`-q1eiX4jIE>(qNhFX0XQ@C{{ptmjO_k{+WH2Lz;QBvW40<`Fi|<#{=YLmR$>+& zX7=y(Dg_o3;=93~h6)Kz1&DqIcg?X`fr68=v!#-6G~Q^PUv0J9ko=1iWA~r7waH0! zw}ET#4lvGXM$^PpVC8}1n&+A-Dp^TCLVa#^X71Zzd^saEAvO@6n4Ye9W(>s8(6H3R z&@hPP+dtK@mGd=@;J511(ERwoOzH&@)<7&J)QoUOcp%%H((()di}=VG(a;o%xzUNG z(S?N>BpnBb8)#yAG6spl;@H9rHMRg+d}%A6Z73c3?^1w(VQMNT(Ch0SCZD+wg4x-* z@$bh!B$Q?rr)Fl>ddM+6?yRg;5H>tqP4MK)XnMJ9fiEfu$hbdEO#;{g-C0@qIe{_g zIXOkRL==d9(*tV&f_%$;)BRIxV}zF|R^gexk;9$EQ$uOciDN7UpbGU`25%=WcP2;x zm<>D`x(-!-R8&nv1Q|#=VLmwx_=~lJ@jH`A1^{;s<ZFungpBY2F!;IgUMGyz3gE-X z!ChNh#b5Q-T+IZPW2lw~F&H*I&ECqf0)c8B0pQ|k@~r_tKM{2i>8lYD0-*qD_8=(e zsvtNZxL;X$NeM-v-A(8@NuiGh1ZO}vaNDNxnuhwEn3#x~CiE$T#|TaCOdQbnD-q!J zU`u0*OVi^UGHXjc2j^$h?}jLW?#P<Z;HZe=v0l3X(sUtKHgpRRI&g4sK78oDAyC78 zds79V1{lB$*(a$tB^nSBNZ{Lb`R@|6R2Yv^5UZ53j|qo~3S0v{ps6S-B5p+p6BuQP zg9|!>B{>5khRz1BlP)wLXpH_BV6^+nr`-<Tj1zD$3S;<kalb=FxEq4Iv8L_w!2)~_ zKch%iWnUaF2g<+p%94=qc?4iH(BTK9Mx=oDjRD3+zzm@UUp^eNf$qCPm%!8se9e!} z4uE)aGe--!<5v_!y$_IN|LuA_|K)l8+X#v)IGfNhR~`fdFk+Aun9>jP5_Su`NBj79 z2XuG>M&1E=zkqF|EZ8;|y^k0`))(MB{;H;?&&LKB_blT~-&TAJxPACPAcq>;>xw8m zU`-1jXpmFf1nMXTVK-e3+>nH)VuANSH}QhEAiD=3&I1%caW>Znmc_Sc#`o*sp@k>M z`fdQOeK~B6VEVKQeNAsVW?;G%KzSN#8&ivql`9s|*{#0$`95$c&j;ZlxEo^##)^iB z_njuh{IaGN7pM-9fJ0x9QukP9Kn^tkpDsZEhH1VR1wTOl6xkSh4jw2%0OFk>6pk*; z^ky(L1Co#Z9*hI}un#~%cQgbNn}c*85<yHcenNvbO@4^<T{Z$xm^(MWFMU1shJ&Z; zeIbJ#|N00HcuoEy#scZS`@U0q_uaYb3)=~-3I9Kj{05-J=M@wMCZqshZ_JF(Kcr?p z3|@Onzk1;e|40HQs{0Hj-Ix2&fpH<BM@$hh(|I9)7_jbJA!6o|@jRG575OhJa5C`t zmNOz4cCJrwt-#O>?e;ISK7(a<##rDDbY}V|I2au(@E1|N^6`(SW6D-wJ;((87ib`b z))zR~hQ%W?OtI}JG7R7{Y+5K1()klT1M}1xKKm1J8fbg@g#qr``cA|VAN@(hQIF!Y z+im<DcLln${eT1vof5W3VsxLO9QnNr^ihb87G4s{9Dq4IeJHE%jgPnx%It$<_W;}8 z1`q^{14F>K-5+L-V<~~BeDM`cSzAH`0j7H2@8ReC2@Rp*26zY02-pTnk3b+?--dC` zE&Uz3HD~~yL^3-&xkB^^0(*u6pGN^VJJ;6e=pN`~=}Q!RWLJih9lNokcp|!7>%lbJ zUJKwY*U8QLRk1mYvoP^A$x9i5I<e0|G(~>W_&$Xg9$+>Q4*C`~i19{tGI0Nxw(GoM zBb%WAG1IZ(0L1=6S_C}?d(IhHra&Tf?+|pUfmiqGh;)`nyAbMfqa5BV6Kz2aZCyZ5 zE>nr7Az>g@trZ&?OdeaBs1~+>M`BCgBQ#+(gbVWh-4{_V_;8leZSTyJ8qfG5j+f2< zeajPP#Q3nVX&&jP{jgcBWbS<4PuagbGyvW!mXS_z4?yGnq740WsiuO_J=~c+{R5S& z5sN>*ow_Dc{*W&22uD|TGHZ|NZ;b3h(t&yMo@I?SI|DQ^8C7}M9UKV*DwljE=?{ka z$v5M@=LgB?vgC3kYq_nps2vyoiUs+j9GtM>VH_8BvtYn%RL4fj(d5(HLq^Z0p}Owz zuSl9PMZiACpE?|uBv~)P!pI^87DPyW?O-A=R|(|i)ZJ90ZHXDqb)i2{hFd($M`ij5 zNBFTxwT#<vod?rWEqFF_S98JU@edu`gU{yK8QU32nX3TkztXHma3s3P7EaO9emmbT z5KT^Rg<z$eMK`w9{t7Q<?(sxMUkp_jh0y@LJpkHK_R)Yii!3RWx`kjO<Mg(ogZUl& zx6`KJs2OM47OX}ST<p(4>BQ1h`Ao*oaFK(Lk%AqxpR}q)j|`L2`=ld*O$c#JxPjW< z(xF+=pk=s`{Hk@qudzXZH&sT-xDuNsdb6>V*k3ilr1KkckB%_6HeKUp$oei5e>bS) ztpGw^5eBfa#<={*g(|OZOlO<z8%?gxJr*TjmG>M-N~|i2-c3rW_lTX$GuL>v3stWW zIh5;+N>;4B7zD;%s^}DuX`+q_dEAJ+#E<@oNjZ@b>@Jb$Rjt^9u<hCsvAk__5&pMN z^w-N%ZDYGLsa2uxwDQ8Ux6$$s@YYxrssK^Pm~NYhyts1ycPXsW``0#QF8j*0U`HGE zReMbq7Eh9vPm2*03g3Zek$N!7$`O~%S@@*4_IU!`^IJR6m1Wu^?s$g&#MibDZTllb z?oM>cInzw3x8c>M5*|Gvo89ba3b~<3m2npB@@%BIy%Te=<QN|85QJ9v!gw&TWk9nr z6#|-cPsS2UYi}m0s5McUFl)AOlff=NwZaAIuj1YbLv2#@IP~@QPg83u`!+(4O_JN# zw{$hhKk<Qb3JV#xv>HsyKu>erVsu3(F}uoDgXdI$DH<=whNWXCOY=Eu)%fpF#P}*| z&X&Vij$^9WHp)VCKBmzNHgLY^dw_R`SgH4$msdih0DP2eQE`1-pXy>RP(?&i-&iN2 zrpBPG2nCa1$Su0Qb8UUpJjQO)a17VF=<n?X*EH^@woE}Q6fAx$mRmriCHbw=&t}{0 z6&JXdGhW_=6~c`3Emrz}e3gWOQi|qx`=pH-7_Ei7267end1Re3Ldw62Hvy$OuNNyu z5w_ibS7HK6G?nwCDMv=M{G=M|BpsJ~R|HVc0Z4=Edeuv*FgF5A!b_b@go?JFQeoaA z9Hjq59!iACbb}L|_1r~;A6^Bg&gu`{xtspAq)lQ)s&E{!r-absXG48TmkMt<5P6FK z5W&iz{HZ>=9k3bsF|Flt0SOS@K%Je<;*e-<4^1f-jIXT1Yrwzu{g+%u=}jv^&e@S$ zs&_oHn8?es=UZLX<U{cAMQ_0#HI`Fw-Jgxq<vS_y({S42#52W`2F83*lT{=cE)&Xd z&9B^r`&4%2;&K}<R3FYS#gbyZ$|%P`@6d!mQp$!D(nnRumx>?{><pkW^izqpJ8YgB z%)v^BLFO>9^v7@bHj;(IPwC|Z>}`O>u!n8J(tMkDEJV=nbA5C_^VRc((KsCpUY#s% zuzZ<L6+5?yyGt1_0TlM2XPYqW(Y&xpqJ5S|M#7Fv`+;Xwv{Xw@sJfI08l&K`H_ko& zRk3`;)&jPoTs~vFRuF*TvQ<iXk;os2y>{>Ch~SUP7zdjyJyNPRJt9|Ptj57O-~0%) zHPlkOHY>(fK`CF?3cPA&BHh1SVlUK~l(L~nVEXK`?S5fACrPttHxxj-d`}Gwj)I^Y z8sQhUNk8L-?uk~#)xh=y&9%Z9q_gFHWxI^8wqZ~;l-}mAbxVNzHps#`{#Dp)1n#q{ zhbW=3M53^W1^Z5-cnd({dTsKr+F3^o!wH1RI-A|<pvV=xcLkOTDURjvFtM-DW<nDM zA3er>{$=TCt%dRp$uv^$ah-YKpoIjx7YTe%)@Mf3K-In5ilbVCgq?^>m3HT~yjoss z0xJ(Oj9_qyh%P`++3)JdKvaCvkg_Agu_@@iEil|r%fB907-H2~X+Od=#~$|_q0U^) z|3+87QYoEqvxfh(n0gL4k&L(WrXJ98Wi|E@VTA1d5sURxt7W9B2=7f<ai3ODmP@W` z5@Jc)($fQ5kOS*Fg+lwv1IDoTgoof;!cv#DLSB}xMFOz;&6$(kZ{mJYh(Sk{`l0|Q zi`WO!(t;a1S^J3=wEq#+Vhx_fLz$6A+zO}!_bEXHYl3KS7}xp9;#Za$$05uL#nDbb z+3<=qLpa_wu^H?*E9<6fRU9cGhxVkr<~t<J^KEka_sW)imxMdD5KduwRYu}2;aT>? zOAt|J*$43T%R8uHv8YutgH-fSdzg?hTNDfALaOfOb{ZBFDZ&NSKk0zjC27nsTDf(y z(<P>UI{oc4sZqXw^Pburfu+Ehcf!zdvEeiu{eJ}wcmrk6oBjo*wqi)YjAbpimlF21 zh0K}Xr?SZ@`+6AgIPa_fu9cGqV>L<~|Ma|PMRNhp>is62&f@tu{YTiBI__;lp-Z*c z?*yKHQEc~CR`X);tgqrb+`iHq4hn^FEoFkZb_QRtH60$`^};l-q!$rboN3s=MufV3 z7AKJC)hoXyt~o`o6Pxbuh)Af28QPrm4ALVCcU*KTQ=BbKtenUA!@t^B4#Z5~{lNT{ z7E=SbS!;Zxyya;ZB)MzS^1%tzI#1o2Mf4O^;m0Is&PBQpA6R%oj0~j*`Mc$G;jG~2 zVW;HJf@oM~#8-1qm%1$Hxu2ZN38>Dz=bn{@5%91<&?TEM*iVzqn(nF0MwqC4S7}C= z*R&f&<&bROeq9sqJRHDPMTzS!30IRXh!_JHtm}c<n1fQy|5f?m1W|?#TRPm;LBiT9 zS!>W6y3$I>E@gtM%f58<fn*S1(@!ZH#-%>W3_<jMYmT*9u5wb<_=l7qh^x8wZlJ!Q zPI{lcM{F7*GJR~=Zi`rwKbU8>4n?r<m>5PFN3Z1u&D}qFh@o~-f)Yo&CO_9!cVGv& zke>A@wNc{ut)eTLo%YeQS0@%?(umL^{_mC>rGf|E%H;$$mEV8C>+|*i-G7U)mS(v; zD=e%HLOXZGsyvbjD$eaWq`&jhp-XXRPq^bFfhlJ>O-G{@_0gOUO1~8Ab*QuuN`*`h z9dkgE0o7$Y!Kn`|uc~o%PNpg5qdx)w|Jx7$z~~p*XzvgIAZRYotSD(1GA>OuW4Yd3 zPFQe)r-=TJKE5+;6r-H%-=6I4!+*)Spk77cfwXcDTWSQdi`V)6eof?Xh5CdQ@vV`8 z8ivEsV+2VEv`qv6OvF#SayhRE&6xC`80gxwE2r*_XKyOK2l7EOqt2P)6wKFvp<X1D zTO2_<<OM_S_Nsp{go6>pn%liK<M)TMdYn&xv?V=z1<WElARKbQ>5=|zq*29D^Lp(4 zSt=lC?6Xfv#K=>#8wbyJlnSbDIAM{aVbg7|&LylJbVK#0&t6~=CMA~`;Xra`+G=y* zU&e8h;P!iaJefgbl2-VnjkR+H47HbU1#+-ppt5H4!8&vgdvwf4Zi;IJ|FtU#R<(D> zT!5vszY)OYCL#I!X;B46WI5jhJ|qeF=LjqD@_ztiK%2jzNg}bd(+hQ^nlSGTkLfEH z-vb3?^Kz?hR~A*s`GQ<f^b-_mwYI4&j^8E8etpcSv7j%=iyE)GD+#n0a;p?R-|>HZ zU>B3<ZW7ci%Fzu9=7Mo~LEVCi`M;Fo_)cVMg0oZrE-xFe<d7!$+_`@ujKUQAhG!bl z=Smz;ms8`%PLK-OoHWt0&%j}1E2T4Cy@gW!9u!R;wsXMe?hapUpQb-Vj%{N*)hdCL zL0Y;*vTNzZZB~Z6-he926N^Z$<KutrK>EGH@vAA4BtARG_#ldmn1Nu{?lIZfMXO<6 zVRGU{RArd(3)bMcHo?z$Csa4lkDJGe>eX|$wsN)Q7}!u$1rBKVi+Ub7Qg>^z0Ni4j zrQ1rROJ5=LUEXc6hWsreChb-onti|dS^-BBiV_5Cu_LO%NDcPa)tI#v{Q`g3T6-ma z(iRKv@u(+fZxAi02Mj}=CtP+}-lxntc1)+y8QVsjz!{{b*)lgKmY+z=Aw9<QhL<9~ zT9nmKkY+5!dCbReo8n|3^!9Q=eWZvfc&pr%9nMLI@Sv$&pwU?N$ER?oXit4UZnEj< z$n+py(1p_#{y!M#3`<k@ED3)#_hJQjq6!Y-1MlBGJ(jE&C_mna>HzD%?xgcjr}u(- zHdSow=F%>qR+$PwjKETTDE+hcjy#jLxv+VVYag!e)`P{K2%vNA`hE=tA(dwDAB)Q% zdW<Qrv0w9uu3zoG_c%nT`3g7WKiOzt-|!xp?9myMKEoX{@O>0<Z=rv7$2B*T?EluC z0?Xy2(a5C36MNZ6E&xr>Aq7nq@5gLIv+SZF1G&UdA)8XFC}Ti8O~Z{Y|E^RyY1XB^ z*V6YAnRd203qftpK^KNbI9lAmpYXxr^ND(JV)Qoe`<1cq#8Mvj{TaUaKv&HV|AL`G zO=7`@M6A5h`l~r469<3MRz5_qZbg|g=)iY>=@kJI?^O}C%CxBYTY7o9`p>#EDa=$1 z(s%m-Cj)OAL(P;v^WardC$eTlb0n<K9KZFt%*utGn1mbIX{57q5Erxgp{ClWrYUm| zQ^Hw(!aXBwFcO3I*|n8_Yi-6vmn2X(%94Lr@r`I^1pGLGGPr*Z+}AA}WO+j$Wy70K zrnJQSTC`?>4j3?i*R}I_i_y(3pCjW$-AawPgE|^6C(ZBX;c?q7;kDvVo&sNgw-l(5 z_x@sakKxDiL+t%L)X9fR{jGmRy2!FP?Z(Jn$Imy7gQrJeFTVFXbJGvY)&r)jut3rj zP)>Hasb3_XzVUy$eZ7%jd^R%uGID#I4;~R`^}X1k=TIO3gJsIk(*!E7lp=KelS?2= zoE=%!rYws0Ol4QGv+Av_6Yx-O#Q2DMik`SoniDRR4m;akfM?WuggYo^^F5{Wt&Agi z^lfC3vB5<5&y*Zc^XCIlNu*1ueFyOhIy?(@0~4k*QNDjmrWw2rnVrpOQUm1`B7~aj zU5nBpxTAAMy$`1p2R!-eSi|vHbXms)GZH7Q@XQhz;lm&yrBZQsec<x!kBKS7<M?rk z)GbCTJLP!F$~&MG*^~rLucFer#_OaFJw(^<N>OyugJn5n-s}!xZj0h?*ee;&*(BSl z5wmi6T`Pa@);4o&4oupTp?=$`(QO+blilY9MBxGk%#;H#xv-#e?8j2<^#l+LJB;k5 z2TRfoo>ZdTSX)nHlUT_5cBD@DsH2MfWTY6F9=(|1W$J3FvZ|{!KEkDwPXv?WS!UhG zrKV&wBibuVS2x={+VlhG{_73u`RJAWY>9T$m;HY`;(G5t{c~TJY<?x--Pg9C%UKgr z%&%sByHb2v5LxWV)}ajpeb|@3F{LCwcYS4voG$Mbl~VPa(&Fs4DdYwVKX;5ra0DZa zF*%<+=WcM<ox2R$kPG@gk#<s%V9BmlbV{62KbQD<9x{1(tbTO3O-NOo!f)GRA5&{z zvRHpjkVl~9crSyuhV7oe8ui2s1UZ@nUU^Ks^b930fI-elhV^b0Wa=bAhTz5}k~S8U zZOKf}^%)FC=FqNCw7O*|-&c~dL7I?R{r8kxCkiZxjKaeKiq}K$cjqaSWIEh?qakft zsA9n!!SB7~Ak4Ceqp04Sb$gp81*P`4wN8KNsJa}|jNe~8sLbe-uLeri*egzz0B}4O zXj+yd$wmWjYOd0S(AXpEmG0{5L&RW`b|LIhu(3V&8_0`0uq9GPyIiBxO8DJD?Vl+C zsmJyP#aj?W=Oa!!WU1BbyE>UxHy3?M4Ki0A=Rft{Eg#3fD=s(jT<rm_Ct4Sw9O-|X z%X=|1%piL=Jn;5@O8=likMFZXV^xxXCzj4Z#MB~#Tdu%5yfqqx%f<e5&CQcx+)981 z(O<W<J0!SDenS0)L%_pBLFvq84EZW~THW(K+va4I*?svo!a|xbrqanJY9`S*s(zK% z5lgsMo&UzVBPeA;)lbdXV{@HV3Ne4ae)iaE<BZ{K_7PU8t=(K{Q@V9OhO!0ylRv)y z@^cwZL`tJ|i{XybFWj1UFVHhCNv{TdGJul(`{Dvz9ccddger}nX2sxqoTU#llK`X* z$4OJdAg&+F=x*D#2n1`~h^;Ar69K_zY3Ou*v)DcexdeyM(^Lo+kU9<|%7K44<-$qm zK_ieJl+BXwib}21(qofcXI3mfZqPQApuYL6ax?RMTR$CZ<T*_RD5>azO-04o+20~H ze3%lk3J69)=O6wybU-@=)%kMYrM5(+`ZW$;w$gcRiAL#{nI4p$PGc@ZNMzM1t@xPw z;-hE%F}1jNB2=EKUZSIpsCa+E`j&yidS<Lye6bDmqE4f%?T?RCC|8OakvjT@+cg=( za%8`gsAc2bt5wBH?sf4DetrX~epO|}op%r2<MqmqX0snQzT4^gb(&1k$2&9O-cg@s zy!Hj9j8YX89}D0dY>g>?BCcn8q+K`P+lfr-E0;+L$3bk|NQ8MR8f<^u4$tGszt+9| zSWZS-K8+Z2AIcOKXn&7RlC_`W(Ta;<nC35eGa2Rv(^NjajiU}JRn*G2dNdoHE{^#? zLl2t8Og8uw(oIz6fS_Azxb&;0Yio4`nriRW5BvSx@!@>+w|5m6S2L38C%Jf`ue~as z2%{SkhQAENt3@ObsxN;?*hpBMWjY#>s-+A;8(}&mFXbe$gqJcM8V%^A(~xO~D&hG2 zg%dqstW%)a$+K-tlVHgj?8X=ecS^ZJ4lUm2LQ0VjT=44PZF)CN<fi>WbJD;B7`XvL zLNDj&mp+;lc?+1h@~F%`pnRqg`%wC2w>EAs9^fk#b=%!KNj`rv3{VbsJ5tLR!+^Bg z)vIl6mi<jtVIiS_QkkO{_en-4z0wM73T>vbJ<a_tO}hCF7;*lG&0XApQxlx5=mwXj zCXN$$MCNV#Z?7E4A`Uc3LtSK#n}}M>vT(OMPM-&ym*`Qa%X(Xs;kb`36JMGTg}Kp_ zbwosJT^KgOAb)?rEfy%eYVmsdzmFBl=TS)ut2iWD<$@#!?GaC-@gG^W*1*D3%0mCX zcoF}ih+i|TCJ9eKq^QCEt61&5ePa$}{&Z=m<}BhWZI6LkV5)vmc~ee#nEw_tx?ue> zz@S~K+}*>sl>>Xk#lA7$8@`R7^{NK@gG7tc=}pd<CyReLwt8m!M5SDIfr4WO9zV@c zv|Hg!0_ET{k~3YODccdw`BGlL3fja^<}z$vgCDwWe!fUp!h1SzH~S_21Wa?7M7B_% z!X<lp;d^3I9J6ozZxf?TUbo#vT1H67j6u=p!_cOn>Z1{@ASo#MJ6_$D$C7IyC}Q~| z&|@VG;#q&0J>fgYUw_of!E&`2F17^+HHu*~Z)6u`>rrrIb8+drd#GxX;N~Q}e1_PJ zG!t8BI@-tx{B0<qpjC-BQ;Pqau+GkZGXs_ggo4H9Hv%F$_xjBNp8~|XXkduiF*n4? z-5@nRezs|4wl@#YxBE9dDvJ=CJ;?E6l616wFXewhnWd~sDs93bBu04JNvj7hN*GWw zUSW#l2L%5`qpX1bIC{pWcGCqlKjw>Xm4{sfA)BixE2w;z{Nv!Qx%=%cc;!#?GvjY| zMZQH7%L0lz3d^VyW{V{eV?&H=2%x-Q9pTfaGr<~q2LWsi@mi;l*bUy72Fyh{Gg7b2 zLTi74t@a5$o4plML?*L{mfq(=uK}~S<Hzp-nC*D50Zpx%zu;@*13aC(-?>;>!Mj6e zn>UYJrp=ki9|;{%y83WQ9ddcS2JsTDOAL*i-|y`taSY~uIu}HIa`BA-H$d<&WiOGg zq!eH%3y0JZ<lsx*<oyMnP`$eY{k#a9>otEoK*@yPNSsiTtkGu`c^t@~cg(Dd$!43N zW@XC^mR#SO(UKtphq#+<GgsHTY+XH-?xKN!BBUG$27Uk&Kp^}UxQJAnQlNSwwWpcq zppd}pxu`Fy|E<*-Pk6`(E0&g^oUa2!$Bj__Y18nx=U@|G0&N{Wu0}bg0iuqdYaf4v z<*Qi+Re5+I_C2cSVuxZOSUp?=%KbIAN?2nK;!#nm_en6mi?l0TplDuYj(k)#t<x37 z?Dfev6#@$?)ld|^Z!JSe*kP|Nz29K!AKaT3G#~PARJHYV(9OQ@;r7veWxQbP__Ukn z;`cFaIpK+`XpN-xF8)JBun5HP6nTG`r5T{q@+HOQ_)^}_<3}ZxD}_~Bth}`^2J{D- zbDBJHwqvRvF77R94$6)-rWZ<h(#+PSGWClx^GjF~6$XvCw>XFn5}Xd_=8tg2Ld%1; z5^&Sbrv(sC+ykHZ?j~FZ_%&<Uvc*rwrUrWYtBti9a~a`Br`WTvpE^C=Oi_OYz<H97 zS{Y(6B%E#cQe7`Uch5^xVamu$F|wdi(^)4LiA1a`_?QbS=!Ha}w8q7m1~0SW71F<5 z1)xWYcSh_5IZn|AQo^pJEcdxrb>}66adsWQsw)Wj#Z`&U*3g$N-8(j7mSjr?hqGgI z3_3Ny+h>LtP=RJr$<4%)4g`OP#v!r})-F!0eS+JV-&W(KMgiN$Xkwkeb*{9Y&z4*Y zA@yy_9~Pf>Kn;uQtx0zLhUy*!ZbF3JH{@pxVBc5i21y|k5I$U-#KDq9C;Et_a~FAm zxFzm?Q<j!G8V)nVKYnZupr10CcdXo|GuCaFztV~$<rCi6;<p7aMVNoV*NJ$G4|`A@ z@8}$e+PARRHtCw@uP05j96~N-2|^&13F0y4-h{lz^LPjwik^GZs4c?ap?+dE55N50 z(&@VVTM%z0ooPHWk$)Lfr7`;Y<9sN2&Ss0P&!?hBoP~P!3ux7eT+JpPNOyogxXKCS z9D7wI`NV!fnKgL1ssMi|$eAhqDBa_52$fiRnq%5QE&hS%y*>+3RWlX$Z+nipiZS0l zLoU%ov(%msP9vk%7g&?RIdY6J<h3tx)-6_81@B_iBKCFQ^S=l2qU`5Gr*8L85aKF0 zJ@jJ{ZIp)`eZD4Zu34_^3U7$^bk0X3E99cMWmiLPEsU+hmCAo5%OGG%v?Z2gT{bD? zDaIjV`ws?wt7ynB_WW3^xsERGnKP?^LMwB#q<8uPVe7?0YrGl5+YF}=2A{r(=Ifg- z$ia(m<mv4f+cre1bgro;qC@F^&(MXA$oV_FrZ~*&H>okA;W&AAlBD-c%YzJ-fAh}w zSWCtkZ-keX_Mw0Gj|IF3?S-YsuIuZ!5*F~U#f2T#1Brx~mgq-h-ge%_V$8~#6Slbi z1mq)7J6Pi}UJRc!sMF~UqURMuhG-fIiiroW={2B9SJRy#l5!@Vuym(37^$t{vT&M6 zxBHerI8m;53Ls_OPZTdNA_3$^oUEFKNSa*EM1j0x6AXW?^X8v+M4psF&RIaYZX}bw zLUPs1?#g0RgKBfDeQ*i{QV^(BeytJFM?f?Gpc0}X)m&tbi6m!F#1h1l%t>pAi%h)n zW<$ZT!%6u-Zj4)cltxJm@t}jkqf#@(k?#}n#J=v4Q-yzOSx!E*Y7r96Lx4oXxY3&S zV7sd)o?n045?WwfI5HPuAB_GawCnReSq`ozJXu5}$}6x1(xTcc)l2L6PJgse%~^&f z+R^Y@*ocgALg?Q!E?&SHh<D>Qv=*2lgBZvfI;6AZ);12#32w*3%~dU=Fs~<cxJy5= zMKS@-7kTpPnEs0I7Rdv)h<?w-gMzLu9HB}nuCjlV0>+gZ8`tOkOdp!5!JA{fj{bw_ z3@j=*kKyg<Mo!=AD8bfBMT^l4&i}y?U=+8M_q6@o63oWz6qzP#io-G{K8BMtIHUa7 zVCDER&%Q)^8XKXlEKY*W(+sx1lj+4sq}1y4OGCc6h$fO>MKxMgFwi!%B&WTxyN>*2 z+0TD9+R>lLu`|UuL#$^sUWTr(%9*7BiiQC_@!U@$jDWfeA=o`xCA=S-f1rkuQD%iJ zU(y0KMMD5iEmZ!b=@hNi<(`j3=Y+sMNM^<9M^{VHKFxfV^AH@f2A{J5eV)(o_p~$S zXb2j`#Ju7djW<-!vJ^NF`B5iZ$@qE2*(raVH?T{ZD8#FMgMn@T{`@KY0cXu)V-IS9 zvI~^3W6dcw$;-znpI$^a%GqyOs*&&!3CwTH6M?K$dOE@-jpcE96S~HGRLO&hp+W3} zPZ}@sj$_8uh0oo>s8om=OJ!1_3Ygw4D!^Y@E%j_Mb;V)@1GJ#NJS@(cHorG2O5cC` zY1}!Cg%Z1Ck-b7DFdw=kHjH!Amn~{_8E7KSVb7Y2r+6uychTM`0*bb@UN<!;PI=D< zrz0^QkHx=yo?krvBI%Ilyd-~2=AK(A!b*D^j+Hs<-Wo;|oeO=DPR_QReRkMo0o{g) zmF2eGBUZxcW3gzeD2_K+=t5-I55IqFPBZ4tG)3x;hcA9e9DG}UlZ~7vDY!T&qct|U z_xO`^bfXgrLiK3wo%l6B`E4zQ)&@^hB#1ckeiExx&EWKoiXv&hggZ@aX^vQP=gUoy z0}q(NO`%>O4x!ap<wptWCJwaGN|&+ppp@P#OxG=c|I9@#wKBmdR(04S1ucKPSKoo9 zwtf&78<r2UKvX;RXlTR?SXW~ar{*o{sQ(}et|C<(A-+x9^0E;r2t_Hx8<w#Oc^~9F zWJ0{2)pqXYPnlFSwMNaNQHKF0`}6$NZ9_?lio1eu2UgINDt^KHT5^xHNZbYp*1m=9 zUTSMHZdMH=cDc3^Je--CKc;_Kb_AB!!>?Kxxch}`FN%4C#$7d{rsP>#5-(Cez##CQ zncF-kbYWG?8Th!CiVE87`f-!R7x3$2@iqWoL|5*%@7LRF6WhKF1rkz!FHd6Zl_TRp zhm0GyyH~i??$@7M1<+>b>&kts7;wwiZH0VzPAS`%ed|%cQu~>u1*d<^nou1om$^FO zPj&J9b5-im*cScAjp$9v4UJLdpa>WivGPaHLP?-VbJIZ)6ncFoC#qh&KOFmc9aRbB zPnRkpSgA+aOHSVqvjsT>#mJWsgI78Skk}aeAZ*zY9=G6TCjlZ8#LoVl?J<}%rz{8Z zHHGP4dp7jpBG{@+?<Ie{Z2)8R-4o_}ZIWPBSga_R`lBK#K{Ry!Q)iK(h;gz&+M(Wc zA*YIfq1cY)r<yNB)Mf4jj_$%e>pgre?cFz(vlMMyTZ+aQ7)Wl<(W~ZQkBOj|MQPnc z(-dOxGw#NEtlfvZFvlokw@I8u+(wyUAnGG&Qm6bqgUZW=(GPzRvWTuTzUFyxtiu!O z-Z3*Qk6kAtT)|$s;N>0<S!uNgaa_`6GsM1ZpB@q=me*c$%uo^?^^WWCdz_4NuC&S; z$X;Ui4H}(-1d`E~{9K%d{lvb-Yld$b95Qr3mMtou5`I3}GviKGWrtN@E@!25DUsD9 z;*{@7ea(LY&BK2}1$5e@A+tj#NqU6leD%qE<|vCwCJ(DtFPravQF(IM{-za9>s+TF zgg6O7D4`v59a+&OipR=8lDw=_Gs95aO6wR#`5YK07~$t<JV}Yj?CI_l-c(UqpQwh{ zYy|V}H0_!R^Fv8tjJjP+lBJny`))EC?X3nYcr13!-`{^)W|}fR4mym*l#;ua?}F2p zEt>U$_<A&<mC`l&(^E%XGZstm2_tV54FMdB)qi?44(FsHBuLh*zE80Y7fG&C%<)?p zI|cN%(jdfOjMa);oPB*{JXSf3_z@LicmU<Xs|i;dgas4>8zi`Rr~uV35oH?&BsU=r zJqt<rSD=4#%n1|lKX5@#5FH$-1oE^)0_aIixayr>J^aIy`ZLCT#mbR>-TqP&pKXNb za<$r>sPo)=76T|KWfP?Emu>s`>@-@^@$8eF&089f%((W&<gLDcks)2BnFr?{bXR^w zx+c;cL&<YBm=N+GzpU->n~ukKCw;;18(%M-)3SenVhv`vL0_BCXrNR-^g`J1D<5(R z*X|on#8~!EAKmRS6sf1vS`Ycn^JM>B&e-xk*l;aSaS-|EPyl`z&e)c)`uF)DDln~N z6if@g@&g=N+kEup@Uc~zB>Nnhcd7Rn05Ogh$5Wbe=XB16;O`#BCoF}LDA)jx;(_)L zJPv;|e>P|$waSDLQV&_M*xP8b4T=>_Zoe)Ph96Lpq2?(H;Z(mW@yr_Y%D*2uYru%z zI#8qv9!C6D;l!wf@@T}P=wicb#Tt$)fh!(IuAXH$vh&7^ZOEQm)LevPCfQ^Q@S;8e zqm?4$Wy;`Jvct%vGld&~?Y}RaO%Wi47o~qbz18Zx?K|*K_J!eTX&J{GLD-#1FdoPF z%C<!d`QbRCaA{R62rX?t<vb#po;qq8wXD|{^g~2BDqB}eJ;)$cl%XVZGh?a%b~#Y! z-ibExs>`bm)1uQqvtRYIR9D@LU`~J?*z`TaeJ8(5JNM5}C}PeSQ>~_M?zft3!r6aZ zht8C=@LcSjL@u}#&$J2F)6q&r7uUx906g<dGqv&YIO(%djc4Jc^=s+5XG8Vm921_L zl==X1!#-h5=DmS}V_b_$3Ash9h&Aok^syXEeSa&n#vjX|8b}4!JE+ogkI<7hJ@`qG zC+PN0@-d^bHa*p<gk}3i4MpHOUu}QU$=_hIe|9XRc7@W9Uxxo20<3l0bmvPVrBE0* z1Y3K7+4uEypP+XS<i4KAd0}@qZL|S@9u;|1l^BKo?k;srGiDSH^E$|^XpL)=wpo+% z>+=vAqmHX@A^{!F`E?tEl~~@v=zfB^NNe2?HZ-l%br)zw;p9`+6PGRmC0l>^wYm9A zMgKYteuIWO{b7H_`F+j8&f;)}AYP9ZN1ZbakCc?250}uD+YNpHP=^Jeu9(nLPu0y+ zy(!x`SJdmcnqEq<SkCaN`E$#xhH~@5EZ&mB3@g_$3WEBnZaR!=e!jn8qpz&b3)d_} zN3p|4Ou)(lJxoxs$X9jR+KGP;k<f4|hr@3<9F+KCTpFp(>>}yp(^(H;XGJK#gLZsx ziqBDQ#0h`aeJ;UUMi>y8fkUSx`UXDquFd2i3U~7aNE6{8{pDHrRc^cUcdR=*v{kqY zZ0ChTsi{PcnjexOX#EL7$P`$wRH&koM%kB{-Mi563)}CZ9HKQ?wZ4Czk1VT{b>GZ7 zw?^I7V;J<Gg;n}0sSa0LcTrKk3X=Vf?l^YpGe9L{0}Fu88{$7!!)MQ?d3WRuyFN%3 ziQiPT(gU?%OP+@87jCVzMZE@#iL);qxw{#?cSbXPF1a0l^y>_BIwviqu*@3+340Mt zesl0E{(Re%2-V7vaL|9D!h_RXtSv=vb7|cF6U%e$ww77}Oa;@&)`EWqIa^(uB=b6w zFFllE5vm6)7e_rlUB_GaA{#)!J_mC){oJ>S5qq|z;f|O->%JGNcL~r1gC)OX@J-h4 zL|mhY-Q(ztOBPGADz;6&cRkGi879m0W{4P(;<-L`gko|+`>TKY`@rD7{T@Q#E%;W4 z7Y#B`Q!x%&+);RA(!_YW%IrD(f#m>At3Pz|o%q*7cTl|!vMrFWxDc4R{9tCU!%j1^ zw~CJ1ugADdJ&~$bY9q$)uGtX8be#sXeoeSikbaf(9FCq|cqLT^xUgOqSTU5-o(%@= z=O(RKB#p2^B%pu4<MkL$qiP$ZAIIDYHNAHVL4@v>aR|VKk#zw6EyPWf=M*(@wvEdg zJx{Jg6yP>8Sq~2~u=wR0u=|@OvsKzRS}B1~2rHEZ{gEY5nDghN(^mtZVf`Sa&U9bF zV`OhAJv8l2K6w<M=~8P`8GW(0RxD1xs#ne<r+oU#%?5u@;M3m!WeVgr=SNSG1vEx! zA(Gyr|Az?xfqg@(8&R)+#`1mn>^qpNS<*DgY93bxlWPO$QP<$Pa?H_hV#P;hS1X5{ zgRdTYxSi_DSWVEu&k=;L4xU4ondZ(?nPRAgUh8TWcrTNS#g<b=JpS@+EW@`fow51) zcvf$+B|Lxf53!H3s31WPw@yaw5Zu48gvjvA2?b3aMS^;l2d9?RZawOA`82R=*(8*F zWwkar%6@{eE@wwBh&7;w4<1^nOey@9XPb6AtBI^-K(F)pG|WJ2)SR*uH0L1kI7H|C zt)DAhEzLaVy)1IS=QAu#&f%QWzNivT-h!;#nuUK&d}e+29-e19WLs|wFQejew&Mt| z5RXPPts}<-&xS{}mK2?Lw%y1i6FnL^?Ybjd=q~PZPHE&Z<qJ436@|<lnEJNuXjo5S z`*(l%P71y`p&z@fDvWXTDjjnL2bbEv8(_dmGdtXCxW*zr<InZh<Pd8?@+Z^W7NS%s zNDO~d;=qj^swzJ)gW8Ft6lc!)Gpyyw--D2}c7VZ)IG<s3%vmif{@ktd`yno=eH58; zwjDuo@Qb_c2)troE+@o~pl-Bf#oLSJp*!9^2*T4EwKCb@WO2a52=#F6mOJ|9q+2D< zV<OIWu|nFPHXgg^dSf#BLioi~V0+4-wAFuYDIEnoI)t2?@Efev`mTE@*`R^9Q}(ow zA|WUJ`Cc7UK42h4Q`LF~H<sD?JFdB^m|~Fpr-(REYNm*$2J>cVh6jzMeEs^;>S<~T zg|fF}*4FDpob&uFn)z+`6}oBX-#<}>B-R6^u=iQ01XeWSO4)_4giC|O>3c4g@K}GA zC~=OV8kLaxtg}>*km>pFu0e$Cbcx}wr#fg5lmpl*QIUUszcp}h%bVFZJd4yOXP%*K zms=q@K%%5A8PT0>?UCMs--(*{K%13Z|J;WOk=GnT18I+pe5{R(8zWn9g&!P(_9dUC zBN%44jTkcCJ8XvS)Xk-BIaUmcnwEb<09R$n3u4kz2f+`43S`^FhZAxt4U(#BEU92H zQ+g&wLHrsm9(Nz^1SBH-;TwC&rPt~K-_)6!+Tkd#@yT_}&n1}hHucWH)W;o^5Ps(Y zmsfZ)qq8*q8`kl8e6@(hFn5K9y7-Z@pPem{$RA;xmN{rVgtCS|YFWUQ>iK__iEN64 z8m?oA4g^btz8hvAFq&f8hB2m~%=33@sj)B#SlvKROgW0wFiDq`oj7WtX=|xph<KP- z`hewvPM^YVc*q(#73n?!+7}5*1xX-x;BH)TnhXyM>Fr*-;g>K3G7khv$<KU?;SYXs z5c)dQ^h2@x)t|@tX53}kE0BMrK=}@A;tiW9IhY*1kNk{Ztdk7PN4S8k-4`UHff+^= z08O3^Mamzfm~M`WrPuJQR!6-qKie@owRX7}+p-_0G#cDUqnotYYUEDfJKJxT@Z%Hl zWg?FCE>Z2@#K8KHZJSXdZQ04MX|Q33f3rvr#7gq!$&Hve3+_nW1CxJB(<)q~ZTh8y zs8P5`lODg2Pr&0teSqc@u#-xBQA(X|(7VPtr*=wZjf;LFfh8*@T&!=i(phry;az*Y zx0uw~oCsJ}`pzejE+YtjB+p_zE5*ogU*RS6gkjmphLUD?M62z?s(3E+J+Zclec_XF zk|+NRR+(cr)>Jp9QY?Qg7tAH7D&*sf`5{~3hxP3FXF)*y+6h#`PorV|B7{Vys&9z; zmfSzMThE0i10hxQ26^j?JO<2Y{O*OM&P58ir=GOH)Jy>N4?LuFWuN3#?a%rPkJ$2* z&$Di1Ek3pMh4d)s4Y&s*2wGR-Dt9l{FSL^`@oRvE`rtPlsY-t<rrHpPAjMw)ppIse zIj)?@5#BLQTqX?N=cPDg7rh7MX!@G4$4~JJwLj@sf*muB2otCB^Qj0Q)l0>7Us#~J zs>pQ3f0w%zdYjr*k)VgBf5azZ$u?8~BTE`64I>w}chPpaq)!wrT@p_-(osr-r?p6D z^&;NLea{JewM~CS;_%qc%0xEkWp3ZlJoxN=4Oo|58Ic6QopN*L<Phq`F^P@rV_W7T zo*S48tB9wBYO!`7K%75RXEYWIOaah{@uwT87VVbh<4g1M1MHNB!c=zP?iGxRDq9M_ zQPrk#krpURwrf!9FGYJDrA;}@t7G-6SV?p%T};(`uibww>{X^0n_v4JlLp9lSlC{4 zbfYH|RWJzb#`hTgq*F+cC$26bZhqJ<PP07@KM_`wSaF50n2^Zz^F(nK+0lS|I7Un* zOAW)=O0n;8kTBah<I`+~K0V=I8@iwJljedyhIZ(L!ZI4&u{nc`K09Y?YK@M3V<=@4 zmRADRv|oR8m$4zUsuQXBYU>rcL={0wK?TUpit55iUS3Wz?5n;XB$Y&a-V7xY9VZJp z2}%bcOg}V?tGsH_2Ps4V(f5d44cB%~eQWV?_h?@|7d1rHCg5gn1!=I?XQfLjwWK+e z3)lGFfbIw%)e3bv>`H2%&soPD{beQaRaQL?60d*%E2t@`qq6wv%!3HZHy%7OPNY*@ zPdyibMQD<U(_grmYM=~NigjB=<?4xIeghujTApznU%1pL39DOckd4(L>CG384dT-2 z@24=`0+5ZF3ePSS{R*nS#tRvXJWl21KLt&p(jO$^?;mJy!CHal+bS#3{n93$yZJ>s zoJ4<LDQ7wpcmTUp^&_w9QSPp1C$9rtsukYL@H$j3odCOWOQ}jc&=I04e#&nOZ{n<j z;(adCI&DnWI>`Kl#jC}OeZ?<uPsZJ^!R57{v=IihwZ`V{qVM|_-LU;~>Cv5aMU+#P zr_a5nKYbo;p2n=2z5Y!vu-A((U_)1IBkO<IFvjglH;;#&*^8QS1D#Kt{8gpQ+!iAk z%2g*bK`%=qT$%Jc7)H67T`2fWuQL#N-nvY>NQa0Cx9&XU6D;(suO5}&x6xr{8ZyLy z$_!$TA$6-C+hO91_Ie`uT<QsgkPULT_CEx>;}U&igC;A$@mJlERlgkfHkEQMyV8G0 zR!(!_r1fw_wa=<SpxSF3Wa0-rxWx<wcfgm6;T?@iLQO7kUEZ55Q`3L6IMgo_DB?gf z&xLD@GGMGO><BBLwf1G*f_N6Icc$i!Sip6rf9|e?t2*s7N1TMmCU+Qs+XYv6^ZhMW zh;}kCROgal9o~C%q1A6grhWaj$3lNLFwE)IBQ-S!O-u3kj9|~Fv{iz5)8?t_-dQqk zD*INtYPRE0pM3!i8dS^3N?S;HjZZ&`!v~HFszN7O;O5)YrPWj0SE1QTqsD?O+nv<2 z+Mv(9%@SmZ#{&|+1Tt~~VZK~D9hAcg&L8k#Vck#y@%fqq9@^>@qVmaH@}++c7>x4I z-`q3IdSL8o>3f{N60idrIex1oyM){LU$YaOUcD@`Vw=u3uJZNI#eE5c#qx`|YIFJF z<Z|%F=ndoGGK(eFRfbEv%(2D%N!2+$KE9EsLecz7rDJAyze96S_2vk+2JaoWE@$D7 zChR7Hv7w1@#RZ&|{LVF=h{AuvG(Idh*O6<q$yd>Zt7HK!*hTC0d%tg%h9LPzs7)w- zQBgywIc4VS7b{AmPEFD)&{bsY8I+Kic{72Zt2#-U;4klX1wTdp-hCNs^@XU5c9;2f z?{D)R<3oSWXNPV;=OxhUQ(!;DEI+t{{B1}}ulNt1J6;k3OyPTn)u4ZmXx8MsK}mhe z35QjZj+uGR1}mxf-^45Yt5hhNTnZh%h{*`a1mU_Q?EIf@X_sUTzW7H~#c`xPZ9W=y z{ABDCpW9geEvHAnx|{NG3h&fgxztLhp4_H5tqkc+t9kG6Affv!yIahCx_p*kowznV zWB0i9_Hf-$rvT|r%P)U}>eb7*4X4faIwRo_adwv}h?8ty=}{`!K9FGwCAP|DM3d$9 zC>USkm5Wf0{uBDMdEpcqs|4VHizPr#v<`>cVBDQ1Lzz9X;k?saY?CyO-(hU_O17>5 zW2r<&h*-6F0h_O49~@+dmyF|LQ;J0&Z<>fMLK3iaGgaa;#<YK-BPJ7sVv~NWi6aT& zt^3SDud5tdV+2{_a6w-nNpXV~3aX~sXQLFeGTr8D@hy@D#ZPwqv)5<+l;WD|BNnzR z9-Oq9Sa|BSj~Uao?#2zXQ1z{-RfdAx+v0t;cn<j8=bk&mYbWMtNN8AfuKI_w4-J`= zp08-|WsyiJE3JQuQOY|Ca1TnUadX&(d`l*C<%&`2e!m~bl$Em_BVm-`zhA8(d=ABp z-rF#zuHum3r;RNReI}npUE)QG$%32x>6nv=n9P*HShIS-S`D8XTA<I>_0XhZYs5fI zHkQxIv|J*rzmZ`({wYY7Is6<em)5-U=hwRNKukukDM){>(r+iMmg#{wr>^09e5zQ= zT+BzyO@{Jc)wBm{85j|-8zh;rGp?IzuIYm3?HCJ&Bm+reXmet_xZJi?y-Ff1mNXM$ zm|>BbDtEYl?Afg*$OWWLxy7~TAl3EnLJFCG*X5FEjE;FRj>z77Ks9+z7ql3>!mi#5 zEPFR-y8eHbseJM@5C?ul_6<!CU9)a^urGHbXuu$tGubkCbl>FaBHJTB8FIf(-1!r) z5jrxPe87aX+M@<<e6^9Kouorbg{EkQo^T5q)~TtN*ZtR%OWyWR%h&=!OY7z$cw4FF z3J}hnC>g=`3%r9}v%EvsCPjN1tji>h&uY4{$jyJV8{ZI#Ud_CzYnR5QNE}ZIFY2k+ zslw3n60Wnk)P(|xr7C;78z==!8r3b#In^RD(lVE@O8pTIEmg;|EO@L1?^FE!xJPgc zUr&^&BXSAinj5RvIY3s8lU>&=Iv!M)pUdhbd8YBLKAbw=<HWNCDu?R6Mm`$gB<sg~ z;WB?Pg?^U#RsU+-dAcUCp{H$xv|A#aqbvO~qi_3c?pCe1-bXfDtI|n%U~~f-w?4G1 zx^#3fGMm;AKo|>gt9L48_1yHkMB>~77De}yXHgh=qK8Ct#`jVO3r8`ZY6-J(qo$2A zRs9?fF0A}b&9zNjfl!8{j(2R!4I7pabdG;7gIeWCjV8g(2cB{I(fDyl_9c{%Lgin1 zvC9$W**b2qpg$5w__3Y@&P<CEKhLFBjbGOouA7k7tOwmlAM{Hsk&VjkV=?U5l$u(J zYogjyY{7&Hl}JQT^R66VPV&HTTXW#(QE63!^Rtr<<&nhOr5PLIiY%XnY<1uGDpG&n z?y=;l%Iy02Kv6sw!Hc>;>8lSkv5aUs44hV2tcshB;WWqna%c*I&Hbg$I%oLR&QHKx z8vIFl(n|Qka3SPg{1(L+SyEzojH?j!Gbl8cK-7GX9c1`QA-`08ME#1igNGg1yKJK5 z82=jn;FFu(Q#sQd;&doj8h(8|wg`VwUa<s}0m1I&I>Pjn-w*yBIcD1#L~pa(4H+_S zMEi#&j}|1;qN+V|%2zS4D3tTYw^jw)I0)5QUhrmioZa8<*g*<{CcKInH=Yn+X1|PG zzxY5dFlEH#mPRpBsng>hE@>Nng8j*k0bONgVKzO?MP7jNL%Yxh&ULmhS`&Y@r%DbM zKI;mX%rUqLC+3-Ke;V!aLA+_=3N*cssxdR3<N7pm`)pJs%~%#to1a4^4bpiU(NupK zirkda8MqLO!B#jo@r)FTXcqmtzfDv~zwlHMZ->2~_8Ij3^SUnq-KUb}H3!G~LN{`m z2dSs6MwwDNY-eJP@4dFfwlsf@<0(6`qD!TIfeMB~znF<t$j>3!6x$)0H&&NuWZwoD zzy-JVDlmkcD~!c%5d3_5JP#H^mJdK&RYOWXmlV%^W;2@;5(i7K5h$NTNW}VeFBftI zO$IOKd<LDmnn@j|qWr@YQfW<*4_t@4o*K>Ky)~3nGnEJ+%lt`=NdJE;i&c?z--<Q6 zhNZFIYbKI{7d#=`W!@cp$UMr%sNC8K#c}0PR#Xm1p_VlG4l>i2QL8IO^^hJ~8&f0s zEfj(;TaWs{ysRf5{bXpE!t1P8ifumFonsJJJc_BZ3h9fAj@03b4i))@S6|~`6}=!I z&N?HyBWz^B!aRO83@v|I1@a6(iNP*`$GH&b)K*!M9)!i)DV&0gQ+g>`$e5TETqci; zSR82Otp7q^e(3DWQsbu;w%mg=Q^kP5IxpUd=LpXA3Af|6&*Uj7xuddPBNj=6W1`A7 z59gppUF}|dGb=PqYny}hm*iT7BrNWNbl&?#_U6ZAdLNK*+{Ayl$MuAWHx^!i_s;gl z&;8>2&CG9&6d0%NAXZo)W_3@8G~b}~A7Q-Tb!;z<HTFMb+Gk=<xw7E$$on`eQ|kp# z#U&*z*yUYYwv2ZcwO$Z>cWu&tet5vLW!4oQkf{GK%O9R6KAwhUP)Y--;D%U-PTtzF z@fwPl;8_@)ukU{cZ*OIZR}FRzfLQA7CEBSUzLK!6bV(tRvFDX_7Co^1e*zT_>haQs zjp-H&N=h{$zd4>E9-`8AlMRk*hrASkR_6cPB61kkaJH;I{FvYf3jk^lavNdyRh|js z>k0ZoX-quukc$U+J`&9*K!O<M{slIg6mzS4xRw-u7s-DoXxYWI&V0$OkS|205@&ks zjRfX_LgyusjDnLzx0}GMt(JSzNpuQ&f&?e_9Y%~ZVRmUOPX7=q8-5$ap<0zbUZ?5} zGDIQ^H-N;QMSl>jFv44G3VrG(g)3=bc`YU_{1#~<z)_h+Q||@2G!09XWjfP?g21?J zgvdC4D5QVs^rR;RuC4C%9u52d{c5N!b+LOAr=0+oV}jFVpPt9|AgU8Z)Ay-&)XAVk zy;9C^<FwK}J3>bmUO1|xOl3K;{I5y{o+_-ye#NUe2)e-=PSYp5Nyg8Dv`YM6bX=N^ ze)YA=q~Nkv;NXu=+4j$}femy^#$+HG9%i-4{oH?^i;WXlK7ovo1%Z2#{ZMN#X`SP> znwG9;!uysqMH@TqfYFVJ!>W<trk<e6*{zqIZyaX%c@Y^gkTMId_@iRjIWw%Mu^pX$ zjKsO=A6?JwvXAm|*B%TzJ^SOxWmlzd>s!`R1@YLsM$c?Tr!vled`bLEPZC##&6k;r zTmXM3_T-#?dpDkk&x;&GNP&Wr2Bm-Q;QH%J%m`p};^uz#Wo~PDhYW>%wby^t9L`cW zWc+K6R$+^vX`)=Ssw9}qE~FB1<{K+5s|VpG&!VfE(CF(z9zHBqx2d@wFk+e9re`dn zyx7p@o7k1n5{qS2S#H<_{-L}8W>A)>cP@XY7U4u0P*@2-aYfgq!C-C7^ztTzJ(1_Z zQv6KTqV^WuKToc6j%A82<B|GOIch5eLsNnQII*uXuchOF*62;a#DP-FG3Kb@Rz}F? ztsG8)kmRSq93X3HDWW1_7$aX4@%J%>X8`oLR*Oy7y;Y)7mV5WJ*ZMV=yr(>|GCO}E zJ=cLe9xk+h#Muz5J2ts{=PLmT;{GrgM7As<sm}0`*-%yVP26QLBLdRLvZ*^8>^?Cv z2sEd}7t?`guY8W8;{FyyMF`r2*4#Q|NOmsDIc2njP1xOj(t<S*2qA<;_>$)ZmWX_> zwx=15g;cAngYgg;LX!pXUv2omXQ6+lzZHnT@r!}HV`Jq~sx;??@!v&v*SkWpV~#}^ z$GvRYwAlG+dH9k<r_2xXtyShPI5;wU<Jb|E6rw%It)+S4Gd@YDA_V<vhn3U<^+RSW zV`KYy&2HJW#USazM$r&WOBCu~6xs7r+b=hwHoX?Uu@(rwq6?G#ifm;O*UEpP{{2{m z!UJ#L)0BCttLFGsotvS~OaJr`X7YeEPD0z=b>=7&jYF@N;^eYG_haJ&`mKNhM#53( z_nm^abtB<nDktw{XJ-MIeGf6g#0&<xPBFhjTfdiG?2aAqNEmKAX&67}A_5;Cv1T*1 z+jUc{tKSXWms6B>0|zLd9D08k`U{LJjF7Df;Y7x>nuhg$vin_K*PRB1<)$I^Nej=e zyAe^<xX#vii*{dn{~&RqHIN3yNnVMkRGsZmNWG>c)O!PSg%kR)GG>QlYQwPP+{!4S z<Jt<nfjoe7!*{kpTUkhL70aR8-mR)D!VeaXo$I5Q$t2|-0@!i>uEKxKz6o2M2L0Hj zpW&EX1CIIhs6bjpA0@cdNYH<ll#Vd0Qvm-2X7j40F-<+x%9U8Z;o6@#hD=OoyH3^z z80001uXHb?$22(RSH!o?{Pw`f3M4in`1n2$zhm|kEAVmRKT&#Gv`ur2PFvg)Y!<>0 zoQGn`T)!Qq<r&u^O;UfXoTPu^NM~F=b6U9I-~?%vGtpCf4II+9ofRU8xspL_Qv!{7 zQ4CI0zidJYzxQA~wT{-Uf~t<II}%E`C=!)tv;TNnd<UAX>JNZn4wPchlT_}5E3DWa ziZbdj=>Tu-DSze?thQPw*!Nb-LiKUQXw?69u=#L4MgpIX(XM}<PhwC@coo*5x`juJ zAixx+Gx%~tiuGZ<SRbi-)L)f>&BhM?-C=2DTv-`eBuZ>@*MC|-8=<a3Io6%*s0u`b zpATNe(Wu2(o_zkOETshfD3>^nGyvqG+4CfW-JN!mu0_#OxpxHB(3&HOTZIh*45fS( z{_q6HT|P`GVOxLAO};aa0$=<2_#AY2ahd+%`ju;7cX3K^1*JzWmO1O!{8L;;_jjYU zmCnKOGr=Ax)htyfmZy96uz3&cmBq@F@5Ctk*nbsE&aWS?YvUkA9*{w)BS~oRMNu9r zjGsg2&?#09(UADF%rrxe^%;nw92>~rq%mUTq78${3v_?u_iY{OR`i4x_%xB&3N}8A z8b>ctUxtVS3<)J;zA3%u#_QO&dC^KeuD@m(u{I*zn}vkgg#-F=#4EdqqD>PLPn(3~ z7@4`>I0?a~8&Xm@UZd!kVH*>zztwAY<NXXJg+sVbwt4KcD2(#A6pz*Vdwu3KYAbMU zASGq^9oK&duYNv4Botui4Py42EaAfCKYEfo&!|$v)%KH|?vpOP7$K(RtiKXy9j70l zKG2({8xRval^IJ&#}XT*tmFevB6Vk8`d*Cd44V40PP0Vo*DS`lH$Vb|P~?FKjI#uL zW*Mah;)pyjr0`%lXmqm}wvMs}EfZC7Vf%*JZg_uP(8wy5M?<6N*N3nXbRavVY0UTP zrW40H?bPqcO6rbj36;<R4!CPcy}FPp5tY0LS+q;m%YG1!k)!^8eT$Yp^=uN-k6S{x z&Ga}uk5sHnD#f(84J%Lx8Bb}a9l!{CmKDB}@uU=OgELMNso=}<?ZV4aQILqXf4DS% z$-;lKtbXa>H3Y8`XaHEZQObQ|xLLfDQ))<m8sScO%vkrb-}b}@JCh`z%9vyXb@*28 zUYLRYaYYh{KJAZeuOWn<)9v-3z*zU`>EB0znd}5jooPc?aHvcM#0UO1d)t+WB(^tS zP3^{U2&r*nW^M1;>t#3m-L@P>QSk2W;s}48?fiKzA}P{SDlgpU39JmW3lPl(lEEqe z+eZ01wdLzRrX{y3y=#dkWn^!;!;l;?cM;zGtnAcEGljKat)#1O2t(3T{$#!m1$JT! z;r=*jc9vb&rU)i>DwTX>|IY09C>F$GfgZ*SfzNBl#2h_3Il~Y-I7|q^^oxWP1V4Wy zTpbn7h%RUJfcjU406XzcEQG5{Z?C6t!20Bx(lM<B@yW!Nlw3hym1X60wQ+y&4g#rL z;J=@Z`0V5>6_XH#(0IU1wpb)Jk|u4j{L!I*3u8n#!W(uvQ*0jJL2;fJtnNNXsuW0G zh3S=HdA@*&$2O^a6VhUu1L7}PVhMliiSoLRH;Cij5d?ea!nd`>uzeOhLdE{GhXFH( zk)GvK2f$FEc;*ne4O8YR;8kS64jnT*N@myfu??AI_OFvS!ysy9CStDhIMzVkaN11z z@&t78%Fr=0cy#hlS}~T5lC2CQ^*(yQtnt~`|6i9UD0@>Pc|E<5f*3Bj)dPRb*R`T( z6w1on7X_foViw{DO+#GRr&_DvP|OxfVkoD}n1(q(kUrfW)=cr`c{^>h%5oRKZ~}&| zZ(cC<^%gE*dGePVZVAm^j7;q--o0J5^1WtqYE<L>ON{(Yp5y<?hRBFAOpBp|g?l*A zM>d*e;_+b-f@DWdn}Dq)(^P+?C1N#;X9F>KOS?XU$NRvb>qdB7;=A=;i6CXFD^mq# z)MZ)W-Qnmj((@t@tz6{S>(yV-r~B{nA(L6IN%-#r!Bx88#8!%TZsLz5^wjvQavDNN zwn%PcfKp=*o0?(kUgbkVDIF8k&X}|(0oM;%iabT7T+Jub(aS`irp14|loo7H{z!KL z5G-p9f_ilsUj698tmr8L2q?!{wW>ZKe_}XbKLXnTsn#;ldhuowaXKc~RxIAw(mcL@ zwv9s2#uHbT)fB*>4FdmHsN#*vbjp6w73Kf*!s>L!4$OGQNl}gdD<dN9%FsaZcRjBq zo^2Z?gtIu~qFz{XswsboG5oEy2L8;$J0xPCe<nP+s0O^D<=)7%pI(1$^r+X<IZ(M^ z$R}}AbpmGV5jTMOZWt4rt35xy9sJ`D#&ODrl%oWX&_<*9f0;CPqJ~Lmdz^*7iDuw` zA50R>34LXyutSet0lPrb?kvz==tPRI@y{R%!{?c5YcRo^U_O7gpS3VOXy1VPOE`V1 z^>mTdWg^S!qnE`RFmtl7eOAGEllWi~18~V}Ihdwa(a$)Y|0}{Wt-xDU@7N)TaZ#t0 zTT0BrZc&nR(e71myUVcpzDzq#M$)QF1?D)=;{qmvgMbyA&x*7ph3H*T|I!ZAOSa8( zM|f9GjX>ft+v$Hl(X60lrfc7r)x)nNeTrm!z=`s~Y5Cmue1F>Frz_&$$^kk;R}R2t zF_Dqju}(9j(i>Z}OcrK~cr(S!b;Vo0OB^br!d_OooGjcn7!FNitEg!9(Ogr-SRtQX zMEaV9WiX2+!AAZngfSSe<6GiX;gV8)H(NHcd#$ak6y<+5s%)k70MgOG$nV1EAXXML zPl{3qd(Macbl7d}BHsT9hwv-FlY-h^RWUfU#&-ZDTvoc8R<Gqhi@cIXBbV<LFf+y> z{-)xU?XBn()*gyAe5A8-S=@LQ@?4bq62u{7q*<qh7zsJ{?QUV#j@}5m8!75H(z&xv z4{bQ9&evSd)W<C4BQ}{`*ZMEz_FE0gG7^}brLSg<cL@vD_h@e`Z4=4@6!_|Ked?A+ zCU6=5(z@)hY_%qb#@dwoiLOyVAGla+hmKGpcW9|m0ZpA=x~~p?ag*t=3gZZuMpOtU z6)_+(Gc+;^FHB`_XLM*XATc*EH942Dl?fCDF*r0bIF}Ix11Eos_61NJ+R_CI2X}WL z+}+*Xo!~Y&48h$c1cyM7;O@cQ-Q6962lrr)bFSpv@BgdbE2>~t+v?T3_Z}!oRn!?p z%|WI>DUgE;BP$aNA3$7DOox>Xz{0}L#KOV`Pf4j^?P3S~j~$*;3+Uu*4RYZ7M})W& z(8T54CSl_89;kl^asbG=+5uSE0jykntlWGoEC4nZ7T*5=SwN=01cIFS01_r{*5&|3 zCV(8s0q6`*DGqY<bh5Uza(U<Z&qn}_87+X7mzSI2?{t8uJ<!S8%)|kpXyRf8w0~zb zGqD4xgUqafE}s8Wf=0l~#l?}2nc3aloyo-BnF-`%DMZTvaJP1Uu>z<8oq<knKy$!f zk^xF4_P~EjV}hpyXjoZ0|I48cvT$)XaRLI~4R+RMKnLgd6jujxpcCMo9iT3&08n-W zI{YhG;a>p^fPW7Mz{<q>-*W%X{;QC+!{5m!W@aFJM-vB6YX?h!g|!_Jpe&`p<l^DN z05EYd|0~eM&KdN7o^Rr2Vr^$)`X2Ci>m~pxQB{D+yTX6#b2f9bc64!Oa<;bnOC$4N zW!}du>0mAnvbP61xH!ZA)t`j56VU8^?w-v5K3rP|kh_ETe~^W>gSo|DGR$2anKd1( zKe+;BCH@`rZi4?~vjn;TI9XU&xVd-%z)t|6hnW@gUj!O|o{qr3oveSE-!=GpJAxbm z7Vk2EzSb7N_doF7&L(a^fQyqW(AWE)j{imQtgHZYYcm&sDbUi|0sc?*cQer9U-<p} zovb|odMxkj#|mKi>*v3p4Bj`)9OPi<`6vAEBW9LXlvUDIrT@3&|2oCQKpp^ZMoxAB zBO50xfR&Yhofp8($pY~G-#Y)Dz<<>LZB;R`{&#mQe=5p4SbzY${}S;&z5fVt`}bzh z{QKI_0{)jl3G}|tKmg63_19<NWHEdH#rpsG68xR=|8MvIs`CH3{{OclDOWqYzx_1- z3i$u=o7h|1dHy@%eV<)j-tUGY=>3K`{NGS*;J+?^v>3?F{Qvr7T}<9@h^T|5-G9eu z?JQ;O0W?>!b}_U1*Ao5b6yA&5Svvq#K+e{GJvabHRu-23<9okzX14E-iu3zf{p|w2 zU#b74lyooyng4b7*f_ZWCQeQ!p71R13&zID3Gilpzoh0skH2>tz|7<Ta(Pbyyo>V% zSb&^=;Qu;NE=~Zm=wGIPAua&3*dN3VU>5&_cmT{2e-JN#S@OS#n+3ou^#`%Oujn7d z24I%?gV+JgvVYJ!yZj&Y&aUtWy|XL+LGSEJf6zO-@_!M}JG;ss^v<XD2fg#D|3Mr8 zW{p4Son7+}dS}=AgWmac{-AfhkN-uy@12={{6X)Lrhm|Tq}hKF=ey4gWcPl!|FLjz z{AIDX|C9gMsWY4Z1HMlW_z(Cl$KntC3t9iE&;A#5`xDOjmmlQn^pE`a5X*nScYdos z-Mml0%G1#b=<tt-cboM;;QLr?{sG^$+x`Q-3$*(Od{=M(2eQ5^`%{_oJ=NiTssG`B zf0qjS)69D^=zrYrVjTat-y3m!e=tD*nAQ8&GV`bZLiTrUpIkvMKyy>Oe?2>Y0^eQ# z7z*pVM(00`{e^&T{}=-2d${xav;1G~_tu^5Oq{L$QR2OwKLqa&8?%d*6Yw7=@vhy) z9rTZc_ZqJMfbWxY`v-g%@BWWte$V!Q_y>G1@A;>j_f#*S)4yu}&ud`j>g4qPP5JkG z{r*(^2mk%G3<P=r&ES_8KxX_QHZ>t_4?jc++!^;K1ZOGtv{Psqy_cQZU4J9PB+*uV z588CP6HOZKL0#LGq`4JYA$jpWX|96_Z%I^bee!uWidUQ7YlUB$!XB8+KM}2e?I(gG zWYiGZ_j&o`qZMci(G1opN16S}l?PcR7vsUbPuiolzjSphY++Azzluv9;kk5%F<LW9 zKd@+yGRHJy9+wQ-g^>uB4*kLdW$yNF7Cme7jYKY<9^Us?G<$)!?iO3j<Gj~;xdxka z7aj$kE-n$oE&A9rmABYovK-ETqIYp&tXx=Rp#_oQLZeVSipeLAYSPYSfzr{*?NQt# zqd@Uel-=pDSToffO0nT1JN2v%T=eW(?xL9&R--(4XVs2_7i_P{in;Gj!NLQ!E~hGN z;i<g|cElmKG{VpwhvA3Gi(E^1xdZ*Yelyf{32*))@k?x`IWBtL-X<P@NT(g(+z*$& zlata8u$g){8Xr%EG^Rcf4wIXVuv(F3@k1M*W@--&RHDDx3V{)nL{Edu+l*Cj%5{1n zzx66*o|pv-uNVsKKZ+oNZ!Lb(*mDh8GB4EwPRFF#@X2*MK#s~keIaL4&;6nI^`t*T z%oJUCtXvT+2ozGoT~%y<Vv?U6kxPx=6mEG_bgx3hH&HiTGV>YX$h=C-Ji%vLwsh(& zRL0Q#vm#1m*(8u$LgJh?ql{fUF|R9vX>97cQ;rFnYq4^UNFYT6PjUDcS-nt*6D|#2 zxl+&|R%SBdPB3}8P@}F*_nlSla6NsB=Bs<v+vP6&a~(z8&)%tj9sO->B_{C#8m$@q zbEW-#!tC~*CU!Jrs5w#LD?1}p=k5~4FqOvpQiP5ePYZR=;_Zb_(=D{|USnQYBFC74 zJC&WGxF1TcP7AaOg05C2G4nw)LlP6qIW65PbCHHczPOD|Bv4&lbMQYIizmD^>Bd)y z*~<_7?sjDg+;M_`z4lc3z~_fyT1k)>w#S*iPGgyQw3K4!x#4~*#ivONLKn~#_`<c6 z#wou#msSflOYilJCf%OH0!G{A@AR=e@eAK#73Q#6E*Q2LQb`WCtk!(s3)I41w)R_d zx|#t}{de9zC|%ujB6}Y*98gGjbzI<ZkgUFan9_$ZKZn$Rug80*h<Dj|Ec$pa77B>z zPLN9rkV$QU%6)Hsuq*51r!najT_|7>{9qw8Bh)MVB!S<$Evkc&o|y~Gw7&&Qqzt~` z74v`vkNj2}pwUMu4r!Ud$c5}%p6N_`rf|H#NF<#iBU-!Wt&LIx2y*LQ`IdZNi!-1< z@dAe8YQgA#rH;ViL)+IgcF=9^c5QJKVp1%B)soO<tV-^#Or6tSkxzE4uR=V_ZEDEz z({Q~nxL8m=sb$5AFDHErB=j>$r{d<w4?cj3I$E3Q?1y0xY@r`5)sn(7+h^}*|1pX; z$Ya}&VD-xg>J-|p73)CM0XA;aByF!gsPRszYY=IFu9NQ~r${fAVm!;7Z_3&XYa!L< zMf^#T?Wge=r&Fau>@{B=?$6r%q2F5-9pipmuV&fki;Bi@#aj^=q!zqJLMq2qzOYjH zC3h7<P)qwM7)cE&Fnh2ZiETtYUO;e7Sb90!Q>aHgTQodG0U-t%ze>ZhAuvs$DnB&z z4L@3cNM4*|=`2P}qY(PZxp3%jY!7X5_G#Apj}sZJADpU_N`Bq+3+a}fjco`|#*Fjq zsOW;(AI3qG+XE$3Zl=?UKXbJZ#D9I{Ep!vKlI$|lp&9Uu3sZVXfuZ5WFFL?6=UfoT z-O%AEg=*!*AdS61)DcgI{vk;$cNbIE(TJ*lzcgo{lY@!dl1yAznf|<NN7pnrM!@%x zu%1zf&~cdiE~!bO<*9CPNjGy)+^=@f?)LGv{0n-kc`9rEI3IK1Z-6B!1Lh!n`<icb z4zlV5{RIp!yOuYgBS|&dZsA0_vc6#liTeX7KM6RP=O_B@{jy7>8M(S7f6)^tXt;fU zw|g6Ar>Xgs@4>o6DyXy^KP(pLl^u1AKD+n<IFt2a)pRKYtg^*7+*8^~E}uA5L@~a) zTbXwH%RI7MOZtWc)$5@Y*#GjnPg28rpdgxkhR~DD=J3V{?Q`@}W7d8=LS}?(4J<Y> zl7-r@Pqep6ECpIzQMWY(9O!*YZ!Cg;Wy)9(XK^Le%)KZ2)lOBqx5^+o4d>2CM$b`8 zu~8s2)103oNL~pPk*CuJZ<CCua)C4&W|V9HI*4FOG?5pccdct4dr@K)o*Y*b8QUl1 zp>$f3yWzMS>kLtt(JZYHu&i8QC3KxN3yQv(J;^T4!0-C7BFBFrN3U-WKS4r&D2MmN zg*(z?i-!@jU?0d!2Cak$FqW9<)@#2299nU?dyAr&2?%afy7{J$p{RTiFW7{gq5I<F zEV}sZmxcTQ{Y?ccX<$WkQKGuTV}AdxA9=LD5gJ{X0a0eXzV!tu)}!3G_4koaqbc@s z0Qp*gMSJ#VPdfESFl67m2y1D7EiQMHMlhUh3j3NcHvv>HT~z`@h4}*(rDL^EX?LWn zblk(P3d(I0f~NlCerL}{>vC`};z6>)0-ToxPzV}`Ud}~zr@pQV#>t9H0i_*e+?nzn zvj`Ap_Xn+4Kf~5}Je2{F-d9&~`99fh#<aveOcG&)gzP!X`$_T?NqCrld53VRZ2$&# z|C+SqnRVyh3<;dpty#6Vh{S>(4Wx#EF|%rzGPYmw!IXi|o)Y?sb!h6mGD{b#(QWe? zP8K)PMTXD%oSflF<h#pmSbCu!C+ldj4zT5asuvg%*7-R!r&cK9>pU^=P~~x(APtyP zynb6xLNIh;)<zFp@|^5{^zZD$ErPu+=V(%u_oiJI9RCoiEzxE!)C$4}9<S)8J1!^T zTZb?LQAAV{6y8i@eai319ihm$I_0C06-ZQcMmN1okqfhQ!^~#xecu94X(@3OmgFsz z*-+Li19!FnG)i-InsHT(b-=fFC;zOdD_2CdvS!aH4O=^Gp%&_Yts0rrS;P(A=^)0h zw2z%nuGR2euJo98b>_D}IqHv^yh_XzoWm2bA2j5k_4uI5-6rs#L-(VEwIh@sA{DXd zT9AGyL0O-lDOg-vNX;=92_xiv82buBoftDR87IwNL)sBLb}_j13es=KNrx)m_^QU7 z>co+Ma(IHR_`5iN8GHUi`l6J(|Ij&*lRC!W%D+yxOJ$tcaR@ACaj~J$sY-ZACC(&d z7-d2sk(v>LpdWtH3=6F^a_yd7+P6Rh4DWzCZ6znxp^JRTPzXGBCVPQ8n=!o!GGHTM zP3ob;T~S#hu1dmLE@f1epr!72cd$1M+*4q?#zsfu4O^vu7G8X%lJn+F%+nQ$e+Q*l z@QPK`)hY$yBE$BzP}Y7p{x#@G{@V(fOvYpt@*GMwps9>)LJYN7bDW!6u9~Ldyp?D$ zefp}xj8#Q;J#PD+$u3)U4$Nj)iqa;lSfvi0^{my)lx?`OT03Avk=|auF{F85(1L+% zjhWpqudj-K|LHE7JC~WeyFzdj#CV`a8SrI)%OROiPOO1Y#9<%ojZ2i}sK=@cQ%#EZ zN0!C{qIVokE>+3}#b#)nKi}w$RVV)a+ik4kn@!gNOmP<C62ULZI4N)(t&q2s&(b?X zZjC|E!p7=+TPJ*SKu5KKv4&xk2mc-3^s*08*`w=!0w3@79EQF%RNM@1fXAG`V$N=L zY%c`!98>)6BqsyHP6?vV+Y%uVU0Q5dgyba0MrDm6RHByz)gh|56G+zc7Tr!#D7A*H z2;{yLzkMdN(Sd5!afWzNbi!XcmaMA#l`*gIOm;~6i_QX<KAjXyQ#2xeas(WaL6{xA zYuAH+JNc4}oS^f~g!KB0;OAZPA&jRNgyE!N*8-eK)7&QJ#7*hW+BI^3jLN-!iN3Mv z_U=5zos(b(?YM9pb0PjcZ;U`X2t!O0_4s6&yOJrJvt$=ntYKG87LZz7z-vN=t3`^j zOGV^?#%j4=bW;8)#WqPWIqX*yBS4q6EiAf!s%>3H@4PbYr<4gqi@KZ0OrG^ogZsgZ zC;5wc+8cP!=y@0_rSr(9U%Ea7@G;_H)_^AFd<C9w@5+R&C0}?NV{OelG<$DXI%^>l zR-}e+Ajhu!cfYgAKF{HDhjhz~))$M`8#%PLoVAXVf-zYz0psSg7)If<TLXT^>l18$ zXlY+{3Stu<#QSX!;$nlXEA_d1I_gW+H_yNiQpYJF8;-qoY{Zz&iG9AZbQ^UzV&aoR zp2BI$M#ErGZ5-dwpZRu@s!b&ivb79CSQ}=vE*?!8g2}?=K~gN{rg0|tEx+*I#<Dgn zIHV27%54*9ybpTE`PSfJQ|n(h3>blba*a!-_(`K?f%C#x)mhJDR>Sws^ym}0{$G9% z7}YzcXAY>>;A9*UF_^d%ds>54UrvuXy*5+UT}iRyJzJs{WEE^gQspZ8F0B?1v1dux z4p|vT>t{K+nhR}S^50uGixL=hoJC;4gQSe6Q_XB|mD1-TA4nXGbAP)nV$IWkvZW=h zrY8KPAU{RodYtxtJ%@cRJJ_jg(3f(%)%>MRgwPpacLq=C0i|bIH-~x}YQyDMfG&<O zhqXqQkYH$QCth>ziPEx0N%%@aJ4NZxpgk}3U77g<rXp&pXNCVT=G=kbweF|((~=bu zYuVh;K#IaF@llO*I*;JeeuJlf(t~8$8xrd*FfbPm-SlLw4|4|gdl7+JvmfGDl%Em< z11fLZXe~cjzc#~PQ8I$dX%1xTS^Ut@;htk=!VfhI$Bqny)r9=aaBszZ&ZC&iF?mb~ z=XJ=-w>wt5ZS!jH<aV2`auY+2B$SX1YZ~Bj)w*kR-T(A(6Ph2U9#7FL=V{NrYl z6J=UWgxTBTL{<FKx6FK`3wCJn&TnbgsrHDp3WB5cC2KnFwl&H^B@fhi8qldYOK(Wc zkb->1WyHLy?QOL*K72mR95J1CJZ5uHtL{7VdMX$0g)r?L_GP}|=a=mT8yvXejaomi zbOrBEqWT}yW~?Y^Bl*04l+@)E);$Sr3^V(_4ki%QgT)OH64TCTO!-a8>q3ZP{Z?Ut ziVcF6Q^EG55%S~Rq3SKzaO>VNd?SMmhU%bg57*&5AP}^IP?`xcQ9@m+DWQyJh1ywg zgJxZ`bQ3-Z;NYs|4wSiz$37u_y{=cfdFi&v-BIQsDsIPI?l4_{f7{D%js|ndk-GA{ z+OOTay`(z#zIIpDqu2c+myr9Z37)=rTLj^J*WQ6)(?-!j(n1!|9-&xGny5+>vZC%I zaurWc+JjOkPI2B_hCJ#QJ_3Wjd@<6}ejFv?06DBL=Lgh_qD*(TUETsJLp|Sw_b8Z6 zb9X7t)anAmwjJ7kNFnKhcdycNcrh_~zL2abp|~1pWE`ilHXxEvozX!7^OX##id<!V zZXZMF-xgR(>d6rJ5WwQhanxZhD$07eDmC42mB}O*pZtlYF0M`lrDA&p21v3|ruE1| zJy<Y5pzXdOq~7X!dk01L-fWOCh2SEd@{A5rH|WCEb&nf=nNV7qBl)%Z$C>UP%4^S+ zooHrzg<XN&<wlMuWrXG4F~|a@fM?cl2jF%>4bKM^+h)6YVO>!4%yweg(|(u`UZMAl z``HK`N>Jamu`smFTAgC2FpfeaaH53$d$btL1Hkkt_zTNj2sPBYC@~dzx+Q-3H%%#I zIe+wykf<Yn=RkM}mhd(y(YN7mq;M!eH6O{M9v_#NL`<f3Ox!~>nI*nkGZII`0b^Y- zM@D`gc{Y)hL|)?{>ns$|J033gh2jq2rd(=CJqWO6W|M8Oji9b5a)&S#7!ylEzw;U7 z|F{#6P}ynMCFQ+T%7AtEeZPPg9)p@eDA?|VFi-b?(<hN1#@G?KnBtK?&KQun@K$`T zH1Q5=^w<VVydRpz_V&GRjA{wLyf3$1Mw?z2&27q>WchAr+;^%vc~T}8mm}Kpf;d!* zi`)6RYwjfI7`thQG)4D49f9u%KEp_z4>?U28}7Jl<gFuoKBH4@TpKxy95RnT3g&E` zF8ySGLq15x6xiR)U8cEJL{ynF^ysB|lm-QE521bx6=_V_aw1f~Y3!o@O~O9PXIvo4 zEgtKqLvOU7(xFB!{Zmw{&&A-2#D+OiM;$5L0!zRSU7+hG)T-Bw=}(*=K`B27PRg7< zPM;RmD1G^n)j)YYjb{n_;c5t9Q-{iG{4-a7+>&y~!S(O0IqeCyYQq)Whd3}~FX^h& zXMnX*_RK`t%ZsN)yOH`E*|N|Rlcn(;z8IJE0sPC*iC7Zx^N_jDSzJBlZA`O{r0<97 z@28=m`#^2<R-?l#J3G}946YYwYfy1WV1krDZ5%%PT<Wtf#OwNw5+(MADzu^d1nzo& zaAdD{I+bKa6ko2bAOI!eh~P4fP^`GRQP!s*2|mkjekHxiLcYY>)}sIrd*;<`U*7~k zm}URHT<d3lY74KH$5`Osxa-s^Q+?u`yb`hUtXs5KUdjY%@Y-#FlPf^lfMrEH2I%!k zx6qTpDz#e+V_yv%(c2978bI!620#~ood<t>DQZn-I5eLQ*T3%M0!62sR?RJS9X8`j z_V9d=p4UU2!9cdCEAkWx;MUR0MnsJSgE=xs*QVxbl@l#~lD?H=K1ZPN6DNuxt=sX< zM%oR4RFtnp5N*`uyUWJw=thc<2l---RZ6MmZ16>@M`0&6s#vMRU{CC?xHZ3jq-o|^ z*Mjks;jWz5aTyrif4z_$>uoDf40c5crAt#2=-#~AX&^i2V}dyGn@D|trK)%eTdvoD z`}#qFK#8|j+E0+)WTM?9hxzwnSSw8({2P2H#K`QM6K|<i)8x=T(N3O2`wS(5yr00@ zs7K0<tEY()`K78E4$qXsBSo@*o>5^?PeseCdsu{~Ubmw8!Rd)=N9yZ_MO_5URJ}Xj z`a1b2GL^xhVhevdT_acg?emVIV$Y1{leBsBtpZ^Y7ikS8vHXVPRy;%6u7hJYHnD=A zwgkP8^N6{&G*@MfCo7C;877Pl2b8>YK@EA|8Ta%7`#hr)HY#d72blwZ(u8QT-1Ra# z0d&$f2^K$-A6Tq}{5;s`8YoD&aEd?A-PGf{?F2iR^f{zQo7q08XQXq0;G5)D8>`DX zHl{d^n*ls~q~iPqy&>2A(&W8WW`751ow~p5mV!o8Ax_Y5HqRhND_9Je(zz<8TFB1^ zrj>3^{O#ME5jWL4EncyIaRe<#%0Iu?H`}AOO`Wi3eWIaPCSpS<zKIG+UA&<^NjJcJ zif~3sj^s>%1Vf=!FtrOzQ#91G!)gi`PYCTb`H9^DNdleM=gYjms)GYF?EYxC%S<K~ zQRxeXK=ZXh-OXh`>8jsQOVqyf&}5IY^4y@RnUT>zDRc;P;k+S#4oREW(X!XTULl+6 zrM&L+L&0>wv2mVZ7PlsKhIoWyxOAZ3{iBsXJL~c2_Ur|fnh!D=1b_G2zRxttWsxgM z-zUrv7~KjAQKi758819139Psi%A4gkT`h2fwa9{?91;qhY|3QCNQ*Fi<}}=d3c6ag z82?a0SBsWFY*}1?t1tc`A5YI?eKj&k^I02c<rh_$kcNd6G3`&LQ=B{?+i)*;s_!4W zL%b<3ez_Xqg`qmu%tPuCp~Ba<VR7d98MB|T3OR0`nw(VFJeh+uCI*jFsg?}3I$`DX zhF*WH>m3G&40ckHOYvCm!Wr_WHwYv~frYqF!vN`X7>n$G8r#Kk%)h6*VVn#76f1#= zV{_al)+58gzQ(ng+g?SG+EGs!2Nj2pn`F$qeBsUcO~%?dzm}D5ESo1DM#d}fRaE&- z&cj7zHk14wH37wL)YEU+fGI<<lgk5tDeJ7Tki%Q95~3q?dgmd_9gPG=TBs4Cr^Z8C zgdx8nG|0t&69<0lrhPYUqc8Ts^&0f>f^*3#(~$f{nBt@2Fa8?Pw)M$VmPwZ2Y9cU+ zGNWknF<*vpo?b_$2JmBO9-eH1n!-J(3ajV9qWXDOy^{>YPG-@c1TXxnN^W8*h>0k* z(XSu~*by_%EFyjia+jxjc)ecgnb86&u3~DUO^n=sQ2AwWN3Bise|XhOg$7TaKQt^! zD<Q+CqVyZwXrzei+PI87N8_q$YbS6cNTs|IMrt3uBV)Zg+@u+)DRv|8z4`#FyG}qW zv-~vrhP}=vT2g;C>wN=D$7#Z0MQ<#h-T$m|d%LGQ?HY-efXhT~@nnv^SCsl=cF?-5 zJp8DC8wfo%wj{$eh*+3S5qt=_@R2eg*V@17c_#>4+@m)bPa@g7{o`66Q@OCz{ubB- z+mGFoK}CwF!jd0%mG^6=<;GgGJ4d};#R8_#@i3g*4;_HMN7g;Oj5HD$`Z&9W-;SGi zCBL(gRtC~krl&^ps%a>9teStm(p`I_p}Eh0ANh6|*NKm?VBfg41{OcWh9Z8GQZQd4 zk3krhHsQ`vt>Q%!p(cm)V2YpecSlKj0+Bp_%dByrW`C5~$&5Z0P_x90`OZS~F=dhR z_mNGn(C3<1y)SiZq&1zN@G(G9XUfn*2Ti!SvH71Q!G;iDFyiONAd>pY7-6JTOXin< zj^e{K-3a=P-FPa%a->p)%3@m6LZv0mnmozp$z2I@K>_!QM(p_2bJ{y=&JX%|S@|uf z+C;QH7Hl(~J?lQ|eySjU$iYS48kL6+WLunbQeXB4S$5JzC7oslJXE6C>2`l=b0ss* z7f~rTY0e9rWZLw&PFVVtK`DJkJZT1hCRBOf7K%b{$)@7<c_%SlDBvH921D{)VNtKJ zehtdbewnsDj<8<ae*9cg{S%3GP<YT8gHmHI=LnaLMBngUlY<{nCA=RNdXOXWoX$0k zPYmDY@9OliV3sb<lid<DG<ItbM_)i!bKvsUvfsAd1ipO6l3F`#r*aK)`1m4!F`x6n zq%<kU!O(Q~l+o{&t2HLO{dBa-Tx|b_DR)p<A<cQizW-y2f6qE{z7-R3mqH1rsN924 zM}5X;25a#WiVOgsPLhFJ1FHbt9IS^zR~U|)GRyXNwY3}`mM_xm3BAT}LHFm`b}I}D zU4#gR&27$jY}LMzra*ZLw<XVi+FUstlQRHk4d$ji{Y#_@>baD5>ef<*B5{>yA*`5J zJ!9&QYj)V-Eq}kBs~sqS$CJ6~w4<zvEiH#-AmKOunQaF|HB&U*odSA0D7x8SFhR`Q z^1gWm^pV>rZKDo4;4+*Z(L4(8_EOb>LgRv4;u<j_GCO{CeUmkDg)+~7u|U5+s*(?- z9}@~LfeOWdaT#xR3@}ZTTInMOTQ<xYWgK)=SPyZ+Gq1iw>iCg4t~dMsm_aZar3l5b zu8a_G;U~f!e8bU7l_%QpAz@-gc9W0Zsz+vII4KPdbex1Sj8UKB;0k_PZCA!@cV~_6 z_k0DeK02s6$oWYIZ5noek!Z`G?WIrbxn+RXTG;Nz;u@n!6>z#t@W<U8PP`UF&$J#s zYAog|By@;3V&SfPAFFS(*H~oDbgIvz)B#GL*07lRGZJ#>1ic<{Sh;qi0U!7M(_Yv; zf0a&9{QBOo@+{Vd8E$z!I~#;YqjvHtjEYZ%aUdRilB144EG)`@vjDfg3TIw`@fpU` zr_eIkRH1{7FT%}*O>1MO%3*WOs_&jEFl>Fc^&v}yzrBI(hv@NrVmmfR*@W}~Egp)% z;jIG&<M6DfbwxBXrpf2uJ#oJRL>DL7ew>eP;mW+hmW<$vrHpMz1o{l7we2kQpgYpT z62knx?B}kDlR#~MaJQB58!3ew`%FmtS(FiBJA|D<@n~~{M5~WXOL~M=%Tb#<Iafyd z=3%$=Y@{VIGQ&6RX-j;hDd<<${n!TVYg9Q!)XkybvSc)3V!2;w#yuMuF9pF@czbdt zUMnO|*ye-YLJLor6BGxT`}3WILy2r#_12}B=1)l>I|L?w(=r71TURqVbyjaw6hWSk z21&<GI=HsT{OFEMcnV}Je2zKVBtSAZ$1gcg=3TghPbbA%t}ed`vs0L$l7+7A!6spU zrkTA4E{3^0$_{C)NCUxNtGtHB7BU!Vqx+Rl7q1)KZpkHEv<Lz&!hFrjaVptVjak9K z;CR{Ut!*cNHQqq?0l#zMb-HLsn9=<f0$k=orO7<s27>z&I>1&!YuIEihnp?qoyu}2 z6pi%apbz11YKirUa+1KTEDg<hXIMJ`5*b}aE@o5sfn~c?p_PUD!BI$@(<D-KjR&Fm zVF4gzoqOYR9^;<{W{o>C?(pluP&1qQd*_=!va&{hSd-+>pIi3kRqhuJs@Ctm$tzJ7 zNfPrwqMy<NIT6XavR+AKC3+#(mi^~<FH4e5L4*-@#m4?6FG@u?stgXDB2KsjUrfYT z9tFeOGe8itcNe*8E7+l0QMxWl2=Kr;+50OPS8e+^m=zwOr~Gg$D_pt7=Np>#Z2mBZ z=Cmk(r3qvB^ApaKu<{p&M_9pCdKxO$u0`L46$(Ov?<vNf^8?@+Og6=0C=H5?-@Qfi ze?#khU^cjIC-hTkq}asIt2LjRp9d-7eoH_oeB!I{jiHk8REBhO{)*+@c@woU(Uo^u z=M(4>URr*EgX3mGpd&x;A5>mc^GVc4Llg6V8(#+OcvVA8%7cOmB1VFENQ#R1UF_!q z%Icb~25#O36R%II&<aS^G#XcqCmGrph)MIK*Xw&bNvbtdRbT_Iu2nOFJt}EfmE!`H zTlZVA9L`d>?PfiO&z8+(9J;en70csJh@YI=#*WM$(sLw9KKJ4{r(p;5r;RTyY!O?3 zTLeteBWe52HY+@x-zMn6LMcH_i#G!$=tVq<iE}AQXno`T8Gq6*!KfNy1lq{!LBTSJ z{UTkYW;tp=V;HXd&XZ{=lYfp;!}u-eE*Re@0}&x`SZ|s~W1TQ}%|R~VI-r(`>jQ^H zk{`x33;LQeN5OAvQd(Z<Ro}`_bLKXGk+Y~)fxY-=ls>f0DDW%#Q+P%Eo)SdNVyJUV zk(uIUY@keCe?|OK0bxB^+Y4*1S4L&kDsa8SaZ)8VG8T|36d!EADp@0+=Z<DRd(KB` zb%o&19Sf-7;11lG2b8`8lWBM`9km*kML;XZpYk{5*2XlzC(4~ch$`vpUlO%{jkNX2 ztsYWEF>wA}k|Ucw@u};F<V0lccsj0f_$~QxtXCHz5Y0%$>{JKDt)7wjRqme}=WR+| zN_KVFWjP3nJNw0EPXeaW-thT>p>H2E>R)hzt7~_mqAE7@7DO2~+!K^`^@7LbLzZM9 zN(zZb6waMvOjE0R7N9a;fw0|we$&+LD`>LvOq2SRnPTZ`n<x)oe{!rW)22-n&6R>p zd?P>zsa?1YS_7s34uwfLZz+yfrA+-HHlsdp){eeF{XNu`G*F>%2P+r6r<D6p^weB& zDyK#Fqrc*sI|GH;k`Xb7iEg4SAeyOP;P)gBy1!4Ey^gVXsmWG&Xxegr7F0*e{LnA@ zE>yBzRt}CQ>}UJyo4`n?ezdCW6(xWHzeE@F^i9-GESK%0UbQ~z*ssk&-23|-(JXl> zn)-=t;IytR(ie`T`Q{pww&EHYg0dnHVTF_C$+Xam`biPTDF%+6R`WUq(C7U;LK!tm zq=^GbEllVpuw5B+ga@sE8HJ3iku28pE|=PE!2S0=Z7=T?>LLryLU+TgHs4`>9c%&3 zV8Kv&jt^Tyl2>1=WMatR+cb=KyB8t+U%#EDyYSALYJEPDkmsK?E<mG;?aZtl7bv^3 z62HUECL)FH3w|49W&1eTASTEACD%vSzq4Buh)QT<;L4F|Z-}pdw<<gKo00p>YIVr0 zY}eF!|I0-quAoG1`Edh*QTjJ{*VwQXmM<|0U``}C9^qXRH?4H@vtv!a5JLSylGSek zQ!x@O7KUqD;KXo)@Wb9?(Y5f;Xt2|HC=zvw{_5vP&%AA)MF)bBu|&-JsGdq;JI{AW zEGc1jxh4k-u);Zi{fg${X)kS{MYU|P_PQ#6@)*z=;U~|}eqQ_}htu1m`Wx>2q(+6K ztT(^ucpn~`i`=?~o1+jN+q$LdL#O+;Jpn{`NLVk=%jXAP%`1YFuf{F0M)@D3#G~%V z+Uxf+#JX@7f#R%A9754){<*zGq*&GxE(}O*>mfgMzQ4ME7h5lm9Q)SAVQuW0&eMPQ z;~Q1o(2ot68+&`n2Zy%=>&7~Zj)&wHNZ0;cFdn%XNSe)mXRugrCl~QuGoa;x@e#vz zSP_*r*86$*19q7-1w8R_Cl<4GpK)+fNl!}}gqDmMM!-qyD=UJ7H&3K2ITJ&fSMAqG z!+9UPIb`L3)1j85EFVW@U+Yc%kVxLfUV6d+f^HQ>bH<Vf+oMvNv#*OK=k&p29e%p( zhz4+nV>GHfj-6J+wr9?coid)^#1wMp&?gKgz8gL7jo8w}=Cz^jNvw2YC$)NhQu?xe z(U?>@&~}pB`OzUtpt{W@m4zTF4_QA1{pc;@^12Lvws1nZ_%T!Z;-k-#FsI}E6mhQ- z%MuSbN#{|lhjd|`kn#kXh^wiKa%w%{G09MPwpD*n7eine>`$26(SuW4`#`XtJ@`hv zz~9}5Hp+R_h$%gWoRnyUN^R9ly<W`+(Je`?iq~(Ug$%=G+#xyMRg_xB>Rv|G)5XJN z>=}!HglHMWfhfvuD?%A#0?Sx>%?H`NhAX=cg_4`BS^V7y8#2GXjRWT4oP+!{OoDV! zDeW(dj;0D$389D5_ljRd&!}WORp_;caFBc22|wRlA0)=b;ulDYPJD=0!=G;#!zU?7 zUluqBbW@>L{FJEFq>Pj<AAj1Afz&X`G{63TN&4HiS{bQQ5oHiQ8~fw;ujC($z^b|| z5mY#sq{~E0pUjOn^L2@@j%lXxS<ptp$fB;VmVG30j~#ct&d~(dwZt$iF)|u3SJlad zO-0`SNn?Ov@H#CjvzHvuV|@SOiW|ZHWrGLH?Li01(M<#v!!<U)?qrpyl|)S0?|f;0 zzoVf)p{>gz8squ22a*GmWEW_=2*>Z4>R>%!Vx+l_Rn2k$zxMiM@YbI0Lq6oxlR?!T zwiwa;IiU<89eYxdVcKLuT={i+sWa2IVm2se@+N_Gr}`JWSWNa7{^<B3#0^-|gmy78 z{>dsHZL72O)AS^Dcc=nFk#;0z&iV|0`0R#8-R_DDn0NG{kU<bNoLqbp*0KCYafQr- zzVC59&$vfZ#y2)?L^2iYR(p-kzG-tl;YZpEk+&rRsvhe*M9|5jt*{!XmAEkRtm4}9 zSDu?e-&QqCHz`|TGJa|=e$?GGgBRp#fVSVQ{Z0hpxsVPHe-5rS@5!7>^ez8?Iab3= z1+RPRU_(~2G&0a`{cA6$3C)0BoF|eDUWSN3Qn_rzuyjz+zS(}0{imHd@I_PuWtUo= zUW~SJ2SQ%~(p}L+Bt)l~b0TQ=mj+f96nhKE{3&yk^A}_i6))5Ia^v;%(eQ?pul^GE zT0{^c5qd?~`Klg&VTRNo+&PPX)RsL#R=I%ivl-(NHeIRpfwBl`K@e;zv`T<}w~tFq z_v@H#E?&=$^>A~FAvYgV2-$ZsDyf4eEn{~F7t*!6QPX5e0WggSxuz>vuu{6)<$~V5 z{;_%leCFfHNM%&2<X4t!lx^iSk6#oa^nJlMPf|T(gqiIz*=D!xh(CLO(}Y4guv3W& zd9sVo$0v4<@wXuCqtUQ4SHxed<keb<^97zVM5x@z6*IGnoucJOaN)&683#6~!}_LP zmOEaY1!+0eRz6&9G?HW_=EiTWt-xQO5Gwa%n85N7G}zw6g?b?|EBZ8hjpcE5FUj_G z4jva3=vxH4-lvZVF;M7#71@`k$1M}0_*DPI^2m&-hn^ZLeA3(P^)lI#!V8{-aoly& zT;b;UQWD7P9rpSqo*N~E;-`qj$i=KRbasa_o%0b9d}v_KYT@~t0W1dNZDFe#4<xbu zZ=MD#6nLEtiim6xtnpv$*O%>4QoD0-5k3Vv%kXK5u_F}QC)(+M%Th2kSw3HN^qs|& z<;UT{PulKxiJkQKw`wqE!|QZuz1pk9`lHQ7@kO5`re-2()MdKsF=~Gj$o<#?B>GPr zCG;G`Z&$(Srgr$XgmQr>5TD>F@mjwaG|JhkNjP#85Gs)NBPGjBOtnV6kndy;eY0@p z(K;uHbGypYX^Odjy@eHMTV@SzA>x4rSAk8{NF5PfX<70Bzdz<ippc+&Bb+u%c?qyl zGnf<>XzzNCX7`*t{CY~V1cl@mu+vw@orFGF2Rmmgs5d&jNgZkPsqvHL+g8!Am!)!6 zdp^3v7fxhxKt_xLM|k9paGYovY~&3ePmEN3{@7#7zOaCQvC@}fZ(m&XGs8?8j2{t! zfj-fDzSStliD{c&evYr~*c7V*s%$EV=u!=E#S`;uHdH#9qAZ8iwSCyLF&<fo28_1b zuEjVX3SKU4z-DdFGGFQ4e<jZPvFFcTHY;(tqD|F3IC^|0S=u9e#x7Uin8WlHyBdhf zKIscbhV)^7a{W>Ot|V#KftS8cSzoDs`Q(*`UPU@XaUPE_LJ`LeWw@!kny7q8_>lcJ zhWcxxS^ifts-O8?dJdYnv_DdnWr*c6j*?D3pwAHFwN%pR0AEh1qOkD8jc2aW<&!|T zcS2D5Qhx}(3(o+L4POVufngxm0w=H0pd$)Arzs(Sy$SqoOoq<fQ8fkJGwK_=<*RU5 zb`L#EFEs)7NuOJNJ_po5_|##ckAvtj9GZ~-9Iu5-F*=2|J<MlALDwXHCm*+&<y>o| zw;_H~cJ`Hh9b`=Ep!nwreQc56(F`ay%BB7mbPI}%<Zy?W4%I0GO>J!38|KM5JwIY+ zm3`}fPkg(nlj7Hzey>XwY70<`v$B7`BEAjr(li%5<UXvf5=*V{@aXbpi@6koSiX|Y zjUq={zAcJHc|fq_ym#Jr#i$VJ-c-f*i=zokmm%7PZKTPP1kupS+dvAAUOl@UGH>@y zf^7*)R1bV7R7x2v0W*=qG{s%Z<Et3`Og7(tF3HVWp%OXwK{?L#2Lq1RSLw`)`T^L7 zpC}v$hdoaFWbjPpW+3;Q><L`7)LO>5f^O_zeLS0~%5)46KFIQI*WrGxVc-pM_Hm&O zubaSPez8KNRL)PS$~Cr8frS$Nr9IPWB})BC$58mQcVdJgohFN-a^Xp!Ne>NSO}f#4 z3MCbZW~J7KR6vo1E@|Q<B3drK<j<k(-r8W3b{NEH#13FD85{WeSE`Ij&4rjtwl~xL znZl2pU>Z*`BQY1_!R^MUV?UuvDe_O}nkg$Mh`}vOafoTj)P5`E)8zzw?IL)BsNwut zqDJY9(HJHK643N#dc>tlNE3qH#_6(uLUZeJZLAZ(Jf!3DN5npbU_WYbB#dCeDk_Zk zYPoFNjr6log}!tP#YT!h2h?a@`%E>}wdl1ujs|?c@Lp?9mqmAeBM<?v$V?Bz=FXr- zc{=;O_MNmx1SZg+LZOssKKBPSiBA<VnVq_bPE)Suz}v7H3)Ju`%T<HQN-Hvd^v&ib zua)LKO!X3d?y5$D`LRIv5s*YJj_o)tv}<9J1_hjy=UJ%tq6dnI{<q;~Opcdi)0JA3 z!D!=LfJ}+}xS;B3U#}zRnT7L>WPWuR@dsFO>er--s;{SL44Do2@YoN(WjXKXy`%jh zG)!JoO))UqB(@Ok5h_MC5XyLeg@;lYY1fr5VfTJ6Si{7{?rHbAf7eB7&n88O_^z-T zfag?6w&eD(!*l92i=JE4I$KzdfPdQk=?#3f)M`_%bZDwZT(I;<4GoPX`}XjPI5fK! z(E>Kn_=5kF3rNOozrQL0-HKqGo^=bpH8dYo`B95tYMG)Kr%YPz{46nlr<)gpfDL~# zGJv4bo{Pb;k!CiZ{qpMYI({fkm4Y0BJF2n4gy)Q2{n6WkJQnCgOBm7nm;=;%@|H@1 z?QL<m$6!4i5(eJFv$1LE*-a!y?KGS<=0}QM9-Z{A>U7vQldx;%`o$Jq774#$QrI(u z8<H?rH_DRS0*8o@*Mt#&Um8i>UIC2~vkPKwJaGLfrr2EI#k8TG8nOO^{DPNMeNUE> z_VxL8zqxh{VqG6fBG!u_bKqIsfMY&1T<6`Ks$#jzBc9VkZ_?<(5(x?ogX73$VN#f# z7#3w)Q3uRX+xU$;(%oit*VAQUzhIiHEF$RC6@`8CwG?lFVIQ`C-Ke`H161}>23hno zm^#&B5NH{ax1aoWSGRq`E(0<8b59zHP)3*@IXwBtjCA;Ps?MowBqEI<YqI0nzE5rg zoc7@r_a?Q3`#kxy)Az^1RTXB%+Ansyn&^h<gQVNk9w4i}@h#z|ZT%RIQPYqSypP-? zkIsPZ6XR;0WA=c5$<Qn!!7CC0Gf-YkIH&Vn`u?%2$o6wS&iJKk#*@GCLqDTplHBv? z4C!gLkZrQt^5@kGl_%M%*u2rir-d~S`-|XG9fS-xs~{WIATXn-x@0}EVw@l0AD<*K z*uXp_iTlA-tBCVq+3>!tvD76ML#}^xkf&EUF<qDZh}F}75sMRpui*|;4pC|&K$SPx zw1!xhOm)C1-IC(2C&Kj@rp_b5Yua%(oMW+Msy98II!VnKOEB1)(svAlghiFU2C?=S zyXRdzXefQZXE<`*-z=0UQWy-mI&r&otToTdb{^SX>_A)0ajz@?qciEaA`h_DB2Jrl zM4rW8c@49F@as0JD%7$x#IbQmQU58r?i(2s2|3+Ql)bOdN5PCa=C-JMPCb%snBZJ$ znvdgCOtc~*$VrmAg4Wj}OAgh~c$&$4r-$NJQiJvKIP-1!3}lKft@(pCG$f<EXkyD` z_u)q91u2lF;2Okvjy5f(ohaXw^}zY=?Y5ZNU>I(HFqfa{qEwc{*YZ~Dg^ZwhXBvwX z;T`A@#DU^d^bKPAp_P7M-UT=?Vl1@zp8lEP-^hOxNff%_@|%PJY`Ry&gK{9Un4mBX zRY>-vgdKlPv|)EscLTg+bK?DKBL*-P$()I_7j!=wA;~2+XrXa_BqBOxhem8kewJpj zNa34*0oSnzu%M<7u2PDj{f(YuVEEB(I@Y>bmJO>*GzwXpt(lYfOtLy^&mu2D1_<3! zdiW~ZeU754+Sx?{-$ezDEcxM3f>&HNo)WQEZos2G9k$PNv_oWknl}rH=g~YDB3fE| zBx8|)BgGgp?NpVH^;ExKXg4+x@p@fcB<WLsX7|wf=Ceb*)$e0VH57=#PvxLiSLc3F zTFBZV{><h=Px-r_MRxsaNo{lGB6(Cj4h5ZsX*u%WwL?Z2X-#>;?=&QJIe9*lI)CyA z<}}7WAz<cB6JnPvJK>MAa*%EJI!rt}J*PDem%JUeg@~>0=P#MuSq-l#O3F(eT}*g? z<<XS&Bi0W<*R0+uC6+nj1E2IvZWtHDZ`T%55dKlb@9bPZAg-}Vp=r5Sm>*`1xrSZ5 zklCSm3ObUXMCF4EsR&Uj{JOO2rp7vb#Z;EEmuio5sY14+Q=|5I=0yXpYf7WAV0uev z#pEgPWMVtPg+2ro<i(F6JX^|ywI~;ViGc>>LY<BtG>0!g9&=PK)x}-bm@V47Bam8I zz&=4D5iIY1Y`42eWNkb&Zbm#fkn=8bo&k|Z6p0C;ukyio!N5?%a!G<?T)QyUCyP(l zF?Ea^?|jwhwrdE(4S-R6#d37GA)PW~GXphK7H<)EtMir|1i?n>T4_;ca8@0E_*P<q z+mKV|mf~F^ZgoaxS)6BBIIOC`Md|sTnz@91$z2JIuRDw($LpR)5QCZ;#@C1byq$>P zdDGm!Eg|eCz#-2XyUmB*c^sCyI8Y*iLVbF%uF4+W*M2LKa!Mc3kI+}Q$`sg%d=ABS zPiK<@Z1}wwidd$$xrYfJZ7{rlL6Sk9mZDXno)OyU33cUPK2)^$iqOh*7FDv0Q%m=` zxf2zhbwgiY{w3?8#sylsHr6AKa~Ij|SxJtBk+7NC`~$LmXTH-Hy944Wj<03d_21)G z2F7hjz9RXRC9dx0ok<fWu`?Ttc2F7NLa$@yi64?=+1(|gx;g|Kli5^%IB!ee)-oHf zPMRtp{W6y%-e9clA1gKSgfx+^T4I5u!wOs48;)N?j^XdJ=iCUF4z7rgphcI4IEt5P zkkQ-1B#KcQx56MGKs!PUqWs0ehqAC(Zg`fJTaDJ8!$`HBD5eK8IrwT*@(eDKXA!;_ z-NBobtZLGQwp~r3zIw!eRcDX_5m3k=VO<m1v}VMks27r!Sd63J?6|+-84U$LAkMga z!v-?Guf7Q_9>&?HL_)J4_y|#8A~~nbIDm|U3gKq}vtp(bR)#iBc)8IBf39{c2>Njn zQcmM4U1dh|qsD8v#2pY}(cG+RU~+9zX|DX--Lh%a!S|KCA`BOQU)Ix8^Vc=C`r#Z2 z*P?UQgg4WgM?<ZvXR4+sqxKEKt^tp|H!p!UU!mCdp#&^ae7p=@TLUvF+eWUZeY*Yt z@QZGSw{rV-o8@#5;CyyIkWAn1THUfE6Gd31GD3N9amwR#=#vBl(erTi^JhR}JX2dk zPbO6>GHcOpF~LE9vAqdAjRnoC<CaTtraw<&ZZ*o}7Fvebcx#OI%>4Fk+#HH~#cA|d zP*c*bvZ==Wv<FZ}KeqNrVYYDo8pLd2Z0aaEPZaPSI!!5Rt96}F^p^zs6SB^>&mK{| zlSo-yEnAMyzz|U}<L(=n>-iyN01C}^XrBCKP2;QAIZF?J{4jA%RgHF&NP*5NIioN| zU+~~Hov{B2n);i-)27^hxG7B*#^$e)V>y%>*VtC3`~;VJDitkz8E4h2q01Q*^@EsJ zz+gFd;quR{-TL53a<}8qgFQdo*1?`KTQu5>YbZs@6qK(1OMdT!qff53Mb?boFE54b zw|f_r>e45FUL{*RFG4@kIu2&C4f$Oq{Q3j!tc|L872IF_WM>jFOPo?oXm_h?I1Z0U zsjj;e#D4sgH#g!iS5Mgsh2c@I2EVJlG0KuvsCY=?%0ySgv5@(OU@9aC>dGqOPU9K% zQ-;9Vt)Y-I4zzIDTrqGhqxZit_b`lXkh}gALHN{vpRKwLQ6M!py6})DHbFQMhh_>l zfh*#*CaCiE<FIhAx6AufR6usCyJa90if<F{t7gEQyI;SuuIom4(6Tg<mL|5l-fIn1 z)WXCxIJKy1+*9*~-wbM;HGN7m%93u4OnWK5mn{o*5Z}fXDUb{-KnPt{r(t?md6{0r zTIG9xBk-Y^Ch0D=*2v$DL~L&0!|(LlFixG<i6;H+JyG87Zr4-cEjC_CfaapC(ZOiZ z^7sA=Wh=CDN@VOS%I+C=Z`#zPul{CO0<DE=$&^5=3#5szk;|uVh&VkuP-l%F)xpHs z1GU)un&+AXA+Z$jPH#4HZ?CzK@6Aa})g-fjO^HS9;^UZ>L*p`WCK_)PTOV^-Zq`Hs z?O?U>KUFJ?lQZDx^P{HF`X*ZtbPC9E7X+4%NYP?a`)7FOSgj6B{oW!1no6eH+)&zM zy$V6fcXFsf*22+c<2De%xV^vJrRgeu!9--XeX{O?->yC+-Nt^CKFWHmLbH1uMv*#y z_y|_%eTGpHb?EFhI;3~`!^2MY+q0UwCFwTSKwgRu{5m@!n?t^de3dHXBS`j;X5X2F zjt1S06CCjLD#t03b@$ROAF5JuIMVTLlpj<`Kxw8TC8X^h?-<-#5y&NAw~qXhl3XPZ zPb^3JJ-u12ojK92q}&fNq(1`FSqJie7uYxLlSkf6ugSGc6nZjAy;$r^{qWp-R?Xj} zfVkCfQ4)d9$NTEN_kc86GCnO2xX`G}h=CrXb?u$TZ^c@%^G+=3Nu+3yn&8D}s*IZf z5p+C7UmxiVFa}Cs#fnPKRd>jJ@4bhQHkfr*qUlXpIJ|r1!gX?-%vtDH46o{c7_B1w zkDnRsj{{Y%Y;4Ysv`rBGrHjJdBg*V3s1t^2BL&-EuUVbBghQz2QXwC;wC!-Hfupb1 z?sYbfdLzNwFy>Y&y*38tyR2}kUv>F)aRhJ!yD#LtV3yIkDj}`HrdS{}E`<9MR}-MB z;w`7`zqNL;CMvTXl`tu5-0FXSGYe6aWZn#DeA>VqEL1hitOtty-p~I=TYrb@{%rNr zBi)q?rT1gXEMqZ^AiOoU*SGexz(nn*wzXW}SNDxfXwIIbQ!b<4o$o4et5F$jrpOt| z%$8?IWE9+jyooC|G(xozDpdzA(T|mU%-&l%^8krJcE30)5xbCn5b^oyiQmNte*;D| zu-B=G))!WbJPXw;Y7X<M;KDyH#o$MVleyADwT#HYOC<T6JZ{DxJ@<@40A@Jr0F+i@ zOLFd9Z6c!zV7$a>kFowb!F}~pM80^oTl4hX71V3VXrHA`glaRqzv^h4eI+rwgho}u z)D!(`w6XwbmqpCmUmy8Op7ayrf3cm+t=uBCQ)?qJ@Q&@F_d&-sYDck<9IVco^Babb zPeT5>qWs<$IfxZ(L?C7nu&#Dcc)v37zI|Vy_#1HLQ<jkKHD9d%eg2PXH;3B$-0f$Y zZ#~Fd;v)0sUu>eY)B_YSzKFKWigC=hoNo<osfL~)3x4t{sgMHcmG9hqe}UFsr_d@? zmzIef{TjQ0Ja3*B^-}!*1YQQA`R_P;|5#H_!eXdr>gDmHkQr}Al-)wX9&M<gaQUR= zcw0&Gu2IY`^&-z1Wh`UV@B~$^h4&+gpJmA=C6i=ZA)?(<Lb3Szq{XJ_{y)8i>?t>Q z*rf!rOjYpRF%a~$K;NKVf2&46r<y+E=h5+M`pXc|_oqrrLlsSTjT_#qUo2^;nxryl zpV^ZPo)}p@(!0n$V&lOWx&rE}8p>H5!6R@J+uHbJWq{H>of3;Bdx9c~O^k^BbN1~) z!)3`5%EC+NGeI?;TJA>xZ1^_&1-`bADprJs0i_BRg!?@|X~XE&f7|~~|3oZV-P2=A z@D9b{D!U7G^N;aQqcQi>1<J}B?oAV$v#xx+C|7F{(*OAD#~_saXoD4w+YtqlJ;>JK z-XlYfTt6kQ>*6yweMA2OOUVfT(=^g1MJRTTCFGS;4+)hIjuCI@5Z!QNlluW%uv9rF zuUMA^;3D+yU+)8{e-6bnQ{^PK!%3lBKh3?U<&(cVu6+srv-=m0rDfbaw;*gEc`B(3 ziI4ypDDf=I`W|lZD|eQ;LnC-F2@|t{eC_B%(#U8g{R8R;Cz=ByN=c?&a2j)mju1o3 zza>P-s;|r<@T@^!^PzXi#~&qkL7C9KDknxc2Ah5=yaBC$e}D!wF=(oN>eVj`idm?l zX9RdBEvpgr(!KMrp+SGFhL^@5rz2B5SYw_5QgBJ273#`qdI-6W-T4Vg2Gup3<=>PI zvWU7pS6+D5SL<qvR#YlvkP)=$0<1$^i&*R*@jTb2M5y#2yW(vwJpuF=SWGuD^EVo7 zAdHhFFh{M9e?gy~;7AV9prX!ZnFAz3^3+P|S2&CIx+NxaS5AFl6UD9`apky)hNN4d zMedB0bd91>$^<Ir+3CZN*VkdLddOsY`gQj7k-S1!P`H$8S&Flb;>TcZ{F;o1#0OyM z<6F{aa=Ov;(QS?=SvfZ!xhEM;+_l;h->O-vcV75oe|6ToqG$U~Q}erXa<6d@yiiFo zinOs17}wYLe4{Cm<{7r*p+h;hZ#bUfem?tke(hayp*Xad7P7{}_bk)Wwt!@BW(;&) z_lvgVWQ)c1`pRBC;e=m+yumTBJN7VNlghizSS0l)anw7OknGNVHAi=xe=&v6kTXS@ z*R6|{fA5Tx2r=qseK{e3C)HM-nea0@j5kukv~>OGs5h_`DwqT^8gmu*`5qSN@!A!N z{y#XKwjeOH(>@w~(Fc|cI?jVT?5d`TlsS?DzicV&s<1f%vr<nLmZOF@t<)0WTE7es zFvYE7f(fC?<@r3fmH`N^`BN0Fjib!$FwXc3e{eERh9hoX8bBNq1N^w>I3bTm4lth( z(rAv*cNVA+hoMkPTef^8y}MffP-pqsxRqbN1)p{P5%jbB)JUm7WXfGcQ64yy&(1Xj zS{f;MvE6U;f9Qpfh2>t2%DvDK$~U*RV8W>fD5*-pao#R+&Ie&S8bNG;+r)zxoSu?( zf4xT#qAzv2xaa`yP4fXWKD_u}$h^(8`P;G4>=X9CNGUCGR24)4`&OaBQ;1|)f}i;V zi@y-g<maa=>*&L!ceOCVNG!(48zoa#9{p_A$^3&8anz30%B&HTt2l1FB=2A8pp^@n zkN5nxBfj#KcQ|Z~(=FvXiF9Ue$40U>f5I$dPtesfF`<g2puSRk<0tqsS_o(Yas?23 z+ueT{Hyrv0yI9wYY+B;$X=suG%}Wr7MzZ8`JbKtT%-TpKSR_0Cm5_O0J0*V>F)bLD zTR{(*?YApG5J{X|&kE?=6#hN(Go6y(o%r>uYtVY?79{;-)yy@KrF`a1OZQH%e+yT% zEm1QAbm&xV5RGLwBS~EqkLOwMqngl-qb6@w6~Xd1ma1vk(2ST||DsFNU<bnC{fTz@ zoQaSc5MW`U8GTNpuj>HARBy!?1srZ>lft4aO+ni`b%-`-{a_sz+ZrBQATu=D4+Xu4 zEw<FoqiD_OlWYJty^VdHq-CN~f1kX<&rcol(-i60I4Qt|9800j#2C_?T481et`PKh zB3a&@8!#7?eNbDs2l!G}zXWNv{Z4&>a&s1$7C1+p&J=_`9P*&CPmDa%%@~jbhb*ve z;@KLcLIl)<gdy5sWr^52z+r1Gw|&z7bV|_>AHbyisZY#Pk6!?LIhfIZAdASZ#gZ$Z zwyy;S3T19&b98cLVQmU!Ze(v_Y6><mH<z)h2otvsMhPb$12!-@m$9k{6B02sF*XV> zOl59obZ9alH#9gkm$8)z6a+XlIW(8Ci~%Trjkg6<l<OKcOh`*3k}{-(z|h^@(jXuV zFu+hV%naS#(w$0(fOJbrN+}^Ik^)KzNH^c;cJFic`Tw=PZ_QfFd)@h5&wbtR8dw=0 z>vPN5Lao8dP*)^39}iF*prECt#s>rdfdV{0AU{4Us{sV*4F21W&uRpQBOp*$@&Af{ zP=JF$NR&+xghT~uL0tjr?#=){0RW${IG>0(5D4H00>%Cggu=xEiXab&EkKJ0pbm8f zBk)-jpfGPZ#NGjk>ht#_fZc`zz$Ydq^5}OuK+XjWhuDBz0a_rW1K0)C(FWuU(1+SU zz)0_Zm0*{2Kq6t{yu6;Co;)BI1P>H{ZZFO82;d1pIso**2r%3OYzz2B8K4bv0so=K zgU<>uaDX8Ga_B?tke(no7=SW3Lu|mV2vmx@t1TD~Ky?S`t7!ssU|`q3f;ImNcm()! zIRHK$zJJR7$^KOc;`%!oWMcz$fq`7TA+GiSJBTwFprfqGgY-f^0)Sj?e+7bnoDon| zKF9+EaRynV0)8JI1W=aK1%OZt|L{ZDz#%Xsf(HR{{>72^R~ghbE4kV#KwVtGu1Ey_ zuk$HF;9winy?gWi8LpEn)YH}XZ)68?wYB?2!`2<fYv>Aba|f#_{)s`E@c(182O|MO zKv59^Q6T`>4FLACap3*cz`z@S2LA2j`(;LP@b`s5VE{W64X{7N4vhN3_eFp_zyKuN z9qjM>-;RGHd_F#aEyM;1um;;hT=D-?9c2dF{e@BUheNyoW<Zqu_yE9PpMRb#Pztk! zx;lIRC;az_d5zT7bd8j`{!sqMDK8K80{C(Z@B_H{g@6D)pr9x~1ohy5|L;2g+`!-L ze_J1eAb(ExUlr9{?Vx~PEq<{;UEkkKJpM?7{m<TT0RG)V8;TM%7{LA?{hI@YfHtT< zeE-i|@H^%IPyD~C{9pC|zb8_5cXs~mXa6hU|KkU_K%Bk*M4$xijzleo78JE2uKycq z4E}4QwZOIzcbEV5sv$vts3nnewMPk^n@^AjDEOBhf>4Hdfo&f{kTwo~iRtfYpn5n% zT)~f_2*|G&4=M`?{2w1`_iUU{FBb%AW`DUr2-G4Xe~<SU2BTK(-{(+rwSn6H+DU#P zVE_mY2YKV8B!NOg0AD`T^4fyEerq1U%i{_~qEY}T&i(*9C>;NP*Pw+(0K5vnOn)I! z0I%XdNJId@tM(s+iq!fCi3+3S`48elDVZ1iUl3Kt`M;nTfY;?W{MXrS+~IH(x!<Bg z5&Ikeez}0bUSJ#i&ofXPi7>~yu=cYWIa*Kd^>In8z05Nce(v$&r?|*|rAf<`Wc|F{ zIgN7V&wYH#PaV5|wB_B-@)u_heb?$48oUKhxEYi;>=~>RXKqi>r&D}S>6m7SThN{x zr^`POe+lnLdrTio(v2r$Yu~TWO6>QruJ==lCmThXvWR+kyLM-HO<ArcC7qbj&R0ET ztM!n<y3i5T!-B6a38AZT=Fu72*-RReo#*(;p4BAFgTq6A^Q3+BJ+Z;+9wF=dED=aj zC5a(AMM0cuqxly^R|PLUwzJ86tyRcnw{80?mN?SS>a-6W)(*BU7}-<1MI5YB?c(@$ ze9q}fVe=I7nef7*Z!xxC@*^2An+K&+P7y}ESrFB?i?6@ZJE=#8Yk1F1_f9Ndxoc#o znY|wfV}GQ7l`M5rxwhlq$l4L_VHbhX_OK?MbWMqiGM8h^-!AmU0E=_p{0V#bv@yS# zXr@EEfpqD-SXf(-38{bpp$8<h%8-b+@%tc7iRp>2kKoOV!_H25wmG-zSl4*6IG^SE zdB5!9=NEf?yzd%pvTEZLd^}xNPW-C9RxC6JU7#g@{;z%7U4(ut&yqfigNg$f@?ULr z#e~IE@w7!Vz5cS=7j^ug5+l(TtxUVH;^HWna%=$FjwXQbQ5GC`vF&rcjgbw|#)mcd zV3j|<Ct)<%WiLGVqMram`tzgPpVDm^Izj4!E^@%pYdwLcnO07UA>U4}7nE&lWMZT% z;Sl$K_4it-YdW&T4*uNaU)Y}!hEV7Zg>EJ%#I?&UAGH?5a!l3IPXD;uUM3Zc%Om#c zd+zp;fIThEVXhPrgIT8~!>#o#)bifGJe^VT(#1f?2u{<1F%!cNYK*m}yqveopo2~5 z6J>->5=U5SG3%Z!|3Rx~oc5d7Q>xO(ivGuc`?z27lKM^4h}wTN)bcq#sS33(Bf{?D zv+iuoRWAqmS#>(ZzqAhI=<zfS-Lo-c13ISe*O{P+c%RwhlV>_m>o<qLV8aUZCxhK^ zPj1=GJOzL*XDspiX`Kaqj5ZH9T=fo@yXY<B!Lrr$oEScS=}BqE5T0hSQI2PWSvm55 z5&F-T5CZQL5}XPjJ&m(Y&ffPKX~hK*jD!nX%44r?kz<j~Uk;34@a=I;%#lu^6Ym%| z*6|O+pt*{dxfRivonF$zcC)JW7iJ6=21+MAj@f!cF#)_>mjr8Tlv{x8Op*m>(KR2F z`D9q#Q9(|gDx=Zqe6Vd3V^ffXt>BA)B7+j*&qCslRxdm#m~Au?IOk_1xP0E<!!e1g zCi5Y50^Bdwom%qjmj<~FSPQT7#j9Pkj%$#xh0B0Hd^}B(irTVkZIaw~)VO*!#p2ZB ze6q-DdE~-kL6Rl5%H0=QxPIRWq&X5uGk>0G@cuEM?}uP=8Vc9K=w~1EmFIkatqnRx z+wHI;zWykD?HjE*xy=^U-HktNk|(x0T)KR5y4$!UEfY*Wx7J`#_-P2btLK?LwIYrm z`5*_}x`)qufEV4iK~L91Md^L{qlL&ntS}P!ZO-IHXd9DA(19B=Y}xL@znkpaL@Gy3 zgy<c8y(yD4@B3tuxrhdS$26UPr|m1DZ6vJScM}Zr+QOH8rKjV03oEN%DY!tF)`8=! zmHy9RU+&v}_jRBYl#U^b!FlSbSh_C@);+Q%>ciXuL2OMYo-WIFHOk<^?m`44=<0&y z`&;Gc!Izg029J*KVoor<*09<9W{Hn~Bz^Vn$^becRm@38-tunb!n-(s=rc2n9GfM} zaGVZQ8dMjQC#1{&L_nM>ubFm8(o|)_m+$P>#z>9222+^b60XH`7L5$I4GIcfDA(SO z;J2`WfL2Zf4{xRR=*Qq$Z#=xeR69K7>`~SDT<d3k^vN{Zlf02eYr9C`5ocpxjE9gv zPkD)0>HV4lCSg!}11S-I*mN`7KM_;-6~DhmC~()(sD^U<O&rdbQQnur-2o%fzyl}w z<fwrg=Ur*f<VBM$$*-!W@ihZ?ygbM{$o+%Xl(|`Qm~yNs7}*<roD_BStdSD+gG8H- z#Vvh#P6TV()F*<kr?3UjvyPVP=WiY5ICHG*CnI&sYwPgXOTSBhj0D%{5*jjuDZs2Z z#$+YVdKJ*bz?*E!X6&)}FRsGR6VFR!#;M}rXfZ!B+uJOUs={$dC+&1_jTb*)td<p& zxt{|UPLtxDc$2Hxs)dg4zMCvNZ~XWPFSwR_Nz>HmNxAioph>>jDA0Y>ky2V|+Nmz6 zj?tvQTQjk<>FoJ`V3J`*%}LHGKr7Pu!a$X7$aV6@JEsq9I52Q~g$S3sGoKp+4HsY- z_p@LCR9j@NeWUeh4PMZ$VoRe*RrzShC)*go!z+d%F*u=yzV%+&CzYkNGsy50uLcID z^Q@h)m)mk7J)Spyou_|oh^i`YJtynM7wa^ql<F(fT5qU-*M}y@s@)8)qB{MKOiXj{ zMh@5eGHv-r8zJgV)DO<Fxfq6Moj~D*W|Thjqjs6KL1Y=Tc50jpW_Hw47+PeM0#h8U z?LS{tk)*hlS2gLdV|AHxKVgicevrSd-ixowK?m18No=Io6*?&jG@!E9^yifx7jh!o zp*oe)^?ad!b0b12bQQ%+E1ov{=!KyrrRHOqq{hMF``QXs-}JRkK0@|B63$7d5s?nO zKaE<yyZ%#vbJmgBxHnI6OLQZa<zUM1AfK^WIc8~iG^XW-W^+z6MZz)=-&QwWU5%xw zExp%ti2V~4rHh{12Ki}`x*1h+fZYrUrr4wO3gP;HulFtaE{diCJOKo6wqMcdKf;pX zOOOf0B{-aso9<uoc4iM*)kJT7k9<?efVpRwNVdDPf!9r4;UYW9NqL!QKp~d+MX42| z#8}6kdoF#ZCyuyAbrbfDiU_2N{eTJA+^6{ZEeY@B)Ppc3M<XoXJih2dzR^&F+B750 z>q#MhZ(|KVpP<RZ)r@_=xh5n|v7@~0X1I}5mCt8^xo(3Q^?>$oW_6v7Hy;J8u00BG zV6N~`!@F8W#^pIDJm1Mpxse-LnVU7Q>-c^0KK@J!D?y9Im(&+V@-;g5Em*y=&i)pI zR?vo~woN%fZ^@DOB<pb65=^2*q>m&lF|-kX+8I+=k&O+3_6v~=dTA<-b;)JMGzDJw zYnRf0(8C32#{S5)8}RzZugIPrGU{4bH#d{}1u`FB{(j<B9D=a-b9;Q~*9#u_B5n=l zgF_{=SKOGD*UdY}L>r-H!9E@7>k05GEaI)@NtP1%aso{Z-k8Mi;w|!&$AFo|S+*d5 z725pCaXxoppasGz7(e+a%`dwxg}s(iuwdyW`{urU-8DC<Q~R6N{DE|*l9i*&HyRJB zTw)hw7cGnB9)6qce$qD8O@{l3MGuVUGOcKa`8vKk9u_dNU$q}ifNe6LB6lt7BIon@ z_<Qah+fHo>rnRg9D(s2mvQF4i`$@)sy%uT(l~SUh6zvZMHP8B%{3HMxIJ?3m-EvE( z(}Px4Yn_hbyaX8c(Vo;N1l`^kma=kQ2-BK>I&6~vwvsZJBssjb{y2^WhUxe^sC!`3 zvlki81u0vER28e2Pv<vZO#?a%OZrFl5gVp$d5+=!FYwLZB2^W(aQ24JA7t@=;w!GK z1Kted`9i>bt9P?7D<z*-({^sXzxI2}<C|eq6X|>gd{z|2{*rPoPysiSYj=#Uh3@l{ zmKzugfbAy<=p}Iji&A;AvTD2w8pqQ8#bN=hO5~E>IwZ%L1<2~<#CWZcB_1TU`Q37y z`;EU-faZkk_aBvS2}e|<`kq#QIDFdTaH`H}h2V)=PbHnnBA(tq^HRCxNs7QF-lozy zjmUlyyX#oJs!U-p-~NH{5esN9lt%AM%>}|PwV|l^letTfjT0ZVmg`#}Zsh2<r8_}A zN?VcEd$Ercs@x8H*&?n@$hXysat5X|@4!3EzcjrKd3XEuQV$HZ@<?8PX@lF|hso@` zpRTITwfm?reh<6$)l91~)(I?P`p^mcMd<jDTp<Gq`)3QSHR@SXVmuOxlljD_!LKJi z>ZH{=FTDTYEk$=!_S8p6DK41Whvg<@#OB8$aKuSJ2A0qvw~yiQ5{@7U?})O(QXfmX zaf)qk9aT|sm}c9MxfdFL4k#jDuA;R{%UhKdi)GA&n#*dYfDAG$^pFHQ#6Dfs4{11i zP7Ng@xRoYo*27bvZw#!zE_4a4RX2BCb?~QlN>}V?c)1DmmMp)sM82edowJ$v!EeHN zmNg1kG%EE?DM_}vEtO}F|LHQkzC^r$onBSC61*|@cyytDTB7=Y^wZ$%^DuuG<J?W| zpN(28a^pS-D}=RwVt(A`>s~~QEQMtXqMa8bBY#ynsw<3GCt2xjMTYZk?4pCYij_6` z3Fv`nadtBc`{KdSQ$qprYPal$>EpfCLj^3Rid&Da*p_3*8&b4*naqNV`4Kt#spfA& zJY@*+PK!ZW303}os_>3F8RxEsIvWbIwHvg@C8tM>VBDfFTii&#XP<a!cn6cLB_q;O z=C7SDdDnfHus0`Cp*iD)<Y5V81DLBjC88><q|vbP_IKL@&00Ujr_wH5uivuR=m%}n z3Ne-^=eGgVV!qDFhBKx&1*|FJO)-l~+zotw&~ST*xI<rm@N}z2%3fjrMN&iXg3S5G z_N)(%M7*U%N;^CN_5Y-5N_8|Z@`|AMa6?$(m57S{v)0V>ceLWf=kiiwEXO!M2e+wM zayXlXla4Qj9N@&qjG=f8;7W;&5u%_;<9?np+kjJ*8=z9=$~Ycc@uDo>T2o297o;Y} zsNC&t(r8P6bw%oHk{Q@{`(kZ$Pj8E*8S~tE1izch?u|@7&!-ZNri&8^-{WJ0R>2UG zi0*>72`{x@>`jv_V|O}jFZbCld-bR}C`k>5zKkldNVb3j43fM33EOtnLN0&g@GnqT zF%y<V-pRVz>Nmry$-w`ZY~z0I-D;>8?6i!Ti26l;(l{JVTQL^g6%ppwZt{4#(5R!I zebZ-gV#~$XqvKhxHj=Yo^k=pW37TS7?I=w$fu#h}X?l@6CvQuTp7rI+CM@N$^SvzU zyJrhO>S)k0<#Y<zt0EBZ>}pxr=PzO7ieFTj_}Q>BxnVH`8hZgX(blU+0*q4bN{70e zsTsI`?AwZx67`NXeZ$QcOP|%&&-oD)^e>v0F6A2RBUDnxwDkvLYzFwJui9qeWIPcI zt0Es2o;_8NFI<V;sG*QrfG18^r5{k_I=j7Q=eJns%F+hY=4ouC0_*8_WL{3f_|i{* z5<HF1JRqXDM{4yrK>wCON@L+xM(O;U25nA%4qH9fVRRAPoP{5c#cVc?*J}nQ(22JF z)zt8LrCTUgBPWJcAsq1PRF2?vilOMhU_UgG6Nb1;cTT8Oa^mdt(puJ4m+Np;LN6)K zH9t9;-}`+;HD%c6CjSR-HZ(RrX&4!VGFOPwti<J~!IZ>1J%{u1Cn%L{$OuvjdMkT> zrPPi$qhG2ITJ66}HQ~_n+FMNCOvLQ-!V{X{nR6&(#%)tnrQRy|3>?C+X$<ITrBpAu zyBg857hEFlc879c$iZ7<q2WeZLeliM;6wOTK(F6HMe`EgG%5L!0WZAkx|E@MPp;2; zt9`Jj;d0HnlGWMg2$&5DKzvV8e5{~<EvRAMv~ciEMv3{Sp6ldk8q?N_6Z1mBQL?Ol z;f0?%0mto;s`(vSYzqHJsgoXtGK!KMK_lsV7R5Q&#k*;5_LD2WE^exP7$ogU!9r`! zHelIM(>hu4jz!BBr4;1VqW7z5?qV*GvJ$2lz{0>vLK2dXi#iQIfV|kimb5;9Ps=T6 zMaN$)po-#pAR$GVb4TS%V4#mEiHJTN#uib>676)nHYU4@+gO?z3(^XTdYgWqf_b<O z?01=YWL^FBK^DPXq-Lb(L@h95ILhz+)K;g?1CAxP59=h#X-K?uodS#^DX+ScwtlSG zIl@n+mf!lNZc|9ExiYFJb;Q<xBjo%?sh*n?tav{qekA2(8P`)`i1j9+d+E8b4sN8Q z{M@RjOt?(g_jN_AH}PmmbY{<vycJVFcj34gms&C>TgQTK)BQX-NY$*CiC_0ZKp;QR z0HTANM?KE~#w0K#C(HKDTejl|<=3eYUTo}ejP7(O?@0o3f`-70Anovfm}``hQ>1B6 z^}XepuH+FFp9exGs5R68z5a{SN1+T`6U0Tj>a*HVTPI_f$hw=i-lXK<gB33VsUz-O zkElCWD(@-$YfM{reQdI(kE-8ub3ibDx){wYu~%wlr>`2@$G$?pfsae^))IHI@hKbl zD_Q((7kIw(QlFKMO{>L!JHE(Np*R)K`h2yeG@c7j&hwr|5&mfhfbMltE?$w6@EX0d zF+5TdTkz&gYuJ*;!XPRu;9;gmHT|WGt~b8pa`=b*;+53E9)e6i?iw3Sk~?8X4F-2e z3wC`1hDb><a&KuhFK8k}rb}L{a6RcBDUgq=U5e@2l4`-_WE%~CHV~;04G4@(WX_yi z9_VsTdn?LtuZf|qzoW%L{j#~Vr;zRiyJP&V^*Se|lpivV_L0qG3XrTH=-j+l(=djR zG-~ris~qH;Og(+hz{!xHOdWcV!Clt-rT&~W&<83MI#e=WQEyv`Num^(ayiV_OA+!3 zd*Eg9S)gVsj|{MXVS)SO>YTon!d<iw5jU_wb}{8kN$U~<7z|n0yf|5dG%(h&ilCd^ z7v$0LV)07$`cC@u*_lZTbz$X*y{Lu?h2<`=o-ud^dgN1T9J)U`0udj?Hg4xSxRaq# z-`;gKV{pgw`zwT7q(Nn;Lx?bZZtFlZg-zVpG^VdTD+#cFYF}R5sA(%57afVAfs;ch zdnxeId{<vvT=aPn<wN^Bo25&*hBAvBYtwqxtP_`W(75KH%nj)nVZznE!2pg-Je_3x zidTaso<d{1Od~6PPFZE_U}_d#szvpRP8EWd<&+15$36LUK&@javjc3xV3W1)U>%)X zuaI53gme6V0&lWxXNX@Y%AtK@ugy=5N65X$O80Tm=}ZWR)z4QMy1Ii+o9tIOr-CU$ zRB823UxqG*g-~cMRYRlbafMVktz^dZl(otTmwSV5K91V2KHGwI+s!RuxMJR*bqWpe z5!+T4w<i72=-VbU)5P~~al>nn?`~r0m3>GZH7vY;$!NU2j6a@up>(flK&^F8`0UZ8 znn4dsWc<yzch2X?-4t}ybQq-d+pUp}L%s!-GuxM?=gPec;;nB<bc#1wn1^C;85PCL z&|*o^!dW>ma40}jt2tU;Dc3`TOqQA%7cz8jZOJ$<#3N^bd;At6UhF$<f-r)r$D-|= zbUb%|JcQ`;5hK=;$It35G<73@dz@!Y8b8uzxte9A!93h^(DJE-jT;5(Dr(|8>CXp( zoQFyF1}4k{sP(w+v3T@C(-ljy=IkSuaBsYW&$kLUKnziLzbk6H!Z$egMo+4I3acE> zLO-9G1+$g*vqg5_ew)5><Ee@rKBMni_)rpmdB1PGWP8v#)yPZW*dVX`?g^`=wGR!p zwZ6|(gCtZu@uPl+Ye3k2h^OCU9<7g;vG){cK(BMy#vqNelXa0EINH9x+pKfkW^t?e z+?iYjtz<k<S-J_6Z|Y0NAE`42^yt;t5Y-<Co*Z7JhyViuDr~i?(6NMTW{epYnSq6W zgJTW4)7bYN+1rYNk~(V1A9hHJ63)=lg>?<&PeP*TqCF?~M`Q~2jMn9kkJYvN-X<-S zmKVtBe12`*tggEg>^nY9q^?uTza|0YHF?N*t=W)3OuaGxUf`=~(UmKE-kjIduNG}A zpDEd>M5s0T;G|Or*6v67SQ}$S)pYZJ9!6Kbmc?c5b|AeVblWgFD^46k7@wKV{ZZQQ z^+pUYX_CkryJm2tM}ClQ?|z{{W1=ea)y5rO&kudmh!$6vijYT^W$7qU&DA_yvu$#{ z2^{8g5L_dS7x~aUejBmMB&yB;WJ<|`-`ISS_-SVLY^^ZZ5c7HU4Am54j=(N|bE-50 zIkmy&!hL|pN>(JE4BpR&qTkU$=)6mXn>i8Dj-(qE9QK+E>N6S^jIx{P*2u;$kJ%N8 zOVn}5`;jaKj^}qwnpqpj&Hc5m!+mkat~&-Dy{C7=vMXCgV*;HyR@Rgxlx|GH-ytF| zeW_#Xg3V}EuBAsUmp2O6RfoxcS+s5`ABydcm0Q|I_nWb9AB0+#w0rV|={75u)6LR0 z+DaA|*Pc8-@+PqkJj=|2ihmue4LXwPp02EGKOTMBCF^sb8i)~aEoy8OViV!<u?;j` z7e_tA+*3YEu+_<Z_1%v8L%vj?81V&3QqxaXbQ>~Qk^{n?TJ@m?Q76-XFtdz)19@b5 zMKHl*NXm9$mTr%~BnU62XwW><(Fjtnk{z&+HmN1knHQt+PD^YL*Ai3PF5z+7lS<E9 z^iH<|mq~R8824?g4*hqTX9f}HJWz^3B8rQ_1JTd=E46m4Jwtdm#V5Dm(**OScFl^u z8<(Q<zB(C!o`dzc!$z@x4gFveT>+(;x7BfH;-r)lc-=pg8d;w+$>$Ke+pCcWxE0A2 z3M_P5Oi9<>TM#eM-~ljpckN&%Bc`*^c4}#x?93*vu{T-vNmY%D#9Z!t)GMgfc8+tc zzj$ok_oEo5BR}gv*jvq?RjJtUK}AY=iG0gP>C2cv`8!^c<abzq6c5U9gx$YumZ~US z<hjifNfW*0!l=-;lIMPv$fH-ImD~09ffLK~&W9a{JE2c379j>*_{;pxZ5EuWR`~>* zm3~k$#}fjMyzW;v<GLa@#Wihy$BxeKkbPi<aOykd)U;3lg{yQ_V_RRNZ0YHRDyS%p zvGt)@ejLqRJaLzQPdcT#kNxb$E;P5!RyiE^X`a!EhDtu@s>fp<0n~GH$uF{gNL5f7 zlYntK<d&xrVBJT*e@(bt)00bWrA6AHx4@R0&c7pmTw|{;!Fn6Y4l%phnuw9q_;Bof zxOhw^I3}0vu2wk<keDaU5?>^JR`=ekCqiG-VyOj?A4I5so0=%(m-n3CYEDeMz8)uC z!|-PdP9VXja#2$m>s|8pd)0df*B!;hlgY(|&VYB^S`&NUY$Fu1;5*9#AwfaAo{TsO zL`84O&8TQ+pYXEG25;@{HI-kU_0CVTCm8rsbrrQJdWcbE-+*>Z-jP@9sXgbLD;K^5 zIjTva-&F;FK(1UqgL&Ad-6ajGZXY)46Ue1UI&^u9?(A2Q2bTJ`Jg;nQD&Hd*iMBiL z3Dj0`C3wET|E6p_6QauLHAwTO+ftfrOqDfPK~q8kh84nxZqmo@*nBkCm*(@aS{+i} zG1G1Af2{Y8L&rQ}9jl!qW`gXK9)=i=OowKu<|BoF$L~o*NESAy=xvU)LT1&*1BDB* z7>NOrd#B!RO&L77jI{@J4(5cagc3Z=p$b}nz#Ipda%+!aX56_|NT=R?S%n+1?(I!4 zxWjVEbZ=7br*f@VIsAqn3TCGaj@Wf8oMGMCM+B6KZHZAsqSAb%{IDs7L$;P1Elr7i zaPJ0x`~D8&C+RamJX4E2iZFD`))I+C8QVzjP$_X)L*RUCkE$P&FDy3HXENatwrRDe z+g4<NHnztlLtCypEqTqdbcd&S(OV1ijA26b!OwATBQn!hT1;qKw1lrNw-;Vuln_KM ztvuD*fhV(RP6ZVW<I~tgJ~Dmp8S%-ibfKz$!$11jy1x-7*83}Em^jh$-O64&ttzxn z@vQ`{gy^o``=BTJ_u@VP2~NsJWd`oeGHqhj+3d1M(Xieow~E-3nEI**V@BfhQaa$u z)iC;y$(oKLw(iM)vUN#4>ZN?&bnj=**~LtH#8DXWQDY+0Y+R?yD{#G2e6R*9Whn)J z8_@*bi)Y4gq8u}o*7CXoAIO%U9<I7Tf1=T-&P`j<p$v170zUQ2-kYQzKc>p!rW;FN zpGGpOzRggM*T?X|LU*|Qu+nZap~SmT6%ve-pPEnZl#hL;NT$Z2-A<8Uwxmml>&emb z{XZG#bgc?yZe(+Ga%Ev{3T19&Z(?c$3N|q@m$9k{6cRQ!Gzu?FWo~D5Xfhx&Gch+b zm$8)z76UdoF_#eq11Eos_XSX#Y10M@BZ1%qw*Z5?yK8WF_rcv=f(Eyc;O_1aB)Ge~ zyIZgzXR^ERCj0$=)j37gFjwE*eYHOKGh{>x%5*{|c1A!kJ6mTuCVED0fQYOT6C;3; zk%gX-kr|GROvS?48u*VGj!X^c=wxAM%l(Ifh$GO@86*=mbOwLv$=cZhq+F~4Oe_E< zc5WsPZbn7`Gb1C{{}k;UxdEbvt`;T$S$cq!oh{G_j!eYP-ow$t%-k77^S`eEN@FSj z6Bic;?O)~qAse8hg|VS6K-SRN9B2b#G&ZybDBBrZ0G&Pl<ARdc+}YWln}Na2&5hpB z#);m}(Ttyp7T|wo;cO020y+U5U4bTmUkL-`3~hjaXGRZ422e4#aQa)WY-j51X6Oh6 zfCSbS#z0#qkcEq_3D6M$A_pi-$^hi;fwq4u%lxfC3;3rt0492-f8G6K{mYSs?O(=* z#>RFw_J+0|7Pe*pQwwV#KweCS-r3!m7GP*=@=MXs+R1+oWN+wdXkl$=1XB1bazlWa zkRrekl;A(<IT<@z*gHGXJ6Tx&N|E808&H)$*qVsg+1LPWot@x*#V2av2s8$j-Gkxp z&RW^px!HRC157P!O-z3!Vd7%XplWO3-~yBs{YM2Pg8MBq13ClP7#SHkxL5!{2LRCB z*qq^)dli2Vd*EM(OuxjS41B!o?d$=jpd^4k7N$VZKR7QZLsuZc+0g~)<Mrpke-RuL z6Trm6*co61G_$aU`|TYh2AckjLCtrxa0h5Jf@Y5i!1(L$-*390@iMWqwf6X}{#Sn) zgjJN~g_UXk&iLOmVPQLWfEOJrBY=*XjS;}~Ysh~%Kwo_R>*n7A{4e>xqzZ->{{;7k zM@d^#I{??;Ie?1yzdT(384JpPR)z}jUj{il&@2N1l)pz`hmnoZ81%vP|9JuaGWq{E z_rJXSzm5L?4M@zz+WN0!%D>M4e~t}pEUZ2LQ2>pyi!*2~WbHu9Vf%ko)q#JnvMkWV z!o`2)|DH-Z8-mtD$kxpI-!fV_iCMS<O%yDgjm`g_q5pLO<lfrC7N}t7Wbx}^1E2#n z?EjpB7S7lT^gwX}_3E!9AZVZdOZmap*v{nF;xV(a0}LG<4L#sMtp_1CfEN>JLrsA0 ze~mVPf!@~68Ds(grRM`MwR42~)lqgf0E2(fFVWwK9W-0N5eI-l<Tv63Fo^y}TmXg- z{~``X0E5_X!~|dv|BaXd3=+Q)3xGlLH(~`aNc~2jSfqa=P%JXP5hxbf-v|_o+;0Sm zMgCvJ35rGGHv+LM{YD^m<=+UzuJRj!*j0Zc5WCuM1Y%eJjX>-gzY&OC^IyaTV%LBA zjX-vW{~}gUEQU^?*|Ko5`mF+TX7n3@N@wI~Xlw-pT~VgazvV3d%Ku)de-A+H#{VKV zkTYXDYtS(L%gOpnVq^0=ieFR4VDbk9Q38K^0Obw*4+9f3h#NF_hEC?cyZ_6^!3DIf z|C6x%QgS!8HnjP}Gbmrv-w<SD`Uihx{RJ)lpaJ3Ekd5URbp0I|(=WkqKDJ-#b}o*8 zuz?iJ{(vC=zXN6kHP_t3-W+KAhXzRY2R|bybIU&<sC8C<Ku~3^|A3&f|B)%^Da`QO zGaJa%7PP&8oP%<=`yC9(*zP~apk(ZSAA_9PgRW}Z|4aZY(?8Px_Ma6LwLO1mqU`?Y z=&w>a{O$~>5DqSO&Oj3*>;KxaaQ$=gUoq3K*8EXeCQzN6ekTVqast{|{CCXQe(3;R z|0pjT$cYo^V*58xP*I$${~RJFCQ$6ZX+d`bgR{9K@Q+yp6~fug?hgZy50^h6s3)#} zKu~0Ef6Noe+Wij*a_{j61eJf>^LKC{Po6->zp4K7d^L7)1l8R6uNx4w1pmW-z2yLb z?m%O>#W_1;o*>Jbpw{~;Av`y_-7&stvR(DBRCHd8j%_ZFNN+z=Ri=Ghcf1w)JlOSa zW%~o=55XnEXRqVty0@X<5)@m0dOzvMDNXLSz%5K*_KoKq3)S}G!@hr~QxV+res=Iy z3$TK02LCQamgV5WiKLK&cJJ0B?q1tlvOE$px2w2U$u155R5C>ur5dRdP&h-DZInKX zO$_Z!hYv%Idf|>d^W%0JHFNxxP%4fF&gUeGCErVHgE{(P)^oK?h1sbChZIK(8z1rq z>c}Lym+(Q76xO^~QT~5Q--3HHZ$4orBJGzIx_9&k%&C<YN)fh=-PNumi|tH1S)Tzx z6nK4TI|<drjp+K0#PS%GE&35?&ebedK>UMtQ{mOtTeVJ8%P;SjxTb1f0W*l2=Ewd` zonAld999R1`snULzI?kMY#iF|^ieMq=oNTx=Eg+*!CX6hWto3F75@uViSsB#hdNLa z{T=O+>u1g<D8pc0uaB3)kGM=*d5nx&oKW51Bk#}Hvb-;&eah=E<k~l8Q0A@OP;~=e z1KH(XjlO@mxX8mXXZc`|7DAbw`l0hv_F4>uB2NvlekQPl;bNm4lU}sggHR@Zi*4bu zpERFUQoMV2zG8ncT<4>Q<pWnP{h3<1YD+9zt|HOSNd(>KL4Cl0aA0r`*R9FH)@^C2 zupY*to!Y}ixm%d<VDzR6M^N^sb|wGJ4k!6!aiIu^g1hb6ZdfCdQx#!XBAdn-WOWt3 z$L-OMf+siH5=l`qiu^^{Ug<;LQ13<E1=0L&oGO1o%ujzm8vU7T+T`yk!4T5ktwxij z?JYx+=(i0vs$IU|3gaoO+~<&ZZh&>qPmOL94Nq>9dRdq26tea-0eILVlOe6+$cg5+ z{Zp>j`6wg9UrfWB)>Peu>XzPDr_S^N*G~pU-UyStZDV0X=N~(f0OS=@q^-&1)1bf3 zC1hA`d8U60J`%<>@l`nK)U2WZ;0-S2)9KIzCtVj62va?Ro!EO~|C~AHE}pGu+h2;8 z5{|QDQAswJm_al@2`9r0hE=Vdk%Drwo$p6Q6lof)@e#)O03`wjY@2tM0)3z+Ch1ZM zO@ZY@Hc=2AcQpzH%Errt5Rw#fB|X$)PmPGw7?^*Qa|sxEw-*O=EPFK^Nr2i!_e96> z?3~0bUcz+*L-7!j*u0q=u^3xojN7Gh7^!#VYk-|1@7Vs>7kKzd1K$STbOI*EVsDt_ zSKgLGoAbKHhlRAYLGz2Xtf2MsLw}h1`l_l_fk7MtfoqPWV@!Dckt`_f&+XTo?h3rD zOtXLZ*L=?7_Yz=B$cQ}b$<0kZj?yknhb%u+R7Jp`EK)G*B%I4@CZ~OFJ+KMpUVM!S z$aK~n&i!@1ecNM|XLTjgPSwAY{FYO7UR(Ku(YI$Dfy=m#UwS1g^&p$6$yhcL<Lbq} zj-5ECbKebsaLjZVOd)2$;k$!OOjnuGl%{`Qk;Xn6r0S%_5+9QGG7J;Z5*E*BgCoHA zSf)e@m!=5mW|n81R{K)HE~!9DYW?%@v8;(M0c%6M1N(ReI64?{-;WD}BRw)t&P-;O zXjJJLdM7o4lT7Pk=PO&r+=K18<`SQr6*|LCozg;GfY{rGSUUO2^?j^pU7#mdIuU=< zm<oG%{BBd{!YtFdoLr!IJ9@n5=BF*R%CTEp!d@$BmWiB>NK<Ow*pmG1+_+%AI<q_B z0jC3zjLB5RHlE$F?+%k1L*#%kpJ4UP<0%nie5Yo%o#zAT>BGcbzdu<|`S-~|47bg- zO=exYlJ0dth5oaEr1>zi%R#oV&6$4~G!}O~6B5iqk_k-lfCu~C$Bv~n0KOPvQ4qF_ zEt~R{8+kF^@pM&XhPdZ_5!Vqm-vCAY4&}&mtK^fp++*FG*N!|Y0O>0eq>QWatPKW~ zMSVdB`2ex($&pQuV59nMNI7<1xy_0Z8ROztDC$Rpl;gKO*$L|j45mN2)2)Bo$P_*> zXLA#%2~jBv%P{QmmSCQ-p_Pba2<5KdrCak<cnx>JQ<8jJ(15ZPgN`SLi2(Zw7R2eL zv|tyH(%GYeMY*G|egR=5^x`M&Z6^z_k2W{`MIB}R<$YWmqQ{Qx!7ICeX;!sf+nu3v z1|f`~JkxPDLpqq)C1GL%iwA!JN%FQavaIa<gm|yk^QtzaP1)-=&+$kxKWJD~>yn33 z;w~xv3gDXsHQ^X_;rBlKYE-drR+I;pEpTYF&jZ#9&y`Ryn=td+TEwFIAxqj6(&-P{ zWZq2ryWhVlz}D9u(@+aT!Ro)hQOv4DR8e^S;To9r00$hRjkkYU!VQ0P^fOO*Y)Wv! zyo?QsG@!Be!iBj5D&Eb->I<4;v9sVxtScD0PI}^~j$-InWsaivX_Yb&P?zlVN1;~6 z$kOy1+53m^c&(O<zy_2nvS1#lsqrjiw~mHQBO#(z$kWSbY*^5?a&nf=5d@xehXk8t z^6Btx2oj5JJW7k*t7Ly0{rno&t`-n&O=)db(V4zvG*uq8O4M{vGMh9zth4$2V92V- zgjF@-3n=B<a!|`}DjdlN#5?I(o#r^1M5o#!dB%0Zye-e&&*PqZFO%VkqZ^HKQQ`<6 zo}W_^=qe}L9w95v!9^-5WAQ?sAhckHw`pt5?g1Vu1sfwKUw?naD-FAQtT37<A1x$= zJ>(ja;I}qqokPA~f3LYaUq`Vx2By9=u^UL<k;51u4S2!9NMW#mwOE{Tfi=p&?Gl0G z?C<dulE|OUWC4fspuf`2a&O*Rb!HNBDKAM!uooJq*JjOCUSKwIOQbOdI2Y%g$pLY( z&EJcT)U3ky5+{EX5%}(u^3ZVD>*Tq)<DhD8iNoowvVEu+T{%d=Kz*O7ztWr}UVpcF zap+G;AcSDuh&Fk~WU#{NLVxW-bGE%m{CLgJb3yCpIaoJI24~k&xt`??Il%bU=_AVA z01m1;lbHMX+04P0b%5E6O<YvHyPC(3`X!XfbYfi+PhWrRFNOB5SDlFI_#tu0w+p>R z^p3(@pGYxmn>0nrMVKCYoJ&juN$!d`!6vNaLT4hRtH86Sd2&0BW)iFe#2zW3;TIz1 zuEPt!c{VolO<u~nex8EIm%n>jr)~}B?JLOsyxofygjNFS)KS32TQ44iDDuG|SnV*! ze4}l!hYWv1F=0$B-%g>eXKNBA(2ukvwvBj_g{AdQfoq=YL@UaPD-@i<V7r_E@x*aS z{efF9G5=)1Y5GThVk4m-v}qthnjXITYA`u7s~c*uwI}=@=?t^_Ia-a|YH;6)JeSdH z?k=%>K_=SJsCqZG7^?0nLxF)uNu**mY}jC;j^cmkE<7>nk`)UT%*&_)JvqRwiGHrE zL112pGMP%P+&5{Cm`WHLrR2F2ZO8o7rvc3$y=bSJ4nUvQ>V@|R`4M*unxP7hH*jNO z;Hn>TPOe`fFQ%mfJ7$q3A}MO>`N6dm1;>yj7dM>Aa(7;n(mJ$@s5pAa+n=(`$86IP zs&Rh~H7RD64Z9jtx-Tg-9Q|h2lNoIFZ9hXw$z)@~!%!v(!qx0&4Ns)NmDkJRdr6Dc zuP<NdS*04Sb=e;IVxAhvROaf!EF0#jW`j5PdOd}qx^A7ztgn3A%VABpVfsqyhvsM_ z^m^v>8NI9T`pQ;o9g;e^g|GN-$mz$0T`GUNk)T(c#~eHik%$Okgcp`E486LaR>R3T z!5$-)E&PU&eXyC6!dDYgx=Eee%CVVLav5Ix?{83>kgd@WyqkSf>o^Y{=?8m~8fZ+% z`aM00TmuO=^=pJZD~3WdLvEM_TxVKgpdpT~TYt=lc58qe<`Qw@%;wp^B`t?yo4J22 z61|0kx#!pwgVhxDP}cRm49<i|E`PAL6P`OPOMoRzN_Qn<d^l(f7fbwzu)6+uR{UYz zP&@3S>AiwGtG`5W7KZoHTlJ?po@H@@IrMj$Xv8eSH*Aa7PkZ;95<0}wrP|Q<Oi5$O zr^ak@_gp3R{LCCuEyB;&^-c_sXW@ShW|TL@?ih-+NY4D)6<eI63F1z@O#$45N~B!6 z?C9iSk2W3^R2KC(;jV*+mR+~%MG-PRO2T^hO2UTL-;dpE^|R(R)46NdWD6_btnZyI zqo0SrMT>4JN3O^7EBeV`nHRj#yO>Snvu2QZb}UM+{@#C}WM@uMqnQ+1V!eNGA9=)C zGOxT9)^A{zeo^!NrQm`sMyX@cJN=sz+m(PW7{qq@r)_5;IVd_AMBAi@F9J~dYnXca z!OLdo@%6qLn0+xkQ3eE66Q@Pe!l7#y?7*Ie&K1JSxF$IM!~^T^iuQ3KxTQIM(^MTH z4e1Z{`Bw~4Ja3h8C=m3Te{g^AIKPpqwiG-<cQ36C{6NVlKEyNj4P#l+0V2A%Kha8s zqWL1@9Zv>ttOK6y!j4OTv$c!}Q-VehfNd1_3!FpTe2>Faet^JE#Dpi4h%!yb`&<R4 zZeIf6AcQjWC_GE4RFdq{P|#;<%FF3`QW%17z(K`b1{-@hHfauU^=E%zxHnbz^1_;7 zxI|L<hF0@*C96x6s?Yb{p8f8dB4~6~z$DRdlIG`=Bd`ae8E{FM8O`0I=}a7HvIFD% z50y<P1V2;xgcnC7b@BX_p_%RgB-hj5P|T4=v=u{S%u6)sc0c+mJHB`rvH@fjG{uW& zCwK_B-bB6EeN#M%r3rtA84)bV<{!VhK1qoScb^u=51-y0*f=OEVHuk9ZrcgN5#yu# zN)p^2eHZ`I#9U=%_PEuTiY4nF9`dA065jo#l&ULWES2fxj+kevL1TZTK+d+LF_@sT z1bGtgD^zRz*&Cp%Ef^<SK)Tq+_d45Z)g>&w*M{XnL>?Zk+uVPb(=_NA#zeX97f?wb zjmBkP=00sQnEJ4+C#4<_7xZrvix(%Ml<!lR$~sNHogvgvSAF(*x~*?)((I{^(u4P( znJ2Rx?I)6GKaY@?c!e1pjV9E8Xo%oB2(1~r@{8M&YI4m+stM3tA%P=Zd|QINOd(<} z5Wtqq8>Ec=jNgB9I$YIxDVR`>oerB~SXSpxhn_6tXB-}KXl<tsUMEX=6$9-E)>ufg zY%o7ztLbIAY{24e4dIGkVepMY(mLzeZ=;%Mx9%zX$FxG%(1}-K4)ll0ujhPY_J#*~ z@Bs_v$MRN?2I-AwsoVDVj|k<QE*>kSj#o*m*PmVBOnrZh9lB}QIz4=eo>z5e(;xBf zJ5G>PY0JUeowKO+EVw1EvfAZ?dzL9H^nvmLhxlS@?Jo`!(3t#XE(aSubmH7$o0mPF zff>Q65?VTBF{-Do3msqth!dXMde|Go!ciV%{&Ff?O${u3*cBSb8v?C1=u+|bm~_)D zL3j8T+w*@Cf-A8BrsILnR!vIu$EiP_T`BzgZRk-cMwPd_L|aA{tv#Lyu{jbja}YFt z%!$;N_u3rR>oru0yRhktr@p<fUt}uyiR{b}IRpQ)5jC=P0k^^WshX+WHcbDgD8G+A zG|irAi5ZtUDgI+oFSxGYx$J|%g5FfKxb!U#TPc5Zo?HKM%bOiZM~8EvA{JAjkL#K! z7A|G}U8_6YS8bE$CsU}Jj_(ffMSt9K$3!ie5WH2&hg=0D2sxu59MhG=(xOvseKRb{ z8~kRzHO{3yQ|R&vqr8vJB^{3wgwmrTU2Ld9y5nXxn9v{}sJ#W@9)ai3ADHX$Mv^k= zwbg&}9h*#HiDZXyy^ps!K?iA^r|1@%>UdYITZ?8CP1|#s7Wdfse$RMbZyMA0t9om{ zMPLVBKe&O*y&wdx_nWd4LX5eUu!FjkKD{M&yfcOjkIA0~h8NkW1p|oT+LdGB?+m8e zM?PfacDdnpLY){A;2~st?pa&_GeFG0$ruJ<q54>V4pr?B3jWLu-}UMBb4T7gS8srN zo4jiq>J<Hz(Uuy?3#rmtK&#mEI^y#XY6O4NKIbW+J)O)X`9SVZ$a84}et<z;5m}c( zQqI}x_d%x;fp4zEEq!`APoJpcG3K5Xhc=7kj7)=RmRsA`f->xgVWSocRbg8_C$G(p z%tj4=ccNom>cp}plX<(*G#))xn@Y+iAReh(AqLEDUs(k-n032iS&Jl6Msrf<uTu0n zCmdveb~R~VRZp*d5$^Ki<0m-yPpJCxu9GEfV>2MW6_pEd5FdJphA8neFgriX_V(XA zIPDhr|Fq(g)VPT^%`Hxwgxq=^fBs2>wpgHl@!_N}>D>VR(I!#HL^m<D)Uq-MQpb`e zK_$%l1E_P$Wkh`PsYRg!DFm9*y|C}iEikA{sC++?<g#~3*<EXtaaA-?K9MYASIB&M zWgRO#+ZRX$8>hHEx$A!L6T>o56PKBzrP;@H!YC7e$=lFlXexH7>wYtM3vM3Si(K}9 z@SsId<{2bf>@0}DatB0BNzFWvT@d8Aq~cXKH`tMF4dZ{E&l!C6-2`r&s)<U?dVl%$ zO#|6yvQWe^d;qIYWk6`)0Nxb)8RBbhe4>I64^%kubgT63G|5<;N>(G1*xjSfKJN3K z-b?}{J}x9YPcm$W_mL7nRHx@7qJ+zT4Ew8M@AJf0igZPm0V5uFlBQ@vmTN-g5$+O8 zBb3u+vL<J#xVH@aL)r4LXKDD3YHI;qIPSVt&Csp<R9okno%Oo@*69zBY<BJMwD+?o z#CYD(%8?gQpji}$>r~4rc1m7J%#7Yl5OxTtaGwe;h@E5Y%e}(CRo3WSWvu3ZEu(5N z-%y`}4rpUFZ59)4G>=)PU#L}qpwd%@nxrELwsrG)riBmFl56^aF(CqeQ+Wrk2_K~d z1+4e%nz_ATX`Rx6YglkTeR<K`WHX4t67$thb?=M{gjCJ&j-b$pukQ~H5*I{PoqNYF z39mz#9JIf3%m2hZsHXoDVvv7-wt$OTlF<iqx?YFaYXJl1oJDoXv+r`yWk)Q{6mn!S zFZhSTdeIQohuAPq<d09P`Du@CR23IyXyL;c4l~>vCYB`m&6O({Vdifg`r-4_TAl0= z>6!)O;iMtOIbybn%e@sRLLv4_9(Ms+SDsGZ!5@8cdt_$ol+nWTx&2LlOJ;3a3%i6^ z&ST~-l;N3s_;BLpv};Wo7ZRSN(sWj8F$v1wUtt=bEMfaUJs^8S4?DM8GEMfS3hg_- zgkw~6Ojf+$j7Yh5(Ml6~gTr3c1&@DLTZ@fNgZuiFsu)zKy|Tuu+Nr_){>{gwWdUQF zTe6L6*i*Td6=7vIu8{kGz|LCmsFDog?zx_{TC)R{!`9UuJ)>gvUKr?Q${K1?K%^UV z+5G_(MtEexcCa409Fb#rx29)4Z+-|lmg5&5ArnavJOhTX03SFyO8_{#r_QkT74pb) zc$zdTF7;@DG#$?Ts(QZiu0q6Ug;0q&MPLtR&&nfK?Zni`hjZqCg$W4-j!vvff>X^M z^+CECu|d=ivT^geDFecvwlYak!E`T~$#@l;_qKfZAkFnQ3APVMPOAKJ`$?Aiy-W)1 z-6n(Z!7LsvjtK2wxEvEkRlRIIhke+Ub+7pp^tVqj13uNO09qAQ>=pCnl(Y-O@8s?B zp4H{qOXyAdHp_8;1&Q|OzZ?kZ;Z|VnOT$;Jh&1w$Ij@Y&1-CFj?J3hVsdpl3H=$(% z5RVb8#w3JEjHVgk2z|vL;6Lz0mk<mjzmfYgCDw}3akFD$cmH7CE4ttTF48E$qG-Fd z3pe7wLpy?Gu8k=|jtJY(n+ax->HYF@4Lq!KUJv|4!b%r^K~fR6Nl+QKRWc_WrGJ(t z)she(a)6%{N%~&G@;v9_tbTT6@)mh|sT(>8FG6Ko(6T9y&cIqRQh`(bJ3h2fziVXU zR|u_I>XEj#`U2)JRcB}wefuJsK(05FM|kO4EiX5ui|X~{ZYY!=8v_I*<64)&kfa)a zc(e;j=h(7;(SA?QB46>G0Z5O0%S61peTXU^-B}eDw!d(S;y-TI<03)$g!oxyJpKDf zQay%_%h$Pi6!b~MP39gvWmO)CMsS~gx1glS!gq)%ak|toN1n{A#m0BH{W7eim(0sz z)zGEKZoCTyTSXfjR7ho|`rV5Nj9KWC6W8YpT7fNp)~3y0D_7at&o^`qPMyzu)%XyH zTFF=NVsc;5w`y3_QeQFVG$A6kT|ew`86R@Eum1$S*`Duv#J^idsN?s^=xGGDMYi>n z?~~81*j_x=1KU{Ioe{`!XHH2E+Md}UMsB-s!G(fvPp^k@I8269o5dyz?C!4J!RRQp z8(&U;xAPtXVeP-z0Fc)xZbe#3hjGz@X36F3`bcQ=S|wJ53;0tx?47mUWJ8myD{zN> zW2gd6S0(Z6s@?nMn(m7##(!*}6AW4{H{PL+C6sMNZ++jd(!Fa|gn!L3Fzp|uAakx> z#?Y*bOBJ$ngb}#q5;D3$c%ME4++{U=KDU*B5`e1PHb^zjp<Y*)9n}n5m{hxw_>_J% zBF$c-ClrHurb>^TgroYCQ8QgZ`&w#KwAl4Vx-{NY{!{tA9^c})o5>CygMqV~v7(YZ zQ({xcLc2ni(tbtiG_S$^xA-(oZ>t1P3YrEJe=W<FiP*kIA=3Q<xSNsoz~D5*H~y1< za+pG&M0q0;X*R6W-O!Zq$+qJKkWNE?ZYfNPZmjDhAj-I4g}ZO(kXv4&s4L-cxCb)i z5Gtfx_n?23>+V4b;CPqr$$RVrZ&<y!)3-w|q8W0j^W%Kv6fL+J0m6C=Tdz`OVW|>t z?83%1IwkM+Ex&JnZBF;Hnrd_eON<A9tz@_A@=+%tGumhQY)>i}0*rv@IIRYwn5?;u zofv#*4enNLzsitZyvXTlXSa54Fj<7~VwShd4>diUCex{bxW{3M*4|&(;6L%-Qo~oo z60qTt&xfU>-XVSLQ;c*~=_lr5pK$Ns&woM(Od9YwZORn#peNUUMul>iAU}V9Tf0aI z+^pCpu$V<?{wDrXZ$8Rz24l4vz=j<MoD`tFusH~KbKU2cN@QsvJu|^`6NzJpc>&h= z6P=%<`7o$dc6_^q{uIA7*R<Hm1H0sDy04<K1?%nWOd>ApA#q!1Z?5wMS)r+UsWV!C zdi#<piFixFJf;E8FqN6+;rnENa&7iXL~k9Lht<Sl^v08$X^F(`N&D956HC4*%3_N7 zR?;dzTnc&FL;(8T&fe+gl?TwnUw;C**ODLYDKOWLE@WsN9(83nR&Rl2E9V68KIq43 z%qq&0-qNUtfX`Y8lkDKf%9}UKyjI=V=jymgxHlsEYw+KrZ+ssP_`k1zIu%B7W&~Ch zt?ZLFyf!>RA()VFC_bvVi{2nljbDswT6f{#l910y1R>K8Tfme)9a#4bZ3Z>2Oe1#2 z%x86E;v9A`0vvX~t{%)$^h4pbwG}2(hG64=x<B&D#xdF+b`RISlyhXoitV3Q-e+^T z{`tP;I@Sis{)~B=h$ozXv5Z!&;ZC@@3LcS4vPS?Pd{V+skclI`zTebNRY7R*0TpiC zArgG^k&F)}UgVO&u)JEFHsFi)hx82jU_3M&gN9m+HOJt~&Muy)?_Yg>cGea!#(&3f zrkGbaZwNa_#^@KeD!YM!x<qzkMQB!-IK&g2vwLQ*i;_IZM2>KOq~PA_0EXr+epqNz z>+2VoYZC*%mnzF+I90K_?EW;WxL?y6kLEZfv8gh$t-|?gmDYdrB*$ENcb2#Q+^mSG zv(xcICg|w$VmI?L;Rl1n*SD1N1oZCL=bIM$0S+oqr0ltNw_Z5kan6t7F}rGnnR>ym zl8&#ft^L}Ce{?#39+mRR;S7e*F%n8am2qDkp^`^^7lmySs$v}``52B<k$`b#3*8|o z5FGrmP-W$Nn9xhWbb{uxvXm?AeJu?x<KSJqpg|l?+-$KP%aTa6BNR=kW9JKwRS%9L zRTln@f-l_oVQhj|6582I1;WvS3_cT;Fb+1sdFYhR88zpB0`3L&Ndeok(OD@!kUiOk zs;&^`9FGS!svx2!H<0eGhMQrsW(A!<>AWy*c?v#QQWXBZK90D_aRso`1-Gjlc<7O9 zAi&3;5DEX4PKA5b&hjPL!Pzw_xXs#>>%#hu&UMD%oV5Xh<jK(f$Es<kpwE+UZ&o6t zs^zgDqInH}Q|{5!xs#`{+o}gKbH;ZE>q56ev6#@&Eh%Vy9vXQrau)0(z-)WCt1Xj9 z)_uHJZX&#!0ASOHm>2YZ32y~f8nr09|HJm_oPsbx3=cyAKzoOY7chzMUh~OIHmvN8 z(_2xI&uB0K_tx>Zw9%h+mcs{lWg)<^PIqvV82iJ2kBG4(IW)LOeb_wYRi|a3exfyU zzxs6L36ykOWict*GN`f0-u@s{&d*C<RGD?osWvZBg<i8H(q4dhS1o+mQ@<$PY%;@8 z8*Uy7bb+slpQ1Fg2PB+$4zDG{bU(Z1TAyx5hw!vNk@V9-;UgZT)fV=p1K4}GYUk?x z(cij%ZOYGEeW5^NJQKCAKrG}o_7ihJWhl|M7pL`rcK<+Zl|X&eyS3ed;kr82u!;SQ zFQkd#Wjdea=q{ESp!gC=iLB~+`V4bnEp+Iq*z^9!(h^f3?RFieNkoi|n#9uA9km-m zv%;vQb;Ao72O#4I<sB*5hi`?l*x$a$SQof|nFut`yzpM96~iK+?Eg%<N(sTE);U9Z z1^8HeA9Fall^8c1T_}YbD`!&v>UGO2J%EDF4iz(~?m;Xc)wdtJAn2Rkgb3e@-bz$I zgiD!aIU$OI`i&zPk$MMiR@ZjsI1tt6M(bM>Qseuu=aNB}pw$J%H*FiJMVOP3vDGAh zjF<lR>s4btz;|l^oo)(^U?VWY<MLPx_E(Yt2!;Vzzx;^+J!;|I9xuB(4jJ>8C%^h{ z*3PIqUjD((Z<996Oa&SZHCBZX<SOvq%o7##3ZD6OU5|g>i`iArcsoH?HA;L-UJ!`{ zwFF<0<1GMr-(fJ9x$s3DF478KN)O(DU4N8*omN0;T2g$&l#^@;UK(*p<pZ{mfz7nw zDYFZ{lMa|*o)ZI|U{-zlS6w|E@$4dK;r+U)%n&;1sffMvNkZ|OjDUqDwPxIWt@ZnB z40-ETjWOG$<#0AsW&-iq1qra69)HR;NSUiJA7PvKZ0N}xyEROfLM68X(#=GFL!EU< zN=kZqDFv$m?@u(!Q(#MUm75G4GB4k}K`>Yxz|k}F@2?r4g}!Pw;jT{FTcdqW-c>V^ zWRo+Lj2=()KY1gz=LAL)A-7_hx{YPMigt7BrJQG5{Hbqa)ksKdkq1|?LPDYMc}00z z{oPbdNt{ZcVXfz?jCztz6YIi%hK$MT@&|}_HMEE^JaKfaIO)l&niXaQ_NRK-y`Q{Q zBgpcp^KL?#T^8SV@nyL^cUs4&b;e&jST?3c&KDS76_q4;oS-1V9uqL&EIL^9%=tTp z8;gp5705P{TGa?iHt=8@w(@~#d~FF=PSJ9|2>yW#kt*-l`i{-_x~p4%#Vp#sa+Xfp zqW5hmI~eoaI8HfHKxUh8Oegh2TF#@Z!4{`Wnm?SGq>z`CxVgvP^*3)ZK~_peRfe8H ztG?$wUn`sm6H59LpRow7A+RGE@YG?T^3NXSTn)-#ayX8>-e;ns#7dP~8ID*s9lh*! zEIF#t7j}BwA{{D0Jm0o|3&t89)JJbW`S7Z+@RFEf%(K;(a9;+RpAcoH380%n>wxzA zNBq!Ks9hI^j82{q+c#7(P&QtHZ+Z7a;|329wsgzkS;-&@5D;E|cqZH;aq<D)O^@XP zvJz;3ov&`;-0v6EQNk5Cx&Q-{oyHrxb!UbaPIorg#Sge1OSHm&GV`Y&xZSPfb;l6e zS8#X9zUx;}W8QW7NkL)`eC9>8a%N``ygp($Q4fDGEZ77hmgK=emds_6Xa*Wf;17$$ zn+Crs&@_m@S!zy!GR$VAkMS^Sz$q_wFGg%3(s3hWR=@Lr5Z`8G7M(L-$c%dm1fS-U z%C;<?%tRPOsr!_F;W&!6;QW@OxGoejkhSBz0i!+FkzeOv(FB#Z1x9Nv3TlMkxk@4< zN7yWF%jt&Z1bMzvi)t!~Aj~i<l+x;_rRlXawQ^6L3AoXG%ppw!Rn6j?hm>fK6^axs zp+}h9Qss{tOd*>;N|t=TVwDd&5s5qSDyy^oWI#PwPqV#$xWE{|7EO4vUJK|+BzoLC z<Gxon>hAxt0=q=$+-}a9-_cTN_CzjPEYWVOS?AU)U-q1C?FYmf$%J8Y2M6YI2%Nvy zro<v*B!UG@TMVth%NVrFMfqOyALywu9^%>EHHE0l1EiIL3t3@%-9(`#$;}R#EtnW& zk>-anP;vNw_Ixh`0$vIAJd1?*xq$*$V|*;ek<fY<YS6g1V}g?N@BPJHcIv)-fr$Mk ziS60G+O0POZy)PAo%n-vA3b658u&aBZysy=@Qk`B*-wmLf#L58<}F4pcUD!3EI6}n zQd|4<Han4iiNWF9fVY}+8@AiX#*!*+<u@HGzZgn?MBjJjF?LVGb$fP7K;3sH&c))~ zBvdb{!yir^MY@@`vNX;BuKnJ%Fi*tDH@T{#3i;>#bKvixkxjS`M+#6Ks=2ymKIxQT zsqRV`Q~Z!4@=W2Ip=*u`Jtm)Ox?=e{J=%Qx3ehkh+NV3wK!PJU8@4_imaj9iJM=-b z9@<lXq`slwV4iiLwk2Ux$VU7<Tu#ZIxUpxUlp$p7xur)=gd<cWJY9*pp=DBSt!o@< z-JJJ+>?&UE<sK`k;?9Ep8rKg*EngfbL^am3IJB;v=Yzs|PC?2S6ww(WBqLI$H<^A% z1Y<C8nFv@!cfz?hH4JZfFQ0!>f%j`MVC?gM;0!^o^nlsB`lHaO5S$DQIhwyWbP_}j z*w1rHUu)j#f4$+^6qJx-3x(<#z`sJ~o)qcp9P$yv_d^q#cGkZmxU5zyiQC(5d&$c& z<@Gk)VY;YYvyZHX+%FMtz(Ss2AY|d5!dPoT-u2QHJR{6U(fp|kywA>xnj6C{+$))X zhUN8P>_SczB%Uwn6NIt&iS*5dAZv><`$;D9)3vq6=K|qko7~a^)lS4s%P2~)*<*EM zfwimo@06^l$t1WhdHmgqk#h57N0{I$%iidz1bY1_Myy{bWJ(wjvL*|dhH)qA=&wp! zJNZd>d+*iW@U<SOwq~wybToOg<%FVt_LV4&#)n@eMtuRug^ri*Ph<6VF~z>Jri43t zHdTb7f$5P1epY8PonYaXBqa>YC_JVgzDM_!SDJ#@lg{0JLYY~t`exm3ShsM?<;Jy> zZ8y=<69xM1D4qPoG4rl&<So<I8*TTGsNuR>Tt16nm-Az5Ir;#mCN2Ya?G6=xWlkKi zTLQZMs8@wqIrjr<7*pyIc(aaUc!}|Ca)wLBS_HXpIr-s;)?6&+493X48lAZXe$1LL zp3B*~*Ca593_%+Emn+IJ@;5XSmxMMQJMt6bw<O^k0|#q@iRG?Q5mQEjHA*!XOJ5(3 zaHU%I_)?;mrs(_*vlY_|t)aw!U^|tp82W-TQmP4KDp9uTzQ}bQ*uqbZ2benC?;+F& zf;lzh;}g-ZZW|Y$MS_0bh}f@wG>I~7lze?c#bk&4R`iuI^+#3Gr@J(&Qlri;sn_aD z!+tY%z%ZL50$yVG;_Pe&$p!vU$c3#gWV)gRwhwzkOK|~a?((W#NGCpjAoSy>MoEz< zowXfqr~U*jDM{VC%m`!Y2qhEJ0y;scCM|437|bsToX^uF#6xQOei-Zu-9_#JAERPW z<D`v^b<{s#W_#3=#}4ofqT1G2+bZ*ZGKLvN*;vuU%iC<*oG*#PWLB>5+yoc17(k2L z5XO$qFO<T&%+G)hM*r@ABNQqWqw-<6CH0ornDuHjlg;eQJXw{aJ(W#)_C8BA{_2BH zlgaZ|XF95=1$(S><=bmH@l<ygU8$5?wgRlMEn^j3roIv_xK?Y=7c<K!_&C6sv`CUy z9-N>fr*B`R>rmi^MVzB_x9y?&Dm10@$>S$5V(V~ns95L~>=#OZT1wgn;91>%v1!AB z3zYhcbT?}hm~27)q#B+a2H!r9)}vA1UaFU)xCfh$0Bm7QtkBjt*aLWQyGIkIH@^5J zMuCJbU}amn^z8(TszRxRU9nqZKr18kZJBQJ+E9*rHL#nd^xEmY!)AY*k~vMSVm#EW z7rdkfXGTxy&>4|`7{-pg*C}1%A@809X^`QxI4=H5W>ckDt`IJx_l6o2S<#XV`C+2+ zq9J=aCRWrE>G6{l<|&&F`hY2Mx~!eO!6a3n6Yj|j?DFx&AVNfSQw|+N(7xhf|6MGW z<i{{USe2wNt~X-Bc!RdOgh;Jsw-1U<bR}{sHYPZ?M_Jc@jXY+RczTP&^EDUL!DxK1 zk~TI30QVZ3p3vx0dJio_qxq2zqvll3?dvUXJ@b0GyH=vy4kB9``9LMyi$Z>N1d(bQ zI-F`8T?R6@$mFa5Gz#x5S>#2UIH{wW(8@VKQSoPrEbx{oMiz*=9h?q%Su>z{Ma9}g zbX3+Njfuv8!yXb1G!d0Za%i-Fo=D=nD5~I?GI*S7fbqLDcuvPjY(bl7V0G$(X&)2; z@uStXKXbJl{rFe@cR_YGRLGsi=PGPHl!J;4N`5D?S+1YRStuWMT<rEKzT<#Vy|d`A z0?JmEog7SERDQ*kgy)bRIDa_+wn1JDzW9D&gpB%sar!Dun-=4`ES(8CT<67Dx@%}( zi;vlotULXY(_*V5K(Jc?L9x<u`HClC#^XK4`oRn@(l;k151bP+_cuNwVl?MDkh3#m zz2z}q(9WBYe0=JKO~Xi_B+K4Cj$?AcTywsy9i$fh@x9Zm0S2dbDkr$WBl#U0pF|*c zEZ0PTN`YKyVN7K32j?hR#;)S;82sM32I3=vM5_DxW9)~i&Yvku=rL*%N5{L{X{4** z#!9U{uN+P}hU9-L=ud!?F^HiEL5ji(y3O51wNBc93EI{7YW^5{W$L4IElcS#vv<J1 zdxjX}I5ih4B0slgf*$Jnv%+G2S@;62=mxxh+oM!+UdiJG=Ccn0%xX3R!QBd&SSTy3 ztGNW5s=xG7MxOc+ZBjJk@MZv&ad--ItXE%Y!BO3FgwM@8+VjGkz{Y!&V-6w9S(IhB zo-O-p{IARNbDhJvLX@;3r1g4()?Ka+6w>PNUo7WV*t{Wgiwb!V#72Xywxi$5RDJA! z)$(x*^mSCcqSvmnEZdk>6I>=2xjFfInmkjzdU+?1mA;900DBUer9~J-ZFaZKyi4(k ze2Ldq!$$Pj9~%twJjv=E?Bu;=$LCu5<_`kQY#FpTvhI{Co~f62p5)qEr_yhTgj~*; zXN`QM0prZ@vwhy{?V<+zd9z%E6*|6ufoOSQuec@CU-qo!$*w2I0vQG}f+?ZY?86iV zEtKNW16rNF4r5yhk?n31CM(@2sL3BHa<&Od;D!wVyFO*r{cy$5Af>~`mu5`mOGk;# zG<7<(Vn^eJ@(yWI3$^xA-a5R0<8K~|{==3xHf{>q80k4g{<PA)Q=jroakguJs<>nV zFdt2SHohZA@Uz`7qJH<nq9ljg?f!CmHX=<U#qk^R8nI;eE-Ug8014WLunws|`I)$3 z<}h>bkWg@wFV>@47tbwtok%6Hrg@)TJ%9f&>LE8~v&ba;b5{>-HSL!aD2mSvg;tvh zPT#psqT-ZUujF4ppI&U~A2DBl0J!a)DeMV)&GLD)xe4C57A$X?wiJ4fHTEYUMX2Ce zJkS4(mMnUAcU8Nj*)wGB{eTylM`eHn5jj5*lC0EPsGC*CW((<ncfLpz2=<dmIv{=H zlwaVU#E6E`BDl{9@-s~NTTJo{%#I4gkcN0L3w^=mPPgf0E;)V9VR6xad@v=sFJ_)9 zi<)j;tlCzxDlC=tA$9crBx1<Xw0fjZgs8f(9^jl|=Bv<Vy37Hx@{;~ps^z1!))}!3 zh>tun(ngru6G%heXDB>$-yXsT(RFoC<#Fxzinytn0?2jbK0?&-3VQBR0H2BbiVhYj zPNwTOG7{p+R?*A)HP$YFG^XJSbIIqMXC}UHkEH38XZA*U<d&&nXua{RaWQkR1SH{n zmgz+Fvyg^<`>yp?=6VYeohP71XX|U~*5JyTRnLYKO9yM-=kHIe#iipIto~%@LW>CR z_qS3#D$lbMsv$HNXP2J7u|S5V-7{jXv3zX5d0Ut8sCOQK;Ece38)0G;Uon=V=s)(h zd~dHNK|8ip37>y>OIzepwsc(b+P%wqm4>1(_Gt4U?6iB(_=i63ByUXnOgsGfIa7zR z1zMdW)G|KeYWumUQ104SGEBHx4+%BjwGaa}kFPVha9fMT^=-m$ud=SsKCW)jVRln% zu%m69(Bv{5#l4|_iOC7k3isJ;D~GpX;j0#mCoY+Saw{$Iq?@aS@E7Q>Bb6GzBir__ zj|Uo0eXO_w2#bMf5Rif4?-QT}56;CpdyPS1aFs?t)*QLDa@BYi-SX!8a)$IGq3VJ@ z(I_o64Y)K?=8A;hM|j>>ol!bgevy)P%Y<FQziPR4D*VZR+=h3(u$Yp#*}8rnz)>^b z(gfGuc{D338f_`L?gWSDXH4#$zJ7qh6yk>f7e&KyP*q871nl*GXnhC=PxcSkZ)ujD z6&TuO5Kws6Us;9nWLF&XeChOvoS@5c!ndmt`@NjV-TsRV*l>%r+529N+n=<IH4(|7 zj#$JwzTb;~NpnA{W$<~6=Mp0m9W}p0na6u4U5+b0x;Sbg;TipfXz2TL;PZ)d^mjy< zeeYLXm5JKY8wlAFL00y`+oA6~)`c)%T+6Bh%fJWruR>qb3qPkx`#4>|x|ZqiO9vpf zjyciGWGtThLs#}Q$%Cmr3RLv_i^x-Oull_00<)EWcF`uyF%~M(>RQ>-xUXV`#SVal z_9eb>-$*F5%XJ*^E*Hc~Tol2oG1VRMC3=1U-&90<%c*U<De;17+G1#|coXjbvGhSu zaI{KeRYSz&et7#(wk4cYVKPcY|Hr^M-8X`IqeJx~0c@E}-X30TgT0?;aXnLlefXX} zs!~{g&4_SmoBJhqK`>&qm)R}J<b~tW>G?KI_-w=Mp@#vH`!bO1>t3|y3#}r==4A=T ztXq8SxPhUq@pYQFA6lVPB#ok+K5o(1NVa;H9ESJmw~_v^Uzk&=7k}3TOCpuCXEasT zBS*MdVx0Hoc~MHNd9roei%JAe4}o5j0j-^X*n6=+)iwp`J%4%ns52d5+ARQGFHaE+ zQYZ>LpywRpQ&IDIJ>7DH*LcsaHkuSKJyY3xF^&58bBnGmeioJFT<y60sE1;42fA79 zm1SSJ@>zZ=3OD8i!4s-{f>=P)acN_fDGL8|o(H}_YiW58LXUn!sOSnfCPzBCWDO>N zyS3c_SMuhQYV?^N)+RS<jneL2@xH;R;-EF21jhGmA6YIVywP_{iIn5mwuXoC7{Q&1 z@~a&|EAg0*4QW5*KG=xgY70~`uvU#EN2Bhbyvy@I2jaNHke*R@HYNjAmC>NNR+e7% z23jhX=SN9wZT9A#IWlC+M<ogHg%9<ABJHO&5?9|&*kc6k?s71eqgx0l_mLY0d`cc7 ztV&|Z<golUA7?iIovouhG`2GJT0D|$Q-M!AkM;Z5$0V-Ii#KIyZMfNoPYlx@K@D|M zE`zdBZ)P|5psEK2Cz~M!J4DX<e)4>zfN$?v#HB**gr*QSdas?!U6fPdxpU)xbL}wX z>ECfJin1luAAyLoN|u7a;px6K$+V<y60j{kv$I_UQAF%vlF)a*04;T$VX3dXp>hfg zPfExlG)(Vub8a*-KlXFXl}?2wh++1V!74;BvW=D4%rTjY70IC=S!n?c$rU99r{r4= z)7x^JW$`e`p3#L6Edk1=m|{nN+@jA0-fKHYkoU+ysXfv(Xcn37CpMD>{rYS?)k@JF z08?T)t`cmwAe#k%O#LGpPG1NkrC?kmo(<IX+4m+sW7Z_X_*RR~EJW;@ZKk%><0w%? zf>S9ybvrTSE>FU&su5wiq(H8q2!0~pQ@?j4GF1?k<t3z0x_XwW6AB7{dBT=K0S5>I zwW5b<!qj@AiCALl9uIFdlNksUKjP=a5kB^=CXQH29`?s#H(Mya_*A2Z1Txm_!g+9> zkv1?qR@wWEyHj;3>>u;+@aD$&Q_K0`Q^aU766mP)U2!*JuI`){{uCSv#pk!A`p7?I zf6%JT-!Ma3-I8Mv*fRWoo_mh>>&F$=AWqthZ7s{tculzLaW?)){}<#tRvrZrD~1b> zaKXxv$vOG!q(C+Jntq5xMr?)R*u1Y&Jv4mp^TCSghUy?>0<2vb#P}w>$zQQ7z~w%5 z?rjkGw+yO`Cb3PjJ$hHV9TYbtUHx#==YO3|4No4PcR`lfv_njPKvde&JDuV?Hn;6H zb_;ESKx<&>ZlUosaz&KFjHg-*iv(82nTYL|O92qDt~8xedkv~PdB!CY;6qwBteSSf zB4evpn}NbG8qs>!Wu0}~zPr2=jXyXYvl5N@UFnl!5cp#`^!2nB=$nlB8t=dPSVw4S z4(0Tha*XmvJ`R?DK8h4%lMmlTlcUnO2X=vTxw7*~eEUdU$;lBYoF&7vaks-Z)m>(k z<70(3$}wu{B|c+c|CK{)nD)XN+CQdxKzyDhP<G2$@dKYc&Zy!W#jnjv6+eFd=-x#6 z5Uj?Ud|X!?hx|=JDU%gXAoopSLW*i1IX9==dh=l}YPk4+4k`aYXXB+|{_I;Cl`)uY zZxl&bAGFE~v1=RjJJ~`Jaye%Ear~U;w4^qnXFOD1WwAxI0`1EngXhBh?L_nA<L_{N zX)yW#o&!HcQ|XJ7>m9FRwVnEEE;fYa7X5AA#HeI|R5z>=i>m|DvL-lxXhqd({#Sgy zA&iQe7P~rsb}jX4+L}bVx@66Fw{ODG?4nHwyY}cJ-~YslRsGBoUS{fx`-Zn*2MnH| z);;*72kKq)tjt5SDPg->NEl1cP0dN6c`}gi`9>}H6kFlxjd1v9xq}L^5F?7v;~9oL z$dM}yKt&2g#QUn4MYfUR0|Mzro)a!1dDFw?haM$=y@#+a5%UOXNG8E&$zdGHqZa09 z?N3KnW?(eVnXs{p#1C0m0{EZ6Ch7(a5ZvIH2AO_tQcE9x4*KZS^#N9f>bb!I4#8Ae zT2q8EQ0zJMhEt5JuZo52gYdi;!`*{TDt^1oB$@w3VYLsW@TUuzGq#R8?2QSlnC+r6 z=M_7D&*j>oh!^SxK5oa41MNAC@KClC6l2Hh^U5o6SLT&_*Yy@|n&37kB%gGzg3bte z9bq`7o;M<)n`Drfq8c`O;vq!&LYp|wguB+pzl9nSI1XV2G7pJDC3~1ba1JMf>4Ehm zaqDVZuW=Ty5PhUWb(5lh6*?V2-%-er;(;1}dKG+C-A|9X-3ck(jyhi_ZO-H<N+jW) zka+7|DO!LzP0ZbdV!}ebbe_3>=AbmU1n7!bX#ZKMo$QIy1M4?=SR&v{ogt>)(>{dG z{Gyhd^(X?abz?i^XtGO2tdv^xsFyJ5#=jA`m~y1cfq0VeuzZ6`&Vtbhs;>Zo1+-j$ z5S;y-R|Cz?jWIYro*7Ee?T69=y8UE&JCSg|wn;FUJO%PvICOOaq%g2oZY`wcB>109 za(JUynlzJ0L1)6>6GScc=nOQHF;jEg6w4K;UME7dB4;#=eD};Ci<2Ji98mEyR9J$g zg0&I87`i@;b@(a-VD+xkm01_W=}VG-nr!>HqSlQIR0yW4=5u*poGnWnp~Na0zN0rf z(~Zw{<^sJ+k*f$jk3heBULi|MCFa(@XW+DzZ8JCN3q`Ug@LtiP-l+J1;f-q;5U&54 z9CmSaOwR5Eb{#}NbewEp)!}iSrh6pqF?dNro>XW9L=TclPU_I*P)g6Gu|vgw{qP0u zp^};&o&6D+-EMTi$U#{E`LoX>ys<mc5wrK+jJjUAQUj9i)_jzlP$(xPp{TwxU&y)} zKV!S6AZlR@t^dI2>k`-@MD9+sKCh{a<Ol8w_>NhOWlJA=n$ZR$Gb_F~CJlf=^o$Ya zDqn-l6gW$Tb{O4#K{KHzq{>KtKlS5B;W9)s(*@S~#{urRhKD#E>ksuJiHE4>#GATK z?L53~YqRm<PNZo#$Evd0Rd}A%$oI_wPU!RjR?TrvWkpknsl8{5>zNwjgW}AuXwL<` zYZRH;<toe2Rd39l0}HV;C;BXC-%C0yUYNLj>y*@Eas2M#rc{JYT{Db-+s{!Kaw1ZZ zBH(K4h%?aa-!tCmStyv7IO~Xkv$2;ei4I3+(Y9?rg3CTdp>lSgSZlE&q4vZxoV9Ah zm$oRMd$s&rf)(hj%(G`9>hMr3TH}nuJ`Uiexx3;Ic-){4WET!)N}cUVX<z*$I<I-8 zQf$5Zp~@J}6pX89t-3{jKH&bAY%sRo@B|MseR^CETFx+p7(M2)C5;dJ?k=yJTrvVn zr$`LK=;G>hwG;e^J2A<hZlATGk`nR6uKkl+Po9WEb!$uv-%){I;A0FLaRG%v0mMW{ zD>fcfSk~766M`On;Q;4-4!IHpbP}}s=^lgGh24cZ;99-I@3u&P?5Bc+luP`|##xu^ zJ;FB?A)%PlC@1FtY&k5=4-?Ntx@w3rqu64Cl$;UWdd+|v%HsAs$sKMniXl|zBqin? zvN`=4#SJOm<S6UP%TF>&-DqjGHn(<fUE9ecMD(XJ?>=loNq5hP7cC_?F!+UkZ0ny9 zZ{8l6h3Jn=B<F#DS07QSHwy^mHUl*l`kuKfy4~JXK1`r0FK<)pPA)h%F}R#Ox@VFI zEe5u3tEKT6uJ6V-GRZ(51K`dQ8<qA>fN#7iE#w=YUb2*NH9fletu@JQ1!I{_IO%{9 zC1%C*yyKgt2fgfl_=avK>Jv*36iDRM-?Cd3LTwWwK42q%#9w7=OsN2G@g77ApYg7^ zfN0Ntc1Oe^e^WD!jqN8)+Rbv{v&0w^x)4HZdun3)!KT=5fHX?>&o15&(jl>r9YHf; zDX)=#3k+U=fXBJLZfJAy^3|k%0QxY;Ljz<MI_z#XLvG0r8vguY-+uiAeJ@S<gywCZ z>6que7q91kD~QApkeZL7zSp5tQ4dl$vc%;gDxz!88B{fUB5{<zH<v@Zn#n~H28S6< z{wOmVEqH~@EW>#qK}DXscJ+$H44KyR;V{s64a)xoM_oZ>rjAS;YXj#t!tE-wxsLY^ zbAWE-xcyqaW_eiS`SDP#JnL0WL_c>1AqaQ|M^j^ep`r6V$hohc374Gq+eFH|J{TwP z{?AULQF38BVz~B45~;GCyU-PCpJEiaaii%2SkoQ?Mq6?fiec^C$6Cg#QC0MVH4V(} zqZt$~p=IYyB2aaDt<Ekaaqna!s@OA>vs<*jW)Jku_s!%=$z6g}Oyt>W01Y6r&yISc z%Dnb}8YU^bg=pVl{MFQ%48;=;$@bozy048nYKZ+x`0O0GL%U;&mt!no$s2Kvbs<0> zar&T|<^+Dq3*I?yU*lOf5^I)_SyjRmQKfrYksYszfj;yIcc`<=iF1s%NY;n8jx=bB z2i=Cy7@Jw@6tEcVL0K?>xAj%sDncf$(z?ih+Vd#w8n?O+<b?>wb`hW;YL!ikGm~b( zn6sJu7GxCv64Ds+-bKCmba(KL5?6Pe-v^{qZ~#4T9Y&_z)xNu|l$wNAYy&iyGG4Z@ zta*B$a50}B^(xkYqZ+l}ME8gswpU&K7>134nViK{__aD<##2>+O2Wo=`B2ygjyZ9E zxLaiULGYd^cmUpdtzQ#~1+`J?wO66s<>FN2O0IRPk?U(yhME4d4)nOoA2ix(W+t&7 z{O`tt)oIv4`YF&`cxcDaUvafpyaZXl<-yVt_l`f|=bj8l^+d12o{W;U%ozG!39ucX z*V(wv@WTthlr)|)&ev``c)^~&rkN0b=tAr<_$_vca*YhxLSE}`j)Xg;<Mn}d+NQ^R zPkFT@L=6Mb<0c^U=%Uc4F1z8UR40OH3|N_Q9LmL|9Un}cDU5gE|0fF3Fz*uoN$Cf9 zY5vvkK<FTRcSya#ix-7m@|hq~pv$9Z=d;v);wU0uEhag;0^zO)wsp8<!1P*wqeBr1 z_x(sf6igpXN*2`5;>55N%eG>TL^wS|(~WM$>~m|L8sGkd_Dj}Ap(7D7Uv1}cVl+%6 z9&QUXBIC84)$8$ox(8YQwK-h@ns(}?@8)26Q+GKAih3K6Vv|4!jC-dqbfeVGR@f|2 zA@j6Q_c^>w?f@NXLz~M>pPv?gpM-wX;0aDw!DQrtsp)TuMG$f$BK8^ojU27C*Ihn5 z==Oc^iXmw`>z)86mH0|4n#~iSubrE8`W=E(D}&Md%$5~AX%V!sw>b`jp7tq&r)ymi zZ~`~BAfZVoT;c#~7+2ICQ+e9<k^`b!av7b$v#J|d<P<@vVj3E(_>>xdU-P=ZJqiYV zeTaJEV?Li?TPJc2k&T=l`i027DaT8sN^57!n)|i-ZC0qUg1WBi8$l37JK;~|^rQBX zJ9F!%YX-Je2KTC81Y=6bgs_oPzGtlayDsu-j*;U}r5fZGwql~?Xat2o@`!gPS0L=b z_VL+0fnp0`bZ@K^ix*aZlk~kdD6;yhl#Nc>fb6?6^M%4|?jKc%XvK0xY&x+WP=KcA ztKNrQLE->BSY_cTAp;LoYlEt28JmHG3DKwk*7-FI>pFk3_wt0hhA^anm%lJP(7XHt z$R`M!+IGuL=$LNMA+SUYV(6tfcH<`-LqyqQdywtlY7GIrfMVu<b^o-Am;zT2QJa6E z$?T-0FLRC4DcU2?;R&G5I^Apiy|wo-T}Bc_Z94|aS)W5dLf{l2t{njS{+AHL8W<V) zT(FP8xtVs6#AoT+XsRBbD8+RZFG+Lr=xqy?)`;9S@rKcilbH~E-sCus5ISjX#HPsB zW5J}_8guxP7Ui~ohbE)y?1{Xkz;D=<Kgle>Xl)k1rIxOz*Ca)tmY-KU*<1e!h`;G~ zypP_&yPHA(-ZEa>n6PRdF#@nMSRst}tHWzH0D0)8U|KhbgEN8h4}J!LY0>vSD5%SV z!vpP0AgY@#6am^ApajK0Z%YFGnl9rOJnx}7GYg(VeA&Z)s>Mc4-13r@KsJUkBk<W- z&M&$wCs(5p7r&*}a{QVnP{otfWjbg}3w=#U-Nn{z=|A6Xy%BF%du{x&Ya@To3s1s? zV6RpPohp+Zmh~}ly1}_drOFO)<@z=M*fC6rnGvY?%I!ktGuVyeEi~4~C!^!1mNA;e zL<IXt9Q6`^=(~!qlM60aYvghWXMr`krzZ?S6CEoT=nJ($VR~p{5Ul&K8|Qb^u0`#* z1*||C8o-`Fu&<gbi+e9d=irylcaK33lQbnbh!$1kmP}DwiqBC36c8lJ^`3c5J6KGk z((Kt7*qW~KMyYD{f#ZyL1zf-AeOq-wFbpl%SyN|!*#;50)RP^7+?Om3;1$XUEqk^* z$n&%}FB8K9zXiRi6IP;m?bG_>Q%D6-l$6u+IwZA9pkhwVT5MKdEupYtcupkct$U~M zrZW_KPrwH+1q&EaUJ@{^-y@p)t9RZfK=#v@`=Mn;%Ny_6u_RkUbo~)N`a=Z<WwAV? zrCa8IwKM~(8u*qV>uk{|>aNWYBd$>B8ryc2pRswN+zuxTi|9snxq=i1yLdF#SYY%Q zvRdsRY4{eXF<p}vtH%5@3N9u3b538|&cQHhdHKfNnFt_DO3>Qf;!QQ}i&H@py!LcJ z{cfK2ID0F<psH7!4l9xTS+qK`d$5o<nH6$>aSle=Naha5YUCw!=n!YDrpcj}#(dZX zyNAn}i?ju#=DuT`6(og~vF$uh`d?mpMf)W;6vw&VZHsY0)pToSmU$ugVh3rf-7ug- zkh9U$y?AY69(X4c7lTNj>S1Xw-n?Al{y27lJz4$x>LS(@R_S#AW!W~Ok+(>fGVb4h zn8oaoR75a064tz!oK`%Ec8~7`Lp`eKH5K#8{ej!1L$7oJ<j5W2k}$}!hm=rd1u55z zl*KG<Zk-a|0pxHGO|kDPB^M_rvSB3edI@{{%AK<*xtoRT@6WDf2S#^5&A7Zz;EQ7e zsFSgG8X`Y5C5F<ehS+dwqgeR%3BjO$^`}gcdrKdnj|o?bMTzp78S@ku)dxiI6f`KC zn@Po(Q=atU!S?}2KVKGk{k@&}ziXT3H*)k|m|M@@GGq>x{Pav)!}PW~fEx-t4Vt36 ze(OWFQ4oVxsPK#s%LJQ@y+=NMR8-1KP7)l@ZMwJA5-Vw#^2D_D{QPpYc0JgCnK7Rn z1Kn}cYXL5mFmp7!bo=9kM?6@AHKdBx3U6_4`B;?7te0s^3>+fYDx&<b_Y4+uBTAlc zoJsa-JmE1p)A`7fgp6{&n?Uo+sOblt8Q%(2<J@9fD3_tSya*l7Ml*&3QG0xqIH(L0 zMw(U<fsUT!CJpX`rk{|&_QWlJ9coLferUj+jqSYqss#dRkmL+X&<D`Wbj#-5@R}g( zo{D_5PZ^%RT2j%n=<1zNe2nwg!8xuX`8cKG_PClwhAjJi08-L!B@XV|g1G;)W4^{n zb#GJT@>x$mR}#dhX4P@${#0$&H<Y+-8(@iCD3W04##Vau3sjiQQZV^{-|o4IBdB4c zsa{AI+Ba6CT37uJ2`y#TBZ;N}i!?Twb+sv$yA0c_MGwP8U|3XnCiz@k;tJo6%txi3 zILP`YzJ|fxuxZ0_un(kJ+f9rzKlBQ3jq}*@dP#fxt>E1nlp8=j?ua9co6DyTQSd(d zAMIawtwJ=XCwZW%aqTI8GoWCBOLT`;E|eUF#PBZ5BkX5FXey2aXsQER6Mv{U@F<d! zvg`7keb3;6yI>ncT^TmmO<9Z^HVx;_J6eOlP_@~|a&oZO7RMRyqB2&!wOJfA+6C}V z7xf(hq(E+?%Fom1k31PzO(np8NnbVn4-m1Iu(f-FP%<7=A`xDHQ@nx5V=Ra}bMEQR zeK!=^K^M6B6~Gg!;kt1oPRkdK-sU9V2-wF(lI)c_gj0_E0HPn3xWIXX|ET`Nz1YGL z@*a|DbANy7UrLpG6s_{6&AtE|idd6g;>ikoRcQV&Sk>aqxy!ve*0oeA?yx&X{2v*Z zf|UqT2E??o8VRa@7nBWQ8LuphaLEMS>uB4WH2drL&)3X>J}J1FDWYsl+?i*t-Fp*o zs+3|$CU{Un5<gdjqQmz0H6z8xiy^=SrJ_q-AfF8*uiw`5QT*bgX|7GQ8NrhbX#)== z6za}A_TbnYexL!hWh<3sx@t$H3(@Y$p3B$Q&UEM6Vby<s2-odB#vUz_tr9C+yw+(5 zqY&`{ZNWA-+O7KDNV<aYiE^U?{(Z~3m}(@!8#(FC3t#fsP?0OwO?1l{z*MOwGe~A! zncZKzCtDdjq}^K`?4Jn=sW1C20>_o}!i-1ku+=Zw>&JBf6T-%VE!bRQ3`r_#vMC8+ z;5BtM$7-#AAh9c8WMajCMZ4V^taj!>_?G^vm=zF+z;j4%EVCHknZf}cLIKGSXDhNB ztIkA!h*Fi7>ED{AZrXg+iqE-YY~Wp#_B056y<Ny@+SwYozyZC{(Q);1{zT83wxUc9 zzn8V_;|E7oR2wS-YJr1RJ$=35Sx&`KXRz$pi1QAA31!R7EQb&iy+d*KztSkUZwB19 zrmsUm!=+qN*>jsgU)eNWqHD5eUB$tkEhx(Vb3^NBc1!@MGGn#g;5Z(yGL7R5WeI|; zB`&>A&qn=eKDpkv>>^A3x3<i*4j~zIfVDKOz}!&Ao%-RIQoj9G2brod_!JBC2DaPa z-Xdgwba@7vJg$mhdTH}Td7;~;!!0R-rb340&jHS`i&jhQR}uxG-HI0g)%vo1-Q1|s zbZhAoV`tCKEw%Rx1TS*R7=qiX<WT1?=qr%iax1bBn6RmwI7aVJKcJ#IsdROA+S!$V zcn1L~VX<Gxcx}lJbC#u8Z<fQi5s$VmRH-F@1K%5uq#1Y8gZsch9x8@vBKnaq*zpbY z0hc~Bg{kEdAJG@ib#C~p7}Ko8lYlWn%Kr5pR?>D2Ot`WjwH%~n=X%qXd3Nv`Nf*X> zW+h!N6OO{^jL;?1;>US+n)>BBA$*T2<s@c?!w#P#mDxCKLE`;G#IhqTIUtBUmTYW) z<Wa%}{EoSAaS|N=Rql6RAOxp|g0mC1ANUI?uxy6_sNn2;15fJAsQa`I`4WFkz)N9Z z8WCs9?zKw^FfXPJ4DvJ+Xt;%P@hlZqUZ5k!q3YkA$<4?*X35e8E)YsyQcz;;=`{7V zE-E+Y7)E^EiQ!n0cu`UnQ-O@6du+*n6xs<X*R<?D<n;3w-|of<macZU6NSi!?uzi8 z*pZ5D2EB(U!9UtI{%=5e-H!5zye67PfUlYawfq8nqV@<_8}GBnstb=34TtJvsiPy6 z`Nf;?KuR{-N}z^VGi!cj$x2qEH8uzh!Xp~<;JPYnT)C`UQxHmB=|+3=22b>V%CK$e zsoBx2$#8cRREa&obXqc{ZG^x+qX*q#DK`yqmiy>sq~oy&%L0#Lkt#uehz*&@;%Zwt zkZQt;J)(0%%*kg76g{e9j4Jxd3&5vFVJfP7xToD_jB>bSyD3}Op~jnnqJr`WCaO;M zUWhLjY!X467Z~48GgvK3XTV8+CW6UO0+_3}<Ny57bqCNjK#V5@sR(dyD*ToQfSki_ zC({m=GVZUwd0ORwZMCY4g_5i3B${O3g{^XUHBE0y1kSPHgZxG`h#Ct%L0;rv<Ef2E zZG7?Tu4`bxt=bzl-a->DnryaEG`IZ7j@2cC`hZzTqaGz;RABa0#h&_q>Zw2xQl%st z3lP>6**sv7HH=1Tn#L;+n_neaR`|<yzq|g34kY?~{6}or;iWg?#taK&av*xCXQR7< z%x|cqh}S>wamW5?W}gK+p#}bXiWnVM35ysLGcv71L1UvF&Ss%8R}6mTyxEb!=kVY` z(Fxr-0pDlc{?t8$-ev87yXFR^)dvJ=zWH=KG0_g2M%X+dDf2-1Vc;%+A%tk9^>?*N zmyO2U+UE(F2v_An#L+ZIl3chTUAF;WnUgC<-<PfhkzUy|o*N?Jf*l$FL2Ik-D_}fo zY%;8gRsVAV;2HBGRM;Rk_BergUx;X=U1SZE!#@KI0JJO<!Q-=kz5S(g>CGwYn3UK= z%iDceAi?Vn`Iv*9xY*4STmFZ0rvov6h%#K(%flF@LQ+X9vX6D;S~`Vq3IReAPUqn2 zgKnwvM7@*+RI6{X?U_NV%WySmWXClEC{SSj18|7XyDqmtWq8wp#T-1+NR}n=4ku`^ zbj^F;?fQoTMd3$(OfGjc1jY<4)hqUt+TlI<7I?|wc9lsWQnwHvF{&vicE8aPd+z!S z#W-4{lR-pSI3xMQmeKk;(`n8z?{C+teL8X&C+8y|#jn)1e~lnc4~4q>FPeSn+wa6k z<hB>l_9UGZg&NpqkSCwW^$<@u-1qv!vKsNsXabTgxHEZwhGE`C>^OrR=~H|o{Tl6o zx5nU>j~9t71n^bQa-<rs2dl0;I48p0U;3^9ia>S0SuaWD7Q7+mB7DS?X=2d$uNBf~ znUH41z4C(1Y;0sV6Y<c9^=M*m7Z!wMmVY8zeY%><W2CdB8I1vRdciBeF+A67g^oM3 z$4ij6*BdQ0Je1^bf3rZy$m^k`6Sf+IB;1F#Za}JaO#3~6NVvCnnd>%+>Wt61iA@U7 zi>OS%q5gBNLrBji6SilFe}+%tOEuC|0^|vP;l<nnfo}?4AsU@mD5v@b#mDX?VbSEn z9qsIC{it^pr7;HBWsvFpR7-{nX%v2JC_@Mp;FpU$@G9*?e|r`k!3J0mm8LY7BTL`w znvNMx<VYG=t<RK8JO-k8_EiF<IYFaf?pQ44U3iJ{$UaGXT>2tWbt$EzaDmrSpOi_G zo~9#e`b&&}u2+l5t(Q1j_a!UO#T2JFs^h3eGG$#$liVNS@9|_P?}q3UXWidN+T|Sq z3g0;#)`M9af3Ord#Ux%@kIOujkRzkWopmC=fmb@M+q~b!0-26JTa~qzP)TD3_R3jS zt;Gs0oqI<g>5bsWJtuMc`$_2RX3dzy`!8m|3nYqW5Ch?IJ2r3$8I(AOmQZ*IW?P~` zIbPSOGNaX?CLwQbh1LGedg>cqe@=94E$Vaw-U7qLf5pJdloMksto=B@<WYz{uh*r7 z8hQRs(l?fu!UFG&!a}T78<9d?!SBK|7N-S(e*C%9^|G9sg9*&?@a>DKS2VNkObvqL z&tQ(!wF13(Ki327J<~dGa`Ak($2I)$)*RE$zpGTEP>aZBJ?VALe<TI(vb7t~Oez(? zk!$PAe`*B#W4)hj0eAroLXxxK1P@+4C7z%b;&Y7_pyrUV28+@kXHw$LyvvO2M$hF> zu6)+}fsbb3C)dB@W4PM=9H!3kBHx?rakRJ^hnn<HPz=eM<z91s%zIO**cyEQDDp>~ zMlF>9VdKLg->7{aQm3=?X9snJ;lEv(l;VjGf6YFtBx@E~Y%S20cRIMG%q6o|EA+)^ zqvMIvWi9fskIw;BWFoD4=j9p~nKt8RXk){M9k(w!;jJ`%z*o5q>@FiHF-q*#(g#{T z@+=T2^6L2@v+|Ed1L!by;IG1~s&F}v?wK_)ZYK*~<dxrn%xs-uHym;~da3xZqQAz9 zfBkv1cRVCCH_WT;>9<sx7Z93S(+SM*nOp3zI^Qvpo0Pgae>}GVw;Ish%)MkT+hjt) z#TiKk#rV@<h`y<|k>n73naen&mpBqhvXp046})3ap5`2dbmr|*GjXe3=jZngc5>f3 z>v0Mg%ChR)&W$A=UZF(`n8#jOdwJ1{f76JX39$phHi|?5FNBXBizeVW;Tsx_EL`Gs zsAH{<)psw2Ljh~;F$_K}Y&4%O_tykJH%cU&M_f<NrLUp}W-(t2=l%zIjsrx;Y5&_k z1a?RBfb^C>lhIh?K&JuEhZ}#57grCS0_QkQKP$`|EePgBSl$V5fV7;WL`+eie_IH` z^p^{nr?TDji|*}Lih!qEQ@rqhnE`_yj54@2sG<1nofnFNHQULbm|sP#om6=592>yc zB4=fr?u8~L?Ltqdcf!CjCe0A&=6FwnHWX3dvlRLGBm8xcK)32J3=6m?N5p>^+=YP= zj?`k;`pBd>Pd#+y+97@G_CF9Ae^8Mf@QsxpQ3QAZ{Rw;6B7*|q=t)JNIYA@0k%Cfk zC_SrZ<Rl878HKx1X&$WB;>3;-&cUJX&bBDodX1rW*##%$+gAg0jAqo&X6+Zn8B^u^ z<5Ht**KOclt6@cl=Z-&Zhu1tMTDW=12=Ad8nIZdRzyRi!y#jb50Ie=3e}=I%Pp6ZG z_|8_7l%Murjd#h=RVN%M@CY!PCsFv^Px{Ualee_`>vUV{bF9^6BX@%1vaS?9_P~E% z;j~4W8!K7D8&z@h)8PMkV+y2%8&P{!LcKfw-gKd2cK1~|c~h~JibL40Ql1%ZPT0<o zHTAMfQ?dPB5)qRlRBcfffAlcSYvuz@6zhWB34IRhV%zFvj>p2;J}hkQApYz#e)t(Q zcTK_5(+^6G?Un$3oC%UBGkEdkSTN3^7*la-OfF?KvO`l-xfcG%5c1E)o14*^9qs`2 z{M$33&j2x0B&155riFc?`=7NXr(ut!0A;Z)BC4x#@bx0`Z#r&!e>#?9{7f0Vgd}hG zr`pW&E*^dH7gUf*l#O-vPXpSaqHaU9tFExRHG~cyd~xEJV_K;g6%Sfbdorl%I&Epw z4D`bw;Zogw!cZOP6C?lh&X1WRulZ&)&zFYMOg<!erR)u>akkF~UqW{rE)9&KhX`f3 zVr*y0vF~q3PO%)3f3jmKVAwb4!YTdqpKJMUHT>3)z?<i=yHmS@p&*Cx+{y;L8Vy>6 z5{Rm|Z16-JOQNJ_=Xgg(f4VK+{>Rg7)%`~jLu{&sTFUO*$vFWOuyVtbz`)0>R>TD) z36@)S?pB#JyAr0X6`js8{qXG85}2&%1MHrF+fWJHvmN=$e^0z?h`IUjllWKGSR|Ov z&jfWq>97zC-8rGpt#Doyahc+Hb#!~D(uItE)8&zBO}M4RV+qvCtL7IpH-@qYV|WxQ zX|zeLu#Y%TKw3&v8C|#^={L}G{0UIyvK6bASw367LsDyQ1_vWG=7A%7%z_O1lW}+q z9MJUa$72pFe?J(wLp!V}qU8U2YsIt6>9X}G=~^dhhID3r&y8inGLhWvT`nsxIm$Hu z83HrHWft7@Qu6Jqs17<a{Wo|5N<6v<^OYeLSZ|2DY=?KY`hgVfT&EhjPVJt?4W5BT zcZnPEd@_r=%r0f1MW!<4SiWs2L(4-|>MRXl$;EJcf6YXfg9LeqUb=K4wb9iSPqAYq zzD%GltT=gN28RuiLT1Lv>CC#pZJs%kO{T~-${5VsR14_%0x2U8nsg1`0(2(sFQ>K9 zOZ}rz62w)@tsxKr`jbI}L(w#hVrF3BJdWknay9p$-jLN4?qpP(=wj@dbU&LM7FcJu zof<ste@iRLyGPhTvMrC3FXR*K%DkhopMU0&)E!0Y=ao+Hz<c$l<Tuce*LdS*G|#4~ zSYMv_(J%iIoPEP`-G9y+tEN#yV7CTCGSA0hw-TgKTgXDRbI_(Y#FOA^?$gUoD`1(# z^-vufV#SS^)-%}P-TxDDC10tgC@eFU>d;qCe-h4h4P^Mpra2)%`R+P@``G6crAsBf zlk->SdqaYY$!VvoK-PvWkt=5kj!S?2qgK@i^k)>c*TE}Uh|W`|`fuJ+4?Ld5s7&t) zT4G-GP1B@GcNCqmZw|kx`CrlxWVGhwr$4kKtvuKrwg`wSHw*I5W8(~B6NH5XHOZY( zK6>I{fS2w9*0Y*<C0J?58z(2F)vSeY1LC7x>ZpQgTp-jc!IAs*af=FNZe(+Ga%Ev{ z3T19&Z(?c+HZe1ov8o6Y5iv9|GYT(EWo~D5Xfhx+GB}s8l?fFCH!?Jr5sL*Wm)`dY z2!EXdA|ar{=!T8%?rxM2#uzYx4aR_t?gjyAX$k2NDM^ErmJ$hrMnXUViFf*||L^~O z=e+OPIoosheLeSeKj(~-)yPy(*%9FY)j+^ef*>KF3_w-iL;?T=iV6XNB4nJLW-yc+ z^bai=rv()01w+7P{==?{go066of;U0b$`=GzyUhmZUB%d03;y;l9T}g0U|)4^k0q$ zqzpg}>;rQI=nDaK5OAm$8K)}31A~M)yP&XD{yGA9AiMyOw6vta?{I*!I}{0nfZ+gr zFv<n$j;#m*y8%oQ5EvAN`Bw@aITsYlLq=HG*Vk7F?CvFmKsqb%3IKdzC>MYU)PD<# z^np48e!&G8fZd_LfeDdu0?b@sUVo@f5l$#yFcJ#DD%@ZYDBKGh;0<?#A_3Ui08?!} zfT0Hz{)e;P9}WV5Kd%M=5(535?$797iD2;G!C(jk;qC#3V_<M+fD_CO3NX~r6GEX; z0st`F@s}gm%?p8z2m63wZeRzj!+-C_!2k_qV*nV7?@x4I5G2e4<t5|=bNhu*_*WY2 zC9A_7RT1v)P&mqq>{owkFeDU$y>*Q6@3FeV5x#K$Kh91txTDiA2#($!!sc+8r#Dnv z?N1M^itHbqGZY072LgeTQqlmZCjg3uxCsABZiexI{x*Vssj>YB`g<Te0Dn$c2+%;7 z6BPSH=I;gefdWuSZ)l+Ze;WQRk%2$}M;HVJaDY0);AH<~$Eu-Df5_O$BVlNOH4sZY z5CHh=^Y_UX%PmI)+zs=O`|sfj-!n2bHZ$e_4ft=9iV6Y^@D~&T0t7|GfdCLlS`;9O zJp}$c%is9_!v0%p1cv?D8-MVhjM{J~1VH)^2-v&(3x?01oZ$I$U3dZiu3&(`@)!!> z`G@v4Kye@h`vv+xlmB<f|Bv&(vivW!|L=Y@yxrV>TX}w&{~s&Z9p;Al(~f1aHwwEE z`Uvb^!2jFT68gsy>q8x3-tPZx)kcA_o1qMMcKiDhVO|<AG}O@uhJS*%{6V0<W`Ira z27^P55MHof&kR5i1O)z<4ZCX)SL{>bg`L!I6BN5j|1PNxhaen(?VO0X1OSXgf-z*+ z!DA(HfIkSkoQ_cRZ(ak0h2RJjHUxl$7YJ}dAjy8sQ%o8ljD4(rDSyk@`3R$2kkJ3o z0I?ch#Bcdur6Jx(B!6}te^Ue7*I)AQ-G@TaPzc%l3<4q>@t`rH<D_2smapLIsQeV? zs$~|hp#MCw)BB8)IGwjHH*6XCT{(U5<@FDr)p?GU-m_fzZ?`oON4GyRe(^Kl+%Cmr zV)X^t+&F#TSjo2Xvp080Zws0!tp!|o23Ul;;<w>;>u?r&dVfn%8Wq!=_`cReKYLTT z@HT2@)p)H=LYMr!a#AqSJi#Wk{2gbJL*6t48xczI4hi3leKgg(<L^^93dXKjbW-@q z0(TNcOZ}}@M3PRY{T8duM7(+!IT)=N?%*Hacss%6ud<P$b92`JY3VZZZRRw6=g3F* zG?3c{kKd|+$$trQ^V@wc&M_GtMh0PgTJ89R<#w%9_j1-$BC)*v4?4?e?QfE84qgI= zsjw?UH_1kV>Zvl;H3!<;yY%<Bm)9nmMg_Oj6(~i^QL>uE3398lZU-{2NKZ-)P1COz ze>CMYRD31fQ8>0d|8XVrsQyO5Ndn8nZNbZE!k-mHCx5;Gj5C82j-J;&)J&^-8o8%d zy$7&FVK|zyf0b-Qz;k75A+9Zr$}_n>ik7t6o!UyxR&uDl&Cpd)({9n`lj$%`Jw`M4 zSTFzRA}uE>*?>vv%=z(-h%r&1%;u|->uUjLs=`-=g#}G-nSQ<-OmVw5@#uA;>i(jL zeNRY|o`1LK$RgFs3wpItLJ~fzY1RG;apum6>{YLK6MEt1jIIpsT2<FHJQvKIhO9U? zj`nLN1F}D?wTiq&yS=Y9jP{;IccnUOZU_h963Ogv8Nh@0Idlfqjo0=t=j%)1VpoUn z6e>J0++UbQv%;?)z!rrT&Zn6A%kB~kO9#b$9)BHi0FryJ<vGY|R7&v}Y23pLn59)S z<xIuMUq(5@S&c)jGNQ+`^6M)NVNYYCzOU6hP1X{KS_ezoA7>=4*;&aQ&^YHESan}) zkBr=Cs?35CEf*972TvD-d8Wq*2N6BswpIr%lHMBhbru-VtqDmxqC~jQDCkQy$<`w) z0Dp0+cWLqOG&3hhTTr{w(K^ow3P)5QZJ8)dvdjm#9XQ~qh6;C#`GwW%7BSlqRMz6b z1h{8FW5x&BlJ_5pwyU?DOjYjf1jpZz=D_c<`bIPDh_Q7;F()Cf7gEa?Fy!P6DJ0O) z>V|N>odjP8b=vImpr}663#l{vJ+$PBVSf+PH+Y-UEb%^wZ&qD)ru%AKwU4p54tyW< z10!C(*v;+IhH)Zm@S?u{UPvl*tX{mf2Lhwk<PaZr2JY#axn1IWoX;xFE7&q#IenVP zvz%OySdcV+sA;jCwo(l*xgIoJAa6^!X_aiBKwZ51D2i_lFG!MngDsz`kmTX}1b@id z+z;P7z}6zX^0*6g|9g3Gp&>i8cDGSsP5HetV_PQs=P4BgefkEh<3x|>k9$Af_1%=& zUwdXE8-=RLnPbR(#Bb}IQoluG^^SHh@{-~L;pJQTXv5e%lsC6UD!z6A9QR52KDggU z0o|AQdRQy0!wx<)AA}Q{9UsWJ$A5D5AvoR?l{2K77bjVLZBn;`K{7_9%PFr$HGd8U z)TDC<c`Js6-<%eU<;t+#UVooe=Qwhu5%R&qeT#;;)%->sl}l^kRAWIeBZqIPO`VP- zu@rxgX`#A&dC%S0D|pMWMGEKCg5qS|Oo8T*wODw<E44A+g|CwjiBbZ$!hhuwpY!f; zdR!%|ae5+MClKEv?(%RErF8W-LkQyNlI8BdYc~v+)zHQ-DQYoM&0g0%6U1{me$a8e zoB6?Sl=wwU(Zo3O2SD!j&biCy1TX#-zDJDag1L1p%TzY6FL-YE%BxvB@+zG#aT1_H zjx%`KpU$Vo>d$8?%b$uHaDO~y02ybx)=;@rt-ZbxaJw$Jlh<khviE^*wj*9XFgblp zqUS!|Ti+6HsP{W3LajOq4_36$Q4cYj7whSa=~IunMjrzll7UQ&RC>^N&Yb+{$Z>jF zyRYu=)TH`bW00HmgU?*zeJ#E1dOuG~ytJloPL*#aOS0&<y?w8$Rewa0vxBUr{mm9{ zoUpD*T3c`cRDO41gs>97DAobjF5;>gXu1(Glp)?87byyw>vkVRuPJ0)o6c%7%sZo| ztM6gH%WC~OY<{kgAj$r8(1*b3TR`APle1(}F}8Smq99&sB5%5{KG&AjIn1lFyKLg0 zTgq-H<TFj`0&A{Gyno=BDJ@@%Pp&a?ReUpod4ai#5sPf6kt6)RxU@f<>M5_P$pP5E znbE4`IN#eq*b;O&s0=ce3R4ygSdMi7+56QrJiq}oC1)&@om<&lFBa-Y?p0hX4EoaV z)t$}u++pjctqCSOJDUqRpa#6|qL*Vj&AV0YC!xP4|0$E^l7Ef6&CqZo<FXHX|D^sR z{OKImr;Y;a<z`o2q<$N+wEy0C`tB9!AgEEEdp|i>U}n*!;?=is*S?4I+p13LxuN1` z8n$uc@t6#_OTg{7jwCmUiN=L_x`Vhb*L#fWOI4(wt6rf)5~Rsam$pbBax#4UAs}5q zj7vRcNTRzl^?y~5A?pKy&uv;QfdpEG$)w1mgxdlVO=);+{Azuzhe#JaIa^|7eu*`m zmpad-*H;(1lXvNYMSeVxV-<E2sd|$6^2=7YI8$GGLyz;71#W6T>CII>Qre|lDeZjS zF^J7k?v5eLd0u(cRB~XTS;p26y2YO~(s{SlCV4i8A%A#N(tAZ&UeH;_$UNV#Cec!o zi>!^K^@tR&)HVhORNA#5m12VuBbJlieXYCB10%%jD$h7a>6lZbPNPcFVV?@p+R}E8 z&YepaC^Xa3QY6wOFRz0#<xJRS61kn=HG(3!W>DUi{<SB{mVE)CqH;g(3FN0YpQ<@r z_}0b-kAH=TL;|lYc0bH=Hdxi>kjvj;s=m}7i0m(NJySjZx+hg1rlepT$m|fQQDjZ9 zMRQo;cgXEg$Yt7z!)M;a!TfA4gZT+gQW)6YWI|hhI^XfDPnsReoDK7WWnRS(m6i76 z20NNg@#gY3aO>=YWv*}LTNllDVKw`oQVd?yL4UkQyOH}oH?%WtEwrC5*GAcx?(VW_ zC)E<I`A`NIc##sNdfxNMB^ooby%G<&!Vf?izK_KX!G%CJRe*GdiMkd6vxVDHVn3FE zs^AA6pUSqq2BnnyHeTdqu2X&<*?N9ebPrEVaA#^;uW5Dt+Ov_m*ZX)d^1a1f4T}bU z&VN2M{w;MvyK6PMeD>pdhOf+b4$1n{bh~RbhX(I>1q4^R>pXeMDbBc9mpZmr=BVsL zBggn)rM4@qkx<Z*Apfh(GL?Wloyxtf>Pz>c%9X4gC>v57MOi~tTO2a@_3TY~Bf;$* z1%Vacd9=12;28SME4GFD<J)<3h6xI%xPPhC7#iC_=puUs5VU5>)pWX(HW`7-V_(E~ zdLaC{L%Y%6cV7&aWe8^bdG$JR&xWR8rH#{H@PxnU%)Ux$@uQOLD@UuM-~*-sX1rTV zx6lQLmfQ?0`_9U^DJvZKK0Th}oOm>k<mr{F$N@$eT07tJ@y+tC5dXO9HjiG3+<)bX zol8nRykh-~3-@Gw_6sr-vdGPQkAs^!a;qjd#tV09LiVDL2yXQSlu5K@2e7PWCl5T- zd`PRE*<%0N$<^}~I8X`IN@&HE$DQ(0{tJm{X~a7R0_}3=+vfS=B;nAInt{HH3gyl^ z+%JWJHw4bhzwxfq%fJ{(`XKu*R(~>X-J5ljVb|m|awOjo2=hxF)^*zyZTDITJ<ENF zuyMUxLJY<2D122*z<=XO-w2b0Z>dT%Otsg;@G*JA4JwVH-b@3un(at|9P`bW{G|7+ zfOF{4>^lQn1ku)3K{H`#<zFJZvON?}4joz~q?1EcerP-uV9-pG1n=JLwSOSGH}fI& z=Qip##Y_B{@A|<$5Csu>OZKOt)xh;_q&`OtnDmN5o8H~$@%Xnh!>um1rvhX&;W9jh zoT}UHOM4aiuok7g5u4*Y>jt7DvJc0Jv8eRP6*~EiM05QExV4HM-GE4j9eyIE65KmW zQEyU!PR-Js_U&cDJ9H}!qkp`2U^=^dbGpQxDYP=h9rS%dW2>M1oV275w`2MIZ;r)H zw;%x~TBO!|_b{35z*Sg(4G`==cyY@}vSJW3(-rIC!|Yma_WtdxnF&AV8%dnqa}t)u z53I2b?-`s<nlz{Y&YDXrIC(}r@gj<*oHPN=4xII$FE28ScMP~teSb0v4C;nM_jGjj zbO^6XQmv96Rc>CXXbH071YtTR89k=o#!Xh^elCoNS(&MG{7OOXC%jd1wk%q*@_;U- zgs+F^jt;KT<2M}KbtN^*U(8OLTW$?kqS>0?964l(1&P_-rJQbGOYQn`Cri3k+DxwV zUBS>}-7Wklkpl(N^ncdc{#iz63gJxQ;*=)d5H6nGO8W0pzz>x^dDM*ug$1(v{+pr~ zXoA2OcAP?81P%pI%femi%3=|yDSAf@H%yB8N!2aHPWHw}|AiMln=Ko;fh0uTzHk9c zqy0kKTEEA5840<vGyEnos7Q;Ey9b};N62j^z02BF(uv=EJ%2RkQT6G=_f^!IC4GRp z3c^t<C}BXOzMf5mx1YtS8>Lzgps8@Gri2q4BZ@>?!gy;Z_*a@*vZ)FvCx#jZ(UEV( zl3RXMP$o-gYdO~=)MvP(i|62t4r{kw+ql)d)k}4O;BB8f2vb(-2D)xp<XkSPk$M+W zO0e@UY%)kAh<^#IcVCXcp3&dnamI+dnZ_SPxBm3+>L(_*>KtV;j-^Ow0p>k-JobpU zbQaW0b|@|I`0<kwW3%8##N%vIE<v&a-RmFisn$(=eyMr0OkUbtWU+khV>tb@Hr4uz zGUmhNX)W?ky$FvaB=_li0u9scL4FGJ&cWdi94F2Fqkru*jO1-Dvh$?l+PFnQ#G#`Z zC1Enm2(^;|^UfLu^{P{iRt!QG`2I5F&c5Q(!sLRx(YOK=+c0~7df!<+1#Oa<xDG2H z(@F5^%~R8xO6B@%lI&7kGdqH1<)?+1Q25zv>Bmb)r;jGZTk16<8qAia-wj4s1QQ?K zAp233`G1w)5~sn`n#pj>U6d}x$lWn^Q-HdPKg~2`oT2xk{J?CdD9ZH&b9~)Ij)R<T z<jZ0R=|_<(FbUV>_g4CX&^h^1)pv#8_v$|yj8aI`OE$AtHhu~k>eG)uKF<AM*3hHa zq~b^SZPsLBq^+>nn6}Zcs$$mm28~yIrP=oW(SMYYl2Jr9C26FlVE+=pL|VT)WYw=` z^)O_WSClF_XIH=DJ8`L2O+GRD*2^mkZsOEZA)YC(`ZL*;;ecg3B15x+>3rh5+mq7v z%$kG|*UmYNEayw0_x8dM7AEAK)H&ak7&0*?c{r+-F1jE24G>n$yte(=Mi<rie5RDp zuYV_6H;tbFtxad)O6E)4Aaiu2-%ecUJ~1mcd|r9aqKm!g^iz9lPMiLD@xE=@315Hl z>=WtF)G-98QwDK%r2G3%-0HJXN(9GfPH}nq;v~PH6kJ$d5&mG}8AJXAPYv<x>tP-N z`kXSuP!V79O*x4o4LGC_#JZ~7=6B0t+<)ZO8Qp8`>=#>ejr?Y=J&2pqwOI=?RLg^w zHm5N@$wJrhFd@p~bZKjSFP*>PIN2&bkl?-QLqD#>EU+3p6fcf<7MPL|$&1g4+0{tw zpypino>sTtt^JBKrLutz_WeP^vsgD6mBZCUc|YfHBrGqCHr}A@*kWv>VIjX{On-Sm zg~FAe3-6`UAotirR+QJv@Tm4EJK1*P?CKWUIL~7qyNZj}JejW@Lh~}byJ7Uq))S;m ziUbaqs5e3e`(;D{J@1U>-TMMx_6Wy#*R8NiDzlkaz2a?-FteGpLT_tPAQ6EGk%hYj z6R(HC!lyn5ouO)?uIA}S);*K6{C`XW+f|J-ub3Ga1cvcR49UNWaV|%55YlLIpTB8P zC88F-(RA4ypF(gg;k>waIzXV<N4{+@a5E~GMKz`}Hy2|sagWl7uXXL{A^s!eQjZid zC#^q143Y*~Yd17KP-$j$R3;{o*sig)<aF+VteO>m%UvpHu5cu{QqYeP>3?mzZ}1>^ zm$KK|U|K1?kk9J*_d9E{>@F@JbS2l>MP%z#7n_U2em00u_^RG`SeKN-HpS9s-GouA z(isq7A8`nN8EX|0W5Fj0KvOSg>3)&Tk53v;!wma`q)SU^^J=q^a<Hbno)&(3`dq5( z7?H|jRE#m%>TRM9H#dD^Pk%`z$8t)`>dzRLr&%`M3+><!3t!_=4SVLTT>sLOfN|Vy z!wlkWok4z*{$NJ_p?VI{!E^zm$cd^L=kQ@uaCJSM2)`rJc(;9$zL-{6wl}3P`F+Z1 zpz7~Gp-RC4S6q;YH{E-Qpr6_Uc()A$+i}G|?s8FtvC1L!?H<)1xPPfm%s*bI3Sk-~ zq?<LMVlV4YPI@LrnWo?)z^}h_0NPsb@$iVX`&^f_Qv=+G8HHSqq^IvCgmqLOL?^d8 zmv&i!VjjwbL<X(Fcv9UG;y%l}de(yLs`rI@KvZ9H=a#r-WO-+nY{gji1-2z_dZQuh zdh^N+;PCnTtQALklz%vlv8il@-t_q_k3W$O<_5`^j;W4|Mp$<Ngg{akxE~&9pPrc+ z&KXmX8HZodvE-*=KJb*P)A9BEROqheUXET47muM}cA*H4un5Uqv=`Vo_Cbo8-AOW= z@?XB{6s0rlTDaKDvujRFlG`4Qm{Qx}CoR9iU2>sYVv21PWq+m_3Zs$xxC#^6+V|CB zlBu5><>(+0QR4}1xhRvbs@biYV%9}e=ecs^4csX2=97&z7$12AV7JsD=OUtIs`$Y^ z`SaNZH3Pm_B4uE)AJR&3@a7=<Av@&YxbVio*khIfz$zhlbuBf)<3~`ud(M$x%JUsv zo<;_B=n-d>(|^3_s;}dzPe7(lS6=9~3TX5rnsY;h>dTP5a{-_+Dj9~ukq|f&#umWl z{Mzubb}gB3L$q9Wqq<QgAIt1A*P5Tp+7qgl9JLOem_<6F<nKe_5Jo1oeyf8|WD#vw zR<P@%TMa*!AH8wO`B`W!$86RIZ43ZJyiYXa9c2q8RDa&;ocjo}<kMUUK#^N~wPCg` zc#@un+f}OgB2WMJ3OMHaF%k2L_v%|i@5ox|SjP8-Up6<-tG-=sNKI_%1#u@nSopqB zynES4@K~Y5!}KEfx&`~AUT+zNPAB^@N;W%{JOn(A)z_dalY9&#tSbIw4C$cw9_OLt z&rzi(ihul(7UJ>K%wyZP=4xw-$W#&{CEAC+e?{DTb>JEN`hJagnw1Bj1u5`BCH3b0 zPcrxhZ*&M~dz!LJuYiY=%42cM<;axj@<4U5!a+afnvEq&%ZJFfUpVb&wB|jm+JAV+ z5Be7%f?o;s_^-2bR~|p})~DV`GHY1*_A31ifq!+F^P#r?D@Q$LgVerY(m)6N+t8gT zVGTtJ<yKn<@4OkG!QRlS63@j)$=0HBV`BO$W+ikU;FcAnL8o;MFmn0aFoZ_TW}yUc zqb^DX(bxL+bB;ze`NOApIC&Qf`wFSU+;4~-YvJe)gUn=h*!4nJJLRRv&C}1q>x;eE zWq&)~`wn~`Nx{VxDV@0<*K_k}7*1+qxor*?f&;St6sMTZ-Z2`J_CP0uYEkO$wAXI7 z(pu@l^tLJM%WI!ZQ!Or=PA<ESa;o#UHEl)kD#4Lu)KSC%_=l=Mf$wf6V;!{&Enj6J zL1jIV1cveGryZ9!J|DE&0j!g&i6nNi4S&zL4(9SKA=$x&YWGLZyt;|;B!5Kb9U?O> zjq1+a8H}$83+6(lTgUgZ?rc1%@mWc7$W0V_PL_rzEppB~Ct%JPXPAA_RW@+Bt9QVX zcHMO;BeH=$^L2S%mxD07Kd$oFl~li}W_nAUUh0zFmzuN#8AEu2rT<J9n@Jg4!ha!4 z!5223nUUAq2ChXp+z`5lUJHr%UKb}ZV@}yEhmMe!s`}+mA|A!A89N>&e+hQNbx6Ev z16|)a47-y>-2-`Xu_<oQpxdFlH!v{`4Yj{1mK)qqJO=LyuL+#zSUP>LSWaksl^f?W zD!jC&Gt?a3vYl|D?`c|AhdakiaDR1HlT@>UiTbYfbM-RC5TDv~{t+11-8txi35HN! znVxp~uzl)Zno@q7IXgoU-w4v(e5%!K_71F<y?d9qR_SAk<WGx`A)(6a-|{yy89ufQ ze`<N^mKGo`yS~05B(+JIc!6m=3HXk*)&k|Rv&Ohqk<)$OXk(82w#y6?kbm>L{HV2D zj8^Dm=8=Cs{&-i(+o#tQB+QB^P>qxqEFOL)*-(8X@BLtthKxgISZ#5fheXdZfPF|w zs?P&wQNbCa9zTC?(9bS;Hru?2>Q=h$)(Pq;sXmV+l&4Y85U*g758dl8cej(L3k0^p zAt53Y{vRoZ1e6M8Ze(+Gat>u-Z3<;>WN%_>3N|q{m$9k{6B02rF*6D;Ol59obZ9al zHZnLfm$8)z6a+UiGd7p8i~%Trjdlf86YkqKB{4dbmPshhMuXDbol;{A7_be-$N>^c ziG-wrq_iT6gdoiXL`p(JNhwJsq<N>m`v3mlch38sowGf6-`8_r_jAT~&Dcyt#RcUI z(?lULB4AOFJW$QRR0aqFNr-|#;s8EAb2!Ee_J<b0X9+|5!cj>1|FElnp<xgVUZ)Ph z;N1*RNT9Bt7Z5A~1WU_<W#mC1pg0I5_m?9IEe}+O_`_X*2BJV+6cXkO;8R0+2ch9^ z?ihTPzm7nDr~nWwCnqEPI~=HjfT7_~2oh)j!MMW^_=-@77tjm^g~KpG|4PAs%N>L9 zmKPHX2nY~`AbdqpXg5WF0byVO9ODi&h55qJ{xBEdFStNM2m<ySm?(e`XzmX8{X=br za>WEd&@dog;RT1nkiPf;Kcou`4aC<5n(62Rjl5yVKb-ada1aLmc{M<=DERMme@6dG z1V{c3hCrbxgf|2k1V_37UEy9ZppmA&C?*gi41^$EemO$Cd{Ov+c!)m)?geqiJN#}O z0@PG70YdQj{zT^sMZ>)@zM{TxuU`noex<=*vIf#c4TV6!kQiUUum05GXc!cK>p^0_ z$Lfhh1t771oL%8a7uR19T>QMnERb*?KbVgCpB{J>;2)hE3<Hz`fj}~HARx>K2n&R| zi~UM&9^?)CZ3O>+Qses%#d@Q>fv$K6uu!-w4F3bb`a=9+Kn&Us7K;5(!@nf}7z}iQ zLoq;Sm>V1k_$NDF4RifN#!ns%4+P!@;fV(Zf_{DeKH1~B<$^+b1^wgxd$?jM*7~*< zT0*}8|7}uLMFj$}BH}VY5pgLH5DXR<2g=|Nq5sbEH~znWu>aN?L*Re*2KpzX4$>6` zl=}k${_g&Q;r}Nm`2SoN0pPzY7^3hzh5`Bip}ieQ3IxS}f&b6s{~hxG<NU8I{|oK^ zyB|$IFR$NL{$J+*#|lBfy@LL<<5}#7!Eb~C3cnY~|8}*4{jtObFc-KV;=ipr7zlnd zRFH07e_tYh+*cDG2y-!pW1#MT5a_QN;M04-kuYPFFZ|at0~7&+K>uaK?;6w-|CIRR zC-vI|!>`i6OKKpYD3@P5CoUxogrL!oAOL>wcu5L~1>={~1s3?5*FZ5*BnpEM0pj6> z0$ovPz^{2q$^pgjkJT^bZy7%yF^oGJ_8%G$UK4<S`Yr#fG}I4`#;@aVYT*0&Oa8t4 zFjycA3YZ*6L2usmcy;&fVYLc-fXLE-!U*4zRhEDVb`ss}cT7W;F7P5Jau$7{lHS`v z_jyr+e_wfu>kPa8<~3PNW2#BhNyw>Vis|rD6JTQK%Dcg*>nb%kP6`eYbLHibGoKL4 z2v6dFH-xRaeEB|pvNXnpjE4bTT7fmVis=v0<4Y#XFQoM-Pb)r(Jg`WxizprCD{y`? z#==dC5#b~kWY`I$9o;_|VaOZ2;L=SI0)%cnkSNC5&WR@;jRk*sW-jjA#>&fT%fd;# z&+uXRI#zWxLznpzwyb!jXw=THBu?UU8-cxlR@nFgh0LuWc#7;xr5@sI%Wm^OH(Dth z`jEm}u~kzUPnXYxEALc!6G<(voPzfAdhXC|VaGWu80ubex1K(gQ9FG7=<<SeT(~aJ zH8ur>{TpdqJLvmU{#=SvTv~gq8CBP!#i+SVs5NN}UWega#SmB71q<N!`E$9i!OPo! z^8k9`QjCgJxS~@EmsDY0hsxS}?5rfhJA?L-4uyc=6=r6(kAmzJKWc?yJ>APkh&+q} zR+~TjY!FfGcwQGyU3OFofArzJHx_!8I~A#PP%<!P6`LxMo0>6ppNp}LZGe-wgyMl` zXU1}Ty3^(Z+voLZonm`QW(?Gn8G`+PO6j$vcc39;U(=SXaBirUl&zGrF}C+rubkWA zvhFb7!<K3jTKMtZ-bP6Q&4QF8M*oKQ2am&zsVuja%C1Z#w|T=oQyQE+w#Rn9I<;lj zwrf;c2%yNfzSUaoP<p5uy54V}Zfl4#?ln)CAZ;x92yx`yUZZ<X-Rr0B!W2D!A(3c8 zevqlkYHQ{i<R?kBnp+mwF;~(!KRaxAbn84X0X)I}aiPF^-ZNc>c|<4sjUpfW>1yc6 z9l*qm=_T_=7XsyBmw9#g1}=Q&9vbWL)QA``qz<lH26_(AbOhoylxN<KPUkS%&gx3L zhi^Y$m{M?8nW~;0_&_R8*UFQBjB+0LZ=7KQ!CLIjxb|oZHVHclaGapj-qlO{P~#V> z!B`wyp(}yH>|vb?IR4ugt;aX8o#0Px$}R)yVL{gDmUQ(hBirOMjb72g<j)H0sr-Bn zWzAyZmTe8p0u3!}PriM`b${ib-PuHJH?q1mvXWh5;4n=T2eCNK#MPUB>m&BW2oJuR zFed6he9sX{9jrHDz=?Rt)nELwIA`Z{f<nk)tzq0>rRFUFrO|h;706ZL&#|#-U9S_U zLe#r!^*Zk<S<ms9V&IfoM@8$p)G$d@+TQlHfPxW+wN$DjrirfN3I8;H;=N%>VUeOp zSjYFbBTYr*N@AvQiyN7LN{Q+<J}{s5j1KxI4=OpxYeWk2%g6&YHn)Jh`=7HOTuCkz zlt8_mugZ$F85IIyg$zZH&uYVQii5GSHx%+C>brGxPdGXOuJ#{d)VO`Uk&)H;;*nqq zti-W`#_5zt)jE;n{-~|tdvO54i+#N?!GMTHrE|i)D^FLqcrspp=SP#sRj}RM1H2|t zxg_w|IEaQ)CN}i5LoLFOU2`jEqFekpz98*cbzm4mx`XtVrGuUqG1ow_Wm3@3s;Ar< z#j><obcY4YxUXIHT`j7y9?di>Z{s`7vYe9b9BA1t9-jym+voB^aMm}B)jZOsw8&Io zLI61%URLLmin>pK14HRq+cdO!pVm3Fm)$<Op3-&-DOAu0ZC^xSmij*A*r!UYol`!t z2pvM56euT9?B1r)`eGkg)FUPL>Tz8t+`AOAM|P5b7{>j+6*$G{f}@~!w9g%erDF@t z(;Z`{T?aVW90zt%N~Ev1S&Oi3qZi{|4x}F{eyybClDtlTu7y)V7u$tMXP41D>d_Z~ z1$30Kq<rqoQWZjvswP8MrgQTp?zQ^^vNPwdy?!PS!uql51Fm)!4yjxvoAwCB`bbzg zs1lUlc=Cn+jFH8rn4rfU2^zQRGF?qFn^z+6V>lw1>Y_R$+Q_uUaaGr)$0os3kgpfV z-YZNtH%#S!cV`K#r($b;Uns01>>?u~(_8)My&SaM4STpINR?04=lD4?lYOZJNt%wO zFQ-m&yd-fxHi(J1!65jJyzT~ZMF~!NN$Km-I<i$I{|z=LxB3y6aML4jEH+!?Aa+A^ z+%ynjD9PIBIlIiyL=eE3{l-fIWN<`RLEM@*y*zJ!r$G?UT7w2$tP;JRC4aQ<eYV+; z*$nzZ!8VK9q*Xiu5MoQuA&!|Z>dg+?+A9FJ)gM)gW^7@Gb?CELG)9`Y2>U4G>?0ny z;*M7=zg3N;R?c|HSV9~jy=}Yu+#*<>&5=#!<x+N$h~vwE1NjvWXQRyN+usG~x3r(X zB^y<Lu_l_*SZ_+}x+wi=;g)yHv(~4SK%cd<MzwNz{Jo&Zvyn!6cbajXgd0@6ms*sk z<PoBx(PBQCd==haK-F+Dc4|A<wIx4Y=+(?-8oj)woyYEJ5Bvk|5kzTHRGTY;+~}>t zjQZAun|89>Qhs4uOSk2@gtXMc<@a7`3UM2M(gB7>*zT;y*k&PEGgUCkW`iLc2ZMQt zX(5H`3d=4=ZBnaz<Dof;A0a11`QC^}AnvB(77G`dmAX$YtUb3at#h~2MN2TvFErn` zgrdjlg5KDK<rlqXah<Ad9vb7j+!J*e%(Z_{%V5qVY*Zo9xNlp1(2L;fo<6;~cel-d zJ8#{^11i>7N9c^n6Zx%K0*}<S#j;uXv18ysWo~{P-D;nml)Rj^#W2t#p2#$N){V!0 zo5;$iHfP(mp)6&wDg1GJA97?QUyb<5>UI!!ZXEggD-Rx_?uG6iyGP^L)c&+PLFp?M z>Gng-v_^*|Y|{Z6u!r8{mM6O>A;1@ZA*VX_wl2?BazM4UsFr0HOI=>&s*vsbSDT}m z6DS40m9e#C2L<e0IisVe(#xYAy!NATj0RM-x-M}@?Bh?8DXLlJ$Z4&TQJ@)ma9_$w zHOPU8E;PYPadbpH*eKm+nWVJzj!$(|Q35-6F7VztTBkRx_cIr7siN;P+05pDei7*< zP_>P6*->LpnbdLlDqTHRr#W$gNRjbF(502gSEwPi*IzcGxKzXy+EkB}wu;`ibDPG} zR|DGJ9D9Ys>P~+8h-!oYk*E)YndZ_r;Y!x=&L1SBzU+l!e!_Cw&WTxwMyD?7^#{RW z>(^8DU2OY9_r#;EcC+b4*Ck7T6Qe}8njHB01&fC`Yp(REPljyUD%EV>mARW}1>PZi zP9;dKe#>|f+~;9`6gNj1tlPqPn4bTI^xH#4&hJd>Y<Wt?ju+dQAyh&Cu3mh4vVQyx zXhr;fJtx8b48>=T*_izM2o@$YQbneAktYcgJRvEGR5$MoEZjB)6E97F72Z#G+5^-o zE2HWLkcaLZJ8wltahBs>G==&CBpAQsWquVfwWj6aY$!P@lq>cPmi%rV$Nh@Od4V>7 zSRb1UC5YAxH+)V&Fz-QrBl}%KzDfLO3g*oL$B{VuC-W&}*p}#KWfbskYae@hNQEQr zD&r2zY;wc7=OF)c%?kv70J$hDn0v}$Lm+X)E$T)PwkBbwI`QmUf98*V-x=Ar6hZ@w zU!tiq(&1SRlWXcSZ+fq&pEey;?eZ+W*q?4gX`C1sgGNB!<;aQ;_ciPyx+bemgeEv; zGTu8<Hkte+4~{bJilZK6fvclbALb~8<mV%KiN&2STXtr*SaI!tZPzlH?)dFIcG!4h z|5`?zC;EA7%+51FpbXPey_v?9CaLP8bfesfp>2!z@=B=ZK2$YyR(7=K?=OE};>z=h zCn{lPHl8JTkGZvf*`08)wxhd$-c;ECh0J|g4QGN#+;XF>6q5qmzG7$gQ6|}=9o%>h z(_s<M<tBGC22+)Pnhizqt{KuOa-%UNFIsM&8GhPf^>0SeG5da=`^1utp<L75xjf}m z1jSB<t+B@-!%DJ9x+X`prDv0>w-yvC-PZMtXux8}kmhTf*J4If`JHt8o_}JM6OHLM zE$S-^0+V@=m3;R?X6o1cbUJoD8oUx-5y|p=JgmRMuPI)C_oYXG`XCEfZl_1j!AeH| zf{?%VW2>k3sw^6Jhj~LyEa6HwsU!Kl%C+IeYm8LQccZ~>oo-IR`j5`vFV*>FP}H3) zSh}Fh-#Auk@J5$L1BV&(ZPnHzoWIe`(G4Uevj~*(_?^RwR=>=VtqR^Mq(hM6LfJ_# zu7<|lzjeod_H{j&=Goq1y1h(Y<|1<S-dXx`D~$r3blkx@H0&ym({mD(fm4Id+}DR% zYVoX4+?>t>(++-DdcxOKU|OYx^fg5xG8;WIb~Rh3dwdmXzDxq%9|wQV1nwMMXd5xB zn|^Y?tA9cimk={ezffMT1ke=zcAz|6pZvJH(@SK3fiIATvDRwNZ{?jnQJZ;YenzYe zB)?w@ur$ota~|icuz)%oPQ21k27Qnd2RR2Uqm6BR>gqWeJ6zc>=S@ghz)EsWq&*&z z`O$5~U8|)|DZ$)Xve6gj(fD@mAJsR0)*!1CPOCh0YmNQ_p;W%zdH3-`N5k1jtIbv> zbDPY6n1cl<ru(~rQ_G~a@MP}+iYU0`F$LAMp?!4O`R5Z-8a1<>LT~5szLD0R3%i~{ zZ0r$^MO+v>TV#G+*K}LW?>fbqnEC^rYFNuaYDnKn=vCd5yK4(0BB&=U*}+BwHs%>> z_RH|mZn5Kc-%fyftPZs$F(#yt9<{6R0&D_*=}p4<r{xS}cb!UOHg5uyYpm41^!@aV z6SvWxqf1NH;$7FB?Ajkq%`~c2)Dw!J<`B}H-W8?f)BC(xc=5?<ik4<-ZN|#>5>>h% zl*5Fs@MO$1k*Oqk#r!EaxArOUi{dtVHR>QcV>3SCrsmL9t?|<DH_lo(<zL~-i(D>$ zZ(OmC8AOKYyxq6&FDnZ45nEvalgFGk`oc>Ld7Zs8!asV~-?DJt2l4c#lxu6Q?;O?K z=>AM-!<_V@XGplTub`;w%KOL;^O75~O}*afPyK<u>7`->5prD$q$+15a^#~o#?_o{ z#mMAJ&f}2Rc|CEJV8$8W;Rh?J(er_S0uxv1y_xDDW7q69+qj0@TL|Cm^=F!)nTWq! zMp08x_}NYyw2=6#y>cu(7c-AW4P6njlEB`*$e1s$Q^2*42ONkFCHUexOy@;1IAepr zZ9~;FUtDkX2}t^vx|DGx&$PB{k|s=MZtUFN+-Y%|1k6c{`L`V=+>F9zY_PL`gmFJw zhmZc8gwCw@vuJy|&1Zd|RuJo(SEoifV+nY#`#K0ZCLXQUh~0Oew)=8ro0l1J-PYYO zg6t+)O&!l`6)kC1r8+KLw;00(%;6f-^%COKJ)t<q@{Pevnn{&r!glSF_AT=}v_F7! zU79scKO!5`tGt0z-i$O?AIQ~zV}v2)(CN}3vWbToW6uhwJOUO0r&mSkPbT}NmMK4A z<_i)1QyX4=D}EMbPz+Oir-&G?PgTm7l0!l`W8kG0bYgjw9rd;obA>hfOiE>#fFmiG zMW|Y69-?uXswWlPLp*n|t)!;1<6L{0BGCE<81_MWp*Va*&P0Eu;F1@A#8}fwJ<&dv zEHwA>g6+?gR|3zHWW6IxZpY9BtTprt@>g;<-M(JwS18{rNc;r-*l$aupCVo%tE`qA zt)`0fbsJ+pxVw|n?>2Hch<sIEp%FZF%lXwnC4_P}D0nhvfnA8<75+cYMeyL0(P=SF z$<*Z4t!RZe($7#Y%bqcR|2TR&MpMP<I@<4;nryS)4zkuR=aZ}!GMLsT#sqA#0EZIV z?~jr5haP!_?{-bSg@maVojC+TQzVdBp)zci^WbhesI%;G6(l-IhY|eMqh!(U3LOKn z`x^?2VGoL8ZNk2;@}x8!{YaDX(+36a0;_in2L{TfuPj#RDN=%eYB42_i`0TnMy2HP zQg12a3^sBfFNUUs94^@!Hd%E4OkBUlGfQpqv6)t_IwM!774Rl(8O8pS5*U(862HK! z2WCWehXl&yG{$a@$vvGX`+<cRC)YY(V%B38bEQWNld=edl9Wze<-E%fvdJRS!E_b_ zJuGfS-{`VLSF~Jz3Rh|FhjX#1=&oGmlccycJrq{vH8RfVDBic3W>xD^(d1%a)Y;1Q zl^}k}Y#IS8XYb(dY@VeYR47CcR>-BsLw8+!okQ-$D9utWrPl#$I88{E+oFi<v-e-K z8jHIZi+!?Mj})-}?myj{Y6Iv!CH^rf)RuY^sh2Y=*PtJN(axAqCCF6i)F|=*OcgHl zlDPdxX7)Bql?QI<!?gB~T`P=T!q2UDLqD|Ibfa9oST~kh)>R(;aNToNgh;8Y(eai` zzgh5dOKv$!uM?Eq7Ap{B%;H$&HJD?sEICIkxbTwIq?YkAfD%Yx%i~@$5Xk4#s#t1% z_N@SkSi7}<M|Re^iz+>>*>@zfoj%yV*vtq?^^abRni2=M3M5hHp54oHX_h7tmC<bU zR9hCCBLGk6O1We&v%qq+I$y>evqkwtR%N^i=b9(*k2GhWZJW(C>>gYVQMPO5BYsB~ z4O4U6Q0!#nwceM7s{UxW;fkdy&O_#zTzzG0_zq2fVOo=f%qs~sZB7Qykf{b!FRwjf zb{xt{`1E+CV?~5^gj}O&-_v7xaQ!m^>B;?&{gYIw$AOr5LfErK=le<f8ddk?c4K+k zH8T)4)8#8+A%^PS&oj+A%%yGlzMl+fQ$XoXaTt$^AHfoNIa79*fr4ptHDaJfj$%1e z&fD34?+PV4$HeBKYm$@W6`LspdNZdl9BS@R&PzCN^Qp2a^HvzR)NSy}@~``*-Zy@4 z1ue0;*pU}cA2z)H!-t-v|FdM)ell+Xpv=<7zoz4zb{**(W;0+Us}`D4NGYkZT)OwG z;({-B=X!lrxiYnNFg?}RlUF=n0~xfnh1B_f68vq$tc)HgS&~cOB!~?uHSdi?<j4&X zlH~(#b5n6Q)uIv4U^%gw>sfu+iP3WjeJ(bcq!qWEC*3ufZ`VypoJ{m&Uvk+U?rcq^ zhr5E@_w!!@!*5kx$TAh&qYjFicn6S+?X!DpJbSdE9{tAQc{f;p2K?c!-926cx@xt5 z7ER~vT`vO@!r%v@T#bDT1v@&^F9@n-8(jUVDn%v-=7{*Fa*K^3MpVr$ACfR@mrvU; z3$=OchMECpdtV{ETXb0^qRV=1?wvsjeW||Wb&%8wnwi+>H>w&t-j39^B2i`NGI4WV z20HDuaD=hbmnCl84*W1poFqm<6y&{s2uShIhf_8vW(TtdzGs-|Uh*62^LFTJQGUeZ z7cg{7a?zPi_!2@ew8Hy&$34RoY?JF=zD9Vgva4bKoEuGnD5sMPH?B5{fu-yjnsQ-@ zeuB*x-6$!=nqVf<X~EP>$LtvRm}u_8>4PQ@&FoTZGIoF<>6XPznMJWL?2aIR*AVKZ zUgz+13BRXPb@=hidPEp;wftPYQ*f?Lw5}b_*vX7-+qP}noUz~7wyiI=ZQHhOXJ@Z< zu<QR1yXtw)y1J{!825GU8KFYDjamQAOk>-jC!|FlI925=AH=C+#x(u$3$uzseDQqo z^rmrtk?n~oOYbA*E<|0Our&iCrK$?Kx;UnqiH%(-d9!qjndlO=2W-{5j~yTl3s;bs z4baQm@bj@z4|#oZ#+2Gu0C4-MeIQLOsqfLou(ml;jBsq&utqRTF};e{OLtUI_Z<s2 zDO8N8nIzE<jc97xBCmDhbQ>z=RCRkICD0WSn26{i$?4!ri9MaZZ+D-$MdcgJb<~rN zb2kvXds=?d(wbVReO#NVjLHrKCAWNjQH4V-x+(PbchVaAa|^x60NE~;vC>{}SRU&0 z@vGxoUuz4X@eQ*|Qlt&Gi~uG=+SMMi^#xR`Xnq(;L&ao<P(4<z$aGhZIQu!hEVL<) zK7x62!eV*%Et`36F`u8y#!AuUPsSQ4A{X&u#@Sa<xR@X`ap-W>{YPzMhoBP+9e7+8 zY+E@uM7m)+4t{nKK<ekE%PI7IZxzGg&2_g8dW6daG-F?qk9$~N(xk3~`VeUe4%1K% zWT8`&cP&0KdB&tg;*V$|Vnd7<@)itgu|7jujPFn#L860ZuuZ1thGonG2wrj{I^#!C zQfc8`_dKzrGSiHJ-^bSQ?ZpZ7*P9C;l>*`Atgs!G3|}}q;J89ycW=>iS1`|Tak-O* zR(JdD#CUDK5_g$fn?&#+5(mw7EFT1;z7z~!$AgFx`!UeJ1<r=5;c{8O6VIBJJ52T9 z$;~#ND5l(ZRfi!#wQ=y}`XBG+J_D8Oqp?v!;YyQJbvLZl`bxiqCSO3!S;{W!B(!Zt zi^AE34B%uCkiM6B7M1D>*NyYc$0IM{YbN%Rep7<f<D`&41$tQ&mTNK6?e0W5sB7R! zRPxGl3O=NuAG0~HO2}m5vQA*7ZYtzskh^?YCqJzcl-Gy4r+hCHYp0&Kt14_8>)Aq< zYOF9HVTrV?EKnO`R8^zB*<NpT2LN)jx)k`Iz9piw<Nv2`$^JimOB6;9c832KxMXBv zVdngw#w9o-Gb<-!Dj^y)1>g}}VN?2H1m@tn+VEd0X=_IZ_{&iC5U;xfWHoSrcHHju zHR2|#070w%w8!D$TaW!xm*~>{hx5y$w^xZ**_i5Ly66<Hte{d1ynz`33^u-ij$$-K z@9=X@aC9_oc!t&hmJP&vDq6S}%;CP()oJfbsQxCn35ailWSZYjKL8aM7s%1h6=>HB zC@vCVbZTVykAb=I!IykqAq>7i|KQd-PTnX;oRc$98<AopH<w47hPIafj_cbDx!-gY z9?;>@k=eT!r@$iKp^>fGK9B+nu(to@jw=gu9cUSMhGt-|-cMqHTrV`N>%Ot+)9tMR zW1XAnKj%8s0&@^|4M1QOkQIS?TqO4>&aHYI5Gjh+>`rhUfg&hNWu@+qshV3OkXKr( zACUbYZfoYaz>5tKb_l09m|a_YzxGNHfi<YZ+Zuyl05}8iw+{;t0nBaB*>~4_jmR=Q zfc`i6>eT4Q^zXLbwH8c6W5XY4TnU=SK%N1m_jgjgMgWCd9Wc`JM0QQK>`GQ*4-9}| z2bKsg2a(x6|8R4uHltgXGf@AlZr#yCW%5NmwLvJ&l@`gpz7dGiTP*=NORRMTPVdTY zN59xvvAWnj-P?Vrv4^pSaEk1aVsLXZT5_&+bp;)h`sCi93VMv4LI(TeP+wQ~?*Rmu zz#M3FVKU;W25^X_Czscg4anSi{CMNw<N~JImI8Xy)b`u{CVXqnXbl81KxdE3oym>) zAtfO|G_bS%^CvBUrV2Oid+ginkLG9Oj@|aqI!fNi^Rl}D(1t$X=Znexg4RhKg1ZLL z|I@9bmX3f`t~DP8K>yTFO-m~z?+tz9MfXe3PJ{z80UVftI`sIwe%Yt|EdS)L|1_7U zY5ZtoZ}4N9;?m#%cm7cAU0r@FhkW#S1zhhO2qC=g;3nbhykmgneUx53t#PbPZu|QE z<YxZdkpBF5e*g9|>1}@iPZDiwYhPEz9}{0c2ds51%@6M_KUI-iz4j>ir>|`2@IUO2 zpr`u6fJ#WF7T1QK9zD(4u?>?jE{*lC7sM*v;!0k@W2$8X<_ZAoEZ};Vwkx{{RAOju z>AlAMPcN*A@dtl*izah}kC&9rj@`LE`l)Twx0|#i1he=<k6BE1B8<WQzR`a0qwAgh zAk-~zH(V*_=)+C-pW1p3j)0vMpzZMoPz{cD0Ku0_u032o)l=%3{vf!4>T75#aAm{~ zBE6sLThHJCyn*URC<jm_)(;|rpXx`?;77{PA-?BB`nRw>=hU|}j=knK9?}P(;D-xI z?SUT=(g6I+-=2u(yRT>T9pT0csNx9!HD&7@;Sj9$8}qYd{u#kL(eeeN`>gQ?!r#6e zfb-qUt{MZ_&4e!nM0j#5mA25ieHOy*W}>F@-^xZ@;J-G5d_r_nI(>ldB(?qc+mG{n za|E!P=KTJ`RP*~u`peEMKd;I0@&5gD^*8T<J=`<?_XiS$KaZf9gfvWy*(V`e6QQje zYr!Diq!&s+!=e}d{As#Riq85L-Yj4@@vNeO&#rYdj11w$pz>N`UN@2^k@w@%raBbC zUQ)@{=h25rN+EOGTJ)VUn4LlMRk^V`7d1XeQ`ltZWo=EJdh~BQX1#I@*UVZpge)ok z$8@3mdP8-OjVX<dp}b2^hBV&We>NeUV$53nW$rQWk(SRqz~DG(>8Sp|7n=YSpX+zC zztnE`$ue~QNMko7$6xCBTe8oqA09VN&~UCRbV5`@x*$rY)|GXZSon1VsGOgoxd}Dc zbjJTZxL+M;Kj-?phB|M1Nm;qkiTA)+mXW`mLPBZe|1&8pVAnE1zKR?}+2g36Q9oki zF$FlWXSOp@l56!)ZTwp)z<dJeYRRn>H+4AP-H^YO75y<QU1nE(_pjr*NN+dUI^yfP zS@0j_#H3{R`-py|X!ShTf6k`CeId{`+Zc+`{}XQ?HO(v-tZMpt_fR3kb$8Quhw;R% zsinT)vcDW4`s1f!#G#)oXHjaxL&|KrSyC=Fcej6WVQ<8$1<Kup`iKQkgAz>)*-tyo zQJ@5Kw&K<slhLhyjAFu8{N#Q{<b{3hhY(`Yyh7bGUX)_2`s8UWNu7Y4cUWa??;6vU zED1c$EDKpCS4oyVp;f<I79qpP%bcn9i1xYA?o)bn_4d8dtJt}*A|~xENT6!p5lmH( zrp|Vwc|KsCLTzez$Cd|(ZY!DO2u$=D4N^DsoM^_hgn)`LV~<J!ST<~1cDJ)(Xs|w} zx;f;MYISx?f3@wL7y`6cXl)`zcY{NOLmOoS`*lLleY*E`EdQO5tSLa^WWD4)g(9ig zbt@4tG;}JjeY;-f^nS=%u`GN5r(zu#ui=_Oj=pdTaVEPgKhgkNGZ;D#Mh@=k{u+72 z@tnIB7&<BIW6bEdR{(VxnW|ejuf_m@Bz^snk%9VI6_f&zB=RiIt>>H-Q1<~j+0E{f zsvY7GpVEQhwamyhGAWUoyUi#4P^rS5WiqqTKKI<G0KHoA>_)LF|0`0sb7PTvGX&z9 z)=HAK>^RP4Ds%vN$ePty&#iUlmH_!r&TiR1E4-(bko_wYY8S!9i6BoxDm9T@K5`Z& zomH5$z4R(Le_MVrHz{P6C~Ff%%o&x%KGne5P==|T770RvpZmyNayM~QrrqnE1KcQ` za<}hr2ZVPW-ivG5tTyc3ffy;XC<Zl|=4_FW-xjn#_~aB|D5n+lwjqLAHv%m;l*C3= z#NAkPKvFpui>sKAtDvA-p0c>%x!9ymV(?@G*cKVlgg?*rZ)o?Tuj{eILWU;KiiMTe zt_4_)V|ML!cZC<hKJqLDaa`KA*oWKpur<F~vDs+L9}Ta7m8yj_puUf3-3v5;7rJ~; zfQeQ2N^St2Up)Q_<7U`fQX7)o#as+_Rtp7}y%cs;;X=`RNi6ZO;cf@jH&Bc3|F;-Z z)gXUVhdB<<GuX34L#g~qx~?P^?o`6CigJ305hzaYlUmY&RMe0Vfp8+<;Ja_LeowbT z2X>$n(0L!ukSnbb>W-P7CcERs^57fRa}aVrp~nNz1I{zd`F_mVp|T*ee1B)+)0Qea zd#c=foCVkOwuy-DWbl+SJE7oY*vt4wD+$ZrOB|Z1JPoE0qe(BOT($CxBG=<;QyB7c z@THp*$9JiZ9F3g)2h@(nm41;OowL5?I*_pOYe8xMfsfh`W4nhPvf^g(6c+_6Eq=K` zqLT!Oy>OnWb-&Mv?i{>JYa97tKcy?$hM<-cI>Iy>^wEj*6UyD|JS(KRr-^!Du|Die z8JlNkC~Q2Ft6G#nIoFOZof_l{IJLG)f1&gpr@Qri+a(M-TVUZn!;RLwr^NyZIwA{c zFflY9tRo|cB0ki6y~Qm)hC~xNmk(<SW6lEvfaUmWL7~K*X&&s_LF`K8|M8q@F|u(k z)@9MGDCZXwQ#lUr*uG{9I#kR(KHdXUk-*=ePB^5G+8lJi?w1Lwjc||p<7iSDb$zPh zlBL(mYv^;oo2CY@GN&k<0*-l`lGOIxe5-C=USjT}j?ZbJYvrMb0#~}@=ieXS#B=~k zYsz$&z++<L-4ufnISO8_xbHAypDOOCGcUV>^JPbcsJXc8uX>AR3JoA3yx$3makuqn z+rtDw*=j?PH&<XK5{5f0%w~MyQ}T+Dw%Z}_Rpbj5^e$l<JPKH`)W=P1U^s{3TDG*7 z9eL}&&))WHr*;{Fs)BR|3_~^&-7-Ma0>amPu*1uB4Yljj>bJN#s5BC*XBHjwp6@gy z*2(oV+dhofQAvc4hIb05cIj5v9($ON);RyaO7drfgp`Td9aW`wIj^-HCZ{N7=4d?= zLhT@_Eq7mcfk;bwd;73|j<)k;v3rhYF))fErMv^a-}Cq_or1tPI0o%D|DFIic5$lo z62W7a6YT@@p2ZA2O?%s3xul%?)!?Z)auA6%hVEp5fh>D!93RF{YGbx|)5x98P+#8( zD8Wf+eE;~ueTHdS6r}Y0=1)Yc$eTXCGwL27%BG7E`@=~I{gzOVM&=RBYzq!MoB4lk zP(3>o*v-H_K1&XcvGI_sGSPsMvx`9T$Y~A1uKQnzJ%?#yZO8hPj10kN{mhmwZL2J# z$_X+NpIe`g0tx)f9|s$|TFlOZlD|>brJ)h%Rk76xhWKv8^(cRO;Ttj9x*gjkRWSHw zp>J#m_%{5q?ylkYI`FF_4Hd1{Piyax)^E%cQ&dQ|Xv%oK;Lk285eWc<Lvd#^x>+t+ zP+J6WWaFk1v=FK91d!0#tq%$J)NkFCwEsoyX9zcEhfK{}km!SbDK!;83}v4)w!<mV z8{lI73S}kd+wluZTy$JZXH8;BYd9#INt^an&|*41mBe~}DAy9iu3?riH5uW}b~h;& zj&~!X+kxq(Aa6y+J*)sxhNo$UrW)LVglyBl_@U31_TYK*OBH-`UF1P4EsOX*S*J8^ z2<~~ZTyy9*zVHg~(Uou5L2&rnh!8m(E<XF=ie~&!Gzqk!>Wwh%L*^2?a5H^NhzoVa zhQA?{HepJ0c0TY*zQvlko*YauD+~1U3|T8^9lFp<ThalCT3G;^QQS3Oy10Ao*dllR zZ2s%=Qeo!Va$d;eJn(xL*uY|f=+A(prZlK&NYGS<9OfcqF#2X=$u~@ACv9V)<&FnF zLkVuNK)ZMnV|3Cqk^kg?5>qXmUPek!?bR1H<XfY+7c%|-MiF3-c8rUssME4yu1O3^ z*-o0os_U6&I|TshYP#F5po1h-QR_Q!^fzMZ-DkIQW`+W}89^pYQxCWhO56q}bdS8> zY%bVHj#Z_{G}M%#lQ<O_-YmHa5Mf?B(bIGOA$fPP`+fE$RSx^<vHo$I8}0|@vs)aa zf;2|ZNuTD=$M3=N85nSzJVa5{rhbK`4W+}JtbWOtDi{KY7yP<;l9O6KLekXe9C%M$ zt#0Cx-C3a;C66*)4LU=Tr_Hr4b4{d%w+7&AoqRlYnx7S=o>hg-nB_u97CDgi$p&~U zh~Lc5atNMiBFDPXi@Y^-Oo~$rR=YqwI@&X<Qn|rTTF{{Ei-Px6jkMqk_BNuS!Vp#U zRWgDTQt|=SYr}t8K^k6~SsHAm9X&iKaGp`hQa$<G9}_|<y~$xE8frP+*oWiXkGc_t zSbDJAbAHhkMinBNJ7Z0sUDB(zK_dHmwM%DCizQU+kQYF@I_osH=_J&N$hJWA;hy?| zuIalNvo*<I>#gXk!+qlDF%0EBg^Fdue{QH|HB$jAjp_3hi!`0#MQPkYjuD<B+RR3e z*_^_Ge}?sRcD5`dAFHDtyj<GnK=Ns*j;SLv%jPM3<#EK9STqjLZY#9KzPszDhjF$Q zF2YVP)OL%71#=(NM1KXGkE=C8*ODdBA6jL&WBUhWbb9%RYo*9`=?p}3iyi^4vyZC9 zGt&SSRlTU%<;yZ9;Kao7XtDYBEfKo<U{m;>OX&|Ww|WOY(f5ee%l^us6&2cu{_q0C zghMQ4{!q<1p_UsY<am7$EikOhoZSIIxapUF@;b_I%+ICFWzF)jAztPo_;!XYqD`$8 zJgQ%Utx4tyj>dm0v*N5ShbY+6F9I!|oZtaO3QDI=nDs2J$KAAJQT7NK{~7)|NR^;; zo4E|u{yuOS|3Jj_677}787xNhroajWKd?~Kh!N}UzkBTswfe*U$hohA+gu76t-NMj zc5^%d@mJB<4G)SphE5Q?NP^{T-Lh^}EzQH+=gS3b#w+v7`w_HU+xHk$_Eo+Y;(!7g zk_vJUVc5P+8T)-%I50}qgDqvJBbO5tZ|?Hzcu_8M$@j1EUD}Q#NorajE(TvP-VRZY zV~7*GZMSOPq|*l|G*f_)ipaH||Fh3SAsj{zl;UI0s+6g|d9DEi?P|WbU3u9Z|3@?& zz_UJdWg!1DLDhW}#R*#6u1b6F$B+s5s!|;5d>`wH5%pYWLKw|Uc{zP2mgvS7Gmn!< z=$BdIRc7}o6t0VVh{4%l^bXC^l+V;rj|6hr4lDmtW{w{V!wh9PfDJp%ztAV74Y^?Z z?)X$Gjm*Psi)pnTSvJN!(SGo8WTj?ZuR8z<V;>z7Hcrt1La&0D_I(=7OV|aV=sMzb z59^0UlT`fZD$_cDUPo#!lJg5EBrL)D8G(C8J}Q_FJ|Nl&fs*Zve#H`;RdD%HZ&41g zesevj&rod1(O5mQ1Y)_6P1y(x4JY9sD}@uV6vsP#xnt_a@wnhD#bkP?Ts#(c*H8n~ zW26O@n6iq+<PAB>Mw5dAM4<t)_SHxH@zH+y_os>MUpWZQCMV0fV7WYTnGQF}!x@{+ ziGaNA&IOJRu`qNRf15ofFpJ{SE>xwZe$m{EcoMC_8@VjHtRkMU(>A(QA+Sxy)$yjB z$Xd1ks8eORPDjs_R}qk|vOPY4dKUYTN4)La{ioKA{X(MSyb}1er5*vn`4^*Zr?-eB zdKMtC|6msc)-YTerPU3p8&oa^)%eoSv)L!E9#F|qvYeO|X5)mx<YY|L4Yr166?9)E zc5=~%ps+WZj1Qkv<{-o$7GB#!DGQJqdv{!(j!$<E^Zu(KmiU`T$&s^xSI;B<C`)~W zI5HcCA#5~RW-jue7YGdytGQ67v+55iAuqgD>LJfGHT_em*>XaFz?G-t6L9HwX~ADe zVA|?S>Hj>OuUs&Ze(FOLD96q>kv9-zO`BOKiG=)<1Z{$dKTWX~H#8n2-pdHi-yXCf zkY4QTaNP<H0evy1l?cU=X+QP%)IDp<z+`cyW*-D108@0_H82|R6=8;hVf&GRByV=a ztXPVXtD~)hd4@+wN}U+$7iAbBS^CYo=+zi=^v{@v57a8W43>EjIXOrM#RWHGq(eiR z3Uq64P?XIfxA=AVe0iTX%mDHCq40(Q0l@IlvRM-*J!Z;JkLn-ct_SLARhHQM@AmV4 zNYW(e`B@$MT;q2d2o)wwWpJSLskSws2W{Vb(-SK8m}rXv0a154E;+Iw`oZvTQ$=z8 z{*S4==6~ytF^Q9#S<$0cyvCSo0j-(}YfaZQ>&}Z=^tH;BGkyU4uMai6a<RdVj1<e? zqJC3e^MN#eNX6^s&Ef5M$Uv5O*{7(k4mPNhPkkZO+}Sf=5;TV>RiS~J_+K@%XZ9tc zZG70A6v@AR=@LrIDDdSE;HvbusDU}RqY3ylJKxN;wmH?4Ide8wTaH|QX%<L$Y{3(P zS5Z3F8YUqAF7)kVT3pw?EY2D^WQ7;2S@xx0dM{s{+8M^|mD1jQjIGK{W;`b(S7Xe& z1-(hfedRqMdZqP@IIB1dLn~ZQ377D{zic3_V`x`lKXg|6_5AGLQ&2g7hIkDwMvxK# zH<fL+UTs#wDsa9-q$<r7VPUHm%(O|Wc;&-6T7^G`F!gn&C`V-VAHjWB1MP?bJfaC% zU^j71<wUi!8@8$X9%!QZzV61Oc*HkI*L-gD<MbT>z6O$4-l9}UXcFE1merO3j811G zrouQT$w1O9M4oY2F~v=vX(Rs%nF$Ez4b9hr9J^Bca79z$S?pdj!#*5Wweuy_W_)Nz z=&SQs@2|gXV3a98Qpjz6(~L5A(h>Czx_lK%d#VY7m!sWDCQG24fT<|U*5L?Bb-($7 zrNnnY@ZDAj2)Vdk{mOx2DHfOztf|d;al5s$4aEWKXR<7&%SZ3*a{s};VNK+NUbT*_ ztAe@r)d<$(b)IfxymmkDt9E+gVmZNqDu;~A&Y`syijJdQS0=b_hQMD&H;-)tc>JF` zE3L7aSJw`9QEclMqfQE)6y98%#W~AQxsf6ODif!!pYM9;T2=pNB2(ZJb`jM$Yy!@r zSi=E>V7XrWDvck3m;txR?OWK6=Pc{bYf!gmMs{bB#1JGapAI0OY6$1^`u&KqDP_>q z(nM6nMw-lSb<($Ch0+6zA6u_3no*ik)A*ioi`V|@{5g@6$m7nO?Yp%VRgHJFyG$BD zC}lok`=AkMW13ILA!u**e!p^mb6n&mnu34njSGT=dTfnE?^?7^Vrs_p^mSzsu0Llc zge?9qqlL~__Hw9$_u9cSB_QHG7i7AqVvq|5>%j96ZG@=dmpF}I$Sj~PZ(Ymj-yjIZ z@6{Akg|o!bB^0zWzxD8*;jAxWaWMnH=(y~f=Wr9<zT-Ta+<nf)C*)|c!t#nHuCpid z_P8T2Lc*+32YG-HKk3?p5|Upe$Q_~8=l;IDUNodh#Mc;ujrbs0+CYGRx;D0bRBM2P zZDqeT8?U=K^4Sqqj<vyvREj})IDc9dUr@=9eI)JN&aUg#{lMrrD$V5h0Br==sN$_d zWdW|y;!Pbq3o3ST!Lt`~thDcB@q#m~Rut>nnP-_DE5puqAuSkj^2xvI26_`iY<Mu4 zd)e5lf|c+83;KIB#;rEa_e8jr$8_(#q*u6NeqX4{#gHfeqAY~9)!SiJY5qb}>xe$b z-A&)D{00`3jsqMMbh1TN^X&w9qc{rPalCqMDYRQTU)B@z7an#|*Q+PO%rzRLoyJD% zuZ|#XgZ|419zc$<;>uHh&!iC@(9L8;ts7z~OM&BJISPFNdu5K)zUCMY*J`7c(wOEA zFFpv$4YO^GLjkSU1Igct>+q`mFLPC*C&g2Mt|$mC=I><b3Qy+!=j{=I?;MVUhpk_3 z_&gBxi+8p6nu^5n{C<EfC1l*t-i|11HQ({Sg;ykUtNJM&J)toome@*9cE3nlg1Er? z<Phq!_LxAoLMxl+BTsJ>YjN#%Da{AfE-mV`7M4)9KryO}dmSf7X%Xu8@~#c=W4t1f z9(cNGj5#`N{DIc-v!Gi5A?sE|+qPR7@l+1(>L<@~tI)A@E2&(C&ASZ;rCa!wi0bld z=M;J$Uhvt;X@t7pg(E5(tf$!az{mQ_HwQ%lX{OTEg{`e-pak3JU%eVIGH8pY!l<?~ z%desmtB7<Z0Rp|B!*I-;(w;hJ2wK8~o4|@4c7(w-BAKtSi9%7p4pH0Z0&oq}V=r7I z8XuW_<lY7y;0maj+SDYzfF`W*gi9WrIkKCc-$T{LqD@w6-i~QIvOwr=6)(1Kp=$+H z&3d+y0iyA6p;zCc=XxK0rH}5(((8p3AkcNgy;3Ac;;Fjxx>QnPP+{~vmNu~=hO~#t zb*@QzQ%6r+7lsdL>8|H)vs2*rKTjHgO~zt^(+>W=aDq^=&RO6U!$tGeH50qVD@n!; z>xOR!*B*4S&skVFC?c+VbaJxjRAj>k)2!d_i2kzf>n@-u{>751_XrIL8*pu|%7N?g zn&eXTUh>upE7~TMGw`f~>X7$H3u#!qWT<%dgpL*I^0xr&1UToq=~b-CywLSu(i3XQ zrK0nX;D4~LQx9q3IJbCDP-G~Kp*Q!)Ub)l!1==$sK~44U2^OrdaE3cN!CZFQ0A`as zo;iK|T<kBIl@Tis%g1;Xt+AsH`8a$s93sX;Ra6$T{P{@ksi5hzlA5fH+1QyHD?;ht z+Q2uWx0e9n{(xG5ylJbt#|11>l9v@XR=LLUn!hs6K5@94_HukXD^3uTmPk5JMIyD0 zJMGXrFohg!67v+dA?$yXsDZL@seN{z7ObRd{<I0>ScC5lw@5`!08`UF)9_L}G7b#H z4N@$AeVIWo@D?vGXWag~4wqBkbpCO%su=e&Z$|+1V(@4Nr!U{#-eL!sTt%como=9T zA25~_yr*?2&%(}?2mKGYl*uNg{GB>hDxC3;lBM!dHVomLahxG=3ZawDa3{x0-GDoD zk?xC+l2_)V0qYDI<$qbq)Z!y5XJUW`lLkonHI?Bn$j0EuN$6K8_~+{ZPsp0(Z-=#* zsWCw0c|()s<G~orv~SRY>%@nm*K{RP&cDpEVr|q6r1#d&P~1BB_zI;XxnrvLnt)do zgR6;h7*lU0hwhV`RX>c^EGUo=!O0Zpz~v_^$opdSkSeuQ{hOLbA&MxjjZQXl1={(f zVUvcx6k%&TAar6xMZSvlOaQFRkj^#_@ZYUYE9_8R8CgJcc;?<XPpvCr1XX~)(Fd!6 zDLEP_u9NSIH0IqtBIf<V%SXbP@SsM<FiEbR)pk8?-#`f8@DAaL>AzYZ9DS>}a@c)7 zdtm3#;(m3ki&DyIJkduZ%I6DAB<FVdsa6_QYf6E7l(oXNq>Qaby(>|Ug*Snp6bh(9 z6|8LiV2c<)R+ezRlX{C@g!ESgYx1HAA6vl~L@ApA#n(7U+Db1vMK512@~eGBq_FPv z*}=EecSBiFJb`b&0v%ngF!7mMm)f@a8-Lg8s9n(d%7Gn9Do;w+2OWiLSV|PjaK7A3 z;ign+B5Kef&1}~;4E<c}n!m(q9u1gHPtO^tfa4`hCN+)n&WJOzO0&P+bvy8B-c3*} z?LZ|mT7&*U+nf@CneTL8IfT>>21CKyEpJ&5A5oYJLd#-S>r{3X-D|yWJyXSRwynJM zoH=pXR}Bz963&}qxx)pMFmM?dim)NJ>w=(Xt;w6Q>r+^E6Jmm$YgUr}@BvKF`Hpre z->-TOPQOxaLv=Sy!zeV66^uhE69IUgeVB%*f-w<f`YsUB2iEycO?`(OJu-%>TQS(d zBzB%tgdP@zy$O74h?bf-`-x6#Uz{Eh&HI`@vDJ=5=T&gwMb??f`^bTo<2M;2BajS@ zCPW5UXkl0jX1{9`(_;V9e*qXFO#k!wDxa|4))B^C9<R?Wwp|}@8bM)sTkC${)6VTs zhg*g-U;%=z+ROCkC-J@G*O_*5ehQU>ZgQW^Stt9)!5>53>Ap&#&xat+$5|aJ9HQT2 z#EJP&C&c^ZK&ylYCn&)66Ia?3p7^4Od@I7#w`7Kn1Ol?0hLYb(OBTQ}M4FhckU+$4 z)3b$mYg?Bs6h0KL6pss6-nxXJ{&qi*UU#w)X|`^bB|A+|GKL^cD2`WS^Cra+G&L(` z%2APmeo5IKBZR;yUF%L=q0x*QhA&b|EL5vLa>LH>@^{-FO2TNMd}X?!S@jMAq#A)E zCjI3Gq&{1UpsNU-QVgJ*HUdVk+p{#g>H|ksOZ@0fAd~AHPD9_;o;IC%tBXELxd*n9 zh5j1qqzMHP+B`f&k~^6dFL=3>+qmAK)OlZ#?uXlzR}nck&UA7*5C4!;B0A`XQyiI* zTrA{6Ml)v2w_hUFz=(8MXiK(FyS{*Lo7>GGqi!l**Z^Qj-v<O^$>CkyE!+(S+b^^$ z+VQTZtN!NmzVGXpHZ>+t`2+|L4$0TlLepLyrK3WyGY2FkLh4G_j_bHx+*<c)+ZU7+ zCA7ychu8zdjl)C=%?&2ii$jN5CN34Mf0%D?@Rw4UZH1#ENYTQ3L?xLlB**3WLp<t^ zsvm#f*x84^`~b~ZW4cj>ZY|uW?SR?bJ^Ja$FO087>IXw5&>nqA*@&N<pxq9GLES-W z`Nx869Xn_3Sr(;gtke>$*V(jlo_I<o9`O(Ci&iav;`^cTeyL1X26`qnMG7_Tge97o z@O&y)?Ry~zn9w>`JngHk7jt9!<8Z>}kTlxVglS=$5P&eq+htxZ27`5mi#iILx<mh< zVW8eIkn8@M#4-cZfqLw^=6$@)Io~<(Xi?&^zzAl5KHG1p50-((=VTssA*aeV<`U;I znF$EXf7Zhz#`IKtjVYSzzm6`<lK;Z)i{KOMKO(M2c|byCvZaOpQ^~b`ehN23PL}<M z@Ohy9WCFx{b8k$p__xEK41l8oEnVQra7iB?>Q!WjUc=I99$#Wf%3E$nU)u#hPizT> zo&^2F+P1qDo@%!XvY29%eGdp$7U0S}sQZt_xtv}XCEYr9C2uk%IoC5vr^^1juGZ)M zmaMZ^k}6FzCsT!0x;*e=;Onl%;%9*btiYXh_62}hwD554jG^k9@$`8easngX2`BD+ ze#6WvuYyn>Q7s>bo9exHmZXfCkpdF6u`P+w8#x|weMb#q()n&(wev2EnCYoO{|5ox zYI;eA#{yRK0X1j<B#}7n9D8uV><FqzCixj-%xSC(bO_PRn%f|V!F&JS%qLnYE7_rN z{~0hbIv7DOkSNu{O+;N0T=bIvYLf3Luc&SAD2h8H?xra^kCd>Eb#9cc6Uhw2)Fb+W zMqqcOEs3#M-^bT^uc-JC(1=lkh4wIl95X0|NdC<sua{l<L2ne6(bv9qjEM+tI*9uS zn?@wu;^QXM-lml(?5-aY;u7Oiv+je;a1QY49MOQc|6)S+^;`%K*C|*%U8e?!=y!1Z z1QF1^$uY_nWe6n)`ub1~x`+GHe#~0RzRsOqXX3ZLs@HZxTm*4Xv@C(TaLL##Xv_Uc z<d6i|41lrYveh+$CFqlOf~W*xbiek!b9iYQav`MXp;@joO<RGsC_DejRLGkDx(1x` z9I!Moi|{les7Gm8y2nZqlBR_0>?G&P@TkIS_%Lu_L;4Fr&3v5?;2PBD?=l;1J#k0V zkdf$CRjm@#<Sbk@ooI*iJEJt+o6ihjFcu|)QPn0Gx^^w@x=|u8>M7S{1OZpK&p|XV zZ_{TtErP&HxHyu-rxzmc8Vy(Zc>%zc&7v(~>m8XhEJ@8KDJ@vCx-Gb9AU#`9r`A_f z4+)o9M3DGhRGoO7Boji%2xXJotQBN|Wh@?AHnqS)SO`diCo~B`%)!vH!~~R<XQ=TN zYr<vZjpR@l{RE!7t3g?|4{MCiPm1vW=)j-QyxlUB8h9Ps>w;gFHH#pn+5jl$v@Atp z>GbCbG*6C*CB~a1Aclz_I&6GvdhF$cJ!?)2BCWPjg3we1Z3Vuahx-O82%N6WW(i4v zR45sh=BGCvUoDk(TFZa0)#iBwp=pkgzSR5)yBS}MX~sVPsnUw)^UkjXW0u=#n6_Dy zJzjLjM3(P)Qd{jc)#}amO#o!OFTy)`O7gXPPit$t*^1suUpihJSCEr6#f(()Jw{Z8 z4s>`MPC9L*$}W0k^%QRtLgB(V2CV3Rgt+`o(&l)lpY<0&_$d&opC!W1E!{E|6On1p zIHuW)))RENXnK}ucNI(0=O6-I*Y}*l7&28zxp(fhJX6KmUfKMV;D8Li*!}L0{vG~* zBo)yFAKRnk{BO+FP<c?n3fX5`&^<(&4+j@qX;iJ->o_^*;umr%UDd(YPTp%V*e8O0 zGLsJe68VU!A~|vC6QZT|m<5e+*<oMb+(X2tWWa2)$6VZ2XMs4C91vz1@V*&M5PwSc zjcyy9;bojjijl6I@&UC|_D$OS_uwtHU(0(4+=JHz`E4;*|0<*Nr8QQ;PxzD)ss}=e z5|0S&TE>#vXd=xLX83+D$6~?#RRU14>rX0)^S2;9=;1Y?;9P9yBxu_9Nq^i>%*a|O zk>sO<J=B#9J|m{JqFc&t)$x{+4vAbWE$=EhQ*s5Y6czJ00)Ta9z;o<u-up$G2MmqA zpKCb>0*Q2|smbhUJ#y`Y{zZzz94F*fJ>@pSe?Itd3Z_p5Y-ojhMb-_X73~zP!MAwJ zOptjjYOu{L|MbjjiYY|qS;M4`ejVUpwREVMNid^AK}j`d{Xb}Q*A6&s6+B%|?*qg3 zS;wvTH{M?Ke*sz+s*kfh+dQ%HFl%c)Z0y6`yV!1pRcV4%a*=Q7UsU~CyeW=@1Z&5G zADqdxGC<aH>TZUFBX8>`a1e?4HyDiX9f4PR8vLuc;texi&DR6)Rm@GCb%-B>uqM(d z$V|+T%t!^$Kt)b0Tr~8S5NMHY<?PYmKrGHj+WAzd5C98{kWiw$;>cl*ytI)RdKLr( z8-8?yx0OqG=!ZA@C@NH%;l67HR@rL($b+hvuKq%iD3MB`mP0>WpUhnK6YW2CRh2d7 zomr$Tn+aSyFtC-Lf8$H7YclLei^kxk45G!Pd=faD%~b;02E>?IL=AUrGm3NJngmCw zT^^T|rvSdc<u|cEvGZW64Rvb)L~$x`3`V04>tq-78^hWe)AOT(pfzkFIAqxQl=>+} z=fAFV9f`uRJO^z2n6PmsN{w}q@QjRZE_<q<$1f>cg*mE5%oZR^%wgqqIrzF1W(V(G zFt}ISb9$%^X4dik(ttL}Ks|&)a2M<5K=dRn3qUR@*Q->AFLf9o{-fbVpp#B&8*uc= z^?wQ7s-h}?3f+np7jy}>daKNWT32~Voxz+O*OV=X`#W;>1JFZqk{(fCLcQGAV3f@! zP2l98$(if^c=)fZjHl_itBCA$nFVb3A8g)_p?$^N$Qct0AISClu#5E?$8fup^+pZO z18@|_)WqSxd}4rt?tr4r8|VXcmu}Iv+O&JSNR^mPxUZ&Vx4_ymvMw5TM}(ifRGW*9 zUl3Ai5XL64{`m@FtTL)bC1XDlf+897z(v@KqZTjmm0+<XcmFlPxC_fSC1**=7!GI6 zRW4A?_**h2A%i)Ns38>=>R`y3t9!^94<KegrJeT8Pv1dGMX;ArwS1~#<6d0Qoc1U> zqH0OQzb<OQw6FZDZ^n`mO@O_-;mklpbIAus>qX+@E7Zds16d`ZD~zLYX}lan?^EK{ z*W!fBTO_d2Zmd_$VvDd{bf}Q_b+lDe@PSDJpjz=Xi)amJPIMlwpex7QBDDy~1^}6x zqto)rk$f%IJKUa+uenEr7x~hYh#6RW_0%X=9tpJODVzInZ^}_UG4MDO_;jmI$JE#y zpi4?4;Zv9fOyTnDhRqACmKeEZJx8+6XpkIyxz8%;LZ+U#BDzuWW+596j}*xIUAOSs z@_BoN-aPHW6_UYv_uuDf7;o>+0Xm(6Zr_Y<B$Vfm-ijcvMDnr>!Cq~?y8W(WXkNnW zhAo${Z#HkM39V-Nr-RVGoX+76Rwxl#F}p5-TLe(_K-jLU6hb23yBLukSveT{s&w37 z(q5};U)1o80p&^|GoNgD86bSf{IvKLG8@AM&?0?1B&l-4i=5~5!ko~SfM&SMfhwQ9 z(L41XZ@4_mBzN?N$}i>Zl_FIbO4hi~#eUvNYbo<};qbq~ms&;n8B45F`UEkx?US}o z$yun}|B94%+wvs3I&0kq!@zRg9r31{aj;72Se~Z^oVRz@K1b$72l>V)2VvKoTUBBf z#iWz+c*sZpM)R@iXpVfY07}`C9|JekNr}NGNzFpwVwEbU!id$jTK9}|I~^bkTkS1_ z?y0QhVj8%dgD!HJg9Wg+WX<7dmTYyDE3SCxc^Z_hgsv7@WOQT`V!OkVDMWJ=$QASP zA=G!e>|eMh?e}w#zS`o<y(=Y&6k<0|uH8}|lqW^3iZdWoB5^mC04~QUjzqWs+Hf*q zTh1HMP6bLc73sJ`J8K(n0dc)@Bulglkv`wX`+sAQPr|8n@&(_f7Fm^8MhQxe95Rz8 zSgwzI*6z}5lu|o1g<=A<JD~Pmtp^K1l}z*bec5h*L8Oe&oc3Tn@DyIpV}L>t1~%~+ zutKH9{v}tpq+t_h00<^V(rcbgF-uCK;bQSPvf$ou<pWfG>@~m)_ko-D#v$5Zlo1kq zn~QQo@MFVKfh(oRtu4_}o4#YXY^K9$0yaB$*s+udS&!(Jnrr*is{*W>CT_$%^MoEX zO5Qy=9G5sGL>9=OZB%GX*OP8H)`$u`zePO)d#&CzO_&Hm04V|~+F^c0vmQl;_A#M9 zRE@{4mm3`?R@B-t*NK0Z)%ioV$w<b$F{Cl-=d>o<_PK}3P(_WD);zII0u9ojuGd7t z26(drO@(hqHfJ%?ZysRXEXZ{h>y#a!_eK4i2Lgl2${yJ!c^$CZ*!^@AIRd&cjmC=z z=py49as7iu0M`wN(sHOiQGX;F#8*v5(oWBjD6wES-`xDx^qTSw2pTQ(?793+jX~>} z^3s<$8h4Ud4{upsrKyO+hvLQM%Q;+T$n#4KPqWk_*Yi+QdC>Ujw<XZA@;(J<$u-`M zKZ|etM|O2OP3moCMwZrcK5mR<Dk@5g){#K9kAc-u0e#u<5oYDQi>L|F%hef9K7xri zwW43ElBreoa@rGHq@Udu@7&HU<WOF8MCIF{5`1>nYrT$%xUWJ2uLo;6Yn)xTNgR^z zajuJzafWbo088ZC#m3%3n_C)E_=u4Reu+5ClbOaMr>$k^l*kB*o{izV+p(I~?~n|k z2ARQJ05ck+eB^0Qp6DkKbftlMdA<d^Mny>L#m&fIh?Xp;gYywKfsI5GkE%uDvb9#F zY!bIREWV+9{yK#<DKXM2AX?gl8tIm9$qB#USX@}!nK;GGXjZnzs(IwFqgPweYcbMp zT%*wD^Kg27L4)QRiP7s8M1m2+BY<?=aiNq5aGsbmkL$Pk9ijwJ=ydg9vwY7Jxy0~J zlFD#XF*I>C&{20aF^CPXi5H=UJW(^vFDk#n;N6Za9)AL8QmI42MKMBN$y(%zJ^q^5 zW`Yil5&O=-{_pQl#f-;vvr}WC#9R$FE`N(h!Lk{*u*clMyI3Gbd|-n0CTWH6zS++$ z;8+_-H-0ztiqPPKJKKSP<r-vG^)n(&M<oNOg@d78LEzw6&(Sd^xH+K=1gd?#ihgeR zTyc(#BmJ4zSA`#Z7>4i7JQ|f&$e5nGS;D2CSOYFBNtDW|;}@{LS{3^!eM}ZJ9LR-P zHm-s?8&1P&M^eR2qkgwo9v_9JsBh;C$nd?KpqzX5K!S!H1HhItQoLnT+A80d2MxBK zO?AB_)cH<kM}N#o(o`zibJ1~&k)Ye<3;&u_NB$-rlG&Zw)ZW7Ej)AJbyP;-PIlOX< zx|oM`<GYBIWnw94E|_s$UL=3#{dpJZJ|gtbWvmr<k1-{hjdGQ2l_Oj~Sg6AVP>O{? zcVC{VKq})!zV{seo@Z>&5olAdTTAzwm~!2}Qy<PJ8_3vo0}Ob}62<Swlad|$h3#j1 z+QpISE14h8A|}?_plFgFpw#|yigw?i9SV-yuGt12C(#At7?xy4U>CU{kqBW+v`FE= zWY?+|2*4^GaWo=CqB8J~A-@JiDO9^o)IQ+-9!q_$v;lsh%zkDXVMChazb)eKLK&ca zACnN=3LWj>w}woFT@`_X5k}NnjY^=3luLh#@BdgK;2`;T76P~6G<dmO)Gd(CD@3z8 zAHeyZwLsa_6lI8Rn~Vi<S-qpp&8!$phjR}nQKK+}2%>}ut6p%lSFdUSIQEZ`-PLR} zrVFES<)YI5?mzWVlpwi`$qR@ba}wde_`6J9;8(+H0;36Ru)X4;vNtjQWPeCZefr6L zd%MJw$!iND2NcQbRyy-EI40@6rsj+r9)fx%!dDpm7hL-2XS|k(=@qJ)Tb@1eh$hjR zSBJm*-+-iT%f=`zXXMyEK-voYo^<IsX>=ZpZl_h2{77Q<L_x+c#q(d)Ps*M8Lj{xi z7ro<xo{p|05iO_FHLBEG0LT%j?D(_HP#5LSE`F7#p<S%O6MN~s7<kG-p-aB>`U9Vw zt%#gI|K`<D!|TpA%~*8m05sK$D|3f=S1I^PNiHnG%FI4>Eseu8z&qi!)pXqu{ecjY ztS|&laQj~T@YCSPoHHGgLff<~o{66m-D{4mvAjm?-Fa!zdCB;-vJH+%+GJ^AWl`Et zVj@ZQpjBF2BKSa6=4P8zSHEQQ)thO>QeRa2@0>qviB>zIT~4{o%?GrlW{g3y$`1I! z+>1LO54UAQBRgpvAmMu0;A5|-CswZW&%-;;WMN$<Zn^p-J}!Qh=sZO6VOzv;hxKZI zjr&aa1m!y{A7XQkbKo^2&Vo?}SAMdHb#O6BzL#l)UJ66+IhnlJIgzc9<pgCQTbpwm zDU>jcw;9KJ=ghRCE|G9ZL%|F-%1$12BbtfhbstSsWm|y^K#N{2yhqrlo=mNbeqAxd zo#B~~N3rVq7`zKvNRp-?s^6UL5GprDO}9#ena!KY8$Q1h;U}V!Pu+fpJ)V-|Psv(S zL%zU&zL5EGD3r#fNOi%@A7KK2E5|q;j@__Vlp_lyFe+9VLmZ-4-QO5REQ&OXK6rQR z@@+f$`jWwq0ke3f7|4$2|B-;g5OyA&W|chM&s;wBQC^_b(j!n!qM~IwOv9M%Cz7w0 zccekMy%^{lP5u=N<c^^5N7Q8Yr`ke3H2RTNQoqZ*eDT&6UZ)<_%2SEMEZyGY%}2~k z{W$ESkUbCV<bjV}4?QMx9arWVPzXYATl|42OiA8?M*U??I{p9BTfZT#UtL~HxHYsG zB`6yc<Nq#?lAr|%ewY6%)B9yoGO_=^Y!@37)Bi@her<XTskKqSlz?b=2$s#Q<!%D4 zMT$ANxeM4iFLF<N!C?$o<3G$?bJij^L5N*ob6$@Gio{_AQWB4+Nc)+GQ(iYdH$Oeg zFIAe>$8OKQ&)X-QA8Y1ja1a&U@qPuo^YG;%B6;8f0RohM^)d0_kdQziqG0|4hD7l2 z#u!-eUmJ3RhR{y}eSkQ~|9%80yaf6zqGZ9NhJjq-AbWk}Ie<t&fWjsH2aEj#{1^}^ z-q;b(2*DMAz4|VJxdQw?B*0Kb2lJzxAD;X;x$+rZzJ0+Qgx!G%BqjfS@9Y7Is+U2) zf`|b*_gavbQI`;b!9rjV5;9P%zu;50nr6*fuu~Ee+S}U;)&i)d5YP4~Mg|aWL-MnM zLKILJ2VkraUPUqUU|fU0^T{Lzff-x_^1mH12yth(4G<`RjQs`(6u_WS_QPvKJ%JdO zfW<P_fq2;|_UUV%^?`hQa|eL^z<v>!FXZp)L>T*S3>YAS?d|?Z-3&p*y}*A$K^_+y z!RPoae1R|we*iF$A%$^i?zQL`e;_stfqGit|CCW;0rg^p0ABM6@EF)xq!7UafA%RJ zso{>(RFR&?CDhd^K%$A>oA}YvAW#E1-SqSMr(6UHx{$sBH8=*4UZMIdm%Lj+GKdUr z@?|CC_^`twkM^0wsBnnjQW4?d0YD0FK#LIjB##w-b$}Y|$Cif{%mKpL9k{bU4!yH} zfBJFq(h!IMsH-s00$%PypkF@=cQa^6kYKf;g0n!}WyG+8k2jYX%!_+9tR+8q4ETO% zh{XK=*Q@tbLv9__e;E(idegJlqfJv(m2Xv6Gx8F8-;*UJC4ukP<5x=}AfN;b3FI$e z1oZEpB0yl5|Kalj?Az>Tqa5K^t+xd*Srp+Q08RkJ_hxPHh;)8a1b)n{-U5AV3ZjS4 zF{Ac=*}w4vMSu{dvCsZ^K>CJ${xtqjPyA5*{A|Z(kmG!B%zUBm{@exX8anLoLq_HB z&ZVu*3L24t-R&qapX!5Ffi{JDw12m#qreSM0>X&;kqVuFXL$v8yLv7elCUNrtZER1 zg|oir=Xa)h7ySkhe?hX)&llT$BEbGXM*~rKgWygrc?`54R{=(37r8E~NQgyWHAtv` z(Lnupd3w7=Fu)De3V;BJW@=aYd_AP_h{z%Yb7_b`A;tu~z-NMw6?H^FgbdIFm?4gR zfXBYG)Q1*a5@^Kwfh=4z9N+YBMU?%sJ%7xJo&8>$)0?LoZXoC<f1$AB9b&@yy=nRZ z?rCc@%uaB=o*`|$vk1vXjIh6=PSbo3Zu7%4YPpW;o)-GD+!^`&>Uf-Qe186JH{O#c zg7S8wO6_8NSkf*AvS$K$2CpBAvBXJh06fVX4!Rtq2C=$alU|YMS?HAr>Y>Xo(;)Yn z(c{SIf(p9DlHx<QUNi+qsp*VqKi`71m8R&g)qrFla9*Q3Kc4UAP}P#sx{|S1v}a?D z&vYemoGrH<){584_@SYdwm?u!qR?P1A6BEK_#|f)-xtjXvBc2RvP8!l_QF~YK(dH@ z^27r2+G&I?F=wg+UIhJD8Xb;}JQnhujq{=^d|UC$scfP-uhL_ejo!^XVd0f$%$*w{ z@_Nc42Ko0otSe~@mRIFM{NxuFlDjWH9UL=IO}F))mN}NDmaAEQ^jAJ5{EuQ<*wirC z)!P91nk0eY1&e0u;B4uMl+n8bz^p|Pq5&b5$r4D)6JE+k7Drd@1Z`%n<1>JK2Eriu zn1(X!fS$I7Tg<Z%KJL;>W>J|i{5X4U<4ap|Dx;wEhC;?eb!gT_t6|hmJ13|!=!{_C zlSk+4na;&h8hoq`su@ffsUE~QLeuz4wo*n{2<AV?p<PQyC8^Xd#}agWK>6S{Pa>Rc zylf)mA3m)#j@Epm+C%}p7T1Zqmk-%Y5$;$}LPHSjs!uxU($L~|otL>6WJB4F@KpUI zni3)S!5#V|>Ms_k`eK^jBYJ0VEcP{V>R|ZG+iB?CLfT!%>P2NX<LZH3COakYE-Jl- z%=MkCZJy1C1&dzp9|FY{Ky0x%WVJtXFIg6<z;-+`aFLNrEzsa9=HM?#>^3{R?8r{I zpqlyo%d+sMO*hN=b;nnkgSry%CfPwoWE`qy#WK`!(&Gqe3>%yhA!mH6EJ%(8EShgD z;-I6W1(8<hgtbo|<z}-HU=vwd5s-iF>aaf2DzT<ELg5S;MQ{uODC3lq-3>_VA0Chs zI`P)6bVrO{w|9weWG<Us!&2pQRk_doeMymyCDNvVrbRZ}M$NdWz_ZYYs#$|>*)F%E z6}KvSL-D_Um6=n7v;XJf<~|SJNGv%mPe19bnFiaSs*E7*+MtC}QWpzwD5*B>*IcZ& z!~?TbHo)fc*JG#v9Ig3K|A&Wg7#WaAk*f_V6@l*A2Gx(*g<}?H=na3+*v7TdLG$Eq z?%*K?d85R#q1PlEXSfvN5^R0Q^~SAX*{T-2eXGJ#aa`4!x<C)Gna{yc`fL=H&y+NG z>3K`xJp8ZMrv+r{qa?}kJ!Pyx=f|%p5hYNdcGSFyi9=2cuo54HV21|kJBP}pIUrM4 z+2X0%p7RuVHa{qjeAJ9o&Y*1KGaR6<y)9SoZSO<%e*l9(e7}oyYHpqE=tnvJ@WHjx z%B}}&mEW7vvhPe9?%wn=R8E^K#?3WQaU!B4omQ~r&l{o{%_Zw}xlQxL&H=uusClk$ zgI!Ud<vpKGSz@m_tl@v>!VNhS3G?}p$Q(NyvST!2qOV!+;IB1S{uV_aLA>|YqNbx@ zS7^tpCt=*Gp!LTbbBi{IUV*}PmPS})%59k?eXjWX&qo)6ypm@42iY6goJ>k}<d5sO z<yTVNc;APMdy&rGkzLRSp#s;`$x;-GbdyDG4n)#oj6c^)IJAF70_c4WN}|GA^?1S? zNUDJ1(;HJ9q!EPS>cmAC$%cN<DUXgEzWPT^*ifiAeLR*~FZ9pKT2)FL-FhE*@oI2B z4<+otrF`VOv|4LB^kVvjf;EI$BBc&NFYeA2Mz?W8EBf-Di=OPA-Jg{T?@a*7Wgp@E zi~2~_$4hrMT(E!NW$}`V6S(78ePG4gIlE{coBJ~T0NEaDGt1u08Ta|<(3(O5o|drQ zjB4c!5AP95TwS%{$!0bF+#d`kIl^A4+MA!KU!e)<G-4}|PWX~`>1l&y6hovadYC1q zBulYS=!ICwGF~I7&Pu2o?_i6VJS(TP7Q%Zg5ESSiJvo0ktdKvQ&i9xx8%BELsvH6y zb3+U-tTjx3n(?n7(Jc?f+IQkWeXsa>kO#nOon6r_q6uC9TxI%UeQYSK8(f}kef&j! zhMyRF_s|Yq08hzuA{R@#){FM)wJpUn{Q9O|GSLWNgQLI8YT$N8*ptX`*6Ja4*3lzf zTyL5FrF(yH-D{3n(uLTUBA%vEBiYwYnqFmib`6l?Ot%Zlosc>(47aXY%(3%RSC(hv z2n~QP7JIXPsY`z=_GGl!Q2z`2Msuswb>};t;m&x~yK`TP?YXM@K6f(+v^EjH7RC}{ z7yxj5iw}&N?`DXb`*?@gbu^;J@{+#4P@7a@{MCQ){1eFNQR6t0Y96~PHb+~d_+6XU z$K#`>Jf6%GeD^%Q*#(G&Z`#1y_Tv1U8$^`0I&b2x9ttSb;{$J-;$1Ot9p{eMO`Mja zjmn0L$n518>&&TfDY?Te!Xo<5Ty)JEEne-a&B=UG3an56>QcYZhrevN%l%<y+(vkg zgB*W|t$2C0;~L(M6*orq6&~OkhMa!AQ+|)m;By;wb$EgAQ_6spgb!XUxA*xTB^Ko~ z_ou2hLgL@OoX1Jl8Qh)~sy=0+*+$Pr;9P1zvm@vAl^ec#>F#Z^sfz^?m+X-2;pgXB zH-ZWj?<Bs8OXUmLtmR&BHJ$mk9IIYd1s8u0)pB4kqw-tw$hX~<{h`k0&sA}6G}2rL zP{Q3!+m}`sxliXO^s&Ba-fv2~&oVrqHAdwI^WZ%JvhOQE)m^uySb9sNi<TqBp_QmA zg6R6!D|B-$itDMZJ)LNHSKXM#Re=?jaflCUOs9}3LO+JL;TaTKo>1aY(uL*i@*#hU zmib%*#3N2nmH=aWGSRmm$_`|j`x(+u*=H&b>%M(E#_woTVsId!yI9Wt+S%7Q`$<S& zqp9oAM#c)Ad+8fT<q^81qon=0S8drhB>ir-e>RR*UJ4TGM?Y#y8pw>iS&C%h-OZ4U z8}t~T(R^HhbgnVk)jFm0aV}^RB;<d`dwb4j2daJl@*8oVW)56Md*8qkM<nE|NnZeg zJnlH`<dT`N=v>Bw3haP{&Pn6)#Y5tFRYmV+*hhUULdK{2TPs({vH!$TBlL4*orvar zj%>r4zUdtMPC)lZ$nM+Xx7El)iG%?yZv)50CvLgCAR9{3P{H@H(ND*Ex9fk1wM}Cl z9lyT5Ja;9bf`i9MtU0K51ldX+CbpN`zA$KpF$U4EyS+Lch-V(b$44b&i~0(hhb7=J zPQ87>^KFB%(70e1tK`%kq?KRjQd#*X)_F0gvXFoQ0rb05q5gttg~dIlIbj=IZf5Y6 z!!LZA_WsM(IrAd=!d?-yrZ0c6zw5am?)2T50jrd|MNDBTcU9koCcC-SsPR^oozyL5 zdhL7YP1}zl#1XfOD5h{6B*S=X7<SC1PP#VbhB~sPc;7B*GdW<teL~$Qnal}Jc9!O2 z@~3VGMiKH%d{9hw?5ow{-3l?+>cw6#ZQ}Bqw>)~I$n=4S5V3bUeye|e#<(MuqAx3P zL3?bO^#1n#;a3|KSlN|T$$=C~=IO^4;a=8nR7)mN7Xdj~>38wIi<*XSJ4~9yZn^7+ z1fE?^1;}2<Wn+HN^or^Q==b4$L1jyRD`k!kT>qTHOT@(I=%yIVU(4Sk8{k|iEJ~p~ z94el3GDDoapI+0LF~@&M9whixNUe;4VYqb^SeTAB%w1`V#TH~^^o9~U(bIL4>IXlA zuD^G6JKVb;g=|o$ty@hGxwbvnQk)7BDP1+7{@Sg?Y<m2N{XkN+u#G0sS(fOrwLGBm z%Ts^vn>Ds%q9SL-YI}~;-SzjLDrJ3H&)HEdtGvC^>Hc#3V3dE1W%<?8<h@4xSmvmr z#ECu73w;OLcZ5|({O^qh^2LtVI&LyP^C&8{N?PpkdiaUBqp|MClRL-VK|W{d?AQ4W z;l*3yf`J9CW4GR<HkaM`INqi9HY*iUTbG>_Dob14<G_071`F?KXN4f1(55$De~h6- z8@Iyz{Nrpt5=ehbr$V1Dr>1L0-r{pPbJo|cY0z&Y3S)2@QnPEeDN|*QFXvAs-nrbF zNxCWHd!DQ7NdivA-zqNa91tuS+{Z@iHWc?q!-Zdxx40;3T1WBR(K#mzYBDO^xVA{2 zM>NuhKEcDwN|@m+<F$!r8cO22geYK<t<qj{HV+5LERTN;6lI)sF;CL(*51C}ny=tX zg^*SUH^~${^5t^fLCIv9d<~IwW3}zVE;Z=*aI(%-qMM`Mu)lIMQ;rmSpzQ4{XX}RB zh$9hmx%&lv^7AUY!LqvN5jQ&R5F|`b{N3-^S#Zm-%}elpdE7Pp)}_o><Q%ygdye%H z5PTG)vDSY}lAz+f+IntX6inR7kVw64|IA-CnR=wS@3D8tJl#qbg&;e%>B^=PJv#T) z&xPH^h28qzb`3S|0mPxD;G%}ST^ZLbUEy%_=!eMD(+oEjxIxXc6oZYd7+kxRGHM~W zqZ^G!&lrtU+`H5!C2(zj&L~nOcO$kb4c_5j7rK9H#rt#mNz2T1=i!C89<Euz#NUk5 zG;HTS|Hj2jbLDOxY<vT8h?ZfPiE}v=B9Jc^cBSLV8y$BzZmro(TUjkU_r1%#R`ZbK zgMS4Bc`0j$0duYpkQ24+(|YW%sZ_~VHRJJkUv+uk3O)J3QBRBUiNSOB3-*_?RP>)h zXLEn$x9k-}AUx#OA{F%Mq+2tLGgutFI)NIDee_vhi}R$F?Vqn?-W>LD>!hm%Q8{1b zt5MLCcSl1aP)z8wU3IRrRpkfiZEifc)jX$oKXYwavMCCA>SnlGFLH_-Z|Uf?5jEC_ zleiChaW>VAoGCAV7SY9O(zZm^dmHO}`X_(UpgP*dYtQxb9`gx2tu8Mxd7M$Fc4Bg_ z&(^Lr78%J`*)e6&1r?{12Uc>Yof5$885pv)8>Agw@Fjb0b6aQ%B*wuXzBt*FemFzD zxuG~gpdr=p;@OIY29q5qrE#@gW5~b7J8a0%#$qy?j+CG18M|89yL1he`9o8BdAEN< zeBa58Rx14^4mH{K(B7dzr6|19`O^Y*tvP+C`bWAARxP-iBeq-7!O8>&#x#CQQx1fi zgfi3Vsd1MfHy+-@d@HMh-rwiyxLR3ce;8;;h({KR{~_o>Sun+_uCR+kA@~UCd0$-Q zX%P8V!=cy8R`+p`)`FRTuFmw5i2Q$S!jp2HL+kHSW^~e26kaTe5#*US%~z#whAXio z6ULO9Qzi)NuV_lk=d&6YMFRwHHKS;Da86CE*I$Gs%TAid{=9XSEZXoYHrOLr2QB9- zTNBB<7GkH2)Ah)Pq!T^Bpy*Lo0Ox8tA1Fz?Ji77V_-rnJm{B_fdpoQ^KZSo&9E~Q! zKJ`@hlh$&)_u**r3A1#wClA}#dg+UgMrrB2UY(-{mnX`P>gBudhqVhOtFeih2-X7S zHu12J`95kHOos#M*hZ!+CuO%ozM;M@?S}av?_00TR<OSDz7*426byWv7mVH>4HBg| zC^TIiEwAURq9|^zs(y9JBp!cTZ-NTVe(}D1(0B9mNPh~xaekb#=%u=c<EjZ>Ke^}| z_JpX6IL?6DgvRbzf=6kK>J{sA5_uV0Bn35iI$ocbxt;HzOT*Td0VLnX3lZOTbF9a# z2Mn;^n9)Y)%_Y%CyOIjVJ&&(GAT+e<x-*f9)Rl3*yFu`iD|EBJ15|%aIY;_RI*^6z zAmV{e&{N2JZmBtFLY@3+MC2N!W!61rt!T$6-131hMZM*lWRwbVxyDtgfEh0EDI3S2 zR=`68t-w!(uh$MeRU&g!Vn_pzID@bHB_su}-j}v-+R=L{LHL4HyZPjaheb=GIpLDW z=B@g269~s+LQS<zDfxe1bn09po{@>(7-W#tSy<WCs`yi-p153yi`j)sabbBU_NaLc zSJ=xvrV^T5GU{F#lhT*7x(gE8NPFi6)GVn8d6XP+)?EhrZ|Re0F7q^dYDqp-@wx-u zbv%MB`#1^z0qes!*Vd;(QFONkzmey)&&E?1+tYi|J+{D(#It`$KmEz#jdY_t{+h*_ zrP{CmR9sCSNju)}tWPGndRWbt)8m+;6#F!8Y+zo0FaB6s$;Kc-uRKNMdpEDrEs^># zPeeNod-Jm9AnDe1zO5b}^ykBOL@b%?ua+N%1`0@08wm9mf7Ypo2ItAo^$ZPfP1QEu zU?$&jTF0@DEwO()=q9}S+P+n3yCp0$dHyzikPnx92hG@9QEN4xTNh1tzu;%No<b3a zPLgKm(pM66N#mRsURdPJ1Nv4WyS2%_Lmg8!>Jgym^%$Rv=4W9uNjZn~!187Q`NVmD z)3FFTs;Tn2t-!e=vZOD7t+Zj|crWoiQU1`d74@`stW$qJcD%)H>Uy3zq^P(H_43b@ zyBtCI8p#i^_^W)z0*+BND4*S8jXW7OEsC}EsJWYOcb!UawOWcz&_-an@-Iy~83~wK z-cBIJ8M{x*)m(cvB3rip(OdWP(|RzxLMn#+Tu*dae?8p0&vqh46&TB^wImWVG0JB1 zdGfoX`%iyKV4Z{NAh)y|o9xdK2gs~oj*B{KcSd=1J7g`EQ1AP<?T5EV2uj_OGyPkZ z%QVIAD5q;(DdPxv*FJTn!ms=|V)Tyvg~1QzNoDQh!lR@X8lOyW!cSc#Oc81=OF1_= zNglC<udAlWy^RcLl75IwHbCt4gX5g#LyfW3F64hbp7nkx6g!qpJ;Q|F`N?u6Ubt`U z0ou!FM#|IPAc@A)($|*irLjF*O2u<KzRe!JNb5Oxjn5}8G4I1QG4q$o<lQP-%zF5A zJy8xh+>Q#~)($16S);vHTS1Su<3MWPzcSm9DT;Vi5e}{D<#<iiFg6L_@FFJiyZCI} zvUGnj3Y=f0vb%elbHggf&v!g|h8-6Qs#<WF5zVkSRNQ&UJrJSbpD26N*G#VaAbMTy zBB^H6S7Bq|y47Umg5dXG3Vj;VLlFP;0~uc>JMnTjE2mFF+rdqR@~C(FX#@iH1-J{H zp6go=uzKHOZ?I(sopE{YjRa7$$}Nce05*R-xzpG2+-BxQDlN}UmVke=UP5cF-unw- za>KIT1~Q-5U$zNYq74QJj=hx}Cz4h>u8gkQ^K#f`E8sbH2d940t#z52zB3P0XK(h5 zZpFBHl)2~-H!I*N^g=mbJrhaGg!hfappDKp`Z<_Fc6q)Cxfu?fFU`NIV51do^dx`E zRD~vsp7Zt3*P==-54q?GsOnlvPclDk+C>|@q(45WHG<#HcOEzeB+}9Q;d{|xkuL?W zKH?Ch)be|vOH~jXzInNJMx(lg&%XvW6`rDy)wzSD<e?G>xepmK{Zu41MQ<`MJlP^Q z42qt8ox(=eZD7{+EKKj}WHRX<ubzM3k2XO_%aJoAwbFv~a{1%j+&E>z&X(-9`0Z2+ z+N_4t^VbJk{EDK85zS?_*fgPB`O7!4St}&gV3c5kuFy3_Zd!o&ToPROqRMeQU`<V5 zf;oL&{gE+{po5U}#t~Cj5r?-yM!eOn+)3AOwbQuYcQ(o?dQ<oeksq22q%VJ1?&e<^ zaQV#!(Wvf^`*Ylj!M|mzemRyahx)kj)Kc3^uD8I0Q=E4C)yt0=C!{!9q|d>EbL723 zbkta}AAE0z;s|w$){u`Q=C9p@SG|Ya+h5-Y;-{AEjanDXjnCM$2ogs;i{Z>$bP_pU zm8T+r%&cfXcuWyv`D!!w7At?F=FVn9!^;<HT019^4;De8%~Nzp&JfvI0YC2`k%=dZ zi`Jbu!!?3rm53iC-`sj`5>4ZH#lRh+cpfyxmP(nvd}Cl<*n>>XJ_`cen_+oQHBS+1 zdKB4XCr0%>A^u8Y(~Pxex4Iyd0^j(+E28GigCSfjG$O=M`fbFXQ<i_l$_eVi(ciR3 zZQZ|z{k3mwZm<SwLz8^6_bGK1Z!hB1f!1TcnW?zokYAX0AHUj-S~leHg|eg@;S<v` z!yZ4MVo$jSY5-fb*f=$$B}AEvXbzz46&Pw;3*z{}w*Z&1@(!trH2U5qz@EvPd+>2H z@-mx2((vP%YM>y%?p}ZAdg|+azT#Gb+>>qf8$o?Zta6W3=*IAYSUC2t%3qa(%M`&C zjL*C})|f{EDn}gf5goiGWphkf1RJP{&lNoxW#ul(P~X)ylsmnRD@-gV;q`C{6|4IE z0`V-5Ts4)YZ}y(C-Ygj#?{l<K=U(iKy5`mNTRt(SQZ2L6X$*g)nZ7)CJ2H>udh&CZ zXnHQO5}(rD>p<d`+^9O_AlAaJmBf}FMAY=Zla{=A#NxVYJ{aJX*~dbJ|D&die7W~F zD^~jD%ey}G(Cd}pipK{z5jm$K{{xE9?_LUJZe(+Ga%Ev{3T19&Z(?c+HZnCJFd%PY zY9Ks33NK7$ZfBRkst5$PI_wHrECV(&H<z)h2ow=8GcgJ;Ol59obZ9alF*GnWm#~!y z6$LRhGB-DuAr%TJfA$4XoLkd|3*!WLx53@r9RdV**TG?M2<|Sy-GY1YAi>?;o#0M_ z+hOllvfuCjtInyZnwhJ+*Xq94>V9S@NtIL?Ma@7aKq-*D3nMEN3m-sSUQLaa1;E0> z&cwpP22V+;X60fF{Er=;QUmDZYz4CC`$vSh6VTY@-6mn|fAStE53&cyy4nI**#WFv ze5~AjEGz&v78c(B1cIFS020P-R%QTsCV(u+9_S2DDGqY@>||wO>GGcEKVJbfrnCT7 zUS4j7zn23<?SM{JrpERFd1Dt#pxt{$Q)63zD#+9d=<@l0wxAKPba8RuV`g@DcV{xT zb7lfLSqRZGe*oOATr2@9Kxd$n8_*2!mt=r~u^sT=(wN{W0cw_3&i`_#g3Mjqjh%pi zcZ02!DbU{eeTl2R8PEyvo*ken^9i8n0JQ&C@TY$TFaZ92H~>~A*8gtz@6~^8WM%*N zVq;TNke!3E{bwtC3xK(mEfAn6^@+*F!-WB0Y;X2gf1t6gGw6N2v751#t+B~_z~7}C z1EfTi0mknN|E<s2)XB=h#hJ<3%Jwgf%zth3e$0~gX5t__JD|ObGyGrmNmw}nP2bP` zGxNVM*Tx>?ZtwLUGPklfGyhA5nX3b{y1kX7D^Nz_-!bnd_&+uapbLPLg@uKOoecnV z1OPoue=V8+N}%@H0r<C*^)K_g1|Kg6kORQ{T?Wv{${hIq0q^B(>;?q5IJp9Sy#DF< zUxH_41(;cxx&Tao7FPD~e|CR21I_=%@AvOy<pI!Td2c^f0Lx#m|9;bd?=Ulvz3t~e z;eTH-v!d)L6$y3ve@p(aQ%nrx0q|nv05Gz#f3pKP*|`B+yj%dE|J~)k`v0T-Z>y5A z)xT@|$9^*Q<{$v?za+e$-G5}b{ktz{{yj9bfd9>)0DA9cAb{pi^Xsv2vY5WVvHpJ^ zfxnmh|Lgp}cKLs8{{LH%l&h`n-+r2Z1^oZ`jqR*#KmR-8y_;QK-X}vI^gbW<|2I?< zfB3I)mIs<yx!V0-uZ)ZF`-F(vTiE{hAg!FGtUQ2bN>(nWmVbB5f3D$ucUvoapc2U0 z>aXVwfRUAj<^TBJN6ysd{h8wYep!FJfbSFazZoU%O+jXVjUF2(7r@xb$@nuo%X@#Z zadHB@Sl?&V4CwK9YXg{>>_IN?O91cce|!MuASd|0u9S-tz%2Tg>0iVJU>5sB+yG|r zKg0uImiR-w0A|Vm5;qHgS?Uk50+^-$5F3E`;~!!NFw6X*_v~_i=so+VKlGkm{tvz9 zQ~WRSyysK;L+=?>{?K~{)jz}mU{?D>@A=gK(0e|O{}S(eKI1?1uGZuay=OQ5e=q%Y zPt0cjz<0gC|03smHRd2!r+@h0E3)_pzL#YA4}7o5>L2)ChRr|ly$;)d;Cmr<fAD?y zneG39?}dQ=f$x<#{1-XiV;$aq1MF>q<}QD%tpB$DYf%5JeXrT^ANXGLKNPXP*X;Zc zd_Ty4u6>u_`VV}U;PwaE-s|xAe+Rx7@cD22pT0JAb$Tz#<?lz&d(;1i|Neae0zH7H z@XHGzQ~qG<y5RQvZ=wY5jC&J;vy^+9X|#-9%T7OBACX~`X=}0qH=S-plZSgy*LEdo zZbVi{Uc63P8eqd(6P4SZyq^u@Ri^ja;FqSb2PO+oMC<#B;0PJjME1R3e;mCv0&E~# zz&m9r^Bi4ykd?k-+`IQld(`)rua1Q->?!ZpaLFM&m(MW9s7LDsl+01)n`F=9lEJtz z5`CaUzw|(vySbf3&z*cDk&UN^_c@JWFY?maVvBv4_gt@3V{`7pqrlU_C4#&`ADgD~ z5<5(h#aZ+!Esow4T+Csie`NyO9P20X9_=JO<J0{lgO0;u>$J=(Jx1ZvR?i%u)r$z1 zwWn(2Kv(B*g1m@JZ|?3cCH+<LdvTw^{!kd)UAPmynY>#Ztiorn{q1F_8|{-Dxs$WH zNnOtoUGp6{_#LdZX0dgNmoP^kOnDf>-}^jW-i6kgWfZkuz1EYbe-5)A`yQ%41}Y@a zU6J8o3zO4PP%#QKnz$*4<8Nv)IP~CZc-u_C;Pkp_b%*g*q|{fL9Iy6YInMIObkca_ zo;=;%2^&A#CQTO0aGIbulUSR^pXp##LLjF{G9+^67A_2z%hmGTlZ(i%npKNTw@ICX zkIRQ0+;tn4=RcXDf00|z*FByHHXjO|L_*E!WQQ61eQ!?HB#czJ!HoRKsm;8yE1*+1 zP<U9FAJ(4;j!hsrUZguZL6sLHgV4iqIDdDG6#Ww>1qIjA!N$BfTtT-gixOMxd3fZy zMyf~HLM2_UtX@B2{EL9<tWx0jt~Zpp$|Av=@*UkV!rsJXfBkRdzG-7Rv)wvNpGQ1~ zYNG4HY6k-}sU&pcXOF-#sn8quTIc!6cnRA=lzbk1I^s7wd#8<W7Oa^JUnXMmRz^RP zG_Kq4#~2*n54gt-&&oH?(s|f@pU2+Uu1>`q6FOZ(VshHUsQlt!?!_X}<;^8hagckI z&98sVT+?Cce?2+HbYG$(3bir(O>Pd-F3a}TV2w(1%^xRfeb9@z`RnD2om3zG`b7m% zc0+0>!ODF4F#8uNIbRv<&?0UTY&CAtHTfq+CFDpZ{@C>|(H}?XtwObGbNGGg67F*_ z_pST2wQeLAT`Nf13pfYc99F-G$+Q=5=SQjnu%FBFf4Ci#f5dRGn1X*ypPT2nbk#jY za@YRRo05^Um(A9$>oPSnJd(0f5Z#a^Z23Dq^1Dga_AA{o5d?)lyxBmJQ6vRGDFiVj zGlDMwl`Jsts*E<a%v*i>Vxa6K+8hVwp#npqvC!onb<QlcrzB6XGBb;F{8zglJwa39 zxixn;f8~jl$XhD*4#p4~EgtxE_^28)*py>9zWUmf)KTr-mloC}7s<)MndbGcB1qF; z{c%|FdJF2L3{-?u7_*bJuX~Cev4dd^vPhqzA?R2w-0u$9y7D=gi}P~7vv-PA?C5>t z_FOggJf3DHJfe+gX4*=>{1p%-=@F<+-8xi$e|O9oE@kQ`Xm8!Yw)0~iX2BHm@QXVu zV$AdX*de>WNv@23SXN~B=kIlVv131x%op;@){dhR_l~cMpGwUwPANMb@}C5(u1FM# zX{f!*;^yl{k=-j^RrghanbbTIZ&#z!1UvO?lM`M0KE!uYRsLf0rJ&iE*7!3F1E`?x zf7ElG;#?SnljS$+<S$jB$l!`z(^6>>y~f*_nnM9k_mljb>sf_LcA|4b^m!VKBcAIc z1qqp^*d$@NM(hS^$nd#JZtzt2-@fg3A6Lff->Il%mWvmOLmAX?zVMR&7Cqah7akNl zp*UC@q&*f%sN*Z4(WKsIfD8kB73-HSe@Db)bV?Xg%MVSS$JVy;he8P!W3b7FEIpt? z^_!@WB+GQYYFpOcdMq=#5JH<aFd_zPph>QprG~Lfe<VVXqehY2nMI-&%0<hP+)`3t z;FCY}id1EnW>Y~H;nK_95@x)dH^A14q4r-ryz!I5W^%Ml>xI74Cdj>hvJEsYe=l_( zTUMx6cNi}*s;c_ElOfMr3-i+uQ`Ta}#GP~}6>+THxi4TuZ6*n<N}>zWBygBd(~(r) z&uSpwy)Dt`?Xa*63O1U0ug7T1(g3ChQB5sQro#SX1km<p(^s?~;|bTXcfEN==<Bx& zy8&tbw~Oll>QZ8d@J(bIL8uCCf7X`$+lq)h_0H+aQsz^|M`$&8N+YUMLa$&NT)BQe zCh=3NaXH?vogN?i88O^;B%kLvJPbLB!}sFymRp}AGx`{Q=aiW3*m6>vjGC-FGNgRG zWdbNBemmsp--c6Au)ovklfH(Ab#xskZXT>%kWYf>_}y*sbTnti3<<#me+xSErR)2V zg1+6_filtw#B{hHZG>k%uk!(+_{)Kv(xhB?iQ-Q=%kL5y2?Nj&a~el|@KC+cud~p> z&`S+wR!V4|R#-dTa^=Cbo|i<ezmRG`{R*<-6g(cF%GAz3wIW`2{}npwjZ=!79qJ}t z6Qu<7+?9f=-H16dk_y_9e}z>f?W%b79LOK+Es$iQ<tY%&axtP$od6v#A18gNu0rw; z^29XSC-r{yt1_mm9ydEsNB9B-OUvXULulz3zxWzXOveJ5=XmblTI*jUbP%k7HK-2P z&ptph6t~5V(&x{s=+dOi?j3W<>BIv0tHohp>Gf%e2X-@AGmX$uf8taBkM>xvwKJnS z%)}ux_ap-E#b6|9**8z-=B&ey)Ezn$!4b<~=}Ynxg*-8ZTd{EiI;dmevEYRt1h_Z7 zYCbt^p!MEq&{ATcZy(x>tg#0LpQfvU3ZKR8eK>@gb>5tYzInAd;dHC(yzxqw=Pt}i zS8uz<bMUSRZ5e^^e;hl;nF9;AeUFemc2eS0L%g%hc}W&4g}bz_m|Ta%Jj|s{B%hhw zHTj=H(m@Pea5zO`pKNU88ogk7%|BRJJTrjX9(h+#wG;Ty;3CTp8PgTaQQSrlb-IzS zH3^+^tDl-4`HlBB!B&7#H$z~C*?(6+nM$8vjm|hI*4!AVe|Uv0U4GM8Lo7>EaD}1g zeOp1{;6{u3ER8}l-SfJ+iBuYZ)YBD7R^>UegA7vaF--EVG}U<}^b{-H4-#qC@fRgo z?|9e}F)jdlr0fxx2!A;cBAdWU27eod)$R(pIL}(Zi8xX#wh(Kug~C{l;Z=W;I+m>w zCPUYC(C<N5e}Nuxn6Qjq>du?!N+`VwRfpj5pPWzh%s<%Z_!KH!@Bavqi1W-xEEmOJ zee;;F`9?XWl@xpfMX?mdhhs9#>#*A(Wnh*eHbJ}~t3m_LrOT*Bcg8`Q6*K)=8_bAW zzVU?y5~1ot&Dn@NMun0n`G9%6zZ#i2VKf<(Fz_z*e^sl5DnX^APjc`CLBEvklmBsO z9~c)D;+3!^Ef3Wg7PFW!s(H|DN+KyvD@%Cer3-4ayg+{xq!tUf=MUCR3N8w)W}l}3 zO@U2T>piO-ZmxqDiVluiAo#b2dcZ;1r#%L@iF`Fz<wH;l-}<%Sl@C#)WW#7F&93Um z=r{{ge`04%Eb9g>g4q*xR1o>E5gC|q{x*LleH`>3!;M!h*ec+iugTAc$*nSw3`t}| z!kO8L0k^v*V!4wOL(hvm-fOGUlQ|pf7kd1y9}(g02ex5M*}^w#JV>-AU@-GoNrm~g zu(r`!Qua`>UC4=hx3GmNTc+=lErKIeJAt~Me;K*Jaj*~{z{sX0ZR(@MDI%mb<73E& z;J#DEU@o^CPuIdPA|^p_QT=dM9u1}g>qbti=u}Q!2ZTt-GN;Ed=y7;)D=mgXXdeQQ zSXGZz&7gmS;qGZuoQD|E7WP!#O!wg~@<B&ppLZss=_A~$pzBXb$yBS^cwA;$TbSg0 ze@ry{z(m6b-@S8DkwwT9Jq3|US?J){S^irH+pki{;K<X1Va3ZJVcb;TDRYMlRNWlf z*m9FUv{C8uF;Q(z{AF?xkgUi*<+u}|&+|Zm`T2XZSUBjD6OzA|pm|qQB?UD=>b~EH z?k0%xfi4Oe{jvPf#mxCDcBVMEf~RRye_KY$Qy{0b@3`Mm&-WZ4;Fv9nXwIyH5FI>n zSKq|hle%+=Z*S6AQ?#KxU5Eph9{vTQnA3GrP?lKj`mrkUV>lK#PpS5HGq(MAjHyYl z=UT=9l=l0_4>>MxGd@bsr%5h-SYJzIJ?fKr7Kdh42v@h6aP+)Jj9k~>bg{w-e@Gfj zep4Q`uy=>YJ%@1j=*>IX2Zk!hk~AK_MonI)zvM|(*;Ljc)I(o)C|Y->{=l!^T-m2@ zfYk)z&rdm*$<J$~M$wkvr=|Sr-hwTcz0%gW8qMTsIPGHXet|I~m;J<wEsP=GFeHpY z)}LuoGN#;(OnA}JVs6?zHJj_yfAFIQLBPV+H|8QWo>RL<Zc;Enb?-|5#0*{}ywKke zmUI52^H$)~%^KFgG4u6KYt)#H2I0EvzQs?!q?i1tg>zINY7X1vsiZxThnh}9MVZYO zZoJG%X0I;>P@bO|&78(@J&?=^@_&qxJfd^UZcZ;;-3KqucHK3oW|!?!f9K*8czWTr zoR~Bg&6?UMnSAga2mo7xXUVVa>Af!=_axYrnXMuXMp6s<9;H%FG0RXy99VkFoOdV& zR(QG-KqZ+5!_!@#KKLvT=dOO2b;^;tw9?0rwPjTtrfsy@LI+&Z*QSqg{4F0}NY|Y0 z+e*;oxz;MM@i{<!Uwld=e>7FQAe10iLceu%)6O+Jbb{;2NAU<xl1a^^Q3q|l#Ww@Z zkUdi4Yr{ES9!vuPhsqII91(V5-Bjc8<u)=hQW+>zHZ@kWo2nD5#amN{<{|ia>f<N4 zVUhi?32rmR-h%y+U`NfUP~-S(yqdKtoE$!997<R>VmdN;fiW23f3(j>i#yi53Nm`o zX#<=wmh<Z<jCzTY4?jN<o6KQ#Gt^ip+Eepj4L=W+S5=eZ;7iVhQu7nNhOlA-!gfQm zM*OJpei`cw0BjEkOJ^%@xgW^#Crtd+W<*lRlnIjD9VV<Zu@dJkwOH@!`KfP8r=S}Q ziXBk|CTT8y`8{@Xe@b^D1Os_c4Zj#q7$6Xk7{ZyQ(%V+3k$DkYaeXs%bJ9>;#r_)l z0sM<OOv*uSV7X<`rUi4lM_c|kh3T__S#>tyYYXvnOyz(IOmYW!A8i>}Io-gA{&0ql z**np+3l*g?5?Cc0D}g&rHSoQ}!Y@c$Cr05e6N=#pN&^|Te`9gCYF>1DENTej#FRr~ zD|>kgd5Cqw&@4%*4tQ^8ub(a(lC&CXkybVyB$A93VD^NJ1JIq?ITjP=MerWXI?7YK zlMdW!I5F!Xj$5-hfmnSK<|_2frh-aV5O2;Et6K3qM6VfhQ+9Sy{u!(Ml2tXIj{Eep zK6+QFCiZ-*e+_E}klze-!giKi-j5PBl<XaR>uMW7DYrd9zNsU4NZ$nv-IZPkt8yV@ zKSb_d0t?T(J4xBW{Xd9lt689?LBXuR)cRnn<*ON|O@s%A=T=NYm}6zmS>zVC&Anb~ z6&upKB(dhR(TXl0du^89U+kI&Eq=?3uPF6YqEj9%e@j(eRM|75BRQ~DIKx?rGr_PP z4lBciaR1?I*k1yPOUSZ`%U)#IY1b<V$$Yr!r+oFh-qrl~&R6&=Y8f~MsIP51!owJj z*5y~}wD2RbCmFMK^f^uWqUeLuL{m;*ciPIhs6I|5iSsVlIYE2(ay!+b|B`;7<O{o& zb$V?Qf7qa@u#h(B>1(L>t?^Jgf-&%y+u4}I!|C4Ae$)<;7)>O*|DHsFDQw=%O`N)t zvFU@>lAtyE6Lc7U!2X;?y+f}S0`%s-@y+$P=auS6Sb!Nx1SDg+!jD~~C0Xr$umpqW zRd7MWBT5M24Qz9@GTnC`|0(P54sWXC-PDZ<e@!7iq&rP)6}bq!3__S8y90Zw+v*tL z$7lBzjrWw=*5<g?gk4f4{5X;(yIqoVMC<#8Ntsn*qT7k4DBOG1&ySU>;vTlyGALQa zSs+Z7qq*np&p%%+!*w15k)#Ddt!EZ_DEIK&*@rC}&r4a9)*WB=*acQ=D;CR&-8EVT zf1MpdEz^-R-o%^O_vA4_;E3(1iyO~G)F&h$Hyyv|lh&Lf*TEArDm8==AIaq0)ene< z&W89>;#P31D;|qz8E}dlX@=ytF?plUKGMg<SvVuYw5ADb&>O!}GTyki<q$}D#72I^ z+JX-=tsz2yZipwb8|Pia-QeY#gH?sce_3<{%8A;q<qdK`k`UVq7fDD0TH$8KKsh7> z-@&bBe|k7l<c=)?JLwj;n9mk0yh0@nWW=mT#b<g|z==wkCPY<dv|%wBwdUygIk#){ zW#D0BJ_(#kn~j?-g?E+J-6@Ns!{rZnWe>1vC(!Q4N9FMPbT`kdgUtS*OJMl&e-%fZ zQR(0qu*~ExtyQ=}gSy7p;}VM)v4?JZ92;&hAH2;sN`6mV{P)+0>ZBW%88W8~0_V&L zRq^V52*IA2&m)LWx^qu+1_Gpv#jF(HI6ozA$fKdjFbch5&nL;8gRzF0k!PXH@}5(r z%fvy3kk<kx`z>NOn@s82#L&R$e@m;d)}%D;%|hjUCRMau(@m5hn**!dG7e0I4K3tt zICVgMpmofjgr&LlK{Mugp^&~fn`hEJLUYecjVI&b47sRzm1(;cHpBW5k~|pA!jNgX zOGd`w3d}|hFeNAl6FWz2Y*vt^k1nHdG|akvBD>!F;>DX_`o>ONyYpH%e@MZa-x(m< z#iJs@z!b4>Ba}}gw2ev+jARYPYPN_iOXeJ}jxcx-N%@DFt|tcxI_dg4Kgr)!4qhB& znsg==%gf=V8he?5<T7RU?Wfg)LEj17=Pih?*%P|wW4z;4Ivk0F(Jm{fAInho!Brm@ zKr#y&dVR2~`c?~S7DG`nf4YX7I*o>>)}e&e1+Ph*g*Bzr3Ow#8^5K-Q^pbpT(eRNY zWWkW%XUi|j{I(N~i#@RUC$$k{jq2?X?`kIofHBt>7iDB7&RbTFLJWQQI`$((y``D# z`#sUXsWF<OT8n`t&{Hv1J3x@)ROO-hEw}M?t@07NCYKs=N0!gjf4ZE#IMAF8ULm28 zk6m2+3%?@jh#Q%JANEkas4%Z!=UkX^!YuBP7v|%m{AgQb(=C<Hr+s_Z>|#IMB97Hu z4c)OVdZw?2AtuMA6fU<FUs#WsntX;A24}lXr=M%QepUzwWV)T+t$p9b9`juI9VYOI zFb;N=GBj1N4#qp?e+09E+ZaHWWfJJpls=M1@%d<~d?8=s6rit}g4?q&GbdEAzRLoc zgLdObqEslB(5y*Eq$55&kQu3%bF3QR4|l>+f8;-J9EZ~yII+;x3bUsgT+2C;e8=d+ z9TE6pZUB3ku{)Cv=evw}b(|OLP)n$2WZI@q_h&9y5u;vNfA(+ZlN!@RZrG5BMmk7E zHbhEQ^*;)FN7oibNV3_xePJ~gyapAZVb7`q8Q?x1`jV$)|BN+Wv#WoJ$9U8pnpAMB zrdIYOFi15>K_a5t5UmE@j?gB?<%8J2N~))_LoQ7MXg{lb1V)KR)TczZKv5+i$c(;d zw-#l<0(}#fe`7P*w~H5HJ9HRQg5#YLhjc)d3=azqSI<a}hriPJAqgR;HqR42r1QH$ z_R`GETZH+opQXNd=QwZ3+bPUCTvT}J>CfoVsKm>&QBFAoed~->MAeRA*>nxuNePPa znI2m#&CMnaaJY8xGR4rEeFjH4;`%jKvw=wQVK<xee-_Pi#&%6-Cj|Kl`KL-lM)ebO z$eGzACd2*D+?#B0wv)U)X$oc8l(p9(k4nBx2=WzMH78RJ2n_V7;rRkZc%A|rqbSm~ z`pb*o68%#%!pbqwr^A<{OA0SJ-5+bjBs&lMclhf`S2Wg~RbVni<&Aaoa<FVAvT$hF zjv0Q+f1y4W_^CAS?uDLBjV(lv&R!PJYibf7*>uCC>KK;}<X3+1IAv<?Zr-`<3l?m{ zBHjKZC^-FDYvyp;5y5lB&0E)in9xw3K`Q%V_g*g~Sqp4tAUqjf`Fp#5(L%Mp+~bP1 zVM2Z$4+TCg`^%eQmJw5f9~NoW`o}LpM<47Be+BPn%`IqN5I4Q<2U=erH|s)5wFYcT zsk*c46erhG%NSFbY&8lSl4}%qJJ0I<AwUrik%uwPi#T$@9)3oye9tRg1Yb2aoS&oi z*;9v(BM9dR`NoPFTsZ+*YIX_WRQM$X(AWF4P4x*a*gW_tcTzoH;C|Ydmli6{eS2d} zf88ve-#96?I}w{_>eVz1a;d8car)|_ewXr1F!){z?p0FuDTTx`Dr^#gb{3ZkrJYqK zluS6MZ&erh`a&E3{2af1caJSbH~`HUsh%P94V2wB5$n;^uOgjEtURd5zYXH;YRpFU z`_<*B6qPeWxxA1G1W#Sf7g)^pC4D5?f94nbIEY`aAzA1niZ^TetsE|y!a|0b(aumC zTlKog>eCW=xaRJeTKr1?_hI01TwyzUU`xbx*l$dL#J-eT4VKBPl8IB4(HL&LO!iX* z;tMrb^PmbG#8?%jwE>~)y~bjX)kvMGwf~`F7&c$(wCx!fhuQa><bjw=2+{<_e_<o1 z^e+*VCMNhhvB)5L9&XH<rwroV_!LV`F!<9fWfF0z7FN;1CLYvE0fbyNir7ddsZxui zh2v?5$n%evipz7GXXVR$up+1m$X_l{E#~UP^DSVGViK6HirtoFz3a9fMZc_fKtf_3 zv1*JzG=(w`hwB|f5E~7}6~dChe+x*c7Dbh)<3;O102IoW8&iA+q&O~(J{azuHjI1G zzBuZik#!w!`t74+F^-=TuYYU0KD{#vD$nf0r5Y9+5}iKs8>zw1;GA~+2Af^aC?DX% z1utQRD7hozDw|=d>*^Xn293H_&J!at4Zuz{5GS^qjXF@JpU!$&NI)<ff4L`#N&@KV zubVm+KF%AM;s20VxY1|YO1|K<KAj8=9>E{17~5COVy?0Si)u{Dlr3(D(a}H=yMe3p zNoD>PMESvh`y!UoJ9)JwX*>MVacHL$c44bKACLD)u0Ksr<hzj@OjOY^S-kQBlDFG0 zUP5fS7pxsMp@C!<?K3Chf2%QRL<Li~5GV1P*_@60M#U|K_&tpIpH$y%UCTbXa`cGh z;73ljn3UgU(}?`85*2NSyrqW@vD1ICj>*~gO^?>V?*MN<_R&rX&vU3^o08xNSWyqf zV<t-KQt-7wD7a_rzY^klSdxp<r*QQiY?uW55Dt%RYC5U>BSQBHe@&2G<p}FZ+S*nh zC0e>7z*wIvKgdL0p7vYdFk&DgdZp=07tA_PBENM&JRzF2S&a!081eHXje!+hgwn-e zl#(+3brENrB(y3^l%-eGx3{KFV!>;I!(n0B^mRz8PD`2Rz<HyHU9Li$sgAyx!&5KA zEeIpoE&a;fF%Qu%f9aRhxfbd>Z04E3l0s`^<A<^cQ%(3;Wvvesl1L_`tY@E30tkMH z4in>4#dp%Q)jEG_DQUO{vIsUp5*m6){6?9Xyqu(6Pu`l%0jDetX$c(4O=U+yf_Eb< zKTD}u*&Mk2dKJ}S!UvxB5C97m;kxg##>T?^SSqO^d&FE-e`wz!YvC;kq3*=!84z+3 zuPh6u{UbJxQoX6pvul?_?ZA&{Wjqn@`9|3J46AIk6wG$xXI<-}iv@GQD*bd}9UzR% zoS--fAnslt&dhq9MMK~TL-ywHpD@<@x^)RFkEWQ8(4I8ggEew-s4GWYEq1yRdzBYB zEI4zOHB8?}e@90)FV5?4cCNpDz*im+mu`6KCJyhJ?*ACI(}4j(-{Sh}Gw7+||Dqpr z$c62jd;r9MF+=$XRlv$%Hi`oUUnOg4J>A9@lPImVBSvWpEk&QMPW_<vq|V>Y5=FQ! zin7dQqm#5nB*ONb_qozGkms{EhUAy*B#Cl^MjowIf7%pP`&!`$DA&&~G;L4y>kkk& zXb1)&97$Bbg!<q7Q){zs(iswJ13aGuljmw0$)tV3O!Jrh+KJ5^p0-dNk<#z8*|gCH z(dFMpaW;&pk7JcCMmRXIDiLdHQPH<35b$oFY?bB7OA2qK*<#b@54f_pzq?_GGQl6; z&!?TFe<9v|gpMh8fhA|wY%700gX+>(=)Yp0-m43{ap4DI|9t3-xNyC^MnGiI6Y|sE zpy$sjni5Juc5<fCozIG|a-U0l$o7ztVEZ{Wn;-B33wx@%J&7jGfv@&i#Tk75&E}eB z6(Cm$RCwc^<_<nZvQSL~>U}LU8M}grB#g!we}tS*DYd24NeCq_QlDO_!!J%3Z0#^w z-%qPgG;!uZVk9^gH^;0cN$kf7Z&t6FqsYRS6)e)HxoQv=@&a*250k0Sk>|q?xM*WP z;<ml%t#cJX^edO|v4fm0a%5OGBpXb{R82-=<Ld{tExiOB3!X2Uc|;n*PkPkF$PA8$ zf5}%@d*^$ogM4d6D+iA>vp7RqF^_Kdg5|~w3M`&46V_Iac_HV~ZeawnX?~iGVQ501 zS9w36s#K05DTYfja(X~e&mFtaY)*oWAb>SfLa@i4pk*yzz?`<v8lo~xD>olLHj}5= zQm%tcf_C|ps4ON7a=W#Icd@~F%M)Rwf6c`cfe3xYb;>ueZ`RLqu!n>-0*cM>Wlm6{ zL%$O2pCsUI5hDtIxhhs>B|}H~oh?!l?VKwtl=at-<d5fn_IaUUxEP*O6YXeow6XHk z8<*P7*~0Mw<((iNOJQQrjh|~2+t#}^9rtvCscWNr5sN6L^AsTn)wTD^n7l$te>V8^ zt41I<jKDIs;x)U1=}>gqnt<>#5Awn4tm=^bTFSyohufN}f^WvKR}5`u3(#fH>h-wT z+<7=p@m$~mM{BreBE*&_bPWFxiWN$)`5U*xmp}<Z5=4C$aE*s6%Yt5~3Q-iXY(|A0 zg}dZ|i8I{llUsZ8gjI;7C!)L^e@M+jid8S^p<cm)DUq+W!-<nCx*6k~Zk*;gcp_OS zui6Q5=#$mKRxF^mcEraaDLmytlbBN?ret^XqIF`R^a%GSkEp1Nl~b}qX2SUqLV1XK z11wyH8^)ZR-!?4;c}w^g7Aqp55a+80;o>Z%_t^^zMaAC_3{?S#cT{x=f3J5Y8V^D? z;IbRs0!Xm-EZHP(xsTsQy+_Be_zM%;-ESBBYgypPAfb+-Vi=(Em}{J?nNUFsrD~7S zoQ@v4$HM)Kl%vm*zIiW{Cav22BUOi(R7SsXIegEt;tVZAx#(;3l_w&U1xrd$kkoF6 zH;I8l0{a4nggBtEX6cd)e<5a1213E<p~S#5b4LvELvKpDLl_kExDtvKW#0pluGR=8 zo|}Y7Q53gz@v)H4LD%2=&2m%Wqfh)_-V`3@m6w(fhelCVfv~gsa-RNtDJ>c1xQ#zn z=4_)=hR>b}JmSeXd1y}$x8BZuJJa+E^Kfl++ahYzv9F_|i<hdNe={_0?rQB{!(36D zwX3<I1}I|i^}((CObCzsn2|jxDaSz4SLNGK@JcL<lR3-^P}DP|gqQ>=3zZzm`$H98 zNs{JTsL(ycDD{iGh)?~7m=9t=ltHQeJFeWOlw&W?uE<KvWwG!{vu&}M2(fa4OfORu zrL^PX-d?_qHnlG)e@Eu{QEo`TC&X4`;in(JYIk4Ph>9XhWd|m$R5h<@x*Hjz%>jnp zDZ^+{aMxJAAzFwW4b&wI$wiRg2NZZ)FV`G9tfaHX1e`x^xi*9sRF88GKB2@IVM*I& zxRBMIVIW>;uE#P<%#HQ)&o}QcnvmCeJw#OHAjY39m_W>fe_=k=FXSI!Gb!O;yj+}H zIdCQ05@;$(f~P*~{@iG)Y)snJ;+<|!m%$sz=0qsL?OpF+C_sSJ!wIW6we3$_RtXBR zEw2x!T9d8m%T7f4a5?1`DW<poMkg7x7uY0{YS~3=QSxkpK|Li{-_ovNxBT_{Lsj~u zBkpLzn!&2Ie|EvGiN{o!lrGjuWLVQs0{sd46*}pLtXS^S?Fbxv?N4}1;+;5|lgxQU z9uHh@h_IL7s`bDWbf(D?hnNY@y-GA{q2$0?!KTJc3NP(yKN)M+&1%l+$|gTnD)seT zuI2BA=}Q>fA?>m%UxZck6?cq|KGYsT)guZLd4P^Af6E}I5LcV!9dn#yWUjFF5X$d- zQLhZz`q>~E37Tr^$A(ynB?Hol=%gz8vn+mq4W@1>8D{soG1(}-X?L}x$P0>+b)kq9 zyj5`5+2#$&>O|pM8d&KoAF^O%=7v$=ty=y@yW?PMBC443vm983h;FJAv0r~OnKhua z)qW{Ie}49S9?)kTa_}Pg>hb1O*fVD%3X}Y-V=sB(B`a@8Y?*XW@xg+abm|K^4k{Z} z)cLPnUEE4}QozTel8_!Q`fCki+6z7hP8r|V&L<(B%y1@^d{G*frFx%zdLntRM4*dr zbu7vfve%1{3KV02i@!|Q;i{Sz%o)4$bmJD2e`lt15Of1_Q9buyIUapN&d#20f8rY% z86`%W(TbiTb@PE+>nk)8q8Ow;EQE@POQueLHInXaj)so3kIsJZL;8<Y#%4rpyE<uP zq+Zy*PKllq)Rc#qmqq2uD`xDXjtuA`v$5`#gwac%BPtd{QJdEJ9CNJ?!7?;=G-Cll ze|_DPnp6I%{(G*W=(*(E)XTK`)fTdKiY|S6)b`DKN-Nw+gjlqXcuG~tF&q+}@ZOuV zSC1!EA(m#|M*)#PIo&hBp|-L6^WA6CttW)P-OWHS2;745J?0L<Zhx~LcASM#W(R3# z)J_RKI4v_v&DDQoyi0&qvdGr+%SU!je_b?Ml4vy(%=GQ8Hz3KF2Of(+p|k6|Q53)r zGBL#K+<f{8<cEO$AjT2JmNan4ub%O0yJm6p`(`<tT)T01EXKUmS$ML2U<+PsR`U59 zv{bd>EC4l1T(4+->Rzr_n%>=+lkme<XRDF#5^kD(^RM`+k8<3RbJ3ekl9nnOe`ery z2(c@EDddXu<PyI;fj5+O`V>VjGLdPg7!9y{Q}A9@btI%im-4|swu-f!h2%oZuaL=Q zq6`FV)4q{-_n;Uk63^d1ftm-_cJ&%KUn!nReh>V39*PQ>l!?sOM>!_-mPyeYgv3j? zxyn~|%!trg$zGEzX*Mk-KLC<IZNF?4Mt?&-a%duWJ6%uVDsct-NT<W%r#^5?-*6Fm zc_hUBe6xSowsx@YTH$(OUyjV?$OnyhFt%POx0)WH6V>Sn*-6L?wdsZ%W;80#2>;8p zzCc^2Oxy{f9AG8#6K?_9=+FfH8jo5+Z<FV_R8%oQk^|xc2EVycD>eu6THBHhwSP&q zZ?g;e@;LQ}$t#qg*9TN|bnG&;ZnNQAjWWJ15)q~?w3Tdgfpts5l6#hu2J(a;6ROuB zEBrkA`KBhC<Mw$KjI~W(rb0^JpmY+`hu@Gh+w$AuAu+^XKL<LAJw&#sWe|6*4cJU` zbJf3ehZMIioPTQC648~`DERc9D}R~pAplQb8;kiCxm^yOL0qet+h}?S1S;LYgl#D` zw!z48fX+Xi62vlwk<XhZCf$CSkkxM`xhO#nu~vpdu<ZuxMLc~K3J(xOX=#8m7<3s< z6vy>|&n-8n-w$TRBe<Adx?f||F|5|{$BOE%FjKpht573?4^F1Ih0!;gH-GLPnVf~$ z9RFTc7nPBh7c*RHR6=f*(?&d&tjxANlk^6@!P}c(Gk#;(xc56Fkz?PTob}GLz-;^X z(fvZUv<(W*<)!Y<ic{eSOa`Xs_L(z7>L0??#KB~x{;Rc$9GHV!oYa;L@@ifW0qh15 zg=4nIWaHi0B*sj+T1XIAT7Om6^vIvOo7H!q!qO;vmAW^Uo|Kwsoh8rUl<}|z1F8&F zs`I^bw!ZBOr$s>3Y<dKeW#jF^!_f+cEru(L-es}WlU4le=USY~@Fzc7tOEZm?)mh= z4EJs<kC@e{GhA)rdSb31$d1^&Cj!L5C@gc*=JiG9(Rr6=tHdpkrhoh%eWF2Xjny|z zC_lH?tf%txxm1#$J>MN2(K4MUy3igD?%GdZ`*57b4T2aQQ8ro(rX_xfBX=-_1j_0d z8!#0Qx$-POeCkhX)-hCkMy8SO3mVLDTS7<H5{%;QGp9XGO2^MdTC#$Ov!PpdOc{X3 zpYEo^KS@%&>{laSM}MHzbl`}0S{7gAYHo-ODWuR}oQuDrs36hwsg>a>ePW_WiO{CX zwipsBZn>!~QSlrk<A>*FHa|DYx}GPr+yTI$X@7Qn0P7DqJMgu-n}iLfeG+G{Gf-($ z1({}2;MTZup!)b0LkLtFp*(!zRA|VCdbr9y8rmgaDwGh3>VJ6-v@hv^6FRs9A`B~j zVdo`c!J%3_vcq-5OXnOln*0h2d@C_y;8j&bH&#Hhxcxw>ey4@p{;MlYO^iZ1vg3_+ zKk~`!M;AS*4&_&F$P9&<&Gv0jQO^hG6lB#q((%r;3$BY!1CGwkp)9VaYg!paNIYrd zujtKg*umQJJ%2CG*a)`xxp^MzHF3QK7f6`M<_902^ufzIBITK7N}5kK*!nOP3`JQW zN)lvlf85b`GqrQA%Jsu+5R81R5tw<ar@|uDZi*y)uDxV4x>lt-7aRR02}(18VIe<L zZ@ZzNf9&V1$}*FjWd2}z@;H>2BR5Q+`r>Mkal8AR41Zw0k~p3~j|K`I%&J!HCp+vM zfh^;&UOO`7*R2*gNWL=g#ePZYkX_`4xE>Ipx+TKjk)M^mQ)qSId0p(EEqazuQ`a5{ zT2S%VxY!8O{2?N<W}`|?0=FwBz$q$Ulr?)*N_?MYOX`<v3|5M|HNF$f#8;|GHn=tV zgE*PO#((OYixA@eaUd+Ytq?V*)3q*>FYAX4Wc#Ots-1LO>qf+0k}(ym%RDyGQh@ml z52bFoXKI#9X^X+rdDNu4{z+=FQ<<jfkwQy#c`~ZcjxIiB-LOD0z0-dBYEg|z=Eq-~ zZcEkkec8X9k*|I(j<=wUwzC#Cay}OdhE6A;ntzinX_FoV|Nhz~S!{=Hs9`>~YegGB zi)7BohxKiGMlenlPyRyKqlfhqT=5tOA6op7O!fiNGZIB;p&1>Jr{kMlFY?l%FkI}1 zBu8g;CYzoXm_QO@!KnBH(h>o3jQjQVMlPoY)I2w1fIgV%&|_dC|30Eo2({@HmI#BF zBY*f|NHcl$t#GddQG{qD(R6Xl(Y2M{P`^(5{b6<ra<E8%sK(~&inTwMwYA`ul}6Qy z*Qnaa=;vZ1y&dyO`YIGDs6}Cj?<J|jV^ck0vWYc|!7B$b4&J3iONpu7!0Am`l-E-E z06Gl^LzB%bs|`^k!cj%%B{gClqlbN3pMT3b&4WyL>S7HjMp?eVdmFfmPa<+*o8M%h zJcNHDqaf^<stCS}>?YW8U4G&wBCK=PYmH-aKI}kCdQ7;4bx@X1xh8i5T$J_2?f>lM zJNb4CgXvR!d*s28!{apjMAiR*?QMo1hPP8Yah)ke9$~OT3`8mML43W-U;WI9nSTth z4_Aq2irjhHt`MYOT_Dz=w^(TpY*3$Og2MaA!pFVyb(@A2@PhH$KH%cg0Q2m~d0{pf zMH6{0xL@|Os5tht47obO_M5Zxq@m*?ByJR|6IPyh{(<NDr78lKNf~x%O7zgVRV9^n zX*9d#_sI`^iFR(td{}t1!z^@OkAIKeF09CNgxfA}bM=&g@xm9Vo=b6Ir|x1?qmCYx zFZ?e<P?|N1E>}^#F0x5}CEv%Y3t@8Rm2QmSOCfD^epV2^7(N?FDVx$sm?FZ(<6iJ8 zcco#tRzhM?U*+k_tAk57zd{ZVz7QsaJ{nk>M%D#Bt=L<jFf7}cOwz`Pq<@1kyXbL2 z2aVSdJ4UJ1b7xjxW&b=%&od4Gq~KUF(NwE?Od~bSWXlcjFd%@$_<NXokpl#{bTvv; zd;XrR%kAR+ravkieX)Ea@U*(dLP5vLiPcyyUBuxL^zsuDf03k*(Kj1caO_N)HbzMd zCMC6Y31u%-JHk4ixaUMYO@HzTiVsoneD7#x9U%c1mH}rDS`Lt{g%wBsZQvW1{)ZyQ z7nn7Nvl`61nyg_6eBE0XsF4UfP(4;tQ%`$0s}n<ueR`wxxNZIJyzOaLfZHBqpj(nP zx$U-><*A9p^2L=w45UyRQo+X<JCmAPI8o>{0WlWIedH`pzs%Hmlz+1|E%YGz->cD+ z(I>%5B)_F#SfsLM$1JYx`nf5d7L2YRXEPklabvLJgqAJ(%hnn0-v9C;X|`#Z0EckX ziEO>RUW+exFzHrU4WQk>(v%p;oWQY#s&P|2Wv{kdB4I|(2<I2)=tIaviQM1IWE0Sr zZqvas282~ENPnLT*?+I5%*pHCI`tH#dyVG?S^hrlSg)W?Z@87U!<68tdvH_8;`}Mz zbF?XiPc{Ra8?Tr@JN2DBCAgMRa#;gZ<o<GzI_Y$NY17Rn<p10_kvq~_pg7q#Nfbw_ zF#mx;$@5Iw#SD#F5k9Gr4p$1l8?k3df_J(*s-`Hh2&UixO@HAxgMM%$2Lcu&>NIX# z@YAAJ=4ombD2DQ|-nDI&yj=61#GG=YAYZmG8NP?Xk%c|3S1Es;oK%nW`U4k>OX}7{ ze3N`C>DEZt&ovJFANi%!Zv&6$?mPXP(~I~Mw<EgkoYP}pv$HDBj;A7>2Wji^0FYER z$7!<M$02uSHGiuX@@W<Al`R>VO+067DbimkTMrkec+9A{<li<>QYcT38L>l%-pXoK zjo|tG`OB#uFqL4ZJKeFo8C?gVk`rqy@9ry9jPWDLYUQLr46wRk)wi#Y_V@{&OC&Y$ zzrjG7Q?tk=cpoL5QOY?As|SW+&B=ExUk-#TY+=F$Sbxw`@+%|7c~zz2L=ch8LhcL) zqQUdvm^)iZwM~Cu&u@NQ&6CyA#piOrceG56=drNfBHApZr0a${T(5{}2Oyn&rAalA z_F9ErF>L8qo7l_hHnfdSwqPmuJFwu_&JJRAIO|wt<RBB~wlA)3mdh1CarXNG`Gf>J zfb1ZV-G5-?wdbo%hy9Yskj6z8sXLRGiuPcC1kMen3=wJ0W|`8fB2k|Eh_wY{nCkCs zS!~D8D9xu=EaUBqG=I&)+5hS_RF&C>FSG6eB4WoPQ9DI8iFl!)+}D&xiCfahCOx}p ztntd~V)d^$l_=E0JDeyAV0!HqVULFDZNC29@_&p0OiA*QeUPS$9`{45C!z#<G34*q z0=jl38On=1@=kSo(<#dcS4Hmgi?QdOKK0y_X-Z_`G{hFlrJT%j`32w)@V1KMm%s%a zcos=&KR-0j#20z?#lICk^FYB@pfTUjLJKln-S56+{)EW{*F4Cg*`r4%Ycgj!?=Kv! z;eVaMufQ@JA*qI&4d+IA;dp84Wa0N#8fEXhnv?-;(OYE~e~ao)SqA^5C_TnG46P28 zBcF=-i~gj7e4*7M)~;Gj-}wvDvI`yhAk9UA0-0wmXNHNcHv=ozD-_dQ%Q7h$0yvq) zFS3LjMA|xvAc7OiU*o(dRlR0nsUka^tbaKOS2@?vXJ5fK47{aOqlK9lfQ;wjn!|vU zc49U*Ima1NilMDIj%-v68M*?!5jfXr@h`s!=OcdJXb*SU=KFfc7m2@suZt;23gA|! zAiVG+aTM)%I-+}JZJ;`@epw<s9leL}p0USC4dh}J#aS5o!78O-=@9}AuL9`3w}0^M z(KHa2Z7p%&Y17I{#gYa7FzurtnNgV>Fm)<E*HX({MqvYO3O}jNYs4vnNeZV0x|P2Y z(w&_bkeKrYh@M3DqjL!PSM#_#!G7JnNuwDceqr5JpbyImRZ>g%RhzXYlkpn|*-JMJ z-oh@lUwqoRj^QhlVNQZhEiVv1rhl1(S_3aT_s4t_lEf2ALyqnT;u308>AC$T7zG5& z7w?+EMzojt6Ia909}z=Uz<aSD;v7{W5o3Zx1RLV8cE7-qN6>Tw!ExxH&nNBKstH8Z zEcn)@5IgvWH~V8xr%>ll$6Xs9>QHdE)o{6W<gLc__ewb+aUWp)&}6EApnrn#iBJFh zvc8A#JoVVPM?upItO^C{;G$dHnc-n2$b4SOg3L_sb>FHga>R=Q;X6#hC3(ai-%qYc zhaxg`m|p6DeH_%6M{`r4(wb<uBq?;28Y(2k<xVRbYc0EBYD;mt*`X4GaurN2n0wyv zWmrktr0aTsoKFlk6V!CXFMq|NOe&LkEvlcnLdC&btQ1J5Am*@ds(a16+aY53Iy^?m z^&En+6KialRk&&0Sw$^`DtNG**;iHJB8#k>8<dT8Gh@2*+j3W6PLX~@-feg#!X@=b zq|aOESmi0Ju^->(tnTb++hH*Ok~USsjlNy>C^tUhqk&_KrF`;w_kYMUgB*FWmEr1= zRY-4?wEM=po_%GTjN`JRTMgY5n_DGD<kyf$g03ZlH9$IR;(7&mh}#QrwieyH(ZwAJ zd>dog=gY(lj6SKO7D;*My-SP~RU6P>1f^J+@I<*P$X}PtX7Vi5aK0fj$2Q<XZXX>F zb&UF{Qbi5MmULPI+<ziDqcZh2rM2E%WHFg4-^y%0ouvzIhlMO*0j2<^W+pDBJ{!8~ zR}(T6x6wdnDa77n(^5(o!8w)Si5FOVqv<Gygb14E6W<q|zQJA>?*k<cpuK##Dfi4J zwM2S5q0p#Bg&=?(PZHBa3;7@)J>{g`9QfMc>-n26;QG$FVK*?vD&RZoDpNl$(nsFJ zZeGvo0>5u%-QM#2dv*U0*bC+k3T19&b98cLVQmU!Ze(v_Y6><oIhV1j2on-9H8nE| zFHB`_XLM*XATl^OGncWI2^0h~I5jwzv5WyIe~nfNI8<%>w^TGzDtRs8AWMwd?E6kM zmQW#;F>{7toEfv25h^9Ls4QtBudNbEDp^XBQeI>&6$x1)TiK$`cSzg&|6kYlUFW*y zoZo%_?)!dz&vW0;HOdMuZkiS(nlETegIJna6vhy+a&&jc;s6Xr3x&bp5X#E#6c!cy ze_=-`?*JK03Jo&+jbX(A2`t!VO<=)9M;Zh;u&Dr63&83cV)YC$7yyUC82lj87>0l~ zA%sE#98rJ+4FZ`6Wh)vzltJ<HXTf!Td;)63%>dTGKo7YX4p;<%3<{9|0geQgKNtj8 zBoe5A8;wW-S)qTVP&4*tvFL_qG>5}Me-VP1C>q1hbTbm*P+0zeE64;HAs`7@kPJ8x zg1{wdD1<WL?oVNUcev5WEDnJI0<eKfA%YMS4q-zikO9Ee0XKU*;7kXh?_~UU0uor- z8~}^L{!F(Ny^x3kEd~>aL|PD?0EJQ@KY&c3f`GFv9>wCakN^Q9Ef5J*CJl}!e}oVy zRDv%|SX?>*u(j9*5MYH%`j|uph0bE4m=x-QM)X1&c$;k?k`*l|2!vQn#KQWlDGZPZ z?|UeE>2L!f8V3sdfyfkyL|%|VV$;#vAxbbCw6|X3z$U~mn;*ymbTAl<zLpjM1_L0M z=#O3~;2uf`7oFGzGpr#Zj83Bie`Ht&7(pR}@Cy;fB!qwfi@^pX!hU!Bi4a&UK%x*? zfG_Arfe^p4!)B2D9mD6(pm2d*7`Xkg0A}I&`L!GFFcJ--hW?^29x>X%!ok*Yo5qsl zpH53l8W#xD!~&W)Ep0#trw!;D=l~IaX8EcAhxSFQ3xTq<Hq5Vl_7Ir{e;9n10Po!o z86iu3p|&(Mn}I(oIMLv41_8BS&F_uT!4Tme?EgFhiy{AC=PzXWug(AO71^?>)J4DA zcf$Yi6M`tz&?N@k&1@Dt8ICk~KA?Y7cY@!?*%2gB*g^mH+Or7ogjhg+)SnwkVcJr- zAjyToBKj|O%#UM$vr{P$f9OJEQWowTKog6>{L2TA95E2SQ<(5!ExJH>qW-LC0}*MY zh0(+5=mG==gAj_q!2N~O(E-A+@Qji`?qX{LXcR<a!65*wE&?Fa7>I=<)x!d4y9LvC zqy?bue<3{p?f4Vv>j3EOKam0KBm6{IxM9)YPpE?f&}15$@tYq`f9&@QVle<3`VDFW z=-<d#xDxX>s0*N3i|`NSL^gu~UkZ!O32(~}ym$kFAQvPeUbfMQMo|GbqRM9rEo3;F z{S7#6(MJ=<ri6F)*+_-F-FC>zcy3ZF`}hls%BKUz=epMo<1Wva1bRqd0{3)<pF3_S z@v^9VIoY=t8Q!$cf8^6J6VJvCY`u5S%SQ_$`ALkIy4G-}%v(4Ag$(}C|Lpvbov})3 z!N;rq<3g&%BdApZ4RObXB=z;RRtZGiwK#vb!1B69>(dJRP0R`NhS5Y>+o8F0)pa<X zH;>x$ko=UMb29JViPE=DoquP_8?4fm-s;l?v?}*i*+_mqf30?Csyr%E&6ip4a{8jS zG}(QkWcVW6SurY-Q962~Z%gBqd|Ypf*_6BMh+dSs->&$6)S7m@rEtORHw;{{@M#yd za$`?To7krPmVO0KW-gj3c{0s2?87|neNdHaXnVfBNo})M1U7QLPT;8PGopMfB|G86 z)L2&G^4JqSe-ocxgn!DUo2NP0-7M~{T{8)f-^BEUQe|yV#^={+E!;QDeLZ;?^0@pd zkB?bduQJhI>V+ehJc_(q=Z+Y!J;s%^ZP+-XLOPSyb|~1Ip{UMt=9rw=YkcgQt2p+d z$d>n<s&30OyltCGCp*<Y(<WO*?ef+itxQSdXvcSae|Q#gWr|U^x3e^QPkyU%=~dCP zeXq_;3EpH?)*c^R37wqTwjXIyS-nGH>K<xUyY%%khj&wA6|v)j3i!3fpVHnGrg~hH ziD{JVSQ#9X?7uJAE8yb#bnly1>;eJj=B(b6L;m8Ayt~)ZFzA}ODI>C|x_6<XuQ^Y3 zVC-z$f464SLM4k$Td^+utV@i^BT?j(s9=$U&xx^FZm$gn*BE-usHT?Xw61O@c8RZi zTj4k{aO>+-&JM=(tA4g{n>0S%U{@qNLMC5rrOHW0$wB<7$f=?bqpv*|N+Spwkq{@+ z-3`H))jYNt{ddQfFDlP%ifpC6#SGb!eAlNVe|cFQ*NnKqkIqhia>!omga8nnz>zyi z8k%-}ip9no3g%*+&!XoZ(W~ENM0(3V?zgBub71_ebV6N4+8we=mmyx~!u9Hb(NZVA zw%&omcFv8!`aoR3ofq{@j=grhvQ44ghLIXt{&}0n-p*GI8n%ZxpOZJya;qQbr26tH zf4GXBQt_J~s#X&|SPIq3UbjSAkKd2ylQ40^cZ*1W4t;+O{HTJg71#PJ;k2CACp|~? zx5x7b%2RgCigu|uc@$^)bA7!;^7xa<ZihP<ZQ9(Do;`I@@hAy7F$@qfQQX-T7<Y17 zv)GL!cr=}>8NOWb)vD>3@mwUdaqk76fBFi+I;ze#>GJ3#9GHI8r^}RMs~%n>dbDJC zk9OB~JJlFPULx}FMZZ+i*T;Pvx{aEoggEwb>|U~=X-kLN`m&X!8|HH>UVQa&<5^fo z=M-BWQ;*}6PbQ6-YG05FuRa)hN1?C8p_3B>`3UTqf0B~0Gtepgfe?cix>5Vme~P+v zv70h2tv#Y2o+&6SCv%?5-;38zXgR5PaK<a&@5UzA)Qyvl;81cP_l2q{|KFb~(`s>M zuLFCX?RnRZ$Y`Iizp(mgP|V(bd2d2{U%hC9pU<GvrSZG_GCM?^zdmm{NH^@=Y@JfV z-C=sFI+bP8d+4f1?n;{#d|Vafe_GnhOD?>;5D0y+0*Ehj?UmO+=o4R>J$b9_IrH8x zx9nkbWy9K}`8CO@Ln8Sors9|8oHO#zP7c&bn$RQ6R+|p?)kiwxb}DA-<m(5a>M{e@ zAqbOkSJNks9GF^W*!-lX2W_Zplblm0>*n`VjJ5S{rMB4Z;meE+_kLN8f9tjUSFU6t z%%IcB{gnbrd$*tXdaDP;w5UwKi){61OO$)(5WPBX*Eow$Hq66`Y<YmR%d|o*Z{}sM zcgF3~rst2AQ$<E2ls8zn1LE!H?ZU#_MkQ!-lEv9w%#P7Oqpkm>lRyPmJ@@QSZ4Km0 zQ?qgM+3BzK-47f3><V|Je=hr+D^SmFU`cm>4p#X`R=7QO6+XhBm1cc8Ec(t%wazvr zwV4JzQ|~L`j6!memQpt%$)=gNr@(lFzGalr79XmYkTkW<C;PgvxyIRQV!NQR<;X|R zbnQ;pu@`R>@6*n&`m_Tf4yXrJ3MMOWofWn}bMyU*ueQhE;)N_Ef8?&6)G~@aT(0#} z#cevkf-=xoAntTFyvvt&^*vF8Y^l`XUsGJQp@6Q@Kxg0PuMkdbjB{xZ*UB*w+x(zp zzjdCB`An{m<xsr6ppDS*dg;H04KgLJ;^uK5`}yZGUld-!=0<{EuY)-zk<MiSXklGV zcP-uSuNxWT8aC(=fA0x?7y8WQz1dB>U77pWEnDvs|LnX&-E&p6oU$I_rdN|OxrB8N zyc3oi0P*R4PE3-kw3?00<!u}xwIZ<T&1-B7ilrK4l0p<JiL-mWz1C4;TI*1WKGMm9 z$irgu3IFVlF%Q$JmhESAhGclYMah?6rpEF+E8U8&9hE?wf5{+O?eG*#4>lFUjJ?@P zc^6m#o?aoEaG-UqO4!Y58A@}bhFih*^Iv9f*n%MlUip4VAX&RCy>tk3?~pNLSpzy@ zv{TzHC1Lr2m^sFlG2fle&69g~%2&tMKo%mVyY8mr=TJf`yEi(@xp)qriZh#+>RaY1 z_0ZmZY?OEUe~9=;AQPplnC^@pD0B_qH*hJRt161F=-ro<h{`!ygnO26WH2k*mm(17 z7LX{Y^;9I|a^fkWRogkrDO-$@uYFPIDvcd$UrU|`jILgyM<xk&#;|kmJdj{6E1DMf z&X5^!I5Ft#(!EvJztc)&RId4fQj}+dIo}ooMTi?He_SV{HzVpI9KQ}>YGIxpdAyva z9lEaVd6)i}bEtmR+1Ps~<kxnQ4{xRQofQaOxsh<UNA81iR`wSi)%f5B-Uc*93E#|B z4e_0>Ae<6E^1`8$TB=d@X;#gWp-o=ZbEC#=INIO!c@E#x@?_n20cw*iMy2S4`sd~4 zR*6<Ke`Ms*6O$U(Hc574%)&;s(+H+#W)OH00XsZjx$T(9xr`2W`oYJ8Nul^&#K(D6 zdRxtoWtV(Kj^0j+uQYnF$3EP|zL$=M|MZ_LRNnZ=KYqi8^Xk%SV|ggqJjMgxGiKSl zp`0(=RgFofJX=Q)BTl^=COpG9@kV5sV<te|e?x^8P?E|n{_8VJALYIUDrAYa3G#gy zc0vtz52`2LX9DHy!q<$VCm(dqtQT%K=j7(lZSg)YJSx`R_u-tcrtqXHoknigs8S!J zGsinrUXJz8+XQU19Lb-Lx++a=ZshNOcv~{HL%b|WS$WrOT87ffsjRP$XPag})W1r2 ze;3w)v#ZqTc*cG3R3zx{=>jof34`sX#wjlB6w%ZR_pSX)_{Y`?y59eGl5ZqFby!Nd zO7??i))7QbZX@eX<6N9^+WnhV6SY=-B8|nZ5A}zxAcWSXo*?F1TID=;u^I8l$#?J@ z0nwvRuQ$iaT^LACm+sTa@l4Cl+kTeue>!l*ZivrD3CRd{k`%Y^5g6`t&Z?K=Px(?+ zRJV;fXgn}6^8RjJ@k5a(PNR*+v{2N22|)AnlfHz}o8BvY)Uz`RT=Kl{Ox~)WFTbUC z4&RVz%M!vX?}#p8U#h=OYGgjxcQX09cwO?qsl&8unkv|x0;%)<1+QMQX*XCHe}W4- z&c-^ThP75I-l9gPC3RC<1mAK*;be>8)t2OfWM2Qk2I8B$@pE_c<3<KH9k#t?$R!k3 zNY`4(%b)TC=gjV_B=w*ENb+6DI5E?=d>Gn-M7a949_>nDHH)UV;%x%H;S`Wkc}H`B zZJ4Ctc+<hy>_d$nsdWJwW$Fe%E#do6b2-cHXG@X}D^}IUR!=2kRGW&u6z0A40-59A zju)*)b{=`#uKpi67lxDJ*b|rZZwM3>F(5KGIW-C|Ol59obZ9alF*q_gIG3@N2^0h| zIXF0%5CsD$e~k78P#oCS1q$QtB)Bvh+}+(Bf?ETP1b6ok++Bl1a0mo<2<~nHg1b9} z*E4hPB=`IOs`rYjrq@1O*0yt+icCeFQPj-d1SDl|=fcR!#KH#<SJcqp1+cKNGqJF+ zAyH9jSh?7M{v$@B(gZm<TiM(3{h=W41OmE%WfDLaf3TjSy&XW#)ds-I4q)ZtW98;! zVF9qQu<-s@(cXy<AOUo<G6N_w0p#rMK+Z^1;`R=nPF5C{F5oc#{R*Hlr3J9^@^Ul$ zZ4MB%1vy!n0_^~bKo?7pEjXen&<3DxZ)yc{@%$ebGy;|`E)IOm%<k^)Oh8*_CVM9f zAzB82f4h~7B|r`2403V<nF0Pv7@!2S1^ts56A~3b!_vz6AGx}{xr;l{2?PKOY^+Q{ zcFtf6S35J16960>pf0NbP<8;>{iCe#j{*bWKeYj{GO_;a?myOlIkK|*+ZbqSYH#ZR zwDYvGvjCV|*?<7bQVL8i9xe<3pq<%Yia;A@e|xY!&<$v112h3E{LLH)kP=k|0Kp0V zCp~9VCo2aRXC`MWo4-<I{>u%x%93_w;`X+-AUhXlq`&w{SUG`A!DaVk{-?9ncJ}Ue z-v0sSR(59Qe<fk&>cITo&dSjhBrEYB6|e~Dx6A_M0^np}Vc}tC1%Mm@AP-YZ=D*x) ze|S28{yzL$49>vU+ri!eU=B_K<ZERP0{=tub_TkE04`3hAYbo45B?V+v9bcptV~@1 zCLjwdJEY&<!D5j4KN#G6Co2zt9t(K(SOF}5{r&sR06bo1_I5U&zt#WlFSD+OvXrz6 z{XZH1dnP7k?*Z^;<N`3Vv9kj>IoJSPf4n>Z-~V;;Z~FgD{couX(CR<bSbqDHwKKN| z@cxqlxOD%`!tFmpLGz!5p#}VJ1SNa$B!d7nzXxBRg_Fe;{K5MFdHnx2`TsZde|h<T z8~p!ENXpg5=I>*gzt8`Fj)AsTHlF`c01vXO3wS9M?ZK;I_kUHjK>sYVBFN0jf7SN? zp31ra!OJ0PXJPYi8Lgb9tUN$wDpoG0mVb}Sf13dIZewK!Qn7co`s=0vFtW0+{GT)M zwwYRkZxd&5tNuO$ftTrjBTCwt+ME5gb!?nm0HBi-&=ZLTJX~y?oB(fD@OqkoJpP_* z05g-Fy$jd`0M5=AU~cb(^jAZ<e>efmqJN40L0kZ4vEPUrz%2e7@c@`5ej{E0v*f>s zn+3ou^&7DQn5BOsHUP8CZ^RB@mi>)50L*f~5txhoZv^I|@Ed`-DE>xZE=s=<n2Yki zhzHC?<u?LzQT>g;T-1IeFc<aT2+T#}Hv)5c{~Lk1X#PfEE?U14n2Yvre+1^D^Dp8B zYXbj8>|jlxtpj*>{<;(YD+TW;Gte14a8}ONzsn0I19bWA2W)BbFJff_6E|@Jnu2UV z<}QDTIsYU6XXXAiX8lKO4RZM(eO~r|<^RV3oP+7Vh!Y&!)ZPX>p#L)F_)B7I`#ZD0 zCYSklO6=frnc3Ue0G<BOe*m)p{dNl00R2x;uD{M5UBUbRuNN>s@Z{P6ZU68BE|&Rk zFJKLGE4M$~{&j5c`e#_MipB3B;B$+=9&FH`D&TZ1e<uenqNS&UCCKg%4Y17W4+tjz z;SUIIvh^PjT(93raDfYB^Vb6ZJ_lF#kBnHs3co{ff_>S67yow=f54&bTy0JMx^ON2 zpagzanC*X)2K%)C!-|y^oT$U^V{i-y@XK%aKmF%m{g3p2yUz}$0G?6s3;%~I*WWTL z`#;7OTv!Ji*FO>i|2SfH{GIq;$Q9)L_to~VZ;ro&_AVeZlRx^*`yb)|@?d2JEC10Z zR&XVLN8<z=IfHDifBw&8g1I}}0G%!WFauNn?G*g}FuPbff&Lg7aBW=N?f)<U`*8ie z3*e}K|3-2)wRifnz~C;s{Q<#r-2d1_uv3peAULY$9}wIeuiu=(p1eR#|1kKUyWP~) z3EUl*zaL-l#s6RY_s=U3$OB}Gv@~yT%K!00-N&~38c{-bf5x40!5OL@tu$Ij?<J>p z*GDw?WZLSipmnEP(d3~XjMXhknj4X2(iiWe=6d+hmPFOoC!c4dc(tjWR;0yAobMBb zN1|W*i4lnyHAHrOUL1Wi1FfN(Av@)$avfcH&{XoV@7?>PJ-+srt&Dz}-%;JI=8{K# zE}LeIejlYDe^@e0m1mMYher<Q!bprjhjs3OK6`UJgY|jhl~gXC9?ADOn!U(dcY`hF zVa{u<LW9k@3!f5S7mpbF25WSR+FNWtMGkktyR<lJU2q|Xg_a3o(XKoHT+Gbymbr+G zjZu1m-tV&5WD0`&D?sU<+9vpy8H6*`P1+`vJ!j)Nf4frC)7T`8O06mH>3fDGouk?y zmbb79b)C0+wZrtvqTOZ!%_`XzjwgpfWLEk)mg^pc{9^Ra4cg7rtDkB8?d#I9ke(_# zfU+0HkVVC!XG|m5-68fy{ebD9a<lAogQepyBF?GM4rIM63#t5_51sVS8>ax%QpHSv z+V=oDf7_y*?&<h^4tjih%6ur&_w~V&rb&`?mCr`d(n#?)Z-?Q{m?~P|7tHWZ+}|!2 zQKT8{@{pmXs{1knQ%hP4amo+K2X9HIId~*B1yF_3mH4v=zRkertnS>l>+y~dCXyAA z7g`%d&U~VTP@9@D!JSK+vgp4;KpAq4@hF|qe^j(Qo>ib^SAj}fIe9a^<k^bGnN{(I zq0^pxlKWlQUJD)EiDcnN0hn4{$k&;J64Ta;vN02$XeUZzsjh8=A0^DS*^f@Q*C%Zu zYxg|{0f~HKH&@U*vig*Mse-fd`SphZ6Jf!P`7voYOCxXY2eSq{$+izu>bh%HyXw{H ze_)Ih#yz*Shb`#Z$tcA5rOe)VKJucvNinr}^iXT92H;NYO`C?x>rEeYR6c&Vu0#r6 zy+Ey7*T`bD{Lqv(3)7W=z&BraIBH_rKa=l4_~18bL1K*u!{VP|SfHC?FkV_u9mURW z5p}`7d+2V<b_dfH;~*B5B|91bix$r3e;4amA%(Va5ESkzux5w{aV{$<I6*fhH_23~ z>;7rl^c03Y5Obb~@K~pIo{1IXgS@D7G=Fo^d0%VHo$<Ju;jAaAxGD#NXKPr@k3qB@ zly3vn-uSMu=c*P`NR#+QZZ>r)d1p;uYVt?ByO4%Kdwqh^o;L1C9tLiOEtnB-e+AT! zotXB#=8el%s%;MSJ^eqXJmGCsXPvANa6ZJ1NI|dYk9EC=#}b2ZEkopUKG-7;txW$o z;K_Zooe$p@o2~Y4N247+yftJJYSP;@&?$@g+~hdI%iML;^QP&?cX&KTBl#E0WxpJN zGtO;%K}FL{r4W!N)hjtA(%g%Tf8wP$#BEL2wQU_jcb8nV_r2uM=STO-`xnM*NFoT4 zR)4rHzyTD_w<RmU_7hN+J`Gvz5M#8nRwd=NxPxE2O&q`lYCj^*?4m#Y5Dr=x)@$hE zzQDa@H2jbNng3Jo?9DPh5`jf{Obu@&MmT#V%3^QGcU*}t-2@2_Vd03Te^e;7O^fL( zp4D>Vf?vE~50g%CF{kxh0B-5&NyA@+f;4yg*-LHHU#oa=yMxZN1+^TC!|1nc=3~3< z7D7qcEpkgKxWDras|MnAi!`YCO*0<5ip<nXoN4M4I;($4;Q!^pj}$CdRWX5D_0AzS z74j0P#Z!3nSFEA<&<)n*e}gRQH_A8}X`Nh`8Dj#}j|k`o`YX5!Ss$og%qz0Sp*;o; zj@98Z;g_SFj@MQ@O5d>j;up-Z;jh{54ailTk`=NCh#xeNBO%&;|M4}p^}0+p*^qDe zt+G$2E0f{RDJ9H3*DHc7cN62|Dc%-Np}NBR9|&f0av>-+edjDEf7e&qamD9D#16Ng zVf4mbuGTiNNnnRu_el+@7K<;9iQnBIv1s_`p}@#`Ba()2eGtsUe}o!!k61(;YA@<s z4o7Gm>F550e?OS^(g8QIa*W;ou*~QESp4P-`pxH-P+=RH`nGi1%hWxdSmi47!hBn8 zJBEm_Bxxh-si-O$e^BjKR=*a94791yl262*JiH0gIEe=;%!wpB!hTeBND#Vg?0L=e z+KqVTiG`5#_W?4uT<8(EIikW~eht4xXUKI}pv)KXpnmZoIqNIskn!WdI*pR!E)@&f z$PmcSoa`xoBVIeCvO5Wx71-_T>b2kFlYM8=iwWt(h?9ZIe@BqJ@45|nm4|=5q1P+1 zug?z<(7stUb|;u&i6sdilC?CLfvQn5@Z6#V_^_>PHa@>PyxpY66C+0Ia3J@OC|aeM zla@0*gg}(az9rGgv5)pe=oC#W9>;!~*(`w{p*@Oyv5*|R$1+tjOSOP#*}Ho9%wQyi zky&8xgYCMle^>GI&F!qJETidLO6Tg74H&hv=%+6ji6di72X04~%?1M58Mm?%{_0=Q zH5t<w#Um^=20WzDkdld9D35{)3$Z8mPm_7nP8D+q7T{Uf*mpAnf7nFV7#3JpDLnF( zSE3^;kkTyAk}LGiqP&s>2}a!Is5^al!brYAe({Fpf3tn{{tUUaj%%-?v-u$lJt!Pt z75nzBA?JsHFBOxm3F#Cs(hVw&Yb(Kq9D0f=`X^0+<CrCoH<e-Wd!8m-L4`eW16z|t z9<Y{kX~>g+54_*JEC!j<2YW7=TYhp#;gW7=6h`D17OkwKC5duBy@gTtjibR^*z@UW za&O0^fA)A!3=sM1X4_B?8E69EoY0sCNvp`MfFK@>1gd`7>aPi7C7uzT_&Vd0<k&Pz z43mZT!pBK^(cdlw+2DK`eUB|~c)ssHc>N=Nlu$Z^Y(y+Q0?olN5gQU);5qHPnnbQo zJ`uG;-4oQ>$Dvd~2fTAL^!;|hwFnsYfe#Wpf3I!_gDI6)tE@=hkAU}ZYQlDd5+#?C zgaJGRh(W9q-LGBqY)Iu1a(iN=E(U(h*4QIbtFB+$A^Y+^VOz?{xI+5n_YK07wwxpu zCq-{h=d0%CoNU6^yhEJuU(TA8&Sixyr-o-CYiB$MIUjrT$uMdK2JErc-n2a9f__Lh zf3|E!LeIjM=`Q*7gwjg#@=|h@o)nclDhUHV>UPQN9u^e3-GXLUSFT2cT?Y4^RyzH2 z*#d4A8sBV4ES_Z;J3=<Pg_UXblg&b_=Qu##Rl<F4;s8jYUI(lnGL4ONhvk-`e!XX% zTVgM(?Dk50t}C@l-+U=XGXJ@m;?m>;f7N-cTSwzVcexv=oj^$`DGB*?jnIQ<+e)Pb zfv<h@5pfHd*|ORIooNyQz1gCo`7?vlml2(WwW|o*jz{bq%2j~lM01}tgKAy8We*_< z+!g1?_>ycgF$2Te#Owh}!P~=od>Oc2DM8esuJ#1)kMb`ou_nWmRlpRKZ|jR?f4m(C zdOp|!fp7F%{Oq+1w$ny(eFYu(Rb-U8k>HUrH5-BkA=<Uu_GBp4i-almtX|gCuPv*; zw;)$IK`qv+rDOfX))Iernq`3|rqWh30t&N2d8-E}ITEoq>1yTa)-K}V(Cv{r9sw0L zV^{<iiq4=v%<}r<VVmk)>4WgafBJ$bs#<W=fr!6PseG5p0|tjEa~Q^DKrN%z=6H5; z_DRO{DVAaC+8f<%Sw`N1`Tpo!m1;k1{3NT7i3zgjI$J-TNXyZb6>B-iFq~e?$wJMb zKU<7#P6l`|_<m%#TfsTW&ybR_lWZqx%+My0Ab*%aGsq2re6gXVM#b7#e{gGO(h>3v z#LBHTdH*Dfr|z9T#KyfWcme%o`WPNXN-Wd*<BxYp#d`sOP-rGU^1ea;>us0MC(3wU zjO=Pp=n=b1jk;rcsj2aa)YDr-mJ+}2d}>5h*QLc}0DSuIBASeW(Nn=&Y|Xdcg7&#W zu&ywZ)G;hC&Fig6{Gd-&e=Mv9n&SxlY^J66g;_CQjWcpTC5rdSu?Au>f1XmP*7}8- zrekV7R99FSK8XNJjCj-QYg)py45=XQQ(D_^5lq#lQ%=gu6cvBjAe?!HmjT%d3a^`_ z4+xq=>s6T!ygifUVDP2L^@NaI3{Af^pwbu>8hr^qU&iuf=vGH8e<bs#^Y3Q5Dnvm{ zOmj<f*_q`2bazFJtB0@LSkOaSs|IsluJbJv`_mBI@lA?)milZN=Uk2ry%5@1OdCXP zlMOmo_0Ib$otCpN?<z|ljPf0*VBpULYn}}Z`K;Lh{dgvwu<X-yZmv-Jzk*|9Q?1D| zK2`16Wk24qjYbBGf2an=(?Q^3yG{Ada(c1bZY*Y8GJn4*t^Qi^8Nc2LJ^aeA^I%fi z{2T&T`nW7Uks~RHp{O$QP_UTu>7FWYx!GV_GFv9X+-_(kz$5az8d3e_<7WkC(s#`O zZUm;R#;pqw?A=6r$;Y_r&`?6)w6yO|2;P1Vx>H>qlHVOIe@eN50A(`lc{Q7BLm{ES zi<`jZf|3fhPrm5jvowKq;V3c_yoyfc_o*2YW&YCEb}_XqBHGF?_7w-3hc&(D>c4gc z`hwE<f&Ho^tWmCBEMf9}RK#jSZjg2s{PEsZZa3ED{e-8J+kT7Tb|Z!%@ZnuNB0pNo zbZ#5xnrIdYf2usrmy&5*21u#3buJlOE4k^)2`^dBJQ8U~B~M+%JKgy$faI*4eFl2w zUu~EWH}-X-cMC^lO=2u?;^v&)H#DND%fA%sjyAo}N`%N%;(u}}1EG8y<;rhD_3Poh zTlglNMX*?vTR$-X`?T5J1HWz^woM#D<ite#E!n32e>N|9(8H(>mqa*BwNh(}oh<}D zgT|(G>j;%NVt2|XP<g?GQ7UC`%77__s7ftcMdEFez-;Z7#FO%d1Z-2LfkaPLj{+>I zAPn<P`e1$++D*6oDaOD}Wlf>+{Kk+}u!XA8uq@Kgx3G3kjw;oyEsf<yG-(!#(uDHV zwtX!we@$LJ2hWv8kY)DB3&tEJUL1vt(cB2E)@Nqu&dG7^rTQMIx}OtxpzBc&JoVEv z)V@Ix=C4m5pHJ98jEc;X1gvC+T&?c*G}KeVlvbaQQA7?A_5j~Cdd~*MS$)O!lehUW zwWBF^dU2ZQ^}gPpS(_C_J#X7lu<4g2HMi?ke>sfwwPxu)f~e7KH+!Gr^TW?gzaGPo zOqX3Kme4vVC~0befx)NQg=F7pyz_g@9}T^c+m9?ChYC%XrfZI3lZDVfLVUZ9x919L zr(O3}6-%nn)}#0#-Y3icA@~>QDj|$nDFFI&%X@81`obf8h<W4C{dn>SSPT_C{ih9x zf8dsFQSBBWfsa)oOiB`pj9n$Ebu$A&Bl3(ea=cu$kte$$W)H0C*uAe04$uV`tsU_> z8b<*7CqJuOf=J#EZ%oPQit@n`bX1g#H~HPn8Is4`^ulO_#tpOd+&vn^v#@DHVa)lT z{R-F;@})pKQ4x)@nOB^&>Q$K9OQdc}e-ZVd;H<=uK}50Xs!m(ap71^+)_D$>=l+Y6 z+`CzuR2KJ?S0r|MM<k7(533W=Se2u_`W28fZC+<F2{uG!p$1eYMKBI87TK$$+|mey zwCyfGYxFiW!>5$;Iu?KV4JaEHho<dC&7u-Rxfw^4Kf4)Eh1#Mc^@nNaS~iuwf20aI z;na5W1@nRkS=FzV#E&;9O?MaXsZhevN8j8~lJ*ocXyhrvu|-UXE3Z9k=7By7Cf^UJ zLve4q76c|6#ePKd_Q*m_UZy<eqtLyy>R=rXEwjl&_C)RdX6U2(l#^GZFcD_jNsT`# zW0yd?ihwv#I{Yx`V+q3R#alz|fAYOR%apxuQJlC&$R9}7nmeaMr)SiyI9g{g`%&g; zo>yw?Hk)bSg7}LchM3TJ88gtnei7dwDMCx80;}d^LkD`z7x$ftl5vZ=tC%?sB}4Yv zT=I;<?d<kdqu`@Ey6smMTS83)jM*K;6q~?w<S-3oI~V){t_4MM?UCRuf1=w!$F?1b z7;~0kTW4Nj;=Y^=qm0;HTRR!!EzuCs1x(xNj23*P`PIrqV8U5`3dDZY=?8PW(f5lh z=~2DnIhoDC0+&YSsMWo`-FApex0Tg}^<@=DB1uXm6+@$?kRY>%eYe`C+Y)kgjn5F` zdVpV@KBetw#qQIAtUlaWf7hvER5P#N_RWJx3vjh6qsh&>Hn|W~;bnpCchlLQ(E25r zHU&D=v#qiox>K>|(rK~h=o@m7N2w<JVRVf75o1#$syN9)<?R*JTT_+hND^)>RV=q9 z&X>Qb#i!#jc6_XACQ!dT*p2+S*D8z{cv-wNSE$bO1Vb7@R+h>ze>{PM{IT3^LJ60s zP7k^bU_3-F1`pg#=;53v?V*UlH*;@+KhUDmu?g?+!@=cat`8Eb(k<l&%}RB9D^cWn zPoMY>3v+wkTOeVlS>mfVhUBAc7`x~elcUh#<Ls-7Q_DNUx!MfR$~9*AU~nx!S^c1N z3X`0d(zdV|?^vgHe;Xc@F_JAWru{mwrl5wmNf%Q~*a)lIV=<&%4dI%h$uOBfUPfgU z_k}o4Vf<quIfvV7b5YOI7q@`kR^5RcGFYUYxzW?7bsdp=g^2Js-u|O*>n-v0f$)*z zN_09ni6iumRtEP7r_6>5v|A(*^%2AggtngRtOSBrVWIMee+}3%sOi;y-c}7R-qUu= z!tXwXvelUpFf?qpXO3e|I)$CO#IJuHx=XrcY?E3IsVv5dD1-}>vcX4IK=cfUHvhgW zC9Jp~V3Z%UMhEQ1Oo<{PY+i)w>n7lwYuTP@Pwt5#Ypn<`Fe^c2LyO!R&qT9&EOlol zpWt^i*SaK+e@Qh&sM=zo#I&&gcvcP6y2^7qv}Jl8%NJYeVm1}Y@#gC^BM%ULY{YY$ zxHnMo6^B2kqlUNk80Npuvku@|{WOi{F%%3%)iQ@_sLeK|5M^PImvB#b6*8)6TisX* zS*&R3aku?hh5C$U()%;v?q!h0Q~spkd;#v@3u0g4e{8~t&q-|y&9RyF;0{6OF>~Jd zYD=_Cz-$t<<AmHh_X@Go0+*_G!jgd0K>r*I<uzmF+T5ab)7k6hM3gH1EP1*s=Cm=) zr+SR4CWQ1hi?}*o-CF?`w{5Zb#%mHSdBIfwZPj=KATNf%M3<%jW2GX<#L(wQK!GD+ zK^J+Sf8oUF0<{fxuFpZN^Pz>+>y)bCH_|RF%!3=J8JHb_tsVq1{xlz?lLF05(^bev zpmtAIMz5?*Lpdnoe&!{>{d+sk6tu8zm6C0c_<R3P^^c3F&++rI$^13}U8XSnhJqz! zcWulN!;*m%M;jrIl<E$1gouP1UGV3)02F2>e@A&y$uVS-U9OZ^^oz>kk;7i&F;xj% z(TTE2;&=0Q#auA(%B3&T(_56A2ohrn*Q9!?t$RGq0!k8GX%>9dO39_Zu{^P3?XHQw z1waIZZJj3VBhz1Gc_}EQmoB^yotVq6?NsC{y)CXtVGgi7V%vCfHP}(_Z(?@JZ8Hkl zf3q&_MAPS}4;bvV7dZgeHS`Oj1wkug2NTn69P1ms%ZYZG4dn(ud$${3)Y|h_+u?M6 zdA0U<$kg&`dQYkm@urYZ@zt%6qFJT_nGCIwH)sIHhZW#et<o&(*m%Fv^4R7c=V7Pt zUGjC#*p?w9t3T{#<{{447xJU0Z0x;-e<Pg*jT2=d1uaoTO*Qna6mRhqSSBs^{qN(h zu$+1Fc4BKzj9sS^t@%A_FBl-Kn)nc28o~05{i69t4h;x(uE2f9Gnw2@BK|09OG0R= zx{~o_oF$Ai*bk=Ob}#)hyYCk;9PM~FXTE0YVleKM!nv#P%a<3nmpx9&P9|$zf7635 zf?T##yR(7r5$LtdMyUiQNwvD)lTrEkjVPcQx}&P~ThB^A^j4}6nY~At3-_yQ%`J8L za57U$A*|?}(?`@4QW&LOfGLt<<)~{?_lpWevye2iP*8s&AY$!uiz_in#P_c5yK(V= z$5dpj@B=9e>yp`WK%%@^LI3jMe++pi_a~yyt_2tj{J(~+uEpJr@)43-BTkYl!Y{_~ z8-gRd$=(xA+bg+brk`PpO7fe9?|U*bX+S`t9v#eoN^IWm|K+N$5IGY>-cyvu&6Z~j zZ}~+4xfQlg{)+flGKdxVE9$qU^#eedS+#}(%iJ^za^WLiFdovQ?@K_cf404O<(p5A zCI&q7l=8cqGG%Ztqlj4&-nhL8=(+E7raZGkJ$ns)`UAu)B16v=<Oc`0WBD&eIx<Bs zjbopATX#J@SrR-UzHstiBkvo9?zX_=O;=amJbdBk*dow`OA}SG7F*j|$sF(x4k<U} zR$X`^F~Ija0<87qJw}QQe{S7IsK8ILalYMkhD>TOr66z;2K+RMQ%hb)NYbu5@q|ro zhqvliM0hne{&4pg7ONTlwCZ(&m|WImBq>+)JPN?S8}ZfPA7PIhlnB3h<xh?E{qW;G zOYAYHb>w{pvKIRr2Xxr=N`d(hQ!7p7e&T|sk8Nf(aCiu{Wf7l`e-Q0kKu#Jnwh2bP zS{R?Qk&2QM9X}}>nv;F@p)(JSfLez48$;sgF)vmKSl-`7YIj1#m$g$$S}xWM7?Ydb zHf5bKYp@aROc!wy$#!&$U3RO{JTwi?toC3%jC!M*$@Ei5sAGYm_{F$=XU9q=xEx5L z7)>hrE9SAie>rGQe>5RWxNp|tQfFtd%zOy9^ow>$Z<50~bjfw-*(iGj+3tZ|(lZQd zEoa-M)d)!MCCAxeVL*fv|7p(zZCNUHZNq>K{;VRuHn+@Z`J`q49Fn-VgDB}3i7aue z6a6#mLR>Nz7QMqYguY(fCohqvSnY?>G^|-GhE+Emqs^>if1PYQ@o&kL_ZJQAL2ZZr ziigy!8nu3LulSdxNWqBB@@vNw2{^fin@|GR`bei@Nm2sm&5USguvOQeQ!=xwW>y~G zt--@w-M||e%>-KJ@`qOi0B%5$zuV<=B+J(JMy=P>l`#<Dq`FmT5KQ&3zf-ig9zI2g zyq3k&9^x#C;_lU-_J5iZXKJUWlV&yRd7fEoC}&Gut*gJad{2sknIW3|iPZITsAh21 zw&!+EKsv=qyEfv!XHgsd^8tI=l2Z@-dF+zXiz@6XpsGqY44y9@Z6q;!;Z!Szkz1dd zpkDKC;z}x2&MktP(ZaVqp8X3orPT~xbjwXq`&4N74n5nptbav7glV0->sNJ5vysf@ zpM2`*=$_a5H0++DnXedZ`Vew5%@0Tm8bZU7t*{eLn6A&cFt-j>3Wumj?i#6<FMM3R zFm_k)JS6LB2aST&h#X^Fws)CM&IC#9W^(K?j5($XDu`$g%PMrFOpJB{bS=4EFV_6V zQ3CwfE)gVO0)OIv!Xs&%P$Ll)M_t<LT+xS1eR7u~m)pAYLPDWc`}&S|QD3-hdZAuN z`0N-%kP|n!S1($5c()Z#<uUp`7arTF{wa0d@!%=Us+g%~ZRx|g1X;(l?Xt8?&yzuj zEwB5p!W!?)v=3wIJ<UgQ<V5Q^HVLzM-vBTR@eh*tpMMfp`i+pH4r6jw=%alZ0CcJM zo*9W1AKzouVmi=Mx;l%N_$x(zdVC%_6#UvM8tU}+@F-|G`QmQuGzwb+JIg2iqY#b4 zYaCSE(Zy-@uQs}ga#1|CBy!ccsI#oL&qpmLyOK?(_B0i)xmaZ629MvRj>>nByIw?$ zpire{=zmk+4X3CrDQb$;v&UY;MmU=Pl5dKcg7c|NI)wI?6X1s?>wf;(PqN&XKb&uI zu%q{Q-XGbdQt%)cYGJDQBDe3epbS`y9Otnr&MX2x{a8_`;1|bp%Uw~EFN{K6qsR7Z zT#|>v3ZoR@>>m6|93y!0{8(^WhGlh$V`OTHP=7!SpE@wPzS-SO$^>j<6)*ZOsku6a zRNu}Cr*~ZAnNH=c3+#YA&!mR-5^&I($HQ=xg%%+J49qPE(j{%%+Dx0t;f(Byx|V$z zD;J?@wV$ySWYz7FI+vYNpEH4i0OX<k4B~mOVENF(q8vFALlQS_nUiMENc~Zz`t9zm zt$%iS+0<p9k$U~WMgpl_v42<6onR!-8aeVJSD-D9A|7|uMGf8vL8eQe`Piqn;BK0? zsF-6UepolFH2wE_5QHP=CE*`~4kllV>t<Gy6?8cgW?C!cED1%)8ItLmi))>4#Z|QF z`I}=Px}I1{P=c`NId`M@ikG$<wduxcR)3)7+0|D?>_JBsFK9GLeF9_WqIhG#U(FL3 zeTl}r32<;?HH0fbyTMeCif8OS&7Y>g-RdWL&Q0w1YoqV$1vxBW-kpbgLe^2mH>7=A zvaw?z+OE)Y?@A)TvOiD1hU2S%Uw{mxC^3hE&~}*BAVJUF#d1Kv<P6v{Zk@NjtABZP z+B36fxN1oHZiU!ByF_gSQPleUNgZ;WwprfZGr{wDsOG4h3wF~Z8;vy%rLwa=+lsD^ z;R<uL%l_w{QlxYT!X<U7dT=n%Pd?%4JHO-1vcnItbVd=`;HX9ahlb0Io9ReoV(E7@ z=$y)p+L1b67p|(|S<R1LIhzEU6@RBZ4rGt0=Ly6D9)41%cL<$U#Y@gaYB%4t%sC~H z-@wLlSz(==@>nOckv$mfCzYPVHyJJz$K&qBAfbj;*_LA_z1c`VtKb$1lBB{UKOEhm zyifOcQKm~{ZhCwAwOR1MuT<87;;T&MSf5@`%^V@h$OvUlEX@O?=oeqCQ-ACcu0|Wk zQ)}oju5fPniU<p$iZ~0~)*A}M#7gLKWliOjISGZ`8{Sb)l1EkM_!H&sI_7)MHHhFv z{XE$SW;c9{A!&u#5WgjcvB`6~EaDuMp=8n}Jpe6NrOUU#4A>}jSxSPt@<BI7<VO`2 zi25Z7ytgz&$Fg_$B<=E(_kVUBpCvIn0~Rim`q&DQQ0d4MK62AG8w$>7grY5}gz-Ot zF#3M1OdX7kAJX3`xTZu=B9`^8nZ<A%(r(^8ZjVz0jKq=hC!($9K|4ZH9SKl~-b%i+ z`6Li`&-y~a0$kR0dYsG0-~Bl2XKxIuUB;ZE7a~>7ta<yeIV;&GYk$Jvn}{$R>=A;| zw?9?7Pljz1NR-WhzqFn04aFk6ne~c>4nGvRn{c!E9kLy*PUAGOVZVT$9u}*>BPC(9 zt{y9ThjL)m3oU7MKL#Hsjo=!vbXUnW^|qUAA1-;39V+?tr?xy9Yj@YSJ60g10Ki$D z)}`R%4iftGH+s(;;D0XNSH>u19!>}LZ}&~}ADkjHK9}9SyIjl)&3rFh4}UiQ9pgE8 zSRh4%T^WV0u!igH030%{cdWIvEH<{)gqkW_`ax0ow0|8828H|9Y(9c-uc<b1@XvC7 zv@`LEEJ50E(%CiBh+2YYB8yo7$E_ui|ESf2C=`2^&b{41hkq0)bke}FgqEqP;{w); zG4*rD&6E7{eQ*0usfMP937xKDIk>MmDkc#k9%zs>CEI|*Ss@OT;}=qLyNGoM2)#h+ zha2A)mKRZ&DC_~sSz8jsOL-lp`+&pVlPN)GE(&c0m{?C9soOkqJrM{i_p=iVcwkH5 zXsy>=DdI+xZGXVouneJ=!I6gEz%bWArObB}YSOyTvDB`nlzkPI-}SuZF~2Ny&{S4h zuqrDtrP6kkZ4S3#HT2IkH<7HCMnPm5ZYVF$6(DJ)R6P<t=e6M-6K%9UImOydZyRU8 zN8)Huethh<fK?qateU&&rW@zS66+T~orF?#P@Qd!_kVd${1uU^LXw)@4RqE)u~Wrv zZWRG1l{2&POZp94kVu$N65&l8fiY?P31rIWya;1VWi3WHYyA6+BKXf6`ve5oW%Zc# zi>0=N0<Wjgc@4ltJJg5Hh3{r(oYQB($%EegI33w@)b1u@xrLPm9gw1h<x-nR&j>AB z+w(_a*njzl+EE-CIZGW(1am^ra?{ZD`U&;U9R>`W;p+1j7<hc4fz(rUpNB!>R)#kc z^+#rx0u@QqeV~}-d9Ge}vhZPMs%bAs#|RHz(N|MA4(?}&NZ)lt7F?r;+zx!4AtoE7 z*r)~w`Bq_Ld;A-sUj@thr0YM@a-SiMzA@~&Eq@IR4BoHU(n+FU*Bi)Jez-rYy3CeH z`oa>pbmA{hq*wzhMaXd{ZTPB^#&g46vIqY%rP#WI`qN4p`nBCRAED_M+9QFqN9zZs zzoe2P+d>Ou8^q8D+BgxtHYo1ou5kE@l0gyJmw>IUK8Lbyv)TUUdS5^)74fqdybC{y z#DCs$|E*Wdt;bnmt3OhPF2dKQM_<lx-6%_$6aQZ+Yok)k5^)Ty3Y+aW5#tc@6J%64 zv@4m-i+Ycclt^eU^Tu%87)yg}bD8TWF)qYM?AWgD9_SJ>Q`1=`VNE_cS>lN(DB<W- z>dVn@lShL2Z%_NlR!(-;-U~`KI0^z7(tlAQHUcUuI7!FZsD)!J@4xRNOc%XmnLKMS zoS9L4@JOMz{_-_Sl`DDr*iGVAeI>Odv#|m>nr_m2PFBe13vB7A2#3ey^LggDGyb@E zQa~Ua^majGj6>6!0Ws8-#MeW|ZgG0IZY76gP6=peb@xLwtsluaP)ePf*a7kGB7ahK ziShKT!w-;LOdKj=?2pF1`}u7=dt*tP&SmRg{K;u4;-dAK`y~dor4IW%-fpcknY0Pt z<SVgzJhgP0CD|F;BD<rB;S8L+Kgl7^sSe&b_NXAc%)HxobF3u6O)ZfdF)XK^XcD?U z`4!FIq`hXlOYhbL{f0&1+y=rRs(<9o#Gy5WmYJA#pLM4|b4QW5dSVE>BlK#<#V{uE z_$B>I8O;S<RsB*ivDF>>K`e5`DhfjR7tg7NiEaed#3#Hl4?c+$f|iN?f|NW<YP(E5 zF;Hsm`P-Zr=~ky#%51WbIT=-%v49O3r<@UCn=mbmVt`%d*Q;e5>4-IqEPqooTzh*_ zeB-QZqD;Gnh2_A9F9cmv-4#NToJ+Vkk6Edf9PeJO3m9y0+PZimzkO~-<cd`bU+N_k z^z7;*$ASxxYKk2z{kelqaTmgU^mdxuIcWRhCq_s4mO3(_KVk_$l5kzg4k`}tz)IEn z(vBF}w8$XSM(LfIvEk1YAAf$%!%xk6!ScL)bJ4g+b=dn@$spkut!RYGYoa%dkRv1L z2oH;K_o%*!AP-@wOyiCR%sdiDcEpRQArqlm*G9iMR`$h~uJ`-Ws%%kYWrFq9Ji0!E zcXBuj!Q3r|isrZ+UqJFs|6^QF+z0cCe!Au(?n{$a!hV$af-KQGntu|8@^oL@8W~hd z;t%f9+B_X+De9jl=+GsPKYrm+g%!@Y42wRH%lNj-h`b{`aF3H1;w=7wJI8QbaM1y+ z&1Rrl@K{LILj*0S8lI8=?csrjkUQ1hu}of|C$t^~gu~rCQy9g;xpu5ACGl<YUi&Hk zwzls_I`uGoj-P*OeSat!R*Z+L6QGeay6#Zch<xql?s@}%Ksa$sK&`eH=^}79WArKa z{$~j`PSKAM29{%p<}$P@lySaB*pJ^~BvhTkNe{-mx`%9;71j>38vPP@ksh{FH_Mqa zEXRc>X+0rldsX!vLp0&x{I0Sen-ui}HU<NsCO#%3CIsa@(SIgNPOo1|aBTE9)B*s} z!C_eUN<mQd0v089cZl%_v4We}`(~$NBeVuHSg!JE!=D3f*8KQV<X2A=+*sc3j~yzP z3;BiXbmFci-Q#9%T9fl%`4d0apI)guD|88|(_JYfG@g_R!-$2FOEHB87^);ls~f`1 zP&i8^uN2?UihnVG>_k{x5TemJqF$R6r}E%#MXBsxss7|ZVTQDuLUdT1JCSIjC9x}b zr(8{5DXZ8-1&exWP7la#7SOod9Mh|RJ9ib_EdD<8+OwI>*?m<VrTvzrz?0l!I~HcB z)gB|a!|(Cru$9mn5JUn$l{!EvY`T^&7oC+mak9ueYJW!0q#H45B{UqN>eOlPX2~PK zQU2ImjTaKRp^kO*m^VIy<hG{g$+k?RaS-ErV2-|i9N<T^Bu8K08zh3RYKW^ihDe{5 zE5X*;guBduFB6DK@H{rg#pDp!6bl)b^J9g$Mwd=MmE>IGu5yn*qzV#>5DwrwY0GO$ zBN@2(d4IuB&mqE0D_9NzYkVBozj8Xnnqxgtr`!nL6Z{iHZ}UV6?>b*cz~&5hTulOp z|3~eRpz=4uD6cDCRMV<={cKY99WHkn#H#unQ?$_dul=XnrxIz6_f?&iTtHY9VA9ED zJ6uF8$@v~uF0l>Um6Xq`u=n|V<vvxoqO<V>$$x#>$6RydonKMCY<(3l{8Et(Wy-ld z73S8nZzd<y_bj;Qsh!U)p=U+h4Pt%g)O0s2l=d7v6$XC_JbsVLy*RVQ>U>PdMsuJr zmXeRk`H^jeTuV#$mNuH4m>FGEP;0utd1R@vrm54r(ak6Z&D6uRaWPsAJw9d(dT~p* zNq-3fVu*J!QrpM#3QtgphK*xJ7NiL+a-$9xcZR5wvySTZkOvPDH$9^EGgFpaW){eG zP3@KNjaYbxNTOo!t3my#YYX+Jt&1#N_FAOW@j&v2u=pLhPZuJhEMkhrB-i<}%-wK; z1<kag@`SV}1Pp-zKbR-A*BvPD8t%+4`hP+>Q5*1TRCnvS;CJg*md_43u-sLuoa_=5 zHzWK@gHe0$8<%NJ;fuOG(gbC(Au9>tQ%|P5TB1aZ<_71V5TIsW9V7dV67f;=^}Mib zTsOJr@L(%S9?IKpry~;Npp3CFh+#!hoQ&T$r&9>Y8)77qDSE4Gv`YG-TBNThoPX=* zH($XzVI(VH{R}Ov<_f3sO~4VQVz^@U9IV=;+N~Z5#@~>9WZQ)(l0&~RO*Gka00F(l z{ey{O*ILuqKD`q0>pjb7kW+qbz-TF3*qDOTlM#{;?a<GLa*ddYN8Gxpi~mN>e=GF( zmXwz+G@?&MNBhIuZ`5uHa1{cI&wm5hz>BeXV+&<Jl75r&lAr!Fs(XwiqD4%y93DJ{ zS<7e_b8Wn<PfcH~F(T?F??32|TyT9C`bJ&H;>d_v{ten1bs3A_3krXlAYRLqft7-* z)-tfcw6e)(XJ1$jt*y*l+-v&k&5AGS@xkgQ?Uv8JlM^w+a~Ms0UA~;&Ab*5cTyrr8 zGv!kflV`=mGe!NNI?G{`cQxN-JmlWQ4@O3WdCe&*%pT}vW-${U28YG*tnZlAnWhQ! zxt((2b#foY_M-ud1<%-t<@Qumy{swKS}F25={B7@-p_I%c75O-2Jtjws?QCK<b~<e z=5E$wti6kQ|AA;<pnd5(m4A!q(oPbkzU3yUs<*yN)FF;=p}tt3+xQ6JehxfZksb6m zErdf~`7Po8@bqBf>@J-wi9Crc7UCM36FQPW#NZ-1qB6Q|sWI5)FgHB7$KL87YjWcP zX*GG<qA|E{p;pyV&Pc${mwLQ2$riP(s>Sz*DSMj`J*mVyOmYMiL4Wg{mrpr2H|57w zJ_`@$3#nJd-%p17V%+dq76$WbY2lW_W0CZekt@5@Og4@9b3g_RGQSR^?p|mT*-O(4 zX;D$47^2zGhup}7I+(Jkw{Of(X=0D8Wf2<*&EQ-qX>vfQH!m*j+AzZ<juSmcJd~Uo zeYYoB^<)<6qz0j|#(zge1G!l^G1ON9*HxvLG`Pc);ax?<$sJ}@)?8jYK=4he_tiq; zgtv8-rJLVP@=WVz*C~B=!Vk2e%U%TC7U}7hdrr%x@2hDuI=^Jl?i=k>x2lkLiyvE_ zXu`>p4;B=7+52S$$q*9(xgYwMTBrG>OdDil&f&Zwq9EC&m4Ci#z1RH2DE1>!e76(8 zBY*Lp0+#t$(cvPr<o;olFYr6AiB4S77&0_ynE)1(2+fD(!uWNJT=@M*&)zockEw%U zpWVw6iy~IgU^g)d=k8lckf!r}C?y_@9-2i9Wl5G1Yq{@q$3`nXJ2XG!<sw+LkwD(l zWgGpH{N`4Zg?}<1Z0G8!7W$gy(jzV+MxEE28Sjl1tGOq41ai&2znCu8oy<f=*V?5y zz%HPxgQ{7I+jvZ(jqEZaeP+g-sFF{fXFA}iUtAyN%#De4uKOC2!ajg-p>7>6Dm14& zQC&Dm$DYL8{=PuI86<zI+BKLwYLn8>*z}ksu_Pu<;(t)?{At;TC?6FsDVn4w4c-}~ z`W5mG+GfTlQ>RROxXN;QS6d|Kvmt&mi)#(b$Ux<>5>tu;i7ro1b&nXR{CZ2jAovlX zs<KQmdAo<^9UU{N$e#TxD$I5~;1&80L7Fc(j`N37f%~H$rqJe!1;g$Z75e4fVm_ZW zXu8**p?@}^nYP_{i9;baX$;MJN^HKe`M@JW`#R6#etX^P?Pp1{T7at=jvR!>BH#$Z zfU9WVrA)!aFIQ|%sTNp2BYA?_Tlv0%(k?0p>omx?qB1@pGwnTet(J9!n``I9;FZ+e zRPmFfP;1p>i*rPHFHf^8aiY%IPfS7mmt#74%YSYscRb*7=^DvHm@nV*eKz*n3py{s zEBBL|>)P|;_0K@HsdQpvwq(*g+<iV-#q3d9$!p<9BceR~%C$r;fz3IWl{xNaWoRTA zVQRU#=ru1s|Ia8UKGvL1DMHj}%xm@uZ+O1Eb9)2*u0vzurS*ZdbD524J(f)D(zaur zsef5&ru4vPJ33nF>}94WmsQVnzJJoqNTV^zQ=YSMA<j7Q99=qLW5S<0v&q!#E#N0_ zLlvF=9l7U)#tK}~+l0c@l@gnQgYEWcMM1bO!kce{WAEBUf<DR@s=VRlzkM;69L&mg zJG6scFi~n~)7vwx#cv>z156kUZS}>!L4Pi_q|ZTy7p+5=thQk54Sx<B2Igx4D6WGV zuhF=KfpA){p19rwTVb18eVvkD4+Nm8Zf@hz{OhYhRpn)X#<maBOwhTqj&J*|Q#3wY zCE1>#rjo*tv@h<)>G6^tXxUL60f=}6N;0v94H=#ygN`9Ff=*H=7_C2$nArv;Fn`iT zv=gCmQfL<g@~>d);CS-CHkrE~e-Fkxh(eU5rpDo^o6-NwKj99a@%@zYL{14`LFe^x z*6B>E&_$Ppi~7`W3}%&qDWjSG`odTOt&Ltwi1_7v|7qzBt$U?A&d1OU<#0Od%BN7* zNYAGplExy8BQnvGdfZ6``}&@(hJR#V&Jl!4Kpq!%C!$Z9N0G->85+(kBy~kQl;JG@ zFXNb$q%Fgzn?uiECL|Eyqw9FKBu$HK!0{_sh0VuDH~c`saKgP;dQ_AqO1U4}hm-^Q zz7zY`<;griB$G525?pU4>XHs_0$P~O{=-`SnGIAIVqr`UwJa)z3tf`eWPgQ$w`<B@ z+l7C6`wjSB4Ud%c(h1go=co3l1p<p!*+fJ2&J9(i!%0K@h&$^I_d%LWWnT?YflApd znFtiQu|H}n<s$hJJmq=K-&jZA#G{7!uP~%9oI!qXuaOuJ8Q7%p?M#=RN3@Aw^I(;+ z%u>4&ewU?o#|*uls-Ldq@qd^+p+n+Bo$$T1gM<}Rp9tPsH&HU}8!8STYk|mfg(Y8W ztTEghA&!7|mxqiU*nS>@n3VF2ERy~1gLTS5ut^Y8l#;Y>H4o+98dTjX#Ox>&9M}9> z!=|N^BJB6Fj@TZz$f1%hnD;Pxjy7<UqGqra-TcDtYU~{X7l>zhjenWq+3-28IO>xG z6Tw-{MQa-aqQL-ZjW%pSG}*U$6x+InL|whr{$sh9eULG9ymURwVG9O>)EK*9T-fbm zhDf!(ST<=Y^U+$BFO8#IWPySUEfW8^Uk!_i{yR9*5)7Iy4JO^7)gpo9fN+bwuJ7+C zR17Kx5)kf7UI8`FaDT}=u6otE$ct-a1h<4ZChAjnnnMzT<`(s}JB}Y6p5i&05$j`L z$EDsg>P?zkubpUpfEbd%jps$7=Z{^NR4pdZtr7V|5}^5sTv_^~`Z`g&2Iu>fWJ2#S z^g1WvT)2p=4hJPm-wcoM8*L)F>G{ltW<R%azkgH2i$WfCv48G{Ub;C-3L;d8*2>%= zB@$pne8%n2QQl)Epkk~em?NE82#B2IszNNZPtpmfX{f)gXZ49qj510Sk-;YsC%BZu zIgdgne7HI}ZdBN)|G4_irOHxapc)mT_EGPmM$dM|h3R6vOXOWwOV}vU2BtK_pmUgM zm%dz{`?uO!&wtU?1;FPW&ebY}M|<PC_Nd-Y&U|^{ySlh1=<T4*+LLjoymFv8sYL}F zhrSS@_Ks-|Z3$UbLhJV{E}HS6Oa0bVT-%S9XO4Bpj?0<-m4-Pn3mRFKHs_ijVur|O zU#5&!u*Y`ad-iN*`9B1V3&}`5(SO}#!bqCe@eOSY$bZ#mCYSh;qj_u8b9^K*&zU5l zJ4QcnuLp&!K(;kw|6}#Vq<8?QEqbdiDPGwX%ZAqVh88u{Z&Bjxd3kqv!R`7PxfA;y zVyj^5E59|xmb>+q5eu#MYaI{?HYkz_K^LdKHTeV-9Us!IY-cg$-Ik-&2lP1ZYC%Xn zmxLR|xqqEJ_BFnXNa}fIV~E<9Q_lvpJE6a^17B7-L-c%Pl0!@0i#m1L$)7+2U4eeD zlxPIFrZoqFki$09yxnX>r&f$mp9>8jt5)T%&y`A35RcjPPE-+A%4~(*CtY763Pz=; zpid4Z-Cv-c#s>uEb0lg^CS26^>b6nFYI8L?q<@gz1?LA?su|xai@jpWUnqd6SEF`I z7`!OH46(Ux3*2?eGy86v&fgDTXUHmVNt8YL@d6j@yYyft4bGsYRH<vRZDg^2Zq`CZ z1ogTdEnM!O8t2NvYn?q?kWT2Ecz4+ELu5(jheaP97XukMV|w77cTy>vnxkOspfO3& zMt{x7!u5Z#E@tmdLYyQ%+Z1!QA}kq}(>;CDpiilA|AE_cb~+N~Rv%sd*5>6+>q7gT z%PJP4)o``OSSkYlf<Kub%32}&ut*Y5qneLk<&tqi0YhUy{9Vo|^n~E&FCzgV<0PaV zHq0-ms`8Jmo9k&>7Zenvl?N9|sDeuR4u8DZEzn4cp;iNCCUiK}{?X!gSVh@${p^^P z!C42_8lP$(D^!<$o$K*nc`1}sWx&;%2k7mk+~m=pdm8jjPCiifpnXuh$r8MGVcGkx zEiMkJQD))g;alEMo@ooIlD#b7#-!qYjnnn2-dZi>6hzvA&o*#Yq1S&)A@yC|zkg=b zoY^j>^eoOMouMf&cju-8`i(HjSLh(oy`kfl)egV13D~74Hj*YY!E|lZlN%nMpGP%A zwHY4ShfSO^-=4E1i4!i_@BC1sS9umGEI225J0zsy22KJsr}B~@vQ{*|^v*rxM&VW# zu%$fLHfITb!W*Mv8LZzcQD%zqa$VXd5Yax5Vve2!GfmRs)N^{BrF8IK}x4{iHP zQ{q8E8>cs4+-f?*Dxd1xq^m{`!~QZxI0;XEyQ$p09jYe@M=5o%2i1<QE1K%mL_cES ztwn_Do3|jRm~$kYFXrSSD&e^MZ2nE(Y704#-^=f@pl+NN-0olQ&l=t$eSeVBrB#2Q zhj<P3r91NjJZEx<%8v+XrFOikbF|~b8)D#Sswnx5<IT5MO_2j@oVe|8^G1^AIqh!F z>h16LQ%wmU(U*rBcr0IWm)$GxuFCMlubi4ORiX}BfI<ZLL6L*ky8SJ>f@fDcYH~Z0 z&AV{<#GhECPo$Nk&jt;E$bVn1@cefo#|R;}`9g;V`>Nlgm`35{_C0w1GWO{d8*Cf! z_-HU0)p~}&!&a?8ZBCE&hUP{#<dH+H;q81h?@^oZxL5Va<S!xH=;MHuI5*34%=W?{ z2O)BxoXJ~+dJ$e<qk4g{YbGW!=3@c+WX6eySNNlSGK@3K&gb|jWPi1s0U=dyLmkmq z=;{qO#9gBf(58o)TO1j;%dWz~kZfifEoMC8aG+hd9XV7Q@OC~nK8|7Y0KUE#TQC9% zGHxIFK(OqGa3HU-Jem}zK|JT7E?4lnYOWB$qjG=@XzkMWlBlb#avnR%zcTiyilfUJ z^qF&z#;ha)F*SwxEq`t-y@FEHX%eXou!3eead+87({Wb1r*gUY73(bdQe{rn13{v6 zs+#p3ENh|8(N`h}$c~W${HHbnpJ(P=j74Yvuot&|Ou4>qXegqQwl7-QOYI>Uz7Jsu zITGm+N>Yq(d_&<Bn2<#utW&0Q5X;`j>(+{4Z{d@O#l+L_e}9~*mwNW~`oZ+{(7NWD z_f`gXy6BgP*LBeXc6f-ORA#>&t*sOhqHH@mz*{FPVCxQUHymS(CCs@=H9zZMslMle zOyPLzZOZl!^Gq=hk&rzqZD{M(CX{U#1sqJfG1jxz0nVMLGzP*+%+xBnPpkVn7uOM8 z)vXa|Q{9m30DpciksXYcK$=u{cEC1@trPuaTf=^za>66^d#_DGgE%8KA`Qei9ziuL zGb`_3gnaM(Tq=K9sBTLl$_H?IA{!u2-wm_k5H<sqZ*={=rD!PUtEE|p@>X~x(KdPS zeop2_$<uJxIX7AUKLNH2N%Utr4ou5CaQa8!N<uIjbAP<{(4RS`w0&%1(PC3Ubif81 z2b-wKMUzc#>W3J4%-HK=<*D07O8(5}qa#`>#GpqM9jKRVOnI5W{h-4(^V*{q^9%+h z(5awa$M7X4eoQ(R*3R@SS{!l(UhLB5Udh6Oq+<ocyc*Qjg-ZVK!aDJe5igFOBv3!G zuV_l{QGcRDm96G5k@b)0{H`l}^3JMZv5Y^D`W4m9jEICU#93QRm&q+%zLA05W{9U~ z0rnvQII?@kyT8JR>(?nFC<9L=1(xAjxnT2|`I9hEPxf+9U{QBerd)4*dB2?^(LjGK z^Ak}}+GyemGuQ^Y4LEnrkRIbMBpc#mpRfLL6MsZk5MQifRT_3H=~|W?F$$l>S9Os$ zR~!wr{vlCgH~2$<Wq1dOscHY?U2RL5guVBh3b0>pf9PfT(2RH+3~5=!mo-q*^=0nv z=6<mk<vcX+Q3g6EytS7@>S@$3L&*ZSHPdD0J(v^L!ZNHB6g$xb3)~9!rzLl8VLvxT z+<$!tPBUOVN}*NE#`a%1eeS;fS=c?6Mdso&IflcF{s(pP?kguddjQaA3oX^xKq!c& z7w?o!(98evfbrQF4i!u%oROKwewO}h3@HhxE)@Z1I=A@Vy2^yM#LnsAB7f;V0XEyu z>qNpEikr^KWBh%NShPnp_;`K~wg}tp`+uCrxdhfhX8#HabkALdy<0JgZmKS57iVCh z0^~Ga)ztdU#+2}@bpQ)+pEHBHngq()l;v+5{^NSThgb7h=$SOZAws7U+Hi|#OiziO zF&Iy!(D_yI-z&Bo|8V}%{BNb~A+d`TqGk_uZRyiFRT&zHMT7jD{_v*Eo%E$Wb$^xb zq+$J?g`toq-+N|NYK8YBrPv0EOK>}&iGg%O%SYpgwOv_((*#lvH<Rva!1Yua{lZs9 zNdZ&c2Iu=%4@f=qao{RL{k(YOV&?sl^T>QsfHF)cG)K%uSVOiI$Y5b}c-ow;JOy%w z%Msj;$F0foif*ZsF#=&jUh2$RSAXyFH|fD&DV1gOk6d<rtF}G|ED8TNBj1zBbqqw= zhCfQLD^RzdFv)8FkY^9u2chi`-N#c-kJkDt_#6mZ*8or<#W!~C$f7Po-R!UK$gc!! z0TH&o1q>84Bp%x{^k!cIe*f-?2YSk)wrc06++vPeOTl@zH|F9J=i#O^Ab&lm9ys&E z>j@_GOW3q;l$e?+5$$+D-bDAf*OrKN8Bp-zGEvfGnJWuAVpvJ>CEgK&#*XlwUrPQE z*K^?p0D=9lLLa&1iVV=bE^irtbbrq^<DmHsP_4lc9pVn9y0Ed-d{%*h3bkjHUImBX zlbC7bjb}M9ip5;@MLAv4aev-k$9$~9iIC4Qd#V8~m+`)V_YT`Ya)cIFT<F!@i&38- zJ*?YFVvNT)2XmTZ-c%z{rV)eSpE9M<zl=+U!ZEP{0MP)}?1k*uFXOh=ceg{0m4%gy z?>iAg3OA;eX4SSRFBBCJIxW1W7^>Ga^9BSu1DhZHLMZ#z*0L^JqJLN<Qn<UA!}XUm zd48Htvc@tS<zlWi?Rx1rIdW5K0sY5^)A=aB74+!?92Iter$hq48nd=6+Ic~l``QI} z>`T`3`bPmq(>`K7Azy3^_yL6sc7SJ$fAbbLM-BT$DrNnB)1QH$do-(7RyaESxkx*3 z)Z=j7N_Xq>327Q?KY#MexjQ0{%kJad;>?gx4h!wD$NT&Ui-soAQ%0Pyk+Q!}l!}ZO z)+)B?eH4VMNI+v+p`$4dd)naey|Pr2SxUKil}+X92$!_@-(wJ@2@dXZR+fsXVKMsi zm`vl<690mO?IOGd(j9|kjz49Ad2Hc-aFM4(lM+fni>QatfPWn80WP?OQEpkeDP&l! z=R@vn`?vq?hrUR-;U1&9&wHnGJ3yg6Ae>A+$hodvVSWV$&KSS$1YEKDELwzqnB6k8 zZ$+<qXSCdnZmG8<5_5XXGcLnPchtB_Xq{hCtGJLfyVz-n++)}t5r~QZz+Xph!)5yX z0L6g1hB01R6n|i}nw$^<<ijJ39%{s|{e{^7Cp0_hM<V+%MmFk2vfWG2R9>#Ri9sPj z%~ruo3}u>Ok`ET$EC)jP`4x|lg7$azfpEX_?)oVhG!5itS7=JiG4QT0Fd}{Bq<;kB z!$kEbY`GEzi=U6@)9=_es5no1BB;k-caXbH_qZ8Jw|`YqB1Wp7gMT^ki<8UJ@~{Mj zuif*RFWkx~<vC3zV~T7Dd@KwU#1?J>nu5uuNH49Y0EclEQSobvAS+8b3Hx6Fy|yoy z22?&?$)2h0mmST<2pR(?9bk8I?D0}_gdlm*SzCu?R{VH7Ppp7rptp|0K^z=@hHCuk zc|zp*?SBjpY`2x&;>0=1)w1Y31f37K_XC_^TB8dw<F@`dWW$&$txc}=IkmZYb8D{? zDyI<ayd&da=yb?|Av`!VtI~tY(8L&h`YDybHwRFcLkVgUek(w{a1D<Qo<os#K00?Y zg9Dw=Nx@y6=oW8#m0q)QPRDu|lO~A|QwgAHQGddDpy%7J_LDkwu4D+Hc~Zq!54tp6 zQ_rjPC8?CHFo-CmMN`OuPI(M3l*(b|`rb;~rAlP~*YRzH^8i5rs{$a0P4K5x&u0_p zl{|BU>FewHIF6gtHqxdi%@w|K1c-R5eh|`e<{hDXo&u*#$r;KCCZ>pi%$5yTt<#m& z3x8@Zg^SC4tLP#=yd9mecS*jvbn<PMDmzOQkF##7Oc;;!%gcnw&;Dx-rNTY78=Z?x z%HdfZK&gc0=UTdqp`4ZG9J5O@5;Cjdq}MGbwU*u{!Uu!#u+*xwQf8XI`wLm#!%cpx z5~Zx*O<u$M0%Ggo#gfZmsvlzc&Y~Iw2!G22|MTVCwVzBJO_?4+^y$@R)94F56fg3o z2~_x2jD|rr<t<t!mTYBC6&2<nd?Ys}Lz@-YDwoHEyqMj+bDvRZv!1-q51vu;{bLxG z`hjkaoola$u*YCU<=J;#-B^9xjI0;}`FWHHlA#v#mQ}bXK!r%U&MM-m5}HjK^naG% zAp$^W;S;(dV}|n%YYL424!xKZ&Xb16wrY+#&hic;)4ot-ZGyGW#SD=krG5*!VG-Yi ztOW5PcB5UEdEXt?)Q8f<=rGSkyBp%wVP8hBlf1^KXEH0W-y@Sm>K@m0n2pYs5yZ_N zad13QE-i+L9(*WV5{eHf{mgh}hJVTkz6^SQu$ii23QRg+ndXAR#~WPuK>*|C#Hjio zaU6^K8=kSXN+dQHu9*D&rbXEEIuB?irWX{V*0Nu4WM+FlhmnM2b;VE;)PvK_-l~k1 zuSS=#xsFtRwsk&&cHD!A`KN*u<PkZs@^4MYg{n;L<J3{i|MoG29c2#EMt@;yJBGrh z2+5{lP;{sRT!Ny_JC<nEyh>^5?l~K66-K%zqyUr-v)i*^%5@lUpS{u`%Yl0_sk&Yi z51B2&vfbi{N8Bhjuz1VTEyh?@WY*237P>URNE9lf4u(tsj0tlX$L#b2?h-RSGZ;_6 zY~n~F$D4%V0TC`NmuT+Ps()Zfg=^U{<q}YUc}%ISjbtqbvPj6~t3#b!Fg8<$!WY4A z+0%ma;M&)44Q^PCg&M;0;Vv}I)<ag?y57NoPjY#9-x3hJoV21}v|OQD5QN-&ONVe8 zGBh5r(?;2i>F6rS$`<sg{EKtk!HwBx^&%LQrz_D(&4B|<0$d1k;D0|4De`ueZh)_c zoSe+33?iED_XVuFSKgRQWD~@Xwz-~PH&aVCn8g}<fl7_Ac}m|nh4}w?%xqge$iKpW z$C1spY^;=PaBWgTQcL(duoqkVDv<IY`Nk%w6#G<2DNNY|6R1|SEWmj)ALY-jSRyqm zXu_Qs2!m(N8l*VbQbHexPwW-tk6by^OGLT*CR4o!oOxrGb{@N42kB{EJT@CLaXAqA za-Npu>@hfo6YS02>duTrTA{{4+n0Fg&1Dq%m+>YB6qgAf1`L<Xng|;YIWjQ{FHB`_ zXLM*FG%+)m5sL*Wf9+daa}zlhe)q5F$C=uqb-!&<Qx(XBTbKX|440xP<21yJV+Y$A zV1NCdi)_p7II)wk^D>oKtyUlD=-fUX$!--=B`Xz8Wp(AOt0G*Ss<e}EHI;FAFDsKQ zTtnrwfvc^&!z+-72-j38B~wSm02S!15`0uLP;r&g28skUe>!*|_LVXUdU<HI5n4P< zz#HJ>p;tf}uc3p68F*7^>21gPP-!hA+*zo=gy=>mU1<d$V_<q79vSQ&;ITs%0Umi6 zM=K8%7**p<pfTVRtcQ^kR3Z{XOOg&MzA{pRtRX<frpiDsBS9ty(i(+R1+^IkJzRuG zIJ}DrDh|d0e+?Sw-*KQ+m>1kBAT|++Z3PWT?4aV27<f4al7i}tLuCh4I%*r{WCE%? zrpg-Ro@8aMQXL03)*5Wll?`YX(6v)ARqCk~J_1QB=+7nOXOIRzpf;Bx*bfxoz$iYV zHKnYA^1kDxssft8OI<~iuwuc;32A(lQ2ic;NXXE`f4ozKI}avMQtALT3pEGU@SqbV zgT=N8wd7?7O`*UYpiOJ^6b<}g9ty0EHRz#X7^p!Htqrsp=%GQ53LOL-2rZh>gNy}B zqGN#`!8bt73f0yz0owxF*&tnn8CY~IlR&c;ea*^*ZQz|&YjAa#t+FsoWkEz`Em{EQ zY*A5`f1aWpw8b9L$&N*NZ9@0J`GNh&^Pr~T9%rT;J~3cj<t)@JN(Au)HFSH2aybd( zfw`e(uokiAkuDk8xqG)GcB^+Nx~yJQ;`N)iRY)}`CxqI9a);-G!TZi{zpbY<*3@a4 zZf`W4R(J1KVox~|oO<j*+@n_WjVH1ACXyPte~uvoI^Y{{F;sQFv7|A)0Y>8W!N>nJ zJ!bUiRAHRXpFJCodWX%ldRK{OyL**5YQ9gAs{6UQU(M%v^y91n0%+`r`!MHbIGt1& z9xzNtyl5t)^Kq}45HwNK)8@F}y*K(^y~74@{u;q1T2;sN9=LYLFa#+Y$qTIkS}n8| ze{1x5QyVb%ZRzc&DkQEd#9v1tVrMuU!HDk&+;M6M?s#p@fap5n-e`Q>jA>}~UOW_! z#C^DdD0`2S0ZHE}ZEKYf;bJWlqIj)AcMwu_G7-oQ&p%FKNU`4^ei1u&?-B#C)0_53 zLvbixzIcS6UrwgevwsWm?c2Ay*NlgCfA2(m8h3|ZPQ~u7J!#Iw$@Fv}dV}s{^5OWy zF*bcr@Hgq7o)5Y>7~Otuy2Gjc(EJ5bf9MjE8hic<(%noz>p~rI4brZb)<S^C+WXrU za55dA_of?2cs^;ymx@VFA2xCN6-oq^U}bH>MwCj{5)k@oN&wJ0`3(q7l(mQTe|3}C zghdzEhYJF=#IyprS`l2J-OmhR?^i<D+pR*_$94#NmI3oAzUq86mxOe7*NXi0;sC(m z<U9ai@vJSZyWZP6!m4ept&@VZAh_B)Alo5j9aiGO=x9`dMSq!`f5iWW9W&IvR=-wj zB5?cpc;JitXY)bifkbPo`RH4me^1tr1;~TcW~Lq|Q>|qD`}8xLPgc)%^I6gl#;A9j zLdg>4rBJd;xeiKJD4j{Qb><ckq5y@Ti335c;y}6%4iwr6a#PzZQC@1BRZ1CP-3uE~ zVju>X<xOn!Q%&GjOc2aXO<*@Rfn6~{tRaQpgc4E_w-KS#wSpz@YDynue+|3pO(+da zb0h8^Jw^KsC}CS%y9<44h0<Bbwl<;!I1X_W?lwU>A~&M6fQfn&eOhU1JY~3=(gX$i zwA)9?5@_9K#JqE$5Iji0GDcV1Txy5|JoT`30N_<fv!)C{38`|>1ku#u1CFCTl-!bB zgmIJ%9!U8CGvJbmm~mMze<`gpsB0=SP4N`8TI;3JZc>(W<1z~)6{>?uZeihrgV>vi ztrXV5BYowQ!M*?sE>oI_?asOykK<5A?+vshP+!V4d1M+P*Q3H-WF+R2`BJIy_^NF1 zHqC`71zHs@3rz!O3l{Yy>r?xZS9l4$vU=Eb>`Mhb(^zH6fN5^VfAT2{#Pv*%+~0TJ zc~WIjLL01{pt_=jwqOk^M&gl3P>>0MK`=K2@WR6|<PlKGOlKleI1MI&?Hry>1;p;; zL8d&C$2#}tdeDjHs3~D_^Rc*0xba<Tfm{qZN$l%DdONS9EL<;J@azgdi#vY0Xe;|* zt9Cexr~+w?EJt+3e|Q?*)JmM2F&v$<-k3+@b`~{eQ6H#Tn5VD)DgV}z?0{CeR*A8o zEP+!%k2IK-c#9we%OgT2#ioTs+SBq1AVgT<aq|rzBr%pH!Ijs9B;fB!QbeWf*SLhE z_rPWyeJ@f3SW9pnF)C>+Pe5lPd0$Z~DJ2(Hk^e&<*sy3?e@G3Ds3nX-I~wp!oT&|X zVDIVJ6X$Hf$C=Ip{zT*)B5Dp|`k&AL^@Cc+FBk&h(7d)uNlxJSgJ2&J`Z427xx}Qw z<kBbvVB-|RaBwT1=n0@10uuqcLHCHs<{nB~#6zWslG|saO8icwj+qxybFHMpd{F0- zIF=(&5ODpXf7z}3<lggH<k?cda>*?$T~v{>36cvkf`rQ)hNh+rLShD#Ft7mTQ482J zNz|B6B)X&vl0-s&!~~V=5#rrt#Yd!wgd@aQDGJ>@3n~NYi)ZeOdRr>|{*VV{+vGaH zlPavqt)-1UEOfILwngqar)COE3%hkxl5NVTtShclfB6qc++yIzggI-p5=-2xfopm6 zM}TTai4Zs&06RporgX!4T0$_+lcsc)>Pl%$Z<#2vtI0U4Masn-?<g=Nl8hAC$Xsda znrA{~AR?o2!{H%4^11HF`MI83f<u3yp+O?_5w63=+<4Bo)tq_mN$nmt<+&wM5apf) zJ=5Sxe;lS`xbK0)i_%(NG9AS(mvnHDOHJTtBt2aq<opwyr1M70cbZbtIs7JyMI|XG z;AUNvNWyFuwUVk_sTXLTpB2-)XkzO=dSw<oD(^A4%<BS(79?feEEXXX=O#IiCsaZ@ zG=$2z5BK)qn2B-<8i(7cZyudtF+(Pe?^vBmf9g4VTnh-P7J{~Gg$ih}Y>lE`SdUtl zY^oPyWK+0hYNjykue{2zL5im=0N1&k`vk6~pbAol3H7Wr3IQI!H|7n4TU%mE=y*N> zH*S%7#xQ#h-i3LdQr6`5+1RwVjVg0wYOXJ+EZy6Jq8MRbyL^V5lzGHrW+Xwe%g1|` ze>J3p)?hiIx1rS8()p*Rr4Xqp6;+8OjFGaH;3%c_xSTOT#IFKqXX$c18r=7yIRfOw zxPV%sOQb`ubCpXU7q+6Gov4c?a+cOK&32+IZ#fJ5V(XIClc9BbVHN5(r{(9?;XEw$ zunQ`B#v0-}l{x*}76y1-UxfkB8}G8Df7LvDJLPqb@(+H>V4;g~e9oZgga+)J;e<jz zkHvM1>kmg%1{l&jkDF+lu{00HggG!4wL&gSBRK-09FIl4Km}^mG#^dlTN;mBLR$1( zP;+TWvYc;b2;@yY9gi#y!0}XZx0&?D{j=$4%%_ZhbWh>Q!^4+vUhn<u{?mJ}f0cv> zgYM@^Wtrk0orB+TzPf`y!~*xU2#NRw(xivS;Go}*xZgc{*z`Z2z-{y$fo$;E9fc1c zO}m4BZ)f;<&{Qz|;j}q@g;>!MuX88R28?mi9plmDFJedB6Zgfg_+9LY2lVaM6R|Iz zia*4GcqU$mLvbWtidUj5K8laye{SzfGaWRarnCAO#}qx$8x2N7C{Itj;#f3-c!^Kq z6a4r8YQ(3}`B;1wC*tJC*-0}LeeoahMGVBL7>Z$k*ocuBL3t+5nsI-0EWV1b=c8$J z{Bgh>#$qBS_~pBp^uLR#n4XNAMohnr#JTuOd=uZr5Aok-Jo=S2xz`8zf4yA#P0Cf4 zdGPenA8((tW%L@$7_<!j0?(w|v5ZVNw#;kshODz{1l0Y{Q2%7mot$iJ1h<V5et-Gr z!TvrOA+51NoJB`+w-g=W5*x5)QU2+&SYaEnUOj&F{1rz1(?{!~-smiswDAhL%w=-j z!C+^}f-VFzsuT<z>k&B9e=BekaD!#h(l(;qJ32hLcL<`rSSOj4Gs$GSiDYw&`LtH9 z)u4I2CT#wsz<CP>?oOuQ^^-5xLAYjkjIq#sJ?{=g^Sw9do@Uge(96*`*dhS&3s2%t zHRir1D(S8a(9=H8a>Gzv4OXSLG5woohtH45^!{SYYdMcqb1Rldf3h`}NA=C6To!7p zWnky^{@a%iP^hp*s4x>s>st{jr0WQ^6|6q|^XU025-P4ipIOc!gS;J~{92**C>{?W z7LOnXXG_=8qJ@#tp9jcju`m%3mp;6#l&wH{_szlX;eAlb;o&;y@`}}x5+YYxuNA!A zL@V)<r3O*!0ip6sf6z*AIggsJ;)6C~T%H=OhWJ+Ke*eYJv$s!4M{Cw&Z)TnYff2mC zv5uBvd|5|X8*^Q-9^g~RKbL+*a=jI}?LYke#j^vH{LMP=(5bqU@OST!sl$HCEkuV1 zy55p)<=U{BEmNo6>52GwJ{UC18HwHs<_`A{p6p|`d$c|ye{pl5v$vFy_;|_6eK_~} zeh&MuMZEu57IrK6J9xbRV)rEqd$cx50a*>6O~7t5`9f5smPEzdxu{y}+elHKWI$~1 zw^$kT)S(547bOa%!oIgvwiP%&-g&(D^f{|+&29*>5#J8d_!Wn{xysyHl`T+lu8!da zIl0~n+TI==f9ySYMiQ=rw(Jx5Q`{79EMTzLPFtU^B(9LQp2C_q=?;$<32b+obJ%8{ z!RGvM<HYuOG#GTpi~P2g*cO|~&*P>Gd{=YYK{J^w65HYV=|`An|MT$592XThTj<XQ z=MzeJn+g4_f0p@PlJs7X>Yfjefp>2-ZZ6Au&6<UwfA}ddHiE_Obtet|Vr=CcXUWaz z-7flh<6eI}nWCL5bdvq<>_)@gpZ(+M$%Nh>+nRm*u%gZ0udvr^*yD?7TeEL%)7#u* zn>)t#g1hpC@M(MQ?cH>Xy^<^JL&+Y`T;}ZU_Uv0b-ZpoAh2>45dbvIK<xN+c`HI`w zR4{jif7iupD1Lcw)aLCs=AEt~_wp8|%{yM<@465?ZqK~ERcNu-D;{U#lEcTs=6ZYf ztt`CFU0=%Gg+lRWd*<y#xXpdV<xDBME13K3nYYu_HgkVD(k#L3HE^z-IJViZxE<#2 zYuI1I?b=CLi@jNKJEzy;>^0o3l_9mcuehCAf3mzTO@BeUjxPyJ@GXIJOsVES_4l(E zC!h3>C)GR6I<D}YWxBE;mEi-}$}sFyhSS^k*WqFEFTIV;SC@I@*W`@P*PyS@Bl0U^ zhOrNSww|vnm*oSU$}*N*i-*;D3{Gg^%DTgMrTEHnSbjD4dOWgDY}SblnOA;g*@i4n zSGs{5oD@`!zdOJesrbq#d6moW6*|3@J#5Lt<u{L9){)CPn!W5jdwn^-DtQ?XvzAAG ziE8%3PJShU#`+)W1vVTCWo~41baG{3Z3<;>WN%_>3N|)3m+i|7g$yt-IWRCZG&C_Q zFfx~Z%nKI`FfchVFf=qYF)J`Km!ZrHj{!E9G0h7e8953sMrm?$bRai1ISMaKWo~D5 zXdp5)F*cX6i~%Trom$&&9JvvFpRedgD}W<ji)3I3SXfBbh}I75&6D8=**mKYU`d8G z4zhorQ*8F|GS#gh4|4Yu>vHN;k<~pOvUXAvSvP5=arKj?glm|LG5GV7i3(ReS%=R$ zOinpm?c^2KRGK_N7x!e+&L}kn2VaS%s0ddx#b_oS<CIu`9yyLrxKWeV@Tvo}bPBkE znh6&1<D{*F4nf%&ztaR|4|v)`*#{_lD3gb>gL2S7oxNKqI{YP$Z8?5+2H=X9Ol0Kn zV~~QeW~U8uvkE$za1%19$v6j7NR8(u&X+)jMskLtosgUffP&;qgij=AVnoJJOg`+8 zn^lk_HLFs8nvj{*@C_{1II!$+g&b*Fn;aONEVGHEtS37mC(9K<N|ut@AtM_gM?yAo zC7_o~LQoWgK{+l8S7UOTNukLZ2$6~dzzJ$LVGRy_+L6U)56Z}<$pu5egT;i>6To?$ zZw%0+h#M5zd50UusRC{QG@yh8l6*o8a*!%=I|6Wj;uaytErc}5BWrK?AEZsu^C$2S z_{L5_1z5m)FcDVXPr;+32!w>diatysrMM#xmJP>+U1>Db4;!^>M#vszNru8OMD~3x zWh;b+#AL{p#$=tJB}}&dQq~4#Eju$t)+}W!W~|NFvXd;?C)?|s_y6tv@P2#lJ<mD! z>pjo8=RSHrmn`WRf|8-wZC*xJi8bZV5|(^-IF<_YHxqMSJz4<S47#B!oL1$4quDV` z{bA?o#IeUS+TTB&?ObQq#rB&!p}x$@O;hmWqYYqeaGUFUt7sM5P^eK84IH^Bg9!Ky zp0rrkSuHOgiOeUQ*IqZ;&)t8^xhQa1+ISqcXuOWO*dikGW33`~-J&vUc4B<Ssh=c} zHtiOqikWZ)NR5AaeBaP&KQD0i=d`S!;QCpPmF{Jw5X`H0#*Tm_+H*DHNR`7u-(RNS zB%rM4*V_pOM4#^y_-2U5SFv&yvR20zZ_q0V>@T;nNG~m^;<5*2(w};~B)VALS7cDj z{0|@#+(;<AAnhOZFWPRu^(EC=ze#O(Q@tIs_$#en$vcK!rP$S`CU>B!lki5kmEskR zd8Vg@<)7~t*SMNG8*mK!hY|8ot`O}GD6pdIy-5Z&>q8CvvYKx#nziwH3Pw^ljo?<1 zcX>Y=U7~K!t2-NS+E5B_*WMsBgL_)-<|lpq*EQB|%uL#?9ZBvr&t^-kh0RY^_~|%? zyzsW8pvN3@T|+4M5p4TtHrdr$uLz}>QllqXtf{N7o>^PnhsFuVRo@eEw%)8w1zOc9 z^&P2L;+w#dIn6l2N|&@H*xuY*m_Qx+o8GMLHb(C5e+U0(&C-G6fcyDZF@pG4FJ>#a zlkrFF2R^ca(Oo+@)W&c$4oUQw816LPArrJ6x|<(8=6dn5qXas0km6b#xwack5n=ym z>vDe1EWw)TDn<QO?2B<q;TqB!Xd~Z^-GXIl=p2z{=s!jUrT4~r?D9l&d^8A3?`}fG zi-Ft$VSM}B)d~DC5BY7NFpJM(;RWIVzN{UcPH4)i{ZOFixajrc0pUXRKtkE&RJS;H zvxs4J%NsuAPa;EWk<8|kOug;a6vp-}eOy&LR+zJ){HWgEa3bWzFOy_orF~dI(|j6@ z4vdIZM|Eb5IZ$h%`F|XX)?uLny}!SL*ll8$U<M(*wbBE0Wm`|r=Ln-fx;Pv<s=+5g z&H^-lWThPK|6~POnlj>3=}ldDvk-<WXuqPYj|q?zs^O}E{6Nz(YF7{TX48U08B67v zSE^8s+?TZnMp<RZw}GIr<ZQ&RCCZOytDma9_7#_@?wRxS_a<j|ep9eR-vvBQa2q}5 z3p{v2NJvNvkg45VhdJEbZ2z-+@aLi8{6Ug{&dKq9U}&J`+DWN=CC~RO%CZ4@L;9I< z+r9LW{jvSPr)KmC6==|vFRppRdC(A&+o&ZXBAPAd*AY#745apEwI5BZhC8YpDixvz z4##%nReq<%kbHg0?KQ>ggTiq0t{f^lEyrhRnj0*%-iD*uqvQP}PFvHcwu5Ku7(^`k z+hbkTd!<qxz49;5bUS@Nx7vOwZ!~J(2RQIU6^DyVhaGLA>fBRk2Lyo@(KSqHzcSHy zPy7o3Zjsjt45z=HuadnKX;&B@o?2bY>1ofa!BsRJoE(e2D<zIySd8HJ;%PiJh-dv2 zh_g4;A{o3jtRlO3$;7dSTezx1zHrqnb&&4|8rfDiwoZz0&1;LnSG&ydW#b<d5|R`V zV5McIE?hb1#VXQ@)0kc5-N`2~B!K+O1G*0DhD?FFo<bf!R~mn`3nsKE<z<${Y@C3N z*;hn*HYxf+u)bN0OYlRpk1oOWZ5f~8W6OrAOkC$pv^>h_7`2*9+}8H_(`-s-96{^2 zd08AJ1_E8@#~hBwEY=Me4ZnI~Pnv}bwAJLZ>B+t*d%nCZ?U9jP{wnpFWCkoLc;HpU z`~)yHFncP+->sk(Aq2|dY>w_LGKh`a`+GA42P;z!o69TQ$=?5oWZPviiF_P?7z61J z;Kr6pr)Tdv2bLdQ6_xCcud6$)jk@Mlq`a0`Fc=TZS#M%;h~iL3E`KxXfRhc}e0G9P zh^-ffmH)Ya&YQ(B0>M^z+U8h!{;*n99Z-7+-6~6Q)J|p&62Z!J36hJ$lA7WDw<Qgy z;qRG)CS~0HJ1NP0b6s*b{&vaX0@kozN|c*l6cikAt{WLaWzo!qPQ@>BvX&aJTxzIx zxc9)W&qw0*pTz5qpy-4)=1b?@g$kJc9=+z_w=~cDAcsm!-Fy6xz_k!`iM3!6QVMu9 zD)T2C|2TPTKZT#{^J&^vfOe1cINtBVAyvGX{b8+pozbkj^&`m86)It)_|E<B;1Ky2 z_R$%f-bYkvV$tnQPqoZ#^ayi3^61vcySM(674$#N_ewVECc4YZHm&5I>8JNA2yauR zMMqkFrJP9dBPRwkr&+qf)Ih0<{8WI`rpfk+3MWTPZO`k%H+4aGF7V}8XgYO`^h;(F zv1DTwUBS<ru)yY?+OMaznehSdcJIS699+HqmmcXCYhJbvYJ5k_A|AG<ChqOm5V12& zn$81<x1EmJzlE~TJG^g5RH0waD6ZRM_R8p-WBak$b#q=Yxp4}UO;ImTwPXf9$#;e6 ztqq<$Q#B=Asc1BW;5H%bWXZj(?20`LSnjkAa?2O)G$rEOqCL5~;M_ALIx5=|;n9rj z!QDdr_2`~BPV1c7O*;vt%J<j@K0OFJ*;yVg=_Tr{<!DQfht@SV*ALJZj)vbjO61VZ zZB7u6+ARc?)YWD8kJ)g~$n?Ewf_Z1e(s)MM_<+;L-Egq{9gkpy*y#wCw-a+z5W6O( za7tSH`l3$B>tZl5Yq0zcpGUr@NabH-DCVfCq^f9OWNc`BU0GE@K}khLU)ezMy1t^J zzTT-*R5Mi27W=;|oZ6>C{~APv>x!`d8bnCy4KEv;^PTH^lMPMlTDd$pGn3$}1qG;Z z{+o*fpLlzq-pij!Uzx4mvvJ=J<#>)XoHa}kqGTYkFXT`zw;DBO7t&2hb=M`hc`nXG z)+zp&%K5&ITL;#*`)I%vO|ySX1fnTFow3O0brR?UnTGgxlFv$z`rhquN$P=D0dA^- zzUbUL@Atxxv%0|tRaW4#G#FzwQrm%Znxm4(TZ+on1{V|c7NEMcF<4@4V@Gb^V~QhZ zlIqVqi{i$k@#byTmNDovWl@zE@8+`S35%C9*&wAzR8UE)2tEbL3VN&yrD{4{a1kyx z(TE<o`GZb~%unVxx5j)M=`aZJx1IZK;Ak{v@#E}n9^CLwaXc~SVO4DHOG|lAgKJ7! zH$^E)g#kX|L!!TRdrb!2kx%MLo+Kd<p)!`do3|{Fyc0}PC;b8u-kFd&@|M?o&xRpQ z$etiXJ_e6bf=<w#H@u)XW}wOxL;gy}|GxZy*PEd%&hPA7-7Lew)I=Z(q*NBhJS~x~ z@2EeBwulnMBk+oC_OMvVsa|QRR?W=a;^!N@s)@A`l3CF3Ysf`%9O!Z-7EOPfUyCi3 zginip-WzTgLp7ruT>Q-NZdWnKkG(VxL4GZC;gr@Op}C#tG_~)FTrHEMw^qC>f&dXs z@AUt6kXmOq%Mg<XguB<ckqD%R{;P@P78f-kwN+DeTC8niA%4_Q$eS}$j%+|%uw1b2 z{#kM{X9b-hpqb}?2brz&p6g_k&#%*7*C(3o0S;t4&X=)w#0bCtjcH7{+A}HasaLUU zkubksV7rS@Y}Uo=Pxt#>ZpFF^+oA)<T`(rLssmq=O_G>^r*7GoA*YT1rVmX9)CMM# zJ(KjOO<^V;Px9a7omYF+ZPk47>fDvUq>d-AO-<@m<33)#abHJFd0b5F(l|_vef-Mj zAr4{#_ZDW~hD}dj^_LCSdxH1#k`K!RUlmp*4bIAH4feip&=zKml($ji$fP;~jX-Q2 z{~Gx%js12o4<x@e07pZ0&7N@~^Zbf5e9<*GiQRsW7mjxKueur48N<yOYC3EciY$1; zy<MB1*t;;yWwh+%P1fqA)7zVc(o*EE(s`JTV{-jiyNGU^AN6tc>KDP#KcpKn3<bJx z03zf#M2|=PVh@x?(*Oss+-0;m7RseMd2~C@*Bj0QfczP~D2NWtm?tq*E?V4^MS2<< z-X=_7=m{`{ChgjLN;?yU=W4eS>Y)Ubg%CpZ7k=oW`K34N@6Vbvh0k0NW_&%qq?$`I zW(?mHN({f8`gf^Z1lFOED!XG;qc8nP$@9Y)0^FGnM<{U=w&v4fRg}%HCO(Qd9!sD# zogjfos-V$N*?TZxE>*H`qmeBkHDWik`*2z3G>SuPGj%KhFrd;b(cxw8wZ!?T+gmEy zDYb~!8Vkj^E!}}bnG*0Fx~Pr_n%!st8PoAYys#BZIZ}Om+#8iyAQ{7D39_5EnwE1z zC3A_y#eZ)hS7@N4{4G6?9sAAN)f6x<0GV$sG$Q_HxZaHCmJTvGCV3`!O9xY2Nly~$ z2)t5w39DdTI@{ED$mt3<u{-CQU-xA*6YpDPeh`(*gLiQHKKpE`tLO{JzI*@7QuTu? z1r(of=NS>Un5mSQ<cEjcd-ky12BidEPI}>{DE<WJ!RO}g!XI4uzj?fTi0e?d2L2eA zMr})wtkk?)d!CoyQJ8Ye|MFG7ivL3U7dHM<ouZWu%hC$xnx8KY22g*eqXGvbWxNM! zWe<i5r5T~->G+=o6}-Rj;PAf7nK)Q~<jSaW7Cm)JJlDWYrI?PHe|+C|^i4R_l1&;K zxRoUNkq(Er=iWNzYgWR_{y;ug0AM$$<Wyn|{;)xZWcJn-teALT0@lzISYkohOmmSK zgX!TmfoHcPX2Z*+FIN6MGM%b!a@=zsMRpCWzLeRiELc2H7OL7F+*1-FY~$9Igle{P zDm+nbiWIBFuh45KyF5_ueV<X}fTD^M8QG(lbKO(PJELLUQ^}QbSfQK=5WH5g#!ufK z{PG#<laM`_32&3I)KH~6eFc8C$o9V0^p#xk`JuQHsk=PI<-XusQGzhG?dv;Bo;|~$ zY!>`EwK%IJxBd@&MXg;Q6z)pZJ*14cWFwqQ{v5MH{60nf?~UUr%EccQ=#O{=zODvS Pgq=|aLm);L#^C<|<i2IJ diff --git a/doc/LaTex/DDG4-Detector-Construction.png b/doc/LaTex/DDG4-Detector-Construction.png new file mode 100644 index 0000000000000000000000000000000000000000..57106ca0d0a598f7719a6b1bebc659e3f430084d GIT binary patch literal 45785 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
q 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 literal 0 HcmV?d00001 diff --git a/doc/LaTex/DDG4-User-Initialization.png b/doc/LaTex/DDG4-User-Initialization.png new file mode 100644 index 0000000000000000000000000000000000000000..ed26ba893124a6379140f59592bd61163aaaa0a9 GIT binary patch literal 25604 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 literal 0 HcmV?d00001 diff --git a/doc/LaTex/DDG4Manual-Components.tex b/doc/LaTex/DDG4Manual-Components.tex new file mode 100644 index 000000000..3fcbd78da --- /dev/null +++ b/doc/LaTex/DDG4Manual-Components.tex @@ -0,0 +1,703 @@ + +%============================================================================= +\section{Existing DDG4 components} +\label{sec:existing-ddg4-components} +%============================================================================= +\noindent +In the introduction the longterm goal was expressed, that with DDG4 users +should be able to pick components from a growing palette and connect the +selected components using the setup mechanisms described in +Section~\ref{sec:ddg4-implementation-setup}. + +\noindent +Such a palette based approach obviously depends on the availability of +documentation for existing components describing the properties +of each component and the interaction of each component within the \DDG +framework. + +\noindent +All components defer from the basic type \tts{Geant4Action}. This means +\bold{all} components have the \bold{default} properties described in the +table below: + +\vspace{0.5cm} +\noindent +\begin{tabular}{ l l p{9cm} } +\hline +Component Properties: & & \tts{default} \\ +\hline +\bold{OuputLevel} & [int] & Output level of the component to customize printouts \\ +\bold{Name} & [string] & Component name [read-only] \\ +\bold{Control} & [boolean] & Steering of the Geant4 Messenger creation \\ +\hline +\end{tabular} + + +\vspace{5cm} + +\begin{center} +{\large{\bf{ +\begin{tabular} {| p{15cm} |} +\hline\space \\ + +\noindent +{\underline{Important notice for developers:}} \\ + +\noindent +Since the documentation of developed components is VERY important, +please never forget to supply the corresponding documentation.\\ +\\ +\noindent +At least supply the minimal documentation ash shown below +in the appended examples for the "Simple" detector response and I/O +components. +\\ \space\hline +\end{tabular} +}}} +\end{center} +\clearpage + +%============================================================================= +\subsection{Generic Action Modules} +%============================================================================= + +%============================================================================= +\subsubsection{Geant4UIManager} +%============================================================================= +\noindent +The {\tt{Geant4UIManager}} handles interactivity aspects between Geant4, +its command handlers (i.e. terminal) and the various components the actions +interact. + +\noindent +The {\tt{Geant4UIManager}} is a component attached to the {\tt{Geant4Kernel}} +object. All properties of all {\tt{Geant4Action}} instances may be exported to +\tts{Geant4} messengers and {\em{may}} hence be accessible directly from +the \tts{Geant4} prompt. To export properties from any action, call the +{\tt{enableUI()}} method of the action. +\noindent +The callback signature is: \tts{void operator()(G4Event* event)}. + +\vspace{0.5cm} +\noindent +\begin{tabular}{ l p{10cm} } +\hline +\bold{Class name} & \tts{Geant4UIManager} \\ +\bold{File name} & \tts{DDG4/src/Geant4UIManager.cpp} \\ +\bold{Type} & \tts{Geant4Action} \\ +\hline +\bold{Component Properties:} & defaults apply \\ +\hline +\bold{SessionType} (string) & Session type (csh, tcsh, etc. \\ +\bold{SetupUI} (string) & Name of the UI macro file \\ +\bold{SetupVIS} (string) & Name of the visualization macro file \\ +\bold{HaveVIS} (bool) & Flag to instantiate Vis manager + (def:false, unless VisSetup set) \\ +\bold{HaveUI} (bool) & Flag to instantiate UI (default=true) \\ +\end{tabular} + +%============================================================================= +\subsubsection{Geant4Random} +%============================================================================= +\noindent +Mini interface to the random generator of the application. +Necessary, that on every object creates its own instance, but accesses +the main instance available through the \tts{Geant4Context}. + +\noindent +This is mandatory to ensure reproducibility of the event generation +process. Particular objects may use a dependent generator from +an experiment framework like \tts{GAUDI}. + +\noindent +internally the engine factory mechanism of \tts{CLHEP} is used. Please refer +there within for valid engine names and the random seeding mechanism, +which may vary between different engines. + +\noindent +Any number of independent random objects may be created and used +in parallel. This however, is not advised to ensure reproducibility. + +\noindent +The first instance of the random action is automatically set +to be the \tts{Geant4} instance. If another instance should be used by +\tts{Geant4}, use \tts{setMainInstance(Geant4Random* ptr)} class method to +override this behavior. +Provision, steered by options, is taken to ensure the \tts{gRandom} +of \tts{ROOT} uses the same random number engine. + +\vspace{0.5cm} +\noindent +\begin{tabular}{ l p{10cm} } +\hline +\bold{Class name} & \tts{Geant4Random} \\ +\bold{File name} & \tts{DDG4/src/Geant4Random.cpp} \\ +\bold{Type} & \tts{Geant4Random} \\ +\hline +\bold{Component Properties:} & defaults apply \\ +\hline +\bold{File} (string) & File name if initialized from file. \\ + & If set, engine name and seeds are ignored \\ +\bold{Engine} (string) & Engine type name. \\ + & All engines defined in the + \tts{CLHEP::EngineFactory} class are available. + If no type is supplied the engine from the + HepRandom generator instance is taken. \\ +\bold{Seed} (long) & Initial random seed. \\ + & Default: 123456789. \\ + & If not ZERO terminated, termination is added. \\ +\bold{Replace\_gRandom} (bool) & Flag to replace the \tts{ROOT} \tts{gRandom} + instance with this random number engine. + This ensures \tts{ROOT} and \tts{Geant4} + use the same random number engine, hence + the same random sequence. + \\ +\end{tabular} + +\noindent +%============================================================================= +\subsection{Geant4UserInitialization Implementations} +%============================================================================= +\noindent +%============================================================================= +\subsubsection{Geant4PythonInitialization} +%============================================================================= +\noindent +Please see Section~\ref{sec:ddg4-multi-threading-python} +for an illustration of the usage. +The configuration by construction must be performed using setter-functions +rather than properties. + +\vspace{0.5cm} +\noindent +\begin{tabular}{ l p{10cm} } +\hline +\bold{Class name} & \tts{Geant4PythonInitialization} \\ +\bold{File name} & \tts{DDG4/src/python/Geant4PythonInitialization.cpp} \\ +\bold{Type} & \tts{Geant4Action} \\ +\hline +\bold{Component Properties:} & defaults apply \\ +\end{tabular} + +%============================================================================= +\subsubsection{Geant4PythonDetectorConstruction} +%============================================================================= +\noindent +Please see Section~\ref{sec:ddg4-multi-threading-python} +for an illustration of the usage. +The configuration by construction must be performed using setter-functions +rather than properties. + +\vspace{0.5cm} +\noindent +\begin{tabular}{ l p{10cm} } +\hline +\bold{Class name} & \tts{Geant4PythonDetectorConstruction} \\ +\bold{File name} & \tts{DDG4/src/python/Geant4PythonDetectorConstruction.cpp} \\ +\bold{Type} & \tts{Geant4Action} \\ +\hline +\bold{Component Properties:} & defaults apply \\ +\end{tabular} + +%============================================================================= +\subsection{Predefined Geant4 Physics List Objects} +%============================================================================= +\noindent +The physics list may be defined entirely data driven using the factory mechanism +using a variety of predefined objects. Though users are free to define private +physics lists, typically the predefined physics lists from \tts{Geant4} are used. + +\noindent +The inventory changes over time, new lists appear and obsolete lists are purged, +hence we will not list them explicitly here. +For the inventory of available physics lists, please refer to the implementation files: + +\noindent +\begin{itemize}\itemcompact +\item Inventory of predefined physics lists, which may be inherited:\\ +\detdesc{html/_geant4_physics_lists_8cpp_source.html} +{DDG4/plugins/Geant4PhysiscsLists.cpp} +\item Inventory of predefined physics constructors, which may be instantiated:\\ +\detdesc{html/_geant4_physics_constructors_8cpp_source.html} +{DDG4/plugins/Geant4PhysicsConstructors.cpp} +\item Inventory of predefined process constructors, which may be instantiated:\\ +\detdesc{html/_geant4_processes_8cpp_source.html} +{DDG4/plugins/Geant4Processes.cpp} +\item Inventory of predefined particle constructors, which may be instantiated:\\ +\detdesc{html/_geant4_particles_8cpp_source.html} +{DDG4/plugins/Geant4Particles.cpp} +\end{itemize} +\newpage + +%============================================================================= +\subsection{Geant4 Generation Action Modules} +%============================================================================= +\noindent +Here we discuss modules, which are intrinsically part of DDG4 and may be +attached to the {\tt{Geant4GeneratorActionSequence}}. + +%============================================================================= +\subsubsection{Base class: Geant4GeneratorAction} +%============================================================================= +\noindent +The \tts{Geant4GeneratorAction} is called for every event. +During the callback all particles are created which form the +microscopic kinematic action of the particle collision. +This input may either origin directly from an event generator program +or come from file. + +\noindent +The callback signature is: void operator()(G4Event* event) +\noindent +See also: +\detdesc{html/class_d_d4hep_1_1_simulation_1_1_geant4_generator_action.html} +{\tts{Geant4EventAction}} in the doxygen documentation. + +\vspace{0.5cm} +\noindent +\begin{tabular}{ l p{10cm} } +\hline +\bold{Class name} & \tts{Geant4GeneratorAction} \\ +\bold{File name} & \tts{DDG4/src/Geant4GeneratorAction.cpp} \\ +\bold{Type} & \tts{Geant4Action, Geant4GeneratorAction} \\ +\hline +\bold{Component Properties:} & defaults apply \\ +\hline +\end{tabular} + +%============================================================================= +\subsubsection{Geant4GeneratorActionSequence} +%============================================================================= +\noindent +The sequence dispatches the callbacks at the beginning +of an event to all registered \tts{Geant4GeneratorAction} members and all +registered callbacks. + +\noindent +See also: +\noindent +The {\tt{Geant4GeneratorActionSequence}} is directly steered by the single +instance of the {\tt{G4VUserPrimaryGeneratorAction}}, the Geant4 provided user hook, +which is private.\\ +See also: +\detdesc{html/struct_d_d4hep_1_1_simulation_1_1_geant4_user_generator_action.html} +{\tts{Geant4UserGeneratorAction}} and +\detdesc{html/class_d_d4hep_1_1_simulation_1_1_geant4_generator_action_sequence.html} +{\tts{Geant4GeneratorActionSequence}} in the doxygen documentation. + +\vspace{0.5cm} +\noindent +\begin{tabular}{ l p{10cm} } +\hline +\bold{Class name} & \tts{Geant4Geant4GeneratorActionSequence} \\ +\bold{File name} & \tts{DDG4/src/Geant4GeneratorAction.cpp} \\ +\bold{Type} & \tts{Geant4Action} \\ +\hline +\bold{Component Properties:} & defaults apply \\ +\hline +\end{tabular} + +%============================================================================= +\subsubsection{Geant4GeneratorActionInit} +%============================================================================= +\noindent +Initialize the Geant4Event objects to host generator and MC truth related information +Geant4 actions to collect the MC particle information. +This action should register all event extension required for the further +processing. We want to avoid that every client has to check if a given +object is present or not and than later install the required data structures. + +\noindent +These by default are extensions of type: +\begin{itemize}\itemcompact +\item \tts{Geant4PrimaryEvent} with multiple interaction sections, one for each interaction + This is the MAIN and ONLY information to feed Geant4 +\item \tts{Geant4PrimaryInteraction} containing the track/vertex information to create + the primary particles for Geant4. This record is build from the \tts{Geant4PrimaryEvent} + information. +\item \tts{Geant4PrimaryMap} a map of the \tts{Geant4Particles} converted to + \tts{G4PrimaryParticles} to ease particle handling later. +\item \tts{Geant4ParticleMap} the map of particles created during the event simulation. + This map has directly the correct particle offsets, so that the merging of + \tts{Geant4PrimaryInteraction} particles and the simulation particles is easy.... +\end{itemize} + +\vspace{0.5cm} +\noindent +\begin{tabular}{ l p{10cm} } +\hline +\bold{Class name} & \tts{Geant4Geant4GeneratorActionInit} \\ +\bold{File name} & \tts{DDG4/src/Geant4GeneratorActionInit.cpp} \\ +\bold{Type} & \tts{Geant4GeneratorAction} \\ +\hline +\bold{Component Properties:} & defaults apply \\ +\bold{Angle} (double) & \tts{Lorentz-Angle of boost} \\ +\bold{Mask} (int.bitmask) & \tts{Interaction identifier} \\ +\hline +\end{tabular} + +%============================================================================= +\subsubsection{Geant4InteractionVertexBoost} +%============================================================================= +\noindent +Boost the primary vertex and all particles outgoing the primary interaction in X-direction. + +\noindent +The interaction to be processed by the component is uniquely identified +by the {\bf{Mask}} property. Two primary interaction may not have the same +mask. + +\noindent +{\bold{Note [special use case]:}}\\ +If all contributing interactions of the one event \bold{registered +in the primary event at the time the action is called} should be handled by +one single component instance, set the {\bf{Mask}} property to {\bold{-1}}. + +\vspace{0.5cm} +\noindent +\begin{tabular}{ l p{10cm} } +\hline +\bold{Class name} & \tts{Geant4InteractionVertexBoost} \\ +\bold{File name} & \tts{DDG4/src/Geant4InteractionVertexBoost.cpp} \\ +\bold{Type} & \tts{Geant4GeneratorAction} \\ +\hline +\bold{Component Properties:} & defaults apply \\ +\bold{Angle} (double) & \tts{Lorentz-Angle of boost} \\ +\bold{Mask} (int.bitmask) & \tts{Interaction identifier} \\ +\hline +\end{tabular} + +%============================================================================= +\subsubsection{Geant4InteractionVertexSmear} +%============================================================================= +\noindent +Smear the primary vertex and all particles outgoing the primary interaction. + +\noindent +The interaction to be processed by the component is uniquely identified +by the {\bf{Mask}} property. Two primary interaction may not have the same +mask. + +\noindent +{\bold{Note [special use case]:}}\\ +If all contributing interactions of the one event \bold{registered +in the primary event at the time the action is called} should be handled by +one single component instance, set the {\bf{Mask}} property to {\bold{-1}}. + +\vspace{0.5cm} +\noindent +\begin{tabular}{ l p{10cm} } +\hline +\bold{Class name} & \tts{Geant4InteractionVertexSmear} \\ +\bold{File name} & \tts{DDG4/src/Geant4InteractionVertexSmear.cpp} \\ +\hline +\bold{Component Properties:} & defaults apply \\ +\bold{Offset} (PxPyPzEVector) & \tts{Smearing offset} \\ +\bold{Sigma} (PxPyPzEVector) & \tts{Sigma (Errors) on offset} \\ +\bold{Mask} (int.bitmask) & \tts{Interaction identifier} \\ +\hline +\end{tabular} + +%============================================================================= +\subsubsection{Geant4InteractionMerger} +%============================================================================= +\noindent +Merge all interactions created by each {\tt{Geant4InputAction}} into one single +record. The input records are taken from the item {\tt{Geant4PrimaryEvent}} +and are merged into the {\tt{Geant4PrimaryInteraction}} object attached to the +{\tt{Geant4Event}} event context. + +\vspace{0.5cm} +\noindent +\begin{tabular}{ l p{10cm} } +\hline +\bold{Class name} & \tts{Geant4InteractionMerger} \\ +\bold{File name} & \tts{DDG4/src/Geant4InteractionMerger.cpp} \\ +\bold{Type} & \tts{Geant4GeneratorAction} \\ +\hline +\bold{Component Properties:} & defaults apply \\ +\hline +\end{tabular} + +%============================================================================= +\subsubsection{Geant4PrimaryHandler} +%============================================================================= +\noindent +Convert the primary interaction (object {\tt{Geant4PrimaryInteraction}} object +attached to the {\tt{Geant4Event}} event context) and pass the result +to Geant4 for simulation. + +\vspace{0.5cm} +\noindent +\begin{tabular}{ l p{10cm} } +\hline +\bold{Class name} & \tts{Geant4PrimaryHandler} \\ +\bold{File name} & \tts{DDG4/src/Geant4PrimaryHandler.cpp} \\ +\bold{Type} & \tts{Geant4GeneratorAction} \\ +\hline +\bold{Component Properties:} & defaults apply \\ +\hline +\end{tabular} + +%============================================================================= +\subsubsection{Geant4ParticleGun} +%============================================================================= +\noindent +Implementation of a particle gun using Geant4Particles. + +\noindent +The {\tt{Geant4ParticleGun}} is a tool to shoot a number of +particles with identical properties into a given region of the +detector to be simulated. + +\noindent +The particle gun is a input source like any other and participates +in the general input stage merging process like any other input +e.g. from file. Hence, there may be several particle guns present +each generating it's own primary vertex. Use the mask property to +ensure each gun generates it's own, well identified primary vertex. + +\noindent +There is one 'user lazyness' support though: +If there is only one particle gun in use, the property 'Standalone', +which by default is set to true invokes the interaction merging and the +Geant4 primary generation directly. + +\noindent +The interaction to be created by the component is uniquely identified +by the {\bf{Mask}} property. Two primary interaction may not have the same +mask. + +\vspace{0.5cm} +\noindent +\begin{tabular}{ l p{10cm} } +\hline +\bold{Class name} & \tts{Geant4PrimaryHandler} \\ +\bold{File name} & \tts{DDG4/src/Geant4PrimaryHandler.cpp} \\ +\bold{Type} & \tts{Geant4GeneratorAction} \\ +\hline +Component Properties: & default \\ +\bold{particle} (string) & Particle type to be shot \\ +\bold{energy} (double) & Particle energy in $MeV$ \\ +\bold{position} (XYZVector) & Pole position of the generated particles in $mm$\\ +\bold{direction} (XYZVector) & Momentum direction of the generated particles\\ +\bold{isotrop} (bool) & Isotropic particle directions in space. \\ +\bold{Mask} (int.bitmask) & Interaction identifier \\ +\bold{Standalone} (bool) & Setup for standalone execution \\ + & including interaction merging etc. \\ +\hline +\end{tabular} + +%============================================================================= +\subsubsection{Geant4ParticleHandler} +%============================================================================= +\noindent +Extract the relevant particle information during the simulation step. + +\noindent +This procedure works as follows: +\begin{itemize}\itemcompact +\item At the beginning of the event generation the object registers itself as + Monte-Carlo truth handler to the event context. +\item At the begin of each track action a particle candidate is created and filled + with all properties known at this time. +\item At each stepping action a flag is set if the step produced secondaries. +\item Sensitive detectors call the MC truth handler if a hit was created. + This fact is remembered. +\item At the end of the tracking action a first decision is taken if the candidate is to be + kept for the final record. +\item At the end of the event action finally all particles are reduced to the + final record. This logic can be overridden by a user handler to be attached. +\end{itemize} +\noindent +Any of these actions may be intercepted by a {\tt{Geant4UserParticleHandler}} +attached to the particle handler. +See class {\tt{Geant4UserParticleHandler}} for details. + +\vspace{0.5cm} +\noindent +\begin{tabular}{ l p{9cm} } +\hline +\bold{Class name} & \tts{Geant4ParticleHandler} \\ +\bold{File name} & \tts{DDG4/src/Geant4ParticleHandler.cpp} \\ +\bold{Type} & \tts{Geant4GeneratorAction} \\ +\hline +\bold{Component Properties:} & defaults apply \\ +\bold{KeepAllParticles} (bool) & Flag to keep entire particle record without any reduction. + This may result in a huge output record. \\ +\bold{SaveProcesses} (vector(string)) & Array of Geant4 process names, + which products and parent should NOT be reduced.\\ +\bold{MinimalKineticEnergy} (double) & Minimal energy below which particles should be + ignored unless other criteria + (Process, created hits, etc) apply.\\ +\hline +\end{tabular} +\newpage + +%============================================================================= +\subsection{Geant4 Event Action Modules} +%============================================================================= +\noindent + +%============================================================================= +\subsubsection{Base class: Geant4EventAction} +%============================================================================= +\noindent +The EventAction is called for every event. + +\noindent +This class is the base class for all user actions, which have +to hook into the begin- and end-of-event actions. +Typical use cases are the collection/computation of event +related properties. + +\noindent +Examples of this functionality may include for example: +\begin{itemize}\itemcompact +\item Reset variables summing event related information in the + begin-event callback. +\item Monitoring activities such as filling histograms + from hits collected during the end-event action. +\end{itemize} +See also: +\detdesc{html/class_d_d4hep_1_1_simulation_1_1_geant4_event_action.html} +{\tts{Geant4EventAction}} in the doxygen documentation. + +\vspace{0.5cm} +\noindent +\begin{tabular}{ l p{10cm} } +\hline +\bold{Class name} & \tts{Geant4EventAction} \\ +\bold{File name} & \tts{DDG4/src/Geant4EventAction.cpp} \\ +\bold{Type} & \tts{Geant4EventAction} \\ +\hline +\bold{Component Properties:} & defaults apply \\ +\hline +\end{tabular} + +%============================================================================= +\subsubsection{Geant4EventActionSequence} +%============================================================================= +\noindent + +\noindent +The {\tt{Geant4EventActionSequence}} is directly steered by the single +instance of the {\tt{G4UserEventAction}}, the Geant4 provided user hook, +which is private.\\ +See also: +\detdesc{html/struct_d_d4hep_1_1_simulation_1_1_geant4_user_event_action.html} +{\tts{Geant4UserEventAction}} in the doxygen documentation. + +\vspace{0.5cm} +\noindent +\begin{tabular}{ l p{10cm} } +\hline +\bold{Class name} & \tts{Geant4EventAction} \\ +\bold{File name} & \tts{DDG4/src/Geant4EventAction.cpp} \\ +\bold{Type} & \tts{Geant4EventAction} \\ +\hline +\bold{Component Properties:} & defaults apply \\ +\hline +\end{tabular} + +%============================================================================= +\subsubsection{Geant4ParticlePrint} +%============================================================================= +\noindent +Geant4Action to print MC particle information. + +\vspace{0.5cm} +\noindent +\begin{tabular}{ l p{10cm} } +\hline +\bold{Class name} & \tts{Geant4ParticlePrint} \\ +\bold{File name} & \tts{DDG4/src/Geant4ParticlePrint.cpp} \\ +\bold{Type} & \tts{Geant4EventAction} \\ +\hline +\bold{Component Properties:} & defaults apply \\ +\bold{OutputType} (bool) & Flag to steer output type. \\ + & 1: Print table of particles. \\ + & 2: Print table of particles. \\ + & 3: Print table and tree of particles. \\ +\bold{PrintHits} & Print associated hits to every particle (big output!)\\ +\hline +\end{tabular} +\newpage + + +%============================================================================= +\subsection{Sensitive Detectors} +%============================================================================= +\noindent + +%============================================================================= +\subsubsection{Geant4TrackerAction} +%============================================================================= +\noindent +Simple sensitive detector for tracking detectors. These trackers create one +single hit collection. The created hits may be written out with the output +modules described in Section~\ref{sec:ddg4-components-IO-ROOT-simple} +and~\ref{sec:ddg4-components-IO-LCIO-simple}. \\ +The basic specifications are: + +\vspace{0.5cm} +\noindent +\begin{tabular}{ l p{10cm} } +\hline +Basics: & \\ +\hline +\bold{Class name} & \tts{Geant4SensitiveAction<Geant4Tracker>} \\ +\bold{File name} & \tts{DDG4/plugins/Geant4SDActions.cpp} \\ +\bold{Hit collection} & \tts{Name of the readout object} \\ +\bold{Hit class} & \tts{Geant4Tracker::Hit} \\ +\bold{File name} & \tts{DDG4/include/Geant4Data.h} \\ +\hline +\bold{Component Properties:} & defaults apply \\ +\hline +\end{tabular} + +%============================================================================= +\subsubsection{Geant4CalorimeterAction} +%============================================================================= +\noindent +Simple sensitive detector for calorimeters. The sensitive detector creates one +single hit collection. The created hits may be written out with the output +modules described in Section~\ref{sec:ddg4-components-IO-ROOT-simple} +and~\ref{sec:ddg4-components-IO-LCIO-simple}. \\ +The basic specifications are: + +\vspace{0.5cm} +\noindent +\begin{tabular}{ l p{10cm} } +\hline +Basics: & \\ +\hline +\bold{Class name} & \tts{Geant4SensitiveAction<Geant4Calorimeter>} \\ +\bold{File name} & \tts{DDG4/plugins/Geant4SDActions.cpp} \\ +\bold{Hit collection} & \tts{Name of the readout object} \\ +\bold{Hit class} & \tts{Geant4Calorimeter::Hit} \\ +\bold{File name} & \tts{DDG4/include/Geant4Data.h} \\ +\hline +\bold{Component Properties:} & defaults apply \\ +\hline +\end{tabular} + +\newpage + +%============================================================================= +\subsection{I/O Components} +%============================================================================= +\noindent + +%============================================================================= +\subsubsection{ROOT Output "Simple"} +\label{sec:ddg4-components-IO-ROOT-simple} +%============================================================================= +\noindent + +%============================================================================= +\subsubsection{LCIO Output "Simple"} +\label{sec:ddg4-components-IO-LCIO-simple} +%============================================================================= +\noindent + diff --git a/doc/LaTex/DDG4Manual-HighLevel.tex b/doc/LaTex/DDG4Manual-HighLevel.tex new file mode 100644 index 000000000..3122c3491 --- /dev/null +++ b/doc/LaTex/DDG4Manual-HighLevel.tex @@ -0,0 +1,160 @@ + +%============================================================================= +\section{Higher Level Components} +\label{sec:ddg4-implementation-higher-level-components} +%============================================================================= +\noindent +Layered components, which base on the general framework implement higher +level functionality such as the handling of Monte-Carlo truth associations +between simulated energy deposits and the corresponding particles or the +generic handling of input to the simulation. + +\noindent +To generalize such common behavior it is mandatory that the participating +components collaborate and understand the data components they commonly access. +The data model is shown in Figure~\ref{fig:ddg4-event-data-model}. +\begin{figure}[t] + \begin{center} + \includegraphics[width=120mm] {DDG4_event_data_model.png} + \caption{The DDG4 event data model.} + \label{fig:ddg4-event-data-model} + \end{center} +\end{figure} + +\noindent +{\bf{Please note}}, that this data model is by no means to be made persistent +and used for physics user analysis. This model is optimized to support +the simulation process and the necessary user actions to handle MC truth, +to easily and relatively fast look up and modify parent-daughter +relationships etc. This choice is based on the assumption, that the +additional overhead to convert particles at the input/output +stage is small compared to the actual resource consumption of Geant4 +to simulate the proper detector response. +On the other hand this choice has numerous advantages: +\begin{itemize}\itemcompact +\item Accepting the fact to convert input records allows to adapt + DDG4 in a simple and flexible manner to any input format. Currently + supported is the input from raw {\tts{LCIO}} files, {\tts{StdHep}} + records using {\tts{LCIO}} and {\tts{ASCII}} files using the + {\tts{HEPEvt}} format. +\item Similarly as for the input stage, also the output format + can be freely chosen by the clients. +\item No assumptions was made concerning the structure to store + information from energy deposits. Any information extract produced + by the sensitive actions can be adapted provided at the output + stage the proper conversion mechanism is present. The sensitive + detectors provided by DDG4 are {\bf{optional only and by no means mandatory}}. + User defined classes may be provided at any time. Appropriate tools + to extract MC truth information is provided at the output stage. +\item The modular approach of the action sequences described + in~\ref{sec:ddg4-user-manual-implementation-geant4action-sequences} + allows to easily extend the generation sequence to handle multiple + simultaneous interactions, event overlay or spillover response + very easily~\footnote{The handling of spillover is only possible + if during the digitization step the correct signal shape corresponding + to the shift of signal creation is taken into account.} +\end{itemize} + +\noindent +In section~\ref{sec:ddg4-implementation-input-handling} the generic mechanism +of input data handling is described. \\ +In section~\ref{sec:ddg4-implementation-particle-handling} the MC truth +handling is discussed. \\ +In section~\ref{sec:ddg4-implementation-output-handling} we describe the +output mechanism. +\newpage + +%============================================================================= +\subsection{Input Data Handling} +\label{sec:ddg4-implementation-input-handling} +%============================================================================= +\begin{figure}[t] + \begin{center} + \includegraphics[width=160mm] {DDG4_input_stage.png} + \caption{The generic handling of input sources to DDG4.} + \label{fig:ddg4-input-stage} + \end{center} +\end{figure} + +\noindent +Input handling has several stages and uses several modules: +\begin{itemize}\itemcompact +\item First the data structures \tts{Geant4PrimaryEvent}, + \tts{Geant4PrimaryInteraction} and \tts{Geant4\-Primary}\-\tts{Map} are initialized + by the action \tts{Geant4GenerationActionInit} + and attached to the {\tts{Geant4Event}} structure. +\item The initialization is then followed by any number of input modules. + Typically each input module add one interaction. Each interaction has a + unique identifier, which is propagated later to all particles. Hence all + primary particles can later be unambiguously be correlated to one of the + initial interactions. + Each instance of a \tts{Geant4InputAction} creates and fills a separate instance + of a \tts{Geant4PrimaryInteraction}. + In section~\ref{sec:ddg4-implementation-geant4inputaction} the functionality and + extensions are discussed in more detail. +\item All individual primary interactions are then merged to only single record + using the \tts{Geant4}\-\tts{Interaction}\-\tts{Merger} component. + This components fills the \tts{Geant4PrimaryInteraction} registered to the + \tts{Geant4Event}, which serves as input record for the next component, +\item the \tts{Geant4PrimaryHandler}. The primary handler creates the proper + \tts{G4PrimaryParticle} and \tts{G4PrimaryVertex} objects passed to \tts{Geant4}. + After this step all event related user interaction with Geant4 has completed, + and the detector simulation may commence. +\end{itemize} +All modules used are subclasses of the {\tts{Geant4}\-\tts{Generator}\-\tts{Action}} and must be +added to the \tts{Geant4}\-\tts{Generator}\-\tts{Action}\-\tts{Sequence} as described +in~\ref{sec:ddg4-user-manual-implementation-geant4action-sequences}. + +\noindent +An object of type {\tts{Geant4PrimaryEvent}} exists exactly once for +every event to be simulated. The empty {\tts{Geant4PrimaryEvent}} is created by the +{\tts{Geant4GenerationActionInit}} component. All higher level components may then +access the {\tts{Geant4PrimaryEvent}} object and subsequently an individual interaction +from the {\tts{Geant4Context}} using the extension mechanism as shown in +the following code: +\begin{code} +/// Event generation action callback +void SomeGenerationComponent::operator()(G4Event* event) { + /// Access the primary event object from the context + Geant4PrimaryEvent* evt = context()->event().extension<Geant4PrimaryEvent>(); + /// Access the container of interactions + const std::vector<Geant4PrimaryEvent::Interaction*>& inter = evt->interactions(); + /// Access one single interaction to be manipulated by this component + Geant4PrimaryInteraction* evt->get(m_myInteraction_identifier); + .... +\end{code} +{\bf{Please note:}} To keep components simple, each component should +only act on one interaction the component has to uniquely identify. +The identification may be implemented by e.g. an access mask passed to the +component as a property. + +%============================================================================= +\subsection{Anatomy of the Input Action} +\label{sec:ddg4-implementation-geant4inputaction} +%============================================================================= +\noindent +One input action fills one primary interaction. +\tts{Geant4InputAction} instances may be followed by decorators, which +allow to to smear primary vertex (\tts{Geant4InteractionVertexSmear}) or +to boost the primary vertex \tts{Geant4InteractionVertexBoost} and all +related particles/vertices. + + +Please note, that a possible reduction of particles in +the output record may break this unambiguous relationship between +"hits" and particles. +...... + +%============================================================================= +\subsection{Monte-Carlo Truth Handling} +\label{sec:ddg4-implementation-particle-handling} +%============================================================================= +...... +\newpage + +%============================================================================= +\section{Output Data Handling} +\label{sec:ddg4-implementation-output-handling} +%============================================================================= +...... +\newpage diff --git a/doc/LaTex/DDG4Manual-Implementation.tex b/doc/LaTex/DDG4Manual-Implementation.tex new file mode 100644 index 000000000..b66d773c9 --- /dev/null +++ b/doc/LaTex/DDG4Manual-Implementation.tex @@ -0,0 +1,699 @@ + +%============================================================================= +\section{DDG4 Implementation} +\label{sec:ddg4-user-manual-implementation} +%============================================================================= + +\noindent +A basic design criteria of the a \DDG simulation application was to +process any user defined hook provided by Geant4 as a series of algorithmic +procedures, which could be implemented either using inheritance or by +a callback mechanism registering functions fulfilling a given signature. +Such sequences are provided for all actions mentioned in the list in +Section~\ref{sec:ddg4-user-manual-geant4-interface} as well as for +the callbacks to sensitive detectors. + +\noindent +The callback mechanism was introduced to allow for weak coupling between +the various actions. For example could an action performing monitoring +using histograms at the event level initialize or reset its histograms +at the start/end of each run. To do so, clearly a callback at the +start/end of a run would be necessary. + +\noindent +In the following sections a flexible and extensible interface to hooks +of Geant4 is discussed starting with the description of the basic +components \tts{Geant4Kernel} and \tts{Geant4Action} followed by the +implementation of the relevant specializations. +The specializations exposed are sequences of such actions, +which also call registered objects. +In later section the configuration and the combination of these components +forming a functional simulation application is presented. + +%============================================================================= +\subsection{The Application Core Object: Geant4Kernel} +\label{sec:ddg4-user-manual-implementation-geant4kernel} +%============================================================================= + +\noindent +The kernel object is the central context of a \DDG simulation application and +gives all clients access to the user hooks (see Figure~\ref{fig:ddg4-geant4-kernel}). +All Geant4 callback structures are exposed so that clients can easily +objects implementing the required interface or register callbacks with the +correct signature. Each of these action sequences is connected to an instance +of a Geant4 provided callback structure as it is shown in +Figure~\ref{fig:ddg4-g4runmanager-anatomy}. +\begin{figure}[h] + \begin{center} + \includegraphics[height=65mm] {DDG4-Geant4Kernel.png} + \caption{The main application object gives access to all sequencing actions + in a \DDG4 application. Sequence actions are only container of user actions + calling one user action after the other. Optionally single callbacks may + be registered to a user action.} + \label{fig:ddg4-geant4-kernel} + \end{center} +\end{figure} + +%============================================================================= +\subsection{Action Sequences} +\label{sec:ddg4-user-manual-implementation-geant4action-sequences} +%============================================================================= + +\noindent +As shown in + +%============================================================================= +\subsection{The Base Class of DDG4 Actions: Geant4Action} +\label{sec:ddg4-user-manual-implementation-geant4action-base} +%============================================================================= + +\noindent +The class \tts{Geant4Action} is a common component interface providing +the basic interface to the framework to +\begin{itemize}\itemcompact +\item configure the component using a property mechanism +\item provide an appropriate interface to Geant4 interactivity. The interactivity + included a generic way to change and access properties from the Geant4 UI + prompt as well as executing registered commands. +\item As shown in Figure~\ref{fig:ddg4-implementation-geant4-action}, the + base class also provides to its sub-class a reference to the \tts{Geant4Kernel} + objects through the \tts{Geant4Context}. +\end{itemize} +The \tts{Geant4Action} is a named entity and can be uniquely identified within +a sequence attached to one Geant4 user callback. +%============================================================================= +\begin{figure}[h] + \begin{center} + \includegraphics[height=30mm] {DDG4-Geant4Action.png} + \caption{The design of the common base class \tts{Geant4Action}.} + \label{fig:ddg4-implementation-geant4-action} + \end{center} +\end{figure} + +\noindent +\DDG knows two types of actions: global actions and anonymous actions. +Global actions are accessible externally from the \tts{Geant4Kernel} instance. +Global actions are also re-usable and hence may be contribute to several +action sequences (see the following chapters for details). Global actions +are uniquely identified by their name. +Anonymous actions are known only within one sequence and normally +are not shared between sequences. + +%============================================================================= +\subsubsection{The Properties of \bold{Geant4Action} Instances} +\label{sec:ddg4-implementation-geant4-action-properties} +%============================================================================= + +\noindent +Nearly any subclass of a \tts{Geant4Action} needs a flexible configuration +in order to be reused, modified etc. The implementation of the mechanism +uses a very flexible value conversion mechanism using \tts{boost::spirit}, +which support also conversions between unrelated types provided a dictionary +is present. + +\noindent +Properties are supposed to be member variables of a given action object. +To publish a property it needs to be declared in the constructor as shown here: +\begin{unnumberedcode} + declareProperty("OutputLevel", m_outputLevel = INFO); + declareProperty("Control", m_needsControl = false); +\end{unnumberedcode} +The internal setup of the \tts{Geant4Action} objects then ensure that +all declared properties will be set after the object construction to the +values set in the setup file. + +\noindent +\bold{Note:} Because the values can only be set \bold{after} the object +was constructed, the actual values may not be used in the constructor +of any base or sub-class. + +%============================================================================= +\subsection{Geant4 Action Sequences} +\label{sec:ddg4-user-manual-implementation-geant4action-sequences} +%============================================================================= + +\noindent +All Geant4 user hooks are realized as action sequences. As shown in +Figure~\ref{fig:ddg4-geant4-kernel} these sequences are accessible to the user, +who may attach specialized actions to the different action sequences. This +allows a flexible handing of specialized user actions e.g. to dynamically +add monitoring actions filling histograms or to implement alternative hit +creation mechanism in a sensitive detector for detailed detector studies. +Figure~\ref{fig:ddg4-implementation-sequence-calls} shows the schematic +call structure of an example {\tt{Geant4TrackingActionSequence}}:\\ +\begin{figure}[h] + \begin{center} + \includegraphics[width=150mm] {DDG4-TrackingActionCalls.png} + \caption{The design of the tracking action sequence. Specialized + tracking action objects inherit from the \tts{Geant4TrackingAction} + object and must be attached to the sequence.} + \label{fig:ddg4-implementation-sequence-calls} + \end{center} +\end{figure} + +\noindent +Geant4 calls the function from the virtual interface (\tts{G4UserTrackingAction}), +which is realised by the \tts{Geant4UserTrackingAction} with the single purpose to +propagate the call to the action sequence, which then calls all registered clients +of type \tts{Geant4TrackingAction}. + +\noindent +The main action sequences have a fixed name. These are +\begin{itemize} + +\item The \bold{RunAction} attached to the \tts{G4UserRunAction}, implemented + by the \tts{Geant4RunActionSequence} class and is called at the start and the end of + every run (beamOn). Members of the \tts{Geant4RunActionSequence} are of type + \tts{Geant4RunAction} and receive the callbacks by overloading the two routines: +\begin{unnumberedcode} +/// begin-of-run callback +virtual void begin(const G4Run* run); +/// End-of-run callback +virtual void end(const G4Run* run); +\end{unnumberedcode} + or register a callback with the signature {\tts{void (T::*)(const G4Run*)}} + either to receive begin-of-run or end-or-calls using the methods: +\begin{unnumberedcode} +/// Register begin-of-run callback. Types Q and T must be polymorph! +template <typename Q, typename T> void callAtBegin(Q* p, void (T::*f)(const G4Run*)); +/// Register end-of-run callback. Types Q and T must be polymorph! +template <typename Q, typename T> void callAtEnd(Q* p, void (T::*f)(const G4Run*)); +\end{unnumberedcode} + of the \tts{Geant4RunActionSequence} from the \tts{Geant4Context} object. + + +\item The \bold{EventAction} attached to the \tts{G4UserEventAction}, implemented + by the \tts{EventActionSequence} class and is called at the start and the end of + every event. Members of the \tts{Geant4EventActionSequence} are of type + \tts{Geant4EventAction} and receive the callbacks by overloading the two routines: +\begin{unnumberedcode} +/// Begin-of-event callback +virtual void begin(const G4Event* event); +/// End-of-event callback +virtual void end(const G4Event* event); +\end{unnumberedcode} + or register a callback with the signature {\tts{void (T::*)(const G4Event*)}} + either to receive begin-of-run or end-or-calls using the methods: +\begin{unnumberedcode} +/// Register begin-of-event callback +template <typename Q, typename T> void callAtBegin(Q* p, void (T::*f)(const G4Event*)); +/// Register end-of-event callback +template <typename Q, typename T> void callAtEnd(Q* p, void (T::*f)(const G4Event*)); +\end{unnumberedcode} + of the \tts{Geant4EventActionSequence} from the \tts{Geant4Context} object. + + +\item The \bold{GeneratorAction} attached to the \tts{G4VUserPrimaryGeneratorAction}, implemented + by the \tts{Geant4GeneratorActionSequence} class and is called at the start of + every event and provided all initial tracks from the Monte-Carlo generator. + Members of the \tts{Geant4GeneratorActionSequence} are of type + \tts{Geant4EventAction} and receive the callbacks by overloading the member function: +\begin{unnumberedcode} +/// Callback to generate primary particles +virtual void operator()(G4Event* event); +\end{unnumberedcode} + or register a callback with the signature {\tts{void (T::*)(G4Event*)}} + to receive calls using the method: +\begin{unnumberedcode} +/// Register primary particle generation callback. +template <typename Q, typename T> void call(Q* p, void (T::*f)(G4Event*)); +\end{unnumberedcode} + of the \tts{Geant4GeneratorActionSequence} from the \tts{Geant4Context} object. + +\end{itemize} +\begin{figure}[t] + \begin{center} + \includegraphics[width=160mm] {DDG4-TrackingAction.png} + \caption{The design of the tracking action sequence. Specialized + tracking action objects inherit from the \tts{Geant4TrackingAction} + object and must be attached to the sequence.} + \label{fig:ddg4-implementation-tracking-action} + \end{center} +\end{figure} + +\begin{itemize} +\item The \bold{TrackingAction} attached to the \tts{G4UserTrackingAction}, + implemented by the \tts{Geant4-} \tts{Tracking\-Action\-Sequence} class + and is called at the start and the end of tracking one single particle + trace through the material of the detector. + Members of the \tts{Geant4\-Tracking\-ActionSequence} are of type + \tts{Geant4TrackingAction} and receive the callbacks by overloading the member function: +\begin{unnumberedcode} +/// Pre-tracking action callback +virtual void begin(const G4Track* trk); +/// Post-tracking action callback +virtual void end(const G4Track* trk); +\end{unnumberedcode} + or register a callback with the signature {\tts{void (T::*)(const G4Step*, G4SteppingManager*)}} + to receive calls using the method: +\begin{unnumberedcode} +/// Register Pre-track action callback +template <typename Q, typename T> void callAtBegin(Q* p, void (T::*f)(const G4Track*)); +/// Register Post-track action callback +template <typename Q, typename T> void callAtEnd(Q* p, void (T::*f)(const G4Track*)); +\end{unnumberedcode} +Figure~\ref{fig:ddg4-implementation-tracking-action} show as an example +the design (class-diagram) of the \tts{Geant4TrackingAction}. + + +\item The \bold{SteppingAction} attached to the \tts{G4UserSteppingAction}, implemented + by the \tts{Geant4-} \tts{SteppingActionSequence} class and is called for each + step when tracking a particle. + Members of the \tts{Geant4SteppingActionSequence} are of type + \tts{Geant4SteppingAction} and receive the callbacks by overloading the member function: +\begin{unnumberedcode} +/// User stepping callback +virtual void operator()(const G4Step* step, G4SteppingManager* mgr); +\end{unnumberedcode} + or register a callback with the signature {\tts{void (T::*)(const G4Step*, G4SteppingManager*)}} + to receive calls using the method: +\begin{unnumberedcode} +/// Register stepping action callback. +template <typename Q, typename T> void call(Q* p, void (T::*f)(const G4Step*, + G4SteppingManager*)); +\end{unnumberedcode} + + +\item The \bold{StackingAction} attached to the + {\tts{G4UserStackingAction}}, implemented by the \tts{Geant4-}\\ + \tts{StackingActionSequence} class. + Members of the \tts{Geant4StackingActionSequence} are of type\\ + \detdesc{html/class_d_d4hep_1_1_simulation_1_1_geant4_stacking_action.html} + {\tts{Geant4StackingAction}} and receive the callbacks by overloading the member functions: +\begin{unnumberedcode} +/// New-stage callback +virtual void newStage(); +/// Preparation callback +virtual void prepare(); +\end{unnumberedcode} + or register a callback with the signature {\tts{void (T::*)()}} + to receive calls using the method: +\begin{unnumberedcode} +/// Register begin-of-event callback. Types Q and T must be polymorph! +template <typename T> void callAtNewStage(T* p, void (T::*f)()); +/// Register end-of-event callback. Types Q and T must be polymorph! +template <typename T> void callAtPrepare(T* p, void (T::*f)()); +\end{unnumberedcode} +\end{itemize} + +\noindent +All sequence types support the method \tts{void adopt(T* member\_reference)} +to add the members. Once adopted, the sequence takes ownership and manages +the member. The design of all sequences is very similar. + +%============================================================================= +\subsection{Sensitive Detectors} +\label{sec:ddg4-user-manual-geant4sensitivedetectors} +%============================================================================= + +\noindent +Sensitive detectors are associated by the detector designers to all active +materials, which would produce a signal which can be read out. In Geant4 this concept +is realized by using a base class \tts{G4VSensitiveDetector}. +The mandate of a sensitive detector is the construction of hit objects +using information from steps along a particle track. +The \tts{G4VSensitiveDetector} receives +a callback at the begin and the end of the event processing and at each step +inside the active material whenever an energy deposition occurred. + +\begin{figure}[t] + \begin{center} + \includegraphics[height=110mm] {DDG4-Sensitive-detector.png} + \caption{The sensitive detector design. The actual energy deposits are + collected in user defined subclasses of the \tts{Geant4Sensitive}. + Here, as an example possible actions called \tts{TrackerHitCollector}, + \tts{TrackerDetailedHitCollector} and \tts{TrackerHitMonitor} are shown.} + \label{fig:ddg4-implementation-sensitive-detector} + \end{center} +\end{figure} + +\noindent +The sensitive actions do not necessarily deal only the collection of energy +deposits, but could also be used to simply monitor the performance of the +active element e.g. by producing histograms of the absolute value or the +spacial distribution of the depositions. + +\noindent +Within \DDG the concept of sensitive detectors is implemented as a +configurable action sequence of type +\detdesc{html/class_d_d4hep_1_1_simulation_1_1_geant4_sens_det_action_sequence.html} +{\tts{Geant4SensDetActionSequence}} +calling members of the type +\detdesc{html/struct_d_d4hep_1_1_simulation_1_1_geant4_sensitive.html} +{\tts{Geant4Sensitive}} as shown in +Figure~\ref{fig:ddg4-implementation-sensitive-detector}. The actual processing +part of such a sensitive action is only called if the and of a set of +required filters of type \tts{Geant4Filter} is positive (see also +section~\ref{sec:ddg4-implementation-sensitive-detector-filters}). No filter +is also positive. Possible filters are e.g. particle filters, which ignore the +sensitive detector action if the particle is a \tts{geantino} or if the +energy deposit is below a given threshold. + +\noindent +Objects of type \tts{Geant4Sensitive} receive the callbacks by overloading the +member function: +\begin{unnumberedcode} + /// Method invoked at the beginning of each event. + virtual void begin(G4HCofThisEvent* hce); + /// Method invoked at the end of each event. + virtual void end(G4HCofThisEvent* hce); + /// Method for generating hit(s) using the information of G4Step object. + virtual bool process(G4Step* step, G4TouchableHistory* history); + /// Method invoked if the event was aborted. + virtual void clear(G4HCofThisEvent* hce); +\end{unnumberedcode} +or register a callback with the signature {\tts{void (T::*)(G4HCofThisEvent*)}} +respectively {\tts{void (T::*)(G4Step*, G4TouchableHistory*)}} +to receive callbacks using the methods: +\begin{unnumberedcode} + /// Register begin-of-event callback + template <typename T> void callAtBegin(T* p, void (T::*f)(G4HCofThisEvent*)); + /// Register end-of-event callback + template <typename T> void callAtEnd(T* p, void (T::*f)(G4HCofThisEvent*)); + /// Register process-hit callback + template <typename T> void callAtProcess(T* p, void (T::*f)(G4Step*, G4TouchableHistory*)); + /// Register clear callback + template <typename T> void callAtClear(T* p, void (T::*f)(G4HCofThisEvent*)); +\end{unnumberedcode} +Please refer to the Geant4 Applications manual from the Geant4 web page for +further details about the concept of sensitive detectors. + +%============================================================================= +\subsubsection{Helpers of Sensitive Detectors: The Geant4VolumeManager} +\label{sec:ddg4-user-manual-geant4volumemanager}%============================================================================= + +\noindent +Sooner or later, when a hit is created in a sensitive placed volume, the +hit must be associated with this volume. For this purpose \DDhep provides +the concept of the \tts{VolumeManager}, which identifies placed volumes uniquely +by a 64-bit identifier, the $CellID$. This mechanism allows to quickly +retrieve a given volume given the hit data containing the $CellID$. +The $CellID$ is a very compressed representation for any element in the +hierarchy of placed volumes to the sensitive volume in question. + +\noindent +During the simulation the reverse mechanism must be applied: Geant4 provides +the hierarchy of \tts{G4PhysicalVolumes} to the hit location and the local coordinates +of the hit within the sensitive volume. Hence to determine the volume identifier +is essential to store hits so that they can be later accessed and processed efficiently. +This mechanism is provided by the \tts{Geant4VolumeManager}. Clients typically do not +interact with this object, any access necessary is provided by the +\tts{Geant4Sensitive} action: +\begin{unnumberedcode} + /// Method for generating hit(s) using the information of G4Step object. + bool MySensitiveAction:process(G4Step* step,G4TouchableHistory* /*hist*/ ) { + ... + Hit* hit = new Hit(); + // *** Retrieve the cellID *** + hit->cellID = cellID(step); + ... + } +\end{unnumberedcode} +The call is realized using a member function provided by the +\tts{Geant4Sensitive} action: +\begin{unnumberedcode} + /// Returns the cellID of the sensitive volume corresponding to the step + /** The CellID is the VolumeID + the local coordinates of the sensitive area. + * Calculated by combining the VolIDS of the complete geometry path (Geant4TouchableHistory) + * from the current sensitive volume to the world volume + */ + long long int cellID(G4Step* step); +\end{unnumberedcode} + +\noindent +\bold{Note:}\\ +The \tts{Geant4VolumeManager} functionality is not for free! It requires that + + +\noindent +-- match Geant4 volume with TGeo volume + +%============================================================================= +\subsubsection{DDG4 Intrinsic Sensitive Detectors} +%============================================================================= +\noindent +Currently there are two generic sensitive detectors implemented in DDG4: +\begin{itemize}\itemcompact +\item The \tts{Geant4TrackerAction}, which may be used to handle tracking devices. + This sensitive detector produces one hit for every energy deposition of Geant4 + i.e. for every callback to +\begin{unnumberedcode} + /// Method for generating hit(s) using the information of G4Step object. + virtual bool process(G4Step* step, G4TouchableHistory* history); +\end{unnumberedcode} + See the implementation file + \detdesc{html/_geant4_s_d_actions_8cpp_source.html}{DDG4/plugins/Geant4SDAction.cpp} + for details. The produced hits are of type + \detdesc{html/_geant4_data_8h_source.html}{Geant4Tracker::Hit}. + +\item The \tts{Geant4CalorimeterAction}, which may be used to handle + generic calorimeter like devices. + This sensitive detector produces at most one hit for every cell in the calorimeter. + If several tracks contribute to the energy deposit of this cell, the contributions + are added up. + See the implementation file + \detdesc{html/_geant4_s_d_actions_8cpp_source.html}{DDG4/plugins/Geant4SDAction.cpp} + for details. The produced hits are of type + \detdesc{html/_geant4_data_8h_source.html}{Geant4Calorimeter::Hit}. + propagate the MC truth information with respect to each track kept in the + particle record. +\end{itemize} + +\noindent +Both sensitive detectors use the \tts{Geant4VolumeManager} discussed in +section~\ref{sec:ddg4-user-manual-geant4volumemanager} to identify the sensitive elements. + +\noindent +\bold{PLEASE NOTE:}\\ +The above palette of generic sensitive detectors only contains two very +often used implementations. We hope, that this palette over time grows from +external contributions of other generic sensitive detectors. We would be happy +to extend this palette with other generic implementations. One example would +be the handling of the simulation response for optical detectors like RICH-Cerenkov +detectors. + +%============================================================================= +\subsubsection{Sensitive Detector Filters} +\label{sec:ddg4-implementation-sensitive-detector-filters} +%============================================================================= + +\noindent +The concept of filters allows to build more flexible sensitive detectors by +restricting the hit processing of a given instance of a sensitive action. + +\begin{itemize}\itemcompact +\item Examples would be to demand a given particle type before a sensitive action is +invoked: a sensitive action dealing with optical photons (RICH detectors, etc), +would e.g. not be interested in energy depositions of other particles. +A filter object restricting the particle type to optical photons would +be appropriate. +\item Another example would be to implement a special action instance, which would +be only called if the filter requires a minimum energy deposit. +\end{itemize} +There are plenty of possible applications, hence we would like +to introduce this feature here. + +\noindent +Filters are called by Geant4 before the +hit processing in the sensitive detectors start. The global filters +may be shared between many sensitive detectors. Alternatively filters +may be directly attached to the sensitive detector in question. +Attributes are directly passed as properties to the filter action. + +\noindent +Technically do \tts{Geant4Filter} objects inherit from the base class +\tts{Geant4Filter} (see Figure~\ref{fig:ddg4-implementation-sensitive-detector-filters}. +Any filter inherits from the common base class \tts{Geant4Filter}, then +several specializations may be configured like filters to select/reject +particles, to specify the minimal energy deposit to be processed etc. +A sensitive detector is called if the filter callback with the signature +returns a true result: +\begin{unnumberedcode} + /// Filter action. Return true if hits should be processed + virtual bool operator()(const G4Step* step) const; +\end{unnumberedcode} +\begin{figure}[h] + \begin{center} + \includegraphics[height=65mm] {DDG4-SensitiveFilterClasses.png} + \caption{The sensitive detector filters design. The shown class + diagram is actually implemented.} + \label{fig:ddg4-implementation-sensitive-detector-filters} + \end{center} +\end{figure} + +\newpage + +%============================================================================= +\subsection{The Geant4 Physics List} +\label{sec:ddg4-implementation-physics-list} +%============================================================================= +\noindent +Geant4 provides the base class \tts{G4VUserPhysicsList}, which allows users +to implement customized physics according to the studies to be made. +Any user defined physics list must provide this interface. DDG4 provides such an interface +through the ROOT plugin mechanism using the class \tts{G4VModularPhysicsList}. +The flexibility of \DDG allows for several possibilities to setup the Geant4 +physics list. Instead of explicitly coding the physics list, \DDG foresees the +usage of the plugin mechanism to instantiate the necessary calls to Geant4 in a +sequence of actions: +\begin{itemize} +\item The \bold{physics list} is realized as a sequence of actions of type + \detdesc{html/class_d_d4hep_1_1_simulation_1_1_geant4_physics_list_action_sequence.html} + {\tts{Geant4PhysicsListActionSequence}}. + Members of the \detdesc{html/class_d_d4hep_1_1_simulation_1_1_geant4_physics_list_action_sequence.html} + {\tts{Geant4PhysicsListActionSequence}} are of type + \detdesc{html/class_d_d4hep_1_1_simulation_1_1_geant4_physics_list.html} + {\tts{Geant4PhysicsList}} and receive the callbacks by overloading + the member functions: +\begin{unnumberedcode} + /// Callback to construct the physics constructors + virtual void constructProcess(Geant4UserPhysics* interface); + /// constructParticle callback + virtual void constructParticles(Geant4UserPhysics* particle); + /// constructPhysics callback + virtual void constructPhysics(Geant4UserPhysics* physics); +\end{unnumberedcode} + or register a callback with the signature {\tts{void (T::*)(Geant4UserPhysics*)}} + to receive calls using the method: +\begin{unnumberedcode} + /// Register process construction callback t + template <typename Q, typename T> void constructProcess(Q* p, void (T::*f)(Geant4UserPhysics*)); + /// Register particle construction callback + template <typename Q, typename T> void constructParticle(Q* p, void (T::*f)(Geant4UserPhysics*)); +\end{unnumberedcode} + The argument of type \detdesc{html/class_d_d4hep_1_1_simulation_1_1_geant4_user_physics.html} + {\tts{Geant4UserPhysics}} provides a basic interface to the original + \tts{G4VModular}- \tts{PhysicsList}, which allows to register physics constructors etc. + +\item In most of the cases the above approach is an overkill and often even too flexible. + Hence, alternatively, the physics list may consist of a single entry of type + \detdesc{html/class_d_d4hep_1_1_simulation_1_1_geant4_physics_list.html} + {\tts{Geant4PhysicsList}}. +\end{itemize} + +\noindent +The basic implementation of the \tts{Geant4PhysicsList} supports the usage of various +\begin{itemize}\itemcompact +\item \detdesc{html/_geant4_particles_8cpp_source.html}{particle constructors}, + such as single particle constructors like + \tts{G4Gamma} or \tts{G4Proton}, or whole particle groups like + \tts{G4BosonConstructor} or \tts{G4IonConstrutor}, +\item \detdesc{html/_geant4_processes_8cpp_source.html}{physics process constructors}, + such as e.g. \tts{G4GammaConversion}, + \tts{G4PhotoElectricEffect} or\\ \tts{G4ComptonScattering}, +\item \detdesc{html/_geant4_physics_constructors_8cpp_source.html}{physics constructors} + combining particles and the corresponding + interactions, such as\\ e.g. \tts{G4OpticalPhysics}, + \tts{HadronPhysicsLHEP} or \tts{G4HadronElasticPhysics} and +\item \detdesc{html/_geant4_particles_8cpp_source.html}{predefined Geant4 physics lists}, + such as \tts{FTFP\_BERT}, + \tts{CHIPS} or \tts{QGSP\_INCLXX}. This option is triggered by the + content of the string property "extends" of the \tts{Geant4Kernel::physicsList()} action. +\end{itemize} +These constructors are internally connected to the above callbacks to register themselves. +The constructors are instantiated using the ROOT plugin mechanism. + +\noindent +The description of the above interface is only for completeness. The basic idea is, +that the physics list with its particle and physics constructors is configured +entirely data driven using the setup mechanism described in the following +chapter. However, DDG4 is not limited to the data driven approach. Specialized +physics lists may be supplied, but there should be no need. +New physics lists could always be composed by actually providing new physics +constructors and actually publishing these using the factory methods: +\begin{code} +// Framework include files +#include "DDG4/Factories.h" + +#include "My_Very_Own_Physics_Constructor.h" +DECLARE_GEANT4_PHYSICS(My_Very_Own_Physics_Constructor) +\end{code} +where \tts{My\_Very\_Own\_Physics\_Constructor} represents a sub-class of +\tts{G4VPhysicsConstructor}. + +\newpage +%============================================================================= +\subsection{The Support of the Geant4 UI: \tts{Geant4UIMessenger}} +\label{sec:ddg4-user-manual-geant4action-base} +%============================================================================= + +\noindent +The support of interactivity in Geant4 is mandatory to debug detector +setups in small steps. The Geant4 toolkit did provide for this reason +a machinery of UI commands. +\begin{figure}[h] + \begin{center} + \includegraphics[height=70mm] {DDG4-UIMessenger.png} + \caption{The design of the \tts{Geant4UIMessenger} class responsible for + the interaction between the user and the components of \DDG and Geant4.} + \label{fig:ddg4-tracking-action} + \end{center} +\end{figure} + +\noindent +The UI control is enabled, as soon as the property "Control" (boolean) is set to true. +Be default all properties of the action are exported. +Similar to the callback mechanism described above it is also feasible to +register any object callback invoking a method of a \tts{Geant4Action}-subclass. + +\noindent +The following (shortened) screen dump illustrates the usage of the +generic interface any Geant4Action offers: +\begin{unnumberedcode} +Idle> ls +Command directory path : / + Sub-directories : + /control/ UI control commands. + /units/ Available units. + /process/ Process Table control commands. + /ddg4/ Control for all named Geant4 actions + ... +Idle> cd /ddg4 +Idle> ls +... +Control for all named Geant4 actions + + Sub-directories : + /ddg4/RunInit/ Control hierarchy for Geant4 action:RunInit + /ddg4/RunAction/ Control hierarchy for Geant4 action:RunAction + /ddg4/EventAction/ Control hierarchy for Geant4 action:EventAction + /ddg4/GeneratorAction/ Control hierarchy for Geant4 action:GeneratorAction + /ddg4/LCIO1/ Control hierarchy for Geant4 action:LCIO1 + /ddg4/Smear1/ Control hierarchy for Geant4 action:Smear1 + /ddg4/PrimaryHandler/ Control hierarchy for Geant4 action:PrimaryHandler + /ddg4/TrackingAction/ Control hierarchy for Geant4 action:TrackingAction + /ddg4/SteppingAction/ Control hierarchy for Geant4 action:SteppingAction + /ddg4/ParticleHandler/ Control hierarchy for Geant4 action:ParticleHandler + /ddg4/UserParticleHandler/ Control hierarchy for Geant4 action:UserParticleHandler + ... +Idle> ls Smear1 +Command directory path : /ddg4/Smear1/ + ... + Commands : + show * Show all properties of Geant4 component:Smear1 + Control * Property item of type bool + Mask * Property item of type int + Name * Property item of type std::string + Offset * Property item of type ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > + OutputLevel * Property item of type int + Sigma * Property item of type ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > + name * Property item of type std::string +Idle> Smear1/show +PropertyManager: Property Control = True +PropertyManager: Property Mask = 1 +PropertyManager: Property Name = 'Smear1' +PropertyManager: Property Offset = ( -20 , -10 , -10 , 0 ) +PropertyManager: Property OutputLevel = 4 +PropertyManager: Property Sigma = ( 12 , 8 , 8 , 0 ) +PropertyManager: Property name = 'Smear1' + +Idle> Smear1/Offset (200*mm, -3*mm, 15*mm, 10*ns) +Geant4UIMessenger: +++ Smear1> Setting property value Offset = (200*mm, -3*mm, 15*mm, 10*ns) + native:( 200 , -3 , 15 , 10 ). +Idle> Smear1/show +... +PropertyManager: Property Offset = ( 200 , -3 , 15 , 10 ) + +\end{unnumberedcode} + +\newpage diff --git a/doc/LaTex/DDG4Manual-Introduction.tex b/doc/LaTex/DDG4Manual-Introduction.tex new file mode 100644 index 000000000..f65f55cd3 --- /dev/null +++ b/doc/LaTex/DDG4Manual-Introduction.tex @@ -0,0 +1,108 @@ + +%============================================================================= +\section{Introduction} +\label{sec:ddg4-user-manual-introduction} +%============================================================================= +\noindent +This manual should introduce to the DDG4 framework. +One goal of \DDG is to easily configure the simulation applications +capable of simulating the physics response of detector configurations +as they are used for example in high energy physics experiments. +In such simulation programs the user normally has to define the +experimental setup in terms of its geometry and in terms of its +active elements which sample the detector response. + +\noindent +The goal of \DDG is to generalize the configuration of a simulation +application to a degree, which does not force users to write code +to test a detector design. At the same time it should of course +be feasible to supply specialized user written modules which are supposed +to seamlessly operate together with standard modules supplied by the toolkit. +Detector-simulation depends strongly on the use of an underlying simulation +toolkit, the most prominent candidate nowadays being Geant4~\cite{bib:geant4}. +\DDhep supports simulation activities with Geant4 providing +an automatic translation mechanism between geometry representations. +The simulation response in the active elements of the detector +is strongly influenced by the technical +choices and precise simulations depends on the very specific detection techniques. + +\noindent +Similar to the aim of \DDhep~\cite{bib:DD4hep}, +where with time a standard palette of detector +components developed by users should become part of the toolkit, +\DDG also hopes to provide a standard palette of components used +to support simulation activities for detector layouts +where detector designers may base the simulation of a planned experiment +on these predefined components for initial design and optimization +studies. The longterm vision is to construct simulation applications +writing only new components not yet present i.e. the main work will be to +select the appropriate components from the palette and connect them +to a functional program. + +\noindent +This is not a manual to Geant4 nor the basic infrastructure of \DDhep. +It is assumed that this knowledge is present and the typical glossary +is known. + +%============================================================================= +\section{The Geant4 User Interface} +\label{sec:ddg4-user-manual-geant4-interface} +%============================================================================= + +\noindent +The Geant4 simulation toolkit~\cite{bib:geant4} implements a very complex +machinery to simulate the energy deposition of particles traversing materials. +To ease its usage for the clients and to shield clients from the complex +internals when actually implementing a simulation applications for a +given detector design, it provides several user hooks +as shown in Figure~\ref{fig:ddg4-g4runmanager-anatomy}. Each of these hooks +serves a well specialized purpose, but unfortunately also leads to very +specialized applications. One aim of \DDG is to formalize these user +actions so that the invocation at the appropriate time may be purely +data driven. +\begin{figure}[h] + \begin{center} + \includegraphics[height=70mm] {DDG4-G4RunManagerAnatomy.png} + \caption{The various user hooks provided by Geant4. Not shown here + is the callback system interfacing to the active elements + of the detector design.} + \label{fig:ddg4-g4runmanager-anatomy} + \end{center} +\end{figure} + +\noindent +In detail the following object-hooks allow the client to define user provided actions: +\begin{itemize}\itemcompact +\item The \bold{User Physics List} allows the client to customize and define + the underlying physics process(es) which define the particle interactions + inside the detector defined with the geometry description. + These interactions define the detector response in terms of + energy depositions. +\item The \bold{Run Action} is called once at the start and end of a run. + i.e. a series of generated events. These two callbacks + allow clients to define run-dependent actions such as statistics + summaries etc. +\item The \bold{Primary Generator Action} is called for every event. + During the callback all particles are created which form the + microscopic kinematic action of the particle collision. + This input may either origin directly from an event generator program + or come from file. +\item The \bold{Event Action} is called once at the start and the end of each event. + It is typically used for a simple analysis of the processed event. + If the simulated data should be written to some persistent medium, + the call at the end of the event processing is the appropriate place. +\item The \bold{Tracking Action} +\item The \bold{Stepping Action} +\item The \bold{Stacking Action} +\end{itemize} +\noindent +Geant4 provides all callbacks with the necessary information in the form of +appropriate arguments. + +\noindent +Besides the callback system, Geant4 provides callbacks whenever a particle +traverses a sensitive volume. These callbacks are called +- similar to event actions - once at the start and the end of the event, +but in addition, if either the energy deposit of a particle in the +sensitive volume exceeds some threshold. The callbacks are formalized within +the base class \tts{G4VSensitiveDetector}. diff --git a/doc/LaTex/DDG4Manual-MT.tex b/doc/LaTex/DDG4Manual-MT.tex new file mode 100644 index 000000000..af921b539 --- /dev/null +++ b/doc/LaTex/DDG4Manual-MT.tex @@ -0,0 +1,359 @@ + +%============================================================================= +\section{Multi-Threading in \DDG} +\label{sec:ddg4-multi-threading} +%============================================================================= +\subsection{Introductory Remarks} +\label{sec:ddg4-multi-threading-introduction} +%============================================================================= +\noindent +Multi-threading as supported by Geant4 is event driven. This means that +the simulation of a given event is handled by one single thread. +Geant4 provides specific extensions to ease the users the use of its +multi-threaded extensions~\cite{bib:Geant4-multi-threading}~\footnote{Please +note that the whole of Geant4 and your client code must be compiled with +the compile flag ${\tts{-DGEANT4_BUILD_MULTITHREADED=ON}}$}. +These extension divide in a formalized manner all actions to be performed +to setup a Geant4 multi-threaded program into + +\begin{itemize}\itemcompact +\item {\bf{common}} actions to be performed and shared by all threads. +This includes the setup of the geometry and the physics list. The +other main area are +\item {\bf{thread-specific}} actions to be performed for each thread. +These are composed by the user actions called during the processing of +each run. These are the run-, event-, generation-, tracking-, +stepping and stacking actions. +\end{itemize} + +\noindent +To understand the interplay between \DDG and Geant4 let us quickly +recapitulate the Geant4 mechanism how to configure multiple threads. +The setup of a multi-threaded application in Geant4 is centered around +two additional classes, which both deal with single- and multi-threaded +issues: + +\begin{itemize}\itemcompact +\item {\tts{G4VUserActionInitialization}} class with 2 major callbacks: + {\tts{Build()}} which is executed for each {\bf{worker thread}} and + {\tts{BuildForMaster()}} which is executed for master thread only. +\item {\tts{G4VUserDetectorConstruction}} class with the callbacks + {\tts{Construct()}}, where the shared geometry is constructed and + {\tts{ConstructSDandField()}} where the sensitive detectors and the + electro magnetic fields are provided. +\end{itemize} + +\noindent +Both these Geant4 provided hooks are modeled in the standard \DDG +way as action queues, which allow a modular and fine grained setup +as shown in Figure~\ref{fig:ddg4-user-initialization} and +Figure~\ref{fig:ddg4-detector-initialization}. +\begin{figure}[t] + \begin{center} + \includegraphics[width=140mm] {DDG4-User-Initialization.png} + \caption{The Geant4 user initialization sequence to setup DDG4 + in multi-threaded mode. The callbacks {\tts{buildMaster()}} + is only called in multi-threaded mode.} + \label{fig:ddg4-user-initialization} + \end{center} +\end{figure} + +\noindent +The \DDG framework ensures that all user callbacks are installed properly +to the Geant4 run manager, which calls them appropriately at the correct time. + +\noindent +\DDG provides three callbacks for each sequence. Each callback receives +a temporary context argument, which may be used to shortcut access +to basic useful quantities: +\begin{code} + struct Geant4DetectorConstructionContext { + /// Reference to geometry object + Geometry::LCDD& lcdd; + /// Reference to the world after construction + G4VPhysicalVolume* world; + /// The cached geometry information + Geant4GeometryInfo* geometry; + /// G4 User detector initializer + G4VUserDetectorConstruction* detector; +}; +\end{code} + +\begin{figure}[h] + \begin{center} + \includegraphics[width=140mm] {DDG4-Detector-Construction.png} + \caption{The Geant4 detector initialization sequence to setup DDG4. + If supplied, Geant4 calls the components both, in the single-threaded + and in the multi-threaded mode.} + \label{fig:ddg4-detector-initialization} + \end{center} +\end{figure} + +The callbacks and the expected functionality are: +\begin{enumerate} +\item First the detector geometry is constructed. This happens in the callback + {\tts{constructGeo(...)}}. If a standard \DDhep geometry + is present, this is translation of the geometry could be done by simply + calling the plugin {\tts{Geant4DetectorGeometryConstruction}}. + Alternatively a user defined plugin could perform this action. +\item Next the electromagnetic fields for the Geant4 particle tracking is + constructed. A generic plugin {\tts{Geant4FieldTrackingConstruction}} + may be attached. The corresponding setup parameters are listed in + Section~\ref{sec:existing-ddg4-components}. + Alternatively a user defined plugin could perform this action. +\item Finally the Geant4 sensitive detectors are instantiated and attached + to the sensitive volumes. For generic setups the plugin + {\tts{Geant4DetectorSensitivesConstruction}} may be attached. + Alternatively a user defined plugin could perform this action. +\end{enumerate} + +%============================================================================= +\subsection{Thread related contexts} +\label{sec:ddg4-thread-save context} +%============================================================================= +\noindent +\DDG provides thread related context, which may be accessed or modified +by user code. This context, the {\tts{Geant4Context}} and it's sub-components, +as discussed in Section~\ref{sec:ddg4-implementation-higher-level-components} +are available as separate instances for each event and as such +also independently for each worker thread. Hence, no user level locking of the +event context is necessary in any worker thread. + +%============================================================================= +\subsection{Thread-Shared Components} +\label{sec:ddg4-multi-threaded-shared-actions} +%============================================================================= +\noindent +Some actions, though executed in the context of a single thread context +may only execute as singletons. An example would be a {\tts{GeneratorAction}}, +which read input events from file. Clearly the reading of data from +file must be protected and the reading of one event in a given thread +must finish, before the next thread may take over. +Another example are data analysis components, which e.g. fill a histogram. +Typically the filling mechanism of a histogram is not thread safe and hence must +be protected. + +\noindent +To solve such issues all actions, which may involve such shared +activities, a shared action is provided, which adopts a singleton +instance and executes the relevant callbacks in a protected manner. +The shared actions execute the user component in a thread safe envelope. + +\noindent +Clearly no run- or event related state in such shared actions may be +carried by the component object across callbacks. The action objects +may not be aware of the event related context outside the callback. +Default implementations for such shared actions exist for +\begin{itemize}\itemcompact +\item the {\tts{Geant4RunAction}}, where the calls to + {\tts{Geant4RunAction::begin}} and {\tts{Geant4RunAction::end}} + are {\bf{globally}} locked and the sequential execution of + the entire sequence is ensured; +\item the {\tts{Geant4EventAction}}, +\item the {\tts{Geant4TrackingAction}}, +\item the {\tts{Geant4SteppingAction}} and +\item the {\tts{Geant4StackingAction}}. +\end{itemize} +In the latter cases the framework ensures thread safety, but does +not ensure the reentrant execution order of the entire sequence. + +\noindent +{\bf{General Remark:}} +\noindent +Simple callbacks registered to the run-, event, etc.-actions cannot +be protected. These callbacks may under no circumstances use any +event related state information of the called object. + +%============================================================================= +\subsection{Backwards- and Single-Thread-Compatibility} +\label{sec:ddg4-multi-threading-backwards} +%============================================================================= +\noindent +As in the single threaded mode of Geant4, also in the multi-threaded +mode all user actions are called by an instance of the {\tts{G4RunManager}} +or a sublass thereof, the {\tts{G4MTRunManager}}~\cite{bib:Geant4-multi-threading}. + +\noindent +If the recommended actions in sub-section~\ref{sec:ddg4-multi-threading-introduction} +are used to configure the Geant4 application, then in a rather transparent +way both single-threaded and multi-threaded setups can coexist simply by +changing the concrete instance of the {\tts{G4RunManager}}. There is one +single exception: The user initialization function +{\tts{G4VUserActionInitialization::BuildForMaster()}} is {\bf{only}} executed +in multi-threaded mode. For this reason, we deprecate the usage. Try +to find solutions, without master specific setup using e.g. shared actions. + +%============================================================================= +\subsection{Support for Python Setup in Multi-Threading Mode} +\label{sec:ddg4-multi-threading-python} +%============================================================================= +\noindent +The setup of \DDG in multi-threaded mode requires separate callbacks for +the global configuration (geometry, etc.) and the configuration of the worker +threads. In python this setup is performed within {\rm{python callable}} +objects, which are either functions or member functions of objects. +These functions may have arguments. The python specific configuration actions +\begin{itemize}\itemcompact +\item The user initialization action + {\tts{Geant4PythonInitialization}} allows to configure python callbacks + for the master and the worker thread setup using the calls: + \begin{code} + /// Set the Detector initialization command + void setMasterSetup(PyObject* callable, PyObject* args); + /// Set the field initialization command + void setWorkerSetup(PyObject* callable, PyObject* args); \end{code} + to be used in python as a call sequence within the master thread: + \begin{code} + init_seq = kernel.userInitialization(True) + init_action = UserInitialization(kernel,'Geant4PythonInitialization/PyG4Init') + init_action.setWorkerSetup(worker_setup_call, < worker_args > ) + init_action.setMasterSetup(master_setup_call, < master_args > ) + init_seq.adopt(init_action) \end{code} + The callback argument list $< worker\_args >$ and $< master\_args >$ + are python tuples containing all arguments expected by the callable objects + $worker\_setup\_call$ and $master\_setup\_call$ respecyively. + The class {\tts{Geant4PythonInitialization}} is a subclass of + {\tts{Geant4UserInitialization}} and will call the provided functions + according to the protocol explained earlier in this section. + If a callback is not set, the corresponding actiion is not executed. +\item The detector construction action + {\tts{Geant4PythonDetectorConstruction}} is the corresponding + python action to populate the detector construction sequencer. + and supports three ccallbacks: + \begin{code} + /// Set the Detector initialization command + void setConstructGeo(PyObject* callable, PyObject* args); + /// Set the field initialization command + void setConstructField(PyObject* callable, PyObject* args); + /// Set the sensitive detector initialization command + void setConstructSensitives(PyObject* callable, PyObject* args); \end{code} + to be used in python as call sequence within the master thread: + \begin{code} + init_seq = self.master().detectorConstruction(True) + init_action = DetectorConstruction(self.master(),name_type) + init_action.setConstructGeo(geometry_setup_call, < geometry_args > ) + init_action.setConstructField(field_setup_call, < field_args > ) + init_action.setConstructSensitives(sensitives_setup_call, < sensitives_args >) + init_seq.adopt(init_action) \end{code} + If any of the three callback is not set, the corresponding actiion is not executed. + Hereby are $geometry\_setup\_call$, $field\_setup\_call$ and $sensitives\_setup\_call$ + the callable objects to configure the geometry, the tracking field + and the sensitive detectors. + $< geometry\_args >$, $< field\_args >$ and $< sensitives\_args >$ are + the corresponding callable arguments in the form of a python tuple object. +\end{itemize} + +\noindent +All python callbacks are supposed to return the integer '1' on success. +Any other return code is assumed to be failure. + +%============================================================================= +\subsection{\DDG Multi-Threading Example} +\label{sec:ddg4-multi-threading-example} +%============================================================================= +\begin{code} +""" + + DD4hep simulation example setup DDG4 + in multi-threaded mode using the python configuration + + @author M.Frank + @version 1.0 + +""" +import os, time, DDG4 + +def setupWorker(geant4): + kernel = geant4.kernel() + print '#PYTHON: +++ Creating Geant4 worker thread ....' + print "#PYTHON: Configure Run actions" + run1 = DDG4.RunAction(kernel,'Geant4TestRunAction/RunInit') + ... + print "#PYTHON: Configure Event actions" + prt = DDG4.EventAction(kernel,'Geant4ParticlePrint/ParticlePrint') + kernel.eventAction().adopt(prt) + ... + print "\n#PYTHON: Configure I/O\n" + evt_root = geant4.setupROOTOutput('RootOutput','CLICSiD_'+time.strftime('%Y-%m-%d_%H-%M')) + ... + gen = DDG4.GeneratorAction(kernel,"Geant4GeneratorActionInit/GenerationInit") + kernel.generatorAction().adopt(gen) + print "#PYTHON: First particle generator: pi+" + gen = DDG4.GeneratorAction(kernel,"Geant4IsotropeGenerator/IsotropPi+"); + ... + print "#PYTHON: Merge all existing interaction records" + gen = DDG4.GeneratorAction(kernel,"Geant4InteractionMerger/InteractionMerger") + kernel.generatorAction().adopt(gen) + print "#PYTHON: Finally generate Geant4 primaries" + gen = DDG4.GeneratorAction(kernel,"Geant4PrimaryHandler/PrimaryHandler") + kernel.generatorAction().adopt(gen) + print "#PYTHON: ....and handle the simulation particles." + part = DDG4.GeneratorAction(kernel,"Geant4ParticleHandler/ParticleHandler") + kernel.generatorAction().adopt(part) + + user = DDG4.Action(kernel,"Geant4TCUserParticleHandler/UserParticleHandler") + ... + part.adopt(user) + print '#PYTHON: +++ Geant4 worker thread configured successfully....' + return 1 + +def setupMaster(geant4): + kernel = geant4.master() + print '#PYTHON: +++ Setting up master thread for ',kernel.NumberOfThreads,' workers.' + return 1 + +def setupSensitives(geant4): + print "#PYTHON: Setting up all sensitive detectors" + geant4.printDetectors() + print "#PYTHON: First the tracking detectors" + seq,act = geant4.setupTracker('SiVertexBarrel') + ... + print "#PYTHON: Now setup the calorimeters" + seq,act = geant4.setupCalorimeter('EcalBarrel') + ... + return 1 + +def run(): + kernel = DDG4.Kernel() + lcdd = kernel.lcdd() + install_dir = os.environ['DD4hepINSTALL'] + DDG4.Core.setPrintFormat("%-32s %6s %s") + kernel.loadGeometry("file:"+install_dir+"/DDDetectors/compact/SiD.xml") + DDG4.importConstants(lcdd) + + kernel.NumberOfThreads = 3 + geant4 = DDG4.Geant4(kernel,tracker='Geant4TrackerCombineAction') + print "# Configure UI" + geant4.setupCshUI() + + print "# Geant4 user initialization action" + geant4.addUserInitialization(worker=setupWorker, worker_args=(geant4,), + master=setupMaster,master_args=(geant4,)) + print "# Configure G4 geometry setup" + seq,act = geant4.addDetectorConstruction("Geant4DetectorGeometryConstruction/ConstructGeo") + + print "# Configure G4 sensitive detectors: python setup callback" + seq,act = geant4.addDetectorConstruction("Geant4PythonDetectorConstruction/SetupSD", + sensitives=setupSensitives,sensitives_args=(geant4,)) + print "# Configure G4 sensitive detectors: atach'em to the sensitive volumes" + seq,act = geant4.addDetectorConstruction("Geant4DetectorSensitivesConstruction/ConstructSD") + + print "# Configure G4 magnetic field tracking" + seq,field = geant4.addDetectorConstruction("Geant4FieldTrackingConstruction/MagFieldTrackingSetup") + field.stepper = "HelixGeant4Runge" + field.equation = "Mag_UsualEqRhs" + field.eps_min = 5e-05 * mm + ... + print "# Setup random generator" + rndm = DDG4.Action(kernel,'Geant4Random/Random') + rndm.Seed = 987654321 + rndm.initialize() + print "# Now build the physics list:" + phys = geant4.setupPhysics('QGSP_BERT') + geant4.run() + +if __name__ == "__main__": + run() +\end{code} + +\newpage \ No newline at end of file diff --git a/doc/LaTex/DDG4Manual-Setup.tex b/doc/LaTex/DDG4Manual-Setup.tex new file mode 100644 index 000000000..60dc4ce23 --- /dev/null +++ b/doc/LaTex/DDG4Manual-Setup.tex @@ -0,0 +1,725 @@ + +%============================================================================= +\section{Setting up DDG4} +\label{sec:ddg4-implementation-setup} +%============================================================================= + +\noindent +\DDG offers several possibilities to configure a simulation application +using +\begin{itemize}\itemcompact +\item XML files, +\item by coding a setup script loaded from the \tts{ROOT} interpreter + with the AClick mechanism. +\item by creating a setup script using \tts{python} and + \tts{ROOT}'s reflection mechanism exposed by \tts{PyROOT}. +\end{itemize} +The following subsection describe these different mechanism. An attempt was made +to match the naming conventions of all approaches where possible. + +%============================================================================= +\subsection{Setting up DDG4 using XML} +\label{sec:ddg4-implementation-setup-xml} +%============================================================================= + +\noindent +A special plugin was developed to enable the configuration of \DDG using +XML structures. These files are parsed identically to the geometry setup +in \DDhep the only difference is the name of the root-element, which for +\DDG is \tts{<geant4\_setup>}. +The following code snippet shows the basic structure of a \DDG setup file: +\begin{unnumberedcode} +<geant4_setup> + <physicslist> ,,, </physicslist> <!-- Definition of the physics list --> + <actions> ... </actions> <!-- The list of global actions --> + <phases> ... </phases> <!-- The definition of the various phases --> + <filters> ... </filters> <!-- The list of global filter actions --> + <sequences> ... </sequences> <!-- The list of defined sequences --> + <sensitive_detectors> ... </sensitive_detectors> <!-- The list of sensitive detectors --> + <properties> ... </properties> <!-- Free format option sequences --> +</geant4_setup> +\end{unnumberedcode} +To setup a \DDG4 application any number of xml setup files may be interpreted +iteratively. In the following subsections the content of these first level sub-trees will +be discussed. + +%============================================================================= +\subsubsection{Setup of the Physics List} +\label{sec:ddg4-setup-xml-physicslist} +%============================================================================= + +\noindent +The main tag to setup a physics list is \tts{<physicslist>} with the +\tts{name} attribute defining the instance of the \tts{Geant4PhysicsList} object. +An example code snippet is shown below in Figure~\ref{fig:ddg4-setup-xml-physicslist}. + +\begin{code} +<geant4_setup> + <physicslist name="Geant4PhysicsList/MyPhysics.0"> + + <extends name="QGSP_BERT"/> <!-- Geant4 basic Physics list --> + + <particles> <!-- Particle constructors --> + <construct name="G4Geantino"/> + <construct name="G4ChargedGeantino"/> + <construct name="G4Electron"/> + <construct name="G4Gamma"/> + <construct name="G4BosonConstructor"/> + <construct name="G4LeptonConstructor"/> + <construct name="G4MesonConstructor"/> + <construct name="G4BaryonConstructor"/> + ... + </particles> + + <processes> <!-- Process constructors --> + <particle name="e[+-]" cut="1*mm"> + <process name="G4eMultipleScattering" ordAtRestDoIt="-1" ordAlongSteptDoIt="1" + ordPostStepDoIt="1"/> + <process name="G4eIonisation" ordAtRestDoIt="-1" ordAlongSteptDoIt="2" + ordPostStepDoIt="2"/> + </particle> + <particle name="mu[+-]"> + <process name="G4MuMultipleScattering" ordAtRestDoIt="-1" ordAlongSteptDoIt="1" + ordPostStepDoIt="1"/> + <process name="G4MuIonisation" ordAtRestDoIt="-1" ordAlongSteptDoIt="2" + ordPostStepDoIt="2"/> + </particle> + ... + </processes> + + <physics> <!-- Physics constructors --> + <construct name="G4EmStandardPhysics"/> + <construct name="HadronPhysicsQGSP"/> + ... + </physics> + + </physicslist> +</geant4_setup> +\end{code} +\begin{figure}[h] +\caption{XML snippet showing the configuration of a physics list.} +\label{fig:ddg4-setup-xml-physicslist} +\end{figure} + +\begin{itemize}\itemcompact +\item To base all these constructs on an already existing predefined Geant4 physics list + use the \tts{<extends>} tag with the attribute containing the name of the physics list + as shown in line 4. +\item To trigger a call to a \bold{particle constructors} (line 7-14), use the \tts{<particles>} section + and define the Geant4 particle constructor to be called by name. To trigger a call to +\item \bold{physics process constructors}, as shown in line 19-30, + Define for each particle matching the name pattern (regular expression!) and the + default cut value for the corresponding processes. The attributes ordXXXX correspond + to the arguments of the Geant4 call \\ + \tts{G4ProcessManager::AddProcess(process,ordAtRestDoIt, ordAlongSteptDoIt,ordPostStepDoIt);} + The processes themself are created using the ROOT plugin mechanism. + To trigger a call to +\item \bold{physics constructors}, as shown in line 34-35, use the \tts{<physics>} section. +\end{itemize} +If only a predefined physics list is used, which probably already satisfies very many use cases, +all these section collapse to: +\begin{code} +<geant4_setup> + <physicslist name="Geant4PhysicsList/MyPhysics.0"> + <extends name="QGSP_BERT"/> <!-- Geant4 basic Physics list --> + </physicslist> +</geant4_setup> +\end{code} + +%============================================================================= +\subsubsection{Setup of Global Geant4 Actions} +\label{sec:ddg4-setup-xml-geant4-actions} +%============================================================================= + +\noindent +Global actions must be defined in the \tts{<actions>} section as shown in the following snippet: +\begin{code} +<geant4_setup> + <actions> + <action name="Geant4TestRunAction/RunInit"> + <properties Property_int="12345" + Property_double="-5e15" + Property_string="Startrun: Hello_2"/> + </action> + <action name="Geant4TestEventAction/UserEvent_2" + Property_int="1234" + Property_double="5e15" + Property_string="Hello_2" /> + </actions> +</geant4_setup> +\end{code} +The default properties of \bold{every} \tts{Geant4Action} object are: +\begin{unnumberedcode} +Name [string] Action name +OutputLevel [int] Flag to customize the level of printout +Control [boolean] Flag if the UI messenger should be installed. +\end{unnumberedcode} +The \tts{name} attribute of an action child is a qualified name: The first part +denotes the type of the plugin (i.e. its class), the second part the name of the instance. +Within one collection the instance \tts{name} must be unique. +Properties of Geant4Actions are set by placing them as attributes into the +\tts{<properties>} section. + +%============================================================================= +\subsubsection{Setup of Geant4 Filters} +\label{sec:ddg4-setup-xml-geant4-filters} +%============================================================================= +\noindent +Filters are special actions called by \tts{Geant4Sensitive}s. +Filters may be global or anonymous i.e. reusable by several sensitive detector +sequences as illustrated in Section~\ref{sec:ddg4-setup-xml-geant4-sequences}. +The setup is analogous to the setup of global actions: +\begin{code} + <filters> + <filter name="GeantinoRejectFilter/GeantinoRejector"/> + <filter name="ParticleRejectFilter/OpticalPhotonRejector"> + <properties particle="opticalphoton"/> + </filter> + <filter name="ParticleSelectFilter/OpticalPhotonSelector"> + <properties particle="opticalphoton"/> + </filter> + <filter name="EnergyDepositMinimumCut"> + <properties Cut="10*MeV"/> + </filter> + <!-- ... next global filter ... --> + </filters> +\end{code} +Global filters are accessible from the \tts{Geant4Kernel} object. + +%============================================================================= +\subsubsection{Geant4 Action Sequences} +\label{sec:ddg4-setup-xml-geant4-sequences} +%============================================================================= + +\noindent +\tts{Geant4 Action Sequences} by definition are \tts{Geant4Action} objects. +Hence, they share the setup mechanism with properties etc. For the setup +mechanism two different types of sequences are known to \DDG: +{\it{Action sequences}} and {\it{Sensitive detector sequences}}. Bot are declared in +the \tts{sequences} section: +\begin{code} +<geant4_setup> + <sequences> + <sequence name="Geant4EventActionSequence/EventAction"> <!-- Sequence "EventAction" of type + "Geant4EventActionSequence" --> + <action name="Geant4TestEventAction/UserEvent_1"> <!-- Anonymous action --> + <properties Property_int="01234" <!-- Properties go inline --> + Property_double="1e11" + Property_string="'Hello_1'"/> + </action> + <action name="UserEvent_2"/> <!-- Global action defined in "actions" --> + <!-- Only the name is referenced here --> + <action name="Geant4Output2ROOT/RootOutput"> <!-- ROOT I/O action --> + <properties Output="simple.root"/> <!-- Output file property --> + </action> + <action name="Geant4Output2LCIO/LCIOOutput"> <!-- LCIO output action --> + <properties Output="simple.lcio"/> <!-- Output file property --> + </action> + </sequence> + + + <sequence sd="SiTrackerBarrel" type="Geant4SensDetActionSequence"> + <filter name="GeantinoRejector"/> + <filter name="EnergyDepositMinimumCut"/> + <action name="Geant4SimpleTrackerAction/SiTrackerBarrelHandler"/> + </sequence> + <sequence sd="SiTrackerEndcap" type="Geant4SensDetActionSequence"> + <filter name="GeantinoRejector"/> + <filter name="EnergyDepositMinimumCut"/> + <action name="Geant4SimpleTrackerAction/SiTrackerEndcapHandler"/> + </sequence> + <!-- ... next sequence ... --> + </sequences> +</geant4_setup> +\end{code} +Here firstly the \bold{EventAction} sequence is defined with its members. +Secondly a sensitive detector sequence is defined for the subdetector +\tts{SiTrackerBarrel} of type \tts{Geant4SensDetActionSequence}. +The sequence uses two filters: \tts{GeantinoRejector} to not generate hits +from geantinos and \tts{EnergyDepositMinimumCut} to enforce a minimal energy deposit. +These filters are global i.e. they may be applied by many subdetectors. +The setup of global filters is described in +Section~\ref{sec:ddg4-setup-xml-geant4-filters}. +Finally the action \tts{SiTrackerEndcapHandler} of type \tts{Geant4SimpleTrackerAction} +is chained, which collects the deposited energy and +creates a collection of hits. The \tts{Geant4SimpleTrackerAction} is a template +callback to illustrate the usage of sensitive elements in \DDG. +The resulting hit collection of these handlers by default have the same name as the +object instance name. +Analogous below the sensitive detector sequence for the subdetector +\tts{SiTrackerEndcap} is shown, which reuses the same filter actions, but will build its own +hit collection. + +\noindent +\bold{Please note:} +\begin{itemize}\itemcompact +\item \bold{It was already mentioned, but once again}: Event-, run-, generator-, tracking-, + stepping- and stacking actions sequences have predefined names! + These names are fixed and part of the \bold{common knowledge}, they cannot be altered. + Please refer to + Section~\ref{sec:ddg4-user-manual-implementation-geant4action-sequences} + for the names of the global action sequences. +\item the sensitive detector sequences are matched by the attribute \tts{sd} to the + subdetectors created with the \DDhep detector description package. Values must match! +\item In the event that several xml files are parsed it is absolutely vital that + the \tts{<actions>} section is interpreted \bold{before} the \tts{sequences}. +\item For each XML file several \tts{<sequences>} are allowed. +\noindent +\end{itemize} + +%============================================================================= +\subsubsection{Setup of Geant4 Sensitive Detectors} +\label{sec:ddg4-setup-xml-geant4-sensitive detectors} +%============================================================================= +\begin{code} + <geant4_setup> + <sensitive_detectors> + <sd name="SiTrackerBarrel" + type="Geant4SensDet" + ecut="10.0*MeV" + verbose="true" + hit_aggregation="position"> + </sd> + <!-- ... next sensitive detector ... --> + </sensitive_detectors> + </geant4_setup> +\end{code} + + + +%============================================================================= +\subsubsection{Miscellaneous Setup of Geant4 Objects} +\label{sec:ddg4-setup-xml-geant4-objects} +%============================================================================= + +\noindent +This section is used for the flexible setup of auxiliary objects such as the +electromagnetic fields used in Geant4: +\begin{code} + <geant4_setup> + <properties> + <attributes name="geant4_field" + id="0" + type="Geant4FieldSetup" + object="GlobalSolenoid" + global="true" + min_chord_step="0.01*mm" + delta_chord="0.25*mm" + delta_intersection="1e-05*mm" + delta_one_step="0.001*mm" + eps_min="5e-05*mm" + eps_max="0.001*mm" + stepper="HelixSimpleRunge" + equation="Mag_UsualEqRhs"> + </attributes> + ... + </properties> + </geant4_setup> +\end{code} +Important are the tags \tts{type} and \tts{object}, which are used to firstly +define the plugin to be called and secondly define the object from the \DDhep +description to be configured for the use within Geant4. + +%============================================================================= +\subsubsection{Setup of Geant4 Phases} +\label{sec:ddg4-setup-xml-geant4-phases} +%============================================================================= + +\noindent +Phases are configured as shown below. +However, the use is \bold{discouraged}, +since it is not yet clear if there are appropriate use cases! +\begin{code} + <phases> + <phase type="RunAction/begin"> + <action name="RunInit"/> + <action name="Geant4TestRunAction/UserRunInit"> + <properties Property_int="1234" + Property_double="5e15" + Property_string="'Hello_2'"/> + </action> + </phase> + <phase type="EventAction/begin"> + <action name="UserEvent_2"/> + </phase> + <phase type="EventAction/end"> + <action name="UserEvent_2"/> + </phase> + ... + </phases> +\end{code} + +\newpage +%============================================================================= +\subsection{Setting up DDG4 using ROOT-CINT} +\label{sec:ddg4-implementation-setup-root-cint} +%============================================================================= + +\noindent +The setup of \DDG directly from the the ROOT interpreter using the AClick +mechanism is very simple, but mainly meant for purists (like me ;-)), +since it is nearly equivalent to the explicit setup within a \tts{C++} +main program. +The following code section shows how to do it. For explanation the code +segment is discussed below line by line. +\begin{code} +#include "DDG4/Geant4Config.h" +#include "DDG4/Geant4TestActions.h" +#include "DDG4/Geant4TrackHandler.h" +#include <iostream> + +using namespace std; +using namespace DD4hep; +using namespace DD4hep::Simulation; +using namespace DD4hep::Simulation::Test; +using namespace DD4hep::Simulation::Setup; + +#if defined(__MAKECINT__) +#pragma link C++ class Geant4RunActionSequence; +#pragma link C++ class Geant4EventActionSequence; +#pragma link C++ class Geant4SteppingActionSequence; +#pragma link C++ class Geant4StackingActionSequence; +#pragma link C++ class Geant4GeneratorActionSequence; +#pragma link C++ class Geant4Action; +#pragma link C++ class Geant4Kernel; +#endif + +SensitiveSeq::handled_type* setupDetector(Kernel& kernel, const std::string& name) { + SensitiveSeq sd = SensitiveSeq(kernel,name); + Sensitive sens = Sensitive(kernel,"Geant4TestSensitive/"+name+"Handler",name); + sd->adopt(sens); + sens = Sensitive(kernel,"Geant4TestSensitive/"+name+"Monitor",name); + sd->adopt(sens); + return sd; +} + +void exampleAClick() { + Geant4Kernel& kernel = Geant4Kernel::instance(LCDD::getInstance()); + kernel.loadGeometry("file:../DD4hep.trunk/DDExamples/CLICSiD/compact/compact.xml"); + kernel.loadXML("DDG4_field.xml"); + + GenAction gun(kernel,"Geant4ParticleGun/Gun"); + gun["energy"] = 0.5*GeV; // Set properties + gun["particle"] = "e-"; + gun["multiplicity"] = 1; + kernel.generatorAction().adopt(gun); + + Action run_init(kernel,"Geant4TestRunAction/RunInit"); + run_init["Property_int"] = 12345; + kernel.runAction().callAtBegin (run_init.get(),&Geant4TestRunAction::begin); + kernel.eventAction().callAtBegin(run_init.get(),&Geant4TestRunAction::beginEvent); + kernel.eventAction().callAtEnd (run_init.get(),&Geant4TestRunAction::endEvent); + + Action evt_1(kernel,"Geant4TestEventAction/UserEvent_1"); + evt_1["Property_int"] = 12345; // Set properties + evt_1["Property_string"] = "Events"; + kernel.eventAction().adopt(evt_1); + + EventAction evt_2(kernel,"Geant4TestEventAction/UserEvent_2"); + kernel.eventAction().adopt(evt_2); + + kernel.runAction().callAtBegin(evt_2.get(),&Geant4TestEventAction::begin); + kernel.runAction().callAtEnd (evt_2.get(),&Geant4TestEventAction::end); + + setupDetector(kernel,"SiVertexBarrel"); + setupDetector(kernel,"SiVertexEndcap"); + // .... more subdetectors here ..... + setupDetector(kernel,"LumiCal"); + setupDetector(kernel,"BeamCal"); + + kernel.configure(); + kernel.initialize(); + kernel.run(); + std::cout << "Successfully executed application .... " << std::endl; + kernel.terminate(); +} +\end{code} + +\noindent +\begin{tabular} {l||p{0cm}} +\docline{Line}{} +\docline{1}{The header file \tts{Geant4Config.h} contains a set of wrapper + classes to easy the creation of objects using the plugin mechanism and setting + properties to \tts{Geant4Action} objects. These helpers and the corresponding + functionality are not included in the wrapped classes themselves to not + clutter the code with stuff only used for the setup. + All contained objects are in the namespace \tts{DD4hep::Simulation::Setup}}. +\docline{6-10}{Save yourself specifying all the namespaces objects are in....} +\docline{13-19}{CINT processing pragmas. + Classes defined here will be available at the ROOT prompt + after this AClick is loaded.} +\docline{22-29}{Sampler to fill the sensitive detector sequences for each + subdetector with two entries: a handler and a monitor action. + Please note, that this here is example code and in real life specialized actions + will have to be provided for each subdetector.} +\docline{31}{Let's go for it. here the entry point starts....} +\docline{32}{Create the \tts{Geant4Kernel} object.} +\docline{33}{Load the geometry into \DDhep.} +\docline{34}{Redefine the setup of the sensitive detectors.} +\docline{36-40}{Create the generator action of type \tts{Geant4ParticleGun} with name + \tts{Gun}, set non-default properties and activate the configured object + by attaching it to the \tts{Geant4Kernel}.} +\docline{42-46}{Create a user defined begin-of-run action callback, set the properties + and attach it to the begin of run calls. To collect statistics extra member functions + are registered to be called at the beginning and the end of each event.} +\docline{48-51}{Create a user defined event action routine, set its properties + and attach it to the event action sequence.} +\docline{53-54}{Create a second event action and register it to the event action sequence. + This action will be called after the previously created action.} +\docline{56-57}{For this event action we want to receive callbacks at start- + and end-of-run to produce additional summary output.} +\docline{59-63}{Call the sampler routine to attach test actions to the subdetectors defined.} +\docline{65-66}{Configure, initialize and run the Geant4 application. + Most of the Geant4 actions will only be created here and the action sequences + created before will be attached now.} +\docline{69}{Terminate the Geant4 application and exit.} +\end{tabular} + +\newpage +\noindent +CINT currently cannot handle pointers to member functions~\footnote{This may change +in the future once ROOT uses \tts{clang} and \tts{cling} as the interpreting engine.}. +Hence the above AClick only works in compiled mode. To invoke the compilation the following +action is necessary from the ROOT prompt: + + +\begin{code} +$> root.exe + ******************************************* + * * + * W E L C O M E to R O O T * + * * + * Version 5.34/10 29 August 2013 * + * * + * You are welcome to visit our Web site * + * http://root.cern.ch * + * * + ******************************************* + +ROOT 5.34/10 (heads/v5-34-00-patches@v5-34-10-5-g0e8bac8, Sep 04 2013, 11:52:19 on linux) + +CINT/ROOT C/C++ Interpreter version 5.18.00, July 2, 2010 +Type ? for help. Commands must be C++ statements. +Enclose multiple statements between { }. +root [0] .X initAClick.C +.... Setting up the CINT include pathes and the link statements. + +root [1] .L ../DD4hep.trunk/DDG4/examples/exampleAClick.C+ +Info in <TUnixSystem::ACLiC>: creating shared library ....exampleAClick_C.so +.... some Cint warnings concerning member function pointers ..... + +root [2] exampleAClick() +.... and it starts ... +\end{code} + +\noindent +The above scripts are present in the DDG4/example directory located in svn. +The initialization script \tts{initAClick.C} may require customization +to cope with the installation paths. + +%============================================================================= +\subsection{Setting up DDG4 using Python} +\label{sec:ddg4-implementation-setup-python} +%============================================================================= + +\noindent +Given the reflection interface of ROOT, the setup of the simulation interface +using DD4hep is of course also possible using the python interpreted language. +In the following code example the setup of Geant4 using the \tts{ClicSid} +example is shown using python~\footnote{For comparison, the same example was +used to illustrate the setup using XML files.}. + +\begin{code} +import DDG4 +from SystemOfUnits import * + +""" + + DD4hep example setup using the python configuration + + @author M.Frank + @version 1.0 + +""" +def run(): + kernel = DDG4.Kernel() + kernel.loadGeometry("file:../DD4hep.trunk/DDExamples/CLICSiD/compact/compact.xml") + kernel.loadXML("DDG4_field.xml") + + lcdd = kernel.lcdd() + print '+++ List of sensitive detectors:' + for i in lcdd.detectors(): + o = DDG4.DetElement(i.second) + sd = lcdd.sensitiveDetector(o.name()) + if sd.isValid(): + print '+++ %-32s type:%s'%(o.name(), sd.type(), ) + + # Configure Run actions + run1 = DDG4.RunAction(kernel,'Geant4TestRunAction/RunInit') + run1.Property_int = 12345 + run1.Property_double = -5e15*keV + run1.Property_string = 'Startrun: Hello_2' + print run1.Property_string, run1.Property_double, run1.Property_int + run1.enableUI() + kernel.registerGlobalAction(run1) + kernel.runAction().add(run1) + + # Configure Event actions + evt2 = DDG4.EventAction(kernel,'Geant4TestEventAction/UserEvent_2') + evt2.Property_int = 123454321 + evt2.Property_double = 5e15*GeV + evt2.Property_string = 'Hello_2 from the python setup' + evt2.enableUI() + kernel.registerGlobalAction(evt2) + + evt1 = DDG4.EventAction(kernel,'Geant4TestEventAction/UserEvent_1') + evt1.Property_int=01234 + evt1.Property_double=1e11 + evt1.Property_string='Hello_1' + evt1.enableUI() + + kernel.eventAction().add(evt1) + kernel.eventAction().add(evt2) + + # Configure I/O + evt_root = DDG4.EventAction(kernel,'Geant4Output2ROOT/RootOutput') + evt_root.Control = True + evt_root.Output = "simple.root" + evt_root.enableUI() + + evt_lcio = DDG4.EventAction(kernel,'Geant4Output2LCIO/LcioOutput') + evt_lcio.Output = "simple_lcio" + evt_lcio.enableUI() + + kernel.eventAction().add(evt_root) + kernel.eventAction().add(evt_lcio) + + # Setup particle gun + gun = DDG4.GeneratorAction(kernel,"Geant4ParticleGun/Gun") + gun.energy = 0.5*GeV + gun.particle = 'e-' + gun.multiplicity = 1 + gun.enableUI() + kernel.generatorAction().add(gun) + + # Setup global filters for use in sensitive detectors + f1 = DDG4.Filter(kernel,'GeantinoRejectFilter/GeantinoRejector') + f2 = DDG4.Filter(kernel,'ParticleRejectFilter/OpticalPhotonRejector') + f2.particle = 'opticalphoton' + f3 = DDG4.Filter(kernel,'ParticleSelectFilter/OpticalPhotonSelector') + f3.particle = 'opticalphoton' + f4 = DDG4.Filter(kernel,'EnergyDepositMinimumCut') + f4.Cut = 10*MeV + f4.enableUI() + kernel.registerGlobalFilter(f1) + kernel.registerGlobalFilter(f2) + kernel.registerGlobalFilter(f3) + kernel.registerGlobalFilter(f4) + + # First the tracking detectors + seq = DDG4.SensitiveSequence(kernel,'Geant4SensDetActionSequence/SiVertexBarrel') + act = DDG4.SensitiveAction(kernel,'Geant4SimpleTrackerAction/SiVertexBarrelHandler','SiVertexBarrel') + seq.add(act) + seq.add(f1) + seq.add(f4) + act.add(f1) + + seq = DDG4.SensitiveSequence(kernel,'Geant4SensDetActionSequence/SiVertexEndcap') + act = DDG4.SensitiveAction(kernel,'Geant4SimpleTrackerAction/SiVertexEndcapHandler','SiVertexEndcap') + seq.add(act) + seq.add(f1) + seq.add(f4) + + seq = DDG4.SensitiveSequence(kernel,'Geant4SensDetActionSequence/SiTrackerBarrel') + act = DDG4.SensitiveAction(kernel,'Geant4SimpleTrackerAction/SiTrackerBarrelHandler','SiTrackerBarrel') + seq.add(act) + seq.add(f1) + seq.add(f4) + + seq = DDG4.SensitiveSequence(kernel,'Geant4SensDetActionSequence/SiTrackerEndcap') + act = DDG4.SensitiveAction(kernel,'Geant4SimpleTrackerAction/SiTrackerEndcapHandler','SiTrackerEndcap') + seq.add(act) + + seq = DDG4.SensitiveSequence(kernel,'Geant4SensDetActionSequence/SiTrackerForward') + act = DDG4.SensitiveAction(kernel,'Geant4SimpleTrackerAction/SiTrackerForwardHandler','SiTrackerForward') + seq.add(act) + + # Now the calorimeters + seq = DDG4.SensitiveSequence(kernel,'Geant4SensDetActionSequence/EcalBarrel') + act = DDG4.SensitiveAction(kernel,'Geant4SimpleCalorimeterAction/EcalBarrelHandler','EcalBarrel') + seq.add(act) + + seq = DDG4.SensitiveSequence(kernel,'Geant4SensDetActionSequence/EcalEndcap') + act = DDG4.SensitiveAction(kernel,'Geant4SimpleCalorimeterAction/EcalEndCapHandler','EcalEndcap') + seq.add(act) + + seq = DDG4.SensitiveSequence(kernel,'Geant4SensDetActionSequence/HcalBarrel') + act = DDG4.SensitiveAction(kernel,'Geant4SimpleCalorimeterAction/HcalBarrelHandler','HcalBarrel') + act.adoptFilter(kernel.globalFilter('OpticalPhotonRejector')) + seq.add(act) + + act = DDG4.SensitiveAction(kernel,'Geant4SimpleCalorimeterAction/HcalOpticalBarrelHandler','HcalBarrel') + act.adoptFilter(kernel.globalFilter('OpticalPhotonSelector')) + seq.add(act) + + seq = DDG4.SensitiveSequence(kernel,'Geant4SensDetActionSequence/HcalEndcap') + act = DDG4.SensitiveAction(kernel,'Geant4SimpleCalorimeterAction/HcalEndcapHandler','HcalEndcap') + seq.add(act) + + seq = DDG4.SensitiveSequence(kernel,'Geant4SensDetActionSequence/HcalPlug') + act = DDG4.SensitiveAction(kernel,'Geant4SimpleCalorimeterAction/HcalPlugHandler','HcalPlug') + seq.add(act) + + seq = DDG4.SensitiveSequence(kernel,'Geant4SensDetActionSequence/MuonBarrel') + act = DDG4.SensitiveAction(kernel,'Geant4SimpleCalorimeterAction/MuonBarrelHandler','MuonBarrel') + seq.add(act) + + seq = DDG4.SensitiveSequence(kernel,'Geant4SensDetActionSequence/MuonEndcap') + act = DDG4.SensitiveAction(kernel,'Geant4SimpleCalorimeterAction/MuonEndcapHandler','MuonEndcap') + seq.add(act) + + seq = DDG4.SensitiveSequence(kernel,'Geant4SensDetActionSequence/LumiCal') + act = DDG4.SensitiveAction(kernel,'Geant4SimpleCalorimeterAction/LumiCalHandler','LumiCal') + seq.add(act) + + seq = DDG4.SensitiveSequence(kernel,'Geant4SensDetActionSequence/BeamCal') + act = DDG4.SensitiveAction(kernel,'Geant4SimpleCalorimeterAction/BeamCalHandler','BeamCal') + seq.add(act) + + # Now build the physics list: + phys = kernel.physicsList() + phys.extends = 'FTFP_BERT' + #phys.transportation = True + phys.decays = True + phys.enableUI() + + ph = DDG4.PhysicsList(kernel,'Geant4PhysicsList/Myphysics') + ph.addParticleConstructor('G4BosonConstructor') + ph.addParticleConstructor('G4LeptonConstructor') + ph.addParticleProcess('e[+-]','G4eMultipleScattering',-1,1,1) + ph.addPhysicsConstructor('G4OpticalPhysics') + ph.enableUI() + phys.add(ph) + + phys.dump() + + kernel.configure() + kernel.initialize() + kernel.run() + kernel.terminate() + +if __name__ == "__main__": + run() + +\end{code} + +\newpage +%============================================================================= +\subsection{A Simple Example} +\label{sec:ddg4-implementation-simple-example} +%============================================================================= +\noindent +Bla-bal. + +\newpage + diff --git a/doc/LaTex/DDG4Manual.tex b/doc/LaTex/DDG4Manual.tex index 83a9c692c..fa718202b 100644 --- a/doc/LaTex/DDG4Manual.tex +++ b/doc/LaTex/DDG4Manual.tex @@ -79,2334 +79,12 @@ version & Date & Author \\[0.2cm] \hline \pagenumbering{arabic} \setcounter{page}{1} -%============================================================================= -\section{Introduction} -\label{sec:ddg4-user-manual-introduction} -%============================================================================= -\noindent -This manual should introduce to the DDG4 framework. -One goal of \DDG is to easily configure the simulation applications -capable of simulating the physics response of detector configurations -as they are used for example in high energy physics experiments. -In such simulation programs the user normally has to define the -experimental setup in terms of its geometry and in terms of its -active elements which sample the detector response. - -\noindent -The goal of \DDG is to generalize the configuration of a simulation -application to a degree, which does not force users to write code -to test a detector design. At the same time it should of course -be feasible to supply specialized user written modules which are supposed -to seamlessly operate together with standard modules supplied by the toolkit. -Detector-simulation depends strongly on the use of an underlying simulation -toolkit, the most prominent candidate nowadays being Geant4~\cite{bib:geant4}. -\DDhep supports simulation activities with Geant4 providing -an automatic translation mechanism between geometry representations. -The simulation response in the active elements of the detector -is strongly influenced by the technical -choices and precise simulations depends on the very specific detection techniques. - -\noindent -Similar to the aim of \DDhep~\cite{bib:DD4hep}, -where with time a standard palette of detector -components developed by users should become part of the toolkit, -\DDG also hopes to provide a standard palette of components used -to support simulation activities for detector layouts -where detector designers may base the simulation of a planned experiment -on these predefined components for initial design and optimization -studies. The longterm vision is to construct simulation applications -writing only new components not yet present i.e. the main work will be to -select the appropriate components from the palette and connect them -to a functional program. - -\noindent -This is not a manual to Geant4 nor the basic infrastructure of \DDhep. -It is assumed that this knowledge is present and the typical glossary -is known. - -%============================================================================= -\section{The Geant4 User Interface} -\label{sec:ddg4-user-manual-geant4-interface} -%============================================================================= - -\noindent -The Geant4 simulation toolkit~\cite{bib:geant4} implements a very complex -machinery to simulate the energy deposition of particles traversing materials. -To ease its usage for the clients and to shield clients from the complex -internals when actually implementing a simulation applications for a -given detector design, it provides several user hooks -as shown in Figure~\ref{fig:ddg4-g4runmanager-anatomy}. Each of these hooks -serves a well specialized purpose, but unfortunately also leads to very -specialized applications. One aim of \DDG is to formalize these user -actions so that the invocation at the appropriate time may be purely -data driven. -\begin{figure}[h] - \begin{center} - \includegraphics[height=70mm] {DDG4-G4RunManagerAnatomy.png} - \caption{The various user hooks provided by Geant4. Not shown here - is the callback system interfacing to the active elements - of the detector design.} - \label{fig:ddg4-g4runmanager-anatomy} - \end{center} -\end{figure} - -\noindent -In detail the following object-hooks allow the client to define user provided actions: -\begin{itemize}\itemcompact -\item The \bold{User Physics List} allows the client to customize and define - the underlying physics process(es) which define the particle interactions - inside the detector defined with the geometry description. - These interactions define the detector response in terms of - energy depositions. -\item The \bold{Run Action} is called once at the start and end of a run. - i.e. a series of generated events. These two callbacks - allow clients to define run-dependent actions such as statistics - summaries etc. -\item The \bold{Primary Generator Action} is called for every event. - During the callback all particles are created which form the - microscopic kinematic action of the particle collision. - This input may either origin directly from an event generator program - or come from file. -\item The \bold{Event Action} is called once at the start and the end of each event. - It is typically used for a simple analysis of the processed event. - If the simulated data should be written to some persistent medium, - the call at the end of the event processing is the appropriate place. -\item The \bold{Tracking Action} -\item The \bold{Stepping Action} -\item The \bold{Stacking Action} -\end{itemize} -\noindent -Geant4 provides all callbacks with the necessary information in the form of -appropriate arguments. - -\noindent -Besides the callback system, Geant4 provides callbacks whenever a particle -traverses a sensitive volume. These callbacks are called -- similar to event actions - once at the start and the end of the event, -but in addition, if either the energy deposit of a particle in the -sensitive volume exceeds some threshold. The callbacks are formalized within -the base class \tts{G4VSensitiveDetector}. - -%============================================================================= -\section{DDG4 Implementation} -\label{sec:ddg4-user-manual-implementation} -%============================================================================= - -\noindent -A basic design criteria of the a \DDG simulation application was to -process any user defined hook provided by Geant4 as a series of algorithmic -procedures, which could be implemented either using inheritance or by -a callback mechanism registering functions fulfilling a given signature. -Such sequences are provided for all actions mentioned in the list in -Section~\ref{sec:ddg4-user-manual-geant4-interface} as well as for -the callbacks to sensitive detectors. - -\noindent -The callback mechanism was introduced to allow for weak coupling between -the various actions. For example could an action performing monitoring -using histograms at the event level initialize or reset its histograms -at the start/end of each run. To do so, clearly a callback at the -start/end of a run would be necessary. - -\noindent -In the following sections a flexible and extensible interface to hooks -of Geant4 is discussed starting with the description of the basic -components \tts{Geant4Kernel} and \tts{Geant4Action} followed by the -implementation of the relevant specializations. -The specializations exposed are sequences of such actions, -which also call registered objects. -In later section the configuration and the combination of these components -forming a functional simulation application is presented. - -%============================================================================= -\subsection{The Application Core Object: Geant4Kernel} -\label{sec:ddg4-user-manual-implementation-geant4kernel} -%============================================================================= - -\noindent -The kernel object is the central context of a \DDG simulation application and -gives all clients access to the user hooks (see Figure~\ref{fig:ddg4-geant4-kernel}). -All Geant4 callback structures are exposed so that clients can easily -objects implementing the required interface or register callbacks with the -correct signature. Each of these action sequences is connected to an instance -of a Geant4 provided callback structure as it is shown in -Figure~\ref{fig:ddg4-g4runmanager-anatomy}. -\begin{figure}[h] - \begin{center} - \includegraphics[height=65mm] {DDG4-Geant4Kernel.png} - \caption{The main application object gives access to all sequencing actions - in a \DDG4 application. Sequence actions are only container of user actions - calling one user action after the other. Optionally single callbacks may - be registered to a user action.} - \label{fig:ddg4-geant4-kernel} - \end{center} -\end{figure} - -%============================================================================= -\subsection{Action Sequences} -\label{sec:ddg4-user-manual-implementation-geant4action-sequences} -%============================================================================= - -\noindent -As shown in - -%============================================================================= -\subsection{The Base Class of DDG4 Actions: Geant4Action} -\label{sec:ddg4-user-manual-implementation-geant4action-base} -%============================================================================= - -\noindent -The class \tts{Geant4Action} is a common component interface providing -the basic interface to the framework to -\begin{itemize}\itemcompact -\item configure the component using a property mechanism -\item provide an appropriate interface to Geant4 interactivity. The interactivity - included a generic way to change and access properties from the Geant4 UI - prompt as well as executing registered commands. -\item As shown in Figure~\ref{fig:ddg4-implementation-geant4-action}, the - base class also provides to its sub-class a reference to the \tts{Geant4Kernel} - objects through the \tts{Geant4Context}. -\end{itemize} -The \tts{Geant4Action} is a named entity and can be uniquely identified within -a sequence attached to one Geant4 user callback. -%============================================================================= -\begin{figure}[h] - \begin{center} - \includegraphics[height=30mm] {DDG4-Geant4Action.png} - \caption{The design of the common base class \tts{Geant4Action}.} - \label{fig:ddg4-implementation-geant4-action} - \end{center} -\end{figure} - -\noindent -\DDG knows two types of actions: global actions and anonymous actions. -Global actions are accessible externally from the \tts{Geant4Kernel} instance. -Global actions are also re-usable and hence may be contribute to several -action sequences (see the following chapters for details). Global actions -are uniquely identified by their name. -Anonymous actions are known only within one sequence and normally -are not shared between sequences. - -%============================================================================= -\subsubsection{The Properties of \bold{Geant4Action} Instances} -\label{sec:ddg4-implementation-geant4-action-properties} -%============================================================================= - -\noindent -Nearly any subclass of a \tts{Geant4Action} needs a flexible configuration -in order to be reused, modified etc. The implementation of the mechanism -uses a very flexible value conversion mechanism using \tts{boost::spirit}, -which support also conversions between unrelated types provided a dictionary -is present. - -\noindent -Properties are supposed to be member variables of a given action object. -To publish a property it needs to be declared in the constructor as shown here: -\begin{unnumberedcode} - declareProperty("OutputLevel", m_outputLevel = INFO); - declareProperty("Control", m_needsControl = false); -\end{unnumberedcode} -The internal setup of the \tts{Geant4Action} objects then ensure that -all declared properties will be set after the object construction to the -values set in the setup file. - -\noindent -\bold{Note:} Because the values can only be set \bold{after} the object -was constructed, the actual values may not be used in the constructor -of any base or sub-class. - -%============================================================================= -\subsection{Geant4 Action Sequences} -\label{sec:ddg4-user-manual-implementation-geant4action-sequences} -%============================================================================= - -\noindent -All Geant4 user hooks are realized as action sequences. As shown in -Figure~\ref{fig:ddg4-geant4-kernel} these sequences are accessible to the user, -who may attach specialized actions to the different action sequences. This -allows a flexible handing of specialized user actions e.g. to dynamically -add monitoring actions filling histograms or to implement alternative hit -creation mechanism in a sensitive detector for detailed detector studies. -Figure~\ref{fig:ddg4-implementation-sequence-calls} shows the schematic -call structure of an example {\tt{Geant4TrackingActionSequence}}:\\ -\begin{figure}[h] - \begin{center} - \includegraphics[width=150mm] {DDG4-TrackingActionCalls.png} - \caption{The design of the tracking action sequence. Specialized - tracking action objects inherit from the \tts{Geant4TrackingAction} - object and must be attached to the sequence.} - \label{fig:ddg4-implementation-sequence-calls} - \end{center} -\end{figure} - -\noindent -Geant4 calls the function from the virtual interface (\tw{G4UserTrackingAction}), -which is realised by the \tw{Geant4UserTrackingAction} with the single purpose to -propagate the call to the action sequence, which then calls all registered clients -of type \tw{Geant4TrackingAction}. - -\noindent -The main action sequences have a fixed name. These are -\begin{itemize} - -\item The \bold{RunAction} attached to the \tts{G4UserRunAction}, implemented - by the \tts{Geant4RunActionSequence} class and is called at the start and the end of - every run (beamOn). Members of the \tts{Geant4RunActionSequence} are of type - \tts{Geant4RunAction} and receive the callbacks by overloading the two routines: -\begin{unnumberedcode} -/// begin-of-run callback -virtual void begin(const G4Run* run); -/// End-of-run callback -virtual void end(const G4Run* run); -\end{unnumberedcode} - or register a callback with the signature {\tts{void (T::*)(const G4Run*)}} - either to receive begin-of-run or end-or-calls using the methods: -\begin{unnumberedcode} -/// Register begin-of-run callback. Types Q and T must be polymorph! -template <typename Q, typename T> void callAtBegin(Q* p, void (T::*f)(const G4Run*)); -/// Register end-of-run callback. Types Q and T must be polymorph! -template <typename Q, typename T> void callAtEnd(Q* p, void (T::*f)(const G4Run*)); -\end{unnumberedcode} - of the \tts{Geant4RunActionSequence} from the \tts{Geant4Context} object. - - -\item The \bold{EventAction} attached to the \tts{G4UserEventAction}, implemented - by the \tts{EventActionSequence} class and is called at the start and the end of - every event. Members of the \tts{Geant4EventActionSequence} are of type - \tts{Geant4EventAction} and receive the callbacks by overloading the two routines: -\begin{unnumberedcode} -/// Begin-of-event callback -virtual void begin(const G4Event* event); -/// End-of-event callback -virtual void end(const G4Event* event); -\end{unnumberedcode} - or register a callback with the signature {\tts{void (T::*)(const G4Event*)}} - either to receive begin-of-run or end-or-calls using the methods: -\begin{unnumberedcode} -/// Register begin-of-event callback -template <typename Q, typename T> void callAtBegin(Q* p, void (T::*f)(const G4Event*)); -/// Register end-of-event callback -template <typename Q, typename T> void callAtEnd(Q* p, void (T::*f)(const G4Event*)); -\end{unnumberedcode} - of the \tts{Geant4EventActionSequence} from the \tts{Geant4Context} object. - - -\item The \bold{GeneratorAction} attached to the \tts{G4VUserPrimaryGeneratorAction}, implemented - by the \tts{Geant4GeneratorActionSequence} class and is called at the start of - every event and provided all initial tracks from the Monte-Carlo generator. - Members of the \tts{Geant4GeneratorActionSequence} are of type - \tts{Geant4EventAction} and receive the callbacks by overloading the member function: -\begin{unnumberedcode} -/// Callback to generate primary particles -virtual void operator()(G4Event* event); -\end{unnumberedcode} - or register a callback with the signature {\tts{void (T::*)(G4Event*)}} - to receive calls using the method: -\begin{unnumberedcode} -/// Register primary particle generation callback. -template <typename Q, typename T> void call(Q* p, void (T::*f)(G4Event*)); -\end{unnumberedcode} - of the \tts{Geant4GeneratorActionSequence} from the \tts{Geant4Context} object. - -\end{itemize} -\begin{figure}[t] - \begin{center} - \includegraphics[width=160mm] {DDG4-TrackingAction.png} - \caption{The design of the tracking action sequence. Specialized - tracking action objects inherit from the \tts{Geant4TrackingAction} - object and must be attached to the sequence.} - \label{fig:ddg4-implementation-tracking-action} - \end{center} -\end{figure} - -\begin{itemize} -\item The \bold{TrackingAction} attached to the \tts{G4UserTrackingAction}, - implemented by the \tts{Geant4-} \tts{Tracking\-Action\-Sequence} class - and is called at the start and the end of tracking one single particle - trace through the material of the detector. - Members of the \tts{Geant4\-Tracking\-ActionSequence} are of type - \tts{Geant4TrackingAction} and receive the callbacks by overloading the member function: -\begin{unnumberedcode} -/// Pre-tracking action callback -virtual void begin(const G4Track* trk); -/// Post-tracking action callback -virtual void end(const G4Track* trk); -\end{unnumberedcode} - or register a callback with the signature {\tts{void (T::*)(const G4Step*, G4SteppingManager*)}} - to receive calls using the method: -\begin{unnumberedcode} -/// Register Pre-track action callback -template <typename Q, typename T> void callAtBegin(Q* p, void (T::*f)(const G4Track*)); -/// Register Post-track action callback -template <typename Q, typename T> void callAtEnd(Q* p, void (T::*f)(const G4Track*)); -\end{unnumberedcode} -Figure~\ref{fig:ddg4-implementation-tracking-action} show as an example -the design (class-diagram) of the \tts{Geant4TrackingAction}. - - -\item The \bold{SteppingAction} attached to the \tts{G4UserSteppingAction}, implemented - by the \tts{Geant4-} \tts{SteppingActionSequence} class and is called for each - step when tracking a particle. - Members of the \tts{Geant4SteppingActionSequence} are of type - \tts{Geant4SteppingAction} and receive the callbacks by overloading the member function: -\begin{unnumberedcode} -/// User stepping callback -virtual void operator()(const G4Step* step, G4SteppingManager* mgr); -\end{unnumberedcode} - or register a callback with the signature {\tts{void (T::*)(const G4Step*, G4SteppingManager*)}} - to receive calls using the method: -\begin{unnumberedcode} -/// Register stepping action callback. -template <typename Q, typename T> void call(Q* p, void (T::*f)(const G4Step*, - G4SteppingManager*)); -\end{unnumberedcode} - - -\item The \bold{StackingAction} attached to the - {\tts{G4UserStackingAction}}, implemented by the \tts{Geant4-}\\ - \tts{StackingActionSequence} class. - Members of the \tts{Geant4StackingActionSequence} are of type\\ - \detdesc{html/class_d_d4hep_1_1_simulation_1_1_geant4_stacking_action.html} - {\tts{Geant4StackingAction}} and receive the callbacks by overloading the member functions: -\begin{unnumberedcode} -/// New-stage callback -virtual void newStage(); -/// Preparation callback -virtual void prepare(); -\end{unnumberedcode} - or register a callback with the signature {\tts{void (T::*)()}} - to receive calls using the method: -\begin{unnumberedcode} -/// Register begin-of-event callback. Types Q and T must be polymorph! -template <typename T> void callAtNewStage(T* p, void (T::*f)()); -/// Register end-of-event callback. Types Q and T must be polymorph! -template <typename T> void callAtPrepare(T* p, void (T::*f)()); -\end{unnumberedcode} -\end{itemize} - -\noindent -All sequence types support the method \tts{void adopt(T* member\_reference)} -to add the members. Once adopted, the sequence takes ownership and manages -the member. The design of all sequences is very similar. - -%============================================================================= -\subsection{Sensitive Detectors} -\label{sec:ddg4-user-manual-geant4sensitivedetectors} -%============================================================================= - -\noindent -Sensitive detectors are associated by the detector designers to all active -materials, which would produce a signal which can be read out. In Geant4 this concept -is realized by using a base class \tts{G4VSensitiveDetector}. -The mandate of a sensitive detector is the construction of hit objects -using information from steps along a particle track. -The \tts{G4VSensitiveDetector} receives -a callback at the begin and the end of the event processing and at each step -inside the active material whenever an energy deposition occurred. - -\begin{figure}[t] - \begin{center} - \includegraphics[height=110mm] {DDG4-Sensitive-detector.png} - \caption{The sensitive detector design. The actual energy deposits are - collected in user defined subclasses of the \tts{Geant4Sensitive}. - Here, as an example possible actions called \tts{TrackerHitCollector}, - \tts{TrackerDetailedHitCollector} and \tts{TrackerHitMonitor} are shown.} - \label{fig:ddg4-implementation-sensitive-detector} - \end{center} -\end{figure} - -\noindent -The sensitive actions do not necessarily deal only the collection of energy -deposits, but could also be used to simply monitor the performance of the -active element e.g. by producing histograms of the absolute value or the -spacial distribution of the depositions. - -\noindent -Within \DDG the concept of sensitive detectors is implemented as a -configurable action sequence of type -\detdesc{html/class_d_d4hep_1_1_simulation_1_1_geant4_sens_det_action_sequence.html} -{\tts{Geant4SensDetActionSequence}} -calling members of the type -\detdesc{html/struct_d_d4hep_1_1_simulation_1_1_geant4_sensitive.html} -{\tts{Geant4Sensitive}} as shown in -Figure~\ref{fig:ddg4-implementation-sensitive-detector}. The actual processing -part of such a sensitive action is only called if the and of a set of -required filters of type \tts{Geant4Filter} is positive (see also -section~\ref{sec:ddg4-implementation-sensitive-detector-filters}). No filter -is also positive. Possible filters are e.g. particle filters, which ignore the -sensitive detector action if the particle is a \tts{geantino} or if the -energy deposit is below a given threshold. - -\noindent -Objects of type \tts{Geant4Sensitive} receive the callbacks by overloading the -member function: -\begin{unnumberedcode} - /// Method invoked at the beginning of each event. - virtual void begin(G4HCofThisEvent* hce); - /// Method invoked at the end of each event. - virtual void end(G4HCofThisEvent* hce); - /// Method for generating hit(s) using the information of G4Step object. - virtual bool process(G4Step* step, G4TouchableHistory* history); - /// Method invoked if the event was aborted. - virtual void clear(G4HCofThisEvent* hce); -\end{unnumberedcode} -or register a callback with the signature {\tts{void (T::*)(G4HCofThisEvent*)}} -respectively {\tts{void (T::*)(G4Step*, G4TouchableHistory*)}} -to receive callbacks using the methods: -\begin{unnumberedcode} - /// Register begin-of-event callback - template <typename T> void callAtBegin(T* p, void (T::*f)(G4HCofThisEvent*)); - /// Register end-of-event callback - template <typename T> void callAtEnd(T* p, void (T::*f)(G4HCofThisEvent*)); - /// Register process-hit callback - template <typename T> void callAtProcess(T* p, void (T::*f)(G4Step*, G4TouchableHistory*)); - /// Register clear callback - template <typename T> void callAtClear(T* p, void (T::*f)(G4HCofThisEvent*)); -\end{unnumberedcode} -Please refer to the Geant4 Applications manual from the Geant4 web page for -further details about the concept of sensitive detectors. - -%============================================================================= -\subsubsection{Helpers of Sensitive Detectors: The Geant4VolumeManager} -\label{sec:ddg4-user-manual-geant4volumemanager}%============================================================================= - -\noindent -Sooner or later, when a hit is created in a sensitive placed volume, the -hit must be associated with this volume. For this purpose \DDhep provides -the concept of the \tw{VolumeManager}, which identifies placed volumes uniquely -by a 64-bit identifier, the $CellID$. This mechanism allows to quickly -retrieve a given volume given the hit data containing the $CellID$. -The $CellID$ is a very compressed representation for any element in the -hierarchy of placed volumes to the sensitive volume in question. - -\noindent -During the simulation the reverse mechanism must be applied: Geant4 provides -the hierarchy of \tw{G4PhysicalVolumes} to the hit location and the local coordinates -of the hit within the sensitive volume. Hence to determine the volume identifier -is essential to store hits so that they can be later accessed and processed efficiently. -This mechanism is provided by the \tw{Geant4VolumeManager}. Clients typically do not -interact with this object, any access necessary is provided by the -\tw{Geant4Sensitive} action: -\begin{unnumberedcode} - /// Method for generating hit(s) using the information of G4Step object. - bool MySensitiveAction:process(G4Step* step,G4TouchableHistory* /*hist*/ ) { - ... - Hit* hit = new Hit(); - // *** Retrieve the cellID *** - hit->cellID = cellID(step); - ... - } -\end{unnumberedcode} -The call is realized using a member function provided by the -\tw{Geant4Sensitive} action: -\begin{unnumberedcode} - /// Returns the cellID of the sensitive volume corresponding to the step - /** The CellID is the VolumeID + the local coordinates of the sensitive area. - * Calculated by combining the VolIDS of the complete geometry path (Geant4TouchableHistory) - * from the current sensitive volume to the world volume - */ - long long int cellID(G4Step* step); -\end{unnumberedcode} - -\noindent -\bold{Note:}\\ -The \tw{Geant4VolumeManager} functionality is not for free! It requires that - - -\noindent --- match Geant4 volume with TGeo volume - -%============================================================================= -\subsubsection{DDG4 Intrinsic Sensitive Detectors} -%============================================================================= -\noindent -Currently there are two generic sensitive detectors implemented in DDG4: -\begin{itemize}\itemcompact -\item The \tw{Geant4TrackerAction}, which may be used to handle tracking devices. - This sensitive detector produces one hit for every energy deposition of Geant4 - i.e. for every callback to -\begin{unnumberedcode} - /// Method for generating hit(s) using the information of G4Step object. - virtual bool process(G4Step* step, G4TouchableHistory* history); -\end{unnumberedcode} - See the implementation file - \detdesc{html/_geant4_s_d_actions_8cpp_source.html}{DDG4/plugins/Geant4SDAction.cpp} - for details. The produced hits are of type - \detdesc{html/_geant4_data_8h_source.html}{Geant4Tracker::Hit}. - -\item The \tw{Geant4CalorimeterAction}, which may be used to handle - generic calorimeter like devices. - This sensitive detector produces at most one hit for every cell in the calorimeter. - If several tracks contribute to the energy deposit of this cell, the contributions - are added up. - See the implementation file - \detdesc{html/_geant4_s_d_actions_8cpp_source.html}{DDG4/plugins/Geant4SDAction.cpp} - for details. The produced hits are of type - \detdesc{html/_geant4_data_8h_source.html}{Geant4Calorimeter::Hit}. - propagate the MC truth information with respect to each track kept in the - particle record. -\end{itemize} - -\noindent -Both sensitive detectors use the \tw{Geant4VolumeManager} discussed in -section~\ref{sec:ddg4-user-manual-geant4volumemanager} to identify the sensitive elements. - -\noindent -\bold{PLEASE NOTE:}\\ -The above palette of generic sensitive detectors only contains two very -often used implementations. We hope, that this palette over time grows from -external contributions of other generic sensitive detectors. We would be happy -to extend this palette with other generic implementations. One example would -be the handling of the simulation response for optical detectors like RICH-Cerenkov -detectors. - -%============================================================================= -\subsubsection{Sensitive Detector Filters} -\label{sec:ddg4-implementation-sensitive-detector-filters} -%============================================================================= - -\noindent -The concept of filters allows to build more flexible sensitive detectors by -restricting the hit processing of a given instance of a sensitive action. - -\begin{itemize}\itemcompact -\item Examples would be to demand a given particle type before a sensitive action is -invoked: a sensitive action dealing with optical photons (RICH detectors, etc), -would e.g. not be interested in energy depositions of other particles. -A filter object restricting the particle type to optical photons would -be appropriate. -\item Another example would be to implement a special action instance, which would -be only called if the filter requires a minimum energy deposit. -\end{itemize} -There are plenty of possible applications, hence we would like -to introduce this feature here. - -\noindent -Filters are called by Geant4 before the -hit processing in the sensitive detectors start. The global filters -may be shared between many sensitive detectors. Alternatively filters -may be directly attached to the sensitive detector in question. -Attributes are directly passed as properties to the filter action. - -\noindent -Technically do \tw{Geant4Filter} objects inherit from the base class -\tw{Geant4Filter} (see Figure~\ref{fig:ddg4-implementation-sensitive-detector-filters}. -Any filter inherits from the common base class \tw{Geant4Filter}, then -several specializations may be configured like filters to select/reject -particles, to specify the minimal energy deposit to be processed etc. -A sensitive detector is called if the filter callback with the signature -returns a true result: -\begin{unnumberedcode} - /// Filter action. Return true if hits should be processed - virtual bool operator()(const G4Step* step) const; -\end{unnumberedcode} -\begin{figure}[h] - \begin{center} - \includegraphics[height=65mm] {DDG4-SensitiveFilterClasses.png} - \caption{The sensitive detector filters design. The shown class - diagram is actually implemented.} - \label{fig:ddg4-implementation-sensitive-detector-filters} - \end{center} -\end{figure} - -\newpage - -%============================================================================= -\subsection{The Geant4 Physics List} -\label{sec:ddg4-implementation-physics-list} -%============================================================================= -\noindent -Geant4 provides the base class \tts{G4VUserPhysicsList}, which allows users -to implement customized physics according to the studies to be made. -Any user defined physics list must provide this interface. DDG4 provides such an interface -through the ROOT plugin mechanism using the class \tts{G4VModularPhysicsList}. -The flexibility of \DDG allows for several possibilities to setup the Geant4 -physics list. Instead of explicitly coding the physics list, \DDG foresees the -usage of the plugin mechanism to instantiate the necessary calls to Geant4 in a -sequence of actions: -\begin{itemize} -\item The \bold{physics list} is realized as a sequence of actions of type - \detdesc{html/class_d_d4hep_1_1_simulation_1_1_geant4_physics_list_action_sequence.html} - {\tts{Geant4PhysicsListActionSequence}}. - Members of the \detdesc{html/class_d_d4hep_1_1_simulation_1_1_geant4_physics_list_action_sequence.html} - {\tts{Geant4PhysicsListActionSequence}} are of type - \detdesc{html/class_d_d4hep_1_1_simulation_1_1_geant4_physics_list.html} - {\tts{Geant4PhysicsList}} and receive the callbacks by overloading - the member functions: -\begin{unnumberedcode} - /// Callback to construct the physics constructors - virtual void constructProcess(Geant4UserPhysics* interface); - /// constructParticle callback - virtual void constructParticles(Geant4UserPhysics* particle); - /// constructPhysics callback - virtual void constructPhysics(Geant4UserPhysics* physics); -\end{unnumberedcode} - or register a callback with the signature {\tts{void (T::*)(Geant4UserPhysics*)}} - to receive calls using the method: -\begin{unnumberedcode} - /// Register process construction callback t - template <typename Q, typename T> void constructProcess(Q* p, void (T::*f)(Geant4UserPhysics*)); - /// Register particle construction callback - template <typename Q, typename T> void constructParticle(Q* p, void (T::*f)(Geant4UserPhysics*)); -\end{unnumberedcode} - The argument of type \detdesc{html/class_d_d4hep_1_1_simulation_1_1_geant4_user_physics.html} - {\tts{Geant4UserPhysics}} provides a basic interface to the original - \tts{G4VModular}- \tts{PhysicsList}, which allows to register physics constructors etc. - -\item In most of the cases the above approach is an overkill and often even too flexible. - Hence, alternatively, the physics list may consist of a single entry of type - \detdesc{html/class_d_d4hep_1_1_simulation_1_1_geant4_physics_list.html} - {\tts{Geant4PhysicsList}}. -\end{itemize} - -\noindent -The basic implementation of the \tts{Geant4PhysicsList} supports the usage of various -\begin{itemize}\itemcompact -\item \detdesc{html/_geant4_particles_8cpp_source.html}{particle constructors}, - such as single particle constructors like - \tts{G4Gamma} or \tts{G4Proton}, or whole particle groups like - \tts{G4BosonConstructor} or \tts{G4IonConstrutor}, -\item \detdesc{html/_geant4_processes_8cpp_source.html}{physics process constructors}, - such as e.g. \tts{G4GammaConversion}, - \tts{G4PhotoElectricEffect} or\\ \tts{G4ComptonScattering}, -\item \detdesc{html/_geant4_physics_constructors_8cpp_source.html}{physics constructors} - combining particles and the corresponding - interactions, such as\\ e.g. \tts{G4OpticalPhysics}, - \tts{HadronPhysicsLHEP} or \tts{G4HadronElasticPhysics} and -\item \detdesc{html/_geant4_particles_8cpp_source.html}{predefined Geant4 physics lists}, - such as \tts{FTFP\_BERT}, - \tts{CHIPS} or \tts{QGSP\_INCLXX}. This option is triggered by the - content of the string property "extends" of the \tts{Geant4Kernel::physicsList()} action. -\end{itemize} -These constructors are internally connected to the above callbacks to register themselves. -The constructors are instantiated using the ROOT plugin mechanism. - -\noindent -The description of the above interface is only for completeness. The basic idea is, -that the physics list with its particle and physics constructors is configured -entirely data driven using the setup mechanism described in the following -chapter. However, DDG4 is not limited to the data driven approach. Specialized -physics lists may be supplied, but there should be no need. -New physics lists could always be composed by actually providing new physics -constructors and actually publishing these using the factory methods: -\begin{code} -// Framework include files -#include "DDG4/Factories.h" - -#include "My_Very_Own_Physics_Constructor.h" -DECLARE_GEANT4_PHYSICS(My_Very_Own_Physics_Constructor) -\end{code} -where \tts{My\_Very\_Own\_Physics\_Constructor} represents a sub-class of -\tts{G4VPhysicsConstructor}. - -\newpage -%============================================================================= -\subsection{The Support of the Geant4 UI: \tw{Geant4UIMessenger}} -\label{sec:ddg4-user-manual-geant4action-base} -%============================================================================= - -\noindent -The support of interactivity in Geant4 is mandatory to debug detector -setups in small steps. The Geant4 toolkit did provide for this reason -a machinery of UI commands. -\begin{figure}[h] - \begin{center} - \includegraphics[height=70mm] {DDG4-UIMessenger.png} - \caption{The design of the \tts{Geant4UIMessenger} class responsible for - the interaction between the user and the components of \DDG and Geant4.} - \label{fig:ddg4-tracking-action} - \end{center} -\end{figure} - -\noindent -The UI control is enabled, as soon as the property "Control" (boolean) is set to true. -Be default all properties of the action are exported. -Similar to the callback mechanism described above it is also feasible to -register any object callback invoking a method of a \tts{Geant4Action}-subclass. - -\noindent -The following (shortened) screen dump illustrates the usage of the -generic interface any Geant4Action offers: -\begin{unnumberedcode} -Idle> ls -Command directory path : / - Sub-directories : - /control/ UI control commands. - /units/ Available units. - /process/ Process Table control commands. - /ddg4/ Control for all named Geant4 actions - ... -Idle> cd /ddg4 -Idle> ls -... -Control for all named Geant4 actions - - Sub-directories : - /ddg4/RunInit/ Control hierarchy for Geant4 action:RunInit - /ddg4/RunAction/ Control hierarchy for Geant4 action:RunAction - /ddg4/EventAction/ Control hierarchy for Geant4 action:EventAction - /ddg4/GeneratorAction/ Control hierarchy for Geant4 action:GeneratorAction - /ddg4/LCIO1/ Control hierarchy for Geant4 action:LCIO1 - /ddg4/Smear1/ Control hierarchy for Geant4 action:Smear1 - /ddg4/PrimaryHandler/ Control hierarchy for Geant4 action:PrimaryHandler - /ddg4/TrackingAction/ Control hierarchy for Geant4 action:TrackingAction - /ddg4/SteppingAction/ Control hierarchy for Geant4 action:SteppingAction - /ddg4/ParticleHandler/ Control hierarchy for Geant4 action:ParticleHandler - /ddg4/UserParticleHandler/ Control hierarchy for Geant4 action:UserParticleHandler - ... -Idle> ls Smear1 -Command directory path : /ddg4/Smear1/ - ... - Commands : - show * Show all properties of Geant4 component:Smear1 - Control * Property item of type bool - Mask * Property item of type int - Name * Property item of type std::string - Offset * Property item of type ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > - OutputLevel * Property item of type int - Sigma * Property item of type ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<double> > - name * Property item of type std::string -Idle> Smear1/show -PropertyManager: Property Control = True -PropertyManager: Property Mask = 1 -PropertyManager: Property Name = 'Smear1' -PropertyManager: Property Offset = ( -20 , -10 , -10 , 0 ) -PropertyManager: Property OutputLevel = 4 -PropertyManager: Property Sigma = ( 12 , 8 , 8 , 0 ) -PropertyManager: Property name = 'Smear1' - -Idle> Smear1/Offset (200*mm, -3*mm, 15*mm, 10*ns) -Geant4UIMessenger: +++ Smear1> Setting property value Offset = (200*mm, -3*mm, 15*mm, 10*ns) - native:( 200 , -3 , 15 , 10 ). -Idle> Smear1/show -... -PropertyManager: Property Offset = ( 200 , -3 , 15 , 10 ) - -\end{unnumberedcode} - - -\newpage -%============================================================================= -\section{Setting up DDG4} -\label{sec:ddg4-implementation-setup} -%============================================================================= - -\noindent -\DDG offers several possibilities to configure a simulation application -using -\begin{itemize}\itemcompact -\item XML files, -\item by coding a setup script loaded from the \tts{ROOT} interpreter - with the AClick mechanism. -\item by creating a setup script using \tts{python} and - \tts{ROOT}'s reflection mechanism exposed by \tts{PyROOT}. -\end{itemize} -The following subsection describe these different mechanism. An attempt was made -to match the naming conventions of all approaches where possible. - -%============================================================================= -\subsection{Setting up DDG4 using XML} -\label{sec:ddg4-implementation-setup-xml} -%============================================================================= - -\noindent -A special plugin was developed to enable the configuration of \DDG using -XML structures. These files are parsed identically to the geometry setup -in \DDhep the only difference is the name of the root-element, which for -\DDG is \tts{<geant4\_setup>}. -The following code snippet shows the basic structure of a \DDG setup file: -\begin{unnumberedcode} -<geant4_setup> - <physicslist> ,,, </physicslist> <!-- Definition of the physics list --> - <actions> ... </actions> <!-- The list of global actions --> - <phases> ... </phases> <!-- The definition of the various phases --> - <filters> ... </filters> <!-- The list of global filter actions --> - <sequences> ... </sequences> <!-- The list of defined sequences --> - <sensitive_detectors> ... </sensitive_detectors> <!-- The list of sensitive detectors --> - <properties> ... </properties> <!-- Free format option sequences --> -</geant4_setup> -\end{unnumberedcode} -To setup a \DDG4 application any number of xml setup files may be interpreted -iteratively. In the following subsections the content of these first level sub-trees will -be discussed. - -%============================================================================= -\subsubsection{Setup of the Physics List} -\label{sec:ddg4-setup-xml-physicslist} -%============================================================================= - -\noindent -The main tag to setup a physics list is \tts{<physicslist>} with the -\tts{name} attribute defining the instance of the \tts{Geant4PhysicsList} object. -An example code snippet is shown below in Figure~\ref{fig:ddg4-setup-xml-physicslist}. - -\begin{code} -<geant4_setup> - <physicslist name="Geant4PhysicsList/MyPhysics.0"> - - <extends name="QGSP_BERT"/> <!-- Geant4 basic Physics list --> - - <particles> <!-- Particle constructors --> - <construct name="G4Geantino"/> - <construct name="G4ChargedGeantino"/> - <construct name="G4Electron"/> - <construct name="G4Gamma"/> - <construct name="G4BosonConstructor"/> - <construct name="G4LeptonConstructor"/> - <construct name="G4MesonConstructor"/> - <construct name="G4BaryonConstructor"/> - ... - </particles> - - <processes> <!-- Process constructors --> - <particle name="e[+-]" cut="1*mm"> - <process name="G4eMultipleScattering" ordAtRestDoIt="-1" ordAlongSteptDoIt="1" - ordPostStepDoIt="1"/> - <process name="G4eIonisation" ordAtRestDoIt="-1" ordAlongSteptDoIt="2" - ordPostStepDoIt="2"/> - </particle> - <particle name="mu[+-]"> - <process name="G4MuMultipleScattering" ordAtRestDoIt="-1" ordAlongSteptDoIt="1" - ordPostStepDoIt="1"/> - <process name="G4MuIonisation" ordAtRestDoIt="-1" ordAlongSteptDoIt="2" - ordPostStepDoIt="2"/> - </particle> - ... - </processes> - - <physics> <!-- Physics constructors --> - <construct name="G4EmStandardPhysics"/> - <construct name="HadronPhysicsQGSP"/> - ... - </physics> - - </physicslist> -</geant4_setup> -\end{code} -\begin{figure}[h] -\caption{XML snippet showing the configuration of a physics list.} -\label{fig:ddg4-setup-xml-physicslist} -\end{figure} - -\begin{itemize}\itemcompact -\item To base all these constructs on an already existing predefined Geant4 physics list - use the \tts{<extends>} tag with the attribute containing the name of the physics list - as shown in line 4. -\item To trigger a call to a \bold{particle constructors} (line 7-14), use the \tts{<particles>} section - and define the Geant4 particle constructor to be called by name. To trigger a call to -\item \bold{physics process constructors}, as shown in line 19-30, - Define for each particle matching the name pattern (regular expression!) and the - default cut value for the corresponding processes. The attributes ordXXXX correspond - to the arguments of the Geant4 call \\ - \tts{G4ProcessManager::AddProcess(process,ordAtRestDoIt, ordAlongSteptDoIt,ordPostStepDoIt);} - The processes themself are created using the ROOT plugin mechanism. - To trigger a call to -\item \bold{physics constructors}, as shown in line 34-35, use the \tts{<physics>} section. -\end{itemize} -If only a predefined physics list is used, which probably already satisfies very many use cases, -all these section collapse to: -\begin{code} -<geant4_setup> - <physicslist name="Geant4PhysicsList/MyPhysics.0"> - <extends name="QGSP_BERT"/> <!-- Geant4 basic Physics list --> - </physicslist> -</geant4_setup> -\end{code} - -%============================================================================= -\subsubsection{Setup of Global Geant4 Actions} -\label{sec:ddg4-setup-xml-geant4-actions} -%============================================================================= - -\noindent -Global actions must be defined in the \tts{<actions>} section as shown in the following snippet: -\begin{code} -<geant4_setup> - <actions> - <action name="Geant4TestRunAction/RunInit"> - <properties Property_int="12345" - Property_double="-5e15" - Property_string="Startrun: Hello_2"/> - </action> - <action name="Geant4TestEventAction/UserEvent_2" - Property_int="1234" - Property_double="5e15" - Property_string="Hello_2" /> - </actions> -</geant4_setup> -\end{code} -The default properties of \bold{every} \tts{Geant4Action} object are: -\begin{unnumberedcode} -Name [string] Action name -OutputLevel [int] Flag to customize the level of printout -Control [boolean] Flag if the UI messenger should be installed. -\end{unnumberedcode} -The \tts{name} attribute of an action child is a qualified name: The first part -denotes the type of the plugin (i.e. its class), the second part the name of the instance. -Within one collection the instance \tts{name} must be unique. -Properties of Geant4Actions are set by placing them as attributes into the -\tts{<properties>} section. - -%============================================================================= -\subsubsection{Setup of Geant4 Filters} -\label{sec:ddg4-setup-xml-geant4-filters} -%============================================================================= -\noindent -Filters are special actions called by \tts{Geant4Sensitive}s. -Filters may be global or anonymous i.e. reusable by several sensitive detector -sequences as illustrated in Section~\ref{sec:ddg4-setup-xml-geant4-sequences}. -The setup is analogous to the setup of global actions: -\begin{code} - <filters> - <filter name="GeantinoRejectFilter/GeantinoRejector"/> - <filter name="ParticleRejectFilter/OpticalPhotonRejector"> - <properties particle="opticalphoton"/> - </filter> - <filter name="ParticleSelectFilter/OpticalPhotonSelector"> - <properties particle="opticalphoton"/> - </filter> - <filter name="EnergyDepositMinimumCut"> - <properties Cut="10*MeV"/> - </filter> - <!-- ... next global filter ... --> - </filters> -\end{code} -Global filters are accessible from the \tts{Geant4Kernel} object. - -%============================================================================= -\subsubsection{Geant4 Action Sequences} -\label{sec:ddg4-setup-xml-geant4-sequences} -%============================================================================= - -\noindent -\tts{Geant4 Action Sequences} by definition are \tts{Geant4Action} objects. -Hence, they share the setup mechanism with properties etc. For the setup -mechanism two different types of sequences are known to \DDG: -{\it{Action sequences}} and {\it{Sensitive detector sequences}}. Bot are declared in -the \tts{sequences} section: -\begin{code} -<geant4_setup> - <sequences> - <sequence name="Geant4EventActionSequence/EventAction"> <!-- Sequence "EventAction" of type - "Geant4EventActionSequence" --> - <action name="Geant4TestEventAction/UserEvent_1"> <!-- Anonymous action --> - <properties Property_int="01234" <!-- Properties go inline --> - Property_double="1e11" - Property_string="'Hello_1'"/> - </action> - <action name="UserEvent_2"/> <!-- Global action defined in "actions" --> - <!-- Only the name is referenced here --> - <action name="Geant4Output2ROOT/RootOutput"> <!-- ROOT I/O action --> - <properties Output="simple.root"/> <!-- Output file property --> - </action> - <action name="Geant4Output2LCIO/LCIOOutput"> <!-- LCIO output action --> - <properties Output="simple.lcio"/> <!-- Output file property --> - </action> - </sequence> - - - <sequence sd="SiTrackerBarrel" type="Geant4SensDetActionSequence"> - <filter name="GeantinoRejector"/> - <filter name="EnergyDepositMinimumCut"/> - <action name="Geant4SimpleTrackerAction/SiTrackerBarrelHandler"/> - </sequence> - <sequence sd="SiTrackerEndcap" type="Geant4SensDetActionSequence"> - <filter name="GeantinoRejector"/> - <filter name="EnergyDepositMinimumCut"/> - <action name="Geant4SimpleTrackerAction/SiTrackerEndcapHandler"/> - </sequence> - <!-- ... next sequence ... --> - </sequences> -</geant4_setup> -\end{code} -Here firstly the \bold{EventAction} sequence is defined with its members. -Secondly a sensitive detector sequence is defined for the subdetector -\tts{SiTrackerBarrel} of type \tts{Geant4SensDetActionSequence}. -The sequence uses two filters: \tts{GeantinoRejector} to not generate hits -from geantinos and \tts{EnergyDepositMinimumCut} to enforce a minimal energy deposit. -These filters are global i.e. they may be applied by many subdetectors. -The setup of global filters is described in -Section~\ref{sec:ddg4-setup-xml-geant4-filters}. -Finally the action \tts{SiTrackerEndcapHandler} of type \tts{Geant4SimpleTrackerAction} -is chained, which collects the deposited energy and -creates a collection of hits. The \tts{Geant4SimpleTrackerAction} is a template -callback to illustrate the usage of sensitive elements in \DDG. -The resulting hit collection of these handlers by default have the same name as the -object instance name. -Analogous below the sensitive detector sequence for the subdetector -\tts{SiTrackerEndcap} is shown, which reuses the same filter actions, but will build its own -hit collection. - -\noindent -\bold{Please note:} -\begin{itemize}\itemcompact -\item \bold{It was already mentioned, but once again}: Event-, run-, generator-, tracking-, - stepping- and stacking actions sequences have predefined names! - These names are fixed and part of the \bold{common knowledge}, they cannot be altered. - Please refer to - Section~\ref{sec:ddg4-user-manual-implementation-geant4action-sequences} - for the names of the global action sequences. -\item the sensitive detector sequences are matched by the attribute \tts{sd} to the - subdetectors created with the \DDhep detector description package. Values must match! -\item In the event that several xml files are parsed it is absolutely vital that - the \tts{<actions>} section is interpreted \bold{before} the \tts{sequences}. -\item For each XML file several \tts{<sequences>} are allowed. -\noindent -\end{itemize} - -%============================================================================= -\subsubsection{Setup of Geant4 Sensitive Detectors} -\label{sec:ddg4-setup-xml-geant4-sensitive detectors} -%============================================================================= -\begin{code} - <geant4_setup> - <sensitive_detectors> - <sd name="SiTrackerBarrel" - type="Geant4SensDet" - ecut="10.0*MeV" - verbose="true" - hit_aggregation="position"> - </sd> - <!-- ... next sensitive detector ... --> - </sensitive_detectors> - </geant4_setup> -\end{code} - - - -%============================================================================= -\subsubsection{Miscellaneous Setup of Geant4 Objects} -\label{sec:ddg4-setup-xml-geant4-objects} -%============================================================================= - -\noindent -This section is used for the flexible setup of auxiliary objects such as the -electromagnetic fields used in Geant4: -\begin{code} - <geant4_setup> - <properties> - <attributes name="geant4_field" - id="0" - type="Geant4FieldSetup" - object="GlobalSolenoid" - global="true" - min_chord_step="0.01*mm" - delta_chord="0.25*mm" - delta_intersection="1e-05*mm" - delta_one_step="0.001*mm" - eps_min="5e-05*mm" - eps_max="0.001*mm" - stepper="HelixSimpleRunge" - equation="Mag_UsualEqRhs"> - </attributes> - ... - </properties> - </geant4_setup> -\end{code} -Important are the tags \tts{type} and \tts{object}, which are used to firstly -define the plugin to be called and secondly define the object from the \DDhep -description to be configured for the use within Geant4. - -%============================================================================= -\subsubsection{Setup of Geant4 Phases} -\label{sec:ddg4-setup-xml-geant4-phases} -%============================================================================= - -\noindent -Phases are configured as shown below. -However, the use is \bold{discouraged}, -since it is not yet clear if there are appropriate use cases! -\begin{code} - <phases> - <phase type="RunAction/begin"> - <action name="RunInit"/> - <action name="Geant4TestRunAction/UserRunInit"> - <properties Property_int="1234" - Property_double="5e15" - Property_string="'Hello_2'"/> - </action> - </phase> - <phase type="EventAction/begin"> - <action name="UserEvent_2"/> - </phase> - <phase type="EventAction/end"> - <action name="UserEvent_2"/> - </phase> - ... - </phases> -\end{code} - -\newpage -%============================================================================= -\subsection{Setting up DDG4 using ROOT-CINT} -\label{sec:ddg4-implementation-setup-root-cint} -%============================================================================= - -\noindent -The setup of \DDG directly from the the ROOT interpreter using the AClick -mechanism is very simple, but mainly meant for purists (like me ;-)), -since it is nearly equivalent to the explicit setup within a \tts{C++} -main program. -The following code section shows how to do it. For explanation the code -segment is discussed below line by line. -\begin{code} -#include "DDG4/Geant4Config.h" -#include "DDG4/Geant4TestActions.h" -#include "DDG4/Geant4TrackHandler.h" -#include <iostream> - -using namespace std; -using namespace DD4hep; -using namespace DD4hep::Simulation; -using namespace DD4hep::Simulation::Test; -using namespace DD4hep::Simulation::Setup; - -#if defined(__MAKECINT__) -#pragma link C++ class Geant4RunActionSequence; -#pragma link C++ class Geant4EventActionSequence; -#pragma link C++ class Geant4SteppingActionSequence; -#pragma link C++ class Geant4StackingActionSequence; -#pragma link C++ class Geant4GeneratorActionSequence; -#pragma link C++ class Geant4Action; -#pragma link C++ class Geant4Kernel; -#endif - -SensitiveSeq::handled_type* setupDetector(Kernel& kernel, const std::string& name) { - SensitiveSeq sd = SensitiveSeq(kernel,name); - Sensitive sens = Sensitive(kernel,"Geant4TestSensitive/"+name+"Handler",name); - sd->adopt(sens); - sens = Sensitive(kernel,"Geant4TestSensitive/"+name+"Monitor",name); - sd->adopt(sens); - return sd; -} - -void exampleAClick() { - Geant4Kernel& kernel = Geant4Kernel::instance(LCDD::getInstance()); - kernel.loadGeometry("file:../DD4hep.trunk/DDExamples/CLICSiD/compact/compact.xml"); - kernel.loadXML("DDG4_field.xml"); - - GenAction gun(kernel,"Geant4ParticleGun/Gun"); - gun["energy"] = 0.5*GeV; // Set properties - gun["particle"] = "e-"; - gun["multiplicity"] = 1; - kernel.generatorAction().adopt(gun); - - Action run_init(kernel,"Geant4TestRunAction/RunInit"); - run_init["Property_int"] = 12345; - kernel.runAction().callAtBegin (run_init.get(),&Geant4TestRunAction::begin); - kernel.eventAction().callAtBegin(run_init.get(),&Geant4TestRunAction::beginEvent); - kernel.eventAction().callAtEnd (run_init.get(),&Geant4TestRunAction::endEvent); - - Action evt_1(kernel,"Geant4TestEventAction/UserEvent_1"); - evt_1["Property_int"] = 12345; // Set properties - evt_1["Property_string"] = "Events"; - kernel.eventAction().adopt(evt_1); - - EventAction evt_2(kernel,"Geant4TestEventAction/UserEvent_2"); - kernel.eventAction().adopt(evt_2); - - kernel.runAction().callAtBegin(evt_2.get(),&Geant4TestEventAction::begin); - kernel.runAction().callAtEnd (evt_2.get(),&Geant4TestEventAction::end); - - setupDetector(kernel,"SiVertexBarrel"); - setupDetector(kernel,"SiVertexEndcap"); - // .... more subdetectors here ..... - setupDetector(kernel,"LumiCal"); - setupDetector(kernel,"BeamCal"); - - kernel.configure(); - kernel.initialize(); - kernel.run(); - std::cout << "Successfully executed application .... " << std::endl; - kernel.terminate(); -} -\end{code} - -\noindent -\begin{tabular} {l||p{0cm}} -\docline{Line}{} -\docline{1}{The header file \tts{Geant4Config.h} contains a set of wrapper - classes to easy the creation of objects using the plugin mechanism and setting - properties to \tts{Geant4Action} objects. These helpers and the corresponding - functionality are not included in the wrapped classes themselves to not - clutter the code with stuff only used for the setup. - All contained objects are in the namespace \tts{DD4hep::Simulation::Setup}}. -\docline{6-10}{Save yourself specifying all the namespaces objects are in....} -\docline{13-19}{CINT processing pragmas. - Classes defined here will be available at the ROOT prompt - after this AClick is loaded.} -\docline{22-29}{Sampler to fill the sensitive detector sequences for each - subdetector with two entries: a handler and a monitor action. - Please note, that this here is example code and in real life specialized actions - will have to be provided for each subdetector.} -\docline{31}{Let's go for it. here the entry point starts....} -\docline{32}{Create the \tts{Geant4Kernel} object.} -\docline{33}{Load the geometry into \DDhep.} -\docline{34}{Redefine the setup of the sensitive detectors.} -\docline{36-40}{Create the generator action of type \tts{Geant4ParticleGun} with name - \tts{Gun}, set non-default properties and activate the configured object - by attaching it to the \tts{Geant4Kernel}.} -\docline{42-46}{Create a user defined begin-of-run action callback, set the properties - and attach it to the begin of run calls. To collect statistics extra member functions - are registered to be called at the beginning and the end of each event.} -\docline{48-51}{Create a user defined event action routine, set its properties - and attach it to the event action sequence.} -\docline{53-54}{Create a second event action and register it to the event action sequence. - This action will be called after the previously created action.} -\docline{56-57}{For this event action we want to receive callbacks at start- - and end-of-run to produce additional summary output.} -\docline{59-63}{Call the sampler routine to attach test actions to the subdetectors defined.} -\docline{65-66}{Configure, initialize and run the Geant4 application. - Most of the Geant4 actions will only be created here and the action sequences - created before will be attached now.} -\docline{69}{Terminate the Geant4 application and exit.} -\end{tabular} - -\newpage -\noindent -CINT currently cannot handle pointers to member functions~\footnote{This may change -in the future once ROOT uses \tts{clang} and \tts{cling} as the interpreting engine.}. -Hence the above AClick only works in compiled mode. To invoke the compilation the following -action is necessary from the ROOT prompt: - - -\begin{code} -$> root.exe - ******************************************* - * * - * W E L C O M E to R O O T * - * * - * Version 5.34/10 29 August 2013 * - * * - * You are welcome to visit our Web site * - * http://root.cern.ch * - * * - ******************************************* - -ROOT 5.34/10 (heads/v5-34-00-patches@v5-34-10-5-g0e8bac8, Sep 04 2013, 11:52:19 on linux) - -CINT/ROOT C/C++ Interpreter version 5.18.00, July 2, 2010 -Type ? for help. Commands must be C++ statements. -Enclose multiple statements between { }. -root [0] .X initAClick.C -.... Setting up the CINT include pathes and the link statements. - -root [1] .L ../DD4hep.trunk/DDG4/examples/exampleAClick.C+ -Info in <TUnixSystem::ACLiC>: creating shared library ....exampleAClick_C.so -.... some Cint warnings concerning member function pointers ..... - -root [2] exampleAClick() -.... and it starts ... -\end{code} - -\noindent -The above scripts are present in the DDG4/example directory located in svn. -The initialization script \tts{initAClick.C} may require customization -to cope with the installation paths. - -%============================================================================= -\subsection{Setting up DDG4 using Python} -\label{sec:ddg4-implementation-setup-python} -%============================================================================= - -\noindent -Given the reflection interface of ROOT, the setup of the simulation interface -using DD4hep is of course also possible using the python interpreted language. -In the following code example the setup of Geant4 using the \tw{ClicSid} -example is shown using python~\footnote{For comparison, the same example was -used to illustrate the setup using XML files.}. - -\begin{code} -import DDG4 -from SystemOfUnits import * - -""" - - DD4hep example setup using the python configuration - - @author M.Frank - @version 1.0 - -""" -def run(): - kernel = DDG4.Kernel() - kernel.loadGeometry("file:../DD4hep.trunk/DDExamples/CLICSiD/compact/compact.xml") - kernel.loadXML("DDG4_field.xml") - - lcdd = kernel.lcdd() - print '+++ List of sensitive detectors:' - for i in lcdd.detectors(): - o = DDG4.DetElement(i.second) - sd = lcdd.sensitiveDetector(o.name()) - if sd.isValid(): - print '+++ %-32s type:%s'%(o.name(), sd.type(), ) - - # Configure Run actions - run1 = DDG4.RunAction(kernel,'Geant4TestRunAction/RunInit') - run1.Property_int = 12345 - run1.Property_double = -5e15*keV - run1.Property_string = 'Startrun: Hello_2' - print run1.Property_string, run1.Property_double, run1.Property_int - run1.enableUI() - kernel.registerGlobalAction(run1) - kernel.runAction().add(run1) - - # Configure Event actions - evt2 = DDG4.EventAction(kernel,'Geant4TestEventAction/UserEvent_2') - evt2.Property_int = 123454321 - evt2.Property_double = 5e15*GeV - evt2.Property_string = 'Hello_2 from the python setup' - evt2.enableUI() - kernel.registerGlobalAction(evt2) - - evt1 = DDG4.EventAction(kernel,'Geant4TestEventAction/UserEvent_1') - evt1.Property_int=01234 - evt1.Property_double=1e11 - evt1.Property_string='Hello_1' - evt1.enableUI() - - kernel.eventAction().add(evt1) - kernel.eventAction().add(evt2) - - # Configure I/O - evt_root = DDG4.EventAction(kernel,'Geant4Output2ROOT/RootOutput') - evt_root.Control = True - evt_root.Output = "simple.root" - evt_root.enableUI() - - evt_lcio = DDG4.EventAction(kernel,'Geant4Output2LCIO/LcioOutput') - evt_lcio.Output = "simple_lcio" - evt_lcio.enableUI() - - kernel.eventAction().add(evt_root) - kernel.eventAction().add(evt_lcio) - - # Setup particle gun - gun = DDG4.GeneratorAction(kernel,"Geant4ParticleGun/Gun") - gun.energy = 0.5*GeV - gun.particle = 'e-' - gun.multiplicity = 1 - gun.enableUI() - kernel.generatorAction().add(gun) - - # Setup global filters for use in sensitive detectors - f1 = DDG4.Filter(kernel,'GeantinoRejectFilter/GeantinoRejector') - f2 = DDG4.Filter(kernel,'ParticleRejectFilter/OpticalPhotonRejector') - f2.particle = 'opticalphoton' - f3 = DDG4.Filter(kernel,'ParticleSelectFilter/OpticalPhotonSelector') - f3.particle = 'opticalphoton' - f4 = DDG4.Filter(kernel,'EnergyDepositMinimumCut') - f4.Cut = 10*MeV - f4.enableUI() - kernel.registerGlobalFilter(f1) - kernel.registerGlobalFilter(f2) - kernel.registerGlobalFilter(f3) - kernel.registerGlobalFilter(f4) - - # First the tracking detectors - seq = DDG4.SensitiveSequence(kernel,'Geant4SensDetActionSequence/SiVertexBarrel') - act = DDG4.SensitiveAction(kernel,'Geant4SimpleTrackerAction/SiVertexBarrelHandler','SiVertexBarrel') - seq.add(act) - seq.add(f1) - seq.add(f4) - act.add(f1) - - seq = DDG4.SensitiveSequence(kernel,'Geant4SensDetActionSequence/SiVertexEndcap') - act = DDG4.SensitiveAction(kernel,'Geant4SimpleTrackerAction/SiVertexEndcapHandler','SiVertexEndcap') - seq.add(act) - seq.add(f1) - seq.add(f4) - - seq = DDG4.SensitiveSequence(kernel,'Geant4SensDetActionSequence/SiTrackerBarrel') - act = DDG4.SensitiveAction(kernel,'Geant4SimpleTrackerAction/SiTrackerBarrelHandler','SiTrackerBarrel') - seq.add(act) - seq.add(f1) - seq.add(f4) - - seq = DDG4.SensitiveSequence(kernel,'Geant4SensDetActionSequence/SiTrackerEndcap') - act = DDG4.SensitiveAction(kernel,'Geant4SimpleTrackerAction/SiTrackerEndcapHandler','SiTrackerEndcap') - seq.add(act) - - seq = DDG4.SensitiveSequence(kernel,'Geant4SensDetActionSequence/SiTrackerForward') - act = DDG4.SensitiveAction(kernel,'Geant4SimpleTrackerAction/SiTrackerForwardHandler','SiTrackerForward') - seq.add(act) - - # Now the calorimeters - seq = DDG4.SensitiveSequence(kernel,'Geant4SensDetActionSequence/EcalBarrel') - act = DDG4.SensitiveAction(kernel,'Geant4SimpleCalorimeterAction/EcalBarrelHandler','EcalBarrel') - seq.add(act) - - seq = DDG4.SensitiveSequence(kernel,'Geant4SensDetActionSequence/EcalEndcap') - act = DDG4.SensitiveAction(kernel,'Geant4SimpleCalorimeterAction/EcalEndCapHandler','EcalEndcap') - seq.add(act) - - seq = DDG4.SensitiveSequence(kernel,'Geant4SensDetActionSequence/HcalBarrel') - act = DDG4.SensitiveAction(kernel,'Geant4SimpleCalorimeterAction/HcalBarrelHandler','HcalBarrel') - act.adoptFilter(kernel.globalFilter('OpticalPhotonRejector')) - seq.add(act) - - act = DDG4.SensitiveAction(kernel,'Geant4SimpleCalorimeterAction/HcalOpticalBarrelHandler','HcalBarrel') - act.adoptFilter(kernel.globalFilter('OpticalPhotonSelector')) - seq.add(act) - - seq = DDG4.SensitiveSequence(kernel,'Geant4SensDetActionSequence/HcalEndcap') - act = DDG4.SensitiveAction(kernel,'Geant4SimpleCalorimeterAction/HcalEndcapHandler','HcalEndcap') - seq.add(act) - - seq = DDG4.SensitiveSequence(kernel,'Geant4SensDetActionSequence/HcalPlug') - act = DDG4.SensitiveAction(kernel,'Geant4SimpleCalorimeterAction/HcalPlugHandler','HcalPlug') - seq.add(act) - - seq = DDG4.SensitiveSequence(kernel,'Geant4SensDetActionSequence/MuonBarrel') - act = DDG4.SensitiveAction(kernel,'Geant4SimpleCalorimeterAction/MuonBarrelHandler','MuonBarrel') - seq.add(act) - - seq = DDG4.SensitiveSequence(kernel,'Geant4SensDetActionSequence/MuonEndcap') - act = DDG4.SensitiveAction(kernel,'Geant4SimpleCalorimeterAction/MuonEndcapHandler','MuonEndcap') - seq.add(act) - - seq = DDG4.SensitiveSequence(kernel,'Geant4SensDetActionSequence/LumiCal') - act = DDG4.SensitiveAction(kernel,'Geant4SimpleCalorimeterAction/LumiCalHandler','LumiCal') - seq.add(act) - - seq = DDG4.SensitiveSequence(kernel,'Geant4SensDetActionSequence/BeamCal') - act = DDG4.SensitiveAction(kernel,'Geant4SimpleCalorimeterAction/BeamCalHandler','BeamCal') - seq.add(act) - - # Now build the physics list: - phys = kernel.physicsList() - phys.extends = 'FTFP_BERT' - #phys.transportation = True - phys.decays = True - phys.enableUI() - - ph = DDG4.PhysicsList(kernel,'Geant4PhysicsList/Myphysics') - ph.addParticleConstructor('G4BosonConstructor') - ph.addParticleConstructor('G4LeptonConstructor') - ph.addParticleProcess('e[+-]','G4eMultipleScattering',-1,1,1) - ph.addPhysicsConstructor('G4OpticalPhysics') - ph.enableUI() - phys.add(ph) - - phys.dump() - - kernel.configure() - kernel.initialize() - kernel.run() - kernel.terminate() - -if __name__ == "__main__": - run() - -\end{code} - -\newpage -%============================================================================= -\subsection{A Simple Example} -\label{sec:ddg4-implementation-simple-example} -%============================================================================= -\noindent -Bla-bal. - -\newpage -%============================================================================= -\section{Higher Level Components} -\label{sec:ddg4-implementation-higher-level-components} -%============================================================================= -\noindent -Layered components, which base on the general framework implement higher -level functionality such as the handling of Monte-Carlo truth associations -between simulated energy deposits and the corresponding particles or the -generic handling of input to the simulation. - -\noindent -To generalize such common behavior it is mandatory that the participating -components collaborate and understand the data components the commonly access. -The data model is shown in Figure~\ref{fig:ddg4-event-data-model}. -\begin{figure}[t] - \begin{center} - \includegraphics[width=120mm] {DDG4_event_data_model.png} - \caption{The DDG4 event data model.} - \label{fig:ddg4-event-data-model} - \end{center} -\end{figure} - -\noindent -Please note, that this data model is by no means to be made persistent -and used for physics user analysis. This model is optimized to support -the simulation process and the necessary user actions to handle MC truth, -to easily and relatively fast look up and modify parent-daughter -relationships etc. This choice is based on the assumption, that the -additional overhead to convert particles at the input/output -stage is small compared to the actual resource consumption of Geant4 -to simulate the proper detector response. -On the other hand this choice has numerous advantages: -\begin{itemize}\itemcompact -\item Accepting the fact to convert input records allows to adapt - DDG4 in a simple and flexible manner to any input format. Currently - supported is the input from raw {\tw{LCIO}} files, {\tw{StdHep}} - records using {\tw{LCIO}} and {\tw{ASCII}} files using the - {\tw{HEPEvt}} format. -\item Similarly as for the input stage, also the output format - can be freely chosen by the clients. -\item No assumptions was made concerning the structure to store - information from energy deposits. Any information extract produced - by the sensitive actions can be adapted provided at the output - stage the proper conversion mechanism is present. The sensitive - detectors provided by DDG4 are {\bf{optional only and by no means mandatory}}. - User defined classes may be provided at any time. Appropriate tools - to extract MC truth information is provided at the output stage. -\item The modular approach of the action sequences described - in~\ref{sec:ddg4-user-manual-implementation-geant4action-sequences} - allows to easily extend the generation sequence to handle multiple - simultaneous interactions, event overlay or spillover response - very easily~\footnote{The handling of spillover is only possible - if during the digitization step the correct signal shape corresponding - to the shift of signal creation is taken into account.} -\end{itemize} - -\noindent -In section~\ref{sec:ddg4-implementation-input-handling} the generic mechanism -of input data handling is described. \\ -In section~\ref{sec:ddg4-implementation-particle-handling} the MC truth -handling is discussed. \\ -In section~\ref{sec:ddg4-implementation-output-handling} we describe the -output mechanism. -\newpage - -%============================================================================= -\subsection{Input Data Handling} -\label{sec:ddg4-implementation-input-handling} -%============================================================================= -\begin{figure}[t] - \begin{center} - \includegraphics[width=160mm] {DDG4_input_stage.png} - \caption{The generic handling of input sources to DDG4.} - \label{fig:ddg4-input-stage} - \end{center} -\end{figure} - -\noindent -Input handling has several stages and uses several modules: -\begin{itemize}\itemcompact -\item First the data structures \tw{Geant4PrimaryEvent}, - \tw{Geant4PrimaryInteraction} and \tw{Geant4\-Primary}\-\tw{Map} are initialized - by the action \tw{Geant4GenerationActionInit} - and attached to the {\tw{Geant4Event}} structure. -\item The initialization is then followed by any number of input modules. - Typically each input module add one interaction. Each interaction has a - unique identifier, which is propagated later to all particles. Hence all - primary particles can later be unambiguously be correlated to one of the - initial interactions. - Each instance of a \tw{Geant4InputAction} creates and fills a separate instance - of a \tw{Geant4PrimaryInteraction}. - In section~\ref{sec:ddg4-implementation-geant4inputaction} the functionality and - extensions are discussed in more detail. -\item All individual primary interactions are then merged to only single record - using the \tw{Geant4}\-\tw{Interaction}\-\tw{Merger} component. - This components fills the \tw{Geant4PrimaryInteraction} registered to the - \tw{Geant4Event}, which serves as input record for the next component, -\item the \tw{Geant4PrimaryHandler}. The primary handler creates the proper - \tw{G4PrimaryParticle} and \tw{G4PrimaryVertex} objects passed to \tw{Geant4}. - After this step all event related user interaction with Geant4 has completed, - and the detector simulation may commence. -\end{itemize} -All modules used are subclasses of the {\tw{Geant4}\-\tw{Generator}\-\tw{Action}} and must be -added to the \tw{Geant4}\-\tw{Generator}\-\tw{Action}\-\tw{Sequence} as described -in~\ref{sec:ddg4-user-manual-implementation-geant4action-sequences}. -\newpage - -%============================================================================= -\subsection{Anatomy of the Input Action} -\label{sec:ddg4-implementation-geant4inputaction} -%============================================================================= - -\newpage -One input action fills one primary interaction. -\tw{Geant4InputAction} instances may be followed by decorators, which -allow to to smear primary vertex (\tw{Geant4InteractionVertexSmear}) or -to boost the primary vertex \tw{Geant4InteractionVertexBoost} and all -related particles/vertices. - - -Please note, that a possible reduction of particles in -the output record may break this unambiguous relationship between -"hits" and particles. -...... - -%============================================================================= -\subsection{Monte-Carlo Truth Handling} -\label{sec:ddg4-implementation-particle-handling} -%============================================================================= - -\newpage -...... - -%============================================================================= -\section{Output Data Handling} -\label{sec:ddg4-implementation-output-handling} -%============================================================================= - -\newpage -...... - -%============================================================================= -\section{Existing DDG4 components} -%============================================================================= -\noindent -In the introduction the longterm goal was expressed, that with DDG4 users -should be able to pick components from a growing palette and connect the -selected components using the setup mechanisms described in -Section~\ref{sec:ddg4-implementation-setup}. - -\noindent -Such a palette based approach obviously depends on the availability of -documentation for existing components describing the properties -of each component and the interaction of each component within the \DDG -framework. - -\noindent -All components defer from the basic type \tts{Geant4Action}. This means -\bold{all} components have the \bold{default} properties described in the -table below: - -\vspace{0.5cm} -\noindent -\begin{tabular}{ l l p{9cm} } -\hline -Component Properties: & & \tts{default} \\ -\hline -\bold{OuputLevel} & [int] & Output level of the component to customize printouts \\ -\bold{Name} & [string] & Component name [read-only] \\ -\bold{Control} & [boolean] & Steering of the Geant4 Messenger creation \\ -\hline -\end{tabular} - - -\vspace{5cm} - -\begin{center} -{\large{\bf{ -\begin{tabular} {| p{15cm} |} -\hline\space \\ - -\noindent -{\underline{Important notice for developers:}} \\ - -\noindent -Since the documentation of developed components is VERY important, -please never forget to supply the corresponding documentation.\\ -\\ -\noindent -At least supply the minimal documentation ash shown below -in the appended examples for the "Simple" detector response and I/O -components. -\\ \space\hline -\end{tabular} -}}} -\end{center} -\clearpage - -%============================================================================= -\subsection{Generic Action Modules} -%============================================================================= -\noindent -%============================================================================= -\subsubsection{Geant4UIManager} -%============================================================================= -\noindent -The {\tt{Geant4UIManager}} handles interactivity aspects between Geant4, -its command handlers (i.e. terminal) and the various components the actions -interact. - -\noindent -The {\tt{Geant4UIManager}} is a component attached to the {\tt{Geant4Kernel}} -object. All properties of all {\tt{Geant4Action}} instances may be exported to -\tw{Geant4} messengers and {\em{may}} hence be accessible directly from -the \tw{Geant4} prompt. To export properties from any action, call the -{\tt{enableUI()}} method of the action. -\noindent -The callback signature is: \tw{void operator()(G4Event* event)}. - -\vspace{0.5cm} -\noindent -\begin{tabular}{ l p{10cm} } -\hline -\bold{Class name} & \tts{Geant4} \\ -\bold{File name} & \tts{DDG4/src/Geant4.cpp} \\ -\bold{Type} & \tts{Geant4Action} \\ -\hline -\bold{Component Properties:} & defaults apply \\ -\hline -\bold{SessionType} (string) & Session type (csh, tcsh, etc. \\ -\bold{SetupUI} (string) & Name of the UI macro file \\ -\bold{SetupVIS} (string) & Name of the visualization macro file \\ -\bold{HaveVIS} (bool) & Flag to instantiate Vis manager - (def:false, unless VisSetup set) \\ -\bold{HaveUI} (bool) & Flag to instantiate UI (default=true) \\ -\end{tabular} - -%============================================================================= -\subsubsection{Geant4Random} -%============================================================================= -\noindent -Mini interface to the random generator of the application. -Necessary, that on every object creates its own instance, but accesses -the main instance available through the \tw{Geant4Context}. - -\noindent -This is mandatory to ensure reproducibility of the event generation -process. Particular objects may use a dependent generator from -an experiment framework like \tw{GAUDI}. - -\noindent -internally the engine factory mechanism of \tw{CLHEP} is used. Please refer -there within for valid engine names and the random seeding mechanism, -which may vary between different engines. - -\noindent -Any number of independent random objects may be created and used -in parallel. This however, is not advised to ensure reproducibility. - -\noindent -The first instance of the random action is automatically set -to be the \tw{Geant4} instance. If another instance should be used by -\tw{Geant4}, use \tw{setMainInstance(Geant4Random* ptr)} class method to -override this behavior. -Provision, steered by options, is taken to ensure the \tw{gRandom} -of \tw{ROOT} uses the same random number engine. - -\vspace{0.5cm} -\noindent -\begin{tabular}{ l p{10cm} } -\hline -\bold{Class name} & \tts{Geant4} \\ -\bold{File name} & \tts{DDG4/src/Geant4Random.cpp} \\ -\bold{Type} & \tts{Geant4Random} \\ -\hline -\bold{Component Properties:} & defaults apply \\ -\hline -\bold{File} (string) & File name if initialized from file. \\ - & If set, engine name and seeds are ignored \\ -\bold{Engine} (string) & Engine type name. \\ - & All engines defined in the - \tw{CLHEP::EngineFactory} class are available. - If no type is supplied the engine from the - HepRandom generator instance is taken. \\ -\bold{Seed} (long) & Initial random seed. \\ - & Default: 123456789. \\ - & If not ZERO terminated, termination is added.\\ -\bold{Replace\_gRandom} (bool)& Flag to replace the \tw{ROOT} \tw{gRandom} - instance with this random number engine. - This ensures \tw{ROOT} and \tw{Geant4} use the same - random number engine, hence the same random sequence. - \\ -\end{tabular} - - -%============================================================================= -\subsection{Predefined Geant4 Physics List Objects} -%============================================================================= -\noindent -The physics list may be defined entirely data driven using the factory mechanism -using a variety of predefined objects. Though users are free to define private -physics lists, typically the predefined physics lists from \tw{Geant4} are used. - -\noindent -The inventory changes over time, new lists appear and obsolete lists are purged, -hence we will not list them explicitly here. -For the inventory of available physics lists, please refer to the implementation files: - -\noindent -\begin{itemize}\itemcompact -\item Inventory of predefined physics lists, which may be inherited:\\ -\detdesc{html/_geant4_physics_lists_8cpp_source.html} -{DDG4/plugins/Geant4PhysiscsLists.cpp} -\item Inventory of predefined physics constructors, which may be instantiated:\\ -\detdesc{html/_geant4_physics_constructors_8cpp_source.html} -{DDG4/plugins/Geant4PhysicsConstructors.cpp} -\item Inventory of predefined process constructors, which may be instantiated:\\ -\detdesc{html/_geant4_processes_8cpp_source.html} -{DDG4/plugins/Geant4Processes.cpp} -\item Inventory of predefined particle constructors, which may be instantiated:\\ -\detdesc{html/_geant4_particles_8cpp_source.html} -{DDG4/plugins/Geant4Particles.cpp} -\end{itemize} -\newpage - -%============================================================================= -\subsection{Geant4 Generation Action Modules} -%============================================================================= -\noindent -Here we discuss modules, which are intrinsically part of DDG4 and may be -attached to the {\tt{Geant4GeneratorActionSequence}}. - -%============================================================================= -\subsubsection{Base class: Geant4GeneratorAction} -%============================================================================= -\noindent -The \tw{Geant4GeneratorAction} is called for every event. -During the callback all particles are created which form the -microscopic kinematic action of the particle collision. -This input may either origin directly from an event generator program -or come from file. - -\noindent -The callback signature is: void operator()(G4Event* event) -\noindent -See also: -\detdesc{html/class_d_d4hep_1_1_simulation_1_1_geant4_generator_action.html} -{\tts{Geant4EventAction}} in the doxygen documentation. - -\vspace{0.5cm} -\noindent -\begin{tabular}{ l p{10cm} } -\hline -\bold{Class name} & \tts{Geant4GeneratorAction} \\ -\bold{File name} & \tts{DDG4/src/Geant4GeneratorAction.cpp} \\ -\bold{Type} & \tts{Geant4Action, Geant4GeneratorAction} \\ -\hline -\bold{Component Properties:} & defaults apply \\ -\hline -\end{tabular} - -%============================================================================= -\subsubsection{Geant4GeneratorActionSequence} -%============================================================================= -\noindent -The sequence dispatches the callbacks at the beginning -of an event to all registered \tw{Geant4GeneratorAction} members and all -registered callbacks. - -\noindent -See also: -\noindent -The {\tt{Geant4GeneratorActionSequence}} is directly steered by the single -instance of the {\tt{G4VUserPrimaryGeneratorAction}}, the Geant4 provided user hook, -which is private.\\ -See also: -\detdesc{html/struct_d_d4hep_1_1_simulation_1_1_geant4_user_generator_action.html} -{\tts{Geant4UserGeneratorAction}} and -\detdesc{html/class_d_d4hep_1_1_simulation_1_1_geant4_generator_action_sequence.html} -{\tts{Geant4GeneratorActionSequence}} in the doxygen documentation. - -\vspace{0.5cm} -\noindent -\begin{tabular}{ l p{10cm} } -\hline -\bold{Class name} & \tts{Geant4Geant4GeneratorActionSequence} \\ -\bold{File name} & \tts{DDG4/src/Geant4GeneratorAction.cpp} \\ -\bold{Type} & \tts{Geant4Action} \\ -\hline -\bold{Component Properties:} & defaults apply \\ -\hline -\end{tabular} - -%============================================================================= -\subsubsection{Geant4GeneratorActionInit} -%============================================================================= -\noindent -Initialize the Geant4Event objects to host generator and MC truth related information -Geant4 actions to collect the MC particle information. -This action should register all event extension required for the further -processing. We want to avoid that every client has to check if a given -object is present or not and than later install the required data structures. - -\noindent -These by default are extensions of type: -\begin{itemize}\itemcompact -\item \tw{Geant4PrimaryEvent} with multiple interaction sections, one for each interaction - This is the MAIN and ONLY information to feed Geant4 -\item \tw{Geant4PrimaryInteraction} containing the track/vertex information to create - the primary particles for Geant4. This record is build from the \tw{Geant4PrimaryEvent} - information. -\item \tw{Geant4PrimaryMap} a map of the \tw{Geant4Particles} converted to - \tw{G4PrimaryParticles} to ease particle handling later. -\item \tw{Geant4ParticleMap} the map of particles created during the event simulation. - This map has directly the correct particle offsets, so that the merging of - \tw{Geant4PrimaryInteraction} particles and the simulation particles is easy.... -\end{itemize} - -\vspace{0.5cm} -\noindent -\begin{tabular}{ l p{10cm} } -\hline -\bold{Class name} & \tts{Geant4Geant4GeneratorActionInit} \\ -\bold{File name} & \tts{DDG4/src/Geant4GeneratorActionInit.cpp} \\ -\bold{Type} & \tts{Geant4GeneratorAction} \\ -\hline -\bold{Component Properties:} & defaults apply \\ -\bold{Angle} (double) & \tts{Lorentz-Angle of boost} \\ -\bold{Mask} (int.bitmask) & \tts{Interaction identifier} \\ -\hline -\end{tabular} - -%============================================================================= -\subsubsection{Geant4InteractionVertexBoost} -%============================================================================= -\noindent -Boost the primary vertex and all particles outgoing the primary interaction in X-direction. - -\noindent -The interaction to be processed by the component is uniquely identified -by the {\bf{Mask}} property. Two primary interaction may not have the same -mask. - -\noindent -{\bold{Note [special use case]:}}\\ -If all contributing interactions of the one event \bold{registered -in the primary event at the time the action is called} should be handled by -one single component instance, set the {\bf{Mask}} property to {\bold{-1}}. - -\vspace{0.5cm} -\noindent -\begin{tabular}{ l p{10cm} } -\hline -\bold{Class name} & \tts{Geant4InteractionVertexBoost} \\ -\bold{File name} & \tts{DDG4/src/Geant4InteractionVertexBoost.cpp} \\ -\bold{Type} & \tts{Geant4GeneratorAction} \\ -\hline -\bold{Component Properties:} & defaults apply \\ -\bold{Angle} (double) & \tts{Lorentz-Angle of boost} \\ -\bold{Mask} (int.bitmask) & \tts{Interaction identifier} \\ -\hline -\end{tabular} - -%============================================================================= -\subsubsection{Geant4InteractionVertexSmear} -%============================================================================= -\noindent -Smear the primary vertex and all particles outgoing the primary interaction. - -\noindent -The interaction to be processed by the component is uniquely identified -by the {\bf{Mask}} property. Two primary interaction may not have the same -mask. - -\noindent -{\bold{Note [special use case]:}}\\ -If all contributing interactions of the one event \bold{registered -in the primary event at the time the action is called} should be handled by -one single component instance, set the {\bf{Mask}} property to {\bold{-1}}. - -\vspace{0.5cm} -\noindent -\begin{tabular}{ l p{10cm} } -\hline -\bold{Class name} & \tts{Geant4InteractionVertexSmear} \\ -\bold{File name} & \tts{DDG4/src/Geant4InteractionVertexSmear.cpp} \\ -\hline -\bold{Component Properties:} & defaults apply \\ -\bold{Offset} (PxPyPzEVector) & \tts{Smearing offset} \\ -\bold{Sigma} (PxPyPzEVector) & \tts{Sigma (Errors) on offset} \\ -\bold{Mask} (int.bitmask) & \tts{Interaction identifier} \\ -\hline -\end{tabular} - -%============================================================================= -\subsubsection{Geant4InteractionMerger} -%============================================================================= -\noindent -Merge all interactions created by each {\tt{Geant4InputAction}} into one single -record. The input records are taken from the item {\tt{Geant4PrimaryEvent}} -and are merged into the {\tt{Geant4PrimaryInteraction}} object attached to the -{\tt{Geant4Event}} event context. - -\vspace{0.5cm} -\noindent -\begin{tabular}{ l p{10cm} } -\hline -\bold{Class name} & \tts{Geant4InteractionMerger} \\ -\bold{File name} & \tts{DDG4/src/Geant4InteractionMerger.cpp} \\ -\bold{Type} & \tts{Geant4GeneratorAction} \\ -\hline -\bold{Component Properties:} & defaults apply \\ -\hline -\end{tabular} - -%============================================================================= -\subsubsection{Geant4PrimaryHandler} -%============================================================================= -\noindent -Convert the primary interaction (object {\tt{Geant4PrimaryInteraction}} object -attached to the {\tt{Geant4Event}} event context) and pass the result -to Geant4 for simulation. - -\vspace{0.5cm} -\noindent -\begin{tabular}{ l p{10cm} } -\hline -\bold{Class name} & \tts{Geant4PrimaryHandler} \\ -\bold{File name} & \tts{DDG4/src/Geant4PrimaryHandler.cpp} \\ -\bold{Type} & \tts{Geant4GeneratorAction} \\ -\hline -\bold{Component Properties:} & defaults apply \\ -\hline -\end{tabular} - -%============================================================================= -\subsubsection{Geant4ParticleGun} -%============================================================================= -\noindent -Implementation of a particle gun using Geant4Particles. - -\noindent -The {\tt{Geant4ParticleGun}} is a tool to shoot a number of -particles with identical properties into a given region of the -detector to be simulated. - -\noindent -The particle gun is a input source like any other and participates -in the general input stage merging process like any other input -e.g. from file. Hence, there may be several particle guns present -each generating it's own primary vertex. Use the mask property to -ensure each gun generates it's own, well identified primary vertex. - -\noindent -There is one 'user lazyness' support though: -If there is only one particle gun in use, the property 'Standalone', -which by default is set to true invokes the interaction merging and the -Geant4 primary generation directly. - -\noindent -The interaction to be created by the component is uniquely identified -by the {\bf{Mask}} property. Two primary interaction may not have the same -mask. - -\vspace{0.5cm} -\noindent -\begin{tabular}{ l p{10cm} } -\hline -\bold{Class name} & \tts{Geant4PrimaryHandler} \\ -\bold{File name} & \tts{DDG4/src/Geant4PrimaryHandler.cpp} \\ -\bold{Type} & \tts{Geant4GeneratorAction} \\ -\hline -Component Properties: & default \\ -\bold{particle} (string) & Particle type to be shot \\ -\bold{energy} (double) & Particle energy in $MeV$ \\ -\bold{position} (XYZVector) & Pole position of the generated particles in $mm$\\ -\bold{direction} (XYZVector) & Momentum direction of the generated particles\\ -\bold{isotrop} (bool) & Isotropic particle directions in space. \\ -\bold{Mask} (int.bitmask) & Interaction identifier \\ -\bold{Standalone} (bool) & Setup for standalone execution \\ - & including interaction merging etc. \\ -\hline -\end{tabular} - -%============================================================================= -\subsubsection{Geant4ParticleHandler} -%============================================================================= -\noindent -Extract the relevant particle information during the simulation step. - -\noindent -This procedure works as follows: -\begin{itemize}\itemcompact -\item At the beginning of the event generation the object registers itself as - Monte-Carlo truth handler to the event context. -\item At the begin of each track action a particle candidate is created and filled - with all properties known at this time. -\item At each stepping action a flag is set if the step produced secondaries. -\item Sensitive detectors call the MC truth handler if a hit was created. - This fact is remembered. -\item At the end of the tracking action a first decision is taken if the candidate is to be - kept for the final record. -\item At the end of the event action finally all particles are reduced to the - final record. This logic can be overridden by a user handler to be attached. -\end{itemize} -\noindent -Any of these actions may be intercepted by a {\tt{Geant4UserParticleHandler}} -attached to the particle handler. -See class {\tt{Geant4UserParticleHandler}} for details. - -\vspace{0.5cm} -\noindent -\begin{tabular}{ l p{9cm} } -\hline -\bold{Class name} & \tts{Geant4ParticleHandler} \\ -\bold{File name} & \tts{DDG4/src/Geant4ParticleHandler.cpp} \\ -\bold{Type} & \tts{Geant4GeneratorAction} \\ -\hline -\bold{Component Properties:} & defaults apply \\ -\bold{KeepAllParticles} (bool) & Flag to keep entire particle record without any reduction. - This may result in a huge output record. \\ -\bold{SaveProcesses} (vector(string)) & Array of Geant4 process names, - which products and parent should NOT be reduced.\\ -\bold{MinimalKineticEnergy} (double) & Minimal energy below which particles should be - ignored unless other criteria - (Process, created hits, etc) apply.\\ -\hline -\end{tabular} -\newpage - -%============================================================================= -\subsection{Geant4 Event Action Modules} -%============================================================================= -\noindent - -%============================================================================= -\subsubsection{Base class: Geant4EventAction} -%============================================================================= -\noindent -The EventAction is called for every event. - -\noindent -This class is the base class for all user actions, which have -to hook into the begin- and end-of-event actions. -Typical use cases are the collection/computation of event -related properties. - -\noindent -Examples of this functionality may include for example: -\begin{itemize}\itemcompact -\item Reset variables summing event related information in the - begin-event callback. -\item Monitoring activities such as filling histograms - from hits collected during the end-event action. -\end{itemize} -See also: -\detdesc{html/class_d_d4hep_1_1_simulation_1_1_geant4_event_action.html} -{\tts{Geant4EventAction}} in the doxygen documentation. - -\vspace{0.5cm} -\noindent -\begin{tabular}{ l p{10cm} } -\hline -\bold{Class name} & \tts{Geant4EventAction} \\ -\bold{File name} & \tts{DDG4/src/Geant4EventAction.cpp} \\ -\bold{Type} & \tts{Geant4EventAction} \\ -\hline -\bold{Component Properties:} & defaults apply \\ -\hline -\end{tabular} - -%============================================================================= -\subsubsection{Geant4EventActionSequence} -%============================================================================= -\noindent - -\noindent -The {\tt{Geant4EventActionSequence}} is directly steered by the single -instance of the {\tt{G4UserEventAction}}, the Geant4 provided user hook, -which is private.\\ -See also: -\detdesc{html/struct_d_d4hep_1_1_simulation_1_1_geant4_user_event_action.html} -{\tts{Geant4UserEventAction}} in the doxygen documentation. - -\vspace{0.5cm} -\noindent -\begin{tabular}{ l p{10cm} } -\hline -\bold{Class name} & \tts{Geant4EventAction} \\ -\bold{File name} & \tts{DDG4/src/Geant4EventAction.cpp} \\ -\bold{Type} & \tts{Geant4EventAction} \\ -\hline -\bold{Component Properties:} & defaults apply \\ -\hline -\end{tabular} - -%============================================================================= -\subsubsection{Geant4ParticlePrint} -%============================================================================= -\noindent -Geant4Action to print MC particle information. - -\vspace{0.5cm} -\noindent -\begin{tabular}{ l p{10cm} } -\hline -\bold{Class name} & \tts{Geant4ParticlePrint} \\ -\bold{File name} & \tts{DDG4/src/Geant4ParticlePrint.cpp} \\ -\bold{Type} & \tts{Geant4EventAction} \\ -\hline -\bold{Component Properties:} & defaults apply \\ -\bold{OutputType} (bool) & Flag to steer output type. \\ - & 1: Print table of particles. \\ - & 2: Print table of particles. \\ - & 3: Print table and tree of particles. \\ -\bold{PrintHits} & Print associated hits to every particle (big output!)\\ -\hline -\end{tabular} -\newpage - - -%============================================================================= -\subsection{Sensitive Detectors} -%============================================================================= -\noindent - -%============================================================================= -\subsubsection{Geant4TrackerAction} -%============================================================================= -\noindent -Simple sensitive detector for tracking detectors. These trackers create one -single hit collection. The created hits may be written out with the output -modules described in Section~\ref{sec:ddg4-components-IO-ROOT-simple} -and~\ref{sec:ddg4-components-IO-LCIO-simple}. \\ -The basic specifications are: - -\vspace{0.5cm} -\noindent -\begin{tabular}{ l p{10cm} } -\hline -Basics: & \\ -\hline -\bold{Class name} & \tts{Geant4SensitiveAction<Geant4Tracker>} \\ -\bold{File name} & \tts{DDG4/plugins/Geant4SDActions.cpp} \\ -\bold{Hit collection} & \tts{Name of the readout object} \\ -\bold{Hit class} & \tts{Geant4Tracker::Hit} \\ -\bold{File name} & \tts{DDG4/include/Geant4Data.h} \\ -\hline -\bold{Component Properties:} & defaults apply \\ -\hline -\end{tabular} - -%============================================================================= -\subsubsection{Geant4CalorimeterAction} -%============================================================================= -\noindent -Simple sensitive detector for calorimeters. The sensitive detector creates one -single hit collection. The created hits may be written out with the output -modules described in Section~\ref{sec:ddg4-components-IO-ROOT-simple} -and~\ref{sec:ddg4-components-IO-LCIO-simple}. \\ -The basic specifications are: - -\vspace{0.5cm} -\noindent -\begin{tabular}{ l p{10cm} } -\hline -Basics: & \\ -\hline -\bold{Class name} & \tts{Geant4SensitiveAction<Geant4Calorimeter>} \\ -\bold{File name} & \tts{DDG4/plugins/Geant4SDActions.cpp} \\ -\bold{Hit collection} & \tts{Name of the readout object} \\ -\bold{Hit class} & \tts{Geant4Calorimeter::Hit} \\ -\bold{File name} & \tts{DDG4/include/Geant4Data.h} \\ -\hline -\bold{Component Properties:} & defaults apply \\ -\hline -\end{tabular} - -\newpage - -%============================================================================= -\subsection{I/O Components} -%============================================================================= -\noindent - -%============================================================================= -\subsubsection{ROOT Output "Simple"} -\label{sec:ddg4-components-IO-ROOT-simple} -%============================================================================= -\noindent - -%============================================================================= -\subsubsection{LCIO Output "Simple"} -\label{sec:ddg4-components-IO-LCIO-simple} -%============================================================================= -\noindent - - +\input{DDG4Manual-Introduction.tex} +\input{DDG4Manual-Implementation.tex} +\input{DDG4Manual-Setup.tex} +\input{DDG4Manual-HighLevel.tex} +\input{DDG4Manual-MT.tex} +\input{DDG4Manual-Components.tex} %============================================================================= \newpage @@ -2415,6 +93,12 @@ Basics: & \\ \bibitem{bib:DDSegmentations} C.Grefe et al., "The DDSegmentation package", Non existing documentation to be written. +\bibitem{bib:Geant4-multi-threading} Geant4 Multi threading Guides. + Please see for details:\\ + https://twiki.cern.ch/twiki/bin/view/Geant4/Geant4MTAdvandedTopicsForApplicationDevelopers,\\ + https://twiki.cern.ch/twiki/bin/view/Geant4/QuickMigrationGuideForGeant4V10,\\ + http://geant4.slac.stanford.edu/tutorial/MC2015G4WS/Multithreading.pdf + \end{thebibliography} %============================================================================= \end{document} diff --git a/doc/doxygen/DD4hepGroups.h b/doc/doxygen/DD4hepGroups.h index 69e9a910d..41f9bcce6 100644 --- a/doc/doxygen/DD4hepGroups.h +++ b/doc/doxygen/DD4hepGroups.h @@ -81,4 +81,5 @@ namespace IO {} /// LCIO namespace. See http://lcio.desy.de \ingroup LCIO namespace UTIL {} + /**@}*/ diff --git a/doc/doxygen/ROOTClasses.h b/doc/doxygen/ROOTClasses.h index 717760732..7685ca802 100644 --- a/doc/doxygen/ROOTClasses.h +++ b/doc/doxygen/ROOTClasses.h @@ -1,21 +1,44 @@ -/// Class of the ROOT toolkit. See http://root.cern.ch/root/htmldoc/ClassIndex.html +/// ROOT stuff +/** + * \defgroup ROOT Classes and namespaces from the ROOT project. See http://root.cern.ch + * @{ + */ + +/// Class of the ROOT toolkit. See http://root.cern.ch/root/htmldoc/ClassIndex.html \ingroup ROOT +/** \see http://root.cern.ch/root/htmldoc/ClassIndex.html */ +class TEveElementList {}; + +/// Class of the ROOT toolkit. See http://root.cern.ch/root/htmldoc/ClassIndex.html \ingroup ROOT +/** \see http://root.cern.ch/root/htmldoc/ClassIndex.html */ +class TGeoConeSeg {}; + +/// Class of the ROOT toolkit. See http://root.cern.ch/root/htmldoc/ClassIndex.html \ingroup ROOT /** \see http://root.cern.ch/root/htmldoc/ClassIndex.html */ class TGeoConeSeg {}; -/// Class of the ROOT toolkit. See http://root.cern.ch/root/htmldoc/ClassIndex.html +/// Class of the ROOT toolkit. See http://root.cern.ch/root/htmldoc/ClassIndex.html \ingroup ROOT /** \see http://root.cern.ch/root/htmldoc/ClassIndex.html */ class TGeoExtension {}; -/// Class of the ROOT toolkit. See http://root.cern.ch/root/htmldoc/ClassIndex.html +/// Class of the ROOT toolkit. See http://root.cern.ch/root/htmldoc/ClassIndex.html \ingroup ROOT +/** \see http://root.cern.ch/root/htmldoc/ClassIndex.html */ +class TGLAnnotation {}; + +/// Class of the ROOT toolkit. See http://root.cern.ch/root/htmldoc/ClassIndex.html \ingroup ROOT +/** \see http://root.cern.ch/root/htmldoc/ClassIndex.html */ +class TGMainFrame {}; + +/// Class of the ROOT toolkit. See http://root.cern.ch/root/htmldoc/ClassIndex.html \ingroup ROOT /** \see http://root.cern.ch/root/htmldoc/ClassIndex.html */ class TNamed {}; -/// Class of the ROOT toolkit. See http://root.cern.ch/root/htmldoc/ClassIndex.html +/// Class of the ROOT toolkit. See http://root.cern.ch/root/htmldoc/ClassIndex.html \ingroup ROOT /** \see http://root.cern.ch/root/htmldoc/ClassIndex.html */ class TObject {}; -/// ROOT utility namespace + +/// ROOT utility namespace. See http://root.cern.ch/root/htmldoc/ClassIndex.html namespace ROOT { /// ROOT namespace for mathematical operations and corresponding classes. namespace Math { diff --git a/doc/release.notes b/doc/release.notes index ea450104f..f46c765f8 100644 --- a/doc/release.notes +++ b/doc/release.notes @@ -3,6 +3,23 @@ DD4hep ---- Release Notes ================================= +2015-11-24 M.Frank + DDG4 + - Implementation of multi-threading mode. + To use and understand, please consult the DDG4 manual from the doc area. + - "Old" Single threaded mode and functionality is preserved. + - Numerous new classes supporting thread and master specific setup + functionality. + - Support for python configuration (see manual for details) + - Support for global Geant4Actions executing in thread reentrant shared mode. + (see manual for details) + - DDG4 examples: DDG4/examples/CLICSidSimu.py deleted and replaced with: + 1) DDG4/examples/SiDSim.py (single threaded, old example) + 2) DDG4/examples/SiDSim_MT.py (multi threaded version of SiDSim.py) + DDCore: + - Support user formats for the default printout statements for nicer printouts. + - Removal of compiler warnings + 2015-10-13 M.Frank DDG4 - Remove explicit constructors for modular physics lists. -- GitLab