diff --git a/InnerDetector/InDetConfig/python/InDetConfigFlags.py b/InnerDetector/InDetConfig/python/InDetConfigFlags.py index 1b0692099c459e1c9ead6d64a5144b4c4bd41a6d..40a62553a79567476f3dd582366536b89e0d8eed 100644 --- a/InnerDetector/InDetConfig/python/InDetConfigFlags.py +++ b/InnerDetector/InDetConfig/python/InDetConfigFlags.py @@ -1,7 +1,8 @@ -# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.AthConfigFlags import AthConfigFlags from AthenaConfiguration.Enums import BeamType +from Campaigns.Utils import Campaign from TrkConfig.TrkConfigFlags import PrimaryPassConfig @@ -44,8 +45,9 @@ def createInDetConfigFlags(): prevFlags.Detector.EnableTRT) # Disabled for data-taking up to 2024 included and MC campaigns up to MC23e included icf.addFlag("InDet.doTRTArToTCorr", lambda prevFlags: ( - (not prevFlags.Input.isMC and prevFlags.Input.DataYear>2024) or - (prevFlags.Input.isMC and prevFlags.Input.RunNumbers[0]>=491000) ) ) + (not prevFlags.Input.isMC and prevFlags.Input.DataYear >= 2025) or + (prevFlags.Input.isMC and prevFlags.Input.MCCampaign >= Campaign.MC23g) + )) # Save cluster information to Derivation icf.addFlag("InDet.DRAWZSelection", False) diff --git a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValMonitoringTool.cxx b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValMonitoringTool.cxx index a6c88e7041c695ed04ab8627aa6329ea53843e2d..f22956d24f9b3d08c4e4c90dc93bd56d5c5df8a5 100644 --- a/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValMonitoringTool.cxx +++ b/InnerDetector/InDetValidation/InDetPhysValMonitoring/src/InDetPhysValMonitoringTool.cxx @@ -592,8 +592,8 @@ InDetPhysValMonitoringTool::fillHistograms() { const xAOD::TruthParticle* associatedTruth = getAsTruth.getTruth(thisTrack); if (associatedTruth && associatedTruth == thisTruth) { float prob = getMatchingProbability(*thisTrack); - matchingProbability = prob; if (not std::isnan(prob) && prob > m_lowProb) { + matchingProbability = prob; isEfficient = true; matchedTrack = thisTrack; break; diff --git a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODCaloClusterRetriever.cxx b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODCaloClusterRetriever.cxx index 9f703067e8dfe4a10860f370bb417c11ab3f9050..87990a241883c51cf0a6cd8a86935b864db5be8d 100755 --- a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODCaloClusterRetriever.cxx +++ b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODCaloClusterRetriever.cxx @@ -1,12 +1,11 @@ /* - Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration */ #include "xAODJiveXML/xAODCaloClusterRetriever.h" - #include "CaloGeoHelpers/CaloSampling.h" - #include "AthenaKernel/Units.h" + using Athena::Units::GeV; namespace JiveXML { @@ -18,86 +17,39 @@ namespace JiveXML { * @param parent AlgTools parent owning this tool **/ xAODCaloClusterRetriever::xAODCaloClusterRetriever(const std::string& type,const std::string& name,const IInterface* parent): - AthAlgTool(type,name,parent), - m_typeName("Cluster"), - m_sgKeyFavourite("egammaClusters") // new SGKey in rel.20 - { - - //Only declare the interface - declareInterface<IDataRetriever>(this); - - declareProperty("FavouriteClusterCollection" ,m_sgKeyFavourite, - "Collection to be first in output, shown in Atlantis without switching"); - declareProperty("OtherClusterCollections" ,m_otherKeys, - "Other collections to be retrieved. If list left empty, all available retrieved"); - declareProperty("DoWriteHLT", m_doWriteHLT = false,"Ignore HLTAutokey object by default."); // ignore HLTAutoKey objects - } - + AthAlgTool(type,name,parent) + {} + /** - * For each cluster collections retrieve basic parameters. + * For each cluster collection retrieve basic parameters. * 'Favourite' cluster collection first, then 'Other' collections. * @param FormatTool the tool that will create formated output from the DataMap */ StatusCode xAODCaloClusterRetriever::retrieve(ToolHandle<IFormatTool> &FormatTool) { - - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "in retrieveAll()" << endmsg; - - SG::ConstIterator<xAOD::CaloClusterContainer> iterator, end; - const xAOD::CaloClusterContainer* ccc; - - //obtain the default collection first - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Trying to retrieve " << dataTypeName() << " (" << m_sgKeyFavourite << ")" << endmsg; - StatusCode sc = evtStore()->retrieve(ccc, m_sgKeyFavourite); - if (sc.isFailure() ) { - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Collection " << m_sgKeyFavourite << " not found in SG " << endmsg; - }else{ - DataMap data = getData(ccc); - if ( FormatTool->AddToEvent(dataTypeName(), m_sgKeyFavourite+"_xAOD", &data).isFailure()){ - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Collection " << m_sgKeyFavourite << " not found in SG " << endmsg; - }else{ - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << dataTypeName() << " (" << m_sgKeyFavourite << ") AODCaloCluster retrieved" << endmsg; - } + + ATH_MSG_DEBUG("In retrieve()"); + + std::vector<std::string> keys = getKeys(); + + if(keys.empty()){ + ATH_MSG_WARNING("No StoreGate keys found"); + return StatusCode::SUCCESS; } - if ( m_otherKeys.empty() ) { - //obtain all other collections from StoreGate - if (( evtStore()->retrieve(iterator, end)).isFailure()){ - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << - "Unable to retrieve iterator for AODCaloCluster collection" << endmsg; -// return false; - } - - for (; iterator!=end; ++iterator) { - if ((iterator.key().find("HLT",0) != std::string::npos) && (!m_doWriteHLT)){ - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Ignoring HLT collection: " << iterator.key() << endmsg; - continue; } - if (iterator.key()!=m_sgKeyFavourite) { - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Trying to retrieve all. Current collection: " << dataTypeName() << " (" << iterator.key() << ")" << endmsg; - DataMap data = getData(&(*iterator)); - if ( FormatTool->AddToEvent(dataTypeName(), iterator.key()+"_xAOD", &data).isFailure()){ - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Collection " << iterator.key() << " not found in SG " << endmsg; - }else{ - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << dataTypeName() << " (" << iterator.key() << ") AODCaloCluster retrieved" << endmsg; - } - } - } - }else { - //obtain all collections with the given keys - std::vector<std::string>::const_iterator keyIter; - for ( keyIter=m_otherKeys.begin(); keyIter!=m_otherKeys.end(); ++keyIter ){ - StatusCode sc = evtStore()->retrieve( ccc, (*keyIter) ); - if (!sc.isFailure()) { - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Trying to retrieve selected " << dataTypeName() << " (" << (*keyIter) << ")" << endmsg; - DataMap data = getData(ccc); - if ( FormatTool->AddToEvent(dataTypeName(), (*keyIter), &data).isFailure()){ - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Collection " << (*keyIter) << " not found in SG " << endmsg; - }else{ - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << dataTypeName() << " (" << (*keyIter) << ") retrieved" << endmsg; - } + // Loop through the keys and retrieve the corresponding data + for (const std::string& key : keys) { + SG::ReadHandle<xAOD::CaloClusterContainer> cont(key); + if (cont.isValid()) { + DataMap data = getData(&(*cont)); + if (FormatTool->AddToEvent(dataTypeName(), key + "_xAOD", &data).isFailure()) { + ATH_MSG_WARNING("Failed to retrieve Collection " << key); + } else { + ATH_MSG_DEBUG(" (" << key << ") retrieved"); } + } else { + ATH_MSG_WARNING("Collection " << key << " not found in SG"); } } - //All collections retrieved okay return StatusCode::SUCCESS; } @@ -109,8 +61,8 @@ namespace JiveXML { * @param FormatTool the tool that will create formated output from the DataMap */ const DataMap xAODCaloClusterRetriever::getData(const xAOD::CaloClusterContainer* ccc) { - - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "retrieve()" << endmsg; + + ATH_MSG_DEBUG("in getData()"); DataMap DataMap; @@ -126,72 +78,67 @@ namespace JiveXML { std::string label=""; int id = 0; int s = 0; - float eInSample = 0.; - float eInSampleFull = 0.; - float emfrac = 0.; - float rawemfrac = 0.; + float eInSample = 0.; + float eInSampleFull = 0.; + float emfrac = 0.; + float rawemfrac = 0.; -// cells n/a in AOD, but keep this for compatibility -// with 'full' clusters in AtlantisJava + // cells n/a in AOD, but keep this for compatibility + // with 'full' clusters in AtlantisJava std::string tagCells; tagCells = "cells multiple=\"1.0\""; xAOD::CaloClusterContainer::const_iterator itr = ccc->begin(); for (; itr != ccc->end(); ++itr) { -// sum over samplings to get EMfraction: -//// works from AOD ! Info from Sven Menke 5Aug10 -// full sum: + // sum over samplings to get EMfraction: + //// works from AOD ! Info from Sven Menke 5Aug10 + // full sum: for (s=0;s<CaloSampling::Unknown; s++){ eInSampleFull += (*itr)->eSample(CaloSampling::CaloSample(s)); } -// Now only EMB1-3, EME1-3 and FCAL1: - eInSample += (*itr)->eSample(CaloSampling::EMB1); - eInSample += (*itr)->eSample(CaloSampling::EMB2); - eInSample += (*itr)->eSample(CaloSampling::EMB3); - eInSample += (*itr)->eSample(CaloSampling::EME1); - eInSample += (*itr)->eSample(CaloSampling::EME2); - eInSample += (*itr)->eSample(CaloSampling::EME3); - eInSample += (*itr)->eSample(CaloSampling::FCAL1); + // Now only EMB1-3, EME1-3 and FCAL1: + eInSample += (*itr)->eSample(CaloSampling::EMB1); + eInSample += (*itr)->eSample(CaloSampling::EMB2); + eInSample += (*itr)->eSample(CaloSampling::EMB3); + eInSample += (*itr)->eSample(CaloSampling::EME1); + eInSample += (*itr)->eSample(CaloSampling::EME2); + eInSample += (*itr)->eSample(CaloSampling::EME3); + eInSample += (*itr)->eSample(CaloSampling::FCAL1); emfrac = eInSample/eInSampleFull; rawemfrac = emfrac; -// sanity cut: emfrac should be within [0,1] + // sanity cut: emfrac should be within [0,1] if ( emfrac > 1.0 ) emfrac = 1.; if ( emfrac < 0.0 ) emfrac = 0.; - emfracVec.push_back( DataType(emfrac).toString() ); + emfracVec.emplace_back( DataType(emfrac).toString() ); if ( DataType( eInSample ).toString() != "0." ){ - label = "AllMeV_SumEMSampl=" + DataType( eInSample ).toString() + - "_SumAllSampl=" + DataType( eInSampleFull ).toString() + - "_calcEMFrac=" + DataType( rawemfrac ).toString()+ - "_outEMFrac=" + DataType( emfrac ).toString(); + label = "AllMeV_SumEMSampl=" + DataType( eInSample ).toString() + + "_SumAllSampl=" + DataType( eInSampleFull ).toString() + + "_calcEMFrac=" + DataType( rawemfrac ).toString()+ + "_outEMFrac=" + DataType( emfrac ).toString(); }else{ label = "n_a"; } eInSample = 0.; eInSampleFull = 0.; - labelVec.push_back( label ); - if (msgLvl(MSG::VERBOSE)) { - msg(MSG::VERBOSE) << "label is " << label << endmsg; - } + labelVec.emplace_back( label ); + ATH_MSG_VERBOSE("label is " << label); -// now the standard variables -// getBasicEnergy n/a in xAOD ! - - phi.push_back(DataType((*itr)->phi())); - eta.push_back(DataType((*itr)->eta())); - et.push_back(DataType((*itr)->et()/GeV)); - numCells.push_back(DataType( "0" )); - cells.push_back(DataType( "0" )); - idVec.push_back(DataType( ++id )); - - if (msgLvl(MSG::VERBOSE)) { - msg(MSG::VERBOSE) << dataTypeName() << " cluster #" << id - << " ,e=" << (*itr)->e()/GeV << ", et="; - msg(MSG::VERBOSE) << (*itr)->et()/GeV << ", eta=" << (*itr)->eta() - << ", phi=" << (*itr)->phi() << endmsg; - } + // now the standard variables + // getBasicEnergy n/a in xAOD ! + + phi.emplace_back(DataType((*itr)->phi())); + eta.emplace_back(DataType((*itr)->eta())); + et.emplace_back(DataType((*itr)->et()/GeV)); + numCells.emplace_back(DataType( "0" )); + cells.emplace_back(DataType( "0" )); + idVec.emplace_back(DataType( ++id )); + ATH_MSG_VERBOSE( dataTypeName() << " cluster #" << id + << " ,e=" << (*itr)->e()/GeV << ", et=" + << (*itr)->et()/GeV << ", eta=" << (*itr)->eta() + << ", phi=" << (*itr)->phi()); } // Start with mandatory entries DataMap["phi"] = phi; @@ -201,19 +148,49 @@ namespace JiveXML { DataMap["numCells"] = numCells; DataMap["id"] = idVec; DataMap["emfrac"] = emfracVec; // not in Atlantis yet ! Could be used in legoplot - DataMap["label"] = labelVec; // not in Atlantis yet ! + DataMap["label"] = labelVec; // not in Atlantis yet ! - //Be verbose - if (msgLvl(MSG::DEBUG)) { - msg(MSG::DEBUG) << dataTypeName() << " (AOD, no cells), collection: " << dataTypeName(); - msg(MSG::DEBUG) << " retrieved with " << phi.size() << " entries"<< endmsg; + ATH_MSG_DEBUG(dataTypeName() << " (AOD, no cells), collection: " << dataTypeName() + << " retrieved with " << phi.size() << " entries"); + return DataMap; + } + + + const std::vector<std::string> xAODCaloClusterRetriever::getKeys() { + + ATH_MSG_DEBUG("in getKeys()"); + + std::vector<std::string> keys = {}; + + // Remove m_priorityKey from m_otherKeys if it exists, we don't want to write it twice + auto it = std::find(m_otherKeys.begin(), m_otherKeys.end(), m_priorityKey); + if(it != m_otherKeys.end()){ + m_otherKeys.erase(it); } - //All collections retrieved okay - return DataMap; + // Add m_priorityKey as the first element if it is not "" + if(m_priorityKey!=""){ + keys.push_back(m_priorityKey); + } - } // retrieve + if(!m_otherKeys.empty()){ + keys.insert(keys.end(), m_otherKeys.begin(), m_otherKeys.end()); + } - //-------------------------------------------------------------------------- - + // If all collections are requested, obtain all available keys from StoreGate + std::vector<std::string> allKeys; + if(m_doWriteAllCollections){ + evtStore()->keys<xAOD::CaloClusterContainer>(allKeys); + // Add keys that are not the priority key and do not add containers with "HLT" in their name if requested + for(const std::string& key : allKeys){ + // Don't include key if it's already in keys + auto it2 = std::find(keys.begin(), keys.end(), key); + if(it2 != keys.end())continue; + if(key.find("HLT") == std::string::npos || m_doWriteHLT){ + keys.emplace_back(key); + } + } + } + return keys; + } } // JiveXML namespace diff --git a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODElectronRetriever.cxx b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODElectronRetriever.cxx index f0157295ec7c23c2936823e21ed7bc52adb4d242..df8154ecc40390032d3ae3a96fada17fb228b3c0 100755 --- a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODElectronRetriever.cxx +++ b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODElectronRetriever.cxx @@ -1,12 +1,11 @@ /* - Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration */ #include "xAODJiveXML/xAODElectronRetriever.h" - -#include "xAODEgamma/ElectronContainer.h" - +#include "xAODEgamma/ElectronContainer.h" #include "AthenaKernel/Units.h" + using Athena::Units::GeV; namespace JiveXML { @@ -16,91 +15,40 @@ namespace JiveXML { * @param type AlgTool type name * @param name AlgTool instance name * @param parent AlgTools parent owning this tool - * - * code reference for xAOD: jpt6Feb14 - * https://svnweb.cern.ch/trac/atlasgroups/browser/PAT/AODUpgrade/xAODReaderAlgs - * - * This is afirst 'skeleton' try for many xAOD retrievers to be done: - * xAOD::Electron, xAOD::Vertex, xAOD::Photon, xAOD::CaloCluster, xAOD::Jet - * xAOD::TrackParticle, xAOD::TauJet, xAOD::Muon - * **/ xAODElectronRetriever::xAODElectronRetriever(const std::string& type,const std::string& name,const IInterface* parent): - AthAlgTool(type,name,parent), m_typeName("Electron"), - m_sgKey("Electrons") // is xAOD name - { + AthAlgTool(type,name,parent) + {} - //Only declare the interface - declareInterface<IDataRetriever>(this); - - declareProperty("StoreGateKey", m_sgKey, - "Collection to be first in output, shown in Atlantis without switching"); - declareProperty("OtherCollections" ,m_otherKeys, - "Other collections to be retrieved. If list left empty, all available retrieved"); - } - /** - * For each jet collections retrieve basic parameters. + * For each electron collection retrieve basic parameters. * @param FormatTool the tool that will create formated output from the DataMap */ StatusCode xAODElectronRetriever::retrieve(ToolHandle<IFormatTool> &FormatTool) { - - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "in retrieveAll()" << endmsg; - - SG::ConstIterator<xAOD::ElectronContainer> iterator, end; - const xAOD::ElectronContainer* electrons; - - //obtain the default collection first - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Trying to retrieve " << dataTypeName() << " (" << m_sgKey << ")" << endmsg; - StatusCode sc = evtStore()->retrieve(electrons, m_sgKey); - if (sc.isFailure() ) { - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Collection " << m_sgKey << " not found in SG " << endmsg; - }else{ - DataMap data = getData(electrons); - if ( FormatTool->AddToEvent(dataTypeName(), m_sgKey+"_xAOD", &data).isFailure()){ //suffix can be removed later - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Collection " << m_sgKey << " not found in SG " << endmsg; - }else{ - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << dataTypeName() << " (" << m_sgKey << ") Electron retrieved" << endmsg; - } + + ATH_MSG_DEBUG("in retrieve()"); + + std::vector<std::string> keys = getKeys(); + + if(keys.empty()){ + ATH_MSG_WARNING("No StoreGate keys found"); + return StatusCode::SUCCESS; } - - if ( m_otherKeys.empty() ) { - //obtain all other collections from StoreGate - if (( evtStore()->retrieve(iterator, end)).isFailure()){ - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << - "Unable to retrieve iterator for xAOD Electron collection" << endmsg; -// return false; - } - - for (; iterator!=end; ++iterator) { - if (iterator.key()!=m_sgKey) { - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Trying to retrieve all. Current collection: " << dataTypeName() << " (" << iterator.key() << ")" << endmsg; - DataMap data = getData(&(*iterator)); - if ( FormatTool->AddToEvent(dataTypeName(), iterator.key()+"_xAOD", &data).isFailure()){ - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Collection " << iterator.key() << " not found in SG " << endmsg; - }else{ - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << dataTypeName() << " (" << iterator.key() << ") xAOD Electron retrieved" << endmsg; - } - } - } - }else { - //obtain all collections with the given keys - std::vector<std::string>::const_iterator keyIter; - for ( keyIter=m_otherKeys.begin(); keyIter!=m_otherKeys.end(); ++keyIter ){ - StatusCode sc = evtStore()->retrieve( electrons, (*keyIter) ); - if (!sc.isFailure()) { - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Trying to retrieve selected " << dataTypeName() << " (" << (*keyIter) << ")" << endmsg; - DataMap data = getData(electrons); - if ( FormatTool->AddToEvent(dataTypeName(), (*keyIter), &data).isFailure()){ - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Collection " << (*keyIter) << " not found in SG " << endmsg; - }else{ - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << dataTypeName() << " (" << (*keyIter) << ") retrieved" << endmsg; - } + + // Loop through the keys and retrieve the corresponding data + for (const std::string& key : keys) { + SG::ReadHandle<xAOD::ElectronContainer> cont(key); + if (cont.isValid()) { + DataMap data = getData(&(*cont)); + if (FormatTool->AddToEvent(dataTypeName(), key + "_xAOD", &data).isFailure()) { + ATH_MSG_WARNING("Failed to retrieve Collection " << key); + } else { + ATH_MSG_DEBUG(" (" << key << ") retrieved"); } + } else { + ATH_MSG_WARNING("Collection " << key << " not found in SG"); } } - - //All collections retrieved okay return StatusCode::SUCCESS; } @@ -110,8 +58,8 @@ namespace JiveXML { * Also association with clusters and tracks (ElementLink). */ const DataMap xAODElectronRetriever::getData(const xAOD::ElectronContainer* elCont) { - - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "in getData()" << endmsg; + + ATH_MSG_DEBUG("in getData()"); DataMap DataMap; @@ -133,49 +81,44 @@ namespace JiveXML { for (; elItr != elItrE; ++elItr) { - std::string electronAuthor = ""; - std::string electronIsEMString = "none"; - std::string electronLabel = ""; - phi.push_back(DataType((*elItr)->phi())); - eta.push_back(DataType((*elItr)->eta())); - pt.push_back(DataType((*elItr)->pt()/GeV)); - mass.push_back(DataType((*elItr)->m()/GeV)); - energy.push_back( DataType((*elItr)->e()/GeV )); + std::string electronAuthor = ""; + std::string electronIsEMString = "none"; + std::string electronLabel = ""; + phi.emplace_back(DataType((*elItr)->phi())); + eta.emplace_back(DataType((*elItr)->eta())); + pt.emplace_back(DataType((*elItr)->pt()/GeV)); + mass.emplace_back(DataType((*elItr)->m()/GeV)); + energy.emplace_back( DataType((*elItr)->e()/GeV )); if ((*elItr)->trackParticle()){ // ForwardElectrons have no track ! - pdgId.push_back(DataType( -11.*(*elItr)->trackParticle()->charge() )); // pdgId not available anymore in xAOD + pdgId.emplace_back(DataType( -11.*(*elItr)->trackParticle()->charge() )); // pdgId not available anymore in xAOD }else{ - pdgId.push_back(DataType( 0. ) ); + pdgId.emplace_back(DataType( 0. ) ); } - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "CHECKPOINT 1" << endmsg; - - - if (msgLvl(MSG::DEBUG)) { - msg(MSG::DEBUG) << " Electron #" << counter++ << " : eta = " << (*elItr)->eta() << ", phi = " - << (*elItr)->phi() - // << ", ntrk = " << (*elItr)->getNumberOfTrackParticles() - << ", author = " << (*elItr)->author() -//////// those don't work for ForwardElectrons ! -// << ", isEM/Tight: " << (*elItr)->passSelection(passesTight, "Tight") -// << ", charge = " << (*elItr)->trackParticle()->charge() -// << ", pdgId = " << -11.*(*elItr)->trackParticle()->charge() - << endmsg; - } + ATH_MSG_DEBUG(" Electron #" << counter++ << " : eta = " << (*elItr)->eta() << ", phi = " + << (*elItr)->phi() + // << ", ntrk = " << (*elItr)->getNumberOfTrackParticles() + << ", author = " << (*elItr)->author() + // these don't work for ForwardElectrons ! + // << ", isEM/Tight: " << (*elItr)->passSelection(passesTight, "Tight") + // << ", charge = " << (*elItr)->trackParticle()->charge() + // << ", pdgId = " << -11.*(*elItr)->trackParticle()->charge() + ); bool passesTight(false); bool passesMedium(false); bool passesLoose(false); const bool tightSelectionExists = (*elItr)->passSelection(passesTight, "Tight"); - msg(MSG::VERBOSE) << "tight exists " << tightSelectionExists - << " and passes? " << passesTight << endmsg; + ATH_MSG_VERBOSE("tight exists " << tightSelectionExists + << " and passes? " << passesTight); const bool mediumSelectionExists = (*elItr)->passSelection(passesMedium, "Medium"); - msg(MSG::VERBOSE) << "medium exists " << mediumSelectionExists - << " and passes? " << passesMedium << endmsg; + ATH_MSG_VERBOSE("medium exists " << mediumSelectionExists + << " and passes? " << passesMedium); const bool looseSelectionExists = (*elItr)->passSelection(passesLoose, "Loose"); - msg(MSG::VERBOSE) << "loose exists " << looseSelectionExists - << " and passes? " << passesLoose << endmsg; + ATH_MSG_VERBOSE("loose exists " << looseSelectionExists + << " and passes? " << passesLoose); electronAuthor = "author"+DataType( (*elItr)->author() ).toString(); // for odd ones eg FWD electronLabel = electronAuthor; @@ -184,23 +127,23 @@ namespace JiveXML { if (( (*elItr)->author()) == 2){ electronAuthor = "softe"; electronLabel += "_softe"; } if (( (*elItr)->author()) == 1){ electronAuthor = "egamma"; electronLabel += "_egamma"; } - if ( passesLoose ){ - electronLabel += "_Loose"; - electronIsEMString = "Loose"; // assume that hierarchy is obeyed ! - } - if ( passesMedium ){ - electronLabel += "_Medium"; - electronIsEMString = "Medium"; // assume that hierarchy is obeyed ! - } - if ( passesTight ){ - electronLabel += "_Tight"; - electronIsEMString = "Tight"; // assume that hierarchy is obeyed ! - } - author.push_back( DataType( electronAuthor ) ); - label.push_back( DataType( electronLabel ) ); - isEMString.push_back( DataType( electronIsEMString ) ); - - } // end ElectronIterator + if ( passesLoose ){ + electronLabel += "_Loose"; + electronIsEMString = "Loose"; // assume that hierarchy is obeyed ! + } + if ( passesMedium ){ + electronLabel += "_Medium"; + electronIsEMString = "Medium"; // assume that hierarchy is obeyed ! + } + if ( passesTight ){ + electronLabel += "_Tight"; + electronIsEMString = "Tight"; // assume that hierarchy is obeyed ! + } + author.emplace_back( DataType( electronAuthor ) ); + label.emplace_back( DataType( electronLabel ) ); + isEMString.emplace_back( DataType( electronIsEMString ) ); + + } // end ElectronIterator // four-vectors DataMap["phi"] = phi; @@ -213,15 +156,50 @@ namespace JiveXML { DataMap["label"] = label; DataMap["author"] = author; - if (msgLvl(MSG::DEBUG)) { - msg(MSG::DEBUG) << dataTypeName() << " retrieved with " << phi.size() << " entries"<< endmsg; - } + ATH_MSG_DEBUG(dataTypeName() << " retrieved with " << phi.size() << " entries"); - //All collections retrieved okay return DataMap; + } + + + const std::vector<std::string> xAODElectronRetriever::getKeys() { + + ATH_MSG_DEBUG("in getKeys()"); + + std::vector<std::string> keys = {}; + + // Remove m_priorityKey from m_otherKeys if it exists, we don't want to write it twice + auto it = std::find(m_otherKeys.begin(), m_otherKeys.end(), m_priorityKey); + if(it != m_otherKeys.end()){ + m_otherKeys.erase(it); + } + + // Add m_priorityKey as the first element if it is not "" + if(m_priorityKey!=""){ + keys.push_back(m_priorityKey); + } + + if(!m_otherKeys.empty()){ + keys.insert(keys.end(), m_otherKeys.begin(), m_otherKeys.end()); + } + + // If all collections are requested, obtain all available keys from StoreGate + std::vector<std::string> allKeys; + if(m_doWriteAllCollections){ + evtStore()->keys<xAOD::ElectronContainer>(allKeys); + + // Add keys that are not the priority key and do not add containers with "HLT" in their name if requested + for(const std::string& key : allKeys){ + // Don't include key if it's already in keys + auto it2 = std::find(keys.begin(), keys.end(), key); + if(it2 != keys.end())continue; + if(key.find("HLT") == std::string::npos || m_doWriteHLT){ + keys.emplace_back(key); + } + } + } + return keys; + } - } // retrieve - //-------------------------------------------------------------------------- - } // JiveXML namespace diff --git a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODJetRetriever.cxx b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODJetRetriever.cxx index b9665666d16bef0934c895a8202e3f31339e8de8..745934843975069f3134e27343dd982fcca5912a 100755 --- a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODJetRetriever.cxx +++ b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODJetRetriever.cxx @@ -1,10 +1,10 @@ /* - Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration - */ + Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration +*/ #include "xAODJiveXML/xAODJetRetriever.h" -#include "xAODJet/JetContainer.h" +#include "xAODJet/JetContainer.h" #include "xAODCaloEvent/CaloCluster.h" #include "xAODTracking/TrackParticle.h" #include "xAODJet/JetAttributes.h" @@ -21,22 +21,9 @@ namespace JiveXML { * @param type AlgTool type name * @param name AlgTool instance name * @param parent AlgTools parent owning this tool - * - * code reference for xAOD: jpt6Feb14 - * https://svnweb.cern.ch/trac/atlasgroups/browser/PAT/AODUpgrade/xAODReaderAlgs - * - * This is afirst 'skeleton' try for many xAOD retrievers to be done: - * xAOD::Jet, xAOD::Vertex, xAOD::Photon, xAOD::CaloCluster, xAOD::Jet - * xAOD::TrackParticle, xAOD::TauJet, xAOD::Muon - * **/ xAODJetRetriever::xAODJetRetriever(const std::string& type,const std::string& name,const IInterface* parent): - AthAlgTool(type,name,parent){ - - //Only declare the interface - declareInterface<IDataRetriever>(this); - - } + AthAlgTool(type,name,parent){} StatusCode xAODJetRetriever::initialize() { if (m_bTaggerNames.size()!=m_CDIPaths.size()){ @@ -67,66 +54,30 @@ namespace JiveXML { */ StatusCode xAODJetRetriever::retrieve(ToolHandle<IFormatTool> &FormatTool) { - ATH_MSG_DEBUG( "in retrieveAll()" ); + ATH_MSG_DEBUG( "in retrieve()" ); - SG::ConstIterator<xAOD::JetContainer> iterator, end; - const xAOD::JetContainer* Jets; + std::vector<std::string> keys = getKeys(); - //obtain the default collection first - ATH_MSG_DEBUG( "Trying to retrieve " << dataTypeName() << " (" << m_sgKeyFavourite << ")" ); - StatusCode sc = evtStore()->retrieve(Jets, m_sgKeyFavourite); - if (sc.isFailure() ) { - ATH_MSG_WARNING( "Collection " << m_sgKeyFavourite << " not found in SG " ); - }else{ - DataMap data = getData(Jets, m_sgKeyFavourite); - if ( FormatTool->AddToEvent(dataTypeName(), m_sgKeyFavourite+"_xAOD", &data).isFailure()){ - ATH_MSG_WARNING( "Collection " << m_sgKeyFavourite << " not found in SG " ); - }else{ - ATH_MSG_DEBUG( dataTypeName() << " (" << m_sgKeyFavourite << ") Jet retrieved" ); - } + if(keys.empty()){ + ATH_MSG_WARNING("No StoreGate keys found"); + return StatusCode::SUCCESS; } - if ( m_otherKeys.empty() ) { - //obtain all other collections from StoreGate - if (( evtStore()->retrieve(iterator, end)).isFailure()){ - ATH_MSG_WARNING( "Unable to retrieve iterator for Jet collection" ); - return StatusCode::SUCCESS; + // Loop through the keys and retrieve the corresponding data + for (const std::string& key : keys) { + SG::ReadHandle<xAOD::JetContainer> cont(key); + if(cont.isValid()){ + DataMap data = getData(&(*cont), key); + if (FormatTool->AddToEvent(dataTypeName(), key + "_xAOD", &data).isFailure()) { + ATH_MSG_WARNING("Failed to retrieve Collection " << key); + } else { + ATH_MSG_DEBUG(" (" << key << ") retrieved"); + } } - - for (; iterator!=end; ++iterator) { - - std::string::size_type position = iterator.key().find("HLT",0); - if ( m_doWriteHLT ){ position = 99; } // override SG key find - if ( position != 0 ){ // SG key doesn't contain HLTAutoKey - if (iterator.key()!=m_sgKeyFavourite) { - ATH_MSG_DEBUG( "Trying to retrieve all " << dataTypeName() << " (" << iterator.key() << ")" ); - DataMap data = getData(&(*iterator), iterator.key()); - if ( FormatTool->AddToEvent(dataTypeName(), iterator.key()+"_xAOD", &data).isFailure()){ - ATH_MSG_WARNING( "Collection " << iterator.key() << " not found in SG " ); - }else{ - ATH_MSG_DEBUG( dataTypeName() << " (" << iterator.key() << ") AODJet retrieved" ); - } - } - } + else { + ATH_MSG_WARNING("Collection " << key << " not found in SG"); } - }else { - //obtain all collections with the given keys - for (auto jetkey : m_otherKeys) { - if (jetkey==m_sgKeyFavourite) { continue; } // skip if already retrieved - if ( !evtStore()->contains<xAOD::JetContainer>(jetkey)){ continue; } // skip if not in SG - StatusCode sc = evtStore()->retrieve( Jets, jetkey ); - if (!sc.isFailure()) { - ATH_MSG_DEBUG( "Trying to retrieve selected " << dataTypeName() << " (" << jetkey << ")" ); - DataMap data = getData(Jets, jetkey); - if ( FormatTool->AddToEvent(dataTypeName(), jetkey+"_xAOD", &data).isFailure()){ - ATH_MSG_WARNING( "Collection " << jetkey << " not found in SG " ); - }else{ - ATH_MSG_DEBUG( dataTypeName() << " (" << jetkey << ") retrieved" ); - } - } - } - } - //All collections retrieved okay + } return StatusCode::SUCCESS; } @@ -169,163 +120,166 @@ namespace JiveXML { int counter = 0; for (const auto jet : *jetCont) { + if(!jet)continue; ATH_MSG_DEBUG( " Jet #" << counter++ << " : eta = " << jet->eta() << ", phi = " << jet->phi() << ", pt = " << jet->pt() ); /* retrieve associated tracks and calo clusters */ - size_t numConstit = jet->numConstituents(); std::vector<std::string> tempCellID; size_t trackcounter = 0; - if (numConstit > 0) { - - xAOD::Type::ObjectType ctype = jet->rawConstituent(0)->type(); - - // PFlow and Flow jets from athena/Reconstruction/Jet/JetMomentTools/Root/JetTrackMomentsTool.cxx - if (ctype == xAOD::Type::ParticleFlow) { - // This jet is either a PFlow jet (constituent type: xAOD::FlowElement::PFlow) or UFO jets - for (size_t i = 0; i < numConstit; i++) { - const xAOD::PFO *constit = - dynamic_cast<const xAOD::PFO *>(jet->rawConstituent(i)); - if (constit->isCharged()) { - const xAOD::TrackParticle *thisTrack = constit->track(0); // by construction xAOD::PFO can only have one track, in eflowRec usage - trackKey.push_back(DataType(thisTrack->index())); - trackContKey.push_back(m_tracksName.value()); - trackcounter++; - } // We have a charged PFO - } // Loop on jet constituents - } else if (ctype == xAOD::Type::FlowElement) { - // This jet is made from xAOD::FlowElement, so we calculate the pflow moments if they're PFOs - size_t numConstit = jet->numConstituents(); - for (size_t i = 0; i < numConstit; i++) { - const xAOD::FlowElement *constit = dynamic_cast<const xAOD::FlowElement *>(jet->rawConstituent(i)); - // UFO jet constituents have signalType xAOD::FlowElement::Charged or xAOD::FlowElement::Neutral - // PFlow jet constituents have signalType xAOD::FlowElement::ChargedPFlow or xAOD::FlowElement::NeutralPFlow - if (constit != nullptr && ((constit->signalType() & xAOD::FlowElement::PFlow) || constit->signalType() == xAOD::FlowElement::Charged)) { - if (constit->isCharged()) { - const xAOD::TrackParticle *thisTrack = dynamic_cast<const xAOD::TrackParticle *>( constit->chargedObject( 0)); // PFO should have only 1 track - if (thisTrack != nullptr) { - trackKey.push_back(DataType(thisTrack->index())); - trackContKey.push_back(m_tracksName.value()); - trackcounter++; - } - else - ATH_MSG_WARNING( "Charged PFO had no associated TrackParticle"); - } // We have a charged PFO - } // The FlowElement is a PFO - } // Loop on jet constituents - } else if (ctype == xAOD::Type::CaloCluster) { - // get associated cluster - for (size_t j = 0; j < numConstit; ++j) { - const xAOD::CaloCluster *cluster = dynamic_cast<const xAOD::CaloCluster *>(jet->rawConstituent(j)); - clusterID.push_back(DataType(cluster->index())); - for (const auto cc : *(cluster->getCellLinks())) { - if (std::find(tempCellID.begin(), tempCellID.end(), std::to_string( cc->caloDDE()->identify().get_compact())) != tempCellID.end()) { - continue; - } else { - cellID.push_back( DataType(cc->caloDDE()->identify().get_compact())); - tempCellID.push_back( std::to_string(cc->caloDDE()->identify().get_compact())); - } - } - ATH_MSG_VERBOSE(" Associated cluster: eta = " << cluster->eta() << ", phi = " << cluster->phi()); - } - - // get ghost associated tracks - std::vector<const xAOD::TrackParticle *> ghosttracks = jet->getAssociatedObjects<xAOD::TrackParticle>( xAOD::JetAttribute::GhostTrack); - if (ghosttracks.empty()) { - ATH_MSG_VERBOSE(" Associated track: ERROR"); - } else { - for (size_t i = 0; i < ghosttracks.size(); i++) { - - // can access the base track class, should be able to get tracker hits ? - // const Trk::Track* baseTrack = dynamic_cast< const Trk::Track* >( ghosttracks[i]->track()); - - trackKey.push_back(DataType(ghosttracks[i]->index())); - trackContKey.push_back(m_tracksName.value()); - - ATH_MSG_VERBOSE(" Associated track: d0 = " << ghosttracks[i]->d0() << ", pt = " << ghosttracks[i]->pt()); - } - trackcounter = ghosttracks.size(); - } - } else if (ctype == xAOD::Type::TrackParticle) { - for (size_t j = 0; j < numConstit; ++j) { - const xAOD::TrackParticle *track = - dynamic_cast<const xAOD::TrackParticle *>(jet->rawConstituent(j)); - if (!track) { - ATH_MSG_VERBOSE(" Associated track: ERROR"); - } else { - trackKey.push_back(DataType(track->index())); - trackContKey.push_back(m_tracksName.value()); - trackcounter++; - ATH_MSG_VERBOSE(" Associated track: d0 = " << track->d0() << ", pt = " << track->pt()); - } - } - } - } - trackLinkCount.push_back(DataType(trackcounter)); - numCells.push_back(DataType(tempCellID.size())); - - - phi.push_back(DataType(jet->phi())); - eta.push_back(DataType(jet->eta())); - et.push_back(DataType(jet->pt()/GeV)); // hack ! no et in xAOD_Jet_v1 currently - idVec.push_back( DataType( ++id )); - - mass.push_back(DataType(jet->m()/GeV)); - energy.push_back( DataType(jet->e()/GeV ) ); - - px.push_back(DataType(jet->px()/GeV)); - py.push_back(DataType(jet->py()/GeV)); - pz.push_back(DataType(jet->pz()/GeV)); + //TODO FIXME jet->rawConstituent(0) fails for some keys, including (but not exclusively) HLT_AntiKt10EMPFlowCSSKJets_nojcalib_ftf, HLT_AntiKt10EMPFlowCSSKSoftDropBeta100Zcut10Jets_jes_ftf, HLT_AntiKt4EMPFlowJets_nojcalib_ftf, HLT_AntiKt4EMPFlowJets_subjesgscIS_ftf, HLT_AntiKt4EMPFlowJets_subresjesgscIS_ftf + if (numConstit > 0){ + const xAOD::IParticle* constituent = jet->rawConstituent(0); + if (constituent){ + xAOD::Type::ObjectType ctype=jet->rawConstituent(0)->type(); + // PFlow and Flow jets from athena/Reconstruction/Jet/JetMomentTools/Root/JetTrackMomentsTool.cxx + if (ctype == xAOD::Type::ParticleFlow) { + // This jet is either a PFlow jet (constituent type: xAOD::FlowElement::PFlow) or UFO jets + for (size_t i = 0; i < numConstit; i++) { + const xAOD::PFO *constit = + dynamic_cast<const xAOD::PFO *>(jet->rawConstituent(i)); + if (constit->isCharged()) { + const xAOD::TrackParticle *thisTrack = constit->track(0); // by construction xAOD::PFO can only have one track, in eflowRec usage + trackKey.emplace_back(DataType(thisTrack->index())); + trackContKey.emplace_back(m_tracksName.value()); + trackcounter++; + } // We have a charged PFO + } // Loop on jet constituents + } else if (ctype == xAOD::Type::FlowElement) { + // This jet is made from xAOD::FlowElement, so we calculate the pflow moments if they're PFOs + size_t numConstit = jet->numConstituents(); + for (size_t i = 0; i < numConstit; i++) { + const xAOD::FlowElement *constit = dynamic_cast<const xAOD::FlowElement *>(jet->rawConstituent(i)); + // UFO jet constituents have signalType xAOD::FlowElement::Charged or xAOD::FlowElement::Neutral + // PFlow jet constituents have signalType xAOD::FlowElement::ChargedPFlow or xAOD::FlowElement::NeutralPFlow + if (constit != nullptr && ((constit->signalType() & xAOD::FlowElement::PFlow) || constit->signalType() == xAOD::FlowElement::Charged)) { + if (constit->isCharged()) { + const xAOD::TrackParticle *thisTrack = dynamic_cast<const xAOD::TrackParticle *>( constit->chargedObject( 0)); // PFO should have only 1 track + if (thisTrack != nullptr) { + trackKey.emplace_back(DataType(thisTrack->index())); + trackContKey.emplace_back(m_tracksName.value()); + trackcounter++; + } + else + ATH_MSG_WARNING( "Charged PFO had no associated TrackParticle"); + } // We have a charged PFO + } // The FlowElement is a PFO + } // Loop on jet constituents + } else if (ctype == xAOD::Type::CaloCluster) { + // get associated cluster + for (size_t j = 0; j < numConstit; ++j) { + const xAOD::CaloCluster *cluster = dynamic_cast<const xAOD::CaloCluster *>(jet->rawConstituent(j)); + clusterID.emplace_back(DataType(cluster->index())); + if(!cluster->getCellLinks())continue; + for (const auto cc : *(cluster->getCellLinks())) { + if (std::find(tempCellID.begin(), tempCellID.end(), std::to_string( cc->caloDDE()->identify().get_compact())) != tempCellID.end()) { + continue; + } else { + cellID.emplace_back( DataType(cc->caloDDE()->identify().get_compact())); + tempCellID.emplace_back( std::to_string(cc->caloDDE()->identify().get_compact())); + } + } + ATH_MSG_VERBOSE(" Associated cluster: eta = " << cluster->eta() << ", phi = " << cluster->phi()); + } + // get ghost associated tracks + std::vector<const xAOD::TrackParticle*> ghosttracks; + jet->getAssociatedObjects<xAOD::TrackParticle>(xAOD::JetAttribute::GhostTrack, ghosttracks); + if (ghosttracks.empty()) { + ATH_MSG_VERBOSE(" Associated track: ERROR"); + } else { + for (size_t i = 0; i < ghosttracks.size(); i++) { + + // can access the base track class, should be able to get tracker hits ? + // const Trk::Track* baseTrack = dynamic_cast< const Trk::Track* >( ghosttracks[i]->track()); + + trackKey.emplace_back(DataType(ghosttracks[i]->index())); + trackContKey.emplace_back(m_tracksName.value()); + + ATH_MSG_VERBOSE(" Associated track: d0 = " << ghosttracks[i]->d0() << ", pt = " << ghosttracks[i]->pt()); + } + trackcounter = ghosttracks.size(); + } + } else if (ctype == xAOD::Type::TrackParticle) { + for (size_t j = 0; j < numConstit; ++j) { + const xAOD::TrackParticle *track = + dynamic_cast<const xAOD::TrackParticle *>(jet->rawConstituent(j)); + if (!track) { + ATH_MSG_VERBOSE(" Associated track: ERROR"); + } else { + trackKey.emplace_back(DataType(track->index())); + trackContKey.emplace_back(m_tracksName.value()); + trackcounter++; + ATH_MSG_VERBOSE(" Associated track: d0 = " << track->d0() << ", pt = " << track->pt()); + } + } + } + } + } + trackLinkCount.emplace_back(DataType(trackcounter)); + numCells.emplace_back(DataType(tempCellID.size())); + + + phi.emplace_back(DataType(jet->phi())); + eta.emplace_back(DataType(jet->eta())); + et.emplace_back(DataType(jet->pt()/GeV)); // hack ! no et in xAOD_Jet_v1 currently + idVec.emplace_back( DataType( ++id )); + + mass.emplace_back(DataType(jet->m()/GeV)); + energy.emplace_back( DataType(jet->e()/GeV ) ); + + px.emplace_back(DataType(jet->px()/GeV)); + py.emplace_back(DataType(jet->py()/GeV)); + pz.emplace_back(DataType(jet->pz()/GeV)); // bjet tagger values if (jetkey!="AntiKt4EMPFlowJets" || (m_nTaggers==0)){ - bTagName.push_back(DataType("None")); - bTagValue.push_back(DataType(0.)); + bTagName.emplace_back(DataType("None")); + bTagValue.emplace_back(DataType(0.)); }else{ - double btagValue; - for (auto taggerName : m_bTaggerNames) { - CP::CorrectionCode code = m_btagSelTools[taggerName]->getTaggerWeight(*jet, btagValue); - if (code != CP::CorrectionCode::Ok) { - ATH_MSG_DEBUG("Failed to get btagging weight for tagger " << taggerName); - btagValue = 0; - } - bTagName.push_back(DataType(taggerName)); - bTagValue.push_back(DataType(btagValue)); - } + double btagValue; + for (auto taggerName : m_bTaggerNames) { + CP::CorrectionCode code = m_btagSelTools[taggerName]->getTaggerWeight(*jet, btagValue); + if (code != CP::CorrectionCode::Ok) { + ATH_MSG_DEBUG("Failed to get btagging weight for tagger " << taggerName); + btagValue = 0; + } + bTagName.emplace_back(DataType(taggerName)); + bTagValue.emplace_back(DataType(btagValue)); + } } float chargeread; if (!jet->getAttribute<float>(xAOD::JetAttribute::Charge, chargeread)) { - ATH_MSG_DEBUG("Jet charge unavailable!"); - charge.push_back( DataType( 0. )); + ATH_MSG_DEBUG("Jet charge unavailable!"); + charge.emplace_back( DataType( 0. )); }else{ - charge.push_back( DataType( chargeread )); + charge.emplace_back( DataType( chargeread )); } // updated for data15 // from: Reconstruction/MET/METReconstruction/Root/METJetFilterTool.cxx std::vector<float> jvfread; if(!jet->getAttribute<std::vector<float> >(xAOD::JetAttribute::JVF,jvfread)) { - ATH_MSG_DEBUG("Jet JVF unavailable!"); - jvf.push_back( DataType( 1. )); + ATH_MSG_DEBUG("Jet JVF unavailable!"); + jvf.emplace_back( DataType( 1. )); }else{ - jvf.push_back( DataType( jvfread[0] )); + jvf.emplace_back( DataType( jvfread[0] )); } float jvtread; if(!jet->getAttribute<float>(xAOD::JetAttribute::Jvt,jvtread)) { - ATH_MSG_DEBUG("Jet JVT unavailable!"); - jvt.push_back(DataType(0.)); + ATH_MSG_DEBUG("Jet JVT unavailable!"); + jvt.emplace_back(DataType(0.)); } else { - jvt.push_back(DataType(jvtread)); + jvt.emplace_back(DataType(jvtread)); } float emfracread = 0; if(!jet->getAttribute(xAOD::JetAttribute::EMFrac,emfracread)) { - ATH_MSG_DEBUG("Jet EMFrac unavailable!"); - emfrac.push_back( DataType( 0. )); + ATH_MSG_DEBUG("Jet EMFrac unavailable!"); + emfrac.emplace_back( DataType( 0. )); }else{ - emfrac.push_back( DataType( emfracread )); + emfrac.emplace_back( DataType( emfracread )); } } // end loop @@ -368,11 +322,47 @@ namespace JiveXML { ATH_MSG_DEBUG( dataTypeName() << " retrieved with " << phi.size() << " entries" ); - //All collections retrieved okay return DataMap; + } + + + const std::vector<std::string> xAODJetRetriever::getKeys() { + + ATH_MSG_DEBUG("in getKeys()"); + + std::vector<std::string> keys = {}; + + // Remove m_priorityKey from m_otherKeys if it exists, we don't want to write it twice + auto it = std::find(m_otherKeys.begin(), m_otherKeys.end(), m_priorityKey); + if(it != m_otherKeys.end()){ + m_otherKeys.erase(it); + } + + // Add m_priorityKey as the first element if it is not "" + if(m_priorityKey!=""){ + keys.push_back(m_priorityKey); + } - } // retrieve + if(!m_otherKeys.empty()){ + keys.insert(keys.end(), m_otherKeys.begin(), m_otherKeys.end()); + } - //-------------------------------------------------------------------------- + // If all collections are requested, obtain all available keys from StoreGate + std::vector<std::string> allKeys; + if(m_doWriteAllCollections){ + evtStore()->keys<xAOD::JetContainer>(allKeys); + + // Add keys that are not the priority key and do not add containers with "HLT" in their name if requested + for(const std::string& key : allKeys){ + // Don't include key if it's already in keys + auto it2 = std::find(keys.begin(), keys.end(), key); + if(it2 != keys.end())continue; + if(key.find("HLT") == std::string::npos || m_doWriteHLT){ + keys.emplace_back(key); + } + } + } + return keys; + } } // JiveXML namespace diff --git a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODMissingETRetriever.cxx b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODMissingETRetriever.cxx index 635e2872e6c66a3d1d1dae243adb34d47ee664e7..62f08b688e63a754150fe503b7a67096c3c9afa5 100755 --- a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODMissingETRetriever.cxx +++ b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODMissingETRetriever.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration */ #include "xAODJiveXML/xAODMissingETRetriever.h" @@ -14,88 +14,39 @@ namespace JiveXML { * @param type AlgTool type name * @param name AlgTool instance name * @param parent AlgTools parent owning this tool - * - * code reference for xAOD: jpt6Feb14 - * https://svnweb.cern.ch/trac/atlasgroups/browser/PAT/AODUpgrade/xAODReaderAlgs - * - * This is afirst 'skeleton' try for many xAOD retrievers to be done: - * xAOD::MissingET, xAOD::Vertex, xAOD::MissingET, xAOD::CaloCluster, xAOD::Jet - * xAOD::TrackParticle, xAOD::TauJet, xAOD::Muon - * **/ xAODMissingETRetriever::xAODMissingETRetriever(const std::string& type,const std::string& name,const IInterface* parent): - AthAlgTool(type,name,parent), m_typeName("ETMis"){ + AthAlgTool(type,name,parent){} - //Only declare the interface - declareInterface<IDataRetriever>(this); - - declareProperty("FavouriteMETCollection" ,m_sgKeyFavourite = "MET_RefFinal" , - "Collection to be first in output, shown in Atlantis without switching"); - declareProperty("OtherMETCollections" ,m_otherKeys, - "Other collections to be retrieved. If list left empty, all available retrieved"); - } - /** - * For each jet collections retrieve basic parameters. + * For each MET collection retrieve basic parameters. * @param FormatTool the tool that will create formated output from the DataMap */ StatusCode xAODMissingETRetriever::retrieve(ToolHandle<IFormatTool> &FormatTool) { - - ATH_MSG_DEBUG( "in retrieveAll()" ); - - SG::ConstIterator<xAOD::MissingETContainer> iterator, end; - const xAOD::MissingETContainer* MissingETs; - - //obtain the default collection first - ATH_MSG_DEBUG( "Trying to retrieve " << dataTypeName() << " (" << m_sgKeyFavourite << ")" ); - StatusCode sc = evtStore()->retrieve(MissingETs, m_sgKeyFavourite); - if (sc.isFailure() ) { - ATH_MSG_WARNING( "Collection " << m_sgKeyFavourite << " not found in SG " ); - }else{ - DataMap data = getData(MissingETs); - if ( FormatTool->AddToEvent(dataTypeName(), m_sgKeyFavourite+"_xAOD", &data).isFailure()){ //suffix can be removed later - ATH_MSG_WARNING( "Collection " << m_sgKeyFavourite << " not found in SG " ); - }else{ - ATH_MSG_DEBUG( dataTypeName() << " (" << m_sgKeyFavourite << ") MissingET retrieved" ); - } + + ATH_MSG_DEBUG( "in retrieve()" ); + + std::vector<std::string> keys = getKeys(); + + if(keys.empty()){ + ATH_MSG_WARNING("No StoreGate keys found"); + return StatusCode::SUCCESS; } - - if ( m_otherKeys.empty() ) { - //obtain all other collections from StoreGate - if (( evtStore()->retrieve(iterator, end)).isFailure()){ - ATH_MSG_WARNING( "Unable to retrieve iterator for MET collection" ); -// return false; - } - - for (; iterator!=end; ++iterator) { - if (iterator.key()!=m_sgKeyFavourite) { - ATH_MSG_DEBUG( "Trying to retrieve all " << dataTypeName() << " (" << iterator.key() << ")" ); - DataMap data = getData(&(*iterator)); - if ( FormatTool->AddToEvent(dataTypeName(), iterator.key()+"_xAOD", &data).isFailure()){ - ATH_MSG_WARNING( "Collection " << iterator.key() << " not found in SG " ); - }else{ - ATH_MSG_DEBUG( dataTypeName() << " (" << iterator.key() << ") xAOD_MET retrieved" ); - } - } - } - }else { - //obtain all collections with the given keys - std::vector<std::string>::const_iterator keyIter; - for ( keyIter=m_otherKeys.begin(); keyIter!=m_otherKeys.end(); ++keyIter ){ - if ( !evtStore()->contains<xAOD::MissingETContainer>( (*keyIter) ) ){ continue; } // skip if not in SG - StatusCode sc = evtStore()->retrieve( MissingETs, (*keyIter) ); - if (!sc.isFailure()) { - ATH_MSG_DEBUG( "Trying to retrieve selected " << dataTypeName() << " (" << (*keyIter) << ")" ); - DataMap data = getData(MissingETs); - if ( FormatTool->AddToEvent(dataTypeName(), (*keyIter)+"_xAOD", &data).isFailure()){ - ATH_MSG_WARNING( "Collection " << (*keyIter) << " not found in SG " ); - }else{ - ATH_MSG_DEBUG( dataTypeName() << " (" << (*keyIter) << ") retrieved" ); - } + + // Loop through the keys and retrieve the corresponding data + for (const std::string& key : keys) { + SG::ReadHandle<xAOD::MissingETContainer> cont(key); + if (cont.isValid()) { + DataMap data = getData(&(*cont)); + if (FormatTool->AddToEvent(dataTypeName(), key + "_xAOD", &data).isFailure()) { + ATH_MSG_WARNING("Failed to retrieve Collection " << key); + } else { + ATH_MSG_DEBUG(" (" << key << ") retrieved"); } + } else { + ATH_MSG_WARNING("Collection " << key << " not found in SG"); } - } - //All collections retrieved okay + } return StatusCode::SUCCESS; } @@ -105,7 +56,7 @@ namespace JiveXML { * Also association with clusters and tracks (ElementLink). */ const DataMap xAODMissingETRetriever::getData(const xAOD::MissingETContainer* metCont) { - + ATH_MSG_DEBUG( "in getData()" ); DataMap DataMap; @@ -125,22 +76,22 @@ namespace JiveXML { // out of the ~9 values within each MET container ('final') for (; metItr != metItrE; ++metItr) { - sumet = (*metItr)->sumet()/GeV; - mpx = (*metItr)->mpx()/GeV; - mpy = (*metItr)->mpy()/GeV; - - ATH_MSG_DEBUG( " Components: MissingET [GeV] mpx= " << mpx - << ", mpy= " << mpy - << ", sumet= " << sumet ); + sumet = (*metItr)->sumet()/GeV; + mpx = (*metItr)->mpx()/GeV; + mpy = (*metItr)->mpy()/GeV; + + ATH_MSG_DEBUG( " Components: MissingET [GeV] mpx= " << mpx + << ", mpy= " << mpy + << ", sumet= " << sumet ); - } // end MissingETIterator + } // end MissingETIterator - ATH_MSG_DEBUG( " FINAL: MissingET [GeV] mpx= " << mpx - << ", mpy= " << mpy << ", sumet= " << sumet ); + ATH_MSG_DEBUG( " FINAL: MissingET [GeV] mpx= " << mpx + << ", mpy= " << mpy << ", sumet= " << sumet ); - etx.push_back(DataType( mpx )); - ety.push_back(DataType( mpy )); - et.push_back(DataType( sumet )); + etx.emplace_back(DataType( mpx )); + ety.emplace_back(DataType( mpy )); + et.emplace_back(DataType( sumet )); // four-vectors DataMap["et"] = et; @@ -151,9 +102,43 @@ namespace JiveXML { //All collections retrieved okay return DataMap; + } + const std::vector<std::string> xAODMissingETRetriever::getKeys() { + + ATH_MSG_DEBUG("in getKeys()"); + + std::vector<std::string> keys = {}; + + // Remove m_priorityKey from m_otherKeys if it exists, we don't want to write it twice + auto it = std::find(m_otherKeys.begin(), m_otherKeys.end(), m_priorityKey); + if(it != m_otherKeys.end()){ + m_otherKeys.erase(it); + } + + // Add m_priorityKey as the first element if it is not "" + if(m_priorityKey!=""){ + keys.push_back(m_priorityKey); + } - } // retrieve + if(!m_otherKeys.empty()){ + keys.insert(keys.end(), m_otherKeys.begin(), m_otherKeys.end()); + } + + // If all collections are requested, obtain all available keys from StoreGate + std::vector<std::string> allKeys; + if(m_doWriteAllCollections){ + evtStore()->keys<xAOD::MissingETContainer>(allKeys); + // Add keys that are not the priority key and do not add containers with "HLT" in their name if requested + for(const std::string& key : allKeys){ + // Don't include key if it's already in keys + auto it2 = std::find(keys.begin(), keys.end(), key); + if(it2 != keys.end())continue; + if(key.find("HLT") == std::string::npos || m_doWriteHLT){ + keys.emplace_back(key); + } + } + } + return keys; + } - //-------------------------------------------------------------------------- - } // JiveXML namespace diff --git a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODMuonRetriever.cxx b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODMuonRetriever.cxx index 6a5a7dbb4a8796f8f55ff46359ccda781efce4dd..759c549b23249192ceb676b7ae605482c1a613c5 100755 --- a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODMuonRetriever.cxx +++ b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODMuonRetriever.cxx @@ -1,12 +1,11 @@ /* - Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration */ #include "xAODJiveXML/xAODMuonRetriever.h" - -#include "xAODMuon/MuonContainer.h" - +#include "xAODMuon/MuonContainer.h" #include "AthenaKernel/Units.h" + using Athena::Units::GeV; namespace JiveXML { @@ -16,95 +15,39 @@ namespace JiveXML { * @param type AlgTool type name * @param name AlgTool instance name * @param parent AlgTools parent owning this tool - * - * code reference for xAOD: jpt6Feb14 - * https://svnweb.cern.ch/trac/atlasgroups/browser/PAT/AODUpgrade/xAODReaderAlgs - * - * This is afirst 'skeleton' try for many xAOD retrievers to be done: - * xAOD::Muon, xAOD::Vertex, xAOD::Photon, xAOD::CaloCluster, xAOD::Jet - * xAOD::TrackParticle, xAOD::TauJet, xAOD::Muon - * - * class defs: - * https://svnweb.cern.ch/trac/atlasoff/browser/Event/xAOD - * **/ xAODMuonRetriever::xAODMuonRetriever(const std::string& type,const std::string& name,const IInterface* parent): - AthAlgTool(type,name,parent), m_typeName("Muon"), - m_sgKey("Muons") // is xAOD name - { - - //Only declare the interface - declareInterface<IDataRetriever>(this); + AthAlgTool(type,name,parent){} - declareProperty("StoreGateKey", m_sgKey, - "Collection to be first in output, shown in Atlantis without switching"); - declareProperty("OtherCollections" ,m_otherKeys, - "Other collections to be retrieved. If list left empty, all available retrieved"); - } - /** - * For each jet collections retrieve basic parameters. + * For each muon collections retrieve basic parameters. * @param FormatTool the tool that will create formated output from the DataMap */ StatusCode xAODMuonRetriever::retrieve(ToolHandle<IFormatTool> &FormatTool) { - - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "in retrieveAll()" << endmsg; - - SG::ConstIterator<xAOD::MuonContainer> iterator, end; - const xAOD::MuonContainer* muons; - - //obtain the default collection first - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Trying to retrieve " << dataTypeName() << " (" << m_sgKey << ")" << endmsg; - StatusCode sc = evtStore()->retrieve(muons, m_sgKey); - if (sc.isFailure() ) { - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Collection " << m_sgKey << " not found in SG " << endmsg; - }else{ - DataMap data = getData(muons); - if ( FormatTool->AddToEvent(dataTypeName(), m_sgKey+"_xAOD", &data).isFailure()){ //suffix can be removed later - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Collection " << m_sgKey << " not found in SG " << endmsg; - }else{ - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << dataTypeName() << " (" << m_sgKey << ") Muon retrieved" << endmsg; - } + + ATH_MSG_DEBUG("In retrieve()"); + + std::vector<std::string> keys = getKeys(); + + if(keys.empty()){ + ATH_MSG_WARNING("No StoreGate keys found"); + return StatusCode::SUCCESS; } - - - if ( m_otherKeys.empty() ) { - //obtain all other collections from StoreGate - if (( evtStore()->retrieve(iterator, end)).isFailure()){ - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << - "Unable to retrieve iterator for xAOD Muon collection" << endmsg; -// return false; - } - - for (; iterator!=end; ++iterator) { - if (iterator.key()!=m_sgKey) { - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Trying to retrieve all. Current collection: " << dataTypeName() << " (" << iterator.key() << ")" << endmsg; - DataMap data = getData(&(*iterator)); - if ( FormatTool->AddToEvent(dataTypeName(), iterator.key()+"_xAOD", &data).isFailure()){ - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Collection " << iterator.key() << " not found in SG " << endmsg; - }else{ - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << dataTypeName() << " (" << iterator.key() << ") xAOD Muon retrieved" << endmsg; - } - } - } - }else { - //obtain all collections with the given keys - std::vector<std::string>::const_iterator keyIter; - for ( keyIter=m_otherKeys.begin(); keyIter!=m_otherKeys.end(); ++keyIter ){ - StatusCode sc = evtStore()->retrieve( muons, (*keyIter) ); - if (!sc.isFailure()) { - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Trying to retrieve selected " << dataTypeName() << " (" << (*keyIter) << ")" << endmsg; - DataMap data = getData(muons); - if ( FormatTool->AddToEvent(dataTypeName(), (*keyIter), &data).isFailure()){ - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Collection " << (*keyIter) << " not found in SG " << endmsg; - }else{ - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << dataTypeName() << " (" << (*keyIter) << ") retrieved" << endmsg; - } + + // Loop through the keys and retrieve the corresponding data + for (const std::string& key : keys) { + SG::ReadHandle<xAOD::MuonContainer> cont(key); + if (cont.isValid()) { + DataMap data = getData(&(*cont)); + if (FormatTool->AddToEvent(dataTypeName(), key + "_xAOD", &data).isFailure()) { + ATH_MSG_WARNING("Failed to retrieve Collection " << key); + } else { + ATH_MSG_DEBUG(" (" << key << ") retrieved"); } + } else { + ATH_MSG_WARNING("Collection " << key << " not found in SG"); } } - - //All collections retrieved okay return StatusCode::SUCCESS; } @@ -115,7 +58,7 @@ namespace JiveXML { */ const DataMap xAODMuonRetriever::getData(const xAOD::MuonContainer* muCont) { - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "in getData()" << endmsg; + ATH_MSG_DEBUG("in getData()"); DataMap DataMap; @@ -134,22 +77,19 @@ namespace JiveXML { for (; muItr != muItrE; ++muItr) { - if (msgLvl(MSG::DEBUG)) { - msg(MSG::DEBUG) << " Muon #" << counter++ << " : eta = " << (*muItr)->eta() - << ", phi = " << (*muItr)->phi() << ", pt = " << (*muItr)->pt() - << ", pdgId = " << -13.*(*muItr)->primaryTrackParticle()->charge() - << endmsg; - } + ATH_MSG_DEBUG(" Muon #" << counter++ << " : eta = " << (*muItr)->eta() + << ", phi = " << (*muItr)->phi() << ", pt = " << (*muItr)->pt() + << ", pdgId = " << -13.*(*muItr)->primaryTrackParticle()->charge()); - phi.push_back(DataType((*muItr)->phi())); - eta.push_back(DataType((*muItr)->eta())); - pt.push_back(DataType((*muItr)->pt()/GeV)); + phi.emplace_back(DataType((*muItr)->phi())); + eta.emplace_back(DataType((*muItr)->eta())); + pt.emplace_back(DataType((*muItr)->pt()/GeV)); - mass.push_back(DataType((*muItr)->m()/GeV)); - energy.push_back( DataType((*muItr)->e()/GeV ) ); - chi2.push_back( 1.0 ); //placeholder - pdgId.push_back(DataType( -13.*(*muItr)->primaryTrackParticle()->charge() )); // pdgId not available anymore in xAOD - } // end MuonIterator + mass.emplace_back(DataType((*muItr)->m()/GeV)); + energy.emplace_back( DataType((*muItr)->e()/GeV ) ); + chi2.emplace_back( 1.0 ); //placeholder + pdgId.emplace_back(DataType( -13.*(*muItr)->primaryTrackParticle()->charge() )); // pdgId not available anymore in xAOD + } // end MuonIterator // four-vectors DataMap["phi"] = phi; @@ -160,15 +100,46 @@ namespace JiveXML { DataMap["chi2"] = chi2; DataMap["pdgId"] = pdgId; - if (msgLvl(MSG::DEBUG)) { - msg(MSG::DEBUG) << dataTypeName() << " retrieved with " << phi.size() << " entries"<< endmsg; + ATH_MSG_DEBUG(" retrieved with " << phi.size() << " entries"); + return DataMap; + } + + + const std::vector<std::string> xAODMuonRetriever::getKeys() { + + ATH_MSG_DEBUG("in getKeys()"); + + std::vector<std::string> keys = {}; + + // Remove m_priorityKey from m_otherKeys if it exists, we don't want to write it twice + auto it = std::find(m_otherKeys.begin(), m_otherKeys.end(), m_priorityKey); + if(it != m_otherKeys.end()){ + m_otherKeys.erase(it); } - //All collections retrieved okay - return DataMap; + // Add m_priorityKey as the first element if it is not "" + if(m_priorityKey!=""){ + keys.push_back(m_priorityKey); + } - } // retrieve + if(!m_otherKeys.empty()){ + keys.insert(keys.end(), m_otherKeys.begin(), m_otherKeys.end()); + } - //-------------------------------------------------------------------------- - + // If all collections are requested, obtain all available keys from StoreGate + std::vector<std::string> allKeys; + if(m_doWriteAllCollections){ + evtStore()->keys<xAOD::MuonContainer>(allKeys); + // Add keys that are not the priority key and do not add containers with "HLT" in their name if requested + for(const std::string& key : allKeys){ + // Don't include key if it's already in keys + auto it2 = std::find(keys.begin(), keys.end(), key); + if(it2 != keys.end())continue; + if(key.find("HLT") == std::string::npos || m_doWriteHLT){ + keys.emplace_back(key); + } + } + } + return keys; + } } // JiveXML namespace diff --git a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODPhotonRetriever.cxx b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODPhotonRetriever.cxx index 38116e1c9897c6080dd7dbd4c2413c7295d2b088..2603e40f957b48fccfb158eeb96bcbd994d029b8 100755 --- a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODPhotonRetriever.cxx +++ b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODPhotonRetriever.cxx @@ -1,12 +1,11 @@ /* - Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration */ #include "xAODJiveXML/xAODPhotonRetriever.h" - -#include "xAODEgamma/PhotonContainer.h" - +#include "xAODEgamma/PhotonContainer.h" #include "AthenaKernel/Units.h" + using Athena::Units::GeV; namespace JiveXML { @@ -16,95 +15,39 @@ namespace JiveXML { * @param type AlgTool type name * @param name AlgTool instance name * @param parent AlgTools parent owning this tool - * - * code reference for xAOD: jpt6Feb14 - * https://svnweb.cern.ch/trac/atlasgroups/browser/PAT/AODUpgrade/xAODReaderAlgs - * - * This is afirst 'skeleton' try for many xAOD retrievers to be done: - * xAOD::Photon, xAOD::Vertex, xAOD::Photon, xAOD::CaloCluster, xAOD::Jet - * xAOD::TrackParticle, xAOD::TauJet, xAOD::Muon - * **/ xAODPhotonRetriever::xAODPhotonRetriever(const std::string& type,const std::string& name,const IInterface* parent): - AthAlgTool(type,name,parent), m_typeName("Photon"), - m_sgKey("Photons") // is xAOD name - - { - //Only declare the interface - declareInterface<IDataRetriever>(this); - - declareProperty("StoreGateKey", m_sgKey, - "Collection to be first in output, shown in Atlantis without switching"); - declareProperty("OtherCollections" ,m_otherKeys, - "Other collections to be retrieved. If list left empty, all available retrieved"); - declareProperty("DoWriteHLT" , m_doWriteHLT = false, "Wether to write HLTAutoKey objects"); - } - + AthAlgTool(type,name,parent){} + /** - * For each jet collections retrieve basic parameters. + * For each photon collection retrieve basic parameters. * @param FormatTool the tool that will create formated output from the DataMap */ StatusCode xAODPhotonRetriever::retrieve(ToolHandle<IFormatTool> &FormatTool) { - - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "in retrieveAll()" << endmsg; - - SG::ConstIterator<xAOD::PhotonContainer> iterator, end; - const xAOD::PhotonContainer* photons; - - //obtain the default collection first - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Trying to retrieve " << dataTypeName() << " (" << m_sgKey << ")" << endmsg; - StatusCode sc = evtStore()->retrieve(photons, m_sgKey); - if (sc.isFailure() ) { - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Collection " << m_sgKey << " not found in SG " << endmsg; - }else{ - DataMap data = getData(photons); - if ( FormatTool->AddToEvent(dataTypeName(), m_sgKey+"_xAOD", &data).isFailure()){ //suffix can be removed later - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Collection " << m_sgKey << " not found in SG " << endmsg; - }else{ - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << dataTypeName() << " (" << m_sgKey << ") Photon retrieved" << endmsg; - } + + ATH_MSG_DEBUG("In retrieve()"); + + std::vector<std::string> keys = getKeys(); + + if(keys.empty()){ + ATH_MSG_WARNING("No StoreGate keys found"); + return StatusCode::SUCCESS; } - - if ( m_otherKeys.empty() ) { - //obtain all other collections from StoreGate - if (( evtStore()->retrieve(iterator, end)).isFailure()){ - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << - "Unable to retrieve iterator for xAOD Muon collection" << endmsg; -// return false; - } - - for (; iterator!=end; ++iterator) { - if (iterator.key()!=m_sgKey) { - if ((iterator.key().find("HLT",0) != std::string::npos) && (!m_doWriteHLT)){ - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Ignoring HLT-AutoKey collection " << iterator.key() << endmsg; - continue; } - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Trying to retrieve all. Current collection: " << dataTypeName() << " (" << iterator.key() << ")" << endmsg; - DataMap data = getData(&(*iterator)); - if ( FormatTool->AddToEvent(dataTypeName(), iterator.key()+"_xAOD", &data).isFailure()){ - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Collection " << iterator.key() << " not found in SG " << endmsg; - }else{ - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << dataTypeName() << " (" << iterator.key() << ") xAOD Photon retrieved" << endmsg; - } - } - } - }else { - //obtain all collections with the given keys - std::vector<std::string>::const_iterator keyIter; - for ( keyIter=m_otherKeys.begin(); keyIter!=m_otherKeys.end(); ++keyIter ){ - StatusCode sc = evtStore()->retrieve( photons, (*keyIter) ); - if (!sc.isFailure()) { - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Trying to retrieve selected " << dataTypeName() << " (" << (*keyIter) << ")" << endmsg; - DataMap data = getData(photons); - if ( FormatTool->AddToEvent(dataTypeName(), (*keyIter), &data).isFailure()){ - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Collection " << (*keyIter) << " not found in SG " << endmsg; - }else{ - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << dataTypeName() << " (" << (*keyIter) << ") retrieved" << endmsg; - } + + // Loop through the keys and retrieve the corresponding data + for (const std::string& key : keys) { + SG::ReadHandle<xAOD::PhotonContainer> cont(key); + if (cont.isValid()) { + DataMap data = getData(&(*cont)); + if (FormatTool->AddToEvent(dataTypeName(), key + "_xAOD", &data).isFailure()) { + ATH_MSG_WARNING("Failed to retrieve Collection " << key); + } else { + ATH_MSG_DEBUG(" (" << key << ") retrieved"); } + } else { + ATH_MSG_WARNING("Collection " << key << " not found in SG"); } } - - //All collections retrieved okay return StatusCode::SUCCESS; } @@ -114,8 +57,8 @@ namespace JiveXML { * Also association with clusters and tracks (ElementLink). */ const DataMap xAODPhotonRetriever::getData(const xAOD::PhotonContainer* phCont) { - - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "in getData()" << endmsg; + + ATH_MSG_DEBUG("in getData()"); DataMap DataMap; @@ -135,32 +78,29 @@ namespace JiveXML { int counter = 0; for (; phItr != phItrE; ++phItr) { + ATH_MSG_DEBUG(" Photon #" << counter++ << " : eta = " << (*phItr)->eta() << ", phi = " + << (*phItr)->phi()); - if (msgLvl(MSG::DEBUG)) { - msg(MSG::DEBUG) << " Photon #" << counter++ << " : eta = " << (*phItr)->eta() << ", phi = " - << (*phItr)->phi() << endmsg; - } - - std::string photonAuthor = ""; - std::string photonIsEMString = "none"; - std::string photonLabel = ""; + std::string photonAuthor = ""; + std::string photonIsEMString = "none"; + std::string photonLabel = ""; - phi.push_back(DataType((*phItr)->phi())); - eta.push_back(DataType((*phItr)->eta())); - pt.push_back(DataType((*phItr)->pt()/GeV)); + phi.emplace_back(DataType((*phItr)->phi())); + eta.emplace_back(DataType((*phItr)->eta())); + pt.emplace_back(DataType((*phItr)->pt()/GeV)); bool passesTight(false); bool passesMedium(false); bool passesLoose(false); const bool tightSelectionExists = (*phItr)->passSelection(passesTight, "Tight"); - msg(MSG::VERBOSE) << "tight exists " << tightSelectionExists - << " and passes? " << passesTight << endmsg; + ATH_MSG_VERBOSE("tight exists " << tightSelectionExists + << " and passes? " << passesTight); const bool mediumSelectionExists = (*phItr)->passSelection(passesMedium, "Medium"); - msg(MSG::VERBOSE) << "medium exists " << mediumSelectionExists - << " and passes? " << passesMedium << endmsg; + ATH_MSG_VERBOSE("medium exists " << mediumSelectionExists + << " and passes? " << passesMedium); const bool looseSelectionExists = (*phItr)->passSelection(passesLoose, "Loose"); - msg(MSG::VERBOSE) << "loose exists " << looseSelectionExists - << " and passes? " << passesLoose << endmsg; + ATH_MSG_VERBOSE("loose exists " << looseSelectionExists + << " and passes? " << passesLoose); photonAuthor = "author"+DataType( (*phItr)->author() ).toString(); // for odd ones eg FWD photonLabel = photonAuthor; @@ -169,25 +109,25 @@ namespace JiveXML { if (( (*phItr)->author()) == 2){ photonAuthor = "softe"; photonLabel += "_softe"; } if (( (*phItr)->author()) == 1){ photonAuthor = "egamma"; photonLabel += "_egamma"; } - if ( passesLoose ){ - photonLabel += "_Loose"; - photonIsEMString = "Loose"; // assume that hierarchy is obeyed ! - } - if ( passesMedium ){ - photonLabel += "_Medium"; - photonIsEMString = "Medium"; // assume that hierarchy is obeyed ! - } - if ( passesTight ){ - photonLabel += "_Tight"; - photonIsEMString = "Tight"; // assume that hierarchy is obeyed ! - } - author.push_back( DataType( photonAuthor ) ); - label.push_back( DataType( photonLabel ) ); - isEMString.push_back( DataType( photonIsEMString ) ); - - mass.push_back(DataType((*phItr)->m()/GeV)); - energy.push_back( DataType((*phItr)->e()/GeV ) ); - } // end PhotonIterator + if ( passesLoose ){ + photonLabel += "_Loose"; + photonIsEMString = "Loose"; // assume that hierarchy is obeyed ! + } + if ( passesMedium ){ + photonLabel += "_Medium"; + photonIsEMString = "Medium"; // assume that hierarchy is obeyed ! + } + if ( passesTight ){ + photonLabel += "_Tight"; + photonIsEMString = "Tight"; // assume that hierarchy is obeyed ! + } + author.emplace_back( DataType( photonAuthor ) ); + label.emplace_back( DataType( photonLabel ) ); + isEMString.emplace_back( DataType( photonIsEMString ) ); + + mass.emplace_back(DataType((*phItr)->m()/GeV)); + energy.emplace_back( DataType((*phItr)->e()/GeV ) ); + } // end PhotonIterator // four-vectors DataMap["phi"] = phi; @@ -199,15 +139,48 @@ namespace JiveXML { DataMap["label"] = label; DataMap["author"] = author; - if (msgLvl(MSG::DEBUG)) { - msg(MSG::DEBUG) << dataTypeName() << " retrieved with " << phi.size() << " entries"<< endmsg; + ATH_MSG_DEBUG(dataTypeName() << " retrieved with " << phi.size() << " entries"); + return DataMap; + + } + + + const std::vector<std::string> xAODPhotonRetriever::getKeys() { + + ATH_MSG_DEBUG("in getKeys()"); + + std::vector<std::string> keys = {}; + + // Remove m_priorityKey from m_otherKeys if it exists, we don't want to write it twice + auto it = std::find(m_otherKeys.begin(), m_otherKeys.end(), m_priorityKey); + if(it != m_otherKeys.end()){ + m_otherKeys.erase(it); } - //All collections retrieved okay - return DataMap; + // Add m_priorityKey as the first element if it is not "" + if(m_priorityKey!=""){ + keys.push_back(m_priorityKey); + } + + if(!m_otherKeys.empty()){ + keys.insert(keys.end(), m_otherKeys.begin(), m_otherKeys.end()); + } - } // retrieve + // If all collections are requested, obtain all available keys from StoreGate + std::vector<std::string> allKeys; + if(m_doWriteAllCollections){ + evtStore()->keys<xAOD::PhotonContainer>(allKeys); + // Add keys that are not the priority key and do not add containers with "HLT" in their name if requested + for(const std::string& key : allKeys){ + // Don't include key if it's already in keys + auto it2 = std::find(keys.begin(), keys.end(), key); + if(it2 != keys.end())continue; + if(key.find("HLT") == std::string::npos || m_doWriteHLT){ + keys.emplace_back(key); + } + } + } + return keys; + } - //-------------------------------------------------------------------------- - } // JiveXML namespace diff --git a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODTauRetriever.cxx b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODTauRetriever.cxx index e2e68f4d8134fb899def41184cd5fc4cf250ef85..b613fdab03f042aa746a565ec0bef6cef34e788f 100755 --- a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODTauRetriever.cxx +++ b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODTauRetriever.cxx @@ -1,10 +1,10 @@ /* - Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration */ #include "xAODJiveXML/xAODTauRetriever.h" -#include "xAODTau/TauJetContainer.h" +#include "xAODTau/TauJetContainer.h" #include "xAODTau/TauxAODHelpers.h" #include "AthenaKernel/Units.h" @@ -17,69 +17,49 @@ namespace JiveXML { * @param type AlgTool type name * @param name AlgTool instance name * @param parent AlgTools parent owning this tool - * - * code reference for xAOD: jpt6Feb14 - * https://svnweb.cern.ch/trac/atlasgroups/browser/PAT/AODUpgrade/xAODReaderAlgs - * - * This is afirst 'skeleton' try for many xAOD retrievers to be done: - * xAOD::Tau, xAOD::Vertex, xAOD::Photon, xAOD::CaloCluster, xAOD::Tau - * xAOD::TrackParticle, xAOD::TauTau, xAOD::Muon - * - * Class references: - * https://svnweb.cern.ch/trac/atlasoff/browser/Event/xAOD **/ xAODTauRetriever::xAODTauRetriever(const std::string& type,const std::string& name,const IInterface* parent): - AthAlgTool(type,name,parent), m_typeName("TauJet"), - m_sgKey("TauJets") - { - //Only declare the interface - declareInterface<IDataRetriever>(this); - - //In xAOD: AntiKt6TopoEMTaus, AntiKt6LCTopoTaus, AntiKt4TopoEMTaus, AntiKt4LCTopoTaus - declareProperty("StoreGateKey", m_sgKey, - "Collection to be first in output, shown in Atlantis without switching"); - declareProperty ( "TracksName", m_tracksName = "InDetTrackParticles_xAOD" ); - } - + AthAlgTool(type,name,parent){} + /** * For each Tau collections retrieve basic parameters. * @param FormatTool the tool that will create formated output from the DataMap */ StatusCode xAODTauRetriever::retrieve(ToolHandle<IFormatTool> &FormatTool) { - - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "in retrieveAll()" << endmsg; - - SG::ConstIterator<xAOD::TauJetContainer> iterator, end; - const xAOD::TauJetContainer* Taus; - - //obtain the default collection first - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Trying to retrieve " << dataTypeName() << " (" << m_sgKey << ")" << endmsg; - StatusCode sc = evtStore()->retrieve(Taus, m_sgKey); - if (sc.isFailure() ) { - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Collection " << m_sgKey << " not found in SG " << endmsg; - }else{ - DataMap data = getData(Taus); - if ( FormatTool->AddToEvent(dataTypeName(), m_sgKey+"_xAOD", &data).isFailure()){ - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Collection " << m_sgKey << " not found in SG " << endmsg; - }else{ - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << dataTypeName() << " (" << m_sgKey << ") Tau retrieved" << endmsg; + + ATH_MSG_DEBUG("In retrieve()"); + + std::vector<std::string> keys = getKeys(); + + if(keys.empty()){ + ATH_MSG_WARNING("No StoreGate keys found"); + return StatusCode::SUCCESS; + } + + // Loop through the keys and retrieve the corresponding data + for (const std::string& key : keys) { + SG::ReadHandle<xAOD::TauJetContainer> cont(key); + if (cont.isValid()) { + DataMap data = getData(&(*cont)); + if (FormatTool->AddToEvent(dataTypeName(), key + "_xAOD", &data).isFailure()) { + ATH_MSG_WARNING("Failed to retrieve Collection " << key); + } else { + ATH_MSG_DEBUG(" (" << key << ") retrieved"); + } + } else { + ATH_MSG_WARNING("Collection " << key << " not found in SG"); } } - - //All collections retrieved okay return StatusCode::SUCCESS; } - // code reference: - // Event/xAOD/xAODTau/trunk/xAODTau/versions/TauJet_v1.h - /** * Retrieve basic parameters, mainly four-vectors, for each collection. * Also association with clusters and tracks (ElementLink). */ const DataMap xAODTauRetriever::getData(const xAOD::TauJetContainer* tauCont) { - - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "in getData()" << endmsg; + + ATH_MSG_DEBUG("in getData()"); DataMap DataMap; @@ -106,58 +86,53 @@ namespace JiveXML { int counter = 0; for (; tauItr != tauItrE; ++tauItr) { + ATH_MSG_DEBUG(" Tau #" << counter++ << " : eta = " << (*tauItr)->eta() << ", phi = " + << (*tauItr)->phi()); - if (msgLvl(MSG::DEBUG)) { - msg(MSG::DEBUG) << " Tau #" << counter++ << " : eta = " << (*tauItr)->eta() << ", phi = " - << (*tauItr)->phi() << endmsg; - } - - phi.push_back(DataType((*tauItr)->phi())); - eta.push_back(DataType((*tauItr)->eta())); - pt.push_back(DataType((*tauItr)->pt()/GeV)); + phi.emplace_back(DataType((*tauItr)->phi())); + eta.emplace_back(DataType((*tauItr)->eta())); + pt.emplace_back(DataType((*tauItr)->pt()/GeV)); - isolFrac.push_back(DataType( 1. )); - logLhRatio.push_back(DataType( 1. )); - label.push_back(DataType( "xAOD_tauJet_withoutQuality" )); - charge.push_back(DataType( (*tauItr)->charge() )); - isTauString.push_back(DataType( "xAOD_tauJet_withoutQuality" )); + isolFrac.emplace_back(DataType( 1. )); + logLhRatio.emplace_back(DataType( 1. )); + label.emplace_back(DataType( "xAOD_tauJet_withoutQuality" )); + charge.emplace_back(DataType( (*tauItr)->charge() )); + isTauString.emplace_back(DataType( "xAOD_tauJet_withoutQuality" )); - mass.push_back(DataType((*tauItr)->m()/GeV)); - energy.push_back( DataType((*tauItr)->e()/GeV ) ); + mass.emplace_back(DataType((*tauItr)->m()/GeV)); + energy.emplace_back( DataType((*tauItr)->e()/GeV ) ); // track-vertex association code in xAOD from Nick Styles, Apr14: // InnerDetector/InDetRecAlgs/InDetPriVxFinder/InDetVxLinksToTrackParticles int trkCnt = 0; -#ifndef XAODTAU_VERSIONS_TAUTRACK_V1_H +#ifndef XAODTAU_VERSIONS_TAUTRACK_V1_H const std::vector< ElementLink< xAOD::TrackParticleContainer > > tpLinks = (*tauItr)->trackLinks(); #else const std::vector< ElementLink< xAOD::TrackParticleContainer > > tpLinks = xAOD::TauHelpers::trackParticleLinks(*tauItr); #endif - + //iterating over the links unsigned int tp_size = tpLinks.size(); - numTracks.push_back(DataType( tp_size )); // same as: (*tauItr)->nTracks() - trackLinkCount.push_back(DataType( tp_size )); + numTracks.emplace_back(DataType( tp_size )); // same as: (*tauItr)->nTracks() + trackLinkCount.emplace_back(DataType( tp_size )); if(tp_size){ // links exist for(unsigned int tp = 0; tp<tp_size; ++tp) - { + { ElementLink< xAOD::TrackParticleContainer > tpl = tpLinks.at(tp); - //checking a container name consitency + //checking a container name consitency // if(tpl.key() == m_tracksName) // doesn't work. tpl.key is a number ? - if (msgLvl(MSG::DEBUG)) { - msg(MSG::DEBUG) << " tau #" << counter << " track association index: " << tpl.index() - << ", collection : " << tpl.key() - << ", Tracks : " << tp << " out of " << tp_size << ", own count: " << trkCnt++ << endmsg; - } - tracks.push_back(DataType( tpl.index() )); - sgKey.push_back( m_tracksName ); - } //links exist - } + ATH_MSG_DEBUG(" tau #" << counter << " track association index: " << tpl.index() + << ", collection : " << tpl.key() + << ", Tracks : " << tp << " out of " << tp_size << ", own count: " << trkCnt++); + tracks.emplace_back(DataType( tpl.index() )); + sgKey.emplace_back( m_tracksName.value() ); + } + } //links exist - } // end TauIterator + } // end TauIterator // four-vectors DataMap["phi"] = phi; @@ -183,20 +158,54 @@ namespace JiveXML { DataMap[tag] = tracks; tag = "trackKey multiple=\"" +DataType(NTracksPerVertex).toString()+"\""; DataMap[tag] = sgKey; - } + } -// DataMap["energy"] = energy; -// DataMap["mass"] = mass; + // DataMap["energy"] = energy; + // DataMap["mass"] = mass; - if (msgLvl(MSG::DEBUG)) { - msg(MSG::DEBUG) << dataTypeName() << " retrieved with " << phi.size() << " entries"<< endmsg; - } + ATH_MSG_DEBUG(dataTypeName() << " retrieved with " << phi.size() << " entries"); - //All collections retrieved okay return DataMap; - } // retrieve + } + + + const std::vector<std::string> xAODTauRetriever::getKeys() { + + ATH_MSG_DEBUG("in getKeys()"); + + std::vector<std::string> keys = {}; + + // Remove m_priorityKey from m_otherKeys if it exists, we don't want to write it twice + auto it = std::find(m_otherKeys.begin(), m_otherKeys.end(), m_priorityKey); + if(it != m_otherKeys.end()){ + m_otherKeys.erase(it); + } + + // Add m_priorityKey as the first element if it is not "" + if(m_priorityKey!=""){ + keys.push_back(m_priorityKey); + } + + if(!m_otherKeys.empty()){ + keys.insert(keys.end(), m_otherKeys.begin(), m_otherKeys.end()); + } + + // If all collections are requested, obtain all available keys from StoreGate + std::vector<std::string> allKeys; + if(m_doWriteAllCollections){ + evtStore()->keys<xAOD::TauJetContainer>(allKeys); + // Add keys that are not the priority key and do not add containers with "HLT" in their name if requested + for(const std::string& key : allKeys){ + // Don't include key if it's already in keys + auto it2 = std::find(keys.begin(), keys.end(), key); + if(it2 != keys.end())continue; + if(key.find("HLT") == std::string::npos || m_doWriteHLT){ + keys.emplace_back(key); + } + } + } + return keys; + } - //-------------------------------------------------------------------------- - } // JiveXML namespace diff --git a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODTrackParticleRetriever.cxx b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODTrackParticleRetriever.cxx index b9776c0dfa18c4c9a7ca40a3d0e7f5bbe1f16a43..e19d7d511d0b0130bbf0e71fe3e3c7648d1af532 100755 --- a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODTrackParticleRetriever.cxx +++ b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODTrackParticleRetriever.cxx @@ -1,13 +1,11 @@ /* - Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration */ #include "xAODJiveXML/xAODTrackParticleRetriever.h" - #include "CLHEP/Units/SystemOfUnits.h" -#include "xAODTracking/TrackParticleContainer.h" -//#include "TrkTrackSummary/TrackSummary.h" +#include "xAODTracking/TrackParticleContainer.h" namespace JiveXML { @@ -16,93 +14,39 @@ namespace JiveXML { * @param type AlgTool type name * @param name AlgTool instance name * @param parent AlgTools parent owning this tool - * - * code reference for xAOD: jpt6Feb14 - * https://svnweb.cern.ch/trac/atlasgroups/browser/PAT/AODUpgrade/xAODReaderAlgs - * classes: - * https://svnweb.cern.ch/trac/atlasoff/browser/Event/xAOD - * **/ xAODTrackParticleRetriever::xAODTrackParticleRetriever(const std::string& type,const std::string& name,const IInterface* parent): - AthAlgTool(type,name,parent), m_typeName("Track"){ - - //Only declare the interface - declareInterface<IDataRetriever>(this); - - //In xAOD: GSFTrackParticles, CombinedFitMuonParticles, InDetTrackParticlesForward, ExtrapolatedMuonSpectrometerParticles - declareProperty("StoreGateKey", m_sgKey = "InDetTrackParticles", - "Collection to be first in output, shown in Atlantis without switching"); - declareProperty("PriorityTrackCollection", m_sgKey = "TrackParticleCandidate", - "Track collections to retrieve first, shown as default in Atlantis"); - declareProperty("OtherTrackCollections" , m_otherKeys , "Track collections to retrieve, all if empty"); - declareProperty("DoWriteHLT" , m_doWriteHLT = false, "Wether to write HLTAutoKey objects"); - } - + AthAlgTool(type,name,parent){} + /** * For each TrackParticle collections retrieve basic parameters. * @param FormatTool the tool that will create formated output from the DataMap */ StatusCode xAODTrackParticleRetriever::retrieve(ToolHandle<IFormatTool> &FormatTool) { - - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "in retrieveAll()" << endmsg; - - SG::ConstIterator<xAOD::TrackParticleContainer> iterator, end; - const xAOD::TrackParticleContainer* TrackParticles; - - //obtain the default collection first - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Trying to retrieve " << dataTypeName() << " (" << m_sgKey << ")" << endmsg; - StatusCode sc = evtStore()->retrieve(TrackParticles, m_sgKey); - if (sc.isFailure() ) { - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Collection " << m_sgKey << " not found in SG " << endmsg; - }else{ - DataMap data = getData(TrackParticles); - if ( FormatTool->AddToEvent(dataTypeName(), m_sgKey+"_xAOD", &data).isFailure()){ - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Collection " << m_sgKey << " not found in SG " << endmsg; - }else{ - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << dataTypeName() << " (" << m_sgKey << ") TrackParticle retrieved" << endmsg; - } + + ATH_MSG_DEBUG("In retrieve()"); + + std::vector<std::string> keys = getKeys(); + + if(keys.empty()){ + ATH_MSG_WARNING("No StoreGate keys found"); + return StatusCode::SUCCESS; } - if ( m_otherKeys.empty() ) { - //obtain all other collections from StoreGate - if (( evtStore()->retrieve(iterator, end)).isFailure()){ - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Unable to retrieve iterator for Jet collection" << endmsg; -// return false; - } - - for (; iterator!=end; ++iterator) { - if (iterator.key()!=m_sgKey) { - if ((iterator.key().find("HLT",0) != std::string::npos) && (!m_doWriteHLT)){ - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Ignoring HLT-AutoKey collection " << iterator.key() << endmsg; - continue; } - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Trying to retrieve all. Current collection: " << dataTypeName() << " (" << iterator.key() << ")" << endmsg; - DataMap data = getData(&(*iterator)); - //Check if this is an HLT-AutoKey collection - if ( FormatTool->AddToEvent(dataTypeName(), iterator.key()+"_xAOD", &data).isFailure()){ - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Collection " << iterator.key() << " not found in SG " << endmsg; - }else{ - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << dataTypeName() << " (" << iterator.key() << ") AODJet retrieved" << endmsg; - } - } - } - }else { - //obtain all collections with the given keys - std::vector<std::string>::const_iterator keyIter; - for ( keyIter=m_otherKeys.begin(); keyIter!=m_otherKeys.end(); ++keyIter ){ - if ( !evtStore()->contains<xAOD::TrackParticleContainer>( (*keyIter) ) ){ continue; } // skip if not in SG - StatusCode sc = evtStore()->retrieve( TrackParticles, (*keyIter) ); - if (!sc.isFailure()) { - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Trying to retrieve selected " << dataTypeName() << " (" << (*keyIter) << ")" << endmsg; - DataMap data = getData(TrackParticles); - if ( FormatTool->AddToEvent(dataTypeName(), (*keyIter)+"_xAOD", &data).isFailure()){ - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Collection " << (*keyIter) << " not found in SG " << endmsg; - }else{ - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << dataTypeName() << " (" << (*keyIter) << ") retrieved" << endmsg; - } + // Loop through the keys and retrieve the corresponding data + for (const std::string& key : keys) { + SG::ReadHandle<xAOD::TrackParticleContainer> cont(key); + if (cont.isValid()) { + DataMap data = getData(&(*cont)); + if (FormatTool->AddToEvent(dataTypeName(), key + "_xAOD", &data).isFailure()) { + ATH_MSG_WARNING("Failed to retrieve Collection " << key); + } else { + ATH_MSG_DEBUG(" (" << key << ") retrieved"); } + } else { + ATH_MSG_WARNING("Collection " << key << " not found in SG"); } - } - //All collections retrieved okay + } return StatusCode::SUCCESS; } @@ -112,8 +56,8 @@ namespace JiveXML { * Also association with clusters and tracks (ElementLink). */ const DataMap xAODTrackParticleRetriever::getData(const xAOD::TrackParticleContainer* TrackParticleCont) { - - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "in getData()" << endmsg; + + ATH_MSG_DEBUG("in getData()"); DataMap DataMap; @@ -139,80 +83,77 @@ namespace JiveXML { for (; TrackParticleItr != TrackParticleItrE; ++TrackParticleItr) { - if (msgLvl(MSG::VERBOSE)) { - msg(MSG::VERBOSE) << " TrackParticle #" << counter++ << " : d0 = " << (*TrackParticleItr)->d0() << ", z0 = " - << (*TrackParticleItr)->z0() << ", pt[GeV] = " << (*TrackParticleItr)->pt()*(1./CLHEP::GeV) - << ", phi = " << (*TrackParticleItr)->phi() - << ", qOverP = " << (*TrackParticleItr)->qOverP() - << ", abs(qOverP) = " << fabs((*TrackParticleItr)->qOverP()) - << endmsg; - } + ATH_MSG_VERBOSE(" TrackParticle #" << counter++ << " : d0 = " << (*TrackParticleItr)->d0() << ", z0 = " + << (*TrackParticleItr)->z0() << ", pt[GeV] = " << (*TrackParticleItr)->pt()*(1./CLHEP::GeV) + << ", phi = " << (*TrackParticleItr)->phi() + << ", qOverP = " << (*TrackParticleItr)->qOverP() + << ", abs(qOverP) = " << fabs((*TrackParticleItr)->qOverP())); - // Event/xAOD/xAODTrackingCnv/trunk/src/TrackParticleCnvAlg.cxx#L190 Info from Nick Styles + // Event/xAOD/xAODTrackingCnv/trunk/src/TrackParticleCnvAlg.cxx#L190 Info from Nick Styles - uint8_t numberOfBLayerHits=0; - uint8_t numberOfBLayerHits_tmp=0; - if ( (*TrackParticleItr)->summaryValue(numberOfBLayerHits_tmp,xAOD::numberOfBLayerHits) ){ - numberOfBLayerHits += numberOfBLayerHits_tmp; - } - uint8_t numberOfPixelHits = 0; - uint8_t numberOfPixelHits_tmp = 0; - if ( (*TrackParticleItr)->summaryValue(numberOfPixelHits_tmp,xAOD::numberOfPixelHits)){ - numberOfPixelHits += numberOfPixelHits_tmp; - } - uint8_t numberOfTRTHits = 0; - uint8_t numberOfTRTHits_tmp = 0; - if ( (*TrackParticleItr)->summaryValue(numberOfTRTHits_tmp,xAOD::numberOfTRTHits)){ - numberOfTRTHits += numberOfTRTHits_tmp; - } - uint8_t numberOfSCTHits = 0; - uint8_t numberOfSCTHits_tmp = 0; - if ( (*TrackParticleItr)->summaryValue(numberOfSCTHits_tmp,xAOD::numberOfSCTHits)){ - numberOfSCTHits += numberOfSCTHits_tmp; - } - labelStr = "_PixelHits"+DataType( (double)numberOfPixelHits ).toString() - + "_SCTHits"+DataType( (double)numberOfSCTHits ).toString() - + "_BLayerHits"+DataType( (double)numberOfBLayerHits ).toString() - + "_TRTHits"+DataType( (double)numberOfTRTHits ).toString() ; - - countHits = (double)numberOfBLayerHits + (double)numberOfPixelHits - + (double)numberOfSCTHits + (double)numberOfTRTHits; - - if (msgLvl(MSG::VERBOSE)) msg(MSG::VERBOSE) << " TrackParticle #" << counter - << " BLayer hits: " << (double)numberOfBLayerHits - << ", Pixel hits: " << (double)numberOfPixelHits - << ", SCT hits: " << (double)numberOfSCTHits - << ", TRT hits: " << (double)numberOfTRTHits - << ", Total hits: " << countHits - << "; Label: " << labelStr << endmsg; - - nBLayerHits.push_back( DataType( (double)numberOfBLayerHits )); - nPixHits.push_back( DataType( (double)numberOfPixelHits )); - nSCTHits.push_back( DataType( (double)numberOfSCTHits )); - nTRTHits.push_back( DataType( (double)numberOfTRTHits )); - - label.push_back( DataType( labelStr ).toString() ); - d0.push_back(DataType((*TrackParticleItr)->d0()/CLHEP::cm)); - z0.push_back(DataType((*TrackParticleItr)->z0()/CLHEP::cm)); - phi0.push_back(DataType((*TrackParticleItr)->phi())); + uint8_t numberOfBLayerHits=0; + uint8_t numberOfBLayerHits_tmp=0; + if ( (*TrackParticleItr)->summaryValue(numberOfBLayerHits_tmp,xAOD::numberOfBLayerHits) ){ + numberOfBLayerHits += numberOfBLayerHits_tmp; + } + uint8_t numberOfPixelHits = 0; + uint8_t numberOfPixelHits_tmp = 0; + if ( (*TrackParticleItr)->summaryValue(numberOfPixelHits_tmp,xAOD::numberOfPixelHits)){ + numberOfPixelHits += numberOfPixelHits_tmp; + } + uint8_t numberOfTRTHits = 0; + uint8_t numberOfTRTHits_tmp = 0; + if ( (*TrackParticleItr)->summaryValue(numberOfTRTHits_tmp,xAOD::numberOfTRTHits)){ + numberOfTRTHits += numberOfTRTHits_tmp; + } + uint8_t numberOfSCTHits = 0; + uint8_t numberOfSCTHits_tmp = 0; + if ( (*TrackParticleItr)->summaryValue(numberOfSCTHits_tmp,xAOD::numberOfSCTHits)){ + numberOfSCTHits += numberOfSCTHits_tmp; + } + labelStr = "_PixelHits"+DataType( (double)numberOfPixelHits ).toString() + + "_SCTHits"+DataType( (double)numberOfSCTHits ).toString() + + "_BLayerHits"+DataType( (double)numberOfBLayerHits ).toString() + + "_TRTHits"+DataType( (double)numberOfTRTHits ).toString() ; + + countHits = (double)numberOfBLayerHits + (double)numberOfPixelHits + + (double)numberOfSCTHits + (double)numberOfTRTHits; + + ATH_MSG_VERBOSE(" TrackParticle #" << counter + << " BLayer hits: " << (double)numberOfBLayerHits + << ", Pixel hits: " << (double)numberOfPixelHits + << ", SCT hits: " << (double)numberOfSCTHits + << ", TRT hits: " << (double)numberOfTRTHits + << ", Total hits: " << countHits + << "; Label: " << labelStr); + + nBLayerHits.emplace_back( DataType( (double)numberOfBLayerHits )); + nPixHits.emplace_back( DataType( (double)numberOfPixelHits )); + nSCTHits.emplace_back( DataType( (double)numberOfSCTHits )); + nTRTHits.emplace_back( DataType( (double)numberOfTRTHits )); + + label.emplace_back( DataType( labelStr ).toString() ); + d0.emplace_back(DataType((*TrackParticleItr)->d0()/CLHEP::cm)); + z0.emplace_back(DataType((*TrackParticleItr)->z0()/CLHEP::cm)); + phi0.emplace_back(DataType((*TrackParticleItr)->phi())); // pt is always positive, get charge from qOverP myQOverP = (*TrackParticleItr)->qOverP() ; - if (fabs(myQOverP) != myQOverP){ - charge = -1.; + if (fabs(myQOverP) != myQOverP){ + charge = -1.; }else{ - charge = +1.; + charge = +1.; } - pt.push_back(DataType(( charge*(*TrackParticleItr)->pt() )/CLHEP::GeV)); + pt.emplace_back(DataType(( charge*(*TrackParticleItr)->pt() )/CLHEP::GeV)); - if ( (*TrackParticleItr)->theta() == 0.) { - cotTheta.push_back(DataType(9999.)); - } else { - cotTheta.push_back(DataType(1./tan((*TrackParticleItr)->theta()))); - } - } // end TrackParticleIterator + if ( (*TrackParticleItr)->theta() == 0.) { + cotTheta.emplace_back(DataType(9999.)); + } else { + cotTheta.emplace_back(DataType(1./tan((*TrackParticleItr)->theta()))); + } + } // end TrackParticleIterator - // four-vectors + // four-vectors DataMap["d0"] = d0; DataMap["z0"] = z0; DataMap["pt"] = pt; @@ -224,15 +165,49 @@ namespace JiveXML { DataMap["nSCTHits"] = nSCTHits; DataMap["nTRTHits"] = nTRTHits; - if (msgLvl(MSG::DEBUG)) { - msg(MSG::DEBUG) << dataTypeName() << " retrieved with " << d0.size() << " entries"<< endmsg; - } + ATH_MSG_DEBUG(dataTypeName() << " retrieved with " << d0.size() << " entries"); //All collections retrieved okay return DataMap; - } // retrieve + } + + + const std::vector<std::string> xAODTrackParticleRetriever::getKeys() { + ATH_MSG_DEBUG("in getKeys()"); + + std::vector<std::string> keys = {}; + + // Remove m_priorityKey from m_otherKeys if it exists, we don't want to write it twice + auto it = std::find(m_otherKeys.begin(), m_otherKeys.end(), m_priorityKey); + if(it != m_otherKeys.end()){ + m_otherKeys.erase(it); + } + + // Add m_priorityKey as the first element if it is not "" + if(m_priorityKey!=""){ + keys.push_back(m_priorityKey); + } + + if(!m_otherKeys.empty()){ + keys.insert(keys.end(), m_otherKeys.begin(), m_otherKeys.end()); + } + + // If all collections are requested, obtain all available keys from StoreGate + std::vector<std::string> allKeys; + if(m_doWriteAllCollections){ + evtStore()->keys<xAOD::TrackParticleContainer>(allKeys); + // Add keys that are not the priority key and do not add containers with "HLT" in their name if requested + for(const std::string& key : allKeys){ + // Don't include key if it's already in keys + auto it2 = std::find(keys.begin(), keys.end(), key); + if(it2 != keys.end())continue; + if(key.find("HLT") == std::string::npos || m_doWriteHLT){ + keys.emplace_back(key); + } + } + } + return keys; + } - //-------------------------------------------------------------------------- - } // JiveXML namespace diff --git a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODVertexRetriever.cxx b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODVertexRetriever.cxx index 02039ae34e58e0e6dec805996243b58d442fe370..bb90037724695a1dec6524f42dfe3717ab4155c5 100755 --- a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODVertexRetriever.cxx +++ b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/src/xAODVertexRetriever.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration */ #include "xAODJiveXML/xAODVertexRetriever.h" @@ -20,90 +20,70 @@ namespace JiveXML { * @param name AlgTool instance name * @param parent AlgTools parent owning this tool * - * code reference for xAOD: jpt 6Feb14 - * https://svnweb.cern.ch/trac/atlasgroups/browser/PAT/AODUpgrade/xAODReaderAlgs - * classes: - * https://svnweb.cern.ch/trac/atlasoff/browser/Event/xAOD - * - **/ + */ xAODVertexRetriever::xAODVertexRetriever(const std::string& type,const std::string& name,const IInterface* parent): - AthAlgTool(type,name,parent), m_typeName("RVx"){ + AthAlgTool(type,name,parent){} - //Only declare the interface - declareInterface<IDataRetriever>(this); - - //In xAOD: PrimaryVertices, AllPhotonsVxCandidates - declareProperty("PrimaryVertexCollection", m_primaryVertexKey = "PrimaryVertices", - "Collection to be first in output, shown in Atlantis without switching"); - declareProperty("SecondaryVertexCollection", m_secondaryVertexKey = "SecVertices", "Vertices to use as secondary vertex"); - declareProperty ( "TracksName", m_tracksName = "InDetTrackParticles_xAOD" ); - } - /** * For each Vertex collections retrieve basic parameters. * @param FormatTool the tool that will create formated output from the DataMap */ StatusCode xAODVertexRetriever::retrieve(ToolHandle<IFormatTool> &FormatTool) { - //Get an iterator over all vertex collections, - //return if there are none - SG::ConstIterator<xAOD::VertexContainer> vtxCollectionItr, vtxCollectionsEnd; - if (evtStore()->retrieve(vtxCollectionItr,vtxCollectionsEnd).isFailure()) { - if (msgLvl(MSG::DEBUG )) msg(MSG::DEBUG ) << "No xAODVertexContainer containers found in this event" << endmsg; + ATH_MSG_DEBUG("In retrieve()"); + + std::vector<std::string> keys = getKeys(); + + if(keys.empty()){ + ATH_MSG_WARNING("No StoreGate keys found"); return StatusCode::SUCCESS; } - //See if we can find the requested secondary vertex collection - const xAOD::VertexContainer* secondaryVtxCollection; - if (evtStore()->retrieve(secondaryVtxCollection,m_secondaryVertexKey).isFailure()) { - if (msgLvl(MSG::DEBUG )) msg(MSG::DEBUG ) << "No Secondary vertex container found at SecVertices" << endmsg; - }else{ - if (msgLvl(MSG::DEBUG )) msg(MSG::DEBUG ) << "Secondary vertex container size: " << secondaryVtxCollection->size() << endmsg; - } - - //See if we can find the requested primary vertex collection - const xAOD::VertexContainer* primaryVtxCollection; - if ( evtStore()->retrieve(primaryVtxCollection,m_primaryVertexKey).isFailure()) { - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Primary vertex container " - << m_primaryVertexKey << " not found" << endmsg; + // Loop through the keys and retrieve the corresponding data + for (const std::string& key : keys) { + SG::ReadHandle<xAOD::VertexContainer> cont(key); + if (cont.isValid()) { + DataMap data = getData(&(*cont),key); + if (FormatTool->AddToEvent(dataTypeName(), key + "_xAOD", &data).isFailure()) { + ATH_MSG_WARNING("Failed to retrieve Collection " << key); + } else { + ATH_MSG_DEBUG(" (" << key << ") retrieved"); + } + } else { + ATH_MSG_WARNING("Collection " << key << " not found in SG"); + } } - - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "in retrieve" << endmsg; + return StatusCode::SUCCESS; + } /** * Retrieve basic parameters, mainly four-vectors, for each collection. * Also association with clusters and tracks (ElementLink). */ + const DataMap xAODVertexRetriever::getData(const xAOD::VertexContainer* cont, const std::string &key) { + + ATH_MSG_DEBUG("in getData()"); + float chi2val = 0.; - DataVect x; - DataVect y; - DataVect z; - DataVect chi2; - DataVect vertexType; - DataVect primVxCand; - DataVect covMatrix; - DataVect numTracks; - DataVect tracks; - DataVect sgkey; - - //Loop over all vertex containers - for ( ; vtxCollectionItr != vtxCollectionsEnd; ++vtxCollectionItr ) { - - if ( ( vtxCollectionItr.key().find("HLT") != std::string::npos)){ // ignore all HLT for now - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Ignoring HLT collection " << vtxCollectionItr.key() << endmsg; - continue; - } - if ( ( vtxCollectionItr.key().find("V0") != std::string::npos)){ // ignore all HLT for now - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Ignoring V0 collection " << vtxCollectionItr.key() << endmsg; - continue; - } - //Get size of current container - xAOD::VertexContainer::size_type NVtx = vtxCollectionItr->size(); + DataMap DataMap; + + DataVect x; + DataVect y; + DataVect z; + DataVect chi2; + DataVect vertexType; + DataVect primVxCand; + DataVect covMatrix; + DataVect numTracks; + DataVect tracks; + DataVect sgkey; - //Be a bit verbose - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Reading vertex container " << vtxCollectionItr.key() - << " with " << NVtx << " entries" << endmsg; + //Get size of current container + xAOD::VertexContainer::size_type NVtx = cont->size(); + + ATH_MSG_DEBUG("Reading vertex container " << key + << " with " << NVtx << " entries"); x.reserve(x.size()+NVtx); y.reserve(y.size()+NVtx); @@ -119,84 +99,72 @@ namespace JiveXML { int counter = 0; //Loop over vertices - xAOD::VertexContainer::const_iterator VertexItr = vtxCollectionItr->begin(); - for ( ; VertexItr != vtxCollectionItr->end(); ++VertexItr) { - - if (msgLvl(MSG::DEBUG)) { - msg(MSG::DEBUG) << " Vertex #" << counter++ << " : x = " << (*VertexItr)->x()/cm << ", y = " - << (*VertexItr)->y()/cm << ", z[GeV] = " << (*VertexItr)->z()/cm - << ", vertexType = " << (*VertexItr)->vertexType() - << ", chiSquared = " << (*VertexItr)->chiSquared() - << ", numberDoF = " << (*VertexItr)->numberDoF() << endmsg; - } - - x.push_back(DataType((*VertexItr)->x()/cm)); - y.push_back(DataType((*VertexItr)->y()/cm)); - z.push_back(DataType((*VertexItr)->z()/cm)); - - if ( vtxCollectionItr.key() == m_secondaryVertexKey){ - vertexType.push_back( 2 ); - }else{ - vertexType.push_back( DataType((*VertexItr)->vertexType())); - } - - if ((*VertexItr)->vertexType() == 1 ){ - primVxCand.push_back( 1 ); - }else{ - primVxCand.push_back( 0 ); - } - sgkey.push_back (m_tracksName); + xAOD::VertexContainer::const_iterator VertexItr = cont->begin(); + for ( ; VertexItr != cont->end(); ++VertexItr) { + + ATH_MSG_DEBUG(" Vertex #" << counter++ << " : x = " << (*VertexItr)->x()/cm << ", y = " + << (*VertexItr)->y()/cm << ", z[GeV] = " << (*VertexItr)->z()/cm + << ", vertexType = " << (*VertexItr)->vertexType() + << ", chiSquared = " << (*VertexItr)->chiSquared() + << ", numberDoF = " << (*VertexItr)->numberDoF()); + + x.emplace_back(DataType((*VertexItr)->x()/cm)); + y.emplace_back(DataType((*VertexItr)->y()/cm)); + z.emplace_back(DataType((*VertexItr)->z()/cm)); + + if ( key == m_secondaryVertexKey){ + vertexType.emplace_back( 2 ); + }else{ + vertexType.emplace_back( DataType((*VertexItr)->vertexType())); + } + + if ((*VertexItr)->vertexType() == 1 ){ + primVxCand.emplace_back( 1 ); + }else{ + primVxCand.emplace_back( 0 ); + } + sgkey.emplace_back (m_tracksName.value()); - //// placeholder ! From old V0CandidateRetriever. - covMatrix.push_back(DataType("2 -.1 .5 -.01 0.002 .01")); + //// placeholder ! From old V0CandidateRetriever. + covMatrix.emplace_back(DataType("2 -.1 .5 -.01 0.002 .01")); - //degrees of freedom might be zero - beware + //degrees of freedom might be zero - beware if ( (*VertexItr)->numberDoF() != 0 ){ - chi2val = (*VertexItr)->chiSquared()/(*VertexItr)->numberDoF() ; + chi2val = (*VertexItr)->chiSquared()/(*VertexItr)->numberDoF() ; }else{ - chi2val = -1.; + chi2val = -1.; } - chi2.push_back(DataType( chi2val )); + chi2.emplace_back(DataType( chi2val )); - // track-vertex association code in xAOD from Nick Styles, Apr14: - // InnerDetector/InDetRecAlgs/InDetPriVxFinder/InDetVxLinksToTrackParticles + // track-vertex association code in xAOD from Nick Styles, Apr14: + // InnerDetector/InDetRecAlgs/InDetPriVxFinder/InDetVxLinksToTrackParticles int trkCnt = 0; const std::vector< ElementLink< xAOD::TrackParticleContainer > > tpLinks = (*VertexItr)->trackParticleLinks(); - - //iterating over the links + + //iterating over the links unsigned int tp_size = tpLinks.size(); - numTracks.push_back(DataType( tp_size )); + numTracks.emplace_back(DataType( tp_size )); if(tp_size){ // links exist - for(unsigned int tp = 0; tp<tp_size; ++tp) - { - ElementLink< xAOD::TrackParticleContainer > tpl = tpLinks.at(tp); - -//checking a container name consitency -// if(tpl.key() == m_tracksName) // doesn't work. tpl.key is a number ? - - if (msgLvl(MSG::DEBUG)) { - msg(MSG::DEBUG) << " Vertex #" << counter << " track association index: " << tpl.index() - << ", collection : " << tpl.key() - << ", Tracks : " << tp << " out of " << tp_size << ", own count: " << trkCnt++ << endmsg; - } - if ( tpl.index() < 1000 ){ // sanity check, this can be huge number - tracks.push_back(DataType( tpl.index() )); - }else{ - tracks.push_back(DataType( 0 )); - } - } //links exist - }//end of track particle collection size check - - //if (msgLvl(MSG::DEBUG)) { - // msg(MSG::DEBUG) << " Vertex #" << counter << ", numTracks : " << tpLinks.size() << endmsg; - //} - - } // end VertexIterator - } // end collectionIterator + for(unsigned int tp = 0; tp<tp_size; ++tp) + { + ElementLink< xAOD::TrackParticleContainer > tpl = tpLinks.at(tp); - // four-vectors - DataMap DataMap; + ATH_MSG_DEBUG(" Vertex #" << counter << " track association index: " << tpl.index() + << ", collection : " << tpl.key() + << ", Tracks : " << tp << " out of " << tp_size << ", own count: " << trkCnt++); + + if ( tpl.index() < 1000 ){ // sanity check, this can be huge number + tracks.emplace_back(DataType( tpl.index() )); + }else{ + tracks.emplace_back(DataType( 0 )); + } + } //links exist + }//end of track particle collection size check + + } // end VertexIterator + + // four-vectors DataMap["x"] = x; DataMap["y"] = y; DataMap["z"] = z; @@ -205,9 +173,8 @@ namespace JiveXML { DataMap["primVxCand"] = primVxCand; DataMap["covMatrix multiple=\"6\""] = covMatrix; DataMap["numTracks"] = numTracks; -// DataMap["tracks multiple=\"0\""]; DataMap["sgkey"] = sgkey; - + //This is needed once we know numTracks and associations: //If there had been any tracks, add a tag if ((numTracks.size()) != 0){ @@ -215,16 +182,59 @@ namespace JiveXML { double NTracksPerVertex = tracks.size()*1./numTracks.size(); std::string tag = "tracks multiple=\"" +DataType(NTracksPerVertex).toString()+"\""; DataMap[tag] = tracks; - } + } + + ATH_MSG_DEBUG(dataTypeName() << " retrieved with " << x.size() << " entries"); - if (msgLvl(MSG::DEBUG)) { - msg(MSG::DEBUG) << dataTypeName() << " retrieved with " << x.size() << " entries"<< endmsg; + return DataMap; + + } + + + const std::vector<std::string> xAODVertexRetriever::getKeys() { + ATH_MSG_DEBUG("in getKeys()"); + + std::vector<std::string> keys = {}; + + // Remove m_primaryVertexKey and m_secondaryVertexKey from m_otherKeys if they exist, we don't want to write them twice + auto it = std::find(m_otherKeys.begin(), m_otherKeys.end(), m_primaryVertexKey); + if(it != m_otherKeys.end()){ + m_otherKeys.erase(it); + } + auto it2 = std::find(m_otherKeys.begin(), m_otherKeys.end(), m_secondaryVertexKey); + if(it2 != m_otherKeys.end()){ + m_otherKeys.erase(it2); + } + + // Add m_primaryVertexKey as the first element and m_secondaryVertexKey as the second if they are not "" + if(m_primaryVertexKey!=""){ + keys.push_back(m_primaryVertexKey); + } + if(m_secondaryVertexKey!=""){ + keys.push_back(m_secondaryVertexKey); + } + + if(!m_otherKeys.empty()){ + keys.insert(keys.end(), m_otherKeys.begin(), m_otherKeys.end()); } - //All collections retrieved okay - return FormatTool->AddToEvent(dataTypeName(), "Vertices_xAOD", &DataMap); - - } // retrieve - //-------------------------------------------------------------------------- - + // If all collections are requested, obtain all available keys from StoreGate + std::vector<std::string> allKeys; + + if(m_doWriteAllCollections){ + evtStore()->keys<xAOD::VertexContainer>(allKeys); + + // Add keys that are not the priority key and do not add containers with "HLT" in their name if requested, , and do not contain V0 in their name, if requested + for(const std::string& key : allKeys){ + // Don't include key if it's already in keys + auto it2 = std::find(keys.begin(), keys.end(), key); + if(it2 != keys.end())continue; + if((key.find("HLT") == std::string::npos || m_doWriteHLT) && (m_doWriteV0 || key.find("V0") == std::string::npos)){ + keys.emplace_back(key); + } + } + } + return keys; + } + } // JiveXML namespace diff --git a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODCaloClusterRetriever.h b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODCaloClusterRetriever.h index e3b7193b71ad8c938dd690253eb8f589d3601acf..9667c2d829d8994f203233c6b8ef6c597d177889 100755 --- a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODCaloClusterRetriever.h +++ b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODCaloClusterRetriever.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration */ #ifndef JIVEXML_XAODCALOCLUSTERRetriever_H @@ -11,21 +11,23 @@ #include "JiveXML/IDataRetriever.h" #include "AthenaBaseComps/AthAlgTool.h" - #include "xAODCaloEvent/CaloClusterContainer.h" class CaloClusterContainer; namespace JiveXML{ - + /** * @class xAODCaloClusterRetriever - * @brief Retrieves all @c Calo Cluster @c objects + * @brief Retrieves all @c Calo Cluster @c objects * * - @b Properties - * - FavouriteJetCollection - * - OtherJetCollections + * - PriorityClusterCollection: First collection to be retrieved, displayed + * in Atlantis without switching. All other collections are + * also retrieved. + * - OtherClusterCollections * - DoWriteHLT + * - DoWriteAllCollections * * - @b Retrieved @b Data * - Usual four-vector: phi, eta, et @@ -33,27 +35,31 @@ namespace JiveXML{ * for compatibility with 'full' clusters in AtlantisJava */ class xAODCaloClusterRetriever : virtual public IDataRetriever, - public AthAlgTool { - - public: - - /// Standard Constructor - xAODCaloClusterRetriever(const std::string& type,const std::string& name,const IInterface* parent); - - /// Retrieve all the data - virtual StatusCode retrieve(ToolHandle<IFormatTool> &FormatTool); - const DataMap getData(const xAOD::CaloClusterContainer*); - - /// Return the name of the data type - virtual std::string dataTypeName() const { return m_typeName; }; - - private: - ///The data type that is generated by this retriever - const std::string m_typeName; - - std::string m_sgKeyFavourite; - std::vector<std::string> m_otherKeys; - bool m_doWriteHLT; + public AthAlgTool { + + public: + + /// Standard Constructor + xAODCaloClusterRetriever(const std::string& type,const std::string& name,const IInterface* parent); + + virtual StatusCode retrieve(ToolHandle<IFormatTool> &FormatTool); + /// Puts the variables into a DataMap + const DataMap getData(const xAOD::CaloClusterContainer*); + /// Gets the StoreGate keys for the desired containers + const std::vector<std::string> getKeys(); + /// Return the name of the data type that is generated by this retriever + virtual std::string dataTypeName() const { return m_typeName; }; + + private: + + /// The data type that is generated by this retriever + const std::string m_typeName = "Cluster"; + + Gaudi::Property<bool> m_doWriteHLT {this, "DoWriteHLT", false, "Write out other collections that have HLT in the name"}; + Gaudi::Property<bool> m_doWriteAllCollections {this, "DoWriteAllCollections", false, "Write out all CaloCluster collections"}; + Gaudi::Property<std::vector<std::string>> m_otherKeys {this, "OtherClusterCollections", {}, "Other collections to be retrieved. If DoWriteAllCollections is set to true all available CaloCluster collections will be retrieved"}; + Gaudi::Property<std::string> m_priorityKey {this,"PriorityClusterCollection","egammaClusters", "Name of the priority CaloCluster container that will be written out first"}; + }; } #endif diff --git a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODElectronRetriever.h b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODElectronRetriever.h index f47bae8fe1055fe93cd048d6f99460e1a4a97cc6..a9f1127a5155e774a8a41f6b005b73e88b18f353 100755 --- a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODElectronRetriever.h +++ b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODElectronRetriever.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration */ #ifndef JIVEXML_XAODELECTRONRETRIEVER_H @@ -11,45 +11,51 @@ #include "JiveXML/IDataRetriever.h" #include "AthenaBaseComps/AthAlgTool.h" - -#include "xAODEgamma/ElectronContainer.h" +#include "xAODEgamma/ElectronContainer.h" namespace JiveXML{ - + /** * @class xAODElectronRetriever * @brief Retrieves all @c Electron @c objects (ElectronAODCollection etc.) * * - @b Properties - * - StoreGateKey: First collection to be retrieved, displayed - * in Atlantis without switching. All other collections are + * - PriorityElectronCollection: First collection to be retrieved, displayed + * in Atlantis without switching. All other collections are * also retrieved. + * - OtherElectronCollections + * - DoWriteHLT + * - DoWriteAllCollections * * - @b Retrieved @b Data * - Usual four-vectors: phi, eta, et etc. * - Associations for clusters and tracks via ElementLink: key/index scheme */ class xAODElectronRetriever : virtual public IDataRetriever, - public AthAlgTool { - - public: - - /// Standard Constructor - xAODElectronRetriever(const std::string& type,const std::string& name,const IInterface* parent); - - /// Retrieve all the data - virtual StatusCode retrieve(ToolHandle<IFormatTool> &FormatTool); - const DataMap getData(const xAOD::ElectronContainer*); - - /// Return the name of the data type - virtual std::string dataTypeName() const { return m_typeName; }; - - private: - ///The data type that is generated by this retriever - const std::string m_typeName; - - std::string m_sgKey; - std::vector<std::string> m_otherKeys; + public AthAlgTool { + + public: + + /// Standard Constructor + xAODElectronRetriever(const std::string& type,const std::string& name,const IInterface* parent); + + virtual StatusCode retrieve(ToolHandle<IFormatTool> &FormatTool); + /// Puts the variables into a DataMap + const DataMap getData(const xAOD::ElectronContainer*); + /// Gets the StoreGate keys for the desired containers + const std::vector<std::string> getKeys(); + /// Return the name of the data type that is generated by this retriever + virtual std::string dataTypeName() const { return m_typeName; }; + + private: + /// The data type that is generated by this retriever + const std::string m_typeName = "Electron"; + + Gaudi::Property<bool> m_doWriteHLT {this, "DoWriteHLT", false, "Write out other collections that have HLT in the name"}; + Gaudi::Property<bool> m_doWriteAllCollections {this, "DoWriteAllCollections", false, "Write out all Electron collections"}; + Gaudi::Property<std::vector<std::string>> m_otherKeys {this, "OtherElectronCollections", {}, "Other collections to be retrieved. If DoWriteAllCollections is set to true all available Electron collections will be retrieved"}; + Gaudi::Property<std::string> m_priorityKey {this,"PriorityElectronCollection","Electrons", "Name of the priority Electron container that will be written out first"}; + }; } #endif diff --git a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODJetRetriever.h b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODJetRetriever.h index eca93b8593e5b2cd21bc252480cfc97cf6843bf2..99f4b55d7db34a390150f5371c9ff48d59271d26 100755 --- a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODJetRetriever.h +++ b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODJetRetriever.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration */ #ifndef JIVEXML_XAODJETRETRIEVER_H @@ -11,63 +11,73 @@ #include "JiveXML/IDataRetriever.h" #include "AthenaBaseComps/AthAlgTool.h" - -#include "xAODJet/JetContainer.h" +#include "xAODJet/JetContainer.h" #include "AsgTools/AnaToolHandle.h" #include "FTagAnalysisInterfaces/IBTaggingSelectionTool.h" namespace JiveXML{ - + /** * @class xAODJetRetriever * @brief Retrieves all @c Jet @c objects (JetAODCollection etc.) * * - @b Properties - * - StoreGateKey: First collection to be retrieved, displayed - * in Atlantis without switching. All other collections are + * - PriorityJetCollection: First collection to be retrieved, displayed + * in Atlantis without switching. All other collections are * also retrieved. + * - OtherJetCollections + * - DoWriteHLT + * - DoWriteAllCollections + * - WriteJetQuality + * - TracksName + * - CDIPaths * * - @b Retrieved @b Data * - Usual four-vectors: phi, eta, et etc. * - Associations for clusters and tracks via ElementLink: key/index scheme */ class xAODJetRetriever : virtual public IDataRetriever, - public AthAlgTool { - - public: - - /// Standard Constructor - xAODJetRetriever(const std::string& type,const std::string& name,const IInterface* parent); - - /// Retrieve all the data - virtual StatusCode retrieve(ToolHandle<IFormatTool> &FormatTool); - const DataMap getData(const xAOD::JetContainer*, const std::string& jetkey); - - /// Return the name of the data type - virtual std::string dataTypeName() const { return "Jet"; }; - - virtual StatusCode initialize(); - - private: - Gaudi::Property<std::string> m_sgKeyFavourite{ - this, "FavouriteJetCollection", "AntiKt4TopoEMJets", "Collection to be first in output, shown in Atlantis without switching"}; - Gaudi::Property<std::vector<std::string>> m_otherKeys{ - this, "OtherJetCollections", {}, "Other collections to be retrieved. If list left empty, all available retrieved"}; - Gaudi::Property<bool> m_doWriteHLT{ - this, "DoWriteHLT", false, "Write out HLTAutokey object information. False by default."}; - Gaudi::Property<bool> m_writeJetQuality{ - this, "WriteJetQuality", false, "Write out extended jet quality information. False by default."}; - Gaudi::Property<std::string> m_tracksName{ - this, "TracksName", "InDetTrackParticles_xAOD", "Name of the track container to be retrieved"}; - Gaudi::Property<std::vector<std::string>> m_bTaggerNames{ - this, "BTaggerNames", {}, "Names of the b-taggers to be retrieved"}; - Gaudi::Property<std::vector<std::string>> m_CDIPaths{ - this, "CDIPaths", {}, "Paths to the CDI files storing the b-tagger properties"}; - - std::unordered_map<std::string, asg::AnaToolHandle<IBTaggingSelectionTool>> m_btagSelTools; - unsigned int m_nTaggers=0; - - }; + public AthAlgTool { + + public: + + /// Standard Constructor + xAODJetRetriever(const std::string& type,const std::string& name,const IInterface* parent); + + virtual StatusCode retrieve(ToolHandle<IFormatTool> &FormatTool); + /// Puts the variables into a DataMap + const DataMap getData(const xAOD::JetContainer*, const std::string &jetkey); + /// Gets the StoreGate keys for the desired containers + const std::vector<std::string> getKeys(); + /// Return the name of the data type that is generated by this retriever + virtual std::string dataTypeName() const { return m_typeName; }; + + virtual StatusCode initialize(); + + private: + + /// The data type that is generated by this retriever + const std::string m_typeName = "Jet"; + + Gaudi::Property<bool> m_doWriteHLT {this, "DoWriteHLT", false, "Write out other collections that have HLT in the name"}; + Gaudi::Property<bool> m_doWriteAllCollections {this, "DoWriteAllCollections", false, "Write out all Jet collections"}; + + + Gaudi::Property<std::vector<std::string>> m_otherKeys {this, "OtherJetCollections", {"AntiKt4EMTopoJets", "AntiKt4LCTopoJets", "AntiKt10LCTopoJets", "AntiKt10UFOCSSKJets"}, "Other collections to be retrieved. If DoWriteAllCollections is set to true all available Jet collections will be retrieved"}; + Gaudi::Property<std::string> m_priorityKey {this,"PriorityJetCollection","AntiKt4TopoEMJets", "Name of the priority Jet container that will be written out first"}; + Gaudi::Property<bool> m_writeJetQuality{ + this, "WriteJetQuality", false, "Write out extended jet quality information. False by default."}; + Gaudi::Property<std::string> m_tracksName{ + this, "TracksName", "InDetTrackParticles_xAOD", "Name of the track container to be retrieved"}; + Gaudi::Property<std::vector<std::string>> m_bTaggerNames{ + this, "BTaggerNames", {"DL1dv01", "GN2v01"}, "Names of the b-taggers to be retrieved"}; + Gaudi::Property<std::vector<std::string>> m_CDIPaths{ + this, "CDIPaths", {"xAODBTaggingEfficiency/13p6TeV/2023-22-13p6TeV-MC21-CDI_Test_2023-08-1_v1.root", "xAODBTaggingEfficiency/13p6TeV/2023-02_MC23_CDI_GN2v01-noSF.root"}, "Paths to the CDI files storing the b-tagger properties"}; + + std::unordered_map<std::string, asg::AnaToolHandle<IBTaggingSelectionTool>> m_btagSelTools; + unsigned int m_nTaggers=0; + + }; } #endif diff --git a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODMissingETRetriever.h b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODMissingETRetriever.h index 0250a6a3a0273dff7e54ea0d95a567819135ef8a..d28b491f31f7d7ade1298874ae052ddc5c197fd8 100755 --- a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODMissingETRetriever.h +++ b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODMissingETRetriever.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration */ #ifndef XAODJIVEXML_xAODMISSINGETRETRIEVER_H @@ -11,45 +11,52 @@ #include "JiveXML/IDataRetriever.h" #include "AthenaBaseComps/AthAlgTool.h" - -#include "xAODMissingET/MissingETContainer.h" +#include "xAODMissingET/MissingETContainer.h" namespace JiveXML{ - + /** * @class xAODMissingETRetriever * @brief Retrieves all @c MissingET @c objects (MissingETAODCollection etc.) * * - @b Properties - * - StoreGateKey: First collection to be retrieved, displayed - * in Atlantis without switching. All other collections are + * - PriorityMETCollection: First collection to be retrieved, displayed + * in Atlantis without switching. All other collections are * also retrieved. + * - OtherMETCollections + * - DoWriteHLT + * - DoWriteAllCollections * * - @b Retrieved @b Data * - Usual four-vectors: phi, eta, et etc. * - Associations for clusters and tracks via ElementLink: key/index scheme */ class xAODMissingETRetriever : virtual public IDataRetriever, - public AthAlgTool { - - public: - - /// Standard Constructor - xAODMissingETRetriever(const std::string& type,const std::string& name,const IInterface* parent); - - /// Retrieve all the data - virtual StatusCode retrieve(ToolHandle<IFormatTool> &FormatTool); - const DataMap getData(const xAOD::MissingETContainer*); - - /// Return the name of the data type - virtual std::string dataTypeName() const { return m_typeName; }; - - private: - ///The data type that is generated by this retriever - const std::string m_typeName; - - std::string m_sgKeyFavourite; - std::vector<std::string> m_otherKeys; + public AthAlgTool { + + public: + + /// Standard Constructor + xAODMissingETRetriever(const std::string& type,const std::string& name,const IInterface* parent); + + virtual StatusCode retrieve(ToolHandle<IFormatTool> &FormatTool); + /// Puts the variables into a DataMap + const DataMap getData(const xAOD::MissingETContainer*); + /// Gets the StoreGate keys for the desired containers + const std::vector<std::string> getKeys(); + /// Return the name of the data type that is generated by this retriever + virtual std::string dataTypeName() const { return m_typeName; }; + + private: + + /// The data type that is generated by this retriever + const std::string m_typeName = "ETMis"; + + Gaudi::Property<bool> m_doWriteHLT {this, "DoWriteHLT", false, "Write out other collections that have HLT in the name"}; + Gaudi::Property<bool> m_doWriteAllCollections {this, "DoWriteAllCollections", false, "Write out all MET collections"}; + Gaudi::Property<std::vector<std::string>> m_otherKeys {this, "OtherMETCollections", {"MET_Reference_AntiKt4EMTopo", "MET_Calo", "MET_LocHadTopo", "MET_Core_AntiKt4LCTopo"}, "Other collections to be retrieved. If DoWriteAllCollections is set to true all available MET collections will be retrieved"}; + Gaudi::Property<std::string> m_priorityKey {this,"PriorityMETCollection","MET_Reference_AntiKt4EMPFlow", "Name of the priority MET container that will be written out first"}; + }; } #endif // not XAODJIVEXML_xAODMISSINGETRETRIEVER_H diff --git a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODMuonRetriever.h b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODMuonRetriever.h index 62c0dda3e252e8b30bd0a569f25c19839614ec68..f33aaf718931832994df66f50265f235147055d4 100755 --- a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODMuonRetriever.h +++ b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODMuonRetriever.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration */ #ifndef JIVEXML_xAODMUONRETRIEVER_H @@ -11,45 +11,52 @@ #include "JiveXML/IDataRetriever.h" #include "AthenaBaseComps/AthAlgTool.h" - -#include "xAODMuon/MuonContainer.h" +#include "xAODMuon/MuonContainer.h" namespace JiveXML{ - + /** * @class xAODMuonRetriever * @brief Retrieves all @c Muon @c objects (MuonAODCollection etc.) * * - @b Properties - * - StoreGateKey: First collection to be retrieved, displayed - * in Atlantis without switching. All other collections are + * - PriorityMuonCollection: First collection to be retrieved, displayed + * in Atlantis without switching. All other collections are * also retrieved. + * - OtherMuonCollections + * - DoWriteHLT + * - DoWriteAllCollections * * - @b Retrieved @b Data * - Usual four-vectors: phi, eta, et etc. * - Associations for clusters and tracks via ElementLink: key/index scheme */ class xAODMuonRetriever : virtual public IDataRetriever, - public AthAlgTool { - - public: - - /// Standard Constructor - xAODMuonRetriever(const std::string& type,const std::string& name,const IInterface* parent); - - /// Retrieve all the data - virtual StatusCode retrieve(ToolHandle<IFormatTool> &FormatTool); - const DataMap getData(const xAOD::MuonContainer*); - - /// Return the name of the data type - virtual std::string dataTypeName() const { return m_typeName; }; - - private: - ///The data type that is generated by this retriever - const std::string m_typeName; - - std::string m_sgKey; - std::vector<std::string> m_otherKeys; + public AthAlgTool { + + public: + + /// Standard Constructor + xAODMuonRetriever(const std::string& type,const std::string& name,const IInterface* parent); + + virtual StatusCode retrieve(ToolHandle<IFormatTool> &FormatTool); + /// Puts the variables into a DataMap + const DataMap getData(const xAOD::MuonContainer*); + /// Gets the StoreGate keys for the desired containers + const std::vector<std::string> getKeys(); + /// Return the name of the data type that is generated by this retriever + virtual std::string dataTypeName() const { return m_typeName; }; + + private: + + /// The data type that is generated by this retriever + const std::string m_typeName = "Muon"; + + Gaudi::Property<bool> m_doWriteHLT {this, "DoWriteHLT", false, "Write out other collections that have HLT in the name"}; + Gaudi::Property<bool> m_doWriteAllCollections {this, "DoWriteAllCollections", false, "Write out all Cluster collections"}; + Gaudi::Property<std::vector<std::string>> m_otherKeys {this, "OtherMuonCollections", {}, "Other collections to be retrieved. If DoWriteAllCollections is set to true all available Muon collections will be retrieved"}; + Gaudi::Property<std::string> m_priorityKey {this,"PriorityMuonCollection","Muons", "Name of the priority Muon container that will be written out first"}; + }; } #endif diff --git a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODPhotonRetriever.h b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODPhotonRetriever.h index 9526b9bae27ef1a3d596ddd83ed38326398abfe7..7b84dad8fee9dffc2975535f67fcaeb266df493a 100755 --- a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODPhotonRetriever.h +++ b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODPhotonRetriever.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration */ #ifndef JIVEXML_XAODPHOTONRETRIEVER_H @@ -11,47 +11,52 @@ #include "JiveXML/IDataRetriever.h" #include "AthenaBaseComps/AthAlgTool.h" - -#include "xAODEgamma/PhotonContainer.h" +#include "xAODEgamma/PhotonContainer.h" namespace JiveXML{ - + /** * @class xAODPhotonRetriever * @brief Retrieves all @c Photon @c objects (PhotonAODCollection etc.) * * - @b Properties - * - StoreGateKey: First collection to be retrieved, displayed - * in Atlantis without switching. All other collections are + * - PriorityClusterCollection: First collection to be retrieved, displayed + * in Atlantis without switching. All other collections are * also retrieved. + * - OtherClusterCollections + * - DoWriteHLT + * - DoWriteAllCollections * * - @b Retrieved @b Data * - Usual four-vectors: phi, eta, et etc. * - Associations for clusters and tracks via ElementLink: key/index scheme */ class xAODPhotonRetriever : virtual public IDataRetriever, - public AthAlgTool { - - public: - - /// Standard Constructor - xAODPhotonRetriever(const std::string& type,const std::string& name,const IInterface* parent); - - /// Retrieve all the data - virtual StatusCode retrieve(ToolHandle<IFormatTool> &FormatTool); - const DataMap getData(const xAOD::PhotonContainer*); - - /// Return the name of the data type - virtual std::string dataTypeName() const { return m_typeName; }; - - private: - ///The data type that is generated by this retriever - const std::string m_typeName; - - std::string m_sgKey; - std::vector<std::string> m_otherKeys; - /// Whether to write HLTAutoKey objects - bool m_doWriteHLT; + public AthAlgTool { + + public: + + /// Standard Constructor + xAODPhotonRetriever(const std::string& type,const std::string& name,const IInterface* parent); + + virtual StatusCode retrieve(ToolHandle<IFormatTool> &FormatTool); + /// Puts the variables into a DataMap + const DataMap getData(const xAOD::PhotonContainer*); + /// Gets the StoreGate keys for the desired containers + const std::vector<std::string> getKeys(); + /// Return the name of the data type that is generated by this retriever + virtual std::string dataTypeName() const { return m_typeName; }; + + private: + + /// The data type that is generated by this retriever + const std::string m_typeName = "Photon"; + + Gaudi::Property<bool> m_doWriteHLT {this, "DoWriteHLT", false, "Write out other collections that have HLT in the name"}; + Gaudi::Property<bool> m_doWriteAllCollections {this, "DoWriteAllCollections", false, "Write out all Photon collections"}; + Gaudi::Property<std::vector<std::string>> m_otherKeys {this, "OtherPhotonCollections", {}, "Other collections to be retrieved. If DoWriteAllCollections is set to true all available Photon collections will be retrieved"}; + Gaudi::Property<std::string> m_priorityKey {this,"PriorityPhotonCollection","Photons", "Name of the priority Photon container that will be written out first"}; + }; } #endif diff --git a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODTauRetriever.h b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODTauRetriever.h index 73143442e7fa37f6d6aa68dc10ea4cc54f9c6364..7a9713c74aa823c7cd8acc432f0e40f66fc776fe 100755 --- a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODTauRetriever.h +++ b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODTauRetriever.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration */ #ifndef JIVEXML_XAODTAURETRIEVER_H @@ -11,45 +11,54 @@ #include "JiveXML/IDataRetriever.h" #include "AthenaBaseComps/AthAlgTool.h" - -#include "xAODTau/TauJetContainer.h" +#include "xAODTau/TauJetContainer.h" namespace JiveXML{ - + /** * @class xAODTauRetriever * @brief Retrieves all @c Tau @c objects (TauAODCollection etc.) * * - @b Properties - * - StoreGateKey: First collection to be retrieved, displayed - * in Atlantis without switching. All other collections are + * - PriorityTauCollection: First collection to be retrieved, displayed + * in Atlantis without switching. All other collections are * also retrieved. + * - OtherTauCollections + * - DoWriteHLT + * - DoWriteAllCollections + * - TracksName * * - @b Retrieved @b Data * - Usual four-vectors: phi, eta, et etc. * - Associations for clusters and tracks via ElementLink: key/index scheme */ class xAODTauRetriever : virtual public IDataRetriever, - public AthAlgTool { - - public: - - /// Standard Constructor - xAODTauRetriever(const std::string& type,const std::string& name,const IInterface* parent); - - /// Retrieve all the data - virtual StatusCode retrieve(ToolHandle<IFormatTool> &FormatTool); - const DataMap getData(const xAOD::TauJetContainer*); - - /// Return the name of the data type - virtual std::string dataTypeName() const { return m_typeName; }; - - private: - ///The data type that is generated by this retriever - const std::string m_typeName; - - std::string m_sgKey; - std::string m_tracksName; + public AthAlgTool { + + public: + + /// Standard Constructor + xAODTauRetriever(const std::string& type,const std::string& name,const IInterface* parent); + + virtual StatusCode retrieve(ToolHandle<IFormatTool> &FormatTool); + /// Return the name of the data type that is generated by this retriever + const DataMap getData(const xAOD::TauJetContainer*); + /// Gets the StoreGate keys for the desired containers + const std::vector<std::string> getKeys(); + /// Return the name of the data type that is generated by this retriever + virtual std::string dataTypeName() const { return m_typeName; }; + + private: + + /// The data type that is generated by this retriever + const std::string m_typeName = "TauJet"; + + Gaudi::Property<bool> m_doWriteHLT {this, "DoWriteHLT", false, "Write out other collections that have HLT in the name"}; + Gaudi::Property<bool> m_doWriteAllCollections {this, "DoWriteAllCollections", false, "Write out all Cluster collections"}; + Gaudi::Property<std::vector<std::string>> m_otherKeys {this, "OtherTauCollections", {}, "Other collections to be retrieved. If DoWriteAllCollections is set to true all available Tau collections will be retrieved"}; + Gaudi::Property<std::string> m_priorityKey {this,"PriorityTauCollection","TauJets", "Name of the priority Tau container that will be written out first"}; + Gaudi::Property<std::string> m_tracksName {this, "TracksName", "InDetTrackParticles_xAOD", "Name of track container"}; + }; } #endif diff --git a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODTrackParticleRetriever.h b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODTrackParticleRetriever.h index d814be9e7683fa1cf70ab9a1eabc28307e382b13..eb64d0d25280137de241b2b411ed50c3380be41d 100755 --- a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODTrackParticleRetriever.h +++ b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODTrackParticleRetriever.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration */ #ifndef JIVEXML_XAODTRACKPARTICLERETRIEVER_H @@ -11,52 +11,52 @@ #include "JiveXML/IDataRetriever.h" #include "AthenaBaseComps/AthAlgTool.h" - -#include "xAODTracking/TrackParticleContainer.h" +#include "xAODTracking/TrackParticleContainer.h" namespace JiveXML{ - + /** * @class xAODTrackParticleRetriever * @brief Retrieves all @c TrackParticle @c objects (TrackParticleAODCollection etc.) * * - @b Properties - * - StoreGateKey: First collection to be retrieved, displayed - * in Atlantis without switching. All other collections are + * - PriorityTrackParticleCollection: First collection to be retrieved, displayed + * in Atlantis without switching. All other collections are * also retrieved. + * - OtherTrackParticleCollections + * - DoWriteHLT + * - DoWriteAllCollections * * - @b Retrieved @b Data * - Usual four-vectors: phi, eta, et etc. * - Associations for clusters and tracks via ElementLink: key/index scheme */ class xAODTrackParticleRetriever : virtual public IDataRetriever, - public AthAlgTool { - - public: - - /// Standard Constructor - xAODTrackParticleRetriever(const std::string& type,const std::string& name,const IInterface* parent); - - /// Retrieve all the data - virtual StatusCode retrieve(ToolHandle<IFormatTool> &FormatTool); - const DataMap getData(const xAOD::TrackParticleContainer*); - - /// Return the name of the data type - virtual std::string dataTypeName() const { return m_typeName; }; - - private: - ///The data type that is generated by this retriever - const std::string m_typeName; - - //@name Property members - //@{ - /// First track collections to retrieve, shown as default in Atlantis - std::string m_sgKey; - /// Track collections to retrieve in the sequence they are given, all if empty - std::vector<std::string> m_otherKeys; - /// Whether to write HLTAutoKey objects - bool m_doWriteHLT; - //@} + public AthAlgTool { + + public: + + /// Standard Constructor + xAODTrackParticleRetriever(const std::string& type,const std::string& name,const IInterface* parent); + + virtual StatusCode retrieve(ToolHandle<IFormatTool> &FormatTool); + /// Puts the variables into a DataMap + const DataMap getData(const xAOD::TrackParticleContainer*); + /// Gets the StoreGate keys for the desired containers + const std::vector<std::string> getKeys(); + /// Return the name of the data type that is generated by this retriever + virtual std::string dataTypeName() const { return m_typeName; }; + + private: + + /// The data type that is generated by this retriever + const std::string m_typeName = "Track"; + + Gaudi::Property<bool> m_doWriteHLT {this, "DoWriteHLT", false, "Write out other collections that have HLT in the name"}; + Gaudi::Property<bool> m_doWriteAllCollections {this, "DoWriteAllCollections", false, "Write out all TrackParticle collections"}; + Gaudi::Property<std::vector<std::string>> m_otherKeys {this, "OtherTrackParticleCollections", {"InDetLargeD0TrackParticles", "CombinedMuonTrackParticles", "GSFTrackParticles"}, "Other collections to be retrieved. If DoWriteAllCollections is set to true all available TrackParticle collections will be retrieved"}; + Gaudi::Property<std::string> m_priorityKey {this,"PriorityTrackParticleCollection","InDetTrackParticles", "Name of the priority TrackParticle container that will be written out first"}; + }; } #endif diff --git a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODVertexRetriever.h b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODVertexRetriever.h index 863d0e5b6067ab81be3483c22d1f6f4e906daddd..8c119928852b66cf9bb3d9549bb75b43d33dc28e 100755 --- a/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODVertexRetriever.h +++ b/PhysicsAnalysis/AnalysisEventDisplay/xAODJiveXML/xAODJiveXML/xAODVertexRetriever.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration */ #ifndef JIVEXML_XAODVERTEXRETRIEVER_H @@ -11,7 +11,6 @@ #include "JiveXML/IDataRetriever.h" #include "AthenaBaseComps/AthAlgTool.h" - #include "xAODTracking/VertexContainer.h" namespace JiveXML{ @@ -21,36 +20,50 @@ namespace JiveXML{ * @brief Retrieves all @c Vertex @c objects (VertexAODCollection etc.) * * - @b Properties - * - StoreGateKey: First collection to be retrieved, displayed - * in Atlantis without switching. All other collections are + * - DoWriteAllCollections + * - DoWriteHLT + * - DoWriteV0 + * - PrimaryVertexCollection: First collection to be retrieved, displayed + * in Atlantis without switching. All other collections are + * also retrieved + * - SecondaryVertexCollection: First collection to be retrieved, displayed + * in Atlantis without switching. All other collections are * also retrieved. + * - OtherVertexCollections + * - TracksName * * - @b Retrieved @b Data * - Usual four-vectors: phi, eta, et etc. * - Associations for clusters and tracks via ElementLink: key/index scheme */ class xAODVertexRetriever : virtual public IDataRetriever, - public AthAlgTool { + public AthAlgTool { - public: + public: - /// Standard Constructor - xAODVertexRetriever(const std::string& type,const std::string& name,const IInterface* parent); + /// Standard Constructor + xAODVertexRetriever(const std::string& type,const std::string& name,const IInterface* parent); - /// Retrieve all the data - virtual StatusCode retrieve(ToolHandle<IFormatTool> &FormatTool); - const DataMap getData(const xAOD::VertexContainer*); - - /// Return the name of the data type - virtual std::string dataTypeName() const { return m_typeName; }; + virtual StatusCode retrieve(ToolHandle<IFormatTool> &FormatTool); + /// Puts the variables into a DataMap + const DataMap getData(const xAOD::VertexContainer*, const std::string &key); + /// Gets the StoreGate keys for the desired containers + const std::vector<std::string> getKeys(); + /// Return the name of the data type that is generated by this retriever + virtual std::string dataTypeName() const { return m_typeName; }; - private: - ///The data type that is generated by this retriever - const std::string m_typeName; + private: + + /// The data type that is generated by this retriever + const std::string m_typeName = "RVx"; - std::string m_primaryVertexKey; - std::string m_secondaryVertexKey; - std::string m_tracksName; // collection for associations + Gaudi::Property<bool> m_doWriteHLT {this, "DoWriteHLT", false, "Write out other collections that have HLT in the name"}; + Gaudi::Property<bool> m_doWriteAllCollections {this, "DoWriteAllCollections", false, "Write out all Cluster collections"}; + Gaudi::Property<bool> m_doWriteV0 {this, "DoWriteV0", false, "Write out other vertex collections that have V0 in the name"}; + Gaudi::Property<std::string> m_primaryVertexKey {this,"PrimaryVertexCollection","PrimaryVertices", "Name of the Primary Vertex container"}; + Gaudi::Property<std::string> m_secondaryVertexKey {this,"SecondaryVertexCollection","BTagging_AntiKt4EMPFlowSecVtx", "Name of the Secondary Vertex container"}; + Gaudi::Property<std::vector<std::string>> m_otherKeys {this, "OtherVertexCollections", {"BTagging_AntiKt4EMTopoSecVtx"}, "Other collections to be retrieved. If DoWriteAllCollections is set to true all available Vertex collections will be retrieved"}; + Gaudi::Property<std::string> m_tracksName {this, "TracksName", "InDetTrackParticles_xAOD", "Name of track container"}; }; } #endif diff --git a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkCore/src/LockDecorations.cxx b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkCore/src/LockDecorations.cxx index 5425d60b46a87f941ac7599667563f5e919c9bdf..0e80f2227b623b30eeb8fe1b3459f2f887453b6e 100644 --- a/PhysicsAnalysis/DerivationFramework/DerivationFrameworkCore/src/LockDecorations.cxx +++ b/PhysicsAnalysis/DerivationFramework/DerivationFrameworkCore/src/LockDecorations.cxx @@ -40,13 +40,15 @@ StatusCode LockDecorations::execute (const EventContext& ctx) const const auto& r = SG::AuxTypeRegistry::instance(); for (const SG::WriteDecorHandleKey<SG::AuxVectorBase>& k : m_decorations) { SG::ReadHandle<SG::AuxVectorBase> h (k.contHandleKey(), ctx); - SG::auxid_t auxid = r.findAuxID (SG::decorKeyFromKey (k.key())); - if (auxid == SG::null_auxid) { - ATH_MSG_ERROR( "Cannot find decoration " << k.key() ); - return StatusCode::FAILURE; + if (h->size_v() > 0) { + SG::auxid_t auxid = r.findAuxID (SG::decorKeyFromKey (k.key())); + if (auxid == SG::null_auxid) { + ATH_MSG_ERROR( "Cannot find decoration " << k.key() ); + return StatusCode::FAILURE; + } + SG::AuxVectorBase& avd ATLAS_THREAD_SAFE = const_cast<SG::AuxVectorBase&> (*h); + avd.lockDecoration (auxid); } - SG::AuxVectorBase& avd ATLAS_THREAD_SAFE = const_cast<SG::AuxVectorBase&> (*h); - avd.lockDecoration (auxid); } return StatusCode::SUCCESS; } diff --git a/TileCalorimeter/TileMonitoring/CMakeLists.txt b/TileCalorimeter/TileMonitoring/CMakeLists.txt index 2154e06afbfb179cc2e5dccc9203ec4fa0e4a18f..7a3f8809d43563db8ef3136965091ab536d9cb3e 100644 --- a/TileCalorimeter/TileMonitoring/CMakeLists.txt +++ b/TileCalorimeter/TileMonitoring/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( TileMonitoring ) @@ -25,120 +25,144 @@ atlas_install_data( data/*.yaml ) # Tests: atlas_add_test( TileCellMonitorAlgorithm_test SCRIPT python -m TileMonitoring.TileCellMonitorAlgorithm + PRIVATE_WORKING_DIRECTORY PROPERTIES TIMEOUT 300 - POST_EXEC_SCRIPT nopost.sh) + POST_EXEC_SCRIPT noerror.sh) atlas_add_test( TileTowerMonitorAlgorithm_test SCRIPT python -m TileMonitoring.TileTowerMonitorAlgorithm + PRIVATE_WORKING_DIRECTORY PROPERTIES TIMEOUT 300 - POST_EXEC_SCRIPT nopost.sh) + POST_EXEC_SCRIPT noerror.sh) atlas_add_test( TileClusterMonitorAlgorithm_test SCRIPT python -m TileMonitoring.TileClusterMonitorAlgorithm + PRIVATE_WORKING_DIRECTORY PROPERTIES TIMEOUT 300 - POST_EXEC_SCRIPT nopost.sh) + POST_EXEC_SCRIPT noerror.sh) atlas_add_test( TileMuIdMonitorAlgorithm_test SCRIPT python -m TileMonitoring.TileMuIdMonitorAlgorithm + PRIVATE_WORKING_DIRECTORY PROPERTIES TIMEOUT 300 - POST_EXEC_SCRIPT nopost.sh) + POST_EXEC_SCRIPT noerror.sh) atlas_add_test( TileJetMonitorAlgorithm_test SCRIPT python -m TileMonitoring.TileJetMonitorAlgorithm + PRIVATE_WORKING_DIRECTORY PROPERTIES TIMEOUT 300 - POST_EXEC_SCRIPT nopost.sh) + POST_EXEC_SCRIPT noerror.sh) atlas_add_test( TileDQFragMonitorAlgorithm_test SCRIPT python -m TileMonitoring.TileDQFragMonitorAlgorithm + PRIVATE_WORKING_DIRECTORY PROPERTIES TIMEOUT 300 - POST_EXEC_SCRIPT nopost.sh) + POST_EXEC_SCRIPT noerror.sh) atlas_add_test( TileMBTSMonitorAlgorithm_test SCRIPT python -m TileMonitoring.TileMBTSMonitorAlgorithm + PRIVATE_WORKING_DIRECTORY PROPERTIES TIMEOUT 300 - POST_EXEC_SCRIPT nopost.sh) + POST_EXEC_SCRIPT noerror.sh) atlas_add_test( TileDigiNoiseMonitorAlgorithm_test SCRIPT python -m TileMonitoring.TileDigiNoiseMonitorAlgorithm + PRIVATE_WORKING_DIRECTORY PROPERTIES TIMEOUT 300 - POST_EXEC_SCRIPT nopost.sh) + POST_EXEC_SCRIPT noerror.sh) atlas_add_test( TileRawChannelTimeMonitorAlgorithm_test SCRIPT python -m TileMonitoring.TileRawChannelTimeMonitorAlgorithm + PRIVATE_WORKING_DIRECTORY PROPERTIES TIMEOUT 300 - POST_EXEC_SCRIPT nopost.sh) + POST_EXEC_SCRIPT noerror.sh) atlas_add_test( TileRawChannelNoiseMonitorAlgorithm_test SCRIPT python -m TileMonitoring.TileRawChannelNoiseMonitorAlgorithm + PRIVATE_WORKING_DIRECTORY PROPERTIES TIMEOUT 600 - POST_EXEC_SCRIPT nopost.sh) + POST_EXEC_SCRIPT noerror.sh) atlas_add_test( TileMuonFitMonitorAlgorithm_test SCRIPT python -m TileMonitoring.TileMuonFitMonitorAlgorithm + PRIVATE_WORKING_DIRECTORY PROPERTIES TIMEOUT 600 - POST_EXEC_SCRIPT nopost.sh) + POST_EXEC_SCRIPT noerror.sh) atlas_add_test( TileRODMonitorAlgorithm_test SCRIPT python -m TileMonitoring.TileRODMonitorAlgorithm + PRIVATE_WORKING_DIRECTORY PROPERTIES TIMEOUT 600 - POST_EXEC_SCRIPT nopost.sh) + POST_EXEC_SCRIPT noerror.sh) atlas_add_test( TileTMDBMonitorAlgorithm_test SCRIPT python -m TileMonitoring.TileTMDBMonitorAlgorithm + PRIVATE_WORKING_DIRECTORY PROPERTIES TIMEOUT 600 - POST_EXEC_SCRIPT nopost.sh) + POST_EXEC_SCRIPT noerror.sh) atlas_add_test( TileTMDBDigitsMonitorAlgorithm_test SCRIPT python -m TileMonitoring.TileTMDBDigitsMonitorAlgorithm + PRIVATE_WORKING_DIRECTORY PROPERTIES TIMEOUT 600 - POST_EXEC_SCRIPT nopost.sh) + POST_EXEC_SCRIPT noerror.sh) atlas_add_test( TileTMDBRawChannelMonitorAlgorithm_test SCRIPT python -m TileMonitoring.TileTMDBRawChannelMonitorAlgorithm + PRIVATE_WORKING_DIRECTORY PROPERTIES TIMEOUT 600 - POST_EXEC_SCRIPT nopost.sh) + POST_EXEC_SCRIPT noerror.sh) atlas_add_test( TileMonitoringConfig_test SCRIPT python -m TileMonitoring.TileMonitoringConfig + PRIVATE_WORKING_DIRECTORY PROPERTIES TIMEOUT 300 - POST_EXEC_SCRIPT nopost.sh) + POST_EXEC_SCRIPT noerror.sh) atlas_add_test( RunTileMonitoring_test SCRIPT python -m TileMonitoring.RunTileMonitoring --evtMax=3 + PRIVATE_WORKING_DIRECTORY PROPERTIES TIMEOUT 600 - POST_EXEC_SCRIPT nopost.sh) + POST_EXEC_SCRIPT noerror.sh) atlas_add_test( TileDigitsMonitorAlgorithm_test SCRIPT python -m TileMonitoring.TileDigitsMonitorAlgorithm + PRIVATE_WORKING_DIRECTORY PROPERTIES TIMEOUT 600 - POST_EXEC_SCRIPT nopost.sh) + POST_EXEC_SCRIPT noerror.sh) atlas_add_test( TileDigitsFlxMonitorAlgorithm_test SCRIPT python -m TileMonitoring.TileDigitsFlxMonitorAlgorithm + PRIVATE_WORKING_DIRECTORY PROPERTIES TIMEOUT 600 - POST_EXEC_SCRIPT nopost.sh) + POST_EXEC_SCRIPT noerror.sh) atlas_add_test( TileTBPulseMonitorAlgorithm_test SCRIPT python -m TileMonitoring.TileTBPulseMonitorAlgorithm --nsamples 7 --demo-cabling 0 --channels '' --use-sqlite '' + PRIVATE_WORKING_DIRECTORY PROPERTIES TIMEOUT 600 - POST_EXEC_SCRIPT nopost.sh) + POST_EXEC_SCRIPT noerror.sh) atlas_add_test( TileTBMonitorAlgorithm_test SCRIPT python -m TileMonitoring.TileTBMonitorAlgorithm --use-sqlite '' + PRIVATE_WORKING_DIRECTORY PROPERTIES TIMEOUT 600 - POST_EXEC_SCRIPT nopost.sh) + POST_EXEC_SCRIPT noerror.sh) atlas_add_test( TileJiveXMLConfig_test SCRIPT python -m TileMonitoring.TileJiveXMLConfig + PRIVATE_WORKING_DIRECTORY PROPERTIES TIMEOUT 600 - POST_EXEC_SCRIPT nopost.sh) + POST_EXEC_SCRIPT noerror.sh) atlas_add_test( TileTBCellMonitorAlgorithm_test SCRIPT python -m TileMonitoring.TileTBCellMonitorAlgorithm + PRIVATE_WORKING_DIRECTORY PROPERTIES TIMEOUT 600 - POST_EXEC_SCRIPT nopost.sh) + POST_EXEC_SCRIPT noerror.sh) atlas_add_test( RunTileTBMonitoring_test SCRIPT python -m TileMonitoring.RunTileTBMonitoring --use-sqlite '' --evtMax 3 + PRIVATE_WORKING_DIRECTORY PROPERTIES TIMEOUT 600 - POST_EXEC_SCRIPT nopost.sh) + POST_EXEC_SCRIPT noerror.sh) diff --git a/Tools/Campaigns/CMakeLists.txt b/Tools/Campaigns/CMakeLists.txt index 1be01b534f1b4a8e8dedf9db8bd61154b1a71762..6fcc91ff1cea7cfc73dbc9382c1f1ddfc8c405fc 100644 --- a/Tools/Campaigns/CMakeLists.txt +++ b/Tools/Campaigns/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration # Declare the package name: atlas_subdir( Campaigns ) @@ -6,3 +6,8 @@ atlas_subdir( Campaigns ) # Install files from the package: atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} ) + +# Declare tests +atlas_add_test( CampaignEnum + SCRIPT test/testCampaignEnum.py + POST_EXEC_SCRIPT nopost.sh ) diff --git a/Tools/Campaigns/python/MC23.py b/Tools/Campaigns/python/MC23.py index c0ae973732565d33cf6a9ceddac21becfb2473b4..fed79c621b1eda259bfaa6a219b239d7a7bcec7e 100644 --- a/Tools/Campaigns/python/MC23.py +++ b/Tools/Campaigns/python/MC23.py @@ -131,7 +131,7 @@ def MC23HeavyIons2023(flags): # pile-up flags.Digitization.PileUp = True flags.Digitization.DoXingByXingPileUp = True - flags.Digitization.PU.BunchStructureConfig = "RunDependentSimData.BunchStructureHeavyIon2022" + flags.Digitization.PU.BunchStructureConfig = 'RunDependentSimData.BunchStructureHeavyIon2022' flags.Digitization.PU.InitialBunchCrossing = 0 flags.Digitization.PU.FinalBunchCrossing = 0 flags.Digitization.PU.NumberOfCavern = 1 # We are using the Cavern Background input for the Hijing HITS-level events @@ -176,6 +176,37 @@ def MC23e(flags): flags.Digitization.PU.HighPtMinBiasInputColOffset = -1 +def MC23g(flags): + """MC23g flags for MC to match 2025 Run 3 data (initial pile-up estimate based on broadened 2024 data )""" + flags.Input.MCCampaign = Campaign.MC23g + + flags.Beam.NumberOfCollisions = 60. + + from LArConfiguration.LArConfigRun3 import LArConfigRun3PileUp + LArConfigRun3PileUp(flags) + + # radiation damage + from SimulationConfig.SimEnums import PixelRadiationDamageSimulationType + flags.Digitization.PixelPlanarRadiationDamageSimulationType = PixelRadiationDamageSimulationType.RamoPotential + + # pile-up + # These numbers are based upon a relative XS scaling of the high-pt slice + # of 64%, which leads to a relative high-pt / low-pt sampling of + # 0.001953314389 / 0.9980466856. Those numbers are then multiplied by 98.5 + # to follow pile-up profile. Only a relevant number of significant digits + # are kept. + flags.Digitization.PU.NumberOfLowPtMinBias = 98.308 + flags.Digitization.PU.NumberOfHighPtMinBias = 0.192 + # TODO new bunch structure? + flags.Digitization.PU.BunchStructureConfig = 'RunDependentSimData.BunchStructure_Fill7314_BCMSPattern_Flat' + # TODO: replace with the actual profile + flags.Digitization.PU.ProfileConfig = 'RunDependentSimData.PileUpProfile_run470000_MC23e_MultiBeamspot' + + if flags.Common.ProductionStep == ProductionStep.PileUpPresampling: + # ensure better randomisation of high-pt minbias events + flags.Digitization.PU.HighPtMinBiasInputColOffset = -1 + + def MC23ppReferenceRun2024(flags): # FIXME This configuration is a placeholder """MC23 flags for the 2024 5.36 TeV pp reference run""" flags.Input.MCCampaign = Campaign.MC23e @@ -193,7 +224,7 @@ def MC23ppReferenceRun2024(flags): # FIXME This configuration is a placeholder # pile-up flags.Digitization.PileUp = True flags.Digitization.DoXingByXingPileUp = True - flags.Digitization.PU.BunchStructureConfig = "RunDependentSimData.BunchStructureHeavyIon2022" # New file being prepared ATLGBLCONDTAGS-182 + flags.Digitization.PU.BunchStructureConfig = 'RunDependentSimData.BunchStructureHeavyIon2022' # New file being prepared ATLGBLCONDTAGS-182 flags.Digitization.PU.InitialBunchCrossing = 0 flags.Digitization.PU.FinalBunchCrossing = 0 flags.Digitization.PU.NumberOfCavern = 1 # We are using the Cavern Background input for the Hijing HITS-level events @@ -250,7 +281,7 @@ def MC23HeavyIons2024(flags): # FIXME This configuration is a placeholder # pile-up flags.Digitization.PileUp = True flags.Digitization.DoXingByXingPileUp = True - flags.Digitization.PU.BunchStructureConfig = "RunDependentSimData.BunchStructureHeavyIon2022" # New file being prepared ATLGBLCONDTAGS-182 + flags.Digitization.PU.BunchStructureConfig = 'RunDependentSimData.BunchStructureHeavyIon2022' # New file being prepared ATLGBLCONDTAGS-182 flags.Digitization.PU.InitialBunchCrossing = 0 flags.Digitization.PU.FinalBunchCrossing = 0 flags.Digitization.PU.NumberOfCavern = 1 # We are using the Cavern Background input for the Hijing HITS-level events @@ -295,6 +326,14 @@ def MC23eSingleBeamspot(flags): # override only pile-up profile flags.Digitization.PU.ProfileConfig = 'RunDependentSimData.PileUpProfile_run470000_MC23e_SingleBeamspot' +def MC23gSingleBeamspot(flags): + """MC23g flags for MC to match 2025 Run 3 data (initial pile-up profile estimate, single beamspot version)""" + MC23g(flags) + + # override only pile-up profile + # TODO: replace with the actual profile + flags.Digitization.PU.ProfileConfig = 'RunDependentSimData.PileUpProfile_run470000_MC23e_SingleBeamspot' + def MC23LowMu(flags): """MC23 flags for MC to match Run 3 data with low pile-up""" flags.Input.MCCampaign = Campaign.MC23a @@ -370,6 +409,22 @@ def MC23eNoPileUp(flags): flags.Digitization.PixelPlanarRadiationDamageSimulationType = PixelRadiationDamageSimulationType.RamoPotential +def MC23gNoPileUp(flags): + """MC23g flags for MC without pile-up""" + flags.Input.MCCampaign = Campaign.MC23g + + flags.Beam.NumberOfCollisions = 0. + # TODO: replace with the actual run number + flags.Input.ConditionsRunNumber = 470000 + + from LArConfiguration.LArConfigRun3 import LArConfigRun3NoPileUp + LArConfigRun3NoPileUp(flags) + + # radiation damage + from SimulationConfig.SimEnums import PixelRadiationDamageSimulationType + flags.Digitization.PixelPlanarRadiationDamageSimulationType = PixelRadiationDamageSimulationType.RamoPotential + + def MC23NoPileUpLowMuRun(flags): """MC23a flags for MC to match 2002 Low Mu data""" MC23NoPileUp(flags) @@ -421,6 +476,14 @@ def BeamspotSplitMC23e(): return substeps, event_fractions +def BeamspotSplitMC23g(): + """MC23g beamspot splitting configuration.""" + substeps = 4 + event_fractions = [0.22, 0.22, 0.22, 0.34] + + return substeps, event_fractions + + def MC23SimulationNoIoV(flags): """MC23 base flags for simulation without specifying conditions IoVs""" flags.Input.MCCampaign = Campaign.MC23a @@ -514,7 +577,7 @@ def MC23aSimulationMultipleIoV(flags): from RunDependentSimComps.PileUpUtils import generateRunAndLumiProfile generateRunAndLumiProfile(flags, - profile= 'RunDependentSimData.PileUpProfile_run410000_MC23a_MultiBeamspot') + profile='RunDependentSimData.PileUpProfile_run410000_MC23a_MultiBeamspot') def MC23cSimulationMultipleIoV(flags): @@ -526,7 +589,7 @@ def MC23cSimulationMultipleIoV(flags): from RunDependentSimComps.PileUpUtils import generateRunAndLumiProfile generateRunAndLumiProfile(flags, - profile= 'RunDependentSimData.PileUpProfile_run450000_MC23c_MultiBeamspot') + profile='RunDependentSimData.PileUpProfile_run450000_MC23c_MultiBeamspot') def MC23eSimulationMultipleIoV(flags): @@ -538,7 +601,20 @@ def MC23eSimulationMultipleIoV(flags): from RunDependentSimComps.PileUpUtils import generateRunAndLumiProfile generateRunAndLumiProfile(flags, - profile= 'RunDependentSimData.PileUpProfile_run470000_MC23e_MultiBeamspot') + profile='RunDependentSimData.PileUpProfile_run470000_MC23e_MultiBeamspot') + + +def MC23gSimulationMultipleIoV(flags): + """MC23 flags for simulation""" + MC23SimulationNoIoV(flags) + flags.Input.MCCampaign = Campaign.MC23g + + flags.Input.OverrideRunNumber = True + + from RunDependentSimComps.PileUpUtils import generateRunAndLumiProfile + # TODO: replace with the actual profile + generateRunAndLumiProfile(flags, + profile='RunDependentSimData.PileUpProfile_run470000_MC23e_MultiBeamspot') def MC23SimulationSingleIoVCalibrationHits(flags): @@ -571,3 +647,11 @@ def MC23eSimulationMultipleIoVCalibrationHits(flags): from SimuJobTransforms import CalHits, ParticleID CalHits(flags) ParticleID(flags) + + +def MC23gSimulationMultipleIoVCalibrationHits(flags): + """MC23g flags for simulation with CalibrationHits""" + MC23gSimulationMultipleIoV(flags) + from SimuJobTransforms import CalHits, ParticleID + CalHits(flags) + ParticleID(flags) diff --git a/Tools/Campaigns/python/Utils.py b/Tools/Campaigns/python/Utils.py index 5e8e1af561f2fd6803c757d11ab0cb67db19a1b5..2022a0fccc34a424b6802e4bb81f0a9709e2fbb8 100644 --- a/Tools/Campaigns/python/Utils.py +++ b/Tools/Campaigns/python/Utils.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.Enums import FlagEnum class Campaign(FlagEnum): Unknown = '' @@ -13,8 +13,19 @@ class Campaign(FlagEnum): MC23c = 'mc23c' MC23d = 'mc23d' MC23e = 'mc23e' + MC23g = 'mc23g' PhaseII = 'phaseII' + def __lt__(self, other): + if not isinstance(other, Campaign): + return NotImplemented + return self.value < other.value + + def __le__(self, other): + if not isinstance(other, Campaign): + return NotImplemented + return self.value <= other.value + # Campaign run numbers (only latest campaigns that do not have metadata present) campaign_runs = { 284500: Campaign.MC20a, @@ -39,7 +50,9 @@ def getMCCampaign(files): mc_campaign = campaign_runs.get(run_numbers[0], Campaign.Unknown) # MC-equivalent projects for data - if 'data24' in project_name: + if 'data25' in project_name: + return Campaign.MC23g + elif 'data24' in project_name: return Campaign.MC23e elif 'data23' in project_name: return Campaign.MC23c diff --git a/Tools/Campaigns/python/__init__.py b/Tools/Campaigns/python/__init__.py index 2a47127e2902f1cb880dc42027a6102d0a366ec7..2f040e3000537c19f356847158de5325eb875017 100644 --- a/Tools/Campaigns/python/__init__.py +++ b/Tools/Campaigns/python/__init__.py @@ -14,9 +14,12 @@ from .MC23 import (MC23a, MC23aSingleBeamspot, BeamspotSplitMC23a, MC23c, MC23cSingleBeamspot, BeamspotSplitMC23c, MC23cSimulationMultipleIoV, MC23cSimulationMultipleIoVCalibrationHits, MC23d, MC23dSingleBeamspot, BeamspotSplitMC23d, + MC23dSimulationLowMuLowB, MC23e, MC23eSingleBeamspot, BeamspotSplitMC23e, - MC23eSimulationMultipleIoV, MC23eSimulationMultipleIoVCalibrationHits, MC23dSimulationLowMuLowB, - MC23LowMu, MC23NoPileUp, MC23aNoPileUp, MC23dNoPileUp, MC23eNoPileUp, MC23NoPileUpLowMuRun, MC23NoPileUpLowMuLowB, + MC23eSimulationMultipleIoV, MC23eSimulationMultipleIoVCalibrationHits, + MC23g, MC23gSingleBeamspot, BeamspotSplitMC23g, + MC23gSimulationMultipleIoV, MC23gSimulationMultipleIoVCalibrationHits, + MC23LowMu, MC23NoPileUp, MC23aNoPileUp, MC23dNoPileUp, MC23eNoPileUp, MC23gNoPileUp, MC23NoPileUpLowMuRun, MC23NoPileUpLowMuLowB, MC23HeavyIons2023, MC23HeavyIons2023NoPileUp, MC23Simulation2023HeavyIonRun, MC23HeavyIons2024, MC23ppReferenceRun2024, MC23HeavyIons2024NoPileUp, MC23Simulation2024ppRefRun, MC23Simulation2024HeavyIonRun) from .PhaseII import (PhaseIIPileUp1, PhaseIIPileUp60, PhaseIIPileUp140, PhaseIIPileUp200, @@ -46,9 +49,12 @@ __all__ = [ 'MC23c', 'MC23cSingleBeamspot', 'BeamspotSplitMC23c', 'MC23cSimulationMultipleIoV', 'MC23cSimulationMultipleIoVCalibrationHits', 'MC23d', 'MC23dSingleBeamspot', 'BeamspotSplitMC23d', + 'MC23dSimulationLowMuLowB', 'MC23e', 'MC23eSingleBeamspot', 'BeamspotSplitMC23e', - 'MC23eSimulationMultipleIoV', 'MC23eSimulationMultipleIoVCalibrationHits', 'MC23dSimulationLowMuLowB', - 'MC23LowMu', 'MC23NoPileUp', 'MC23aNoPileUp', 'MC23dNoPileUp', 'MC23eNoPileUp', 'MC23NoPileUpLowMuRun', 'MC23NoPileUpLowMuLowB', + 'MC23eSimulationMultipleIoV', 'MC23eSimulationMultipleIoVCalibrationHits', + 'MC23g', 'MC23gSingleBeamspot', 'BeamspotSplitMC23g', + 'MC23gSimulationMultipleIoV', 'MC23gSimulationMultipleIoVCalibrationHits', + 'MC23LowMu', 'MC23NoPileUp', 'MC23aNoPileUp', 'MC23dNoPileUp', 'MC23eNoPileUp', 'MC23gNoPileUp', 'MC23NoPileUpLowMuRun', 'MC23NoPileUpLowMuLowB', 'MC23HeavyIons2023', 'MC23HeavyIons2023NoPileUp' , 'MC23Simulation2023HeavyIonRun', 'MC23HeavyIons2024', 'MC23ppReferenceRun2024' , 'MC23HeavyIons2024NoPileUp' , 'MC23Simulation2024ppRefRun', 'MC23Simulation2024HeavyIonRun', 'PhaseIIPileUp1', 'PhaseIIPileUp60', 'PhaseIIPileUp140', 'PhaseIIPileUp200', diff --git a/Tools/Campaigns/test/testCampaignEnum.py b/Tools/Campaigns/test/testCampaignEnum.py new file mode 100755 index 0000000000000000000000000000000000000000..f7b24214ddeb81884216e45d28e83087f8c1e596 --- /dev/null +++ b/Tools/Campaigns/test/testCampaignEnum.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python +# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration + +import unittest + +from Campaigns.Utils import Campaign + +class TestCampaignEnum(unittest.TestCase): + def test_strict_order(self): + # test transitive ordering + self.assertTrue(Campaign.Unknown < Campaign.MC16a) + self.assertTrue(Campaign.MC16a > Campaign.Unknown) + self.assertTrue(Campaign.MC16a < Campaign.MC16d) + self.assertTrue(Campaign.MC16d > Campaign.MC16a) + self.assertTrue(Campaign.MC16d < Campaign.MC16e) + self.assertTrue(Campaign.MC16e > Campaign.MC16d) + self.assertTrue(Campaign.MC16e < Campaign.MC20a) + self.assertTrue(Campaign.MC20a > Campaign.MC16e) + self.assertTrue(Campaign.MC20a < Campaign.MC20d) + self.assertTrue(Campaign.MC20d > Campaign.MC20a) + self.assertTrue(Campaign.MC20d < Campaign.MC20e) + self.assertTrue(Campaign.MC20e > Campaign.MC20d) + self.assertTrue(Campaign.MC20e < Campaign.MC21a) + self.assertTrue(Campaign.MC21a > Campaign.MC20e) + self.assertTrue(Campaign.MC21a < Campaign.MC23a) + self.assertTrue(Campaign.MC23a > Campaign.MC21a) + self.assertTrue(Campaign.MC23a < Campaign.MC23c) + self.assertTrue(Campaign.MC23c > Campaign.MC23a) + self.assertTrue(Campaign.MC23c < Campaign.MC23d) + self.assertTrue(Campaign.MC23d > Campaign.MC23c) + self.assertTrue(Campaign.MC23d < Campaign.MC23e) + self.assertTrue(Campaign.MC23e > Campaign.MC23d) + self.assertTrue(Campaign.MC23e < Campaign.MC23g) + self.assertTrue(Campaign.MC23g > Campaign.MC23e) + self.assertTrue(Campaign.MC23g < Campaign.PhaseII) + self.assertTrue(Campaign.PhaseII > Campaign.MC23g) + + # test some extremes + self.assertTrue(Campaign.Unknown < Campaign.PhaseII) + self.assertTrue(Campaign.PhaseII > Campaign.Unknown) + self.assertTrue(Campaign.MC20a < Campaign.MC23g) + self.assertTrue(Campaign.MC23g > Campaign.MC20a) + + def test_order(self): + # test transitive ordering + self.assertTrue(Campaign.Unknown <= Campaign.MC16a) + self.assertTrue(Campaign.MC16a >= Campaign.Unknown) + self.assertTrue(Campaign.MC16a <= Campaign.MC16d) + self.assertTrue(Campaign.MC16d >= Campaign.MC16a) + self.assertTrue(Campaign.MC16d <= Campaign.MC16e) + self.assertTrue(Campaign.MC16e >= Campaign.MC16d) + self.assertTrue(Campaign.MC16e <= Campaign.MC20a) + self.assertTrue(Campaign.MC20a >= Campaign.MC16e) + self.assertTrue(Campaign.MC20a <= Campaign.MC20d) + self.assertTrue(Campaign.MC20d >= Campaign.MC20a) + self.assertTrue(Campaign.MC20d <= Campaign.MC20e) + self.assertTrue(Campaign.MC20e >= Campaign.MC20d) + self.assertTrue(Campaign.MC20e <= Campaign.MC21a) + self.assertTrue(Campaign.MC21a >= Campaign.MC20e) + self.assertTrue(Campaign.MC21a <= Campaign.MC23a) + self.assertTrue(Campaign.MC23a >= Campaign.MC21a) + self.assertTrue(Campaign.MC23a <= Campaign.MC23c) + self.assertTrue(Campaign.MC23c >= Campaign.MC23a) + self.assertTrue(Campaign.MC23c <= Campaign.MC23d) + self.assertTrue(Campaign.MC23d >= Campaign.MC23c) + self.assertTrue(Campaign.MC23d <= Campaign.MC23e) + self.assertTrue(Campaign.MC23e >= Campaign.MC23d) + self.assertTrue(Campaign.MC23e <= Campaign.MC23g) + self.assertTrue(Campaign.MC23g >= Campaign.MC23e) + self.assertTrue(Campaign.MC23g <= Campaign.PhaseII) + self.assertTrue(Campaign.PhaseII >= Campaign.MC23g) + + # test some extremes + self.assertTrue(Campaign.Unknown <= Campaign.PhaseII) + self.assertTrue(Campaign.PhaseII >= Campaign.Unknown) + self.assertTrue(Campaign.MC20a <= Campaign.MC23g) + self.assertTrue(Campaign.MC23g >= Campaign.MC20a) + +if __name__ == "__main__": + unittest.main() diff --git a/Tools/GdbUtils/python/btload.py b/Tools/GdbUtils/python/btload.py index 0d7004c5f78f0c3276075dd77ae45b4da70b2c84..a1113248cb6b849d97fc655a96baec1f9fa91e69 100644 --- a/Tools/GdbUtils/python/btload.py +++ b/Tools/GdbUtils/python/btload.py @@ -11,6 +11,7 @@ from findlib import findlib def btload (limit = 100): + print ('foobar') retry = True last_iframe = -1 while retry: @@ -19,9 +20,10 @@ def btload (limit = 100): retry = False while frame and frame.is_valid() and iframe < limit: if frame.name() is None: - findlib (frame.pc()) - retry = True - break + lib = findlib (frame.pc()) + if lib and lib != 'libubsan.so' and lib != 'libasan.so': + retry = True + break if frame.name() == 'ApplicationMgr::executeRun': break if frame.name() == '_Py_UnixMain': diff --git a/Tools/GdbUtils/python/findlib.py b/Tools/GdbUtils/python/findlib.py index c4d98b45984ae9acbeabaedd878a977b1fcb5b2a..ffaa3e5c64aaf36b0b17a825e874c954d191e5f7 100644 --- a/Tools/GdbUtils/python/findlib.py +++ b/Tools/GdbUtils/python/findlib.py @@ -24,6 +24,7 @@ def findlib (addr, quiet = False): (lo,hi) = ll[0].split('-') lo = int(lo, 16) hi = int(hi, 16) + lib = None if lo <= addr < hi: if len(ll) >= 6 and ll[5] != '[heap]': lib = ll[5] @@ -36,7 +37,7 @@ def findlib (addr, quiet = False): else: print (lib) gdb.execute ("shared " + os.path.basename (lib)) - return + return lib class FindLib (gdb.Command): diff --git a/Tools/Tier0ChainTests/test/test_data18PHYSVAL_mp.sh b/Tools/Tier0ChainTests/test/test_data18PHYSVAL_mp.sh index a7532f9654c2df8ded4421f08d462026c122e925..3f6beb200148447fed6bd6a27915a44907b5fa81 100755 --- a/Tools/Tier0ChainTests/test/test_data18PHYSVAL_mp.sh +++ b/Tools/Tier0ChainTests/test/test_data18PHYSVAL_mp.sh @@ -11,7 +11,13 @@ set -e -Reco_tf.py --athenaopts='--nprocs=2' --athenaMPMergeTargetSize 'DAOD_*:0' --inputAODFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data18_13TeV.00357772.physics_Main.recon.AOD.r13286/AOD.27654050._000557.pool.root.1 --outputDAODFile art.pool.root --reductionConf PHYSVAL --maxEvents -1 --preExec 'from AthenaCommon.DetFlags import DetFlags; DetFlags.detdescr.all_setOff(); DetFlags.BField_setOn(); DetFlags.digitize.all_setOff(); DetFlags.detdescr.Calo_setOn(); DetFlags.simulate.all_setOff(); DetFlags.pileup.all_setOff(); DetFlags.overlay.all_setOff();' +Derivation_tf.py \ +--inputAODFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data18_13TeV.00357772.physics_Main.recon.AOD.r13286/AOD.27654050._000557.pool.root.1 \ +--outputDAODFile art.pool.root \ +--formats PHYSVAL \ +--maxEvents -1 \ +--sharedWriter True \ +--multiprocess True echo "art-result: $? reco" diff --git a/Tools/Tier0ChainTests/test/test_data18PHYSVAL_mt.sh b/Tools/Tier0ChainTests/test/test_data18PHYSVAL_mt.sh index d90893b76e47ac5f178bd68b62fb4efaeb5204ee..5dd4c755ed82e9d8c65f9552cc84ddaa2b5d55b0 100755 --- a/Tools/Tier0ChainTests/test/test_data18PHYSVAL_mt.sh +++ b/Tools/Tier0ChainTests/test/test_data18PHYSVAL_mt.sh @@ -1,5 +1,11 @@ #!/bin/sh +# Disable this test: Derivations are not expected to work with MT. +# At a minimum, the truth dressing tool and overlap removal need to +# be redesigned to avoid modifying the same decoration from different +# algorithms. +# art-include: main/Athena_disabled + # art-include: 21.2/AthDerivation # art-description: DAOD building PHYSVAL data18 MT (DISABLED) # art-type: grid @@ -11,7 +17,13 @@ set -e -Reco_tf.py --athenaopts='--threads=1' --inputAODFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data18_13TeV.00357772.physics_Main.recon.AOD.r13286/AOD.27654050._000557.pool.root.1 --outputDAODFile art.pool.root --reductionConf PHYSVAL --maxEvents -1 --preExec 'from AthenaCommon.DetFlags import DetFlags; DetFlags.detdescr.all_setOff(); DetFlags.BField_setOn(); DetFlags.digitize.all_setOff(); DetFlags.detdescr.Calo_setOn(); DetFlags.simulate.all_setOff(); DetFlags.pileup.all_setOff(); DetFlags.overlay.all_setOff();' +ATHENA_CORE_NUMBER=1 +Derivation_tf.py \ + --multithreaded \ + --inputAODFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data18_13TeV.00357772.physics_Main.recon.AOD.r13286/AOD.27654050._000557.pool.root.1 \ + --outputDAODFile art.pool.root \ + --formats PHYSVAL \ + --maxEvents -1 echo "art-result: $? reco" diff --git a/Tools/Tier0ChainTests/test/test_data18PHYSVAL_serial.sh b/Tools/Tier0ChainTests/test/test_data18PHYSVAL_serial.sh index cc6eaebf09609f424c08adb7fe3958b4e009792f..be3ccbfb6bd5e4979bfe6774a9a59f05353e7af5 100755 --- a/Tools/Tier0ChainTests/test/test_data18PHYSVAL_serial.sh +++ b/Tools/Tier0ChainTests/test/test_data18PHYSVAL_serial.sh @@ -10,7 +10,11 @@ set -e -Reco_tf.py --inputAODFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data18_13TeV.00357772.physics_Main.recon.AOD.r13286/AOD.27654050._000557.pool.root.1 --outputDAODFile art.pool.root --reductionConf PHYSVAL --maxEvents -1 --preExec 'from AthenaCommon.DetFlags import DetFlags; DetFlags.detdescr.all_setOff(); DetFlags.BField_setOn(); DetFlags.digitize.all_setOff(); DetFlags.detdescr.Calo_setOn(); DetFlags.simulate.all_setOff(); DetFlags.pileup.all_setOff(); DetFlags.overlay.all_setOff();' +Derivation_tf.py \ +--inputAODFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/data18_13TeV.00357772.physics_Main.recon.AOD.r13286/AOD.27654050._000557.pool.root.1 \ +--outputDAODFile art.pool.root \ +--formats PHYSVAL \ +--maxEvents -1 echo "art-result: $? reco" diff --git a/Tools/Tier0ChainTests/test/test_mc20PHYSVAL_mp.sh b/Tools/Tier0ChainTests/test/test_mc20PHYSVAL_mp.sh index 444973023e7f9988019a85d460d4d94f003a02db..2b5219d2b083d6b23dd936149083dc92be09a7fb 100755 --- a/Tools/Tier0ChainTests/test/test_mc20PHYSVAL_mp.sh +++ b/Tools/Tier0ChainTests/test/test_mc20PHYSVAL_mp.sh @@ -18,7 +18,7 @@ Derivation_tf.py \ --formats PHYSVAL \ --maxEvents -1 \ --sharedWriter True \ ---multiprocess True \ +--multiprocess True echo "art-result: $? reco" diff --git a/Tools/Tier0ChainTests/test/test_mc20PHYSVAL_mt.sh b/Tools/Tier0ChainTests/test/test_mc20PHYSVAL_mt.sh index 1fd38eef47b7553acc0f3fe8be91da903c50f775..8bf4d3dfc683785986a262177deb99cf2b6959ee 100755 --- a/Tools/Tier0ChainTests/test/test_mc20PHYSVAL_mt.sh +++ b/Tools/Tier0ChainTests/test/test_mc20PHYSVAL_mt.sh @@ -1,5 +1,11 @@ #!/bin/sh +# Disable this test: Derivations are not expected to work with MT. +# At a minimum, the truth dressing tool and overlap removal need to +# be redesigned to avoid modifying the same decoration from different +# algorithms. +# art-include: main/Athena_disabled + # art-description: DAOD building PHYSVAL mc20 MT # art-type: grid # art-output: *.pool.root @@ -10,7 +16,13 @@ set -e -Reco_tf.py --athenaopts='--threads=1' --inputAODFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/mc20_13TeV.361107.PowhegPythia8EvtGen_AZNLOCTEQ6L1_Zmumu.recon.AOD.e3601_s3681_r13167/AOD.27312826._000061.pool.root.1 --outputDAODFile art.pool.root --reductionConf PHYSVAL --maxEvents -1 --preExec 'from AthenaCommon.DetFlags import DetFlags; DetFlags.detdescr.all_setOff(); DetFlags.BField_setOn(); DetFlags.digitize.all_setOff(); DetFlags.detdescr.Calo_setOn(); DetFlags.simulate.all_setOff(); DetFlags.pileup.all_setOff(); DetFlags.overlay.all_setOff();' +ATHENA_CORE_NUMBER=1 +Derivation_tf.py \ + --multithreaded \ + --inputAODFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/Tier0ChainTests/mc20_13TeV.361107.PowhegPythia8EvtGen_AZNLOCTEQ6L1_Zmumu.recon.AOD.e3601_s3681_r13167/AOD.27312826._000061.pool.root.1 \ + --outputDAODFile art.pool.root \ + --formats PHYSVAL \ + --maxEvents -1 echo "art-result: $? reco" diff --git a/Tools/Tier0ChainTests/test/test_mc20PHYSVAL_serial.sh b/Tools/Tier0ChainTests/test/test_mc20PHYSVAL_serial.sh index 501efb07fb4f9a8debc0b09c1772d37825a6a4b7..b73b78604d76a6e04d5e6204df9eed36b2da3269 100755 --- a/Tools/Tier0ChainTests/test/test_mc20PHYSVAL_serial.sh +++ b/Tools/Tier0ChainTests/test/test_mc20PHYSVAL_serial.sh @@ -14,7 +14,7 @@ set -e Derivation_tf.py \ --inputAODFile /cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/CampaignInputs/mc20/AOD/mc20_13TeV.410470.PhPy8EG_A14_ttbar_hdamp258p75_nonallhad.recon.AOD.e6337_s3681_r13145/1000events.AOD.27121237._002005.pool.root.1 \ --outputDAODFile art.pool.root \ ---format PHYSVAL \ +--formats PHYSVAL \ --maxEvents -1 echo "art-result: $? reco" diff --git a/Tracking/TrkConfig/python/TrkConfigFlags.py b/Tracking/TrkConfig/python/TrkConfigFlags.py index 15af73f357636af2dd8bb958570cb93423327f7b..9d046927a88a339b3ee8cadb8bcf2fc6ced2af0d 100644 --- a/Tracking/TrkConfig/python/TrkConfigFlags.py +++ b/Tracking/TrkConfig/python/TrkConfigFlags.py @@ -1,8 +1,10 @@ -# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.AthConfigFlags import AthConfigFlags from AthenaConfiguration.Enums import BeamType, LHCPeriod, FlagEnum,HIMode import AthenaCommon.SystemOfUnits as Units +from Campaigns.Utils import Campaign + class PrimaryPassConfig(FlagEnum): VtxLumi = 'VtxLumi' @@ -315,8 +317,8 @@ def createTrackingConfigFlags(): # Disabled for data-taking up to 2024 included and MC campaigns up to MC23e included icf.addFlag("Tracking.TRTStandalone.startAtOriginalPerigee", lambda prevFlags: ( - (not prevFlags.Input.isMC and prevFlags.Input.DataYear>2024) or - (prevFlags.Input.isMC and prevFlags.Input.RunNumbers[0]>=491000) ) ) + (not prevFlags.Input.isMC and prevFlags.Input.DataYear >= 2025) or + (prevFlags.Input.isMC and prevFlags.Input.MCCampaign >= Campaign.MC23g))) # Turn on InDetRecStatistics icf.addFlag("Tracking.doStats", False) diff --git a/Tracking/TrkEventCnv/TrkJiveXML/TrkJiveXML/SegmentRetriever.h b/Tracking/TrkEventCnv/TrkJiveXML/TrkJiveXML/SegmentRetriever.h index e3058c5b5047059dd9c4ad83110826dee4ff1f3f..9fe10b451f031168dcf1ef1bc45a12caf1b20b06 100644 --- a/Tracking/TrkEventCnv/TrkJiveXML/TrkJiveXML/SegmentRetriever.h +++ b/Tracking/TrkEventCnv/TrkJiveXML/TrkJiveXML/SegmentRetriever.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration */ #ifndef JIVEXML_SEGMENTRETRIEVER_H @@ -40,7 +40,7 @@ namespace JiveXML { private: ///The data type that is generated by this retriever - const std::string m_typeName; + const std::string m_typeName = "Segment"; }; } diff --git a/Tracking/TrkEventCnv/TrkJiveXML/TrkJiveXML/TrackRetriever.h b/Tracking/TrkEventCnv/TrkJiveXML/TrkJiveXML/TrackRetriever.h index f4653a4d8680a250f0f9a7f2c41657122aff295a..3d93201e0b681816283467cc5871a5e2c0bb202e 100644 --- a/Tracking/TrkEventCnv/TrkJiveXML/TrkJiveXML/TrackRetriever.h +++ b/Tracking/TrkEventCnv/TrkJiveXML/TrkJiveXML/TrackRetriever.h @@ -1,15 +1,19 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration */ #ifndef JIVEXML_TRACKRETRIEVER_H #define JIVEXML_TRACKRETRIEVER_H +#include "GaudiKernel/ToolHandle.h" +#include "StoreGate/ReadCondHandleKey.h" #include "JiveXML/IDataRetriever.h" #include "AthenaBaseComps/AthAlgTool.h" #include "GaudiKernel/ToolHandle.h" #include "TrkToolInterfaces/ITrackSummaryTool.h" #include "TrkToolInterfaces/IResidualPullCalculator.h" +#include "TrkTrack/TrackCollection.h" +#include "TrkTruthData/TrackTruthCollection.h" //Forward declarations class AtlasDetectorID; @@ -27,8 +31,8 @@ namespace JiveXML{ * - <em> DoWriteHLT</em><tt> = False </tt>: @copydoc m_doWriteHLT * - <em> DoWriteResiduals </em><tt> = True </tt>: @copydoc m_doWriteResiduals * - <em> ResidualPullCalculator</em><tt> = PublicToolHandle('Trk::ResidualPullCalculator/ResidualPullCalculator')</tt>: @copydoc m_residualPullCalculator - * - <em> DoHitsSorting</em><tt> = True </tt>: @copydoc m_doHitsSorting - * - <em> DoHitsDetails</em><tt> = True </tt>: @copydoc m_doHitsDetails + * - <em> DoHitsSorting</em><tt> = True </tt>: @copydoc m_doHitsSorting + * - <em> DoHitsDetails</em><tt> = True </tt>: @copydoc m_doHitsDetails * * - @b Retrieved @b Data * - @e id : internal track ID counter @@ -38,11 +42,11 @@ namespace JiveXML{ * - @e barcode : associated truth track barcode * - @e numHits : number of hits associated to that track * - @e covMatrix : entries of the covariance matrix - * - @e pt : transverse momentum - * - @e d0 : transverse impact parameter - * - @e z0 : longitudinal impact parameter - * - @e phi0 : initial phi direction at vertex - * - @e cotTheta : initial @f$\cos(\theta)@f$ at vertex + * - @e pt : transverse momentum + * - @e d0 : transverse impact parameter + * - @e z0 : longitudinal impact parameter + * - @e phi0 : initial phi direction at vertex + * - @e cotTheta : initial @f$\cos(\theta)@f$ at vertex * - @e numPolyline : number of polyline points * - <em> polylineX, polylineY, polylineZ </em>: polyline coordinates * - @e numTsos : number of associated hits (Track State on Surface) @@ -57,50 +61,42 @@ namespace JiveXML{ */ class TrackRetriever : virtual public IDataRetriever, - public AthAlgTool { - - public: - - /// Standard Constructor - TrackRetriever(const std::string& type,const std::string& name,const IInterface* parent); - - /// Retrieve all the data - virtual StatusCode retrieve(ToolHandle<IFormatTool> &FormatTool); - - /// Return the name of the data type - virtual std::string dataTypeName() const { return m_typeName; }; - - ///Default AthAlgTool methods - StatusCode initialize(); - - private: - ///The data type that is generated by this retriever - const std::string m_typeName; - - //@name Property members - //@{ - /// First track collections to retrieve, shown as default in Atlantis - std::string m_PriorityTrackCollection; - /// Track collections to retrieve in the sequence they are given, all if empty - std::vector<std::string> m_OtherTrackCollections; - /// Track collection from which to retrieve the truth associations for - /// the priority track collection - std::string m_TrackTruthCollection; - /// Whether to write HLTAutoKey objects - bool m_doWriteHLT; - /// Whether to write TrackResiduals - bool m_doWriteResiduals; - /// Whether to perform hits (TSoS) sorting - bool m_doHitsSorting; - /// Whether to write hits (TSoS) details - bool m_doHitsDetails; - /// ToolHandle to ResidualPullCaclulator tool - ToolHandle<Trk::IResidualPullCalculator> m_residualPullCalculator; - /// Used to find out the corresponding sub-det from ROT->identify(). - const AtlasDetectorID* m_idHelper; - /// TrackSummaryTool for number of Pix/SCT/TRT hits - ToolHandle< Trk::ITrackSummaryTool > m_trackSumTool; //!< Pointer to Trk::ITrackSummaryTool - //@} + public AthAlgTool { + + public: + + /// Standard Constructor + TrackRetriever(const std::string& type,const std::string& name,const IInterface* parent); + + virtual StatusCode retrieve(ToolHandle<IFormatTool> &FormatTool); + /// Puts the variables into a DataMap + const DataMap getData(const TrackCollection* trackCollection, const std::string &collectionName); + /// Gets the StoreGate keys for the desired containers + const std::vector<std::string> getKeys(); + /// Return the name of the data type that is generated by this retriever + virtual std::string dataTypeName() const { return m_typeName; }; + + ///Default AthAlgTool methods + StatusCode initialize(); + + private: + ///The data type that is generated by this retriever + const std::string m_typeName = "Track"; + + Gaudi::Property<std::string> m_priorityKey {this,"PriorityTrackCollection","CombinedInDetTracks", "First track collections to retrieve, shown as default in Atlantis"}; + Gaudi::Property<std::vector<std::string>> m_otherKeys {this, "OtherTrackCollections", {}, "Track collections to retrieve, all if empty"}; + Gaudi::Property<bool> m_doWriteHLT {this, "DoWriteHLT", false, "Write out other collections that have HLT in the name"}; + Gaudi::Property<bool> m_doWriteAllCollections {this, "DoWriteAllCollections", false, "Write out all Track collections"}; + Gaudi::Property<std::string> m_TrackTruthCollection {this, "TrackTruthColName", "TrackTruthCollection", "Track collection from which to retrieve the truth associations for the priority track collection"}; + Gaudi::Property<bool> m_doWriteResiduals {this,"DoWriteResiduals", true,"Whether to write TrackResiduals"}; + Gaudi::Property<bool> m_doHitsSorting {this, "DoHitsSorting", false, "Whether to perform hits TrackStateOnSurfaces (TSoS) sorting"}; + Gaudi::Property<bool> m_doHitsDetails {this, "DoHitsDetails", true, "Whether to write hits TrackStateOnSurfaces (TSoS) details"}; + + ToolHandle<Trk::IResidualPullCalculator> m_residualPullCalculator {this, "ResidualPullCalculator","Trk::ResidualPullCalculator/ResidualPullCalculator", "ToolHandle to ResidualPullCaclulator" }; + ToolHandle< Trk::ITrackSummaryTool > m_trackSumTool{this, "TrackSummaryTool", "Trk::TrackSummaryTool/InDetTrackSummaryTool", "Track Summary Tool for number of Pix/SCT/TRT hits"}; + + /// Used to find out the corresponding sub-det from ROT->identify(). + const AtlasDetectorID* m_idHelper{}; }; diff --git a/Tracking/TrkEventCnv/TrkJiveXML/src/SegmentRetriever.cxx b/Tracking/TrkEventCnv/TrkJiveXML/src/SegmentRetriever.cxx index 36ebdc6b0560ca01e53a86600405efb55f4b8f6c..2fd64e483242d287a818d460b4e9548fa677021d 100644 --- a/Tracking/TrkEventCnv/TrkJiveXML/src/SegmentRetriever.cxx +++ b/Tracking/TrkEventCnv/TrkJiveXML/src/SegmentRetriever.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration */ #include "TrkJiveXML/SegmentRetriever.h" @@ -20,12 +20,7 @@ namespace JiveXML { * @param parent AlgTools parent owning this tool **/ SegmentRetriever::SegmentRetriever(const std::string& type,const std::string& name,const IInterface* parent): - AthAlgTool(type,name,parent), - m_typeName("Segment"){ - - //Only declare the interface - declareInterface<IDataRetriever>(this); - } + AthAlgTool(type,name,parent){} /** * For each segement collections retrieve all data @@ -36,98 +31,94 @@ namespace JiveXML { */ StatusCode SegmentRetriever::retrieve(ToolHandle<IFormatTool> &FormatTool) { - //be verbose - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Retrieving " << dataTypeName() <<endmsg; - - //Get an iterator over all segement collections - SG::ConstIterator<Trk::SegmentCollection> CollectionItr, CollectionsEnd; - if ((evtStore()->retrieve(CollectionItr, CollectionsEnd)).isFailure()){ - if (msgLvl(MSG::ERROR)) msg(MSG::ERROR) << "Unable to retrieve iterator for Segment collection" << endmsg; - return StatusCode::RECOVERABLE; - } - - //Loop over segment collections - for (; CollectionItr!=CollectionsEnd; ++CollectionItr) { - - //Get number of segments in this collection - Trk::SegmentCollection::size_type NSegs=(*CollectionItr).size(); - - //Define the data vectors we want to fill and create space - DataVect x; x.reserve(NSegs); - DataVect y; y.reserve(NSegs); - DataVect z; z.reserve(NSegs); - DataVect phi; phi.reserve(NSegs); - DataVect theta; theta.reserve(NSegs); - DataVect numHits; numHits.reserve(NSegs); - DataVect hits; + ATH_MSG_DEBUG("Retrieving " << dataTypeName()); + + std::vector< std::string > keys; + evtStore()->keys< Trk::SegmentCollection >( keys ); + + for( const std::string& key : keys ) { + SG::ReadHandle<Trk::SegmentCollection > cont(key); + if (cont.isValid()) { + + //Get number of segments in this collection + Trk::SegmentCollection::size_type NSegs=cont.cptr()->size(); + + //Define the data vectors we want to fill and create space + DataVect x; x.reserve(NSegs); + DataVect y; y.reserve(NSegs); + DataVect z; z.reserve(NSegs); + DataVect phi; phi.reserve(NSegs); + DataVect theta; theta.reserve(NSegs); + DataVect numHits; numHits.reserve(NSegs); + DataVect hits; - //Loop over the segments - Trk::SegmentCollection::const_iterator SegmentItr; - for (SegmentItr=(*CollectionItr).begin(); SegmentItr!=(*CollectionItr).end(); ++SegmentItr) { + //Loop over the segments + Trk::SegmentCollection::const_iterator SegmentItr; + for (SegmentItr=cont.cptr()->begin(); SegmentItr!=cont.cptr()->end(); ++SegmentItr) { - //Retrive primite variabels - x.emplace_back((*SegmentItr)->globalPosition().x()/10.); - y.emplace_back((*SegmentItr)->globalPosition().y()/10.); - z.emplace_back((*SegmentItr)->globalPosition().z()/10.); - phi.emplace_back((*SegmentItr)->localParameters()[Trk::phi]); - theta.emplace_back((*SegmentItr)->localParameters()[Trk::theta]); - - //Count number of valid (non-null) RIO_OnTracks - int NRoTs = 0; - //Reserve space for expected number - hits.reserve(hits.size()+(*SegmentItr)->containedMeasurements().size()); - - //Loop over segment measurments - std::vector< const Trk::MeasurementBase * >::const_iterator measItr, measEnd; - measItr=(*SegmentItr)->containedMeasurements().begin(); - measEnd=(*SegmentItr)->containedMeasurements().end(); - - //Now loop over measurements - for (; measItr!=measEnd; ++measItr) { + //Retrive primite variabels + x.emplace_back((*SegmentItr)->globalPosition().x()/10.); + y.emplace_back((*SegmentItr)->globalPosition().y()/10.); + z.emplace_back((*SegmentItr)->globalPosition().z()/10.); + phi.emplace_back((*SegmentItr)->localParameters()[Trk::phi]); + theta.emplace_back((*SegmentItr)->localParameters()[Trk::theta]); + + //Count number of valid (non-null) RIO_OnTracks + int NRoTs = 0; + //Reserve space for expected number + hits.reserve(hits.size()+(*SegmentItr)->containedMeasurements().size()); + + //Loop over segment measurments + std::vector< const Trk::MeasurementBase * >::const_iterator measItr, measEnd; + measItr=(*SegmentItr)->containedMeasurements().begin(); + measEnd=(*SegmentItr)->containedMeasurements().end(); + + //Now loop over measurements + for (; measItr!=measEnd; ++measItr) { - //dynamic_cast to RIO_OnTrack - will return NULL if not a RIO_OnTrack object - const Trk::RIO_OnTrack *RoT = dynamic_cast<const Trk::RIO_OnTrack*>(*measItr); - - //Ignore failed dynamic_casts - if (!RoT) continue ; - - //Add the hit - hits.emplace_back(RoT->identify().get_compact() ); - //count as valid - NRoTs++; - } - - //Store number of hits for this segement - numHits.emplace_back(NRoTs); - } - - //Add data to our map - DataMap DataMap; - DataMap["x"] = x; - DataMap["y"] = y; - DataMap["z"] = z; - DataMap["phi"] = phi; - DataMap["theta"] = theta; - DataMap["numHits"] = numHits; - - //Hits are stored as multiple with average size given in XML header - if (NSegs > 0) { - std::string multiple = "hits multiple=\"" + DataType( hits.size()*1./numHits.size()).toString() + "\""; - DataMap[multiple] = hits; - } + //dynamic_cast to RIO_OnTrack - will return NULL if not a RIO_OnTrack object + const Trk::RIO_OnTrack *RoT = dynamic_cast<const Trk::RIO_OnTrack*>(*measItr); + + //Ignore failed dynamic_casts + if (!RoT) continue ; + + //Add the hit + hits.emplace_back(RoT->identify().get_compact() ); + //count as valid + NRoTs++; + } + + //Store number of hits for this segement + numHits.emplace_back(NRoTs); + } + + //Add data to our map + DataMap DataMap; + DataMap["x"] = x; + DataMap["y"] = y; + DataMap["z"] = z; + DataMap["phi"] = phi; + DataMap["theta"] = theta; + DataMap["numHits"] = numHits; + + //Hits are stored as multiple with average size given in XML header + if (NSegs > 0) { + std::string multiple = "hits multiple=\"" + DataType( hits.size()*1./numHits.size()).toString() + "\""; + DataMap[multiple] = hits; + } - //forward data to formating tool - if ( FormatTool->AddToEvent(dataTypeName(), CollectionItr.key(), &DataMap).isFailure()) - return StatusCode::RECOVERABLE; + //forward data to formating tool + if ( FormatTool->AddToEvent(dataTypeName(), key, &DataMap).isFailure()) + return StatusCode::RECOVERABLE; - //Be verbose - if (msgLvl(MSG::DEBUG)) { - msg(MSG::DEBUG) << dataTypeName() << " collection " << CollectionItr.key(); - msg(MSG::DEBUG) << " retrieved with " << NSegs << " entries"<< endmsg; + ATH_MSG_DEBUG(dataTypeName() << " collection " << key << " retrieved with " << NSegs << " entries"); + } - - }//Loop over segment collections - + else{ + ATH_MSG_WARNING("Collection " << key << " not found in SG "); + } + } + //All collections retrieved - done return StatusCode::SUCCESS; diff --git a/Tracking/TrkEventCnv/TrkJiveXML/src/TrackRetriever.cxx b/Tracking/TrkEventCnv/TrkJiveXML/src/TrackRetriever.cxx index 25379de26c8085c5eef440226f9087b3fb1ed271..01c31dbfd08fbf554fc1c6a0fad0bc3cb2ef02bf 100644 --- a/Tracking/TrkEventCnv/TrkJiveXML/src/TrackRetriever.cxx +++ b/Tracking/TrkEventCnv/TrkJiveXML/src/TrackRetriever.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration */ #include "TrkJiveXML/TrackRetriever.h" @@ -8,7 +8,6 @@ #include "TrkTrack/Track.h" #include "TrkTrack/TrackInfo.h" -#include "TrkTrack/TrackCollection.h" #include "TrkTrackSummary/TrackSummary.h" #include "TrkToolInterfaces/ITrackSummaryTool.h" @@ -17,7 +16,6 @@ #include "TrkEventPrimitives/FitQuality.h" #include "TrkEventPrimitives/TrackStateDefs.h" #include "TrkEventPrimitives/JacobianThetaPToCotThetaPt.h" -#include "TrkTruthData/TrackTruthCollection.h" #include "TrkTruthData/TrackTruthKey.h" #include "TrkEventUtils/TrackStateOnSurfaceComparisonFunction.h" #include "AthLinks/ElementLink.h" @@ -41,670 +39,616 @@ namespace JiveXML { ///Namespace for all helper functions namespace TrackRetrieverHelpers { - /** - * Obtain the perigee paramets for a given track, if available, and fill - * them in the corresponding data vectors. Perigee parameters are written - * out in the old format using @f$ \cot\theta @f$ and @f$ q/p_T @f$ - * @return the perigee parameter object for further use - */ - const Trk::Perigee* getPerigeeParameters( const Trk::Track* track, - DataVect& pt, DataVect& d0, DataVect& z0, DataVect& phi0, - DataVect& cotTheta, DataVect& covMatrix){ - - /** - * Get perigee parameters in old format (@f$ d_0 @f$, @f$ z_0 @f$, @f$ \phi @f$, @f$ \cot\theta @f$, @f$ q/p_T @f$), - * whereas tracking uses (@f$ d_0 @f$, @f$ z_0 @f$, @f$ \phi @f$, @f$ \theta @f$, q/p), - * therefore a transformation of the covariance matrix is needed - */ - const Trk::Perigee *perigee = track->perigeeParameters(); - - //return immediately if there is no perigee information - if (! perigee) return nullptr ; - - //write out p_T - if ((perigee->parameters())[Trk::qOverP]==0) pt.emplace_back(9999.); - else pt.push_back( (perigee->charge() > 0) ? DataType(perigee->pT()/Gaudi::Units::GeV) : DataType((-perigee->pT())/Gaudi::Units::GeV)); - - d0.emplace_back((perigee->parameters())[Trk::d0]/Gaudi::Units::cm); - z0.emplace_back(perigee->parameters()[Trk::z0]/Gaudi::Units::cm); - phi0.emplace_back(perigee->parameters()[Trk::phi0]); - - if (perigee->parameters()[Trk::theta] == 0.) cotTheta.emplace_back(9999.); - else cotTheta.emplace_back(1./tan(perigee->parameters()[Trk::theta])); - - // CLHEP->Eigen migration. jpt Dec'13 - // https://twiki.cern.ch/twiki/bin/viewauth/Atlas/MigrationCLHEPtoEigen - // https://twiki.cern.ch/twiki/bin/viewauth/Atlas/MigrationToUpdatedEDM#Changes_to_TrkParameters - - /// get transformed covariance matrix - AmgSymMatrix(5) covVert; - - const AmgSymMatrix(5)* covariance = perigee->covariance(); //perigee cannot be null here - if (perigee && covariance) { - // do trafo to old format - double measuredTheta = perigee->parameters()[Trk::theta]; - double measuredQoverp = perigee->parameters()[Trk::qOverP]; - const Trk::JacobianThetaPToCotThetaPt theJac( measuredTheta, measuredQoverp ); - covVert = covariance->similarity(theJac); - }else{ - for ( int ii=0; ii<20; ii++){ // placeholder. Do this nicer. - covVert(ii) = 0.; - } - } - //Scale covariance matrix values to get good resolution with fixed - //precision in JiveXML data - - const long scale = 10000; - const double thisScale(scale/100.); - // Migration: Now only has diagonal elements from covariance matrix ? - covMatrix.emplace_back(covVert(0)*thisScale); // 5 elements - covMatrix.emplace_back(covVert(1)*thisScale); - covMatrix.emplace_back(covVert(2)*thisScale); - covMatrix.emplace_back(covVert(3)*thisScale); - covMatrix.emplace_back(covVert(4)*thisScale); - - // Used to be 15 elements before migration, so need to put 10 placeholders - for ( int i=0; i<10; i++){ - covMatrix.emplace_back( 0. ); - } - - //All for perigee, return object for use by other functions - return perigee ; - } - - /** - * Get a list of track-State on Surfaces for measurement and - * outlier hits, sorted using the perigee comparison functions - * @return a std::vector of Trk::TrackStateOnSurface* - */ - std::vector<const Trk::TrackStateOnSurface*> getTrackStateOnSurfaces( const Trk::Track* track, const Trk::Perigee* perigee, bool doHitsSorting){ - // vector for the return object - std::vector<const Trk::TrackStateOnSurface*> TSoSVec; - - // loop over TrackStateOnSurfaces to extract interesting ones - Trk::TrackStates::const_iterator tsos = track->trackStateOnSurfaces()->begin(); - for (; tsos!=track->trackStateOnSurfaces()->end(); ++tsos) { - // include measurements AND outliers: - if ((*tsos)->type(Trk::TrackStateOnSurface::Measurement) || (*tsos)->type(Trk::TrackStateOnSurface::Outlier) ) { - // add to temp vector - TSoSVec.push_back(*tsos); - } // end if TSoS is measurement or outlier - } // end loop over TSoS - - // sort the selected TSoS, if not already sorted using a comparison functor - - if (perigee) { - //Get hold of the comparison functor - Trk::TrackStateOnSurfaceComparisonFunction *compFunc - = new Trk::TrackStateOnSurfaceComparisonFunction(perigee->position(), perigee->momentum(\ - )); - if (compFunc){ - if (doHitsSorting) { - //Sort track state on surface if needed - if (TSoSVec.size() > 2 && !is_sorted(TSoSVec.begin(), TSoSVec.end(), *compFunc)) - std::sort(TSoSVec.begin(), TSoSVec.end(), *compFunc); - } - } - delete compFunc; - } // end if compFunc - - //Now return that vector - return TSoSVec; - } - - /** - * Get polyline hits if available. Polyline tracks that have less than 2 points are not useful - skip - */ - void getPolylineFromHits( const std::vector<const Trk::TrackStateOnSurface*>& TSoSVec, - DataVect& polylineX, DataVect& polylineY, DataVect& polylineZ, DataVect& numPolyline){ - int numPoly = 0 ; - if (TSoSVec.size() > 1) { - //Loop over track state on surfaces - std::vector<const Trk::TrackStateOnSurface*>::const_iterator tsosIter; - const double onetenth(0.1); - for (tsosIter=TSoSVec.begin(); tsosIter!=TSoSVec.end(); ++tsosIter) { - // get global track position - if (!(*tsosIter)->trackParameters()) continue ; - const Amg::Vector3D& pos = (*tsosIter)->trackParameters()->position(); - polylineX.emplace_back(pos.x()*onetenth); - polylineY.emplace_back(pos.y()*onetenth); - polylineZ.emplace_back(pos.z()*onetenth); - ++numPoly; - } - } - //Store counter as well - numPolyline.emplace_back(numPoly); - } - - - /** - * Retrieve all the basic hit information from the Trk::TrackStateOnSurface - * @return the reconstruction input object (RIO) for further use - */ - const Trk::RIO_OnTrack* getBaseInfoFromHit( const Trk::TrackStateOnSurface* tsos, const AtlasDetectorID* idHelper, - DataVect& isOutlier, DataVect& hits, DataVect& driftSign, DataVect& tsosDetType){ - - //Get corresponding measurement - const Trk::MeasurementBase *measurement = tsos->measurementOnTrack(); - - //If measurement is invalid, return imediately - if ( ! measurement ) return nullptr ; - - // get RIO_OnTrack - const Trk::RIO_OnTrack* rot = dynamic_cast<const Trk::RIO_OnTrack*>(measurement); - - // check for competing RIO_OnTracks - if (!rot) { - // try to get identifier by CompetingROT: - const Trk::CompetingRIOsOnTrack* comprot = dynamic_cast<const Trk::CompetingRIOsOnTrack*>(measurement); - //Get the input object with highest probability - if (comprot) rot = &(comprot->rioOnTrack(comprot->indexOfMaxAssignProb())); - } - - //If there is still no RIO_onTrack, return Null - if (!rot) return nullptr ; - - // Now start writing out values: - // Check if this is an outlier hit - isOutlier.emplace_back(tsos->type(Trk::TrackStateOnSurface::Outlier)); - - //Now try to get the identifier, create an empty invalid one if no rot - Identifier hitId (rot->identify()); - //Check if it is valid, othwerise store 0 - hits.push_back( hitId.is_valid()?DataType( hitId.get_compact() ):DataType(0) ); - - // get sign of drift radius for TRT measurements - int theDriftSign = 0; - if (idHelper->is_trt(hitId)) { - // get local parameters - theDriftSign = measurement->localParameters()[Trk::driftRadius] > 0. ? 1 : -1; - } - driftSign.emplace_back(theDriftSign); - - //Now get the detector type of the hit - if ( !hitId.is_valid() ){ - tsosDetType.emplace_back("unident"); - } else if (idHelper->is_pixel(hitId) ) { - tsosDetType.emplace_back("PIX"); // is PIX in Atlantis - } else if (idHelper->is_sct(hitId)) { - tsosDetType.emplace_back("SIL"); // is SIL in Atlantis - } else if (idHelper->is_trt(hitId)) { - tsosDetType.emplace_back("TRT"); - } else if (idHelper->is_mdt(hitId)) { - tsosDetType.emplace_back("MDT"); - } else if (idHelper->is_csc(hitId)) { - tsosDetType.emplace_back("CSC"); - } else if (idHelper->is_rpc(hitId)) { - tsosDetType.emplace_back("RPC"); - } else if (idHelper->is_tgc(hitId)) { - tsosDetType.emplace_back("TGC"); - } else { - tsosDetType.emplace_back("unident"); - } - - //Return the reco input object - return rot; - } - - - /** - * Get the residual pull information from the Trk::TrackStateOnSurface hit - */ - void getResidualPullFromHit( const Trk::TrackStateOnSurface* tsos, const Trk::RIO_OnTrack* rot, - const ToolHandle<Trk::IResidualPullCalculator> & residualPullCalculator, - DataVect& tsosResLoc1, DataVect& tsosResLoc2, DataVect& tsosPullLoc1, DataVect& tsosPullLoc2 ){ - - //Define default return values for invalid states - double ResLoc1 = -99.; - double ResLoc2 = -99.; - double PullLoc1 = -99.; - double PullLoc2 = -99.; - - // get TrackParameters on the surface to calculate residual - const Trk::TrackParameters* tsosParameters = tsos->trackParameters(); - - //Check we got the parameters - if (tsosParameters){ - - /** - * Using track residual tool: ResidualPullCalculator - * -excerpt from Tracking/TrkValidation/TrkValTools/src/BasicValidationNtupleTool.cxx - */ - - //Get the residualPull object + /** + * Obtain the perigee parameters for a given track, if available, and fill + * them in the corresponding data vectors. Perigee parameters are written + * out in the old format using @f$ \cot\theta @f$ and @f$ q/p_T @f$ + * @return the perigee parameter object for further use + */ + const Trk::Perigee* getPerigeeParameters( const Trk::Track* track, + DataVect& pt, DataVect& d0, DataVect& z0, DataVect& phi0, + DataVect& cotTheta, DataVect& covMatrix){ + + /** + * Get perigee parameters in old format (@f$ d_0 @f$, @f$ z_0 @f$, @f$ \phi @f$, @f$ \cot\theta @f$, @f$ q/p_T @f$), + * whereas tracking uses (@f$ d_0 @f$, @f$ z_0 @f$, @f$ \phi @f$, @f$ \theta @f$, q/p), + * therefore a transformation of the covariance matrix is needed + */ + const Trk::Perigee *perigee = track->perigeeParameters(); + + //return immediately if there is no perigee information + if (!perigee) return nullptr; + + //write out p_T + if ((perigee->parameters())[Trk::qOverP]==0) pt.emplace_back(9999.); + else pt.push_back( (perigee->charge() > 0) ? DataType(perigee->pT()/Gaudi::Units::GeV) : DataType((-perigee->pT())/Gaudi::Units::GeV)); + + d0.emplace_back((perigee->parameters())[Trk::d0]/Gaudi::Units::cm); + z0.emplace_back(perigee->parameters()[Trk::z0]/Gaudi::Units::cm); + phi0.emplace_back(perigee->parameters()[Trk::phi0]); + + if (perigee->parameters()[Trk::theta] == 0.) cotTheta.emplace_back(9999.); + else cotTheta.emplace_back(1./tan(perigee->parameters()[Trk::theta])); + + // CLHEP->Eigen migration. jpt Dec'13 + // https://twiki.cern.ch/twiki/bin/viewauth/Atlas/MigrationCLHEPtoEigen + // https://twiki.cern.ch/twiki/bin/viewauth/Atlas/MigrationToUpdatedEDM#Changes_to_TrkParameters + + /// get transformed covariance matrix + AmgSymMatrix(5) covVert; + + const AmgSymMatrix(5)* covariance = perigee->covariance(); //perigee cannot be null here + if (perigee && covariance) { + // do trafo to old format + double measuredTheta = perigee->parameters()[Trk::theta]; + double measuredQoverp = perigee->parameters()[Trk::qOverP]; + const Trk::JacobianThetaPToCotThetaPt theJac( measuredTheta, measuredQoverp ); + covVert = covariance->similarity(theJac); + }else{ + for ( int ii=0; ii<20; ii++){ // placeholder. Do this nicer. + covVert(ii) = 0.; + } + } + //Scale covariance matrix values to get good resolution with fixed + //precision in JiveXML data + + const long scale = 10000; + const double thisScale(scale/100.); + // Migration: Now only has diagonal elements from covariance matrix ? + covMatrix.emplace_back(covVert(0)*thisScale); // 5 elements + covMatrix.emplace_back(covVert(1)*thisScale); + covMatrix.emplace_back(covVert(2)*thisScale); + covMatrix.emplace_back(covVert(3)*thisScale); + covMatrix.emplace_back(covVert(4)*thisScale); + + // Used to be 15 elements before migration, so need to put 10 placeholders + for ( int i=0; i<10; i++){ + covMatrix.emplace_back( 0. ); + } + + //All for perigee, return object for use by other functions + return perigee; + } + + /** + * Get a list of track-State on Surfaces for measurement and + * outlier hits, sorted using the perigee comparison functions + * @return a std::vector of Trk::TrackStateOnSurface* + */ + std::vector<const Trk::TrackStateOnSurface*> getTrackStateOnSurfaces( const Trk::Track* track, const Trk::Perigee* perigee, bool doHitsSorting){ + // vector for the return object + std::vector<const Trk::TrackStateOnSurface*> TSoSVec; + + // loop over TrackStateOnSurfaces to extract interesting ones + Trk::TrackStates::const_iterator tsos = track->trackStateOnSurfaces()->begin(); + for (; tsos!=track->trackStateOnSurfaces()->end(); ++tsos) { + // include measurements AND outliers: + if ((*tsos)->type(Trk::TrackStateOnSurface::Measurement) || (*tsos)->type(Trk::TrackStateOnSurface::Outlier) ) { + // add to temp vector + TSoSVec.push_back(*tsos); + } // end if TSoS is measurement or outlier + } // end loop over TSoS + + // sort the selected TSoS, if not already sorted using a comparison functor + + if (perigee) { + //Get hold of the comparison functor + Trk::TrackStateOnSurfaceComparisonFunction *compFunc + = new Trk::TrackStateOnSurfaceComparisonFunction(perigee->position(), perigee->momentum()); + if (compFunc){ + if (doHitsSorting) { + //Sort track state on surface if needed + if (TSoSVec.size() > 2 && !is_sorted(TSoSVec.begin(), TSoSVec.end(), *compFunc)) + std::sort(TSoSVec.begin(), TSoSVec.end(), *compFunc); + } + } + delete compFunc; + } // end if compFunc + + //Now return that vector + return TSoSVec; + } + + /** + * Get polyline hits if available. Polyline tracks that have less than 2 points are not useful - skip + */ + void getPolylineFromHits( const std::vector<const Trk::TrackStateOnSurface*>& TSoSVec, + DataVect& polylineX, DataVect& polylineY, DataVect& polylineZ, DataVect& numPolyline){ + int numPoly = 0 ; + if (TSoSVec.size() > 1) { + //Loop over track state on surfaces + std::vector<const Trk::TrackStateOnSurface*>::const_iterator tsosIter; + const double onetenth(0.1); + for (tsosIter=TSoSVec.begin(); tsosIter!=TSoSVec.end(); ++tsosIter) { + // get global track position + if (!(*tsosIter)->trackParameters()) continue ; + const Amg::Vector3D& pos = (*tsosIter)->trackParameters()->position(); + polylineX.emplace_back(pos.x()*onetenth); + polylineY.emplace_back(pos.y()*onetenth); + polylineZ.emplace_back(pos.z()*onetenth); + ++numPoly; + } + } + //Store counter as well + numPolyline.emplace_back(numPoly); + } + + + /** + * Retrieve all the basic hit information from the Trk::TrackStateOnSurface + * @return the reconstruction input object (RIO) for further use + */ + const Trk::RIO_OnTrack* getBaseInfoFromHit( const Trk::TrackStateOnSurface* tsos, const AtlasDetectorID* idHelper, + DataVect& isOutlier, DataVect& hits, DataVect& driftSign, DataVect& tsosDetType){ + + //Get corresponding measurement + const Trk::MeasurementBase *measurement = tsos->measurementOnTrack(); + + //If measurement is invalid, return imediately + if (!measurement) return nullptr; + + // get RIO_OnTrack + const Trk::RIO_OnTrack* rot = dynamic_cast<const Trk::RIO_OnTrack*>(measurement); + + // check for competing RIO_OnTracks + if (!rot) { + // try to get identifier by CompetingROT: + const Trk::CompetingRIOsOnTrack* comprot = dynamic_cast<const Trk::CompetingRIOsOnTrack*>(measurement); + //Get the input object with highest probability + if (comprot) rot = &(comprot->rioOnTrack(comprot->indexOfMaxAssignProb())); + } + + //If there is still no RIO_onTrack, return Null + if (!rot) return nullptr; + + // Now start writing out values: + // Check if this is an outlier hit + isOutlier.emplace_back(tsos->type(Trk::TrackStateOnSurface::Outlier)); + + //Now try to get the identifier, create an empty invalid one if no rot + Identifier hitId (rot->identify()); + //Check if it is valid, othwerise store 0 + hits.push_back( hitId.is_valid()?DataType( hitId.get_compact() ):DataType(0) ); + + // get sign of drift radius for TRT measurements + int theDriftSign = 0; + if (idHelper->is_trt(hitId)) { + // get local parameters + theDriftSign = measurement->localParameters()[Trk::driftRadius] > 0. ? 1 : -1; + } + driftSign.emplace_back(theDriftSign); + + //Now get the detector type of the hit + if ( !hitId.is_valid() ){ + tsosDetType.emplace_back("unident"); + } else if (idHelper->is_pixel(hitId) ) { + tsosDetType.emplace_back("PIX"); // is PIX in Atlantis + } else if (idHelper->is_sct(hitId)) { + tsosDetType.emplace_back("SIL"); // is SIL in Atlantis + } else if (idHelper->is_trt(hitId)) { + tsosDetType.emplace_back("TRT"); + } else if (idHelper->is_mdt(hitId)) { + tsosDetType.emplace_back("MDT"); + } else if (idHelper->is_csc(hitId)) { + tsosDetType.emplace_back("CSC"); + } else if (idHelper->is_rpc(hitId)) { + tsosDetType.emplace_back("RPC"); + } else if (idHelper->is_tgc(hitId)) { + tsosDetType.emplace_back("TGC"); + } else { + tsosDetType.emplace_back("unident"); + } + + //Return the reco input object + return rot; + } + + + /** + * Get the residual pull information from the Trk::TrackStateOnSurface hit + */ + void getResidualPullFromHit( const Trk::TrackStateOnSurface* tsos, const Trk::RIO_OnTrack* rot, + const ToolHandle<Trk::IResidualPullCalculator> & residualPullCalculator, + DataVect& tsosResLoc1, DataVect& tsosResLoc2, DataVect& tsosPullLoc1, DataVect& tsosPullLoc2 ){ + + //Define default return values for invalid states + double ResLoc1 = -99.; + double ResLoc2 = -99.; + double PullLoc1 = -99.; + double PullLoc2 = -99.; + + // get TrackParameters on the surface to calculate residual + const Trk::TrackParameters* tsosParameters = tsos->trackParameters(); + + //Check we got the parameters + if (tsosParameters){ + + /** + * Using track residual tool: ResidualPullCalculator + * -excerpt from Tracking/TrkValidation/TrkValTools/src/BasicValidationNtupleTool.cxx + */ + + //Get the residualPull object std::optional<Trk::ResidualPull> residualPull = residualPullCalculator->residualPull(rot, tsosParameters,Trk::ResidualPull::Biased); - if (residualPull) { - //Get the first residual - ResLoc1 = residualPull->residual()[Trk::loc1]; - //Get the second residual for more than 1 dimension - if (residualPull->dimension() >= 2) ResLoc2 = residualPull->residual()[Trk::loc2]; - - if ((residualPull->isPullValid()) ) { - //Get the first residual - PullLoc1 = residualPull->pull()[Trk::loc1]; - //Get the second residual for more than 1 dimension - if (residualPull->dimension() >= 2) PullLoc2 = residualPull->pull()[Trk::loc2]; - } - } // end if residualPull - } // end if tsosParameters - - //Finally store the values - tsosResLoc1.emplace_back(ResLoc1 ); - tsosResLoc2.emplace_back(ResLoc2 ); - tsosPullLoc1.emplace_back(PullLoc1 ); - tsosPullLoc2.emplace_back(PullLoc2 ); - } - - /** - * Get the barcode of the associated truth track - */ - void getTruthFromTrack( const Trk::Track* track, const TrackCollection* trackCollection, - const TrackTruthCollection* truthCollection, DataVect& barcode){ - - if (!truthCollection) { - //Fill with zero if none found - barcode.emplace_back(0); - return ; - } - - //Get the element link to this track collection - ElementLink<TrackCollection> tracklink; - tracklink.setElement(track); - tracklink.setStorableObject(*trackCollection); - - //try to find it in the truth collection - std::map<Trk::TrackTruthKey,TrackTruth>::const_iterator tempTrackTruthItr = truthCollection->find(tracklink); - - //Fill with zero if none found - if (tempTrackTruthItr == truthCollection->end()){ - //Fill with zero if none found - barcode.emplace_back(0); - return ; - } - - //if found, Store the barcode - barcode.emplace_back((*tempTrackTruthItr).second.particleLink().barcode()); - } - - } //namespace TrackRetrieverHelpers - - /** - * This is the standard AthAlgTool constructor - * @param type AlgTool type name - * @param name AlgTool instance name - * @param parent AlgTools parent owning this tool - **/ - TrackRetriever::TrackRetriever(const std::string& type,const std::string& name,const IInterface* parent): - AthAlgTool(type,name,parent), - m_typeName("Track"), - m_residualPullCalculator("Trk::ResidualPullCalculator/ResidualPullCalculator"), - m_idHelper(nullptr), - m_trackSumTool ("Trk::TrackSummaryTool/InDetTrackSummaryTool") - { - //Declare the interface - declareInterface<IDataRetriever>(this); - //Properties - declareProperty("ResidualPullCalculator" , m_residualPullCalculator, "ToolHandle to ResidualPullCaclulator" ); - declareProperty("PriorityTrackCollection", m_PriorityTrackCollection = "CombinedInDetTracks", "Track collections to retrieve first, shown as default in Atlantis"); - declareProperty("OtherTrackCollections" , m_OtherTrackCollections , "Track collections to retrieve, all if empty"); - declareProperty("TrackTruthColName" , m_TrackTruthCollection = "TrackTruthCollection", - "Track collection from which to retrieve the truth associations for the priority track collection"); - declareProperty("DoWriteHLT" , m_doWriteHLT = false, "Whether to write HLTAutoKey objects"); - declareProperty("DoWriteResiduals" , m_doWriteResiduals = true, "Whether to write TrackResiduals"); - declareProperty("DoHitsSorting" , m_doHitsSorting = false, "Whether to sort hits (TrackStateOnSurfaces)"); - declareProperty("DoHitsDetails" , m_doHitsDetails = true, "Whether to write hits details (TrackStateOnSurfaces)"); - } - - /** - * Initialize before event loop - * - retrieve the residual-pull tool - * - setup the ID helper - */ - StatusCode TrackRetriever::initialize() { - //Set up ATLAS ID helper to be able to identify the RIO's det-subsystem. - if (detStore()->retrieve(m_idHelper, "AtlasID").isFailure()) { - msg(MSG::FATAL) << "Could not get AtlasDetectorID helper" << endmsg; - return StatusCode::FAILURE; - } - // try to retrieve residual-pull calculation only if requested - if (m_doWriteResiduals){ - if ( m_residualPullCalculator.retrieve().isFailure()) { - //Give a warning - ATH_MSG_WARNING( "Cannot retrieve ResidualPullCalculator tool " << m_residualPullCalculator); - ATH_MSG_WARNING( " -> will not write out residuals and pulls! " ); - //switch of residual writing - m_doWriteResiduals = false ; - } - } - //All fine - - // get TrackSummaryTool - if ( m_trackSumTool.retrieve().isFailure() ) { - ATH_MSG_WARNING( "Failed to retrieve tool " << m_trackSumTool ); - } else { - if(msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Retrieved tool " << m_trackSumTool << endmsg; - } - return StatusCode::SUCCESS; - } - - - - /** - * For each track collection retrieve all data - * - loop over tracks in all collections - * - for each track get basic parameters - * @param FormatTool the tool that will create formated output from the DataMap - */ - StatusCode TrackRetriever::retrieve(ToolHandle<IFormatTool> &FormatTool) { - //be verbose - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Retrieving " << dataTypeName() << endmsg; - //Generate a list of requested track collections - using tracksNamePair = std::pair<TrackCollection, std::string>; - std::vector< tracksNamePair > requestedTrackColls; - //First try to get hold of the priorty track collection - const TrackCollection* tracks = nullptr ; - if (evtStore()->retrieve(tracks, m_PriorityTrackCollection).isFailure()){ - ATH_MSG_WARNING( "Unable to retrieve requested priority track collection "<< m_PriorityTrackCollection); - } else { - //Add this to the list of requested collections - requestedTrackColls.emplace_back(*tracks,m_PriorityTrackCollection); - } - - //If we have been given an explicit list, try to retrieve these in the order - //they were given - std::vector<std::string>::iterator CollNameItr = m_OtherTrackCollections.begin(); - for ( ; CollNameItr != m_OtherTrackCollections.end(); ++CollNameItr){ - const TrackCollection* tracks = nullptr ; - if (evtStore()->retrieve(tracks, (*CollNameItr)).isFailure()){ - ATH_MSG_WARNING( "Unable to retrieve requested track collection " << (*CollNameItr) ); - continue ; - } - //skip if it's priority collection again - if ((*CollNameItr) == m_PriorityTrackCollection){ continue; } - //Add them to the list of requested collections - requestedTrackColls.emplace_back(*tracks,(*CollNameItr)); - } // end OtherCollections loop - //If no collections had been requested explicitly, loop over all of them - if (m_OtherTrackCollections.empty()) { - //Get an iterator over all other track collections - SG::ConstIterator<TrackCollection> trackCollIter, trackCollEnd; - if ((evtStore()->retrieve(trackCollIter, trackCollEnd)).isFailure()){ - ATH_MSG_ERROR( "Unable to retrieve track collection iterator" ); - return StatusCode::RECOVERABLE; - } - - //Next loop over all collections - for (; trackCollIter!=trackCollEnd; ++trackCollIter) { - //Check if this is an HLT-AutoKey collection - if ((trackCollIter.key().find("HLT",0) != std::string::npos) && (!m_doWriteHLT)){ - ATH_MSG_DEBUG( "Ignoring HLT-AutoKey collection " << trackCollIter.key()); - continue ; - } - //Ignore TRTSeed and MuonSlimmedTrackCollections - if ( (trackCollIter.key()=="TRTSeeds") || (trackCollIter.key() =="MuonSlimmedTrackCollection")) { - ATH_MSG_DEBUG( "Always ignoring collection " << trackCollIter.key() ); - continue ; - } - //Next try to retrieve the actual collection - if (evtStore()->retrieve(tracks,trackCollIter.key()).isFailure()){ - ATH_MSG_DEBUG( "Unable to retrieve collection " << trackCollIter.key()); - continue ; - } - //Check if this collection is not already in the list - if (std::find(requestedTrackColls.begin(), requestedTrackColls.end(),tracksNamePair(*tracks,trackCollIter.key())) != requestedTrackColls.end()) - continue ; - - //Add this to the list of requested collections - requestedTrackColls.emplace_back(*tracks,trackCollIter.key()); - } //loop over all track collections - } - - /** - * Second step: - * Now loop over all collections a retrieve the actual values - **/ - - //Loop over the collection list we have assembled above - std::vector<tracksNamePair>::iterator tracksNamePairItr = requestedTrackColls.begin(); - for ( ; tracksNamePairItr != requestedTrackColls.end(); ++tracksNamePairItr){ - //save some typing by getting a handle on the collection pointer - const TrackCollection* trackCollection =&((*tracksNamePairItr).first); - std::string collectionName = (*tracksNamePairItr).second; - //Some sanity checks - if ( trackCollection->empty()){ - ATH_MSG_DEBUG( "Ignoring empty track collection " << collectionName ); - } else { - ATH_MSG_DEBUG( "Retrieving data for track collection " << collectionName); - } - - /** - * Try to find the appropiate truth collection - * StoreGate key can be either 'TruthCollection' or just 'Truth' suffix. Check both. - * Using 'SG::contains' check first, avoids spitting out SG warnings - */ - const TrackTruthCollection *truthCollection = nullptr ; - //Check for given truth collection - if ( collectionName == m_PriorityTrackCollection ){ - if ( evtStore()->contains<TrackTruthCollection>(m_TrackTruthCollection) ){ - evtStore()->retrieve(truthCollection, m_TrackTruthCollection).ignore(); - ATH_MSG_DEBUG( "Found TrackTruthCollection with key " << m_TrackTruthCollection ); - } - //Check for name+TruthCollection - } else if ( evtStore()->contains<TrackTruthCollection>(collectionName+"TruthCollection") ){ - evtStore()->retrieve(truthCollection, collectionName+"TruthCollection").ignore(); - ATH_MSG_DEBUG( "Found TrackTruthCollection with key " << collectionName << "TruthCollection" ); - //Check for name+Truth - } else if ( evtStore()->contains<TrackTruthCollection>(collectionName+"Truth") ){ - evtStore()->retrieve(truthCollection, collectionName+"Truth").ignore(); - ATH_MSG_DEBUG( "Found TrackTruthCollection with key " << collectionName << "Truth" ); - // No matching track truth collection found at all - } else { - ATH_MSG_DEBUG( "Could not find matching TrackTruthCollection for " << collectionName ); - truthCollection = nullptr ; - } - - // Make a list of track-wise entries and reserve enough space - DataVect id; id.reserve(trackCollection->size()); - DataVect chi2; chi2.reserve(trackCollection->size()); - DataVect numDoF; numDoF.reserve(trackCollection->size()); - DataVect trackAuthor; trackAuthor.reserve(trackCollection->size()); - DataVect barcode; barcode.reserve(trackCollection->size()); - DataVect numHits; numHits.reserve(trackCollection->size()); - DataVect numPolyline; numPolyline.reserve(trackCollection->size()); - DataVect nBLayerHits; nBLayerHits.reserve(trackCollection->size()); - DataVect nPixHits; nPixHits.reserve(trackCollection->size()); - DataVect nSCTHits; nSCTHits.reserve(trackCollection->size()); - DataVect nTRTHits; nTRTHits.reserve(trackCollection->size()); - - // vectors with measurement- or TrackStateOnSurface-wise entries - // reserve space later on - DataVect polylineX; - DataVect polylineY; - DataVect polylineZ; - DataVect tsosResLoc1; - DataVect tsosResLoc2; - DataVect tsosPullLoc1; - DataVect tsosPullLoc2; - DataVect tsosDetType; - DataVect isOutlier; - DataVect driftSign; - DataVect hits; - - //Store wether this collection has perigee parameters - DataVect pt; pt.reserve(trackCollection->size()); - DataVect d0; d0.reserve(trackCollection->size()); - DataVect z0; z0.reserve(trackCollection->size()); - DataVect phi0; phi0.reserve(trackCollection->size()); - DataVect cotTheta; cotTheta.reserve(trackCollection->size()); - //Covariance matrix has 15 entries per track - DataVect covMatrix; covMatrix.reserve(trackCollection->size() * 15 ); - - // Now loop over all tracks in the collection - TrackCollection::const_iterator track; - for (track=trackCollection->begin(); track!=trackCollection->end(); ++track) { - /** - * General track fit info - */ - id.emplace_back(id.size()); //<! simple counter starting from 0 - chi2.emplace_back((*track)->fitQuality()->chiSquared()); - numDoF.emplace_back((*track)->fitQuality()->numberDoF()); - trackAuthor.emplace_back((*track)->info().trackFitter()); - - /** - * Get truth Information - */ - TrackRetrieverHelpers::getTruthFromTrack(*track,trackCollection,truthCollection,barcode); - - /** - * Get Perigee parameters (if available) - */ - const Trk::Perigee* perigee = TrackRetrieverHelpers::getPerigeeParameters(*track, pt, d0, z0, phi0, cotTheta, covMatrix); - - /** - * Get number of Pix/SCT/TRT hits - */ - std::unique_ptr<Trk::TrackSummary> summary = nullptr; - summary = m_trackSumTool->summary(Gaudi::Hive::currentContext(), **track); - - if(not summary){ - ATH_MSG_DEBUG( "Track summary is NULL " ); - nBLayerHits.emplace_back(0); - nPixHits.emplace_back(0); - nSCTHits.emplace_back(0); - nTRTHits.emplace_back(0); - }else{ - nBLayerHits.emplace_back(summary->get(Trk::numberOfInnermostPixelLayerHits)); - nPixHits.emplace_back(summary->get(Trk::numberOfPixelHits)); - nSCTHits.emplace_back(summary->get(Trk::numberOfSCTHits)); - nTRTHits.emplace_back(summary->get(Trk::numberOfTRTHits)); - } - - /** - * Get sorted list of track state on surfaces - */ - // Vector of interesting TrackStateOnSurfaces - std::vector<const Trk::TrackStateOnSurface*> TSoSVec = TrackRetrieverHelpers::getTrackStateOnSurfaces(*track,perigee,m_doHitsSorting); - - /** - * Get polyline information - */ - // Reserving some space for polyline hits - polylineX.reserve(polylineX.size()+TSoSVec.size()); - polylineY.reserve(polylineY.size()+TSoSVec.size()); - polylineZ.reserve(polylineZ.size()+TSoSVec.size()); - - //And fill them - TrackRetrieverHelpers::getPolylineFromHits(TSoSVec,polylineX,polylineY,polylineZ,numPolyline); - - /** - * RIO association and outlier id - */ - //Reserve some space for resPull and other hit info - isOutlier.reserve(isOutlier.size()+TSoSVec.size()); - hits.reserve(hits.size()+TSoSVec.size()); - driftSign.reserve(driftSign.size()+TSoSVec.size()); - tsosResLoc1.reserve(tsosResLoc1.size()+TSoSVec.size()); - tsosResLoc2.reserve(tsosResLoc2.size()+TSoSVec.size()); - tsosPullLoc1.reserve(tsosPullLoc1.size()+TSoSVec.size()); - tsosPullLoc2.reserve(tsosPullLoc2.size()+TSoSVec.size()); - tsosDetType.reserve(tsosDetType.size()+TSoSVec.size()); - - //Now loop over tracks and fill them - std::vector< const Trk::TrackStateOnSurface* >::const_iterator TSoSItr = TSoSVec.begin(); - //Count number of hits stored in this loop - long nHits = 0; - if (m_doHitsDetails){ // disable only for HeavyIons ! - for (; TSoSItr != TSoSVec.end(); ++TSoSItr){ - // This produces the full long debug dump for TSoS: - ATH_MSG_VERBOSE( (**TSoSItr) ); - //Get the basic hit information - const Trk::RIO_OnTrack* rot = TrackRetrieverHelpers::getBaseInfoFromHit(*TSoSItr, m_idHelper, isOutlier, hits, driftSign, tsosDetType ); - //tell if this didn't work out - if (!rot){ - ATH_MSG_VERBOSE( "Could not obtain RIO for TSoS of type " << (*TSoSItr)->dumpType() ); - continue ; - } - //count this as a hit - ++nHits; - - //if we shell retrieve residuals, also get those - if (m_doWriteResiduals){ - TrackRetrieverHelpers::getResidualPullFromHit( *TSoSItr, rot, m_residualPullCalculator, tsosResLoc1, tsosResLoc2, tsosPullLoc1, tsosPullLoc2); - } - } - } // end hits details - - //Store number of retrieved hits for which we have retrieved information - numHits.emplace_back(nHits); - - } // end loop over tracks in collection - - //Now fill everything in a datamap - DataMap DataMap; - // Start with mandatory entries - DataMap["id"] = id; - DataMap["chi2"] = chi2; - DataMap["numDoF"] = numDoF; - DataMap["trackAuthor"] = trackAuthor; - DataMap["barcode"] = barcode; - DataMap["numHits"] = numHits; - DataMap["nBLayerHits"] = nBLayerHits; - DataMap["nPixHits"] = nPixHits; - DataMap["nSCTHits"] = nSCTHits; - DataMap["nTRTHits"] = nTRTHits; - DataMap["numPolyline"] = numPolyline; - - // if perigee parameters are not available, leave the corresponding subtags empty. - // This way atlantis knows that such tracks can only be displayed as polylines. - if (!pt.empty()){ - DataMap["pt"] = pt; - DataMap["d0"] = d0; - DataMap["z0"] = z0; - DataMap["phi0"] = phi0; - DataMap["cotTheta"] = cotTheta; - DataMap["covMatrix multiple=\"15\""] = covMatrix; - } - - // vectors with measurement- or TrackStateOnSurface-wise entries - if ( !polylineX.empty()){ - std::string numPolyPerTrack = DataType(polylineX.size()/((double)id.size())).toString(); - DataMap["polylineX multiple=\"" + numPolyPerTrack + "\""] = polylineX; - DataMap["polylineY multiple=\"" + numPolyPerTrack + "\""] = polylineY; - DataMap["polylineZ multiple=\"" + numPolyPerTrack + "\""] = polylineZ; - } - - if ( !hits.empty()){ - std::string numHitsPerTrack = DataType(hits.size()/((double)id.size())).toString(); - DataMap["hits multiple=\"" + numHitsPerTrack + "\""] = hits; - DataMap["isOutlier multiple=\""+numHitsPerTrack+"\""] = isOutlier; - DataMap["driftSign multiple=\""+numHitsPerTrack+"\""] = driftSign; - - if (m_doWriteResiduals){ - // hits counter in principle not needed anymore: - DataMap["numTsos"] = numHits; - DataMap["tsosResLoc1 multiple=\""+numHitsPerTrack+"\""] = tsosResLoc1; - DataMap["tsosResLoc2 multiple=\""+numHitsPerTrack+"\""] = tsosResLoc2; - DataMap["tsosPullLoc1 multiple=\""+numHitsPerTrack+"\""] = tsosPullLoc1; - DataMap["tsosPullLoc2 multiple=\""+numHitsPerTrack+"\""] = tsosPullLoc2; - DataMap["tsosDetType multiple=\""+numHitsPerTrack+"\""] = tsosDetType; - } - } - - //forward data to formating tool - if ( FormatTool->AddToEvent(dataTypeName(), collectionName, &DataMap).isFailure()) - return StatusCode::RECOVERABLE; - - //Be verbose - if (msgLvl(MSG::DEBUG)) { - msg(MSG::DEBUG) << dataTypeName() << " collection " << collectionName; - msg(MSG::DEBUG) << " retrieved with " << id.size() << " entries"<< endmsg; - } - - } //loop over track collections - - //All collections retrieved okay - return StatusCode::SUCCESS; - - } //retrieve + if (residualPull) { + //Get the first residual + ResLoc1 = residualPull->residual()[Trk::loc1]; + //Get the second residual for more than 1 dimension + if (residualPull->dimension() >= 2) ResLoc2 = residualPull->residual()[Trk::loc2]; + + if ((residualPull->isPullValid()) ) { + //Get the first residual + PullLoc1 = residualPull->pull()[Trk::loc1]; + //Get the second residual for more than 1 dimension + if (residualPull->dimension() >= 2) PullLoc2 = residualPull->pull()[Trk::loc2]; + } + } // end if residualPull + } // end if tsosParameters + + //Finally store the values + tsosResLoc1.emplace_back(ResLoc1 ); + tsosResLoc2.emplace_back(ResLoc2 ); + tsosPullLoc1.emplace_back(PullLoc1 ); + tsosPullLoc2.emplace_back(PullLoc2 ); + } + + /** + * Get the barcode of the associated truth track + */ + void getTruthFromTrack( const Trk::Track* track, const TrackCollection* trackCollection, + SG::ReadHandle<TrackTruthCollection>& truthCollection, DataVect& barcode){ + + if (!truthCollection.isValid()) { + //Fill with zero if none found + barcode.emplace_back(0); + return; + } + + //Get the element link to this track collection + ElementLink<TrackCollection> tracklink; + tracklink.setElement(track); + tracklink.setStorableObject(*trackCollection); + + //try to find it in the truth collection + std::map<Trk::TrackTruthKey,TrackTruth>::const_iterator tempTrackTruthItr = truthCollection->find(tracklink); + + //Fill with zero if none found + if (tempTrackTruthItr == truthCollection->end()){ + //Fill with zero if none found + barcode.emplace_back(0); + return; + } + + //if found, Store the barcode + barcode.emplace_back((*tempTrackTruthItr).second.particleLink().barcode()); + } + + } //namespace TrackRetrieverHelpers + + /** + * This is the standard AthAlgTool constructor + * @param type AlgTool type name + * @param name AlgTool instance name + * @param parent AlgTools parent owning this tool + **/ + TrackRetriever::TrackRetriever(const std::string& type,const std::string& name,const IInterface* parent): + AthAlgTool(type,name,parent){} + + /** + * Initialize before event loop + * - retrieve the residual-pull tool + * - setup the ID helper + */ + StatusCode TrackRetriever::initialize() { + //Set up ATLAS ID helper to be able to identify the RIO's det-subsystem. + ATH_CHECK(detStore()->retrieve(m_idHelper, "AtlasID")); + + // try to retrieve residual-pull calculation only if requested + if (m_doWriteResiduals){ + ATH_CHECK(m_residualPullCalculator.retrieve()); + } + + ATH_CHECK(m_trackSumTool.retrieve()); + + return StatusCode::SUCCESS; + } + + + + /** + * For each track collection retrieve all data + * - loop over tracks in all collections + * - for each track get basic parameters + * @param FormatTool the tool that will create formated output from the DataMap + */ + StatusCode TrackRetriever::retrieve(ToolHandle<IFormatTool> &FormatTool) { + + ATH_MSG_DEBUG("In retrieve()"); + + std::vector<std::string> keys = getKeys(); + + if(keys.empty()){ + ATH_MSG_WARNING("No StoreGate keys found"); + return StatusCode::SUCCESS; + } + + // Loop through the keys and retrieve the corresponding data + for (const std::string& key : keys) { + SG::ReadHandle<TrackCollection> cont(key); + if (cont.isValid()) { + DataMap data = getData(&(*cont),key); + if (FormatTool->AddToEvent(dataTypeName(), key, &data).isFailure()) { + ATH_MSG_WARNING("Failed to retrieve Collection " << key); + } else { + ATH_MSG_DEBUG(" (" << key << ") retrieved"); + } + } else { + ATH_MSG_WARNING("Collection " << key << " not found in SG"); + } + } + return StatusCode::SUCCESS; + } + + const DataMap TrackRetriever::getData(const TrackCollection* trackCollection, const std::string &collectionName) { + + ATH_MSG_DEBUG("in getData()"); + + //Some sanity checks + if ( trackCollection->empty()){ + ATH_MSG_DEBUG( "Empty track collection " << collectionName ); + } else { + ATH_MSG_DEBUG( "Retrieving data for track collection " << collectionName); + } + + /** + * Try to find the appropiate truth collection + * StoreGate key can be either 'TruthCollection' or just 'Truth' suffix. Check both. + * Using 'SG::contains' check first, avoids spitting out SG warnings + */ + + SG::ReadHandle<TrackTruthCollection> truthCollection; + + // Check for given truth collection + if (collectionName == m_priorityKey) { + truthCollection = SG::ReadHandle<TrackTruthCollection>(m_TrackTruthCollection); + if (truthCollection.isValid()) { + ATH_MSG_DEBUG("Found TrackTruthCollection with key " << m_TrackTruthCollection); + } + }else { + truthCollection = SG::ReadHandle<TrackTruthCollection>(collectionName + "TruthCollection"); + if (truthCollection.isValid()) { + ATH_MSG_DEBUG("Found TrackTruthCollection with key " << collectionName << "TruthCollection"); + } else { + truthCollection = SG::ReadHandle<TrackTruthCollection>(collectionName + "Truth"); + if (truthCollection.isValid()) { + ATH_MSG_DEBUG("Found TrackTruthCollection with key " << collectionName << "Truth"); + } else { + ATH_MSG_DEBUG("Could not find matching TrackTruthCollection for " << collectionName); + } + } + } + + // Make a list of track-wise entries and reserve enough space + DataVect id; id.reserve(trackCollection->size()); + DataVect chi2; chi2.reserve(trackCollection->size()); + DataVect numDoF; numDoF.reserve(trackCollection->size()); + DataVect trackAuthor; trackAuthor.reserve(trackCollection->size()); + DataVect barcode; barcode.reserve(trackCollection->size()); + DataVect numHits; numHits.reserve(trackCollection->size()); + DataVect numPolyline; numPolyline.reserve(trackCollection->size()); + DataVect nBLayerHits; nBLayerHits.reserve(trackCollection->size()); + DataVect nPixHits; nPixHits.reserve(trackCollection->size()); + DataVect nSCTHits; nSCTHits.reserve(trackCollection->size()); + DataVect nTRTHits; nTRTHits.reserve(trackCollection->size()); + + // vectors with measurement- or TrackStateOnSurface-wise entries + // reserve space later on + DataVect polylineX; + DataVect polylineY; + DataVect polylineZ; + DataVect tsosResLoc1; + DataVect tsosResLoc2; + DataVect tsosPullLoc1; + DataVect tsosPullLoc2; + DataVect tsosDetType; + DataVect isOutlier; + DataVect driftSign; + DataVect hits; + + //Store wether this collection has perigee parameters + DataVect pt; pt.reserve(trackCollection->size()); + DataVect d0; d0.reserve(trackCollection->size()); + DataVect z0; z0.reserve(trackCollection->size()); + DataVect phi0; phi0.reserve(trackCollection->size()); + DataVect cotTheta; cotTheta.reserve(trackCollection->size()); + //Covariance matrix has 15 entries per track + DataVect covMatrix; covMatrix.reserve(trackCollection->size() * 15 ); + + // Now loop over all tracks in the collection + TrackCollection::const_iterator track; + for (track=trackCollection->begin(); track!=trackCollection->end(); ++track) { + /** + * General track fit info + */ + id.emplace_back(id.size()); //<! simple counter starting from 0 + chi2.emplace_back((*track)->fitQuality()->chiSquared()); + numDoF.emplace_back((*track)->fitQuality()->numberDoF()); + trackAuthor.emplace_back((*track)->info().trackFitter()); + + /** + * Get truth Information + */ + TrackRetrieverHelpers::getTruthFromTrack(*track,trackCollection,truthCollection,barcode); + + /** + * Get Perigee parameters (if available) + */ + const Trk::Perigee* perigee = TrackRetrieverHelpers::getPerigeeParameters(*track, pt, d0, z0, phi0, cotTheta, covMatrix); + + /** + * Get number of Pix/SCT/TRT hits + */ + std::unique_ptr<Trk::TrackSummary> summary = nullptr; + summary = m_trackSumTool->summary(Gaudi::Hive::currentContext(), **track); + + if(not summary){ + ATH_MSG_DEBUG( "Track summary is NULL " ); + nBLayerHits.emplace_back(0); + nPixHits.emplace_back(0); + nSCTHits.emplace_back(0); + nTRTHits.emplace_back(0); + }else{ + nBLayerHits.emplace_back(summary->get(Trk::numberOfInnermostPixelLayerHits)); + nPixHits.emplace_back(summary->get(Trk::numberOfPixelHits)); + nSCTHits.emplace_back(summary->get(Trk::numberOfSCTHits)); + nTRTHits.emplace_back(summary->get(Trk::numberOfTRTHits)); + } + + /** + * Get sorted list of track state on surfaces + */ + // Vector of interesting TrackStateOnSurfaces + std::vector<const Trk::TrackStateOnSurface*> TSoSVec = TrackRetrieverHelpers::getTrackStateOnSurfaces(*track,perigee,m_doHitsSorting); + + /** + * Get polyline information + */ + // Reserving some space for polyline hits + polylineX.reserve(polylineX.size()+TSoSVec.size()); + polylineY.reserve(polylineY.size()+TSoSVec.size()); + polylineZ.reserve(polylineZ.size()+TSoSVec.size()); + + //And fill them + TrackRetrieverHelpers::getPolylineFromHits(TSoSVec,polylineX,polylineY,polylineZ,numPolyline); + + /** + * RIO association and outlier id + */ + //Reserve some space for resPull and other hit info + isOutlier.reserve(isOutlier.size()+TSoSVec.size()); + hits.reserve(hits.size()+TSoSVec.size()); + driftSign.reserve(driftSign.size()+TSoSVec.size()); + tsosResLoc1.reserve(tsosResLoc1.size()+TSoSVec.size()); + tsosResLoc2.reserve(tsosResLoc2.size()+TSoSVec.size()); + tsosPullLoc1.reserve(tsosPullLoc1.size()+TSoSVec.size()); + tsosPullLoc2.reserve(tsosPullLoc2.size()+TSoSVec.size()); + tsosDetType.reserve(tsosDetType.size()+TSoSVec.size()); + + //Now loop over tracks and fill them + std::vector< const Trk::TrackStateOnSurface* >::const_iterator TSoSItr = TSoSVec.begin(); + //Count number of hits stored in this loop + long nHits = 0; + if (m_doHitsDetails){ // disable only for HeavyIons ! + for (; TSoSItr != TSoSVec.end(); ++TSoSItr){ + // This produces the full long debug dump for TSoS: + ATH_MSG_VERBOSE( (**TSoSItr) ); + //Get the basic hit information + const Trk::RIO_OnTrack* rot = TrackRetrieverHelpers::getBaseInfoFromHit(*TSoSItr, m_idHelper, isOutlier, hits, driftSign, tsosDetType ); + //tell if this didn't work out + if (!rot){ + ATH_MSG_VERBOSE( "Could not obtain RIO for TSoS of type " << (*TSoSItr)->dumpType() ); + continue ; + } + //count this as a hit + ++nHits; + + //if we shell retrieve residuals, also get those + if (m_doWriteResiduals){ + TrackRetrieverHelpers::getResidualPullFromHit( *TSoSItr, rot, m_residualPullCalculator, tsosResLoc1, tsosResLoc2, tsosPullLoc1, tsosPullLoc2); + } + } + } // end hits details + + //Store number of retrieved hits for which we have retrieved information + numHits.emplace_back(nHits); + + } // end loop over tracks in collection + + //Now fill everything in a datamap + DataMap DataMap; + // Start with mandatory entries + DataMap["id"] = id; + DataMap["chi2"] = chi2; + DataMap["numDoF"] = numDoF; + DataMap["trackAuthor"] = trackAuthor; + DataMap["barcode"] = barcode; + DataMap["numHits"] = numHits; + DataMap["nBLayerHits"] = nBLayerHits; + DataMap["nPixHits"] = nPixHits; + DataMap["nSCTHits"] = nSCTHits; + DataMap["nTRTHits"] = nTRTHits; + DataMap["numPolyline"] = numPolyline; + + // if perigee parameters are not available, leave the corresponding subtags empty. + // This way atlantis knows that such tracks can only be displayed as polylines. + if (!pt.empty()){ + DataMap["pt"] = pt; + DataMap["d0"] = d0; + DataMap["z0"] = z0; + DataMap["phi0"] = phi0; + DataMap["cotTheta"] = cotTheta; + DataMap["covMatrix multiple=\"15\""] = covMatrix; + } + + // vectors with measurement- or TrackStateOnSurface-wise entries + if ( !polylineX.empty()){ + std::string numPolyPerTrack = DataType(polylineX.size()/((double)id.size())).toString(); + DataMap["polylineX multiple=\"" + numPolyPerTrack + "\""] = polylineX; + DataMap["polylineY multiple=\"" + numPolyPerTrack + "\""] = polylineY; + DataMap["polylineZ multiple=\"" + numPolyPerTrack + "\""] = polylineZ; + } + + if ( !hits.empty()){ + std::string numHitsPerTrack = DataType(hits.size()/((double)id.size())).toString(); + DataMap["hits multiple=\"" + numHitsPerTrack + "\""] = hits; + DataMap["isOutlier multiple=\""+numHitsPerTrack+"\""] = isOutlier; + DataMap["driftSign multiple=\""+numHitsPerTrack+"\""] = driftSign; + + if (m_doWriteResiduals){ + // hits counter in principle not needed anymore: + DataMap["numTsos"] = numHits; + DataMap["tsosResLoc1 multiple=\""+numHitsPerTrack+"\""] = tsosResLoc1; + DataMap["tsosResLoc2 multiple=\""+numHitsPerTrack+"\""] = tsosResLoc2; + DataMap["tsosPullLoc1 multiple=\""+numHitsPerTrack+"\""] = tsosPullLoc1; + DataMap["tsosPullLoc2 multiple=\""+numHitsPerTrack+"\""] = tsosPullLoc2; + DataMap["tsosDetType multiple=\""+numHitsPerTrack+"\""] = tsosDetType; + } + } + + ATH_MSG_DEBUG(dataTypeName() << " collection " << collectionName << " retrieved with " << id.size() << " entries"); + + return DataMap; + } + + + + const std::vector<std::string> TrackRetriever::getKeys() { + + ATH_MSG_DEBUG("in getKeys()"); + + // Initialize keys with the priority key first and then the other requested keys + std::vector<std::string> keys = {m_priorityKey}; + + if (!m_otherKeys.empty() && !m_doWriteAllCollections) { + keys.insert(keys.end(), m_otherKeys.begin(), m_otherKeys.end()); + } + else { + // If all collections are requested, obtain all available keys from StoreGate + std::vector<std::string> allKeys; + //if(m_doWriteAllCollections){ + evtStore()->keys<TrackCollection>(allKeys); + //} + + // Add keys that are not the priority key and do not add containers with "HLT" in their name if requested, ignore TRTSeed and MuonSlimmedTrackCollections + for (const std::string& key : allKeys) { + if (key != m_priorityKey && (key.find("HLT") == std::string::npos || m_doWriteHLT) && (key!="TRTSeeds") && (key !="MuonSlimmedTrackCollection")) { + keys.emplace_back(key); + ATH_MSG_DEBUG("key: " << key); + } + } + } + return keys; + } + } //namespace JiveXML diff --git a/Tracking/TrkEventCnv/TrkJiveXML/src/VertexRetriever.cxx b/Tracking/TrkEventCnv/TrkJiveXML/src/VertexRetriever.cxx index c5d699d3a81a42957a9a6efc73a7033e8c524770..f65056ff1aa8278658a616462152fc27fc8ab576 100644 --- a/Tracking/TrkEventCnv/TrkJiveXML/src/VertexRetriever.cxx +++ b/Tracking/TrkEventCnv/TrkJiveXML/src/VertexRetriever.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration */ #include "TrkJiveXML/VertexRetriever.h" @@ -93,44 +93,39 @@ namespace JiveXML { // const Trk::perigee* perigee = dynamic_cast<const Trk::perigee*>( trackPerigee ); // double m_d0 = perigee->parameters()[Trk::d0]; - const Rec::TrackParticleContainer* tracks = nullptr ; - const TrackCollection* trktracks = nullptr ; - - size_t found; std::string searchStr = "TrackParticle"; - found=m_trackCollection.find(searchStr); - + size_t found=m_trackCollection.find(searchStr); + m_perigeeVector.clear(); // need to clear, otherwise accumulates over events if (found!=std::string::npos){ // User selected a Rec::TrackParticle Collection - if (evtStore()->retrieve(tracks, m_trackCollection).isFailure()){ - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Unable to retrieve track collection" - << m_trackCollection << " for association "<< endmsg; + SG::ReadHandle<Rec::TrackParticleContainer> tracks (m_trackCollection); + if (!tracks.isValid()){ + ATH_MSG_WARNING("Unable to retrieve track collection" << m_trackCollection << " for association "); } else { - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Retrieved " << - m_trackCollection << endmsg; - - Rec::TrackParticleContainer::const_iterator track; - for(track=tracks->begin();track!=tracks->end();++track) { - const Trk::Perigee *perigee = (*track)->perigee(); -// if(perigee == 0) continue; // not skip ! need to keep order for index ! - m_perigeeVector.push_back( perigee ); // this perigee match works ! - } + ATH_MSG_DEBUG("Retrieved " << m_trackCollection); + + //xAOD::VertexContainer::const_iterator VertexItr = cont->begin(); + //for ( ; VertexItr != cont->end(); ++VertexItr) { + for(const auto track : *tracks) { + const Trk::Perigee *perigee = track->perigee(); + //if(perigee == 0) continue; // not skip ! need to keep order for index ! + m_perigeeVector.push_back( perigee ); // this perigee match works ! + } } - }else{ // it's a Trk::Tracks collection - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << " User selected a Trk::Track collection ! " << endmsg; - - if (evtStore()->retrieve(trktracks, m_trackCollection).isFailure()){ - if (msgLvl(MSG::WARNING)) msg(MSG::WARNING) << "Unable to retrieve track collection" - << m_trackCollection << " for association "<< endmsg; + } + + else{ // User selected a Trk::Track collection + ATH_MSG_DEBUG(" User selected a Trk::Track collection ! "); + SG::ReadHandle<TrackCollection> tracks (m_trackCollection); + if (!tracks.isValid()){ + ATH_MSG_WARNING("Unable to retrieve track collection" << m_trackCollection << " for association "); } else { - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Retrieved " << - m_trackCollection << endmsg; - TrackCollection::const_iterator track; - for(track=trktracks->begin();track!=trktracks->end();++track) { - const Trk::Perigee* trackPerigee = (*track)->perigeeParameters(); + ATH_MSG_DEBUG("Retrieved " << m_trackCollection); + for(const auto track : *tracks) { + const Trk::Perigee* trackPerigee = track->perigeeParameters(); //const Trk::Perigee *perigee = dynamic_cast<const Trk::Perigee*>( trackPerigee ); -// if(perigee == 0) continue; // not skip ! need to keep order for index ! -// m_perigeeVector.push_back( perigee ); + //if(perigee == 0) continue; // not skip ! need to keep order for index ! + //m_perigeeVector.push_back( perigee ); m_perigeeVector.push_back( trackPerigee ); } } @@ -147,6 +142,8 @@ namespace JiveXML { */ StatusCode VertexRetriever::retrieve(ToolHandle<IFormatTool> &FormatTool){ + ATH_MSG_DEBUG("In retrieve()"); + //Get an iterator over all vertex collections, //return if there are none SG::ConstIterator<VxContainer> vtxCollectionItr, vtxCollectionsEnd; @@ -194,9 +191,8 @@ namespace JiveXML { //Get size of current container VxContainer::size_type NVtx = vtxCollectionItr->size(); - //Be a bit verbose - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Reading vertex container " << vtxCollectionItr.key() - << " with " << NVtx << " entries" << endmsg; + ATH_MSG_DEBUG("Reading vertex container " << vtxCollectionItr.key() + << " with " << NVtx << " entries"); //Declare all the data vectors we want to retrieve and reserve space x.reserve(x.size()+NVtx); @@ -211,8 +207,7 @@ namespace JiveXML { StatusCode sc = fillPerigeeList(); if (!sc.isFailure()) { - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Perigee list filled with " << m_perigeeVector.size() - << " entries " << endmsg; + ATH_MSG_DEBUG("Perigee list filled with " << m_perigeeVector.size() << " entries "); } //Loop over vertices @@ -244,10 +239,10 @@ namespace JiveXML { float this_z = (*vertexItr)->recVertex().position().z()/10.; float R = std::hypot (this_x, this_y); // distance from beamline - if (msgLvl(MSG::DEBUG)){ msg(MSG::DEBUG) << " Collection: " << vtxCollectionItr.key() - << ", this_chi2: " << this_chi2 << " - chi2: " << fitQuality.chiSquared() -// << " ," << (*vertexItr)->recVertex().position().x()/10. << " ," << (*vertexItr)->recVertex().position().x()*CLHEP::cm - << ", R: " << R << endmsg; } + ATH_MSG_DEBUG(" Collection: " << vtxCollectionItr.key() + << ", this_chi2: " << this_chi2 << " - chi2: " << fitQuality.chiSquared() + //<< " ," << (*vertexItr)->recVertex().position().x()/10. << " ," << (*vertexItr)->recVertex().position().x()*CLHEP::cm + << ", R: " << R); chi2.emplace_back( this_chi2 ); x.emplace_back( this_x ); @@ -257,7 +252,7 @@ namespace JiveXML { // from: Tracking/TrkEvent/TrkEventPrimitives/VertexType.h const Trk::VertexType vtx_type = (*vertexItr)->vertexType(); vertexType.emplace_back( vtx_type ); - if (msgLvl(MSG::DEBUG)){ msg(MSG::DEBUG) << " collection " << vtxCollectionItr.key() << ": VertexType: " << vtx_type << endmsg; } + ATH_MSG_DEBUG(" collection " << vtxCollectionItr.key() << ": VertexType: " << vtx_type); //Store primary vertex candidate flag if ( &(*vtxCollectionItr) == primaryVtxCollection ){ @@ -293,7 +288,7 @@ namespace JiveXML { const std::vector<Trk::VxTrackAtVertex*>* trklist = (*vertexItr)->vxTrackAtVertex(); - if (msgLvl(MSG::DEBUG)) msg(MSG::DEBUG) << "Tracks at vertex: " << trklist->size() << endmsg; + ATH_MSG_DEBUG("Tracks at vertex: " << trklist->size()); numTracks.emplace_back( trklist->size() ); sgkey.emplace_back( m_trackCollection ); // sgkey in current scheme is _not_ a multiple ! diff --git a/Tracking/TrkG4Components/TrkG4UserActions/python/Geant4MSFollowing.py b/Tracking/TrkG4Components/TrkG4UserActions/python/Geant4MSFollowing.py index 7061799223dbd092e94270a15482522de9897500..61a4b34cb813f2e6f364e9f31b47b0c75df9b1e8 100644 --- a/Tracking/TrkG4Components/TrkG4UserActions/python/Geant4MSFollowing.py +++ b/Tracking/TrkG4Components/TrkG4UserActions/python/Geant4MSFollowing.py @@ -82,11 +82,10 @@ def ExtrapolationToolCfg(flags, args): acc.addPublicTool(LayerMaterialInspector) # the tracking volume displayer - from TrkDetDescrSvc.TrkDetDescrJobProperties import TrkDetFlags TrackingVolumeDisplayer = CompFactory.Trk.TrackingVolumeDisplayer("TrackingVolumeDisplayer", - TrackingVolumeOutputFile='TrackingVolumes-'+TrkDetFlags.MaterialMagicTag()+'.C', - LayerOutputFile='Layers-'+TrkDetFlags.MaterialMagicTag()+'.C', - SurfaceOutputFile='Surfaces-'+TrkDetFlags.MaterialMagicTag()+'.C') + TrackingVolumeOutputFile='TrackingVolumes.C', + LayerOutputFile='Layers.C', + SurfaceOutputFile='Surfaces.C') acc.addPublicTool(TrackingVolumeDisplayer) # PROPAGATOR DEFAULTS diff --git a/Trigger/TrigAlgorithms/TrigCaloRec/python/TrigCaloRecConfig.py b/Trigger/TrigAlgorithms/TrigCaloRec/python/TrigCaloRecConfig.py index f80a1123f4e321d71005192b3dcf156877033cc1..8dd81e75620c322fcd06b4f148c032dae26ad7b4 100755 --- a/Trigger/TrigAlgorithms/TrigCaloRec/python/TrigCaloRecConfig.py +++ b/Trigger/TrigAlgorithms/TrigCaloRec/python/TrigCaloRecConfig.py @@ -214,7 +214,7 @@ def hltCaloDMCalib(flags, name = "TrigDMCalib" ): @AccumulatorCache -def hltTopoClusterMakerCfg(flags, name, clustersKey="HLT_TopoCaloClustersFS", cellsKey=None, doLC=False): +def hltTopoClusterMakerCfg(flags, name, clustersKey="HLT_TopoCaloClustersFS", cellsKey=None, doLC=False, suffix=''): acc = ComponentAccumulator() cellsFromName = 'CaloCellsFS' if "FS" in clustersKey else "CaloCells" cells = cellsFromName if cellsKey is None else cellsKey @@ -282,11 +282,12 @@ def hltTopoClusterMakerCfg(flags, name, clustersKey="HLT_TopoCaloClustersFS", ce 'AVG_TILE_Q' ] - doMonCells = "FS" in name + clustermakername = name + suffix + doMonCells = "FS" in clustermakername alg = CompFactory.CaloClusterMaker( - name, - ClustersOutputName=clustersKey if "CaloMon" in name else recordable(clustersKey), + clustermakername, + ClustersOutputName=clustersKey if "CaloMon" in clustermakername else recordable(clustersKey), ClusterCellLinkOutputName = clustersKey+"_links", ClusterMakerTools = [ topoMaker, topoSplitter, topoMoments], ClusterCorrectionTools = listClusterCorrectionTools, @@ -296,7 +297,7 @@ def hltTopoClusterMakerCfg(flags, name, clustersKey="HLT_TopoCaloClustersFS", ce from CaloTools.CaloNoiseCondAlgConfig import CaloNoiseCondAlgCfg acc.merge(CaloNoiseCondAlgCfg(flags)) acc.addEventAlgo(alg, primary=True) - monitor = CompFactory.TrigCaloClusterMonitor(name + 'Monitoring', + monitor = CompFactory.TrigCaloClusterMonitor(name + 'Monitoring' + suffix, CellsName = cells, ClustersName = clustersKey, MonitorCells = doMonCells, @@ -366,8 +367,10 @@ def hltCaloTopoClusteringCfg( acc.merge( hltCaloCellMakerCfg(flags, namePrefix + "HLTCaloCellMaker"+nameSuffix, roisKey=roisKey, CellsName=CellsName, monitorCells=monitorCells, doTau = doTau) ) + + clustermakername_nosuffix = namePrefix + "HLTCaloClusterMaker" - clustermakername = namePrefix + "HLTCaloClusterMaker"+nameSuffix + clustermakername = clustermakername_nosuffix + nameSuffix # TODO - Don't use hasFlag here, use another concrete flag instead if flags.hasFlag("CaloRecGPU.GlobalFlags.UseCaloRecGPU") and flags.CaloRecGPU.GlobalFlags.UseCaloRecGPU and not doTau and "FS" in clustermakername: @@ -391,7 +394,7 @@ def hltCaloTopoClusteringCfg( acc.merge(gpuhyb) else : - calt=hltTopoClusterMakerCfg(flags, clustermakername, cellsKey=CellsName, clustersKey=clusters, doLC=doTau) + calt=hltTopoClusterMakerCfg(flags, clustermakername_nosuffix, cellsKey=CellsName, clustersKey=clusters, doLC=doTau, suffix = nameSuffix) acc.merge(calt) if doLCFS: acc.merge( hltCaloTopoClusterCalibratorCfg( diff --git a/Trigger/TrigT1/TrigT1NSW/src/NSWL1Simulation.cxx b/Trigger/TrigT1/TrigT1NSW/src/NSWL1Simulation.cxx index 68e2411823198cad2aca3ab92ffd52d400a9c3a4..a691ed0b9057d97b4f8482ba6a97b36b1552f0eb 100644 --- a/Trigger/TrigT1/TrigT1NSW/src/NSWL1Simulation.cxx +++ b/Trigger/TrigT1/TrigT1NSW/src/NSWL1Simulation.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration */ #include "CxxUtils/checker_macros.h" @@ -29,15 +29,9 @@ namespace NSWL1 { ATH_CHECK(tHistSvc->regTree(tdir_name,m_tree)); } - // retrieving the private tools implementing the simulation if(m_dosTGC){ if(m_doPad || m_doStrip) ATH_CHECK(m_pad_tds.retrieve()); - //if(m_useLookup){ - // ATH_CHECK(m_pad_trigger_lookup.retrieve()); - //} - //else{ ATH_CHECK(m_pad_trigger.retrieve()); - //} if(m_doStrip){ ATH_CHECK(m_strip_tds.retrieve()); ATH_CHECK(m_strip_cluster.retrieve()); @@ -65,12 +59,7 @@ namespace NSWL1 { if(m_dosTGC){ if(m_doPad || m_doStrip) ATH_CHECK( m_pad_tds->gather_pad_data(pads) ); - // if(m_useLookup){ - // ATH_CHECK( m_pad_trigger_lookup->lookup_pad_triggers(pads, padTriggers) ); - // } - // else{ ATH_CHECK( m_pad_trigger->compute_pad_triggers(pads, padTriggers) ); - // } if(m_doStrip){ ATH_CHECK( m_strip_tds->gather_strip_data(strips,padTriggers) ); ATH_CHECK( m_strip_cluster->cluster_strip_data(ctx, strips, clusters) ); @@ -79,7 +68,6 @@ namespace NSWL1 { if(m_doPad) ATH_CHECK(PadTriggerAdapter::fillContainer(padTriggerContainer, padTriggers, ctx.eventID().event_number())); } - //retrive the MM Strip hit data if(m_doMM){ ATH_CHECK( m_mmtrigger->runTrigger(ctx, MMTriggerContainer.get(), m_doMMDiamonds) ); } diff --git a/Trigger/TrigT1/TrigT1NSW/src/NSWL1Simulation.h b/Trigger/TrigT1/TrigT1NSW/src/NSWL1Simulation.h index 55d7454b4ea7c8605001db53f8f0ffe989001c21..79a7601feedf645d5f06d17fb6fde60bfa4c957e 100644 --- a/Trigger/TrigT1/TrigT1NSW/src/NSWL1Simulation.h +++ b/Trigger/TrigT1/TrigT1NSW/src/NSWL1Simulation.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration */ #ifndef TRIGT1NSW_NSWL1SIMULATION_H @@ -18,7 +18,6 @@ #include "TrigT1NSWSimTools/IStripSegmentTool.h" #include "TrigT1NSWSimTools/IMMTriggerTool.h" #include "TrigT1NSWSimTools/IPadTriggerLogicTool.h" -#include "TrigT1NSWSimTools/IPadTriggerLookupTool.h" #include "MuonRDO/NSW_PadTriggerDataContainer.h" #include "MuonRDO/NSW_TrigRawDataContainer.h" @@ -65,14 +64,12 @@ namespace NSWL1 { private: ToolHandle <IPadTdsTool> m_pad_tds{this, "PadTdsTool", "NSWL1::PadTdsOfflineTool", "Tool simulating the functionalities of the sTGC PAD TDS"}; ToolHandle <IPadTriggerLogicTool> m_pad_trigger{this, "PadTriggerTool", "NSWL1::PadTriggerLogicOfflineTool", "Tool simulating the sTGC pad trigger logic"}; - ToolHandle <IPadTriggerLookupTool> m_pad_trigger_lookup{this, "PadTriggerLookupTool", "NSWL1::PadTriggerLookupTool", "Tool to lookup sTGC pad trigger patterns per execute against the same LUT as in trigger FPGA"}; ToolHandle <IStripTdsTool> m_strip_tds{this, "StripTdsTool", "NSWL1::StripTdsOfflineTool", "Tool simulating the functionalities of the sTGC Strip TDS"}; ToolHandle <IStripClusterTool> m_strip_cluster{this, "StripClusterTool", "NSWL1::StripClusterTool", "Tool simulating the sTGC Strip Clustering"}; ToolHandle <IStripSegmentTool> m_strip_segment{this, "StripSegmentTool", "NSWL1::StripSegmentTool", "Tool simulating the sTGC Segment finding"}; ToolHandle <IMMTriggerTool> m_mmtrigger{this, "MMTriggerTool", "NSWL1::MMTriggerTool", "Tool simulating the MM Trigger"}; ToolHandle <TriggerProcessorTool> m_trigProcessor{this, "MMTriggerProcessorTool", "NSWL1::TriggerProcessorTool", "Tool simulating the TP"}; - Gaudi::Property<bool> m_useLookup{this, "UseLookup", false, "Toggle Lookup mode on and off default is the otf(old) mode"}; Gaudi::Property<bool> m_doNtuple{this, "DoNtuple", false, "Create an ntuple for data analysis"}; Gaudi::Property<bool> m_doMM{this, "DoMM", false, "Run data analysis for MM"}; Gaudi::Property<bool> m_doMMDiamonds{this, "DoMMDiamonds", false, "Run data analysis for MM using Diamond Roads algorithm"}; diff --git a/Trigger/TrigT1/TrigT1NSWSimTools/CMakeLists.txt b/Trigger/TrigT1/TrigT1NSWSimTools/CMakeLists.txt index a7f1edf199ed09230f9b173420870ae124ea8203..fdfa7580031b48537406869cda240108881fe212 100644 --- a/Trigger/TrigT1/TrigT1NSWSimTools/CMakeLists.txt +++ b/Trigger/TrigT1/TrigT1NSWSimTools/CMakeLists.txt @@ -20,6 +20,3 @@ atlas_add_library( TrigT1NSWSimToolsLib atlas_add_component( TrigT1NSWSimTools src/components/*.cxx LINK_LIBRARIES TrigT1NSWSimToolsLib ) - -# Install files from the package: -atlas_install_runtime( share/*.dat ) diff --git a/Trigger/TrigT1/TrigT1NSWSimTools/TrigT1NSWSimTools/IPadTriggerLookupTool.h b/Trigger/TrigT1/TrigT1NSWSimTools/TrigT1NSWSimTools/IPadTriggerLookupTool.h deleted file mode 100644 index 811d76813108713b246f66939dee48653b178152..0000000000000000000000000000000000000000 --- a/Trigger/TrigT1/TrigT1NSWSimTools/TrigT1NSWSimTools/IPadTriggerLookupTool.h +++ /dev/null @@ -1,34 +0,0 @@ -// -*- c++ -*- - -/* - Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef NSWL1_IPADTRIGGERLOOKUPTOOL_H -#define NSWL1_IPADTRIGGERLOOKUPTOOL_H - -#include "GaudiKernel/IAlgTool.h" -#include "TrigT1NSWSimTools/TriggerTypes.h" -#include <vector> - -namespace NSWL1 { - - class PadData; - class PadTrigger; - - class IPadTriggerLookupTool: public virtual IAlgTool { - - public: - virtual ~IPadTriggerLookupTool() {} - - virtual StatusCode lookup_pad_triggers(const std::vector<std::shared_ptr<PadData>>& pads, std::vector<std::unique_ptr<PadTrigger>> &triggers) = 0; - - static const InterfaceID& interfaceID() { - static const InterfaceID IID_IPadTriggerLookupTool("NSWL1::IPadTriggerLookupTool", 1 ,0); - return IID_IPadTriggerLookupTool; - } - }; - -} - -#endif diff --git a/Trigger/TrigT1/TrigT1NSWSimTools/TrigT1NSWSimTools/PadTriggerLookupTool.h b/Trigger/TrigT1/TrigT1NSWSimTools/TrigT1NSWSimTools/PadTriggerLookupTool.h deleted file mode 100644 index 2228aba355b439efc07064c78032d3f3a439d761..0000000000000000000000000000000000000000 --- a/Trigger/TrigT1/TrigT1NSWSimTools/TrigT1NSWSimTools/PadTriggerLookupTool.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration -*/ - -/* -This tool utilizes the same LUT as in the pad trigger hardware. Trigger band-id and phi-d are looked up where pad coincidence patterns are keys -*/ -#ifndef NSWL1_PadTriggerLookupTool_H -#define NSWL1_PadTriggerLookupTool_H - -#include "TrigT1NSWSimTools/IPadTriggerLookupTool.h" -#include "GaudiKernel/IIncidentListener.h" -#include "AthenaBaseComps/AthAlgTool.h" -#include "GaudiKernel/ServiceHandle.h" - -#include "TrigT1NSWSimTools/TriggerTypes.h" -#include "MuonIdHelpers/IMuonIdHelperSvc.h" - -#include <unordered_map> -#include <string> -#include <vector> - -namespace MuonGM { - class MuonDetectorManager; -} - -namespace NSWL1 { - //functor to be used to hash pad coincidence patterns for fast lookup - struct hashPattern { - size_t operator()(const std::vector<int> &vec ) const { - std::size_t seed = vec.size(); - for(auto& i : vec) { - seed ^= i + 0x9e3779b9 + (seed << 6) + (seed >> 2); - } - return seed; - } - }; - class PadTriggerLookupTool: - virtual public IPadTriggerLookupTool, public AthAlgTool, public IIncidentListener { - public: - PadTriggerLookupTool(const std::string& type, - const std::string& name, - const IInterface* parent); - virtual ~PadTriggerLookupTool()=default; - virtual StatusCode initialize() override; - virtual void handle (const Incident& inc) override; - virtual - StatusCode lookup_pad_triggers(const std::vector<std::shared_ptr<PadData>>& pads, - std::vector<std::unique_ptr<PadTrigger>> &triggers) override; - private: - ServiceHandle<Muon::IMuonIdHelperSvc> m_idHelperSvc {this, "MuonIdHelperSvc", "Muon::MuonIdHelperSvc/MuonIdHelperSvc"}; - Gaudi::Property<bool> m_dumpSectorGeometry {this, "DumpSectorGeometry", false, "Record sector pad geometry into an ASCII file (1L/1S by default). Use it for debugging"}; - - /// load the 4o4 coincidence table - StatusCode loadCoincidenceTable(const std::string&); - // inflates the table by appending 3o4s //empty hits/missing layers are -9999 (const value of the 'nullPadNumber' variable. Never use any nonsense number for non existing values it will break some rules ) - StatusCode expandCoincidenceTable(); - const std::vector<float> m_etaBandsLargeSector; - const std::vector<float> m_etaBandsSmallSector; - StatusCode LookupSectorTriggers(const std::vector<std::shared_ptr<PadData>>& pads,int side, int sector, std::vector<std::unique_ptr<PadTrigger>> &triggers); - std::vector<std::vector<std::shared_ptr<PadData>>> selectWedgePatterns(const std::vector<std::shared_ptr<PadData>> &pads,int side, int sector,int multiplet) const; - - SG::ReadCondHandleKey<MuonGM::MuonDetectorManager> m_detManagerKey{this, "MuonManagerKey", "MuonDetectorManager"}; - - std::vector<std::shared_ptr<PadOfflineData>> fetchSectorPads(bool isSmall,int side=1,int sector=1);//use sector number as coming ids - std::vector<std::shared_ptr<PadOfflineData>> fetchSmallSectorPads(int side=1,int sector=1); - std::vector<std::shared_ptr<PadOfflineData>> fetchLargeSectorPads(int side=1,int sector=1); - //void fillGeometricInformation(const std::shared_ptr<PadOfflineData>& ); - std::pair<int,int> Lookup( std::vector<int> );//fast lookup for phi and bandIds given a set of pads. returns (-1,-1) if nothing is found - std::unordered_map<std::vector<int>,std::pair<int,int> ,hashPattern> m_pats; - //use sector numbering scheme as in idHelper (i.e sector numbers from {1....8} + S/L) - //note that numbering for the sector logic is different .... - StatusCode printGeometry( const std::vector<std::shared_ptr<PadOfflineData>>&, std::ofstream&) const;//used for debugging purposes only, has no functionality in the actual trigger - - - }; - -} // namespace NSWL1 - -#endif diff --git a/Trigger/TrigT1/TrigT1NSWSimTools/share/TriggerPatterns.dat b/Trigger/TrigT1/TrigT1NSWSimTools/share/TriggerPatterns.dat deleted file mode 100644 index 30a766cf4313e59932048edd24c2561ac883a646..0000000000000000000000000000000000000000 --- a/Trigger/TrigT1/TrigT1NSWSimTools/share/TriggerPatterns.dat +++ /dev/null @@ -1,7417 +0,0 @@ -1001 1001 1001 1001 1001 1001 1002 1002 60 2 0 0 0 0 0 0 0 0 0 -1001 1001 1001 1001 1002 1002 1002 1002 60 2 0 0 0 0 0 0 0 0 0 -1001 1001 1002 1002 1002 1002 1002 1002 60 3 0 0 0 0 0 0 0 0 0 -1001 1001 1002 1002 1002 1002 1003 1003 60 3 0 0 0 0 0 0 0 0 0 -1002 1002 1002 1002 1002 1002 1003 1003 60 4 0 0 0 0 0 0 0 0 0 -1002 1002 1002 1002 1003 1003 1003 1003 60 4 0 0 0 0 0 0 0 0 0 -1002 1002 1003 1003 1003 1003 1003 1003 60 5 0 0 0 0 0 0 0 0 0 -1002 1002 1003 1003 1003 1003 1004 1004 60 5 0 0 0 0 0 0 0 0 0 -1003 1003 1003 1003 1003 1003 1004 1004 60 6 0 0 0 0 0 3 2 2 3 -1003 1003 1003 1003 1004 1004 1004 1004 60 6 0 0 0 0 0 3 2 2 3 -1003 1003 1004 1004 1004 1004 1004 1004 60 7 0 0 0 0 0 3 2 2 3 -1003 1003 1004 1004 1004 1004 1005 1005 60 7 0 0 0 0 0 3 2 2 3 -1004 1004 1004 1004 1004 1004 1005 1005 60 8 0 3 2 2 3 3 2 2 3 -1004 1004 1004 1004 1005 1005 1005 1005 60 8 0 3 2 2 3 3 2 2 3 -1004 1004 1005 1005 1005 1005 1005 1005 60 9 0 3 2 2 3 3 2 2 3 -1004 1004 1005 1005 1005 1005 1006 1006 60 9 0 3 2 2 3 3 2 2 3 -1005 1005 1005 1005 1005 1005 1006 1006 60 10 0 3 2 2 3 3 2 2 3 -1005 1005 1005 1005 1006 1006 1006 1006 60 10 0 3 2 2 3 3 2 2 3 -1005 1005 1006 1006 1006 1006 1006 1006 60 11 0 3 2 2 3 3 2 2 3 -1005 1005 1006 1006 1006 1006 1007 1007 60 11 0 3 2 2 3 3 2 2 3 -1006 1006 1006 1006 1006 1006 1007 1007 60 12 0 3 2 2 3 3 2 2 2 -1006 1006 1006 1006 1006 1006 1007 1007 60 12 1 0 0 0 0 0 0 3 3 -1006 1006 1006 1006 1007 1007 1007 1007 60 12 0 3 2 2 3 3 2 2 2 -1006 1006 1006 1006 1007 1007 1007 1007 60 12 1 0 0 0 0 0 0 3 3 -1006 1006 1007 1007 1007 1007 1007 1007 60 13 0 3 2 2 3 2 3 3 2 -1006 1006 1007 1007 1007 1007 1008 1008 60 13 0 3 2 2 3 2 3 3 2 -1007 1007 1007 1007 1007 1007 1008 1008 60 14 0 3 2 2 2 2 3 3 2 -1007 1007 1007 1007 1007 1007 1008 1008 60 14 1 0 0 3 3 0 0 0 0 -1007 1007 1007 1007 1008 1008 1008 1008 60 14 0 3 2 2 2 2 3 3 2 -1007 1007 1007 1007 1008 1008 1008 1008 60 14 1 0 0 3 3 0 0 0 0 -1007 1007 1008 1008 1008 1008 1008 1008 60 15 0 2 2 3 2 2 3 3 2 -1007 1007 1008 1008 1008 1008 1008 1008 60 15 1 3 3 0 0 0 0 0 0 -1007 1007 1008 1008 1008 1008 1009 1009 60 15 0 2 2 3 2 2 3 3 2 -1007 1007 1008 1008 1008 1008 1009 1009 60 15 1 3 3 0 0 0 0 0 0 -1008 1008 1008 1008 1008 1008 1009 1009 60 16 0 2 3 3 2 2 3 3 2 -1008 1008 1008 1008 1009 1009 1009 1009 60 16 0 2 3 3 2 2 3 3 2 -1008 1008 1009 1009 1009 1009 1009 1009 60 17 0 2 3 3 2 2 3 3 2 -1008 1008 1009 1009 1009 1009 1010 1010 60 17 0 2 3 3 2 2 3 3 2 -1009 1009 1009 1009 1009 1009 1010 1010 60 18 0 2 3 3 2 2 3 3 2 -1009 1009 1009 1009 1010 1010 1010 1010 60 18 0 2 3 3 2 2 3 3 2 -1009 1009 1010 1010 1010 1010 1010 1010 60 19 0 2 3 3 2 2 3 3 2 -1009 1009 1010 1010 1010 1010 1011 1011 60 19 0 2 3 3 2 2 3 3 2 -1010 1010 1010 1010 1010 1010 1011 1011 60 20 0 2 3 3 2 2 3 3 2 -1010 1010 1010 1010 1011 1011 1011 1011 60 20 0 2 3 3 2 2 3 3 2 -1010 1010 1011 1011 1011 1011 1011 1011 60 21 0 2 3 3 2 2 3 3 2 -1010 1010 1011 1011 1011 1011 1012 1012 60 21 0 2 3 3 2 2 3 3 2 -1011 1011 1011 1011 1011 1011 1012 1012 60 22 0 2 3 3 2 2 3 3 2 -1011 1011 1011 1011 1012 1012 1012 1012 60 22 0 2 3 3 2 2 3 3 2 -1011 1011 1012 1012 1012 1012 1012 1012 60 23 0 2 3 3 2 1 3 3 1 -1011 1011 1012 1012 1012 1012 1012 1012 60 23 1 0 0 0 0 2 4 4 0 -1011 1011 1012 1012 1012 1012 1013 1013 60 23 0 2 3 3 2 1 3 3 1 -1011 1011 1012 1012 1012 1012 1013 1013 60 23 1 0 0 0 0 2 4 4 0 -1012 1012 1012 1012 1012 1012 1013 1013 60 24 0 2 3 3 2 1 4 4 1 -1012 1012 1012 1012 1013 1013 1013 1013 60 24 0 2 3 3 2 1 4 4 1 -1012 1012 1013 1013 1013 1013 1013 1013 60 25 0 2 3 3 1 1 4 4 1 -1012 1012 1013 1013 1013 1013 1013 1013 60 25 1 0 0 4 2 0 0 0 0 -1012 1012 1013 1013 1013 1013 1014 1014 60 25 0 2 3 3 1 1 4 4 1 -1012 1012 1013 1013 1013 1013 1014 1014 60 25 1 0 0 4 2 0 0 0 0 -1013 1013 1013 1013 1013 1013 1014 1014 60 26 0 1 3 4 1 1 4 4 1 -1013 1013 1013 1013 1013 1013 1014 1014 60 26 1 2 4 0 0 0 0 0 0 -1013 1013 1013 1013 1014 1014 1014 1014 60 26 0 1 3 4 1 1 4 4 1 -1013 1013 1013 1013 1014 1014 1014 1014 60 26 1 2 4 0 0 0 0 0 0 -1013 1013 1014 1014 1014 1014 1014 1014 60 27 0 1 4 4 1 1 4 4 1 -1013 1013 1014 1014 1014 1014 1015 1015 60 27 0 1 4 4 1 1 4 4 1 -1014 1014 1014 1014 1014 1014 1015 1015 60 28 0 1 4 4 1 1 4 4 1 -1014 1014 1014 1014 1015 1015 1015 1015 60 28 0 1 4 4 1 1 4 4 1 -1014 1014 1015 1015 1015 1015 1015 1015 60 29 0 1 4 4 1 1 4 4 0 -1014 1014 1015 1015 1015 1015 1016 1016 60 29 0 1 4 4 1 1 4 4 0 -1015 1015 1015 1015 1015 1015 1016 1016 60 30 0 1 4 4 1 0 4 4 0 -1015 1015 1015 1015 1016 1016 1016 1016 60 30 0 1 4 4 1 0 4 4 0 -1015 1015 1016 1016 1016 1016 1016 1016 60 31 0 1 4 4 1 0 4 4 0 -1015 1015 1016 1016 1016 1016 1017 1017 60 31 0 1 4 4 1 0 4 4 0 -1016 1016 1016 1016 1016 1016 1017 1017 60 32 0 1 4 4 0 0 4 4 0 -1016 1016 1016 1016 1017 1017 1017 1017 60 32 0 1 4 4 0 0 4 4 0 -1016 1016 1017 1017 1017 1017 1017 1017 60 32 0 1 4 4 0 0 4 4 0 -1017 1017 1017 1017 2001 2001 2001 2001 60 34 0 0 4 4 0 8 6 6 8 -1017 1017 1018 1018 2001 2001 2001 2001 60 35 0 0 4 0 0 8 6 6 8 -1017 1017 1018 1018 2001 2001 2002 2002 60 35 0 0 4 0 0 8 6 6 8 -1019 1001 1019 1001 1001 1001 1002 1002 53 2 0 0 0 0 0 0 0 0 0 -1019 1001 1019 1001 1002 1002 1002 1002 53 2 0 0 0 0 0 0 0 0 0 -1019 1001 1019 1001 1019 1019 1002 1002 48 2 0 0 0 0 0 0 0 0 0 -1019 1001 1019 1001 1020 1020 1002 1002 48 2 0 0 0 0 0 0 0 0 0 -1019 1001 1020 1002 1002 1002 1002 1002 53 3 0 0 0 0 0 0 0 0 0 -1019 1001 1020 1002 1002 1002 1003 1003 53 3 0 0 0 0 0 0 0 0 0 -1019 1001 1020 1002 1020 1020 1002 1002 48 3 0 0 0 0 0 0 0 0 0 -1019 1001 1020 1002 1020 1020 1003 1003 48 3 0 0 0 0 0 0 0 0 0 -1019 1019 1019 1019 1019 1019 1002 1002 43 2 0 0 0 0 0 0 0 0 0 -1019 1019 1019 1019 1019 1019 1020 1020 39 2 0 0 0 0 0 0 0 0 0 -1019 1019 1019 1019 1020 1020 1002 1002 43 2 0 0 0 0 0 0 0 0 0 -1019 1019 1019 1019 1020 1020 1020 1020 39 2 0 0 0 0 0 0 0 0 0 -1019 1019 1020 1020 1020 1020 1002 1002 43 3 0 0 0 0 0 0 0 0 0 -1019 1019 1020 1020 1020 1020 1003 1003 43 3 0 0 0 0 0 0 0 0 0 -1019 1019 1020 1020 1020 1020 1020 1020 39 3 0 0 0 0 0 0 0 0 0 -1019 1019 1020 1020 1020 1020 1021 1021 39 3 0 0 0 0 0 0 0 0 0 -1020 1002 1020 1002 1002 1002 1003 1003 53 4 0 0 0 0 0 0 0 0 0 -1020 1002 1020 1002 1003 1003 1003 1003 53 4 0 0 0 0 0 0 0 0 0 -1020 1002 1020 1002 1020 1020 1003 1003 48 4 0 0 0 0 0 0 0 0 0 -1020 1002 1020 1002 1021 1021 1003 1003 48 4 0 0 0 0 0 0 0 0 0 -1020 1002 1021 1003 1003 1003 1003 1003 53 5 0 0 0 0 0 0 0 0 0 -1020 1002 1021 1003 1003 1003 1004 1004 53 5 0 0 0 0 0 0 0 0 0 -1020 1002 1021 1003 1021 1021 1003 1003 48 5 0 0 0 0 0 0 0 0 0 -1020 1002 1021 1003 1021 1021 1004 1004 48 5 0 0 0 0 0 0 0 0 0 -1020 1020 1020 1020 1020 1020 1003 1003 43 4 0 0 0 0 0 0 0 0 0 -1020 1020 1020 1020 1020 1020 1021 1021 39 4 0 0 0 0 0 0 0 0 0 -1020 1020 1020 1020 1021 1021 1003 1003 43 4 0 0 0 0 0 0 0 0 0 -1020 1020 1020 1020 1021 1021 1021 1021 39 4 0 0 0 0 0 0 0 0 0 -1020 1020 1021 1021 1021 1021 1003 1003 43 5 0 0 0 0 0 0 0 0 0 -1020 1020 1021 1021 1021 1021 1004 1004 43 5 0 0 0 0 0 0 0 0 0 -1020 1020 1021 1021 1021 1021 1021 1021 39 5 0 0 0 0 0 0 0 0 0 -1020 1020 1021 1021 1021 1021 1022 1022 39 5 0 0 0 0 0 0 0 0 0 -1021 1003 1021 1003 1003 1003 1004 1004 53 6 0 0 0 0 0 3 2 2 3 -1021 1003 1021 1003 1004 1004 1004 1004 53 6 0 0 0 0 0 3 2 2 3 -1021 1003 1021 1003 1021 1021 1004 1004 48 6 0 0 0 0 0 3 2 2 3 -1021 1003 1021 1003 1022 1022 1004 1004 48 6 0 0 0 0 0 3 2 2 3 -1021 1003 1022 1004 1004 1004 1004 1004 53 7 0 0 0 0 0 3 2 2 3 -1021 1003 1022 1004 1004 1004 1005 1005 53 7 0 0 0 0 0 3 2 2 3 -1021 1003 1022 1004 1022 1022 1004 1004 48 7 0 0 0 0 0 3 2 2 3 -1021 1003 1022 1004 1022 1022 1005 1005 48 7 0 0 0 0 0 3 2 2 3 -1021 1021 1021 1021 1021 1021 1004 1004 43 6 0 0 0 0 0 3 2 2 3 -1021 1021 1021 1021 1021 1021 1022 1022 39 6 0 0 0 0 0 3 2 2 3 -1021 1021 1021 1021 1022 1022 1004 1004 43 6 0 0 0 0 0 3 2 2 3 -1021 1021 1021 1021 1022 1022 1022 1022 39 6 0 0 0 0 0 3 2 2 3 -1021 1021 1022 1022 1022 1022 1004 1004 43 7 0 0 0 0 0 3 2 2 3 -1021 1021 1022 1022 1022 1022 1005 1005 43 7 0 0 0 0 0 3 2 2 3 -1021 1021 1022 1022 1022 1022 1022 1022 39 7 0 0 0 0 0 3 2 2 3 -1021 1021 1022 1022 1022 1022 1023 1023 39 7 0 0 0 0 0 3 2 2 3 -1022 1004 1022 1004 1004 1004 1005 1005 53 8 0 3 2 2 3 3 2 2 3 -1022 1004 1022 1004 1005 1005 1005 1005 53 8 0 3 2 2 3 3 2 2 3 -1022 1004 1022 1004 1022 1022 1005 1005 48 8 0 3 2 2 3 3 2 2 3 -1022 1004 1022 1004 1023 1023 1005 1005 48 8 0 3 2 2 3 3 2 2 3 -1022 1004 1023 1005 1005 1005 1005 1005 53 9 0 3 2 2 3 3 2 2 3 -1022 1004 1023 1005 1005 1005 1006 1006 53 9 0 3 2 2 3 3 2 2 3 -1022 1004 1023 1005 1023 1023 1005 1005 48 9 0 3 2 2 3 3 2 2 3 -1022 1004 1023 1005 1023 1023 1006 1006 48 9 0 3 2 2 3 3 2 2 3 -1022 1022 1022 1022 1022 1022 1005 1005 43 8 0 3 2 2 3 3 2 2 3 -1022 1022 1022 1022 1022 1022 1023 1023 39 8 0 3 2 2 3 3 2 2 3 -1022 1022 1022 1022 1023 1023 1005 1005 43 8 0 3 2 2 3 3 2 2 3 -1022 1022 1022 1022 1023 1023 1023 1023 39 8 0 3 2 2 3 3 2 2 3 -1022 1022 1023 1023 1023 1023 1005 1005 43 9 0 3 2 2 3 3 2 2 3 -1022 1022 1023 1023 1023 1023 1006 1006 43 9 0 3 2 2 3 3 2 2 3 -1022 1022 1023 1023 1023 1023 1023 1023 39 9 0 3 2 2 3 3 2 2 3 -1022 1022 1023 1023 1023 1023 1024 1024 39 9 0 3 2 2 3 3 2 2 3 -1023 1005 1023 1005 1005 1005 1006 1006 53 10 0 3 2 2 3 3 2 2 3 -1023 1005 1023 1005 1006 1006 1006 1006 53 10 0 3 2 2 3 3 2 2 3 -1023 1005 1023 1005 1023 1023 1006 1006 48 10 0 3 2 2 3 3 2 2 3 -1023 1005 1023 1005 1024 1024 1006 1006 48 10 0 3 2 2 3 3 2 2 3 -1023 1005 1024 1006 1006 1006 1006 1006 53 11 0 3 2 2 3 3 2 2 3 -1023 1005 1024 1006 1006 1006 1007 1007 53 11 0 3 2 2 3 3 2 2 3 -1023 1005 1024 1006 1024 1024 1006 1006 48 11 0 3 2 2 3 3 2 2 3 -1023 1005 1024 1006 1024 1024 1007 1007 48 11 0 3 2 2 3 3 2 2 3 -1023 1023 1023 1023 1023 1023 1006 1006 43 10 0 3 2 2 3 3 2 2 3 -1023 1023 1023 1023 1023 1023 1024 1024 39 10 0 3 2 2 3 3 2 2 3 -1023 1023 1023 1023 1024 1024 1006 1006 43 10 0 3 2 2 3 3 2 2 3 -1023 1023 1023 1023 1024 1024 1024 1024 39 10 0 3 2 2 3 3 2 2 3 -1023 1023 1024 1024 1024 1024 1006 1006 43 11 0 3 2 2 3 3 2 2 3 -1023 1023 1024 1024 1024 1024 1007 1007 43 11 0 3 2 2 3 3 2 2 3 -1023 1023 1024 1024 1024 1024 1024 1024 39 11 0 3 2 2 3 3 2 2 3 -1023 1023 1024 1024 1024 1024 1025 1025 39 11 0 3 2 2 3 3 2 2 3 -1024 1006 1024 1006 1006 1006 1007 1007 53 12 0 3 2 2 3 3 2 2 2 -1024 1006 1024 1006 1006 1006 1007 1007 53 12 1 0 0 0 0 0 0 3 3 -1024 1006 1024 1006 1007 1007 1007 1007 53 12 0 3 2 2 3 3 2 2 2 -1024 1006 1024 1006 1007 1007 1007 1007 53 12 1 0 0 0 0 0 0 3 3 -1024 1006 1024 1006 1024 1024 1007 1007 48 12 0 3 2 2 3 3 2 2 2 -1024 1006 1024 1006 1024 1024 1007 1007 48 12 1 0 0 0 0 0 0 3 3 -1024 1006 1024 1006 1025 1025 1007 1007 48 12 0 3 2 2 3 3 2 2 2 -1024 1006 1024 1006 1025 1025 1007 1007 48 12 1 0 0 0 0 0 0 3 3 -1024 1006 1025 1007 1007 1007 1007 1007 53 13 0 3 2 2 3 2 3 3 2 -1024 1006 1025 1007 1007 1007 1008 1008 53 13 0 3 2 2 3 2 3 3 2 -1024 1006 1025 1007 1025 1025 1007 1007 48 13 0 3 2 2 3 2 3 3 2 -1024 1006 1025 1007 1025 1025 1008 1008 48 13 0 3 2 2 3 2 3 3 2 -1024 1024 1024 1024 1024 1024 1007 1007 43 12 0 3 2 2 3 3 2 2 2 -1024 1024 1024 1024 1024 1024 1007 1007 43 12 1 0 0 0 0 0 0 3 3 -1024 1024 1024 1024 1024 1024 1025 1025 39 12 0 3 2 2 3 3 2 2 2 -1024 1024 1024 1024 1024 1024 1025 1025 39 12 1 0 0 0 0 0 0 3 3 -1024 1024 1024 1024 1025 1025 1007 1007 43 12 0 3 2 2 3 3 2 2 2 -1024 1024 1024 1024 1025 1025 1007 1007 43 12 1 0 0 0 0 0 0 3 3 -1024 1024 1024 1024 1025 1025 1025 1025 39 12 0 3 2 2 3 3 2 2 2 -1024 1024 1024 1024 1025 1025 1025 1025 39 12 1 0 0 0 0 0 0 3 3 -1024 1024 1025 1025 1025 1025 1007 1007 43 13 0 3 2 2 3 2 3 3 2 -1024 1024 1025 1025 1025 1025 1008 1008 43 13 0 3 2 2 3 2 3 3 2 -1024 1024 1025 1025 1025 1025 1025 1025 39 13 0 3 2 2 3 2 3 3 2 -1024 1024 1025 1025 1025 1025 1026 1026 39 13 0 3 2 2 3 2 3 3 2 -1025 1007 1025 1007 1007 1007 1008 1008 53 14 0 3 2 2 2 2 3 3 2 -1025 1007 1025 1007 1007 1007 1008 1008 53 14 1 0 0 3 3 0 0 0 0 -1025 1007 1025 1007 1008 1008 1008 1008 53 14 0 3 2 2 2 2 3 3 2 -1025 1007 1025 1007 1008 1008 1008 1008 53 14 1 0 0 3 3 0 0 0 0 -1025 1007 1025 1007 1025 1025 1008 1008 48 14 0 3 2 2 2 2 3 3 2 -1025 1007 1025 1007 1025 1025 1008 1008 48 14 1 0 0 3 3 0 0 0 0 -1025 1007 1025 1007 1026 1026 1008 1008 48 14 0 3 2 2 2 2 3 3 2 -1025 1007 1025 1007 1026 1026 1008 1008 48 14 1 0 0 3 3 0 0 0 0 -1025 1007 1026 1008 1008 1008 1008 1008 53 15 0 2 2 3 2 2 3 3 2 -1025 1007 1026 1008 1008 1008 1008 1008 53 15 1 3 3 0 0 0 0 0 0 -1025 1007 1026 1008 1008 1008 1009 1009 53 15 0 2 2 3 2 2 3 3 2 -1025 1007 1026 1008 1008 1008 1009 1009 53 15 1 3 3 0 0 0 0 0 0 -1025 1007 1026 1008 1026 1026 1008 1008 48 15 0 2 2 3 2 2 3 3 2 -1025 1007 1026 1008 1026 1026 1008 1008 48 15 1 3 3 0 0 0 0 0 0 -1025 1007 1026 1008 1026 1026 1009 1009 48 15 0 2 2 3 2 2 3 3 2 -1025 1007 1026 1008 1026 1026 1009 1009 48 15 1 3 3 0 0 0 0 0 0 -1025 1025 1025 1025 1025 1025 1008 1008 43 14 0 3 2 2 2 2 3 3 2 -1025 1025 1025 1025 1025 1025 1008 1008 43 14 1 0 0 3 3 0 0 0 0 -1025 1025 1025 1025 1025 1025 1026 1026 39 14 0 3 2 2 2 2 3 3 2 -1025 1025 1025 1025 1025 1025 1026 1026 39 14 1 0 0 3 3 0 0 0 0 -1025 1025 1025 1025 1026 1026 1008 1008 43 14 0 3 2 2 2 2 3 3 2 -1025 1025 1025 1025 1026 1026 1008 1008 43 14 1 0 0 3 3 0 0 0 0 -1025 1025 1025 1025 1026 1026 1026 1026 39 14 0 3 2 2 2 2 3 3 2 -1025 1025 1025 1025 1026 1026 1026 1026 39 14 1 0 0 3 3 0 0 0 0 -1025 1025 1026 1026 1026 1026 1008 1008 43 15 0 2 2 3 2 2 3 3 2 -1025 1025 1026 1026 1026 1026 1008 1008 43 15 1 3 3 0 0 0 0 0 0 -1025 1025 1026 1026 1026 1026 1009 1009 43 15 0 2 2 3 2 2 3 3 2 -1025 1025 1026 1026 1026 1026 1009 1009 43 15 1 3 3 0 0 0 0 0 0 -1025 1025 1026 1026 1026 1026 1026 1026 39 15 0 2 2 3 2 2 3 3 2 -1025 1025 1026 1026 1026 1026 1026 1026 39 15 1 3 3 0 0 0 0 0 0 -1025 1025 1026 1026 1026 1026 1027 1027 39 15 0 2 2 3 2 2 3 3 2 -1025 1025 1026 1026 1026 1026 1027 1027 39 15 1 3 3 0 0 0 0 0 0 -1026 1008 1026 1008 1008 1008 1009 1009 53 16 0 2 3 3 2 2 3 3 2 -1026 1008 1026 1008 1009 1009 1009 1009 53 16 0 2 3 3 2 2 3 3 2 -1026 1008 1026 1008 1026 1026 1009 1009 48 16 0 2 3 3 2 2 3 3 2 -1026 1008 1026 1008 1027 1027 1009 1009 48 16 0 2 3 3 2 2 3 3 2 -1026 1008 1027 1009 1009 1009 1009 1009 53 17 0 2 3 3 2 2 3 3 2 -1026 1008 1027 1009 1009 1009 1010 1010 53 17 0 2 3 3 2 2 3 3 2 -1026 1008 1027 1009 1027 1027 1009 1009 48 17 0 2 3 3 2 2 3 3 2 -1026 1008 1027 1009 1027 1027 1010 1010 48 17 0 2 3 3 2 2 3 3 2 -1026 1026 1026 1026 1026 1026 1009 1009 43 16 0 2 3 3 2 2 3 3 2 -1026 1026 1026 1026 1026 1026 1027 1027 39 16 0 2 3 3 2 2 3 3 2 -1026 1026 1026 1026 1027 1027 1009 1009 43 16 0 2 3 3 2 2 3 3 2 -1026 1026 1026 1026 1027 1027 1027 1027 39 16 0 2 3 3 2 2 3 3 2 -1026 1026 1027 1027 1027 1027 1009 1009 43 17 0 2 3 3 2 2 3 3 2 -1026 1026 1027 1027 1027 1027 1010 1010 43 17 0 2 3 3 2 2 3 3 2 -1026 1026 1027 1027 1027 1027 1027 1027 39 17 0 2 3 3 2 2 3 3 2 -1026 1026 1027 1027 1027 1027 1028 1028 39 17 0 2 3 3 2 2 3 3 2 -1027 1009 1027 1009 1009 1009 1010 1010 53 18 0 2 3 3 2 2 3 3 2 -1027 1009 1027 1009 1010 1010 1010 1010 53 18 0 2 3 3 2 2 3 3 2 -1027 1009 1027 1009 1027 1027 1010 1010 48 18 0 2 3 3 2 2 3 3 2 -1027 1009 1027 1009 1028 1028 1010 1010 48 18 0 2 3 3 2 2 3 3 2 -1027 1009 1028 1010 1010 1010 1010 1010 53 19 0 2 3 3 2 2 3 3 2 -1027 1009 1028 1010 1010 1010 1011 1011 53 19 0 2 3 3 2 2 3 3 2 -1027 1009 1028 1010 1028 1028 1010 1010 48 19 0 2 3 3 2 2 3 3 2 -1027 1009 1028 1010 1028 1028 1011 1011 48 19 0 2 3 3 2 2 3 3 2 -1027 1027 1027 1027 1027 1027 1010 1010 43 18 0 2 3 3 2 2 3 3 2 -1027 1027 1027 1027 1027 1027 1028 1028 39 18 0 2 3 3 2 2 3 3 2 -1027 1027 1027 1027 1028 1028 1010 1010 43 18 0 2 3 3 2 2 3 3 2 -1027 1027 1027 1027 1028 1028 1028 1028 39 18 0 2 3 3 2 2 3 3 2 -1027 1027 1028 1028 1028 1028 1010 1010 43 19 0 2 3 3 2 2 3 3 2 -1027 1027 1028 1028 1028 1028 1011 1011 43 19 0 2 3 3 2 2 3 3 2 -1027 1027 1028 1028 1028 1028 1028 1028 39 19 0 2 3 3 2 2 3 3 2 -1027 1027 1028 1028 1028 1028 1029 1029 39 19 0 2 3 3 2 2 3 3 2 -1028 1010 1028 1010 1010 1010 1011 1011 53 20 0 2 3 3 2 2 3 3 2 -1028 1010 1028 1010 1011 1011 1011 1011 53 20 0 2 3 3 2 2 3 3 2 -1028 1010 1028 1010 1028 1028 1011 1011 48 20 0 2 3 3 2 2 3 3 2 -1028 1010 1028 1010 1029 1029 1011 1011 48 20 0 2 3 3 2 2 3 3 2 -1028 1010 1029 1011 1011 1011 1011 1011 53 21 0 2 3 3 2 2 3 3 2 -1028 1010 1029 1011 1011 1011 1012 1012 53 21 0 2 3 3 2 2 3 3 2 -1028 1010 1029 1011 1029 1029 1011 1011 48 21 0 2 3 3 2 2 3 3 2 -1028 1010 1029 1011 1029 1029 1012 1012 48 21 0 2 3 3 2 2 3 3 2 -1028 1028 1028 1028 1028 1028 1011 1011 43 20 0 2 3 3 2 2 3 3 2 -1028 1028 1028 1028 1028 1028 1029 1029 39 20 0 2 3 3 2 2 3 3 2 -1028 1028 1028 1028 1029 1029 1011 1011 43 20 0 2 3 3 2 2 3 3 2 -1028 1028 1028 1028 1029 1029 1029 1029 39 20 0 2 3 3 2 2 3 3 2 -1028 1028 1029 1029 1029 1029 1011 1011 43 21 0 2 3 3 2 2 3 3 2 -1028 1028 1029 1029 1029 1029 1012 1012 43 21 0 2 3 3 2 2 3 3 2 -1028 1028 1029 1029 1029 1029 1029 1029 39 21 0 2 3 3 2 2 3 3 2 -1028 1028 1029 1029 1029 1029 1030 1030 39 21 0 2 3 3 2 2 3 3 2 -1029 1011 1029 1011 1011 1011 1012 1012 53 22 0 2 3 3 2 2 3 3 2 -1029 1011 1029 1011 1012 1012 1012 1012 53 22 0 2 3 3 2 2 3 3 2 -1029 1011 1029 1011 1029 1029 1012 1012 48 22 0 2 3 3 2 2 3 3 2 -1029 1011 1029 1011 1030 1030 1012 1012 48 22 0 2 3 3 2 2 3 3 2 -1029 1011 1030 1012 1012 1012 1012 1012 53 23 0 2 3 3 2 1 3 3 1 -1029 1011 1030 1012 1012 1012 1012 1012 53 23 1 0 0 0 0 2 4 4 0 -1029 1011 1030 1012 1012 1012 1013 1013 53 23 0 2 3 3 2 1 3 3 1 -1029 1011 1030 1012 1012 1012 1013 1013 53 23 1 0 0 0 0 2 4 4 0 -1029 1011 1030 1012 1030 1030 1012 1012 48 23 0 2 3 3 2 1 3 3 1 -1029 1011 1030 1012 1030 1030 1012 1012 48 23 1 0 0 0 0 2 4 4 0 -1029 1011 1030 1012 1030 1030 1013 1013 48 23 0 2 3 3 2 1 3 3 1 -1029 1011 1030 1012 1030 1030 1013 1013 48 23 1 0 0 0 0 2 4 4 0 -1029 1029 1029 1029 1029 1029 1012 1012 43 22 0 2 3 3 2 2 3 3 2 -1029 1029 1029 1029 1029 1029 1030 1030 39 22 0 2 3 3 2 2 3 3 2 -1029 1029 1029 1029 1030 1030 1012 1012 43 22 0 2 3 3 2 2 3 3 2 -1029 1029 1029 1029 1030 1030 1030 1030 39 22 0 2 3 3 2 2 3 3 2 -1029 1029 1030 1030 1030 1030 1012 1012 43 23 0 2 3 3 2 1 3 3 1 -1029 1029 1030 1030 1030 1030 1012 1012 43 23 1 0 0 0 0 2 4 4 0 -1029 1029 1030 1030 1030 1030 1013 1013 43 23 0 2 3 3 2 1 3 3 1 -1029 1029 1030 1030 1030 1030 1013 1013 43 23 1 0 0 0 0 2 4 4 0 -1029 1029 1030 1030 1030 1030 1030 1030 39 23 0 2 3 3 2 1 3 3 1 -1029 1029 1030 1030 1030 1030 1030 1030 39 23 1 0 0 0 0 2 4 4 0 -1029 1029 1030 1030 1030 1030 1031 1031 39 23 0 2 3 3 2 1 3 3 1 -1029 1029 1030 1030 1030 1030 1031 1031 39 23 1 0 0 0 0 2 4 4 0 -1030 1012 1030 1012 1012 1012 1013 1013 53 24 0 2 3 3 2 1 4 4 1 -1030 1012 1030 1012 1013 1013 1013 1013 53 24 0 2 3 3 2 1 4 4 1 -1030 1012 1030 1012 1030 1030 1013 1013 48 24 0 2 3 3 2 1 4 4 1 -1030 1012 1030 1012 1031 1031 1013 1013 48 24 0 2 3 3 2 1 4 4 1 -1030 1012 1031 1013 1013 1013 1013 1013 53 25 0 2 3 3 1 1 4 4 1 -1030 1012 1031 1013 1013 1013 1013 1013 53 25 1 0 0 4 2 0 0 0 0 -1030 1012 1031 1013 1013 1013 1014 1014 53 25 0 2 3 3 1 1 4 4 1 -1030 1012 1031 1013 1013 1013 1014 1014 53 25 1 0 0 4 2 0 0 0 0 -1030 1012 1031 1013 1031 1031 1013 1013 48 25 0 2 3 3 1 1 4 4 1 -1030 1012 1031 1013 1031 1031 1013 1013 48 25 1 0 0 4 2 0 0 0 0 -1030 1012 1031 1013 1031 1031 1014 1014 48 25 0 2 3 3 1 1 4 4 1 -1030 1012 1031 1013 1031 1031 1014 1014 48 25 1 0 0 4 2 0 0 0 0 -1030 1030 1030 1030 1030 1030 1013 1013 43 24 0 2 3 3 2 1 4 4 1 -1030 1030 1030 1030 1030 1030 1031 1031 39 24 0 2 3 3 2 1 4 4 1 -1030 1030 1030 1030 1031 1031 1013 1013 43 24 0 2 3 3 2 1 4 4 1 -1030 1030 1030 1030 1031 1031 1031 1031 39 24 0 2 3 3 2 1 4 4 1 -1030 1030 1031 1031 1031 1031 1013 1013 43 25 0 2 3 3 1 1 4 4 1 -1030 1030 1031 1031 1031 1031 1013 1013 43 25 1 0 0 4 2 0 0 0 0 -1030 1030 1031 1031 1031 1031 1014 1014 43 25 0 2 3 3 1 1 4 4 1 -1030 1030 1031 1031 1031 1031 1014 1014 43 25 1 0 0 4 2 0 0 0 0 -1030 1030 1031 1031 1031 1031 1031 1031 39 25 0 2 3 3 1 1 4 4 1 -1030 1030 1031 1031 1031 1031 1031 1031 39 25 1 0 0 4 2 0 0 0 0 -1030 1030 1031 1031 1031 1031 1032 1032 39 25 0 2 3 3 1 1 4 4 1 -1030 1030 1031 1031 1031 1031 1032 1032 39 25 1 0 0 4 2 0 0 0 0 -1031 1013 1031 1013 1013 1013 1014 1014 53 26 0 1 3 4 1 1 4 4 1 -1031 1013 1031 1013 1013 1013 1014 1014 53 26 1 2 4 0 0 0 0 0 0 -1031 1013 1031 1013 1014 1014 1014 1014 53 26 0 1 3 4 1 1 4 4 1 -1031 1013 1031 1013 1014 1014 1014 1014 53 26 1 2 4 0 0 0 0 0 0 -1031 1013 1031 1013 1031 1031 1014 1014 48 26 0 1 3 4 1 1 4 4 1 -1031 1013 1031 1013 1031 1031 1014 1014 48 26 1 2 4 0 0 0 0 0 0 -1031 1013 1031 1013 1032 1032 1014 1014 48 26 0 1 3 4 1 1 4 4 1 -1031 1013 1031 1013 1032 1032 1014 1014 48 26 1 2 4 0 0 0 0 0 0 -1031 1013 1032 1014 1014 1014 1014 1014 53 27 0 1 4 4 1 1 4 4 1 -1031 1013 1032 1014 1014 1014 1015 1015 53 27 0 1 4 4 1 1 4 4 1 -1031 1013 1032 1014 1032 1032 1014 1014 48 27 0 1 4 4 1 1 4 4 1 -1031 1013 1032 1014 1032 1032 1015 1015 48 27 0 1 4 4 1 1 4 4 1 -1031 1031 1031 1031 1031 1031 1014 1014 43 26 0 1 3 4 1 1 4 4 1 -1031 1031 1031 1031 1031 1031 1014 1014 43 26 1 2 4 0 0 0 0 0 0 -1031 1031 1031 1031 1031 1031 1032 1032 39 26 0 1 3 4 1 1 4 4 1 -1031 1031 1031 1031 1031 1031 1032 1032 39 26 1 2 4 0 0 0 0 0 0 -1031 1031 1031 1031 1032 1032 1014 1014 43 26 0 1 3 4 1 1 4 4 1 -1031 1031 1031 1031 1032 1032 1014 1014 43 26 1 2 4 0 0 0 0 0 0 -1031 1031 1031 1031 1032 1032 1032 1032 39 26 0 1 3 4 1 1 4 4 1 -1031 1031 1031 1031 1032 1032 1032 1032 39 26 1 2 4 0 0 0 0 0 0 -1031 1031 1032 1032 1032 1032 1014 1014 43 27 0 1 4 4 1 1 4 4 1 -1031 1031 1032 1032 1032 1032 1015 1015 43 27 0 1 4 4 1 1 4 4 1 -1031 1031 1032 1032 1032 1032 1032 1032 39 27 0 1 4 4 1 1 4 4 1 -1031 1031 1032 1032 1032 1032 1033 1033 39 27 0 1 4 4 1 1 4 4 1 -1032 1014 1032 1014 1014 1014 1015 1015 53 28 0 1 4 4 1 1 4 4 1 -1032 1014 1032 1014 1015 1015 1015 1015 53 28 0 1 4 4 1 1 4 4 1 -1032 1014 1032 1014 1032 1032 1015 1015 48 28 0 1 4 4 1 1 4 4 1 -1032 1014 1032 1014 1033 1033 1015 1015 48 28 0 1 4 4 1 1 4 4 1 -1032 1014 1033 1015 1015 1015 1015 1015 53 29 0 1 4 4 1 1 4 4 0 -1032 1014 1033 1015 1015 1015 1016 1016 53 29 0 1 4 4 1 1 4 4 0 -1032 1014 1033 1015 1033 1033 1015 1015 48 29 0 1 4 4 1 1 4 4 0 -1032 1014 1033 1015 1033 1033 1016 1016 48 29 0 1 4 4 1 1 4 4 0 -1032 1032 1032 1032 1032 1032 1015 1015 43 28 0 1 4 4 1 1 4 4 1 -1032 1032 1032 1032 1032 1032 1033 1033 39 28 0 1 4 4 1 1 4 4 1 -1032 1032 1032 1032 1033 1033 1015 1015 43 28 0 1 4 4 1 1 4 4 1 -1032 1032 1032 1032 1033 1033 1033 1033 39 28 0 1 4 4 1 1 4 4 1 -1032 1032 1033 1033 1033 1033 1015 1015 43 29 0 1 4 4 1 1 4 4 0 -1032 1032 1033 1033 1033 1033 1016 1016 43 29 0 1 4 4 1 1 4 4 0 -1032 1032 1033 1033 1033 1033 1033 1033 39 29 0 1 4 4 1 1 4 4 0 -1032 1032 1033 1033 1033 1033 1034 1034 39 29 0 1 4 4 1 1 4 4 0 -1033 1015 1033 1015 1015 1015 1016 1016 53 30 0 1 4 4 1 0 4 4 0 -1033 1015 1033 1015 1016 1016 1016 1016 53 30 0 1 4 4 1 0 4 4 0 -1033 1015 1033 1015 1033 1033 1016 1016 48 30 0 1 4 4 1 0 4 4 0 -1033 1015 1033 1015 1034 1034 1016 1016 48 30 0 1 4 4 1 0 4 4 0 -1033 1015 1034 1016 1016 1016 1016 1016 53 31 0 1 4 4 1 0 4 4 0 -1033 1015 1034 1016 1016 1016 1017 1017 53 31 0 1 4 4 1 0 4 4 0 -1033 1015 1034 1016 1034 1034 1016 1016 48 31 0 1 4 4 1 0 4 4 0 -1033 1015 1034 1016 1034 1034 1017 1017 48 31 0 1 4 4 1 0 4 4 0 -1033 1033 1033 1033 1033 1033 1016 1016 43 30 0 1 4 4 1 0 4 4 0 -1033 1033 1033 1033 1033 1033 1034 1034 39 30 0 1 4 4 1 0 4 4 0 -1033 1033 1033 1033 1034 1034 1016 1016 43 30 0 1 4 4 1 0 4 4 0 -1033 1033 1033 1033 1034 1034 1034 1034 39 30 0 1 4 4 1 0 4 4 0 -1033 1033 1034 1034 1034 1034 1016 1016 43 31 0 1 4 4 1 0 4 4 0 -1033 1033 1034 1034 1034 1034 1017 1017 43 31 0 1 4 4 1 0 4 4 0 -1033 1033 1034 1034 1034 1034 1034 1034 39 31 0 1 4 4 1 0 4 4 0 -1033 1033 1034 1034 1034 1034 1035 1035 39 31 0 1 4 4 1 0 4 4 0 -1034 1016 1034 1016 1016 1016 1017 1017 53 32 0 1 4 4 0 0 4 4 0 -1034 1016 1034 1016 1017 1017 1017 1017 53 32 0 1 4 4 0 0 4 4 0 -1034 1016 1034 1016 1034 1034 1017 1017 48 32 0 1 4 4 0 0 4 4 0 -1034 1016 1034 1016 1035 1035 1017 1017 48 32 0 1 4 4 0 0 4 4 0 -1034 1016 1035 1017 1017 1017 1017 1017 53 32 0 1 4 4 0 0 4 4 0 -1034 1016 1035 1017 1035 1035 1017 1017 48 32 0 1 4 4 0 0 4 4 0 -1034 1034 1034 1034 1034 1034 1017 1017 43 32 0 1 4 4 0 0 4 4 0 -1034 1034 1034 1034 1034 1034 1035 1035 39 32 0 1 4 4 0 0 4 4 0 -1034 1034 1034 1034 1035 1035 1017 1017 43 32 0 1 4 4 0 0 4 4 0 -1034 1034 1034 1034 1035 1035 1035 1035 39 32 0 1 4 4 0 0 4 4 0 -1034 1034 1035 1035 1035 1035 1017 1017 43 32 0 1 4 4 0 0 4 4 0 -1034 1034 1035 1035 1035 1035 1035 1035 39 32 0 1 4 4 0 0 4 4 0 -1035 1017 1035 1017 2001 2001 2001 2001 51 34 0 0 4 4 0 8 6 6 8 -1035 1017 1035 1017 2001 2001 2001 2019 46 34 0 0 4 4 0 8 6 6 8 -1035 1017 1035 1017 2001 2001 2019 2019 45 34 0 0 4 4 0 8 6 6 8 -1035 1017 1036 1018 2001 2001 2001 2001 51 35 0 0 4 0 0 8 6 6 8 -1035 1017 1036 1018 2001 2001 2001 2019 46 35 0 0 4 0 0 8 6 6 8 -1035 1017 1036 1018 2001 2001 2002 2002 51 35 0 0 4 0 0 8 6 6 8 -1035 1017 1036 1018 2001 2001 2002 2020 46 35 0 0 4 0 0 8 6 6 8 -1035 1017 1036 1018 2001 2001 2019 2019 45 35 0 0 4 0 0 8 6 6 8 -1035 1017 1036 1018 2001 2001 2020 2020 45 35 0 0 4 0 0 8 6 6 8 -1035 1035 1035 1035 2001 2001 2019 2019 41 34 0 0 4 4 0 8 6 6 8 -1035 1035 1036 1036 2001 2001 2019 2019 41 35 0 0 4 0 0 8 6 6 8 -1035 1035 1036 1036 2001 2001 2020 2020 41 35 0 0 4 0 0 8 6 6 8 -1037 1019 1037 1019 1019 1019 1020 1020 34 2 0 0 0 0 0 0 0 0 0 -1037 1019 1037 1019 1020 1020 1020 1020 34 2 0 0 0 0 0 0 0 0 0 -1037 1019 1037 1019 1037 1037 1020 1020 29 2 0 0 0 0 0 0 0 0 0 -1037 1019 1037 1019 1038 1038 1020 1020 29 2 0 0 0 0 0 0 0 0 0 -1037 1019 1038 1020 1020 1020 1020 1020 34 3 0 0 0 0 0 0 0 0 0 -1037 1019 1038 1020 1020 1020 1021 1021 34 3 0 0 0 0 0 0 0 0 0 -1037 1019 1038 1020 1038 1038 1020 1020 29 3 0 0 0 0 0 0 0 0 0 -1037 1019 1038 1020 1038 1038 1021 1021 29 3 0 0 0 0 0 0 0 0 0 -1037 1037 1037 1037 1037 1037 1020 1020 24 2 0 0 0 0 0 0 0 0 0 -1037 1037 1037 1037 1037 1037 1038 1038 20 2 0 0 0 0 0 0 0 0 0 -1037 1037 1037 1037 1038 1038 1020 1020 24 2 0 0 0 0 0 0 0 0 0 -1037 1037 1037 1037 1038 1038 1038 1038 20 2 0 0 0 0 0 0 0 0 0 -1037 1037 1038 1038 1038 1038 1020 1020 24 3 0 0 0 0 0 0 0 0 0 -1037 1037 1038 1038 1038 1038 1021 1021 24 3 0 0 0 0 0 0 0 0 0 -1037 1037 1038 1038 1038 1038 1038 1038 20 3 0 0 0 0 0 0 0 0 0 -1037 1037 1038 1038 1038 1038 1039 1039 20 3 0 0 0 0 0 0 0 0 0 -1038 1020 1038 1020 1020 1020 1021 1021 34 4 0 0 0 0 0 0 0 0 0 -1038 1020 1038 1020 1021 1021 1021 1021 34 4 0 0 0 0 0 0 0 0 0 -1038 1020 1038 1020 1038 1038 1021 1021 29 4 0 0 0 0 0 0 0 0 0 -1038 1020 1038 1020 1039 1039 1021 1021 29 4 0 0 0 0 0 0 0 0 0 -1038 1020 1039 1021 1021 1021 1021 1021 34 5 0 0 0 0 0 0 0 0 0 -1038 1020 1039 1021 1021 1021 1022 1022 34 5 0 0 0 0 0 0 0 0 0 -1038 1020 1039 1021 1039 1039 1021 1021 29 5 0 0 0 0 0 0 0 0 0 -1038 1020 1039 1021 1039 1039 1022 1022 29 5 0 0 0 0 0 0 0 0 0 -1038 1038 1038 1038 1038 1038 1021 1021 24 4 0 0 0 0 0 0 0 0 0 -1038 1038 1038 1038 1038 1038 1039 1039 20 4 0 0 0 0 0 0 0 0 0 -1038 1038 1038 1038 1039 1039 1021 1021 24 4 0 0 0 0 0 0 0 0 0 -1038 1038 1038 1038 1039 1039 1039 1039 20 4 0 0 0 0 0 0 0 0 0 -1038 1038 1039 1039 1039 1039 1021 1021 24 5 0 0 0 0 0 0 0 0 0 -1038 1038 1039 1039 1039 1039 1022 1022 24 5 0 0 0 0 0 0 0 0 0 -1038 1038 1039 1039 1039 1039 1039 1039 20 5 0 0 0 0 0 0 0 0 0 -1038 1038 1039 1039 1039 1039 1040 1040 20 5 0 0 0 0 0 0 0 0 0 -1039 1021 1039 1021 1021 1021 1022 1022 34 6 0 0 0 0 0 3 2 2 3 -1039 1021 1039 1021 1022 1022 1022 1022 34 6 0 0 0 0 0 3 2 2 3 -1039 1021 1039 1021 1039 1039 1022 1022 29 6 0 0 0 0 0 3 2 2 3 -1039 1021 1039 1021 1040 1040 1022 1022 29 6 0 0 0 0 0 3 2 2 3 -1039 1021 1040 1022 1022 1022 1022 1022 34 7 0 0 0 0 0 3 2 2 3 -1039 1021 1040 1022 1022 1022 1023 1023 34 7 0 0 0 0 0 3 2 2 3 -1039 1021 1040 1022 1040 1040 1022 1022 29 7 0 0 0 0 0 3 2 2 3 -1039 1021 1040 1022 1040 1040 1023 1023 29 7 0 0 0 0 0 3 2 2 3 -1039 1039 1039 1039 1039 1039 1022 1022 24 6 0 0 0 0 0 3 2 2 3 -1039 1039 1039 1039 1039 1039 1040 1040 20 6 0 0 0 0 0 3 2 2 3 -1039 1039 1039 1039 1040 1040 1022 1022 24 6 0 0 0 0 0 3 2 2 3 -1039 1039 1039 1039 1040 1040 1040 1040 20 6 0 0 0 0 0 3 2 2 3 -1039 1039 1040 1040 1040 1040 1022 1022 24 7 0 0 0 0 0 3 2 2 3 -1039 1039 1040 1040 1040 1040 1023 1023 24 7 0 0 0 0 0 3 2 2 3 -1039 1039 1040 1040 1040 1040 1040 1040 20 7 0 0 0 0 0 3 2 2 3 -1039 1039 1040 1040 1040 1040 1041 1041 20 7 0 0 0 0 0 3 2 2 3 -1040 1022 1040 1022 1022 1022 1023 1023 34 8 0 3 2 2 3 3 2 2 3 -1040 1022 1040 1022 1023 1023 1023 1023 34 8 0 3 2 2 3 3 2 2 3 -1040 1022 1040 1022 1040 1040 1023 1023 29 8 0 3 2 2 3 3 2 2 3 -1040 1022 1040 1022 1041 1041 1023 1023 29 8 0 3 2 2 3 3 2 2 3 -1040 1022 1041 1023 1023 1023 1023 1023 34 9 0 3 2 2 3 3 2 2 3 -1040 1022 1041 1023 1023 1023 1024 1024 34 9 0 3 2 2 3 3 2 2 3 -1040 1022 1041 1023 1041 1041 1023 1023 29 9 0 3 2 2 3 3 2 2 3 -1040 1022 1041 1023 1041 1041 1024 1024 29 9 0 3 2 2 3 3 2 2 3 -1040 1040 1040 1040 1040 1040 1023 1023 24 8 0 3 2 2 3 3 2 2 3 -1040 1040 1040 1040 1040 1040 1041 1041 20 8 0 3 2 2 3 3 2 2 3 -1040 1040 1040 1040 1041 1041 1023 1023 24 8 0 3 2 2 3 3 2 2 3 -1040 1040 1040 1040 1041 1041 1041 1041 20 8 0 3 2 2 3 3 2 2 3 -1040 1040 1041 1041 1041 1041 1023 1023 24 9 0 3 2 2 3 3 2 2 3 -1040 1040 1041 1041 1041 1041 1024 1024 24 9 0 3 2 2 3 3 2 2 3 -1040 1040 1041 1041 1041 1041 1041 1041 20 9 0 3 2 2 3 3 2 2 3 -1040 1040 1041 1041 1041 1041 1042 1042 20 9 0 3 2 2 3 3 2 2 3 -1041 1023 1041 1023 1023 1023 1024 1024 34 10 0 3 2 2 3 3 2 2 3 -1041 1023 1041 1023 1024 1024 1024 1024 34 10 0 3 2 2 3 3 2 2 3 -1041 1023 1041 1023 1041 1041 1024 1024 29 10 0 3 2 2 3 3 2 2 3 -1041 1023 1041 1023 1042 1042 1024 1024 29 10 0 3 2 2 3 3 2 2 3 -1041 1023 1042 1024 1024 1024 1024 1024 34 11 0 3 2 2 3 3 2 2 3 -1041 1023 1042 1024 1024 1024 1025 1025 34 11 0 3 2 2 3 3 2 2 3 -1041 1023 1042 1024 1042 1042 1024 1024 29 11 0 3 2 2 3 3 2 2 3 -1041 1023 1042 1024 1042 1042 1025 1025 29 11 0 3 2 2 3 3 2 2 3 -1041 1041 1041 1041 1041 1041 1024 1024 24 10 0 3 2 2 3 3 2 2 3 -1041 1041 1041 1041 1041 1041 1042 1042 20 10 0 3 2 2 3 3 2 2 3 -1041 1041 1041 1041 1042 1042 1024 1024 24 10 0 3 2 2 3 3 2 2 3 -1041 1041 1041 1041 1042 1042 1042 1042 20 10 0 3 2 2 3 3 2 2 3 -1041 1041 1042 1042 1042 1042 1024 1024 24 11 0 3 2 2 3 3 2 2 3 -1041 1041 1042 1042 1042 1042 1025 1025 24 11 0 3 2 2 3 3 2 2 3 -1041 1041 1042 1042 1042 1042 1042 1042 20 11 0 3 2 2 3 3 2 2 3 -1041 1041 1042 1042 1042 1042 1043 1043 20 11 0 3 2 2 3 3 2 2 3 -1042 1024 1042 1024 1024 1024 1025 1025 34 12 0 3 2 2 3 3 2 2 2 -1042 1024 1042 1024 1024 1024 1025 1025 34 12 1 0 0 0 0 0 0 3 3 -1042 1024 1042 1024 1025 1025 1025 1025 34 12 0 3 2 2 3 3 2 2 2 -1042 1024 1042 1024 1025 1025 1025 1025 34 12 1 0 0 0 0 0 0 3 3 -1042 1024 1042 1024 1042 1042 1025 1025 29 12 0 3 2 2 3 3 2 2 2 -1042 1024 1042 1024 1042 1042 1025 1025 29 12 1 0 0 0 0 0 0 3 3 -1042 1024 1042 1024 1043 1043 1025 1025 29 12 0 3 2 2 3 3 2 2 2 -1042 1024 1042 1024 1043 1043 1025 1025 29 12 1 0 0 0 0 0 0 3 3 -1042 1024 1043 1025 1025 1025 1025 1025 34 13 0 3 2 2 3 2 3 3 2 -1042 1024 1043 1025 1025 1025 1026 1026 34 13 0 3 2 2 3 2 3 3 2 -1042 1024 1043 1025 1043 1043 1025 1025 29 13 0 3 2 2 3 2 3 3 2 -1042 1024 1043 1025 1043 1043 1026 1026 29 13 0 3 2 2 3 2 3 3 2 -1042 1042 1042 1042 1042 1042 1025 1025 24 12 0 3 2 2 3 3 2 2 2 -1042 1042 1042 1042 1042 1042 1025 1025 24 12 1 0 0 0 0 0 0 3 3 -1042 1042 1042 1042 1042 1042 1043 1043 20 12 0 3 2 2 3 3 2 2 2 -1042 1042 1042 1042 1042 1042 1043 1043 20 12 1 0 0 0 0 0 0 3 3 -1042 1042 1042 1042 1043 1043 1025 1025 24 12 0 3 2 2 3 3 2 2 2 -1042 1042 1042 1042 1043 1043 1025 1025 24 12 1 0 0 0 0 0 0 3 3 -1042 1042 1042 1042 1043 1043 1043 1043 20 12 0 3 2 2 3 3 2 2 2 -1042 1042 1042 1042 1043 1043 1043 1043 20 12 1 0 0 0 0 0 0 3 3 -1042 1042 1043 1043 1043 1043 1025 1025 24 13 0 3 2 2 3 2 3 3 2 -1042 1042 1043 1043 1043 1043 1026 1026 24 13 0 3 2 2 3 2 3 3 2 -1042 1042 1043 1043 1043 1043 1043 1043 20 13 0 3 2 2 3 2 3 3 2 -1042 1042 1043 1043 1043 1043 1044 1044 20 13 0 3 2 2 3 2 3 3 2 -1043 1025 1043 1025 1025 1025 1026 1026 34 14 0 3 2 2 2 2 3 3 2 -1043 1025 1043 1025 1025 1025 1026 1026 34 14 1 0 0 3 3 0 0 0 0 -1043 1025 1043 1025 1026 1026 1026 1026 34 14 0 3 2 2 2 2 3 3 2 -1043 1025 1043 1025 1026 1026 1026 1026 34 14 1 0 0 3 3 0 0 0 0 -1043 1025 1043 1025 1043 1043 1026 1026 29 14 0 3 2 2 2 2 3 3 2 -1043 1025 1043 1025 1043 1043 1026 1026 29 14 1 0 0 3 3 0 0 0 0 -1043 1025 1043 1025 1044 1044 1026 1026 29 14 0 3 2 2 2 2 3 3 2 -1043 1025 1043 1025 1044 1044 1026 1026 29 14 1 0 0 3 3 0 0 0 0 -1043 1025 1044 1026 1026 1026 1026 1026 34 15 0 2 2 3 2 2 3 3 2 -1043 1025 1044 1026 1026 1026 1026 1026 34 15 1 3 3 0 0 0 0 0 0 -1043 1025 1044 1026 1026 1026 1027 1027 34 15 0 2 2 3 2 2 3 3 2 -1043 1025 1044 1026 1026 1026 1027 1027 34 15 1 3 3 0 0 0 0 0 0 -1043 1025 1044 1026 1044 1044 1026 1026 29 15 0 2 2 3 2 2 3 3 2 -1043 1025 1044 1026 1044 1044 1026 1026 29 15 1 3 3 0 0 0 0 0 0 -1043 1025 1044 1026 1044 1044 1027 1027 29 15 0 2 2 3 2 2 3 3 2 -1043 1025 1044 1026 1044 1044 1027 1027 29 15 1 3 3 0 0 0 0 0 0 -1043 1043 1043 1043 1043 1043 1026 1026 24 14 0 3 2 2 2 2 3 3 2 -1043 1043 1043 1043 1043 1043 1026 1026 24 14 1 0 0 3 3 0 0 0 0 -1043 1043 1043 1043 1043 1043 1044 1044 20 14 0 3 2 2 2 2 3 3 2 -1043 1043 1043 1043 1043 1043 1044 1044 20 14 1 0 0 3 3 0 0 0 0 -1043 1043 1043 1043 1044 1044 1026 1026 24 14 0 3 2 2 2 2 3 3 2 -1043 1043 1043 1043 1044 1044 1026 1026 24 14 1 0 0 3 3 0 0 0 0 -1043 1043 1043 1043 1044 1044 1044 1044 20 14 0 3 2 2 2 2 3 3 2 -1043 1043 1043 1043 1044 1044 1044 1044 20 14 1 0 0 3 3 0 0 0 0 -1043 1043 1044 1044 1044 1044 1026 1026 24 15 0 2 2 3 2 2 3 3 2 -1043 1043 1044 1044 1044 1044 1026 1026 24 15 1 3 3 0 0 0 0 0 0 -1043 1043 1044 1044 1044 1044 1027 1027 24 15 0 2 2 3 2 2 3 3 2 -1043 1043 1044 1044 1044 1044 1027 1027 24 15 1 3 3 0 0 0 0 0 0 -1043 1043 1044 1044 1044 1044 1044 1044 20 15 0 2 2 3 2 2 3 3 2 -1043 1043 1044 1044 1044 1044 1044 1044 20 15 1 3 3 0 0 0 0 0 0 -1043 1043 1044 1044 1044 1044 1045 1045 20 15 0 2 2 3 2 2 3 3 2 -1043 1043 1044 1044 1044 1044 1045 1045 20 15 1 3 3 0 0 0 0 0 0 -1044 1026 1044 1026 1026 1026 1027 1027 34 16 0 2 3 3 2 2 3 3 2 -1044 1026 1044 1026 1027 1027 1027 1027 34 16 0 2 3 3 2 2 3 3 2 -1044 1026 1044 1026 1044 1044 1027 1027 29 16 0 2 3 3 2 2 3 3 2 -1044 1026 1044 1026 1045 1045 1027 1027 29 16 0 2 3 3 2 2 3 3 2 -1044 1026 1045 1027 1027 1027 1027 1027 34 17 0 2 3 3 2 2 3 3 2 -1044 1026 1045 1027 1027 1027 1028 1028 34 17 0 2 3 3 2 2 3 3 2 -1044 1026 1045 1027 1045 1045 1027 1027 29 17 0 2 3 3 2 2 3 3 2 -1044 1026 1045 1027 1045 1045 1028 1028 29 17 0 2 3 3 2 2 3 3 2 -1044 1044 1044 1044 1044 1044 1027 1027 24 16 0 2 3 3 2 2 3 3 2 -1044 1044 1044 1044 1044 1044 1045 1045 20 16 0 2 3 3 2 2 3 3 2 -1044 1044 1044 1044 1045 1045 1027 1027 24 16 0 2 3 3 2 2 3 3 2 -1044 1044 1044 1044 1045 1045 1045 1045 20 16 0 2 3 3 2 2 3 3 2 -1044 1044 1045 1045 1045 1045 1027 1027 24 17 0 2 3 3 2 2 3 3 2 -1044 1044 1045 1045 1045 1045 1028 1028 24 17 0 2 3 3 2 2 3 3 2 -1044 1044 1045 1045 1045 1045 1045 1045 20 17 0 2 3 3 2 2 3 3 2 -1044 1044 1045 1045 1045 1045 1046 1046 20 17 0 2 3 3 2 2 3 3 2 -1045 1027 1045 1027 1027 1027 1028 1028 34 18 0 2 3 3 2 2 3 3 2 -1045 1027 1045 1027 1028 1028 1028 1028 34 18 0 2 3 3 2 2 3 3 2 -1045 1027 1045 1027 1045 1045 1028 1028 29 18 0 2 3 3 2 2 3 3 2 -1045 1027 1045 1027 1046 1046 1028 1028 29 18 0 2 3 3 2 2 3 3 2 -1045 1027 1046 1028 1028 1028 1028 1028 34 19 0 2 3 3 2 2 3 3 2 -1045 1027 1046 1028 1028 1028 1029 1029 34 19 0 2 3 3 2 2 3 3 2 -1045 1027 1046 1028 1046 1046 1028 1028 29 19 0 2 3 3 2 2 3 3 2 -1045 1027 1046 1028 1046 1046 1029 1029 29 19 0 2 3 3 2 2 3 3 2 -1045 1045 1045 1045 1045 1045 1028 1028 24 18 0 2 3 3 2 2 3 3 2 -1045 1045 1045 1045 1045 1045 1046 1046 20 18 0 2 3 3 2 2 3 3 2 -1045 1045 1045 1045 1046 1046 1028 1028 24 18 0 2 3 3 2 2 3 3 2 -1045 1045 1045 1045 1046 1046 1046 1046 20 18 0 2 3 3 2 2 3 3 2 -1045 1045 1046 1046 1046 1046 1028 1028 24 19 0 2 3 3 2 2 3 3 2 -1045 1045 1046 1046 1046 1046 1029 1029 24 19 0 2 3 3 2 2 3 3 2 -1045 1045 1046 1046 1046 1046 1046 1046 20 19 0 2 3 3 2 2 3 3 2 -1045 1045 1046 1046 1046 1046 1047 1047 20 19 0 2 3 3 2 2 3 3 2 -1046 1028 1046 1028 1028 1028 1029 1029 34 20 0 2 3 3 2 2 3 3 2 -1046 1028 1046 1028 1029 1029 1029 1029 34 20 0 2 3 3 2 2 3 3 2 -1046 1028 1046 1028 1046 1046 1029 1029 29 20 0 2 3 3 2 2 3 3 2 -1046 1028 1046 1028 1047 1047 1029 1029 29 20 0 2 3 3 2 2 3 3 2 -1046 1028 1047 1029 1029 1029 1029 1029 34 21 0 2 3 3 2 2 3 3 2 -1046 1028 1047 1029 1029 1029 1030 1030 34 21 0 2 3 3 2 2 3 3 2 -1046 1028 1047 1029 1047 1047 1029 1029 29 21 0 2 3 3 2 2 3 3 2 -1046 1028 1047 1029 1047 1047 1030 1030 29 21 0 2 3 3 2 2 3 3 2 -1046 1046 1046 1046 1046 1046 1029 1029 24 20 0 2 3 3 2 2 3 3 2 -1046 1046 1046 1046 1046 1046 1047 1047 20 20 0 2 3 3 2 2 3 3 2 -1046 1046 1046 1046 1047 1047 1029 1029 24 20 0 2 3 3 2 2 3 3 2 -1046 1046 1046 1046 1047 1047 1047 1047 20 20 0 2 3 3 2 2 3 3 2 -1046 1046 1047 1047 1047 1047 1029 1029 24 21 0 2 3 3 2 2 3 3 2 -1046 1046 1047 1047 1047 1047 1030 1030 24 21 0 2 3 3 2 2 3 3 2 -1046 1046 1047 1047 1047 1047 1047 1047 20 21 0 2 3 3 2 2 3 3 2 -1046 1046 1047 1047 1047 1047 1048 1048 20 21 0 2 3 3 2 2 3 3 2 -1047 1029 1047 1029 1029 1029 1030 1030 34 22 0 2 3 3 2 2 3 3 2 -1047 1029 1047 1029 1030 1030 1030 1030 34 22 0 2 3 3 2 2 3 3 2 -1047 1029 1047 1029 1047 1047 1030 1030 29 22 0 2 3 3 2 2 3 3 2 -1047 1029 1047 1029 1048 1048 1030 1030 29 22 0 2 3 3 2 2 3 3 2 -1047 1029 1048 1030 1030 1030 1030 1030 34 23 0 2 3 3 2 1 3 3 1 -1047 1029 1048 1030 1030 1030 1030 1030 34 23 1 0 0 0 0 2 4 4 0 -1047 1029 1048 1030 1030 1030 1031 1031 34 23 0 2 3 3 2 1 3 3 1 -1047 1029 1048 1030 1030 1030 1031 1031 34 23 1 0 0 0 0 2 4 4 0 -1047 1029 1048 1030 1048 1048 1030 1030 29 23 0 2 3 3 2 1 3 3 1 -1047 1029 1048 1030 1048 1048 1030 1030 29 23 1 0 0 0 0 2 4 4 0 -1047 1029 1048 1030 1048 1048 1031 1031 29 23 0 2 3 3 2 1 3 3 1 -1047 1029 1048 1030 1048 1048 1031 1031 29 23 1 0 0 0 0 2 4 4 0 -1047 1047 1047 1047 1047 1047 1030 1030 24 22 0 2 3 3 2 2 3 3 2 -1047 1047 1047 1047 1047 1047 1048 1048 20 22 0 2 3 3 2 2 3 3 2 -1047 1047 1047 1047 1048 1048 1030 1030 24 22 0 2 3 3 2 2 3 3 2 -1047 1047 1047 1047 1048 1048 1048 1048 20 22 0 2 3 3 2 2 3 3 2 -1047 1047 1048 1048 1048 1048 1030 1030 24 23 0 2 3 3 2 1 3 3 1 -1047 1047 1048 1048 1048 1048 1030 1030 24 23 1 0 0 0 0 2 4 4 0 -1047 1047 1048 1048 1048 1048 1031 1031 24 23 0 2 3 3 2 1 3 3 1 -1047 1047 1048 1048 1048 1048 1031 1031 24 23 1 0 0 0 0 2 4 4 0 -1047 1047 1048 1048 1048 1048 1048 1048 20 23 0 2 3 3 2 1 3 3 1 -1047 1047 1048 1048 1048 1048 1048 1048 20 23 1 0 0 0 0 2 4 4 0 -1047 1047 1048 1048 1048 1048 1049 1049 20 23 0 2 3 3 2 1 3 3 1 -1047 1047 1048 1048 1048 1048 1049 1049 20 23 1 0 0 0 0 2 4 4 0 -1048 1030 1048 1030 1030 1030 1031 1031 34 24 0 2 3 3 2 1 4 4 1 -1048 1030 1048 1030 1031 1031 1031 1031 34 24 0 2 3 3 2 1 4 4 1 -1048 1030 1048 1030 1048 1048 1031 1031 29 24 0 2 3 3 2 1 4 4 1 -1048 1030 1048 1030 1049 1049 1031 1031 29 24 0 2 3 3 2 1 4 4 1 -1048 1030 1049 1031 1031 1031 1031 1031 34 25 0 2 3 3 1 1 4 4 1 -1048 1030 1049 1031 1031 1031 1031 1031 34 25 1 0 0 4 2 0 0 0 0 -1048 1030 1049 1031 1031 1031 1032 1032 34 25 0 2 3 3 1 1 4 4 1 -1048 1030 1049 1031 1031 1031 1032 1032 34 25 1 0 0 4 2 0 0 0 0 -1048 1030 1049 1031 1049 1049 1031 1031 29 25 0 2 3 3 1 1 4 4 1 -1048 1030 1049 1031 1049 1049 1031 1031 29 25 1 0 0 4 2 0 0 0 0 -1048 1030 1049 1031 1049 1049 1032 1032 29 25 0 2 3 3 1 1 4 4 1 -1048 1030 1049 1031 1049 1049 1032 1032 29 25 1 0 0 4 2 0 0 0 0 -1048 1048 1048 1048 1048 1048 1031 1031 24 24 0 2 3 3 2 1 4 4 1 -1048 1048 1048 1048 1048 1048 1049 1049 20 24 0 2 3 3 2 1 4 4 1 -1048 1048 1048 1048 1049 1049 1031 1031 24 24 0 2 3 3 2 1 4 4 1 -1048 1048 1048 1048 1049 1049 1049 1049 20 24 0 2 3 3 2 1 4 4 1 -1048 1048 1049 1049 1049 1049 1031 1031 24 25 0 2 3 3 1 1 4 4 1 -1048 1048 1049 1049 1049 1049 1031 1031 24 25 1 0 0 4 2 0 0 0 0 -1048 1048 1049 1049 1049 1049 1032 1032 24 25 0 2 3 3 1 1 4 4 1 -1048 1048 1049 1049 1049 1049 1032 1032 24 25 1 0 0 4 2 0 0 0 0 -1048 1048 1049 1049 1049 1049 1049 1049 20 25 0 2 3 3 1 1 4 4 1 -1048 1048 1049 1049 1049 1049 1049 1049 20 25 1 0 0 4 2 0 0 0 0 -1048 1048 1049 1049 1049 1049 1050 1050 20 25 0 2 3 3 1 1 4 4 1 -1048 1048 1049 1049 1049 1049 1050 1050 20 25 1 0 0 4 2 0 0 0 0 -1049 1031 1049 1031 1031 1031 1032 1032 34 26 0 1 3 4 1 1 4 4 1 -1049 1031 1049 1031 1031 1031 1032 1032 34 26 1 2 4 0 0 0 0 0 0 -1049 1031 1049 1031 1032 1032 1032 1032 34 26 0 1 3 4 1 1 4 4 1 -1049 1031 1049 1031 1032 1032 1032 1032 34 26 1 2 4 0 0 0 0 0 0 -1049 1031 1049 1031 1049 1049 1032 1032 29 26 0 1 3 4 1 1 4 4 1 -1049 1031 1049 1031 1049 1049 1032 1032 29 26 1 2 4 0 0 0 0 0 0 -1049 1031 1049 1031 1050 1050 1032 1032 29 26 0 1 3 4 1 1 4 4 1 -1049 1031 1049 1031 1050 1050 1032 1032 29 26 1 2 4 0 0 0 0 0 0 -1049 1031 1050 1032 1032 1032 1032 1032 34 27 0 1 4 4 1 1 4 4 1 -1049 1031 1050 1032 1032 1032 1033 1033 34 27 0 1 4 4 1 1 4 4 1 -1049 1031 1050 1032 1050 1050 1032 1032 29 27 0 1 4 4 1 1 4 4 1 -1049 1031 1050 1032 1050 1050 1033 1033 29 27 0 1 4 4 1 1 4 4 1 -1049 1049 1049 1049 1049 1049 1032 1032 24 26 0 1 3 4 1 1 4 4 1 -1049 1049 1049 1049 1049 1049 1032 1032 24 26 1 2 4 0 0 0 0 0 0 -1049 1049 1049 1049 1049 1049 1050 1050 20 26 0 1 3 4 1 1 4 4 1 -1049 1049 1049 1049 1049 1049 1050 1050 20 26 1 2 4 0 0 0 0 0 0 -1049 1049 1049 1049 1050 1050 1032 1032 24 26 0 1 3 4 1 1 4 4 1 -1049 1049 1049 1049 1050 1050 1032 1032 24 26 1 2 4 0 0 0 0 0 0 -1049 1049 1049 1049 1050 1050 1050 1050 20 26 0 1 3 4 1 1 4 4 1 -1049 1049 1049 1049 1050 1050 1050 1050 20 26 1 2 4 0 0 0 0 0 0 -1049 1049 1050 1050 1050 1050 1032 1032 24 27 0 1 4 4 1 1 4 4 1 -1049 1049 1050 1050 1050 1050 1033 1033 24 27 0 1 4 4 1 1 4 4 1 -1049 1049 1050 1050 1050 1050 1050 1050 20 27 0 1 4 4 1 1 4 4 1 -1049 1049 1050 1050 1050 1050 1051 1051 20 27 0 1 4 4 1 1 4 4 1 -1050 1032 1050 1032 1032 1032 1033 1033 34 28 0 1 4 4 1 1 4 4 1 -1050 1032 1050 1032 1033 1033 1033 1033 34 28 0 1 4 4 1 1 4 4 1 -1050 1032 1050 1032 1050 1050 1033 1033 29 28 0 1 4 4 1 1 4 4 1 -1050 1032 1050 1032 1051 1051 1033 1033 29 28 0 1 4 4 1 1 4 4 1 -1050 1032 1051 1033 1033 1033 1033 1033 34 29 0 1 4 4 1 1 4 4 0 -1050 1032 1051 1033 1033 1033 1034 1034 34 29 0 1 4 4 1 1 4 4 0 -1050 1032 1051 1033 1051 1051 1033 1033 29 29 0 1 4 4 1 1 4 4 0 -1050 1032 1051 1033 1051 1051 1034 1034 29 29 0 1 4 4 1 1 4 4 0 -1050 1050 1050 1050 1050 1050 1033 1033 24 28 0 1 4 4 1 1 4 4 1 -1050 1050 1050 1050 1050 1050 1051 1051 20 28 0 1 4 4 1 1 4 4 1 -1050 1050 1050 1050 1051 1051 1033 1033 24 28 0 1 4 4 1 1 4 4 1 -1050 1050 1050 1050 1051 1051 1051 1051 20 28 0 1 4 4 1 1 4 4 1 -1050 1050 1051 1051 1051 1051 1033 1033 24 29 0 1 4 4 1 1 4 4 0 -1050 1050 1051 1051 1051 1051 1034 1034 24 29 0 1 4 4 1 1 4 4 0 -1050 1050 1051 1051 1051 1051 1051 1051 20 29 0 1 4 4 1 1 4 4 0 -1050 1050 1051 1051 1051 1051 1052 1052 20 29 0 1 4 4 1 1 4 4 0 -1051 1033 1051 1033 1033 1033 1034 1034 34 30 0 1 4 4 1 0 4 4 0 -1051 1033 1051 1033 1034 1034 1034 1034 34 30 0 1 4 4 1 0 4 4 0 -1051 1033 1051 1033 1051 1051 1034 1034 29 30 0 1 4 4 1 0 4 4 0 -1051 1033 1051 1033 1052 1052 1034 1034 29 30 0 1 4 4 1 0 4 4 0 -1051 1033 1052 1034 1034 1034 1034 1034 34 31 0 1 4 4 1 0 4 4 0 -1051 1033 1052 1034 1034 1034 1035 1035 34 31 0 1 4 4 1 0 4 4 0 -1051 1033 1052 1034 1052 1052 1034 1034 29 31 0 1 4 4 1 0 4 4 0 -1051 1033 1052 1034 1052 1052 1035 1035 29 31 0 1 4 4 1 0 4 4 0 -1051 1051 1051 1051 1051 1051 1034 1034 24 30 0 1 4 4 1 0 4 4 0 -1051 1051 1051 1051 1051 1051 1052 1052 20 30 0 1 4 4 1 0 4 4 0 -1051 1051 1051 1051 1052 1052 1034 1034 24 30 0 1 4 4 1 0 4 4 0 -1051 1051 1051 1051 1052 1052 1052 1052 20 30 0 1 4 4 1 0 4 4 0 -1051 1051 1052 1052 1052 1052 1034 1034 24 31 0 1 4 4 1 0 4 4 0 -1051 1051 1052 1052 1052 1052 1035 1035 24 31 0 1 4 4 1 0 4 4 0 -1051 1051 1052 1052 1052 1052 1052 1052 20 31 0 1 4 4 1 0 4 4 0 -1051 1051 1052 1052 1052 1052 1053 1053 20 31 0 1 4 4 1 0 4 4 0 -1052 1034 1052 1034 1034 1034 1035 1035 34 32 0 1 4 4 0 0 4 4 0 -1052 1034 1052 1034 1035 1035 1035 1035 34 32 0 1 4 4 0 0 4 4 0 -1052 1034 1052 1034 1052 1052 1035 1035 29 32 0 1 4 4 0 0 4 4 0 -1052 1034 1052 1034 1053 1053 1035 1035 29 32 0 1 4 4 0 0 4 4 0 -1052 1034 1053 1035 1035 1035 1035 1035 34 32 0 1 4 4 0 0 4 4 0 -1052 1034 1053 1035 1053 1053 1035 1035 29 32 0 1 4 4 0 0 4 4 0 -1052 1052 1052 1052 1052 1052 1035 1035 24 32 0 1 4 4 0 0 4 4 0 -1052 1052 1052 1052 1052 1052 1053 1053 20 32 0 1 4 4 0 0 4 4 0 -1052 1052 1052 1052 1053 1053 1035 1035 24 32 0 1 4 4 0 0 4 4 0 -1052 1052 1052 1052 1053 1053 1053 1053 20 32 0 1 4 4 0 0 4 4 0 -1052 1052 1053 1053 1053 1053 1035 1035 24 32 0 1 4 4 0 0 4 4 0 -1052 1052 1053 1053 1053 1053 1053 1053 20 32 0 1 4 4 0 0 4 4 0 -1053 1035 1053 1035 2001 2001 2019 2019 34 34 0 0 4 4 0 8 6 6 8 -1053 1035 1053 1035 2001 2019 2019 2019 31 34 0 0 4 4 0 8 6 6 8 -1053 1035 1053 1035 2019 2019 2019 2019 29 34 0 0 4 4 0 8 6 6 8 -1053 1035 1054 1036 2001 2001 2019 2019 34 35 0 0 4 0 0 8 6 6 8 -1053 1035 1054 1036 2001 2001 2020 2020 34 35 0 0 4 0 0 8 6 6 8 -1053 1035 1054 1036 2001 2019 2019 2019 31 35 0 0 4 0 0 8 6 6 8 -1053 1035 1054 1036 2001 2019 2020 2020 31 35 0 0 4 0 0 8 6 6 8 -1053 1035 1054 1036 2019 2019 2019 2019 29 35 0 0 4 0 0 8 6 6 8 -1053 1035 1054 1036 2019 2019 2020 2020 29 35 0 0 4 0 0 8 6 6 8 -1053 1053 1053 1053 2019 2019 2019 2019 22 34 0 0 4 4 0 8 6 6 8 -1053 1053 1054 1054 2019 2019 2019 2019 22 35 0 0 4 0 0 8 6 6 8 -1053 1053 1054 1054 2019 2019 2020 2020 22 35 0 0 4 0 0 8 6 6 8 -1055 1037 1055 1037 1037 1037 1038 1038 15 2 0 0 0 0 0 0 0 0 0 -1055 1037 1055 1037 1038 1038 1038 1038 15 2 0 0 0 0 0 0 0 0 0 -1055 1037 1055 1037 1055 1055 1038 1038 10 2 0 0 0 0 0 0 0 0 0 -1055 1037 1055 1037 1056 1056 1038 1038 10 2 0 0 0 0 0 0 0 0 0 -1055 1037 1056 1038 1038 1038 1038 1038 15 3 0 0 0 0 0 0 0 0 0 -1055 1037 1056 1038 1038 1038 1039 1039 15 3 0 0 0 0 0 0 0 0 0 -1055 1037 1056 1038 1056 1056 1038 1038 10 3 0 0 0 0 0 0 0 0 0 -1055 1037 1056 1038 1056 1056 1039 1039 10 3 0 0 0 0 0 0 0 0 0 -1055 1055 1055 1055 1055 1055 1038 1038 3 2 0 0 0 0 0 0 0 0 0 -1055 1055 1055 1055 1056 1056 1038 1038 3 2 0 0 0 0 0 0 0 0 0 -1055 1055 1056 1056 1056 1056 1038 1038 3 3 0 0 0 0 0 0 0 0 0 -1055 1055 1056 1056 1056 1056 1039 1039 3 3 0 0 0 0 0 0 0 0 0 -1056 1038 1056 1038 1038 1038 1039 1039 15 4 0 0 0 0 0 0 0 0 0 -1056 1038 1056 1038 1039 1039 1039 1039 15 4 0 0 0 0 0 0 0 0 0 -1056 1038 1056 1038 1056 1056 1039 1039 10 4 0 0 0 0 0 0 0 0 0 -1056 1038 1056 1038 1057 1057 1039 1039 10 4 0 0 0 0 0 0 0 0 0 -1056 1038 1057 1039 1039 1039 1039 1039 15 5 0 0 0 0 0 0 0 0 0 -1056 1038 1057 1039 1039 1039 1040 1040 15 5 0 0 0 0 0 0 0 0 0 -1056 1038 1057 1039 1057 1057 1039 1039 10 5 0 0 0 0 0 0 0 0 0 -1056 1038 1057 1039 1057 1057 1040 1040 10 5 0 0 0 0 0 0 0 0 0 -1056 1056 1056 1056 1056 1056 1039 1039 3 4 0 0 0 0 0 0 0 0 0 -1056 1056 1056 1056 1057 1057 1039 1039 3 4 0 0 0 0 0 0 0 0 0 -1056 1056 1057 1057 1057 1057 1039 1039 3 5 0 0 0 0 0 0 0 0 0 -1056 1056 1057 1057 1057 1057 1040 1040 3 5 0 0 0 0 0 0 0 0 0 -1057 1039 1057 1039 1039 1039 1040 1040 15 6 0 0 0 0 0 3 2 2 3 -1057 1039 1057 1039 1040 1040 1040 1040 15 6 0 0 0 0 0 3 2 2 3 -1057 1039 1057 1039 1057 1057 1040 1040 10 6 0 0 0 0 0 3 2 2 3 -1057 1039 1057 1039 1058 1058 1040 1040 10 6 0 0 0 0 0 3 2 2 3 -1057 1039 1058 1040 1040 1040 1040 1040 15 7 0 0 0 0 0 3 2 2 3 -1057 1039 1058 1040 1040 1040 1041 1041 15 7 0 0 0 0 0 3 2 2 3 -1057 1039 1058 1040 1058 1058 1040 1040 10 7 0 0 0 0 0 3 2 2 3 -1057 1039 1058 1040 1058 1058 1041 1041 10 7 0 0 0 0 0 3 2 2 3 -1057 1057 1057 1057 1057 1057 1040 1040 3 6 0 0 0 0 0 3 2 2 3 -1057 1057 1057 1057 1058 1058 1040 1040 3 6 0 0 0 0 0 3 2 2 3 -1057 1057 1058 1058 1058 1058 1040 1040 3 7 0 0 0 0 0 3 2 2 3 -1057 1057 1058 1058 1058 1058 1041 1041 3 7 0 0 0 0 0 3 2 2 3 -1058 1040 1058 1040 1040 1040 1041 1041 15 8 0 3 2 2 3 3 2 2 3 -1058 1040 1058 1040 1041 1041 1041 1041 15 8 0 3 2 2 3 3 2 2 3 -1058 1040 1058 1040 1058 1058 1041 1041 10 8 0 3 2 2 3 3 2 2 3 -1058 1040 1058 1040 1059 1059 1041 1041 10 8 0 3 2 2 3 3 2 2 3 -1058 1040 1059 1041 1041 1041 1041 1041 15 9 0 3 2 2 3 3 2 2 3 -1058 1040 1059 1041 1041 1041 1042 1042 15 9 0 3 2 2 3 3 2 2 3 -1058 1040 1059 1041 1059 1059 1041 1041 10 9 0 3 2 2 3 3 2 2 3 -1058 1040 1059 1041 1059 1059 1042 1042 10 9 0 3 2 2 3 3 2 2 3 -1058 1058 1058 1058 1058 1058 1041 1041 3 8 0 3 2 2 3 3 2 2 3 -1058 1058 1058 1058 1059 1059 1041 1041 3 8 0 3 2 2 3 3 2 2 3 -1058 1058 1059 1059 1059 1059 1041 1041 3 9 0 3 2 2 3 3 2 2 3 -1058 1058 1059 1059 1059 1059 1042 1042 3 9 0 3 2 2 3 3 2 2 3 -1059 1041 1059 1041 1041 1041 1042 1042 15 10 0 3 2 2 3 3 2 2 3 -1059 1041 1059 1041 1042 1042 1042 1042 15 10 0 3 2 2 3 3 2 2 3 -1059 1041 1059 1041 1059 1059 1042 1042 10 10 0 3 2 2 3 3 2 2 3 -1059 1041 1059 1041 1060 1060 1042 1042 10 10 0 3 2 2 3 3 2 2 3 -1059 1041 1060 1042 1042 1042 1042 1042 15 11 0 3 2 2 3 3 2 2 3 -1059 1041 1060 1042 1042 1042 1043 1043 15 11 0 3 2 2 3 3 2 2 3 -1059 1041 1060 1042 1060 1060 1042 1042 10 11 0 3 2 2 3 3 2 2 3 -1059 1041 1060 1042 1060 1060 1043 1043 10 11 0 3 2 2 3 3 2 2 3 -1059 1059 1059 1059 1059 1059 1042 1042 3 10 0 3 2 2 3 3 2 2 3 -1059 1059 1059 1059 1060 1060 1042 1042 3 10 0 3 2 2 3 3 2 2 3 -1059 1059 1060 1060 1060 1060 1042 1042 3 11 0 3 2 2 3 3 2 2 3 -1059 1059 1060 1060 1060 1060 1043 1043 3 11 0 3 2 2 3 3 2 2 3 -1060 1042 1060 1042 1042 1042 1043 1043 15 12 0 3 2 2 3 3 2 2 2 -1060 1042 1060 1042 1042 1042 1043 1043 15 12 1 0 0 0 0 0 0 3 3 -1060 1042 1060 1042 1043 1043 1043 1043 15 12 0 3 2 2 3 3 2 2 2 -1060 1042 1060 1042 1043 1043 1043 1043 15 12 1 0 0 0 0 0 0 3 3 -1060 1042 1060 1042 1060 1060 1043 1043 10 12 0 3 2 2 3 3 2 2 2 -1060 1042 1060 1042 1060 1060 1043 1043 10 12 1 0 0 0 0 0 0 3 3 -1060 1042 1060 1042 1061 1061 1043 1043 10 12 0 3 2 2 3 3 2 2 2 -1060 1042 1060 1042 1061 1061 1043 1043 10 12 1 0 0 0 0 0 0 3 3 -1060 1042 1061 1043 1043 1043 1043 1043 15 13 0 3 2 2 3 2 3 3 2 -1060 1042 1061 1043 1043 1043 1044 1044 15 13 0 3 2 2 3 2 3 3 2 -1060 1042 1061 1043 1061 1061 1043 1043 10 13 0 3 2 2 3 2 3 3 2 -1060 1042 1061 1043 1061 1061 1044 1044 10 13 0 3 2 2 3 2 3 3 2 -1060 1060 1060 1060 1060 1060 1043 1043 3 12 0 3 2 2 3 3 2 2 2 -1060 1060 1060 1060 1060 1060 1043 1043 3 12 1 0 0 0 0 0 0 3 3 -1060 1060 1060 1060 1061 1061 1043 1043 3 12 0 3 2 2 3 3 2 2 2 -1060 1060 1060 1060 1061 1061 1043 1043 3 12 1 0 0 0 0 0 0 3 3 -1060 1060 1061 1061 1061 1061 1043 1043 3 13 0 3 2 2 3 2 3 3 2 -1060 1060 1061 1061 1061 1061 1044 1044 3 13 0 3 2 2 3 2 3 3 2 -1061 1043 1061 1043 1043 1043 1044 1044 15 14 0 3 2 2 2 2 3 3 2 -1061 1043 1061 1043 1043 1043 1044 1044 15 14 1 0 0 3 3 0 0 0 0 -1061 1043 1061 1043 1044 1044 1044 1044 15 14 0 3 2 2 2 2 3 3 2 -1061 1043 1061 1043 1044 1044 1044 1044 15 14 1 0 0 3 3 0 0 0 0 -1061 1043 1061 1043 1061 1061 1044 1044 10 14 0 3 2 2 2 2 3 3 2 -1061 1043 1061 1043 1061 1061 1044 1044 10 14 1 0 0 3 3 0 0 0 0 -1061 1043 1061 1043 1062 1062 1044 1044 10 14 0 3 2 2 2 2 3 3 2 -1061 1043 1061 1043 1062 1062 1044 1044 10 14 1 0 0 3 3 0 0 0 0 -1061 1043 1062 1044 1044 1044 1044 1044 15 15 0 2 2 3 2 2 3 3 2 -1061 1043 1062 1044 1044 1044 1044 1044 15 15 1 3 3 0 0 0 0 0 0 -1061 1043 1062 1044 1044 1044 1045 1045 15 15 0 2 2 3 2 2 3 3 2 -1061 1043 1062 1044 1044 1044 1045 1045 15 15 1 3 3 0 0 0 0 0 0 -1061 1043 1062 1044 1062 1062 1044 1044 10 15 0 2 2 3 2 2 3 3 2 -1061 1043 1062 1044 1062 1062 1044 1044 10 15 1 3 3 0 0 0 0 0 0 -1061 1043 1062 1044 1062 1062 1045 1045 10 15 0 2 2 3 2 2 3 3 2 -1061 1043 1062 1044 1062 1062 1045 1045 10 15 1 3 3 0 0 0 0 0 0 -1061 1061 1061 1061 1061 1061 1044 1044 3 14 0 3 2 2 2 2 3 3 2 -1061 1061 1061 1061 1061 1061 1044 1044 3 14 1 0 0 3 3 0 0 0 0 -1061 1061 1061 1061 1062 1062 1044 1044 3 14 0 3 2 2 2 2 3 3 2 -1061 1061 1061 1061 1062 1062 1044 1044 3 14 1 0 0 3 3 0 0 0 0 -1061 1061 1062 1062 1062 1062 1044 1044 3 15 0 2 2 3 2 2 3 3 2 -1061 1061 1062 1062 1062 1062 1044 1044 3 15 1 3 3 0 0 0 0 0 0 -1061 1061 1062 1062 1062 1062 1045 1045 3 15 0 2 2 3 2 2 3 3 2 -1061 1061 1062 1062 1062 1062 1045 1045 3 15 1 3 3 0 0 0 0 0 0 -1062 1044 1062 1044 1044 1044 1045 1045 15 16 0 2 3 3 2 2 3 3 2 -1062 1044 1062 1044 1045 1045 1045 1045 15 16 0 2 3 3 2 2 3 3 2 -1062 1044 1062 1044 1062 1062 1045 1045 10 16 0 2 3 3 2 2 3 3 2 -1062 1044 1062 1044 1063 1063 1045 1045 10 16 0 2 3 3 2 2 3 3 2 -1062 1044 1063 1045 1045 1045 1045 1045 15 17 0 2 3 3 2 2 3 3 2 -1062 1044 1063 1045 1045 1045 1046 1046 15 17 0 2 3 3 2 2 3 3 2 -1062 1044 1063 1045 1063 1063 1045 1045 10 17 0 2 3 3 2 2 3 3 2 -1062 1044 1063 1045 1063 1063 1046 1046 10 17 0 2 3 3 2 2 3 3 2 -1062 1062 1062 1062 1062 1062 1045 1045 3 16 0 2 3 3 2 2 3 3 2 -1062 1062 1062 1062 1063 1063 1045 1045 3 16 0 2 3 3 2 2 3 3 2 -1062 1062 1063 1063 1063 1063 1045 1045 3 17 0 2 3 3 2 2 3 3 2 -1062 1062 1063 1063 1063 1063 1046 1046 3 17 0 2 3 3 2 2 3 3 2 -1063 1045 1063 1045 1045 1045 1046 1046 15 18 0 2 3 3 2 2 3 3 2 -1063 1045 1063 1045 1046 1046 1046 1046 15 18 0 2 3 3 2 2 3 3 2 -1063 1045 1063 1045 1063 1063 1046 1046 10 18 0 2 3 3 2 2 3 3 2 -1063 1045 1063 1045 1064 1064 1046 1046 10 18 0 2 3 3 2 2 3 3 2 -1063 1045 1064 1046 1046 1046 1046 1046 15 19 0 2 3 3 2 2 3 3 2 -1063 1045 1064 1046 1046 1046 1047 1047 15 19 0 2 3 3 2 2 3 3 2 -1063 1045 1064 1046 1064 1064 1046 1046 10 19 0 2 3 3 2 2 3 3 2 -1063 1045 1064 1046 1064 1064 1047 1047 10 19 0 2 3 3 2 2 3 3 2 -1063 1063 1063 1063 1063 1063 1046 1046 3 18 0 2 3 3 2 2 3 3 2 -1063 1063 1063 1063 1064 1064 1046 1046 3 18 0 2 3 3 2 2 3 3 2 -1063 1063 1064 1064 1064 1064 1046 1046 3 19 0 2 3 3 2 2 3 3 2 -1063 1063 1064 1064 1064 1064 1047 1047 3 19 0 2 3 3 2 2 3 3 2 -1064 1046 1064 1046 1046 1046 1047 1047 15 20 0 2 3 3 2 2 3 3 2 -1064 1046 1064 1046 1047 1047 1047 1047 15 20 0 2 3 3 2 2 3 3 2 -1064 1046 1064 1046 1064 1064 1047 1047 10 20 0 2 3 3 2 2 3 3 2 -1064 1046 1064 1046 1065 1065 1047 1047 10 20 0 2 3 3 2 2 3 3 2 -1064 1046 1065 1047 1047 1047 1047 1047 15 21 0 2 3 3 2 2 3 3 2 -1064 1046 1065 1047 1047 1047 1048 1048 15 21 0 2 3 3 2 2 3 3 2 -1064 1046 1065 1047 1065 1065 1047 1047 10 21 0 2 3 3 2 2 3 3 2 -1064 1046 1065 1047 1065 1065 1048 1048 10 21 0 2 3 3 2 2 3 3 2 -1064 1064 1064 1064 1064 1064 1047 1047 3 20 0 2 3 3 2 2 3 3 2 -1064 1064 1064 1064 1065 1065 1047 1047 3 20 0 2 3 3 2 2 3 3 2 -1064 1064 1065 1065 1065 1065 1047 1047 3 21 0 2 3 3 2 2 3 3 2 -1064 1064 1065 1065 1065 1065 1048 1048 3 21 0 2 3 3 2 2 3 3 2 -1065 1047 1065 1047 1047 1047 1048 1048 15 22 0 2 3 3 2 2 3 3 2 -1065 1047 1065 1047 1048 1048 1048 1048 15 22 0 2 3 3 2 2 3 3 2 -1065 1047 1065 1047 1065 1065 1048 1048 10 22 0 2 3 3 2 2 3 3 2 -1065 1047 1065 1047 1066 1066 1048 1048 10 22 0 2 3 3 2 2 3 3 2 -1065 1047 1066 1048 1048 1048 1048 1048 15 23 0 2 3 3 2 1 3 3 1 -1065 1047 1066 1048 1048 1048 1048 1048 15 23 1 0 0 0 0 2 4 4 0 -1065 1047 1066 1048 1048 1048 1049 1049 15 23 0 2 3 3 2 1 3 3 1 -1065 1047 1066 1048 1048 1048 1049 1049 15 23 1 0 0 0 0 2 4 4 0 -1065 1047 1066 1048 1066 1066 1048 1048 10 23 0 2 3 3 2 1 3 3 1 -1065 1047 1066 1048 1066 1066 1048 1048 10 23 1 0 0 0 0 2 4 4 0 -1065 1047 1066 1048 1066 1066 1049 1049 10 23 0 2 3 3 2 1 3 3 1 -1065 1047 1066 1048 1066 1066 1049 1049 10 23 1 0 0 0 0 2 4 4 0 -1065 1065 1065 1065 1065 1065 1048 1048 3 22 0 2 3 3 2 2 3 3 2 -1065 1065 1065 1065 1066 1066 1048 1048 3 22 0 2 3 3 2 2 3 3 2 -1065 1065 1066 1066 1066 1066 1048 1048 3 23 0 2 3 3 2 1 3 3 1 -1065 1065 1066 1066 1066 1066 1048 1048 3 23 1 0 0 0 0 2 4 4 0 -1065 1065 1066 1066 1066 1066 1049 1049 3 23 0 2 3 3 2 1 3 3 1 -1065 1065 1066 1066 1066 1066 1049 1049 3 23 1 0 0 0 0 2 4 4 0 -1066 1048 1066 1048 1048 1048 1049 1049 15 24 0 2 3 3 2 1 4 4 1 -1066 1048 1066 1048 1049 1049 1049 1049 15 24 0 2 3 3 2 1 4 4 1 -1066 1048 1066 1048 1066 1066 1049 1049 10 24 0 2 3 3 2 1 4 4 1 -1066 1048 1066 1048 1067 1067 1049 1049 10 24 0 2 3 3 2 1 4 4 1 -1066 1048 1067 1049 1049 1049 1049 1049 15 25 0 2 3 3 1 1 4 4 1 -1066 1048 1067 1049 1049 1049 1049 1049 15 25 1 0 0 4 2 0 0 0 0 -1066 1048 1067 1049 1049 1049 1050 1050 15 25 0 2 3 3 1 1 4 4 1 -1066 1048 1067 1049 1049 1049 1050 1050 15 25 1 0 0 4 2 0 0 0 0 -1066 1048 1067 1049 1067 1067 1049 1049 10 25 0 2 3 3 1 1 4 4 1 -1066 1048 1067 1049 1067 1067 1049 1049 10 25 1 0 0 4 2 0 0 0 0 -1066 1048 1067 1049 1067 1067 1050 1050 10 25 0 2 3 3 1 1 4 4 1 -1066 1048 1067 1049 1067 1067 1050 1050 10 25 1 0 0 4 2 0 0 0 0 -1066 1066 1066 1066 1066 1066 1049 1049 3 24 0 2 3 3 2 1 4 4 1 -1066 1066 1066 1066 1067 1067 1049 1049 3 24 0 2 3 3 2 1 4 4 1 -1066 1066 1067 1067 1067 1067 1049 1049 3 25 0 2 3 3 1 1 4 4 1 -1066 1066 1067 1067 1067 1067 1049 1049 3 25 1 0 0 4 2 0 0 0 0 -1066 1066 1067 1067 1067 1067 1050 1050 3 25 0 2 3 3 1 1 4 4 1 -1066 1066 1067 1067 1067 1067 1050 1050 3 25 1 0 0 4 2 0 0 0 0 -1067 1049 1067 1049 1049 1049 1050 1050 15 26 0 1 3 4 1 1 4 4 1 -1067 1049 1067 1049 1049 1049 1050 1050 15 26 1 2 4 0 0 0 0 0 0 -1067 1049 1067 1049 1050 1050 1050 1050 15 26 0 1 3 4 1 1 4 4 1 -1067 1049 1067 1049 1050 1050 1050 1050 15 26 1 2 4 0 0 0 0 0 0 -1067 1049 1067 1049 1067 1067 1050 1050 10 26 0 1 3 4 1 1 4 4 1 -1067 1049 1067 1049 1067 1067 1050 1050 10 26 1 2 4 0 0 0 0 0 0 -1067 1049 1067 1049 1068 1068 1050 1050 10 26 0 1 3 4 1 1 4 4 1 -1067 1049 1067 1049 1068 1068 1050 1050 10 26 1 2 4 0 0 0 0 0 0 -1067 1049 1068 1050 1050 1050 1050 1050 15 27 0 1 4 4 1 1 4 4 1 -1067 1049 1068 1050 1050 1050 1051 1051 15 27 0 1 4 4 1 1 4 4 1 -1067 1049 1068 1050 1068 1068 1050 1050 10 27 0 1 4 4 1 1 4 4 1 -1067 1049 1068 1050 1068 1068 1051 1051 10 27 0 1 4 4 1 1 4 4 1 -1067 1067 1067 1067 1067 1067 1050 1050 3 26 0 1 3 4 1 1 4 4 1 -1067 1067 1067 1067 1067 1067 1050 1050 3 26 1 2 4 0 0 0 0 0 0 -1067 1067 1067 1067 1068 1068 1050 1050 3 26 0 1 3 4 1 1 4 4 1 -1067 1067 1067 1067 1068 1068 1050 1050 3 26 1 2 4 0 0 0 0 0 0 -1067 1067 1068 1068 1068 1068 1050 1050 3 27 0 1 4 4 1 1 4 4 1 -1067 1067 1068 1068 1068 1068 1051 1051 3 27 0 1 4 4 1 1 4 4 1 -1068 1050 1068 1050 1050 1050 1051 1051 15 28 0 1 4 4 1 1 4 4 1 -1068 1050 1068 1050 1051 1051 1051 1051 15 28 0 1 4 4 1 1 4 4 1 -1068 1050 1068 1050 1068 1068 1051 1051 10 28 0 1 4 4 1 1 4 4 1 -1068 1050 1068 1050 1069 1069 1051 1051 10 28 0 1 4 4 1 1 4 4 1 -1068 1050 1069 1051 1051 1051 1051 1051 15 29 0 1 4 4 1 1 4 4 0 -1068 1050 1069 1051 1051 1051 1052 1052 15 29 0 1 4 4 1 1 4 4 0 -1068 1050 1069 1051 1069 1069 1051 1051 10 29 0 1 4 4 1 1 4 4 0 -1068 1050 1069 1051 1069 1069 1052 1052 10 29 0 1 4 4 1 1 4 4 0 -1068 1068 1068 1068 1068 1068 1051 1051 3 28 0 1 4 4 1 1 4 4 1 -1068 1068 1068 1068 1069 1069 1051 1051 3 28 0 1 4 4 1 1 4 4 1 -1068 1068 1069 1069 1069 1069 1051 1051 3 29 0 1 4 4 1 1 4 4 0 -1068 1068 1069 1069 1069 1069 1052 1052 3 29 0 1 4 4 1 1 4 4 0 -1069 1051 1069 1051 1051 1051 1052 1052 15 30 0 1 4 4 1 0 4 4 0 -1069 1051 1069 1051 1052 1052 1052 1052 15 30 0 1 4 4 1 0 4 4 0 -1069 1051 1069 1051 1069 1069 1052 1052 10 30 0 1 4 4 1 0 4 4 0 -1069 1051 1069 1051 1070 1070 1052 1052 10 30 0 1 4 4 1 0 4 4 0 -1069 1051 1070 1052 1052 1052 1052 1052 15 31 0 1 4 4 1 0 4 4 0 -1069 1051 1070 1052 1052 1052 1053 1053 15 31 0 1 4 4 1 0 4 4 0 -1069 1051 1070 1052 1070 1070 1052 1052 10 31 0 1 4 4 1 0 4 4 0 -1069 1051 1070 1052 1070 1070 1053 1053 10 31 0 1 4 4 1 0 4 4 0 -1069 1069 1069 1069 1069 1069 1052 1052 3 30 0 1 4 4 1 0 4 4 0 -1069 1069 1069 1069 1070 1070 1052 1052 3 30 0 1 4 4 1 0 4 4 0 -1069 1069 1070 1070 1070 1070 1052 1052 3 31 0 1 4 4 1 0 4 4 0 -1069 1069 1070 1070 1070 1070 1053 1053 3 31 0 1 4 4 1 0 4 4 0 -1070 1052 1070 1052 1052 1052 1053 1053 15 32 0 1 4 4 0 0 4 4 0 -1070 1052 1070 1052 1053 1053 1053 1053 15 32 0 1 4 4 0 0 4 4 0 -1070 1052 1070 1052 1070 1070 1053 1053 10 32 0 1 4 4 0 0 4 4 0 -1070 1052 1070 1052 1071 1071 1053 1053 10 32 0 1 4 4 0 0 4 4 0 -1070 1052 1071 1053 1053 1053 1053 1053 15 32 0 1 4 4 0 0 4 4 0 -1070 1052 1071 1053 1071 1071 1053 1053 10 32 0 1 4 4 0 0 4 4 0 -1070 1070 1070 1070 1070 1070 1053 1053 3 32 0 1 4 4 0 0 4 4 0 -1070 1070 1070 1070 1071 1071 1053 1053 3 32 0 1 4 4 0 0 4 4 0 -1070 1070 1071 1071 1071 1071 1053 1053 3 32 0 1 4 4 0 0 4 4 0 -1071 1053 1071 1053 2019 2019 2019 2019 18 34 0 0 4 4 0 8 6 6 8 -1071 1053 1071 1053 2019 2019 2019 2037 17 34 0 0 4 4 0 8 6 6 8 -1071 1053 1071 1053 2019 2019 2037 2037 12 34 0 0 4 4 0 8 6 6 8 -1071 1053 1072 1054 2019 2019 2019 2019 18 35 0 0 4 0 0 8 6 6 8 -1071 1053 1072 1054 2019 2019 2019 2037 17 35 0 0 4 0 0 8 6 6 8 -1071 1053 1072 1054 2019 2019 2020 2020 18 35 0 0 4 0 0 8 6 6 8 -1071 1053 1072 1054 2019 2019 2020 2038 17 35 0 0 4 0 0 8 6 6 8 -1071 1053 1072 1054 2019 2019 2037 2037 12 35 0 0 4 0 0 8 6 6 8 -1071 1053 1072 1054 2019 2019 2038 2038 12 35 0 0 4 0 0 8 6 6 8 -1071 1071 1071 1071 2019 2019 2037 2037 3 34 0 0 4 4 0 8 6 6 8 -1071 1071 1072 1072 2019 2019 2037 2037 3 35 0 0 4 0 0 8 6 6 8 -1071 1071 1072 1072 2019 2019 2038 2038 3 35 0 0 4 0 0 8 6 6 8 -2001 2001 2001 2001 2002 2002 2002 2002 58 36 0 8 4 6 8 8 6 6 8 -2001 2001 2001 2001 2002 2002 2002 2002 58 36 1 0 6 0 0 0 0 0 0 -2001 2001 2001 2001 2002 2002 2003 2003 58 37 0 8 6 6 8 8 6 6 8 -2001 2019 2001 2019 2002 2002 2002 2002 49 36 0 8 4 6 8 8 6 6 8 -2001 2019 2001 2019 2002 2002 2002 2002 49 36 1 0 6 0 0 0 0 0 0 -2001 2019 2001 2019 2002 2002 2002 2020 46 36 0 8 4 6 8 8 6 6 8 -2001 2019 2001 2019 2002 2002 2002 2020 46 36 1 0 6 0 0 0 0 0 0 -2001 2019 2001 2019 2002 2002 2003 2003 49 37 0 8 6 6 8 8 6 6 8 -2001 2019 2001 2019 2002 2002 2003 2021 46 37 0 8 6 6 8 8 6 6 8 -2001 2019 2001 2019 2002 2002 2020 2020 42 36 0 8 4 6 8 8 6 6 8 -2001 2019 2001 2019 2002 2002 2020 2020 42 36 1 0 6 0 0 0 0 0 0 -2001 2019 2001 2019 2002 2002 2021 2021 42 37 0 8 6 6 8 8 6 6 8 -2002 2002 2001 2001 2002 2002 2003 2003 58 37 0 8 6 6 8 8 6 6 8 -2002 2002 2001 2001 2003 2003 2003 2003 58 38 0 8 6 6 8 8 6 6 8 -2002 2002 2002 2002 2003 2003 2003 2003 58 38 0 8 6 6 8 8 6 6 8 -2002 2002 2002 2002 2003 2003 2004 2004 58 39 0 8 6 6 8 8 6 6 8 -2002 2020 2001 2019 2002 2002 2003 2003 49 37 0 8 6 6 8 8 6 6 8 -2002 2020 2001 2019 2002 2002 2003 2021 46 37 0 8 6 6 8 8 6 6 8 -2002 2020 2001 2019 2002 2002 2021 2021 42 37 0 8 6 6 8 8 6 6 8 -2002 2020 2001 2019 2003 2003 2003 2003 49 38 0 8 6 6 8 8 6 6 8 -2002 2020 2001 2019 2003 2003 2003 2021 46 38 0 8 6 6 8 8 6 6 8 -2002 2020 2001 2019 2003 2003 2021 2021 42 38 0 8 6 6 8 8 6 6 8 -2002 2020 2002 2020 2003 2003 2003 2003 49 38 0 8 6 6 8 8 6 6 8 -2002 2020 2002 2020 2003 2003 2003 2021 46 38 0 8 6 6 8 8 6 6 8 -2002 2020 2002 2020 2003 2003 2004 2004 49 39 0 8 6 6 8 8 6 6 8 -2002 2020 2002 2020 2003 2003 2004 2022 46 39 0 8 6 6 8 8 6 6 8 -2002 2020 2002 2020 2003 2003 2021 2021 42 38 0 8 6 6 8 8 6 6 8 -2002 2020 2002 2020 2003 2003 2022 2022 42 39 0 8 6 6 8 8 6 6 8 -2003 2003 2002 2002 2003 2003 2004 2004 58 39 0 8 6 6 8 8 6 6 8 -2003 2003 2002 2002 2004 2004 2004 2004 58 40 0 8 6 6 8 8 6 6 8 -2003 2003 2003 2003 2004 2004 2004 2004 58 40 0 8 6 6 8 8 6 6 8 -2003 2003 2003 2003 2004 2004 2005 2005 58 41 0 8 6 6 8 8 6 6 8 -2003 2021 2002 2020 2003 2003 2004 2004 49 39 0 8 6 6 8 8 6 6 8 -2003 2021 2002 2020 2003 2003 2004 2022 46 39 0 8 6 6 8 8 6 6 8 -2003 2021 2002 2020 2003 2003 2022 2022 42 39 0 8 6 6 8 8 6 6 8 -2003 2021 2002 2020 2004 2004 2004 2004 49 40 0 8 6 6 8 8 6 6 8 -2003 2021 2002 2020 2004 2004 2004 2022 46 40 0 8 6 6 8 8 6 6 8 -2003 2021 2002 2020 2004 2004 2022 2022 42 40 0 8 6 6 8 8 6 6 8 -2003 2021 2003 2021 2004 2004 2004 2004 49 40 0 8 6 6 8 8 6 6 8 -2003 2021 2003 2021 2004 2004 2004 2022 46 40 0 8 6 6 8 8 6 6 8 -2003 2021 2003 2021 2004 2004 2005 2005 49 41 0 8 6 6 8 8 6 6 8 -2003 2021 2003 2021 2004 2004 2005 2023 46 41 0 8 6 6 8 8 6 6 8 -2003 2021 2003 2021 2004 2004 2022 2022 42 40 0 8 6 6 8 8 6 6 8 -2003 2021 2003 2021 2004 2004 2023 2023 42 41 0 8 6 6 8 8 6 6 8 -2004 2004 2003 2003 2004 2004 2005 2005 58 41 0 8 6 6 8 8 6 6 8 -2004 2004 2003 2003 2005 2005 2005 2005 58 42 0 8 6 6 8 8 6 6 8 -2004 2004 2003 2003 2005 2005 2005 2005 58 42 1 0 0 0 0 0 7 7 0 -2004 2004 2004 2004 2005 2005 2005 2005 58 42 0 8 6 6 8 8 6 6 8 -2004 2004 2004 2004 2005 2005 2005 2005 58 42 1 0 0 0 0 0 7 7 0 -2004 2004 2004 2004 2005 2005 2006 2006 58 43 0 8 6 6 8 7 7 7 7 -2004 2004 2004 2004 2005 2005 2006 2006 58 43 1 0 0 0 0 8 0 0 8 -2004 2022 2003 2021 2004 2004 2005 2005 49 41 0 8 6 6 8 8 6 6 8 -2004 2022 2003 2021 2004 2004 2005 2023 46 41 0 8 6 6 8 8 6 6 8 -2004 2022 2003 2021 2004 2004 2023 2023 42 41 0 8 6 6 8 8 6 6 8 -2004 2022 2003 2021 2005 2005 2005 2005 49 42 0 8 6 6 8 8 6 6 8 -2004 2022 2003 2021 2005 2005 2005 2005 49 42 1 0 0 0 0 0 7 7 0 -2004 2022 2003 2021 2005 2005 2005 2023 46 42 0 8 6 6 8 8 6 6 8 -2004 2022 2003 2021 2005 2005 2005 2023 46 42 1 0 0 0 0 0 7 7 0 -2004 2022 2003 2021 2005 2005 2023 2023 42 42 0 8 6 6 8 8 6 6 8 -2004 2022 2003 2021 2005 2005 2023 2023 42 42 1 0 0 0 0 0 7 7 0 -2004 2022 2004 2022 2005 2005 2005 2005 49 42 0 8 6 6 8 8 6 6 8 -2004 2022 2004 2022 2005 2005 2005 2005 49 42 1 0 0 0 0 0 7 7 0 -2004 2022 2004 2022 2005 2005 2005 2023 46 42 0 8 6 6 8 8 6 6 8 -2004 2022 2004 2022 2005 2005 2005 2023 46 42 1 0 0 0 0 0 7 7 0 -2004 2022 2004 2022 2005 2005 2006 2006 49 43 0 8 6 6 8 7 7 7 7 -2004 2022 2004 2022 2005 2005 2006 2006 49 43 1 0 0 0 0 8 0 0 8 -2004 2022 2004 2022 2005 2005 2006 2024 46 43 0 8 6 6 8 7 7 7 7 -2004 2022 2004 2022 2005 2005 2006 2024 46 43 1 0 0 0 0 8 0 0 8 -2004 2022 2004 2022 2005 2005 2023 2023 42 42 0 8 6 6 8 8 6 6 8 -2004 2022 2004 2022 2005 2005 2023 2023 42 42 1 0 0 0 0 0 7 7 0 -2004 2022 2004 2022 2005 2005 2024 2024 42 43 0 8 6 6 8 7 7 7 7 -2004 2022 2004 2022 2005 2005 2024 2024 42 43 1 0 0 0 0 8 0 0 8 -2005 2005 2004 2004 2005 2005 2006 2006 58 43 0 8 6 6 8 7 7 7 7 -2005 2005 2004 2004 2005 2005 2006 2006 58 43 1 0 0 0 0 8 0 0 8 -2005 2005 2004 2004 2006 2006 2006 2006 58 44 0 8 6 6 8 7 7 7 7 -2005 2005 2005 2005 2006 2006 2006 2006 58 44 0 8 6 6 8 7 7 7 7 -2005 2005 2005 2005 2006 2006 2007 2007 58 45 0 8 6 6 8 7 7 7 7 -2005 2005 2005 2005 2006 2006 2007 2007 58 45 1 0 7 7 0 0 0 0 0 -2005 2023 2004 2022 2005 2005 2006 2006 49 43 0 8 6 6 8 7 7 7 7 -2005 2023 2004 2022 2005 2005 2006 2006 49 43 1 0 0 0 0 8 0 0 8 -2005 2023 2004 2022 2005 2005 2006 2024 46 43 0 8 6 6 8 7 7 7 7 -2005 2023 2004 2022 2005 2005 2006 2024 46 43 1 0 0 0 0 8 0 0 8 -2005 2023 2004 2022 2005 2005 2024 2024 42 43 0 8 6 6 8 7 7 7 7 -2005 2023 2004 2022 2005 2005 2024 2024 42 43 1 0 0 0 0 8 0 0 8 -2005 2023 2004 2022 2006 2006 2006 2006 49 44 0 8 6 6 8 7 7 7 7 -2005 2023 2004 2022 2006 2006 2006 2024 46 44 0 8 6 6 8 7 7 7 7 -2005 2023 2004 2022 2006 2006 2024 2024 42 44 0 8 6 6 8 7 7 7 7 -2005 2023 2005 2023 2006 2006 2006 2006 49 44 0 8 6 6 8 7 7 7 7 -2005 2023 2005 2023 2006 2006 2006 2024 46 44 0 8 6 6 8 7 7 7 7 -2005 2023 2005 2023 2006 2006 2007 2007 49 45 0 8 6 6 8 7 7 7 7 -2005 2023 2005 2023 2006 2006 2007 2007 49 45 1 0 7 7 0 0 0 0 0 -2005 2023 2005 2023 2006 2006 2007 2025 46 45 0 8 6 6 8 7 7 7 7 -2005 2023 2005 2023 2006 2006 2007 2025 46 45 1 0 7 7 0 0 0 0 0 -2005 2023 2005 2023 2006 2006 2024 2024 42 44 0 8 6 6 8 7 7 7 7 -2005 2023 2005 2023 2006 2006 2025 2025 42 45 0 8 6 6 8 7 7 7 7 -2005 2023 2005 2023 2006 2006 2025 2025 42 45 1 0 7 7 0 0 0 0 0 -2006 2006 2005 2005 2006 2006 2007 2007 58 45 0 8 6 6 8 7 7 7 7 -2006 2006 2005 2005 2006 2006 2007 2007 58 45 1 0 7 7 0 0 0 0 0 -2006 2006 2005 2005 2007 2007 2007 2007 58 46 0 8 7 7 7 7 7 7 7 -2006 2006 2005 2005 2007 2007 2007 2007 58 46 1 0 0 0 8 0 0 0 0 -2006 2006 2006 2006 2007 2007 2007 2007 58 46 0 8 7 7 7 7 7 7 7 -2006 2006 2006 2006 2007 2007 2007 2007 58 46 1 0 0 0 8 0 0 0 0 -2006 2006 2006 2006 2007 2007 2008 2008 58 47 0 7 7 7 7 7 7 7 7 -2006 2006 2006 2006 2007 2007 2008 2008 58 47 1 8 0 0 0 0 0 0 0 -2006 2024 2005 2023 2006 2006 2007 2007 49 45 0 8 6 6 8 7 7 7 7 -2006 2024 2005 2023 2006 2006 2007 2007 49 45 1 0 7 7 0 0 0 0 0 -2006 2024 2005 2023 2006 2006 2007 2025 46 45 0 8 6 6 8 7 7 7 7 -2006 2024 2005 2023 2006 2006 2007 2025 46 45 1 0 7 7 0 0 0 0 0 -2006 2024 2005 2023 2006 2006 2025 2025 42 45 0 8 6 6 8 7 7 7 7 -2006 2024 2005 2023 2006 2006 2025 2025 42 45 1 0 7 7 0 0 0 0 0 -2006 2024 2005 2023 2007 2007 2007 2007 49 46 0 8 7 7 7 7 7 7 7 -2006 2024 2005 2023 2007 2007 2007 2007 49 46 1 0 0 0 8 0 0 0 0 -2006 2024 2005 2023 2007 2007 2007 2025 46 46 0 8 7 7 7 7 7 7 7 -2006 2024 2005 2023 2007 2007 2007 2025 46 46 1 0 0 0 8 0 0 0 0 -2006 2024 2005 2023 2007 2007 2025 2025 42 46 0 8 7 7 7 7 7 7 7 -2006 2024 2005 2023 2007 2007 2025 2025 42 46 1 0 0 0 8 0 0 0 0 -2006 2024 2006 2024 2007 2007 2007 2007 49 46 0 8 7 7 7 7 7 7 7 -2006 2024 2006 2024 2007 2007 2007 2007 49 46 1 0 0 0 8 0 0 0 0 -2006 2024 2006 2024 2007 2007 2007 2025 46 46 0 8 7 7 7 7 7 7 7 -2006 2024 2006 2024 2007 2007 2007 2025 46 46 1 0 0 0 8 0 0 0 0 -2006 2024 2006 2024 2007 2007 2008 2008 49 47 0 7 7 7 7 7 7 7 7 -2006 2024 2006 2024 2007 2007 2008 2008 49 47 1 8 0 0 0 0 0 0 0 -2006 2024 2006 2024 2007 2007 2008 2026 46 47 0 7 7 7 7 7 7 7 7 -2006 2024 2006 2024 2007 2007 2008 2026 46 47 1 8 0 0 0 0 0 0 0 -2006 2024 2006 2024 2007 2007 2025 2025 42 46 0 8 7 7 7 7 7 7 7 -2006 2024 2006 2024 2007 2007 2025 2025 42 46 1 0 0 0 8 0 0 0 0 -2006 2024 2006 2024 2007 2007 2026 2026 42 47 0 7 7 7 7 7 7 7 7 -2006 2024 2006 2024 2007 2007 2026 2026 42 47 1 8 0 0 0 0 0 0 0 -2007 2007 2006 2006 2007 2007 2008 2008 58 47 0 7 7 7 7 7 7 7 7 -2007 2007 2006 2006 2007 2007 2008 2008 58 47 1 8 0 0 0 0 0 0 0 -2007 2007 2006 2006 2008 2008 2008 2008 58 48 0 7 7 7 7 7 7 7 7 -2007 2007 2007 2007 2008 2008 2008 2008 58 48 0 7 7 7 7 7 7 7 7 -2007 2007 2007 2007 2008 2008 2009 2009 58 49 0 7 7 7 7 7 7 7 7 -2007 2025 2006 2024 2007 2007 2008 2008 49 47 0 7 7 7 7 7 7 7 7 -2007 2025 2006 2024 2007 2007 2008 2008 49 47 1 8 0 0 0 0 0 0 0 -2007 2025 2006 2024 2007 2007 2008 2026 46 47 0 7 7 7 7 7 7 7 7 -2007 2025 2006 2024 2007 2007 2008 2026 46 47 1 8 0 0 0 0 0 0 0 -2007 2025 2006 2024 2007 2007 2026 2026 42 47 0 7 7 7 7 7 7 7 7 -2007 2025 2006 2024 2007 2007 2026 2026 42 47 1 8 0 0 0 0 0 0 0 -2007 2025 2006 2024 2008 2008 2008 2008 49 48 0 7 7 7 7 7 7 7 7 -2007 2025 2006 2024 2008 2008 2008 2026 46 48 0 7 7 7 7 7 7 7 7 -2007 2025 2006 2024 2008 2008 2026 2026 42 48 0 7 7 7 7 7 7 7 7 -2007 2025 2007 2025 2008 2008 2008 2008 49 48 0 7 7 7 7 7 7 7 7 -2007 2025 2007 2025 2008 2008 2008 2026 46 48 0 7 7 7 7 7 7 7 7 -2007 2025 2007 2025 2008 2008 2009 2009 49 49 0 7 7 7 7 7 7 7 7 -2007 2025 2007 2025 2008 2008 2009 2027 46 49 0 7 7 7 7 7 7 7 7 -2007 2025 2007 2025 2008 2008 2026 2026 42 48 0 7 7 7 7 7 7 7 7 -2007 2025 2007 2025 2008 2008 2027 2027 42 49 0 7 7 7 7 7 7 7 7 -2008 2008 2007 2007 2008 2008 2009 2009 58 49 0 7 7 7 7 7 7 7 7 -2008 2008 2007 2007 2009 2009 2009 2009 58 50 0 7 7 7 7 7 7 7 7 -2008 2008 2008 2008 2009 2009 2009 2009 58 50 0 7 7 7 7 7 7 7 7 -2008 2008 2008 2008 2009 2009 2010 2010 58 51 0 7 7 7 7 7 7 7 7 -2008 2026 2007 2025 2008 2008 2009 2009 49 49 0 7 7 7 7 7 7 7 7 -2008 2026 2007 2025 2008 2008 2009 2027 46 49 0 7 7 7 7 7 7 7 7 -2008 2026 2007 2025 2008 2008 2027 2027 42 49 0 7 7 7 7 7 7 7 7 -2008 2026 2007 2025 2009 2009 2009 2009 49 50 0 7 7 7 7 7 7 7 7 -2008 2026 2007 2025 2009 2009 2009 2027 46 50 0 7 7 7 7 7 7 7 7 -2008 2026 2007 2025 2009 2009 2027 2027 42 50 0 7 7 7 7 7 7 7 7 -2008 2026 2008 2026 2009 2009 2009 2009 49 50 0 7 7 7 7 7 7 7 7 -2008 2026 2008 2026 2009 2009 2009 2027 46 50 0 7 7 7 7 7 7 7 7 -2008 2026 2008 2026 2009 2009 2010 2010 49 51 0 7 7 7 7 7 7 7 7 -2008 2026 2008 2026 2009 2009 2010 2028 46 51 0 7 7 7 7 7 7 7 7 -2008 2026 2008 2026 2009 2009 2027 2027 42 50 0 7 7 7 7 7 7 7 7 -2008 2026 2008 2026 2009 2009 2028 2028 42 51 0 7 7 7 7 7 7 7 7 -2009 2009 2008 2008 2009 2009 2010 2010 58 51 0 7 7 7 7 7 7 7 7 -2009 2009 2008 2008 2010 2010 2010 2010 58 52 0 7 7 7 7 7 7 7 7 -2009 2009 2008 2008 2010 2010 2010 2010 58 52 1 0 0 0 0 0 8 8 0 -2009 2009 2009 2009 2010 2010 2010 2010 58 52 0 7 7 7 7 7 7 7 7 -2009 2009 2009 2009 2010 2010 2010 2010 58 52 1 0 0 0 0 0 8 8 0 -2009 2009 2009 2009 2010 2010 2011 2011 58 53 0 7 7 7 7 7 8 8 7 -2009 2027 2008 2026 2009 2009 2010 2010 49 51 0 7 7 7 7 7 7 7 7 -2009 2027 2008 2026 2009 2009 2010 2028 46 51 0 7 7 7 7 7 7 7 7 -2009 2027 2008 2026 2009 2009 2028 2028 42 51 0 7 7 7 7 7 7 7 7 -2009 2027 2008 2026 2010 2010 2010 2010 49 52 0 7 7 7 7 7 7 7 7 -2009 2027 2008 2026 2010 2010 2010 2010 49 52 1 0 0 0 0 0 8 8 0 -2009 2027 2008 2026 2010 2010 2010 2028 46 52 0 7 7 7 7 7 7 7 7 -2009 2027 2008 2026 2010 2010 2010 2028 46 52 1 0 0 0 0 0 8 8 0 -2009 2027 2008 2026 2010 2010 2028 2028 42 52 0 7 7 7 7 7 7 7 7 -2009 2027 2008 2026 2010 2010 2028 2028 42 52 1 0 0 0 0 0 8 8 0 -2009 2027 2009 2027 2010 2010 2010 2010 49 52 0 7 7 7 7 7 7 7 7 -2009 2027 2009 2027 2010 2010 2010 2010 49 52 1 0 0 0 0 0 8 8 0 -2009 2027 2009 2027 2010 2010 2010 2028 46 52 0 7 7 7 7 7 7 7 7 -2009 2027 2009 2027 2010 2010 2010 2028 46 52 1 0 0 0 0 0 8 8 0 -2009 2027 2009 2027 2010 2010 2011 2011 49 53 0 7 7 7 7 7 8 8 7 -2009 2027 2009 2027 2010 2010 2011 2029 46 53 0 7 7 7 7 7 8 8 7 -2009 2027 2009 2027 2010 2010 2028 2028 42 52 0 7 7 7 7 7 7 7 7 -2009 2027 2009 2027 2010 2010 2028 2028 42 52 1 0 0 0 0 0 8 8 0 -2009 2027 2009 2027 2010 2010 2029 2029 42 53 0 7 7 7 7 7 8 8 7 -2010 2010 2009 2009 2010 2010 2011 2011 58 53 0 7 7 7 7 7 8 8 7 -2010 2010 2009 2009 2011 2011 2011 2011 58 54 0 7 7 7 7 6 8 8 6 -2010 2010 2009 2009 2011 2011 2011 2011 58 54 1 0 0 0 0 7 0 0 0 -2010 2010 2010 2010 2011 2011 2011 2011 58 54 0 7 7 7 7 6 8 8 6 -2010 2010 2010 2010 2011 2011 2011 2011 58 54 1 0 0 0 0 7 0 0 0 -2010 2010 2010 2010 2011 2011 2012 2012 58 55 0 7 7 7 7 6 8 8 6 -2010 2028 2009 2027 2010 2010 2011 2011 49 53 0 7 7 7 7 7 8 8 7 -2010 2028 2009 2027 2010 2010 2011 2029 46 53 0 7 7 7 7 7 8 8 7 -2010 2028 2009 2027 2010 2010 2029 2029 42 53 0 7 7 7 7 7 8 8 7 -2010 2028 2009 2027 2011 2011 2011 2011 49 54 0 7 7 7 7 6 8 8 6 -2010 2028 2009 2027 2011 2011 2011 2011 49 54 1 0 0 0 0 7 0 0 0 -2010 2028 2009 2027 2011 2011 2011 2029 46 54 0 7 7 7 7 6 8 8 6 -2010 2028 2009 2027 2011 2011 2011 2029 46 54 1 0 0 0 0 7 0 0 0 -2010 2028 2009 2027 2011 2011 2029 2029 42 54 0 7 7 7 7 6 8 8 6 -2010 2028 2009 2027 2011 2011 2029 2029 42 54 1 0 0 0 0 7 0 0 0 -2010 2028 2010 2028 2011 2011 2011 2011 49 54 0 7 7 7 7 6 8 8 6 -2010 2028 2010 2028 2011 2011 2011 2011 49 54 1 0 0 0 0 7 0 0 0 -2010 2028 2010 2028 2011 2011 2011 2029 46 54 0 7 7 7 7 6 8 8 6 -2010 2028 2010 2028 2011 2011 2011 2029 46 54 1 0 0 0 0 7 0 0 0 -2010 2028 2010 2028 2011 2011 2012 2012 49 55 0 7 7 7 7 6 8 8 6 -2010 2028 2010 2028 2011 2011 2012 2030 46 55 0 7 7 7 7 6 8 8 6 -2010 2028 2010 2028 2011 2011 2029 2029 42 54 0 7 7 7 7 6 8 8 6 -2010 2028 2010 2028 2011 2011 2029 2029 42 54 1 0 0 0 0 7 0 0 0 -2010 2028 2010 2028 2011 2011 2030 2030 42 55 0 7 7 7 7 6 8 8 6 -2011 2011 2010 2010 2011 2011 2012 2012 58 55 0 7 7 7 7 6 8 8 6 -2011 2011 2010 2010 2012 2012 2012 2012 58 56 0 7 7 7 7 6 8 8 6 -2011 2011 2010 2010 2012 2012 2012 2012 58 56 1 0 8 8 0 0 0 0 0 -2011 2011 2011 2011 2012 2012 2012 2012 58 56 0 7 7 7 7 6 8 8 6 -2011 2011 2011 2011 2012 2012 2012 2012 58 56 1 0 8 8 0 0 0 0 0 -2011 2011 2011 2011 2012 2012 2013 2013 58 57 0 6 8 8 6 6 8 8 6 -2011 2011 2011 2011 2012 2012 2013 2013 58 57 1 7 0 0 7 0 0 0 0 -2011 2029 2010 2028 2011 2011 2012 2012 49 55 0 7 7 7 7 6 8 8 6 -2011 2029 2010 2028 2011 2011 2012 2030 46 55 0 7 7 7 7 6 8 8 6 -2011 2029 2010 2028 2011 2011 2030 2030 42 55 0 7 7 7 7 6 8 8 6 -2011 2029 2010 2028 2012 2012 2012 2012 49 56 0 7 7 7 7 6 8 8 6 -2011 2029 2010 2028 2012 2012 2012 2012 49 56 1 0 8 8 0 0 0 0 0 -2011 2029 2010 2028 2012 2012 2012 2030 46 56 0 7 7 7 7 6 8 8 6 -2011 2029 2010 2028 2012 2012 2012 2030 46 56 1 0 8 8 0 0 0 0 0 -2011 2029 2010 2028 2012 2012 2030 2030 42 56 0 7 7 7 7 6 8 8 6 -2011 2029 2010 2028 2012 2012 2030 2030 42 56 1 0 8 8 0 0 0 0 0 -2011 2029 2011 2029 2012 2012 2012 2012 49 56 0 7 7 7 7 6 8 8 6 -2011 2029 2011 2029 2012 2012 2012 2012 49 56 1 0 8 8 0 0 0 0 0 -2011 2029 2011 2029 2012 2012 2012 2030 46 56 0 7 7 7 7 6 8 8 6 -2011 2029 2011 2029 2012 2012 2012 2030 46 56 1 0 8 8 0 0 0 0 0 -2011 2029 2011 2029 2012 2012 2013 2013 49 57 0 6 8 8 6 6 8 8 6 -2011 2029 2011 2029 2012 2012 2013 2013 49 57 1 7 0 0 7 0 0 0 0 -2011 2029 2011 2029 2012 2012 2013 2031 46 57 0 6 8 8 6 6 8 8 6 -2011 2029 2011 2029 2012 2012 2013 2031 46 57 1 7 0 0 7 0 0 0 0 -2011 2029 2011 2029 2012 2012 2030 2030 42 56 0 7 7 7 7 6 8 8 6 -2011 2029 2011 2029 2012 2012 2030 2030 42 56 1 0 8 8 0 0 0 0 0 -2011 2029 2011 2029 2012 2012 2031 2031 42 57 0 6 8 8 6 6 8 8 6 -2011 2029 2011 2029 2012 2012 2031 2031 42 57 1 7 0 0 7 0 0 0 0 -2012 2012 2011 2011 2012 2012 2013 2013 58 57 0 6 8 8 6 6 8 8 6 -2012 2012 2011 2011 2012 2012 2013 2013 58 57 1 7 0 0 7 0 0 0 0 -2012 2012 2011 2011 2013 2013 2013 2013 58 58 0 6 8 8 6 6 8 8 6 -2012 2012 2012 2012 2013 2013 2013 2013 58 58 0 6 8 8 6 6 8 8 6 -2012 2012 2012 2012 2013 2013 2014 2014 58 59 0 6 8 8 6 6 8 8 6 -2012 2030 2011 2029 2012 2012 2013 2013 49 57 0 6 8 8 6 6 8 8 6 -2012 2030 2011 2029 2012 2012 2013 2013 49 57 1 7 0 0 7 0 0 0 0 -2012 2030 2011 2029 2012 2012 2013 2031 46 57 0 6 8 8 6 6 8 8 6 -2012 2030 2011 2029 2012 2012 2013 2031 46 57 1 7 0 0 7 0 0 0 0 -2012 2030 2011 2029 2012 2012 2031 2031 42 57 0 6 8 8 6 6 8 8 6 -2012 2030 2011 2029 2012 2012 2031 2031 42 57 1 7 0 0 7 0 0 0 0 -2012 2030 2011 2029 2013 2013 2013 2013 49 58 0 6 8 8 6 6 8 8 6 -2012 2030 2011 2029 2013 2013 2013 2031 46 58 0 6 8 8 6 6 8 8 6 -2012 2030 2011 2029 2013 2013 2031 2031 42 58 0 6 8 8 6 6 8 8 6 -2012 2030 2012 2030 2013 2013 2013 2013 49 58 0 6 8 8 6 6 8 8 6 -2012 2030 2012 2030 2013 2013 2013 2031 46 58 0 6 8 8 6 6 8 8 6 -2012 2030 2012 2030 2013 2013 2014 2014 49 59 0 6 8 8 6 6 8 8 6 -2012 2030 2012 2030 2013 2013 2014 2032 46 59 0 6 8 8 6 6 8 8 6 -2012 2030 2012 2030 2013 2013 2031 2031 42 58 0 6 8 8 6 6 8 8 6 -2012 2030 2012 2030 2013 2013 2032 2032 42 59 0 6 8 8 6 6 8 8 6 -2013 2013 2012 2012 2013 2013 2014 2014 58 59 0 6 8 8 6 6 8 8 6 -2013 2013 2012 2012 2014 2014 2014 2014 58 60 0 6 8 8 6 6 8 8 6 -2013 2013 2013 2013 2014 2014 2014 2014 58 60 0 6 8 8 6 6 8 8 6 -2013 2013 2013 2013 2014 2014 2015 2015 58 61 0 6 8 8 6 6 8 8 6 -2013 2031 2012 2030 2013 2013 2014 2014 49 59 0 6 8 8 6 6 8 8 6 -2013 2031 2012 2030 2013 2013 2014 2032 46 59 0 6 8 8 6 6 8 8 6 -2013 2031 2012 2030 2013 2013 2032 2032 42 59 0 6 8 8 6 6 8 8 6 -2013 2031 2012 2030 2014 2014 2014 2014 49 60 0 6 8 8 6 6 8 8 6 -2013 2031 2012 2030 2014 2014 2014 2032 46 60 0 6 8 8 6 6 8 8 6 -2013 2031 2012 2030 2014 2014 2032 2032 42 60 0 6 8 8 6 6 8 8 6 -2013 2031 2013 2031 2014 2014 2014 2014 49 60 0 6 8 8 6 6 8 8 6 -2013 2031 2013 2031 2014 2014 2014 2032 46 60 0 6 8 8 6 6 8 8 6 -2013 2031 2013 2031 2014 2014 2015 2015 49 61 0 6 8 8 6 6 8 8 6 -2013 2031 2013 2031 2014 2014 2015 2033 46 61 0 6 8 8 6 6 8 8 6 -2013 2031 2013 2031 2014 2014 2032 2032 42 60 0 6 8 8 6 6 8 8 6 -2013 2031 2013 2031 2014 2014 2033 2033 42 61 0 6 8 8 6 6 8 8 6 -2014 2014 2013 2013 2014 2014 2015 2015 58 61 0 6 8 8 6 6 8 8 6 -2014 2014 2013 2013 2015 2015 2015 2015 58 62 0 6 8 8 6 0 0 0 0 -2014 2032 2013 2031 2014 2014 2015 2015 49 61 0 6 8 8 6 6 8 8 6 -2014 2032 2013 2031 2014 2014 2015 2033 46 61 0 6 8 8 6 6 8 8 6 -2014 2032 2013 2031 2014 2014 2033 2033 42 61 0 6 8 8 6 6 8 8 6 -2014 2032 2013 2031 2015 2015 2015 2015 49 62 0 6 8 8 6 0 0 0 0 -2014 2032 2013 2031 2015 2015 2015 2033 46 62 0 6 8 8 6 0 0 0 0 -2014 2032 2013 2031 2015 2015 2033 2033 42 62 0 6 8 8 6 0 0 0 0 -2015 2015 2014 2014 3001 3001 3001 3001 58 64 0 6 8 8 6 12 10 10 12 -2015 2015 2015 2015 3001 3001 3001 3001 58 64 0 6 8 8 6 12 10 10 12 -2015 2015 2015 2015 3001 3001 3002 3002 58 65 0 6 8 8 6 12 10 10 12 -2015 2033 2014 2032 3001 3001 3001 3001 49 64 0 6 8 8 6 12 10 10 12 -2015 2033 2014 2032 3001 3001 3001 3019 46 64 0 6 8 8 6 12 10 10 12 -2015 2033 2014 2032 3001 3001 3019 3019 42 64 0 6 8 8 6 12 10 10 12 -2015 2033 2015 2033 3001 3001 3001 3001 49 64 0 6 8 8 6 12 10 10 12 -2015 2033 2015 2033 3001 3001 3001 3019 46 64 0 6 8 8 6 12 10 10 12 -2015 2033 2015 2033 3001 3001 3002 3002 49 65 0 6 8 8 6 12 10 10 12 -2015 2033 2015 2033 3001 3001 3002 3020 46 65 0 6 8 8 6 12 10 10 12 -2015 2033 2015 2033 3001 3001 3019 3019 42 64 0 6 8 8 6 12 10 10 12 -2015 2033 2015 2033 3001 3001 3020 3020 42 65 0 6 8 8 6 12 10 10 12 -2016 2016 2015 2015 3001 3001 3002 3002 58 65 0 6 8 8 6 12 10 10 12 -2016 2016 2015 2015 3002 3002 3002 3002 58 66 0 6 8 8 0 12 10 10 12 -2016 2034 2015 2033 3001 3001 3002 3002 49 65 0 6 8 8 6 12 10 10 12 -2016 2034 2015 2033 3001 3001 3002 3020 46 65 0 6 8 8 6 12 10 10 12 -2016 2034 2015 2033 3001 3001 3020 3020 42 65 0 6 8 8 6 12 10 10 12 -2016 2034 2015 2033 3002 3002 3002 3002 49 66 0 6 8 8 0 12 10 10 12 -2016 2034 2015 2033 3002 3002 3002 3020 46 66 0 6 8 8 0 12 10 10 12 -2016 2034 2015 2033 3002 3002 3020 3020 42 66 0 6 8 8 0 12 10 10 12 -2019 2019 2019 2019 2002 2002 2020 2020 35 36 0 8 4 6 8 8 6 6 8 -2019 2019 2019 2019 2002 2002 2020 2020 35 36 1 0 6 0 0 0 0 0 0 -2019 2019 2019 2019 2002 2002 2021 2021 35 37 0 8 6 6 8 8 6 6 8 -2019 2019 2019 2019 2002 2020 2020 2020 31 36 0 8 4 6 8 8 6 6 8 -2019 2019 2019 2019 2002 2020 2020 2020 31 36 1 0 6 0 0 0 0 0 0 -2019 2019 2019 2019 2002 2020 2021 2021 31 37 0 8 6 6 8 8 6 6 8 -2019 2019 2019 2019 2020 2020 2020 2020 28 36 0 8 4 6 8 8 6 6 8 -2019 2019 2019 2019 2020 2020 2020 2020 28 36 1 0 6 0 0 0 0 0 0 -2019 2019 2019 2019 2020 2020 2021 2021 28 37 0 8 6 6 8 8 6 6 8 -2019 2037 2019 2037 2020 2020 2020 2020 21 36 0 8 4 6 8 8 6 6 8 -2019 2037 2019 2037 2020 2020 2020 2020 21 36 1 0 6 0 0 0 0 0 0 -2019 2037 2019 2037 2020 2020 2020 2038 17 36 0 8 4 6 8 8 6 6 8 -2019 2037 2019 2037 2020 2020 2020 2038 17 36 1 0 6 0 0 0 0 0 0 -2019 2037 2019 2037 2020 2020 2021 2021 21 37 0 8 6 6 8 8 6 6 8 -2019 2037 2019 2037 2020 2020 2021 2039 17 37 0 8 6 6 8 8 6 6 8 -2019 2037 2019 2037 2020 2020 2038 2038 14 36 0 8 4 6 8 8 6 6 8 -2019 2037 2019 2037 2020 2020 2038 2038 14 36 1 0 6 0 0 0 0 0 0 -2019 2037 2019 2037 2020 2020 2039 2039 14 37 0 8 6 6 8 8 6 6 8 -2020 2020 2019 2019 2002 2002 2021 2021 35 37 0 8 6 6 8 8 6 6 8 -2020 2020 2019 2019 2002 2020 2021 2021 31 37 0 8 6 6 8 8 6 6 8 -2020 2020 2019 2019 2003 2003 2021 2021 35 38 0 8 6 6 8 8 6 6 8 -2020 2020 2019 2019 2003 2021 2021 2021 31 38 0 8 6 6 8 8 6 6 8 -2020 2020 2019 2019 2020 2020 2021 2021 28 37 0 8 6 6 8 8 6 6 8 -2020 2020 2019 2019 2021 2021 2021 2021 28 38 0 8 6 6 8 8 6 6 8 -2020 2020 2020 2020 2003 2003 2021 2021 35 38 0 8 6 6 8 8 6 6 8 -2020 2020 2020 2020 2003 2003 2022 2022 35 39 0 8 6 6 8 8 6 6 8 -2020 2020 2020 2020 2003 2021 2021 2021 31 38 0 8 6 6 8 8 6 6 8 -2020 2020 2020 2020 2003 2021 2022 2022 31 39 0 8 6 6 8 8 6 6 8 -2020 2020 2020 2020 2021 2021 2021 2021 28 38 0 8 6 6 8 8 6 6 8 -2020 2020 2020 2020 2021 2021 2022 2022 28 39 0 8 6 6 8 8 6 6 8 -2020 2038 2019 2037 2020 2020 2021 2021 21 37 0 8 6 6 8 8 6 6 8 -2020 2038 2019 2037 2020 2020 2021 2039 17 37 0 8 6 6 8 8 6 6 8 -2020 2038 2019 2037 2020 2020 2039 2039 14 37 0 8 6 6 8 8 6 6 8 -2020 2038 2019 2037 2021 2021 2021 2021 21 38 0 8 6 6 8 8 6 6 8 -2020 2038 2019 2037 2021 2021 2021 2039 17 38 0 8 6 6 8 8 6 6 8 -2020 2038 2019 2037 2021 2021 2039 2039 14 38 0 8 6 6 8 8 6 6 8 -2020 2038 2020 2038 2021 2021 2021 2021 21 38 0 8 6 6 8 8 6 6 8 -2020 2038 2020 2038 2021 2021 2021 2039 17 38 0 8 6 6 8 8 6 6 8 -2020 2038 2020 2038 2021 2021 2022 2022 21 39 0 8 6 6 8 8 6 6 8 -2020 2038 2020 2038 2021 2021 2022 2040 17 39 0 8 6 6 8 8 6 6 8 -2020 2038 2020 2038 2021 2021 2039 2039 14 38 0 8 6 6 8 8 6 6 8 -2020 2038 2020 2038 2021 2021 2040 2040 14 39 0 8 6 6 8 8 6 6 8 -2021 2021 2020 2020 2003 2003 2022 2022 35 39 0 8 6 6 8 8 6 6 8 -2021 2021 2020 2020 2003 2021 2022 2022 31 39 0 8 6 6 8 8 6 6 8 -2021 2021 2020 2020 2004 2004 2022 2022 35 40 0 8 6 6 8 8 6 6 8 -2021 2021 2020 2020 2004 2022 2022 2022 31 40 0 8 6 6 8 8 6 6 8 -2021 2021 2020 2020 2021 2021 2022 2022 28 39 0 8 6 6 8 8 6 6 8 -2021 2021 2020 2020 2022 2022 2022 2022 28 40 0 8 6 6 8 8 6 6 8 -2021 2021 2021 2021 2004 2004 2022 2022 35 40 0 8 6 6 8 8 6 6 8 -2021 2021 2021 2021 2004 2004 2023 2023 35 41 0 8 6 6 8 8 6 6 8 -2021 2021 2021 2021 2004 2022 2022 2022 31 40 0 8 6 6 8 8 6 6 8 -2021 2021 2021 2021 2004 2022 2023 2023 31 41 0 8 6 6 8 8 6 6 8 -2021 2021 2021 2021 2022 2022 2022 2022 28 40 0 8 6 6 8 8 6 6 8 -2021 2021 2021 2021 2022 2022 2023 2023 28 41 0 8 6 6 8 8 6 6 8 -2021 2039 2020 2038 2021 2021 2022 2022 21 39 0 8 6 6 8 8 6 6 8 -2021 2039 2020 2038 2021 2021 2022 2040 17 39 0 8 6 6 8 8 6 6 8 -2021 2039 2020 2038 2021 2021 2040 2040 14 39 0 8 6 6 8 8 6 6 8 -2021 2039 2020 2038 2022 2022 2022 2022 21 40 0 8 6 6 8 8 6 6 8 -2021 2039 2020 2038 2022 2022 2022 2040 17 40 0 8 6 6 8 8 6 6 8 -2021 2039 2020 2038 2022 2022 2040 2040 14 40 0 8 6 6 8 8 6 6 8 -2021 2039 2021 2039 2022 2022 2022 2022 21 40 0 8 6 6 8 8 6 6 8 -2021 2039 2021 2039 2022 2022 2022 2040 17 40 0 8 6 6 8 8 6 6 8 -2021 2039 2021 2039 2022 2022 2023 2023 21 41 0 8 6 6 8 8 6 6 8 -2021 2039 2021 2039 2022 2022 2023 2041 17 41 0 8 6 6 8 8 6 6 8 -2021 2039 2021 2039 2022 2022 2040 2040 14 40 0 8 6 6 8 8 6 6 8 -2021 2039 2021 2039 2022 2022 2041 2041 14 41 0 8 6 6 8 8 6 6 8 -2022 2022 2021 2021 2004 2004 2023 2023 35 41 0 8 6 6 8 8 6 6 8 -2022 2022 2021 2021 2004 2022 2023 2023 31 41 0 8 6 6 8 8 6 6 8 -2022 2022 2021 2021 2005 2005 2023 2023 35 42 0 8 6 6 8 8 6 6 8 -2022 2022 2021 2021 2005 2005 2023 2023 35 42 1 0 0 0 0 0 7 7 0 -2022 2022 2021 2021 2005 2023 2023 2023 31 42 0 8 6 6 8 8 6 6 8 -2022 2022 2021 2021 2005 2023 2023 2023 31 42 1 0 0 0 0 0 7 7 0 -2022 2022 2021 2021 2022 2022 2023 2023 28 41 0 8 6 6 8 8 6 6 8 -2022 2022 2021 2021 2023 2023 2023 2023 28 42 0 8 6 6 8 8 6 6 8 -2022 2022 2021 2021 2023 2023 2023 2023 28 42 1 0 0 0 0 0 7 7 0 -2022 2022 2022 2022 2005 2005 2023 2023 35 42 0 8 6 6 8 8 6 6 8 -2022 2022 2022 2022 2005 2005 2023 2023 35 42 1 0 0 0 0 0 7 7 0 -2022 2022 2022 2022 2005 2005 2024 2024 35 43 0 8 6 6 8 7 7 7 7 -2022 2022 2022 2022 2005 2005 2024 2024 35 43 1 0 0 0 0 8 0 0 8 -2022 2022 2022 2022 2005 2023 2023 2023 31 42 0 8 6 6 8 8 6 6 8 -2022 2022 2022 2022 2005 2023 2023 2023 31 42 1 0 0 0 0 0 7 7 0 -2022 2022 2022 2022 2005 2023 2024 2024 31 43 0 8 6 6 8 7 7 7 7 -2022 2022 2022 2022 2005 2023 2024 2024 31 43 1 0 0 0 0 8 0 0 8 -2022 2022 2022 2022 2023 2023 2023 2023 28 42 0 8 6 6 8 8 6 6 8 -2022 2022 2022 2022 2023 2023 2023 2023 28 42 1 0 0 0 0 0 7 7 0 -2022 2022 2022 2022 2023 2023 2024 2024 28 43 0 8 6 6 8 7 7 7 7 -2022 2022 2022 2022 2023 2023 2024 2024 28 43 1 0 0 0 0 8 0 0 8 -2022 2040 2021 2039 2022 2022 2023 2023 21 41 0 8 6 6 8 8 6 6 8 -2022 2040 2021 2039 2022 2022 2023 2041 17 41 0 8 6 6 8 8 6 6 8 -2022 2040 2021 2039 2022 2022 2041 2041 14 41 0 8 6 6 8 8 6 6 8 -2022 2040 2021 2039 2023 2023 2023 2023 21 42 0 8 6 6 8 8 6 6 8 -2022 2040 2021 2039 2023 2023 2023 2023 21 42 1 0 0 0 0 0 7 7 0 -2022 2040 2021 2039 2023 2023 2023 2041 17 42 0 8 6 6 8 8 6 6 8 -2022 2040 2021 2039 2023 2023 2023 2041 17 42 1 0 0 0 0 0 7 7 0 -2022 2040 2021 2039 2023 2023 2041 2041 14 42 0 8 6 6 8 8 6 6 8 -2022 2040 2021 2039 2023 2023 2041 2041 14 42 1 0 0 0 0 0 7 7 0 -2022 2040 2022 2040 2023 2023 2023 2023 21 42 0 8 6 6 8 8 6 6 8 -2022 2040 2022 2040 2023 2023 2023 2023 21 42 1 0 0 0 0 0 7 7 0 -2022 2040 2022 2040 2023 2023 2023 2041 17 42 0 8 6 6 8 8 6 6 8 -2022 2040 2022 2040 2023 2023 2023 2041 17 42 1 0 0 0 0 0 7 7 0 -2022 2040 2022 2040 2023 2023 2024 2024 21 43 0 8 6 6 8 7 7 7 7 -2022 2040 2022 2040 2023 2023 2024 2024 21 43 1 0 0 0 0 8 0 0 8 -2022 2040 2022 2040 2023 2023 2024 2042 17 43 0 8 6 6 8 7 7 7 7 -2022 2040 2022 2040 2023 2023 2024 2042 17 43 1 0 0 0 0 8 0 0 8 -2022 2040 2022 2040 2023 2023 2041 2041 14 42 0 8 6 6 8 8 6 6 8 -2022 2040 2022 2040 2023 2023 2041 2041 14 42 1 0 0 0 0 0 7 7 0 -2022 2040 2022 2040 2023 2023 2042 2042 14 43 0 8 6 6 8 7 7 7 7 -2022 2040 2022 2040 2023 2023 2042 2042 14 43 1 0 0 0 0 8 0 0 8 -2023 2023 2022 2022 2005 2005 2024 2024 35 43 0 8 6 6 8 7 7 7 7 -2023 2023 2022 2022 2005 2005 2024 2024 35 43 1 0 0 0 0 8 0 0 8 -2023 2023 2022 2022 2005 2023 2024 2024 31 43 0 8 6 6 8 7 7 7 7 -2023 2023 2022 2022 2005 2023 2024 2024 31 43 1 0 0 0 0 8 0 0 8 -2023 2023 2022 2022 2006 2006 2024 2024 35 44 0 8 6 6 8 7 7 7 7 -2023 2023 2022 2022 2006 2024 2024 2024 31 44 0 8 6 6 8 7 7 7 7 -2023 2023 2022 2022 2023 2023 2024 2024 28 43 0 8 6 6 8 7 7 7 7 -2023 2023 2022 2022 2023 2023 2024 2024 28 43 1 0 0 0 0 8 0 0 8 -2023 2023 2022 2022 2024 2024 2024 2024 28 44 0 8 6 6 8 7 7 7 7 -2023 2023 2023 2023 2006 2006 2024 2024 35 44 0 8 6 6 8 7 7 7 7 -2023 2023 2023 2023 2006 2006 2025 2025 35 45 0 8 6 6 8 7 7 7 7 -2023 2023 2023 2023 2006 2006 2025 2025 35 45 1 0 7 7 0 0 0 0 0 -2023 2023 2023 2023 2006 2024 2024 2024 31 44 0 8 6 6 8 7 7 7 7 -2023 2023 2023 2023 2006 2024 2025 2025 31 45 0 8 6 6 8 7 7 7 7 -2023 2023 2023 2023 2006 2024 2025 2025 31 45 1 0 7 7 0 0 0 0 0 -2023 2023 2023 2023 2024 2024 2024 2024 28 44 0 8 6 6 8 7 7 7 7 -2023 2023 2023 2023 2024 2024 2025 2025 28 45 0 8 6 6 8 7 7 7 7 -2023 2023 2023 2023 2024 2024 2025 2025 28 45 1 0 7 7 0 0 0 0 0 -2023 2041 2022 2040 2023 2023 2024 2024 21 43 0 8 6 6 8 7 7 7 7 -2023 2041 2022 2040 2023 2023 2024 2024 21 43 1 0 0 0 0 8 0 0 8 -2023 2041 2022 2040 2023 2023 2024 2042 17 43 0 8 6 6 8 7 7 7 7 -2023 2041 2022 2040 2023 2023 2024 2042 17 43 1 0 0 0 0 8 0 0 8 -2023 2041 2022 2040 2023 2023 2042 2042 14 43 0 8 6 6 8 7 7 7 7 -2023 2041 2022 2040 2023 2023 2042 2042 14 43 1 0 0 0 0 8 0 0 8 -2023 2041 2022 2040 2024 2024 2024 2024 21 44 0 8 6 6 8 7 7 7 7 -2023 2041 2022 2040 2024 2024 2024 2042 17 44 0 8 6 6 8 7 7 7 7 -2023 2041 2022 2040 2024 2024 2042 2042 14 44 0 8 6 6 8 7 7 7 7 -2023 2041 2023 2041 2024 2024 2024 2024 21 44 0 8 6 6 8 7 7 7 7 -2023 2041 2023 2041 2024 2024 2024 2042 17 44 0 8 6 6 8 7 7 7 7 -2023 2041 2023 2041 2024 2024 2025 2025 21 45 0 8 6 6 8 7 7 7 7 -2023 2041 2023 2041 2024 2024 2025 2025 21 45 1 0 7 7 0 0 0 0 0 -2023 2041 2023 2041 2024 2024 2025 2043 17 45 0 8 6 6 8 7 7 7 7 -2023 2041 2023 2041 2024 2024 2025 2043 17 45 1 0 7 7 0 0 0 0 0 -2023 2041 2023 2041 2024 2024 2042 2042 14 44 0 8 6 6 8 7 7 7 7 -2023 2041 2023 2041 2024 2024 2043 2043 14 45 0 8 6 6 8 7 7 7 7 -2023 2041 2023 2041 2024 2024 2043 2043 14 45 1 0 7 7 0 0 0 0 0 -2024 2024 2023 2023 2006 2006 2025 2025 35 45 0 8 6 6 8 7 7 7 7 -2024 2024 2023 2023 2006 2006 2025 2025 35 45 1 0 7 7 0 0 0 0 0 -2024 2024 2023 2023 2006 2024 2025 2025 31 45 0 8 6 6 8 7 7 7 7 -2024 2024 2023 2023 2006 2024 2025 2025 31 45 1 0 7 7 0 0 0 0 0 -2024 2024 2023 2023 2007 2007 2025 2025 35 46 0 8 7 7 7 7 7 7 7 -2024 2024 2023 2023 2007 2007 2025 2025 35 46 1 0 0 0 8 0 0 0 0 -2024 2024 2023 2023 2007 2025 2025 2025 31 46 0 8 7 7 7 7 7 7 7 -2024 2024 2023 2023 2007 2025 2025 2025 31 46 1 0 0 0 8 0 0 0 0 -2024 2024 2023 2023 2024 2024 2025 2025 28 45 0 8 6 6 8 7 7 7 7 -2024 2024 2023 2023 2024 2024 2025 2025 28 45 1 0 7 7 0 0 0 0 0 -2024 2024 2023 2023 2025 2025 2025 2025 28 46 0 8 7 7 7 7 7 7 7 -2024 2024 2023 2023 2025 2025 2025 2025 28 46 1 0 0 0 8 0 0 0 0 -2024 2024 2024 2024 2007 2007 2025 2025 35 46 0 8 7 7 7 7 7 7 7 -2024 2024 2024 2024 2007 2007 2025 2025 35 46 1 0 0 0 8 0 0 0 0 -2024 2024 2024 2024 2007 2007 2026 2026 35 47 0 7 7 7 7 7 7 7 7 -2024 2024 2024 2024 2007 2007 2026 2026 35 47 1 8 0 0 0 0 0 0 0 -2024 2024 2024 2024 2007 2025 2025 2025 31 46 0 8 7 7 7 7 7 7 7 -2024 2024 2024 2024 2007 2025 2025 2025 31 46 1 0 0 0 8 0 0 0 0 -2024 2024 2024 2024 2007 2025 2026 2026 31 47 0 7 7 7 7 7 7 7 7 -2024 2024 2024 2024 2007 2025 2026 2026 31 47 1 8 0 0 0 0 0 0 0 -2024 2024 2024 2024 2025 2025 2025 2025 28 46 0 8 7 7 7 7 7 7 7 -2024 2024 2024 2024 2025 2025 2025 2025 28 46 1 0 0 0 8 0 0 0 0 -2024 2024 2024 2024 2025 2025 2026 2026 28 47 0 7 7 7 7 7 7 7 7 -2024 2024 2024 2024 2025 2025 2026 2026 28 47 1 8 0 0 0 0 0 0 0 -2024 2042 2023 2041 2024 2024 2025 2025 21 45 0 8 6 6 8 7 7 7 7 -2024 2042 2023 2041 2024 2024 2025 2025 21 45 1 0 7 7 0 0 0 0 0 -2024 2042 2023 2041 2024 2024 2025 2043 17 45 0 8 6 6 8 7 7 7 7 -2024 2042 2023 2041 2024 2024 2025 2043 17 45 1 0 7 7 0 0 0 0 0 -2024 2042 2023 2041 2024 2024 2043 2043 14 45 0 8 6 6 8 7 7 7 7 -2024 2042 2023 2041 2024 2024 2043 2043 14 45 1 0 7 7 0 0 0 0 0 -2024 2042 2023 2041 2025 2025 2025 2025 21 46 0 8 7 7 7 7 7 7 7 -2024 2042 2023 2041 2025 2025 2025 2025 21 46 1 0 0 0 8 0 0 0 0 -2024 2042 2023 2041 2025 2025 2025 2043 17 46 0 8 7 7 7 7 7 7 7 -2024 2042 2023 2041 2025 2025 2025 2043 17 46 1 0 0 0 8 0 0 0 0 -2024 2042 2023 2041 2025 2025 2043 2043 14 46 0 8 7 7 7 7 7 7 7 -2024 2042 2023 2041 2025 2025 2043 2043 14 46 1 0 0 0 8 0 0 0 0 -2024 2042 2024 2042 2025 2025 2025 2025 21 46 0 8 7 7 7 7 7 7 7 -2024 2042 2024 2042 2025 2025 2025 2025 21 46 1 0 0 0 8 0 0 0 0 -2024 2042 2024 2042 2025 2025 2025 2043 17 46 0 8 7 7 7 7 7 7 7 -2024 2042 2024 2042 2025 2025 2025 2043 17 46 1 0 0 0 8 0 0 0 0 -2024 2042 2024 2042 2025 2025 2026 2026 21 47 0 7 7 7 7 7 7 7 7 -2024 2042 2024 2042 2025 2025 2026 2026 21 47 1 8 0 0 0 0 0 0 0 -2024 2042 2024 2042 2025 2025 2026 2044 17 47 0 7 7 7 7 7 7 7 7 -2024 2042 2024 2042 2025 2025 2026 2044 17 47 1 8 0 0 0 0 0 0 0 -2024 2042 2024 2042 2025 2025 2043 2043 14 46 0 8 7 7 7 7 7 7 7 -2024 2042 2024 2042 2025 2025 2043 2043 14 46 1 0 0 0 8 0 0 0 0 -2024 2042 2024 2042 2025 2025 2044 2044 14 47 0 7 7 7 7 7 7 7 7 -2024 2042 2024 2042 2025 2025 2044 2044 14 47 1 8 0 0 0 0 0 0 0 -2025 2025 2024 2024 2007 2007 2026 2026 35 47 0 7 7 7 7 7 7 7 7 -2025 2025 2024 2024 2007 2007 2026 2026 35 47 1 8 0 0 0 0 0 0 0 -2025 2025 2024 2024 2007 2025 2026 2026 31 47 0 7 7 7 7 7 7 7 7 -2025 2025 2024 2024 2007 2025 2026 2026 31 47 1 8 0 0 0 0 0 0 0 -2025 2025 2024 2024 2008 2008 2026 2026 35 48 0 7 7 7 7 7 7 7 7 -2025 2025 2024 2024 2008 2026 2026 2026 31 48 0 7 7 7 7 7 7 7 7 -2025 2025 2024 2024 2025 2025 2026 2026 28 47 0 7 7 7 7 7 7 7 7 -2025 2025 2024 2024 2025 2025 2026 2026 28 47 1 8 0 0 0 0 0 0 0 -2025 2025 2024 2024 2026 2026 2026 2026 28 48 0 7 7 7 7 7 7 7 7 -2025 2025 2025 2025 2008 2008 2026 2026 35 48 0 7 7 7 7 7 7 7 7 -2025 2025 2025 2025 2008 2008 2027 2027 35 49 0 7 7 7 7 7 7 7 7 -2025 2025 2025 2025 2008 2026 2026 2026 31 48 0 7 7 7 7 7 7 7 7 -2025 2025 2025 2025 2008 2026 2027 2027 31 49 0 7 7 7 7 7 7 7 7 -2025 2025 2025 2025 2026 2026 2026 2026 28 48 0 7 7 7 7 7 7 7 7 -2025 2025 2025 2025 2026 2026 2027 2027 28 49 0 7 7 7 7 7 7 7 7 -2025 2043 2024 2042 2025 2025 2026 2026 21 47 0 7 7 7 7 7 7 7 7 -2025 2043 2024 2042 2025 2025 2026 2026 21 47 1 8 0 0 0 0 0 0 0 -2025 2043 2024 2042 2025 2025 2026 2044 17 47 0 7 7 7 7 7 7 7 7 -2025 2043 2024 2042 2025 2025 2026 2044 17 47 1 8 0 0 0 0 0 0 0 -2025 2043 2024 2042 2025 2025 2044 2044 14 47 0 7 7 7 7 7 7 7 7 -2025 2043 2024 2042 2025 2025 2044 2044 14 47 1 8 0 0 0 0 0 0 0 -2025 2043 2024 2042 2026 2026 2026 2026 21 48 0 7 7 7 7 7 7 7 7 -2025 2043 2024 2042 2026 2026 2026 2044 17 48 0 7 7 7 7 7 7 7 7 -2025 2043 2024 2042 2026 2026 2044 2044 14 48 0 7 7 7 7 7 7 7 7 -2025 2043 2025 2043 2026 2026 2026 2026 21 48 0 7 7 7 7 7 7 7 7 -2025 2043 2025 2043 2026 2026 2026 2044 17 48 0 7 7 7 7 7 7 7 7 -2025 2043 2025 2043 2026 2026 2027 2027 21 49 0 7 7 7 7 7 7 7 7 -2025 2043 2025 2043 2026 2026 2027 2045 17 49 0 7 7 7 7 7 7 7 7 -2025 2043 2025 2043 2026 2026 2044 2044 14 48 0 7 7 7 7 7 7 7 7 -2025 2043 2025 2043 2026 2026 2045 2045 14 49 0 7 7 7 7 7 7 7 7 -2026 2026 2025 2025 2008 2008 2027 2027 35 49 0 7 7 7 7 7 7 7 7 -2026 2026 2025 2025 2008 2026 2027 2027 31 49 0 7 7 7 7 7 7 7 7 -2026 2026 2025 2025 2009 2009 2027 2027 35 50 0 7 7 7 7 7 7 7 7 -2026 2026 2025 2025 2009 2027 2027 2027 31 50 0 7 7 7 7 7 7 7 7 -2026 2026 2025 2025 2026 2026 2027 2027 28 49 0 7 7 7 7 7 7 7 7 -2026 2026 2025 2025 2027 2027 2027 2027 28 50 0 7 7 7 7 7 7 7 7 -2026 2026 2026 2026 2009 2009 2027 2027 35 50 0 7 7 7 7 7 7 7 7 -2026 2026 2026 2026 2009 2009 2028 2028 35 51 0 7 7 7 7 7 7 7 7 -2026 2026 2026 2026 2009 2027 2027 2027 31 50 0 7 7 7 7 7 7 7 7 -2026 2026 2026 2026 2009 2027 2028 2028 31 51 0 7 7 7 7 7 7 7 7 -2026 2026 2026 2026 2027 2027 2027 2027 28 50 0 7 7 7 7 7 7 7 7 -2026 2026 2026 2026 2027 2027 2028 2028 28 51 0 7 7 7 7 7 7 7 7 -2026 2044 2025 2043 2026 2026 2027 2027 21 49 0 7 7 7 7 7 7 7 7 -2026 2044 2025 2043 2026 2026 2027 2045 17 49 0 7 7 7 7 7 7 7 7 -2026 2044 2025 2043 2026 2026 2045 2045 14 49 0 7 7 7 7 7 7 7 7 -2026 2044 2025 2043 2027 2027 2027 2027 21 50 0 7 7 7 7 7 7 7 7 -2026 2044 2025 2043 2027 2027 2027 2045 17 50 0 7 7 7 7 7 7 7 7 -2026 2044 2025 2043 2027 2027 2045 2045 14 50 0 7 7 7 7 7 7 7 7 -2026 2044 2026 2044 2027 2027 2027 2027 21 50 0 7 7 7 7 7 7 7 7 -2026 2044 2026 2044 2027 2027 2027 2045 17 50 0 7 7 7 7 7 7 7 7 -2026 2044 2026 2044 2027 2027 2028 2028 21 51 0 7 7 7 7 7 7 7 7 -2026 2044 2026 2044 2027 2027 2028 2046 17 51 0 7 7 7 7 7 7 7 7 -2026 2044 2026 2044 2027 2027 2045 2045 14 50 0 7 7 7 7 7 7 7 7 -2026 2044 2026 2044 2027 2027 2046 2046 14 51 0 7 7 7 7 7 7 7 7 -2027 2027 2026 2026 2009 2009 2028 2028 35 51 0 7 7 7 7 7 7 7 7 -2027 2027 2026 2026 2009 2027 2028 2028 31 51 0 7 7 7 7 7 7 7 7 -2027 2027 2026 2026 2010 2010 2028 2028 35 52 0 7 7 7 7 7 7 7 7 -2027 2027 2026 2026 2010 2010 2028 2028 35 52 1 0 0 0 0 0 8 8 0 -2027 2027 2026 2026 2010 2028 2028 2028 31 52 0 7 7 7 7 7 7 7 7 -2027 2027 2026 2026 2010 2028 2028 2028 31 52 1 0 0 0 0 0 8 8 0 -2027 2027 2026 2026 2027 2027 2028 2028 28 51 0 7 7 7 7 7 7 7 7 -2027 2027 2026 2026 2028 2028 2028 2028 28 52 0 7 7 7 7 7 7 7 7 -2027 2027 2026 2026 2028 2028 2028 2028 28 52 1 0 0 0 0 0 8 8 0 -2027 2027 2027 2027 2010 2010 2028 2028 35 52 0 7 7 7 7 7 7 7 7 -2027 2027 2027 2027 2010 2010 2028 2028 35 52 1 0 0 0 0 0 8 8 0 -2027 2027 2027 2027 2010 2010 2029 2029 35 53 0 7 7 7 7 7 8 8 7 -2027 2027 2027 2027 2010 2028 2028 2028 31 52 0 7 7 7 7 7 7 7 7 -2027 2027 2027 2027 2010 2028 2028 2028 31 52 1 0 0 0 0 0 8 8 0 -2027 2027 2027 2027 2010 2028 2029 2029 31 53 0 7 7 7 7 7 8 8 7 -2027 2027 2027 2027 2028 2028 2028 2028 28 52 0 7 7 7 7 7 7 7 7 -2027 2027 2027 2027 2028 2028 2028 2028 28 52 1 0 0 0 0 0 8 8 0 -2027 2027 2027 2027 2028 2028 2029 2029 28 53 0 7 7 7 7 7 8 8 7 -2027 2045 2026 2044 2027 2027 2028 2028 21 51 0 7 7 7 7 7 7 7 7 -2027 2045 2026 2044 2027 2027 2028 2046 17 51 0 7 7 7 7 7 7 7 7 -2027 2045 2026 2044 2027 2027 2046 2046 14 51 0 7 7 7 7 7 7 7 7 -2027 2045 2026 2044 2028 2028 2028 2028 21 52 0 7 7 7 7 7 7 7 7 -2027 2045 2026 2044 2028 2028 2028 2028 21 52 1 0 0 0 0 0 8 8 0 -2027 2045 2026 2044 2028 2028 2028 2046 17 52 0 7 7 7 7 7 7 7 7 -2027 2045 2026 2044 2028 2028 2028 2046 17 52 1 0 0 0 0 0 8 8 0 -2027 2045 2026 2044 2028 2028 2046 2046 14 52 0 7 7 7 7 7 7 7 7 -2027 2045 2026 2044 2028 2028 2046 2046 14 52 1 0 0 0 0 0 8 8 0 -2027 2045 2027 2045 2028 2028 2028 2028 21 52 0 7 7 7 7 7 7 7 7 -2027 2045 2027 2045 2028 2028 2028 2028 21 52 1 0 0 0 0 0 8 8 0 -2027 2045 2027 2045 2028 2028 2028 2046 17 52 0 7 7 7 7 7 7 7 7 -2027 2045 2027 2045 2028 2028 2028 2046 17 52 1 0 0 0 0 0 8 8 0 -2027 2045 2027 2045 2028 2028 2029 2029 21 53 0 7 7 7 7 7 8 8 7 -2027 2045 2027 2045 2028 2028 2029 2047 17 53 0 7 7 7 7 7 8 8 7 -2027 2045 2027 2045 2028 2028 2046 2046 14 52 0 7 7 7 7 7 7 7 7 -2027 2045 2027 2045 2028 2028 2046 2046 14 52 1 0 0 0 0 0 8 8 0 -2027 2045 2027 2045 2028 2028 2047 2047 14 53 0 7 7 7 7 7 8 8 7 -2028 2028 2027 2027 2010 2010 2029 2029 35 53 0 7 7 7 7 7 8 8 7 -2028 2028 2027 2027 2010 2028 2029 2029 31 53 0 7 7 7 7 7 8 8 7 -2028 2028 2027 2027 2011 2011 2029 2029 35 54 0 7 7 7 7 6 8 8 6 -2028 2028 2027 2027 2011 2011 2029 2029 35 54 1 0 0 0 0 7 0 0 0 -2028 2028 2027 2027 2011 2029 2029 2029 31 54 0 7 7 7 7 6 8 8 6 -2028 2028 2027 2027 2011 2029 2029 2029 31 54 1 0 0 0 0 7 0 0 0 -2028 2028 2027 2027 2028 2028 2029 2029 28 53 0 7 7 7 7 7 8 8 7 -2028 2028 2027 2027 2029 2029 2029 2029 28 54 0 7 7 7 7 6 8 8 6 -2028 2028 2027 2027 2029 2029 2029 2029 28 54 1 0 0 0 0 7 0 0 0 -2028 2028 2028 2028 2011 2011 2029 2029 35 54 0 7 7 7 7 6 8 8 6 -2028 2028 2028 2028 2011 2011 2029 2029 35 54 1 0 0 0 0 7 0 0 0 -2028 2028 2028 2028 2011 2011 2030 2030 35 55 0 7 7 7 7 6 8 8 6 -2028 2028 2028 2028 2011 2029 2029 2029 31 54 0 7 7 7 7 6 8 8 6 -2028 2028 2028 2028 2011 2029 2029 2029 31 54 1 0 0 0 0 7 0 0 0 -2028 2028 2028 2028 2011 2029 2030 2030 31 55 0 7 7 7 7 6 8 8 6 -2028 2028 2028 2028 2029 2029 2029 2029 28 54 0 7 7 7 7 6 8 8 6 -2028 2028 2028 2028 2029 2029 2029 2029 28 54 1 0 0 0 0 7 0 0 0 -2028 2028 2028 2028 2029 2029 2030 2030 28 55 0 7 7 7 7 6 8 8 6 -2028 2046 2027 2045 2028 2028 2029 2029 21 53 0 7 7 7 7 7 8 8 7 -2028 2046 2027 2045 2028 2028 2029 2047 17 53 0 7 7 7 7 7 8 8 7 -2028 2046 2027 2045 2028 2028 2047 2047 14 53 0 7 7 7 7 7 8 8 7 -2028 2046 2027 2045 2029 2029 2029 2029 21 54 0 7 7 7 7 6 8 8 6 -2028 2046 2027 2045 2029 2029 2029 2029 21 54 1 0 0 0 0 7 0 0 0 -2028 2046 2027 2045 2029 2029 2029 2047 17 54 0 7 7 7 7 6 8 8 6 -2028 2046 2027 2045 2029 2029 2029 2047 17 54 1 0 0 0 0 7 0 0 0 -2028 2046 2027 2045 2029 2029 2047 2047 14 54 0 7 7 7 7 6 8 8 6 -2028 2046 2027 2045 2029 2029 2047 2047 14 54 1 0 0 0 0 7 0 0 0 -2028 2046 2028 2046 2029 2029 2029 2029 21 54 0 7 7 7 7 6 8 8 6 -2028 2046 2028 2046 2029 2029 2029 2029 21 54 1 0 0 0 0 7 0 0 0 -2028 2046 2028 2046 2029 2029 2029 2047 17 54 0 7 7 7 7 6 8 8 6 -2028 2046 2028 2046 2029 2029 2029 2047 17 54 1 0 0 0 0 7 0 0 0 -2028 2046 2028 2046 2029 2029 2030 2030 21 55 0 7 7 7 7 6 8 8 6 -2028 2046 2028 2046 2029 2029 2030 2048 17 55 0 7 7 7 7 6 8 8 6 -2028 2046 2028 2046 2029 2029 2047 2047 14 54 0 7 7 7 7 6 8 8 6 -2028 2046 2028 2046 2029 2029 2047 2047 14 54 1 0 0 0 0 7 0 0 0 -2028 2046 2028 2046 2029 2029 2048 2048 14 55 0 7 7 7 7 6 8 8 6 -2029 2029 2028 2028 2011 2011 2030 2030 35 55 0 7 7 7 7 6 8 8 6 -2029 2029 2028 2028 2011 2029 2030 2030 31 55 0 7 7 7 7 6 8 8 6 -2029 2029 2028 2028 2012 2012 2030 2030 35 56 0 7 7 7 7 6 8 8 6 -2029 2029 2028 2028 2012 2012 2030 2030 35 56 1 0 8 8 0 0 0 0 0 -2029 2029 2028 2028 2012 2030 2030 2030 31 56 0 7 7 7 7 6 8 8 6 -2029 2029 2028 2028 2012 2030 2030 2030 31 56 1 0 8 8 0 0 0 0 0 -2029 2029 2028 2028 2029 2029 2030 2030 28 55 0 7 7 7 7 6 8 8 6 -2029 2029 2028 2028 2030 2030 2030 2030 28 56 0 7 7 7 7 6 8 8 6 -2029 2029 2028 2028 2030 2030 2030 2030 28 56 1 0 8 8 0 0 0 0 0 -2029 2029 2029 2029 2012 2012 2030 2030 35 56 0 7 7 7 7 6 8 8 6 -2029 2029 2029 2029 2012 2012 2030 2030 35 56 1 0 8 8 0 0 0 0 0 -2029 2029 2029 2029 2012 2012 2031 2031 35 57 0 6 8 8 6 6 8 8 6 -2029 2029 2029 2029 2012 2012 2031 2031 35 57 1 7 0 0 7 0 0 0 0 -2029 2029 2029 2029 2012 2030 2030 2030 31 56 0 7 7 7 7 6 8 8 6 -2029 2029 2029 2029 2012 2030 2030 2030 31 56 1 0 8 8 0 0 0 0 0 -2029 2029 2029 2029 2012 2030 2031 2031 31 57 0 6 8 8 6 6 8 8 6 -2029 2029 2029 2029 2012 2030 2031 2031 31 57 1 7 0 0 7 0 0 0 0 -2029 2029 2029 2029 2030 2030 2030 2030 28 56 0 7 7 7 7 6 8 8 6 -2029 2029 2029 2029 2030 2030 2030 2030 28 56 1 0 8 8 0 0 0 0 0 -2029 2029 2029 2029 2030 2030 2031 2031 28 57 0 6 8 8 6 6 8 8 6 -2029 2029 2029 2029 2030 2030 2031 2031 28 57 1 7 0 0 7 0 0 0 0 -2029 2047 2028 2046 2029 2029 2030 2030 21 55 0 7 7 7 7 6 8 8 6 -2029 2047 2028 2046 2029 2029 2030 2048 17 55 0 7 7 7 7 6 8 8 6 -2029 2047 2028 2046 2029 2029 2048 2048 14 55 0 7 7 7 7 6 8 8 6 -2029 2047 2028 2046 2030 2030 2030 2030 21 56 0 7 7 7 7 6 8 8 6 -2029 2047 2028 2046 2030 2030 2030 2030 21 56 1 0 8 8 0 0 0 0 0 -2029 2047 2028 2046 2030 2030 2030 2048 17 56 0 7 7 7 7 6 8 8 6 -2029 2047 2028 2046 2030 2030 2030 2048 17 56 1 0 8 8 0 0 0 0 0 -2029 2047 2028 2046 2030 2030 2048 2048 14 56 0 7 7 7 7 6 8 8 6 -2029 2047 2028 2046 2030 2030 2048 2048 14 56 1 0 8 8 0 0 0 0 0 -2029 2047 2029 2047 2030 2030 2030 2030 21 56 0 7 7 7 7 6 8 8 6 -2029 2047 2029 2047 2030 2030 2030 2030 21 56 1 0 8 8 0 0 0 0 0 -2029 2047 2029 2047 2030 2030 2030 2048 17 56 0 7 7 7 7 6 8 8 6 -2029 2047 2029 2047 2030 2030 2030 2048 17 56 1 0 8 8 0 0 0 0 0 -2029 2047 2029 2047 2030 2030 2031 2031 21 57 0 6 8 8 6 6 8 8 6 -2029 2047 2029 2047 2030 2030 2031 2031 21 57 1 7 0 0 7 0 0 0 0 -2029 2047 2029 2047 2030 2030 2031 2049 17 57 0 6 8 8 6 6 8 8 6 -2029 2047 2029 2047 2030 2030 2031 2049 17 57 1 7 0 0 7 0 0 0 0 -2029 2047 2029 2047 2030 2030 2048 2048 14 56 0 7 7 7 7 6 8 8 6 -2029 2047 2029 2047 2030 2030 2048 2048 14 56 1 0 8 8 0 0 0 0 0 -2029 2047 2029 2047 2030 2030 2049 2049 14 57 0 6 8 8 6 6 8 8 6 -2029 2047 2029 2047 2030 2030 2049 2049 14 57 1 7 0 0 7 0 0 0 0 -2030 2030 2029 2029 2012 2012 2031 2031 35 57 0 6 8 8 6 6 8 8 6 -2030 2030 2029 2029 2012 2012 2031 2031 35 57 1 7 0 0 7 0 0 0 0 -2030 2030 2029 2029 2012 2030 2031 2031 31 57 0 6 8 8 6 6 8 8 6 -2030 2030 2029 2029 2012 2030 2031 2031 31 57 1 7 0 0 7 0 0 0 0 -2030 2030 2029 2029 2013 2013 2031 2031 35 58 0 6 8 8 6 6 8 8 6 -2030 2030 2029 2029 2013 2031 2031 2031 31 58 0 6 8 8 6 6 8 8 6 -2030 2030 2029 2029 2030 2030 2031 2031 28 57 0 6 8 8 6 6 8 8 6 -2030 2030 2029 2029 2030 2030 2031 2031 28 57 1 7 0 0 7 0 0 0 0 -2030 2030 2029 2029 2031 2031 2031 2031 28 58 0 6 8 8 6 6 8 8 6 -2030 2030 2030 2030 2013 2013 2031 2031 35 58 0 6 8 8 6 6 8 8 6 -2030 2030 2030 2030 2013 2013 2032 2032 35 59 0 6 8 8 6 6 8 8 6 -2030 2030 2030 2030 2013 2031 2031 2031 31 58 0 6 8 8 6 6 8 8 6 -2030 2030 2030 2030 2013 2031 2032 2032 31 59 0 6 8 8 6 6 8 8 6 -2030 2030 2030 2030 2031 2031 2031 2031 28 58 0 6 8 8 6 6 8 8 6 -2030 2030 2030 2030 2031 2031 2032 2032 28 59 0 6 8 8 6 6 8 8 6 -2030 2048 2029 2047 2030 2030 2031 2031 21 57 0 6 8 8 6 6 8 8 6 -2030 2048 2029 2047 2030 2030 2031 2031 21 57 1 7 0 0 7 0 0 0 0 -2030 2048 2029 2047 2030 2030 2031 2049 17 57 0 6 8 8 6 6 8 8 6 -2030 2048 2029 2047 2030 2030 2031 2049 17 57 1 7 0 0 7 0 0 0 0 -2030 2048 2029 2047 2030 2030 2049 2049 14 57 0 6 8 8 6 6 8 8 6 -2030 2048 2029 2047 2030 2030 2049 2049 14 57 1 7 0 0 7 0 0 0 0 -2030 2048 2029 2047 2031 2031 2031 2031 21 58 0 6 8 8 6 6 8 8 6 -2030 2048 2029 2047 2031 2031 2031 2049 17 58 0 6 8 8 6 6 8 8 6 -2030 2048 2029 2047 2031 2031 2049 2049 14 58 0 6 8 8 6 6 8 8 6 -2030 2048 2030 2048 2031 2031 2031 2031 21 58 0 6 8 8 6 6 8 8 6 -2030 2048 2030 2048 2031 2031 2031 2049 17 58 0 6 8 8 6 6 8 8 6 -2030 2048 2030 2048 2031 2031 2032 2032 21 59 0 6 8 8 6 6 8 8 6 -2030 2048 2030 2048 2031 2031 2032 2050 17 59 0 6 8 8 6 6 8 8 6 -2030 2048 2030 2048 2031 2031 2049 2049 14 58 0 6 8 8 6 6 8 8 6 -2030 2048 2030 2048 2031 2031 2050 2050 14 59 0 6 8 8 6 6 8 8 6 -2031 2031 2030 2030 2013 2013 2032 2032 35 59 0 6 8 8 6 6 8 8 6 -2031 2031 2030 2030 2013 2031 2032 2032 31 59 0 6 8 8 6 6 8 8 6 -2031 2031 2030 2030 2014 2014 2032 2032 35 60 0 6 8 8 6 6 8 8 6 -2031 2031 2030 2030 2014 2032 2032 2032 31 60 0 6 8 8 6 6 8 8 6 -2031 2031 2030 2030 2031 2031 2032 2032 28 59 0 6 8 8 6 6 8 8 6 -2031 2031 2030 2030 2032 2032 2032 2032 28 60 0 6 8 8 6 6 8 8 6 -2031 2031 2031 2031 2014 2014 2032 2032 35 60 0 6 8 8 6 6 8 8 6 -2031 2031 2031 2031 2014 2014 2033 2033 35 61 0 6 8 8 6 6 8 8 6 -2031 2031 2031 2031 2014 2032 2032 2032 31 60 0 6 8 8 6 6 8 8 6 -2031 2031 2031 2031 2014 2032 2033 2033 31 61 0 6 8 8 6 6 8 8 6 -2031 2031 2031 2031 2032 2032 2032 2032 28 60 0 6 8 8 6 6 8 8 6 -2031 2031 2031 2031 2032 2032 2033 2033 28 61 0 6 8 8 6 6 8 8 6 -2031 2049 2030 2048 2031 2031 2032 2032 21 59 0 6 8 8 6 6 8 8 6 -2031 2049 2030 2048 2031 2031 2032 2050 17 59 0 6 8 8 6 6 8 8 6 -2031 2049 2030 2048 2031 2031 2050 2050 14 59 0 6 8 8 6 6 8 8 6 -2031 2049 2030 2048 2032 2032 2032 2032 21 60 0 6 8 8 6 6 8 8 6 -2031 2049 2030 2048 2032 2032 2032 2050 17 60 0 6 8 8 6 6 8 8 6 -2031 2049 2030 2048 2032 2032 2050 2050 14 60 0 6 8 8 6 6 8 8 6 -2031 2049 2031 2049 2032 2032 2032 2032 21 60 0 6 8 8 6 6 8 8 6 -2031 2049 2031 2049 2032 2032 2032 2050 17 60 0 6 8 8 6 6 8 8 6 -2031 2049 2031 2049 2032 2032 2033 2033 21 61 0 6 8 8 6 6 8 8 6 -2031 2049 2031 2049 2032 2032 2033 2051 17 61 0 6 8 8 6 6 8 8 6 -2031 2049 2031 2049 2032 2032 2050 2050 14 60 0 6 8 8 6 6 8 8 6 -2031 2049 2031 2049 2032 2032 2051 2051 14 61 0 6 8 8 6 6 8 8 6 -2032 2032 2031 2031 2014 2014 2033 2033 35 61 0 6 8 8 6 6 8 8 6 -2032 2032 2031 2031 2014 2032 2033 2033 31 61 0 6 8 8 6 6 8 8 6 -2032 2032 2031 2031 2015 2015 2033 2033 35 62 0 6 8 8 6 0 0 0 0 -2032 2032 2031 2031 2015 2033 2033 2033 31 62 0 6 8 8 6 0 0 0 0 -2032 2032 2031 2031 2032 2032 2033 2033 28 61 0 6 8 8 6 6 8 8 6 -2032 2032 2031 2031 2033 2033 2033 2033 28 62 0 6 8 8 6 0 0 0 0 -2032 2050 2031 2049 2032 2032 2033 2033 21 61 0 6 8 8 6 6 8 8 6 -2032 2050 2031 2049 2032 2032 2033 2051 17 61 0 6 8 8 6 6 8 8 6 -2032 2050 2031 2049 2032 2032 2051 2051 14 61 0 6 8 8 6 6 8 8 6 -2032 2050 2031 2049 2033 2033 2033 2033 21 62 0 6 8 8 6 0 0 0 0 -2032 2050 2031 2049 2033 2033 2033 2051 17 62 0 6 8 8 6 0 0 0 0 -2032 2050 2031 2049 2033 2033 2051 2051 14 62 0 6 8 8 6 0 0 0 0 -2033 2033 2032 2032 3001 3001 3019 3019 35 64 0 6 8 8 6 12 10 10 12 -2033 2033 2032 2032 3001 3019 3019 3019 31 64 0 6 8 8 6 12 10 10 12 -2033 2033 2032 2032 3019 3019 3019 3019 28 64 0 6 8 8 6 12 10 10 12 -2033 2033 2033 2033 3001 3001 3019 3019 35 64 0 6 8 8 6 12 10 10 12 -2033 2033 2033 2033 3001 3001 3020 3020 35 65 0 6 8 8 6 12 10 10 12 -2033 2033 2033 2033 3001 3019 3019 3019 31 64 0 6 8 8 6 12 10 10 12 -2033 2033 2033 2033 3001 3019 3020 3020 31 65 0 6 8 8 6 12 10 10 12 -2033 2033 2033 2033 3019 3019 3019 3019 28 64 0 6 8 8 6 12 10 10 12 -2033 2033 2033 2033 3019 3019 3020 3020 28 65 0 6 8 8 6 12 10 10 12 -2033 2051 2032 2050 3019 3019 3019 3019 21 64 0 6 8 8 6 12 10 10 12 -2033 2051 2032 2050 3019 3019 3019 3037 17 64 0 6 8 8 6 12 10 10 12 -2033 2051 2032 2050 3019 3019 3037 3037 14 64 0 6 8 8 6 12 10 10 12 -2033 2051 2033 2051 3019 3019 3019 3019 21 64 0 6 8 8 6 12 10 10 12 -2033 2051 2033 2051 3019 3019 3019 3037 17 64 0 6 8 8 6 12 10 10 12 -2033 2051 2033 2051 3019 3019 3020 3020 21 65 0 6 8 8 6 12 10 10 12 -2033 2051 2033 2051 3019 3019 3020 3038 17 65 0 6 8 8 6 12 10 10 12 -2033 2051 2033 2051 3019 3019 3037 3037 14 64 0 6 8 8 6 12 10 10 12 -2033 2051 2033 2051 3019 3019 3038 3038 14 65 0 6 8 8 6 12 10 10 12 -2034 2034 2033 2033 3001 3001 3020 3020 35 65 0 6 8 8 6 12 10 10 12 -2034 2034 2033 2033 3001 3019 3020 3020 31 65 0 6 8 8 6 12 10 10 12 -2034 2034 2033 2033 3002 3002 3020 3020 35 66 0 6 8 8 0 12 10 10 12 -2034 2034 2033 2033 3002 3020 3020 3020 31 66 0 6 8 8 0 12 10 10 12 -2034 2034 2033 2033 3019 3019 3020 3020 28 65 0 6 8 8 6 12 10 10 12 -2034 2034 2033 2033 3020 3020 3020 3020 28 66 0 6 8 8 0 12 10 10 12 -2034 2052 2033 2051 3019 3019 3020 3020 21 65 0 6 8 8 6 12 10 10 12 -2034 2052 2033 2051 3019 3019 3020 3038 17 65 0 6 8 8 6 12 10 10 12 -2034 2052 2033 2051 3019 3019 3038 3038 14 65 0 6 8 8 6 12 10 10 12 -2034 2052 2033 2051 3020 3020 3020 3020 21 66 0 6 8 8 0 12 10 10 12 -2034 2052 2033 2051 3020 3020 3020 3038 17 66 0 6 8 8 0 12 10 10 12 -2034 2052 2033 2051 3020 3020 3038 3038 14 66 0 6 8 8 0 12 10 10 12 -2037 2037 2037 2037 2020 2020 2038 2038 5 36 0 8 4 6 8 8 6 6 8 -2037 2037 2037 2037 2020 2020 2038 2038 5 36 1 0 6 0 0 0 0 0 0 -2037 2037 2037 2037 2020 2020 2039 2039 5 37 0 8 6 6 8 8 6 6 8 -2038 2038 2037 2037 2020 2020 2039 2039 5 37 0 8 6 6 8 8 6 6 8 -2038 2038 2037 2037 2021 2021 2039 2039 5 38 0 8 6 6 8 8 6 6 8 -2038 2038 2038 2038 2021 2021 2039 2039 5 38 0 8 6 6 8 8 6 6 8 -2038 2038 2038 2038 2021 2021 2040 2040 5 39 0 8 6 6 8 8 6 6 8 -2039 2039 2038 2038 2021 2021 2040 2040 5 39 0 8 6 6 8 8 6 6 8 -2039 2039 2038 2038 2022 2022 2040 2040 5 40 0 8 6 6 8 8 6 6 8 -2039 2039 2039 2039 2022 2022 2040 2040 5 40 0 8 6 6 8 8 6 6 8 -2039 2039 2039 2039 2022 2022 2041 2041 5 41 0 8 6 6 8 8 6 6 8 -2040 2040 2039 2039 2022 2022 2041 2041 5 41 0 8 6 6 8 8 6 6 8 -2040 2040 2039 2039 2023 2023 2041 2041 5 42 0 8 6 6 8 8 6 6 8 -2040 2040 2039 2039 2023 2023 2041 2041 5 42 1 0 0 0 0 0 7 7 0 -2040 2040 2040 2040 2023 2023 2041 2041 5 42 0 8 6 6 8 8 6 6 8 -2040 2040 2040 2040 2023 2023 2041 2041 5 42 1 0 0 0 0 0 7 7 0 -2040 2040 2040 2040 2023 2023 2042 2042 5 43 0 8 6 6 8 7 7 7 7 -2040 2040 2040 2040 2023 2023 2042 2042 5 43 1 0 0 0 0 8 0 0 8 -2041 2041 2040 2040 2023 2023 2042 2042 5 43 0 8 6 6 8 7 7 7 7 -2041 2041 2040 2040 2023 2023 2042 2042 5 43 1 0 0 0 0 8 0 0 8 -2041 2041 2040 2040 2024 2024 2042 2042 5 44 0 8 6 6 8 7 7 7 7 -2041 2041 2041 2041 2024 2024 2042 2042 5 44 0 8 6 6 8 7 7 7 7 -2041 2041 2041 2041 2024 2024 2043 2043 5 45 0 8 6 6 8 7 7 7 7 -2041 2041 2041 2041 2024 2024 2043 2043 5 45 1 0 7 7 0 0 0 0 0 -2042 2042 2041 2041 2024 2024 2043 2043 5 45 0 8 6 6 8 7 7 7 7 -2042 2042 2041 2041 2024 2024 2043 2043 5 45 1 0 7 7 0 0 0 0 0 -2042 2042 2041 2041 2025 2025 2043 2043 5 46 0 8 7 7 7 7 7 7 7 -2042 2042 2041 2041 2025 2025 2043 2043 5 46 1 0 0 0 8 0 0 0 0 -2042 2042 2042 2042 2025 2025 2043 2043 5 46 0 8 7 7 7 7 7 7 7 -2042 2042 2042 2042 2025 2025 2043 2043 5 46 1 0 0 0 8 0 0 0 0 -2042 2042 2042 2042 2025 2025 2044 2044 5 47 0 7 7 7 7 7 7 7 7 -2042 2042 2042 2042 2025 2025 2044 2044 5 47 1 8 0 0 0 0 0 0 0 -2043 2043 2042 2042 2025 2025 2044 2044 5 47 0 7 7 7 7 7 7 7 7 -2043 2043 2042 2042 2025 2025 2044 2044 5 47 1 8 0 0 0 0 0 0 0 -2043 2043 2042 2042 2026 2026 2044 2044 5 48 0 7 7 7 7 7 7 7 7 -2043 2043 2043 2043 2026 2026 2044 2044 5 48 0 7 7 7 7 7 7 7 7 -2043 2043 2043 2043 2026 2026 2045 2045 5 49 0 7 7 7 7 7 7 7 7 -2044 2044 2043 2043 2026 2026 2045 2045 5 49 0 7 7 7 7 7 7 7 7 -2044 2044 2043 2043 2027 2027 2045 2045 5 50 0 7 7 7 7 7 7 7 7 -2044 2044 2044 2044 2027 2027 2045 2045 5 50 0 7 7 7 7 7 7 7 7 -2044 2044 2044 2044 2027 2027 2046 2046 5 51 0 7 7 7 7 7 7 7 7 -2045 2045 2044 2044 2027 2027 2046 2046 5 51 0 7 7 7 7 7 7 7 7 -2045 2045 2044 2044 2028 2028 2046 2046 5 52 0 7 7 7 7 7 7 7 7 -2045 2045 2044 2044 2028 2028 2046 2046 5 52 1 0 0 0 0 0 8 8 0 -2045 2045 2045 2045 2028 2028 2046 2046 5 52 0 7 7 7 7 7 7 7 7 -2045 2045 2045 2045 2028 2028 2046 2046 5 52 1 0 0 0 0 0 8 8 0 -2045 2045 2045 2045 2028 2028 2047 2047 5 53 0 7 7 7 7 7 8 8 7 -2046 2046 2045 2045 2028 2028 2047 2047 5 53 0 7 7 7 7 7 8 8 7 -2046 2046 2045 2045 2029 2029 2047 2047 5 54 0 7 7 7 7 6 8 8 6 -2046 2046 2045 2045 2029 2029 2047 2047 5 54 1 0 0 0 0 7 0 0 0 -2046 2046 2046 2046 2029 2029 2047 2047 5 54 0 7 7 7 7 6 8 8 6 -2046 2046 2046 2046 2029 2029 2047 2047 5 54 1 0 0 0 0 7 0 0 0 -2046 2046 2046 2046 2029 2029 2048 2048 5 55 0 7 7 7 7 6 8 8 6 -2047 2047 2046 2046 2029 2029 2048 2048 5 55 0 7 7 7 7 6 8 8 6 -2047 2047 2046 2046 2030 2030 2048 2048 5 56 0 7 7 7 7 6 8 8 6 -2047 2047 2046 2046 2030 2030 2048 2048 5 56 1 0 8 8 0 0 0 0 0 -2047 2047 2047 2047 2030 2030 2048 2048 5 56 0 7 7 7 7 6 8 8 6 -2047 2047 2047 2047 2030 2030 2048 2048 5 56 1 0 8 8 0 0 0 0 0 -2047 2047 2047 2047 2030 2030 2049 2049 5 57 0 6 8 8 6 6 8 8 6 -2047 2047 2047 2047 2030 2030 2049 2049 5 57 1 7 0 0 7 0 0 0 0 -2048 2048 2047 2047 2030 2030 2049 2049 5 57 0 6 8 8 6 6 8 8 6 -2048 2048 2047 2047 2030 2030 2049 2049 5 57 1 7 0 0 7 0 0 0 0 -2048 2048 2047 2047 2031 2031 2049 2049 5 58 0 6 8 8 6 6 8 8 6 -2048 2048 2048 2048 2031 2031 2049 2049 5 58 0 6 8 8 6 6 8 8 6 -2048 2048 2048 2048 2031 2031 2050 2050 5 59 0 6 8 8 6 6 8 8 6 -2049 2049 2048 2048 2031 2031 2050 2050 5 59 0 6 8 8 6 6 8 8 6 -2049 2049 2048 2048 2032 2032 2050 2050 5 60 0 6 8 8 6 6 8 8 6 -2049 2049 2049 2049 2032 2032 2050 2050 5 60 0 6 8 8 6 6 8 8 6 -2049 2049 2049 2049 2032 2032 2051 2051 5 61 0 6 8 8 6 6 8 8 6 -2050 2050 2049 2049 2032 2032 2051 2051 5 61 0 6 8 8 6 6 8 8 6 -2050 2050 2049 2049 2033 2033 2051 2051 5 62 0 6 8 8 6 0 0 0 0 -2051 2051 2050 2050 3019 3019 3037 3037 5 64 0 6 8 8 6 12 10 10 12 -2051 2051 2051 2051 3019 3019 3037 3037 5 64 0 6 8 8 6 12 10 10 12 -2051 2051 2051 2051 3019 3019 3038 3038 5 65 0 6 8 8 6 12 10 10 12 -2052 2052 2051 2051 3019 3019 3038 3038 5 65 0 6 8 8 6 12 10 10 12 -2052 2052 2051 2051 3020 3020 3038 3038 5 66 0 6 8 8 0 12 10 10 12 -3001 3001 3001 3001 3003 3003 3003 3003 58 68 0 12 10 10 12 12 10 10 12 -3001 3001 3001 3001 3003 3003 3003 3003 58 68 1 0 0 0 0 0 11 11 0 -3001 3001 3002 3002 3003 3003 3003 3003 58 68 0 12 10 10 12 12 10 10 12 -3001 3001 3002 3002 3003 3003 3003 3003 58 68 1 0 0 0 0 0 11 11 0 -3001 3001 3002 3002 3003 3003 3004 3004 58 69 0 12 10 10 12 12 11 11 12 -3001 3019 3001 3019 3003 3003 3003 3003 49 68 0 12 10 10 12 12 10 10 12 -3001 3019 3001 3019 3003 3003 3003 3003 49 68 1 0 0 0 0 0 11 11 0 -3001 3019 3001 3019 3003 3003 3003 3021 46 68 0 12 10 10 12 12 10 10 12 -3001 3019 3001 3019 3003 3003 3003 3021 46 68 1 0 0 0 0 0 11 11 0 -3001 3019 3001 3019 3003 3003 3021 3021 42 68 0 12 10 10 12 12 10 10 12 -3001 3019 3001 3019 3003 3003 3021 3021 42 68 1 0 0 0 0 0 11 11 0 -3001 3019 3002 3020 3003 3003 3003 3003 49 68 0 12 10 10 12 12 10 10 12 -3001 3019 3002 3020 3003 3003 3003 3003 49 68 1 0 0 0 0 0 11 11 0 -3001 3019 3002 3020 3003 3003 3003 3021 46 68 0 12 10 10 12 12 10 10 12 -3001 3019 3002 3020 3003 3003 3003 3021 46 68 1 0 0 0 0 0 11 11 0 -3001 3019 3002 3020 3003 3003 3004 3004 49 69 0 12 10 10 12 12 11 11 12 -3001 3019 3002 3020 3003 3003 3004 3022 46 69 0 12 10 10 12 12 11 11 12 -3001 3019 3002 3020 3003 3003 3021 3021 42 68 0 12 10 10 12 12 10 10 12 -3001 3019 3002 3020 3003 3003 3021 3021 42 68 1 0 0 0 0 0 11 11 0 -3001 3019 3002 3020 3003 3003 3022 3022 42 69 0 12 10 10 12 12 11 11 12 -3002 3002 3002 3002 3003 3003 3004 3004 58 69 0 12 10 10 12 12 11 11 12 -3002 3002 3002 3002 3004 3004 3004 3004 58 69 0 12 10 10 12 12 11 11 12 -3002 3002 3003 3003 3004 3004 3004 3004 58 70 0 12 10 10 12 12 11 11 12 -3002 3002 3003 3003 3004 3004 3005 3005 58 71 0 12 10 10 12 12 11 11 12 -3002 3002 3003 3003 3004 3004 3005 3005 58 71 1 0 0 11 0 0 0 0 0 -3002 3020 3002 3020 3003 3003 3004 3004 49 69 0 12 10 10 12 12 11 11 12 -3002 3020 3002 3020 3003 3003 3004 3022 46 69 0 12 10 10 12 12 11 11 12 -3002 3020 3002 3020 3003 3003 3022 3022 42 69 0 12 10 10 12 12 11 11 12 -3002 3020 3002 3020 3004 3004 3004 3004 49 69 0 12 10 10 12 12 11 11 12 -3002 3020 3002 3020 3004 3004 3004 3022 46 69 0 12 10 10 12 12 11 11 12 -3002 3020 3002 3020 3004 3004 3022 3022 42 69 0 12 10 10 12 12 11 11 12 -3002 3020 3003 3021 3004 3004 3004 3004 49 70 0 12 10 10 12 12 11 11 12 -3002 3020 3003 3021 3004 3004 3004 3022 46 70 0 12 10 10 12 12 11 11 12 -3002 3020 3003 3021 3004 3004 3005 3005 49 71 0 12 10 10 12 12 11 11 12 -3002 3020 3003 3021 3004 3004 3005 3005 49 71 1 0 0 11 0 0 0 0 0 -3002 3020 3003 3021 3004 3004 3005 3023 46 71 0 12 10 10 12 12 11 11 12 -3002 3020 3003 3021 3004 3004 3005 3023 46 71 1 0 0 11 0 0 0 0 0 -3002 3020 3003 3021 3004 3004 3022 3022 42 70 0 12 10 10 12 12 11 11 12 -3002 3020 3003 3021 3004 3004 3023 3023 42 71 0 12 10 10 12 12 11 11 12 -3002 3020 3003 3021 3004 3004 3023 3023 42 71 1 0 0 11 0 0 0 0 0 -3003 3003 3003 3003 3004 3004 3005 3005 58 71 0 12 10 10 12 12 11 11 12 -3003 3003 3003 3003 3004 3004 3005 3005 58 71 1 0 0 11 0 0 0 0 0 -3003 3003 3003 3003 3005 3005 3005 3005 58 71 0 12 10 10 12 12 11 11 12 -3003 3003 3003 3003 3005 3005 3005 3005 58 71 1 0 0 11 0 0 0 0 0 -3003 3003 3004 3004 3005 3005 3005 3005 58 72 0 12 11 11 12 12 11 11 12 -3003 3003 3004 3004 3005 3005 3006 3006 58 73 0 12 11 11 12 12 11 11 12 -3003 3021 3003 3021 3004 3004 3005 3005 49 71 0 12 10 10 12 12 11 11 12 -3003 3021 3003 3021 3004 3004 3005 3005 49 71 1 0 0 11 0 0 0 0 0 -3003 3021 3003 3021 3004 3004 3005 3023 46 71 0 12 10 10 12 12 11 11 12 -3003 3021 3003 3021 3004 3004 3005 3023 46 71 1 0 0 11 0 0 0 0 0 -3003 3021 3003 3021 3004 3004 3023 3023 42 71 0 12 10 10 12 12 11 11 12 -3003 3021 3003 3021 3004 3004 3023 3023 42 71 1 0 0 11 0 0 0 0 0 -3003 3021 3003 3021 3005 3005 3005 3005 49 71 0 12 10 10 12 12 11 11 12 -3003 3021 3003 3021 3005 3005 3005 3005 49 71 1 0 0 11 0 0 0 0 0 -3003 3021 3003 3021 3005 3005 3005 3023 46 71 0 12 10 10 12 12 11 11 12 -3003 3021 3003 3021 3005 3005 3005 3023 46 71 1 0 0 11 0 0 0 0 0 -3003 3021 3003 3021 3005 3005 3023 3023 42 71 0 12 10 10 12 12 11 11 12 -3003 3021 3003 3021 3005 3005 3023 3023 42 71 1 0 0 11 0 0 0 0 0 -3003 3021 3004 3022 3005 3005 3005 3005 49 72 0 12 11 11 12 12 11 11 12 -3003 3021 3004 3022 3005 3005 3005 3023 46 72 0 12 11 11 12 12 11 11 12 -3003 3021 3004 3022 3005 3005 3006 3006 49 73 0 12 11 11 12 12 11 11 12 -3003 3021 3004 3022 3005 3005 3006 3024 46 73 0 12 11 11 12 12 11 11 12 -3003 3021 3004 3022 3005 3005 3023 3023 42 72 0 12 11 11 12 12 11 11 12 -3003 3021 3004 3022 3005 3005 3024 3024 42 73 0 12 11 11 12 12 11 11 12 -3004 3004 3004 3004 3005 3005 3006 3006 58 73 0 12 11 11 12 12 11 11 12 -3004 3004 3004 3004 3006 3006 3006 3006 58 74 0 12 11 11 12 11 11 11 11 -3004 3004 3004 3004 3006 3006 3006 3006 58 74 1 0 0 0 0 12 0 0 12 -3004 3004 3005 3005 3006 3006 3006 3006 58 74 0 12 11 11 12 11 11 11 11 -3004 3004 3005 3005 3006 3006 3006 3006 58 74 1 0 0 0 0 12 0 0 12 -3004 3004 3005 3005 3006 3006 3007 3007 58 74 0 12 11 11 12 11 11 11 11 -3004 3004 3005 3005 3006 3006 3007 3007 58 74 1 0 0 0 0 12 0 0 12 -3004 3022 3004 3022 3005 3005 3006 3006 49 73 0 12 11 11 12 12 11 11 12 -3004 3022 3004 3022 3005 3005 3006 3024 46 73 0 12 11 11 12 12 11 11 12 -3004 3022 3004 3022 3005 3005 3024 3024 42 73 0 12 11 11 12 12 11 11 12 -3004 3022 3004 3022 3006 3006 3006 3006 49 74 0 12 11 11 12 11 11 11 11 -3004 3022 3004 3022 3006 3006 3006 3006 49 74 1 0 0 0 0 12 0 0 12 -3004 3022 3004 3022 3006 3006 3006 3024 46 74 0 12 11 11 12 11 11 11 11 -3004 3022 3004 3022 3006 3006 3006 3024 46 74 1 0 0 0 0 12 0 0 12 -3004 3022 3004 3022 3006 3006 3024 3024 42 74 0 12 11 11 12 11 11 11 11 -3004 3022 3004 3022 3006 3006 3024 3024 42 74 1 0 0 0 0 12 0 0 12 -3004 3022 3005 3023 3006 3006 3006 3006 49 74 0 12 11 11 12 11 11 11 11 -3004 3022 3005 3023 3006 3006 3006 3006 49 74 1 0 0 0 0 12 0 0 12 -3004 3022 3005 3023 3006 3006 3006 3024 46 74 0 12 11 11 12 11 11 11 11 -3004 3022 3005 3023 3006 3006 3006 3024 46 74 1 0 0 0 0 12 0 0 12 -3004 3022 3005 3023 3006 3006 3007 3007 49 74 0 12 11 11 12 11 11 11 11 -3004 3022 3005 3023 3006 3006 3007 3007 49 74 1 0 0 0 0 12 0 0 12 -3004 3022 3005 3023 3006 3006 3007 3025 46 74 0 12 11 11 12 11 11 11 11 -3004 3022 3005 3023 3006 3006 3007 3025 46 74 1 0 0 0 0 12 0 0 12 -3004 3022 3005 3023 3006 3006 3024 3024 42 74 0 12 11 11 12 11 11 11 11 -3004 3022 3005 3023 3006 3006 3024 3024 42 74 1 0 0 0 0 12 0 0 12 -3004 3022 3005 3023 3006 3006 3025 3025 42 74 0 12 11 11 12 11 11 11 11 -3004 3022 3005 3023 3006 3006 3025 3025 42 74 1 0 0 0 0 12 0 0 12 -3005 3005 3005 3005 3006 3006 3007 3007 58 75 0 12 11 11 12 11 11 11 11 -3005 3005 3005 3005 3007 3007 3007 3007 58 75 0 12 11 11 12 11 11 11 11 -3005 3005 3006 3006 3007 3007 3007 3007 58 76 0 12 11 11 12 11 11 11 11 -3005 3005 3006 3006 3007 3007 3008 3008 58 77 0 12 11 11 12 11 11 11 11 -3005 3023 3005 3023 3006 3006 3007 3007 49 75 0 12 11 11 12 11 11 11 11 -3005 3023 3005 3023 3006 3006 3007 3025 46 75 0 12 11 11 12 11 11 11 11 -3005 3023 3005 3023 3006 3006 3025 3025 42 75 0 12 11 11 12 11 11 11 11 -3005 3023 3005 3023 3007 3007 3007 3007 49 75 0 12 11 11 12 11 11 11 11 -3005 3023 3005 3023 3007 3007 3007 3025 46 75 0 12 11 11 12 11 11 11 11 -3005 3023 3005 3023 3007 3007 3025 3025 42 75 0 12 11 11 12 11 11 11 11 -3005 3023 3006 3024 3007 3007 3007 3007 49 76 0 12 11 11 12 11 11 11 11 -3005 3023 3006 3024 3007 3007 3007 3025 46 76 0 12 11 11 12 11 11 11 11 -3005 3023 3006 3024 3007 3007 3008 3008 49 77 0 12 11 11 12 11 11 11 11 -3005 3023 3006 3024 3007 3007 3008 3026 46 77 0 12 11 11 12 11 11 11 11 -3005 3023 3006 3024 3007 3007 3025 3025 42 76 0 12 11 11 12 11 11 11 11 -3005 3023 3006 3024 3007 3007 3026 3026 42 77 0 12 11 11 12 11 11 11 11 -3006 3006 3006 3006 3007 3007 3008 3008 58 77 0 12 11 11 12 11 11 11 11 -3006 3006 3006 3006 3008 3008 3008 3008 58 78 0 11 11 11 11 11 11 11 11 -3006 3006 3006 3006 3008 3008 3008 3008 58 78 1 12 0 0 12 0 12 12 0 -3006 3006 3007 3007 3008 3008 3008 3008 58 78 0 11 11 11 11 11 11 11 11 -3006 3006 3007 3007 3008 3008 3008 3008 58 78 1 12 0 0 12 0 12 12 0 -3006 3006 3007 3007 3008 3008 3009 3009 58 78 0 11 11 11 11 11 11 11 11 -3006 3006 3007 3007 3008 3008 3009 3009 58 78 1 12 0 0 12 0 12 12 0 -3006 3024 3006 3024 3007 3007 3008 3008 49 77 0 12 11 11 12 11 11 11 11 -3006 3024 3006 3024 3007 3007 3008 3026 46 77 0 12 11 11 12 11 11 11 11 -3006 3024 3006 3024 3007 3007 3026 3026 42 77 0 12 11 11 12 11 11 11 11 -3006 3024 3006 3024 3008 3008 3008 3008 49 78 0 11 11 11 11 11 11 11 11 -3006 3024 3006 3024 3008 3008 3008 3008 49 78 1 12 0 0 12 0 12 12 0 -3006 3024 3006 3024 3008 3008 3008 3026 46 78 0 11 11 11 11 11 11 11 11 -3006 3024 3006 3024 3008 3008 3008 3026 46 78 1 12 0 0 12 0 12 12 0 -3006 3024 3006 3024 3008 3008 3026 3026 42 78 0 11 11 11 11 11 11 11 11 -3006 3024 3006 3024 3008 3008 3026 3026 42 78 1 12 0 0 12 0 12 12 0 -3006 3024 3007 3025 3008 3008 3008 3008 49 78 0 11 11 11 11 11 11 11 11 -3006 3024 3007 3025 3008 3008 3008 3008 49 78 1 12 0 0 12 0 12 12 0 -3006 3024 3007 3025 3008 3008 3009 3009 49 78 0 11 11 11 11 11 11 11 11 -3006 3024 3007 3025 3008 3008 3009 3009 49 78 1 12 0 0 12 0 12 12 0 -3006 3024 3007 3025 3008 3008 3009 3027 46 78 0 11 11 11 11 11 11 11 11 -3006 3024 3007 3025 3008 3008 3009 3027 46 78 1 12 0 0 12 0 12 12 0 -3006 3024 3007 3025 3008 3008 3026 3026 42 78 0 11 11 11 11 11 11 11 11 -3006 3024 3007 3025 3008 3008 3026 3026 42 78 1 12 0 0 12 0 12 12 0 -3006 3024 3007 3025 3008 3008 3027 3027 42 78 0 11 11 11 11 11 11 11 11 -3006 3024 3007 3025 3008 3008 3027 3027 42 78 1 12 0 0 12 0 12 12 0 -3007 3007 3007 3007 3008 3008 3009 3009 58 79 0 11 11 11 11 11 12 12 11 -3007 3007 3007 3007 3009 3009 3009 3009 58 79 0 11 11 11 11 11 12 12 11 -3007 3007 3008 3008 3009 3009 3009 3009 58 80 0 11 11 11 11 11 12 12 11 -3007 3007 3008 3008 3009 3009 3010 3010 58 81 0 11 11 11 11 11 12 12 11 -3007 3025 3007 3025 3008 3008 3009 3009 49 79 0 11 11 11 11 11 12 12 11 -3007 3025 3007 3025 3008 3008 3009 3027 46 79 0 11 11 11 11 11 12 12 11 -3007 3025 3007 3025 3008 3008 3027 3027 42 79 0 11 11 11 11 11 12 12 11 -3007 3025 3007 3025 3009 3009 3009 3009 49 79 0 11 11 11 11 11 12 12 11 -3007 3025 3007 3025 3009 3009 3009 3027 46 79 0 11 11 11 11 11 12 12 11 -3007 3025 3007 3025 3009 3009 3027 3027 42 79 0 11 11 11 11 11 12 12 11 -3007 3025 3008 3026 3009 3009 3009 3009 49 80 0 11 11 11 11 11 12 12 11 -3007 3025 3008 3026 3009 3009 3009 3027 46 80 0 11 11 11 11 11 12 12 11 -3007 3025 3008 3026 3009 3009 3010 3010 49 81 0 11 11 11 11 11 12 12 11 -3007 3025 3008 3026 3009 3009 3010 3028 46 81 0 11 11 11 11 11 12 12 11 -3007 3025 3008 3026 3009 3009 3027 3027 42 80 0 11 11 11 11 11 12 12 11 -3007 3025 3008 3026 3009 3009 3028 3028 42 81 0 11 11 11 11 11 12 12 11 -3008 3008 3008 3008 3009 3009 3010 3010 58 81 0 11 11 11 11 11 12 12 11 -3008 3008 3008 3008 3010 3010 3010 3010 58 82 0 11 11 11 11 11 12 12 11 -3008 3008 3008 3008 3010 3010 3010 3010 58 82 1 0 12 12 0 0 0 0 0 -3008 3008 3009 3009 3010 3010 3010 3010 58 82 0 11 11 11 11 11 12 12 11 -3008 3008 3009 3009 3010 3010 3010 3010 58 82 1 0 12 12 0 0 0 0 0 -3008 3008 3009 3009 3010 3010 3011 3011 58 83 0 11 12 12 11 11 12 12 11 -3008 3026 3008 3026 3009 3009 3010 3010 49 81 0 11 11 11 11 11 12 12 11 -3008 3026 3008 3026 3009 3009 3010 3028 46 81 0 11 11 11 11 11 12 12 11 -3008 3026 3008 3026 3009 3009 3028 3028 42 81 0 11 11 11 11 11 12 12 11 -3008 3026 3008 3026 3010 3010 3010 3010 49 82 0 11 11 11 11 11 12 12 11 -3008 3026 3008 3026 3010 3010 3010 3010 49 82 1 0 12 12 0 0 0 0 0 -3008 3026 3008 3026 3010 3010 3010 3028 46 82 0 11 11 11 11 11 12 12 11 -3008 3026 3008 3026 3010 3010 3010 3028 46 82 1 0 12 12 0 0 0 0 0 -3008 3026 3008 3026 3010 3010 3028 3028 42 82 0 11 11 11 11 11 12 12 11 -3008 3026 3008 3026 3010 3010 3028 3028 42 82 1 0 12 12 0 0 0 0 0 -3008 3026 3009 3027 3010 3010 3010 3010 49 82 0 11 11 11 11 11 12 12 11 -3008 3026 3009 3027 3010 3010 3010 3010 49 82 1 0 12 12 0 0 0 0 0 -3008 3026 3009 3027 3010 3010 3010 3028 46 82 0 11 11 11 11 11 12 12 11 -3008 3026 3009 3027 3010 3010 3010 3028 46 82 1 0 12 12 0 0 0 0 0 -3008 3026 3009 3027 3010 3010 3011 3011 49 83 0 11 12 12 11 11 12 12 11 -3008 3026 3009 3027 3010 3010 3011 3029 46 83 0 11 12 12 11 11 12 12 11 -3008 3026 3009 3027 3010 3010 3028 3028 42 82 0 11 11 11 11 11 12 12 11 -3008 3026 3009 3027 3010 3010 3028 3028 42 82 1 0 12 12 0 0 0 0 0 -3008 3026 3009 3027 3010 3010 3029 3029 42 83 0 11 12 12 11 11 12 12 11 -3009 3009 3009 3009 3010 3010 3011 3011 58 83 0 11 12 12 11 11 12 12 11 -3009 3009 3009 3009 3011 3011 3011 3011 58 84 0 11 12 12 11 11 12 12 10 -3009 3009 3009 3009 3011 3011 3011 3011 58 84 1 0 0 0 0 0 0 0 11 -3009 3009 3010 3010 3011 3011 3011 3011 58 84 0 11 12 12 11 11 12 12 10 -3009 3009 3010 3010 3011 3011 3011 3011 58 84 1 0 0 0 0 0 0 0 11 -3009 3009 3010 3010 3011 3011 3012 3012 58 85 0 11 12 12 11 10 12 12 10 -3009 3009 3010 3010 3011 3011 3012 3012 58 85 1 0 0 0 0 11 0 0 0 -3009 3027 3009 3027 3010 3010 3011 3011 49 83 0 11 12 12 11 11 12 12 11 -3009 3027 3009 3027 3010 3010 3011 3029 46 83 0 11 12 12 11 11 12 12 11 -3009 3027 3009 3027 3010 3010 3029 3029 42 83 0 11 12 12 11 11 12 12 11 -3009 3027 3009 3027 3011 3011 3011 3011 49 84 0 11 12 12 11 11 12 12 10 -3009 3027 3009 3027 3011 3011 3011 3011 49 84 1 0 0 0 0 0 0 0 11 -3009 3027 3009 3027 3011 3011 3011 3029 46 84 0 11 12 12 11 11 12 12 10 -3009 3027 3009 3027 3011 3011 3011 3029 46 84 1 0 0 0 0 0 0 0 11 -3009 3027 3009 3027 3011 3011 3029 3029 42 84 0 11 12 12 11 11 12 12 10 -3009 3027 3009 3027 3011 3011 3029 3029 42 84 1 0 0 0 0 0 0 0 11 -3009 3027 3010 3028 3011 3011 3011 3011 49 84 0 11 12 12 11 11 12 12 10 -3009 3027 3010 3028 3011 3011 3011 3011 49 84 1 0 0 0 0 0 0 0 11 -3009 3027 3010 3028 3011 3011 3011 3029 46 84 0 11 12 12 11 11 12 12 10 -3009 3027 3010 3028 3011 3011 3011 3029 46 84 1 0 0 0 0 0 0 0 11 -3009 3027 3010 3028 3011 3011 3012 3012 49 85 0 11 12 12 11 10 12 12 10 -3009 3027 3010 3028 3011 3011 3012 3012 49 85 1 0 0 0 0 11 0 0 0 -3009 3027 3010 3028 3011 3011 3012 3030 46 85 0 11 12 12 11 10 12 12 10 -3009 3027 3010 3028 3011 3011 3012 3030 46 85 1 0 0 0 0 11 0 0 0 -3009 3027 3010 3028 3011 3011 3029 3029 42 84 0 11 12 12 11 11 12 12 10 -3009 3027 3010 3028 3011 3011 3029 3029 42 84 1 0 0 0 0 0 0 0 11 -3009 3027 3010 3028 3011 3011 3030 3030 42 85 0 11 12 12 11 10 12 12 10 -3009 3027 3010 3028 3011 3011 3030 3030 42 85 1 0 0 0 0 11 0 0 0 -3010 3010 3010 3010 3011 3011 3012 3012 58 85 0 11 12 12 11 10 12 12 10 -3010 3010 3010 3010 3011 3011 3012 3012 58 85 1 0 0 0 0 11 0 0 0 -3010 3010 3010 3010 3012 3012 3012 3012 58 86 0 11 12 12 11 10 12 12 10 -3010 3010 3011 3011 3012 3012 3012 3012 58 86 0 11 12 12 11 10 12 12 10 -3010 3010 3011 3011 3012 3012 3013 3013 58 87 0 11 12 12 11 10 12 12 10 -3010 3028 3010 3028 3011 3011 3012 3012 49 85 0 11 12 12 11 10 12 12 10 -3010 3028 3010 3028 3011 3011 3012 3012 49 85 1 0 0 0 0 11 0 0 0 -3010 3028 3010 3028 3011 3011 3012 3030 46 85 0 11 12 12 11 10 12 12 10 -3010 3028 3010 3028 3011 3011 3012 3030 46 85 1 0 0 0 0 11 0 0 0 -3010 3028 3010 3028 3011 3011 3030 3030 42 85 0 11 12 12 11 10 12 12 10 -3010 3028 3010 3028 3011 3011 3030 3030 42 85 1 0 0 0 0 11 0 0 0 -3010 3028 3010 3028 3012 3012 3012 3012 49 86 0 11 12 12 11 10 12 12 10 -3010 3028 3010 3028 3012 3012 3012 3030 46 86 0 11 12 12 11 10 12 12 10 -3010 3028 3010 3028 3012 3012 3030 3030 42 86 0 11 12 12 11 10 12 12 10 -3010 3028 3011 3029 3012 3012 3012 3012 49 86 0 11 12 12 11 10 12 12 10 -3010 3028 3011 3029 3012 3012 3012 3030 46 86 0 11 12 12 11 10 12 12 10 -3010 3028 3011 3029 3012 3012 3013 3013 49 87 0 11 12 12 11 10 12 12 10 -3010 3028 3011 3029 3012 3012 3013 3031 46 87 0 11 12 12 11 10 12 12 10 -3010 3028 3011 3029 3012 3012 3030 3030 42 86 0 11 12 12 11 10 12 12 10 -3010 3028 3011 3029 3012 3012 3031 3031 42 87 0 11 12 12 11 10 12 12 10 -3011 3011 3011 3011 3012 3012 3013 3013 58 87 0 11 12 12 11 10 12 12 10 -3011 3029 3011 3029 3012 3012 3013 3013 49 87 0 11 12 12 11 10 12 12 10 -3011 3029 3011 3029 3012 3012 3013 3031 46 87 0 11 12 12 11 10 12 12 10 -3011 3029 3011 3029 3012 3012 3031 3031 42 87 0 11 12 12 11 10 12 12 10 -3019 3019 3019 3019 3003 3003 3021 3021 35 68 0 12 10 10 12 12 10 10 12 -3019 3019 3019 3019 3003 3003 3021 3021 35 68 1 0 0 0 0 0 11 11 0 -3019 3019 3019 3019 3003 3021 3021 3021 31 68 0 12 10 10 12 12 10 10 12 -3019 3019 3019 3019 3003 3021 3021 3021 31 68 1 0 0 0 0 0 11 11 0 -3019 3019 3019 3019 3021 3021 3021 3021 28 68 0 12 10 10 12 12 10 10 12 -3019 3019 3019 3019 3021 3021 3021 3021 28 68 1 0 0 0 0 0 11 11 0 -3019 3019 3020 3020 3003 3003 3021 3021 35 68 0 12 10 10 12 12 10 10 12 -3019 3019 3020 3020 3003 3003 3021 3021 35 68 1 0 0 0 0 0 11 11 0 -3019 3019 3020 3020 3003 3003 3022 3022 35 69 0 12 10 10 12 12 11 11 12 -3019 3019 3020 3020 3003 3021 3021 3021 31 68 0 12 10 10 12 12 10 10 12 -3019 3019 3020 3020 3003 3021 3021 3021 31 68 1 0 0 0 0 0 11 11 0 -3019 3019 3020 3020 3003 3021 3022 3022 31 69 0 12 10 10 12 12 11 11 12 -3019 3019 3020 3020 3021 3021 3021 3021 28 68 0 12 10 10 12 12 10 10 12 -3019 3019 3020 3020 3021 3021 3021 3021 28 68 1 0 0 0 0 0 11 11 0 -3019 3019 3020 3020 3021 3021 3022 3022 28 69 0 12 10 10 12 12 11 11 12 -3019 3037 3019 3037 3021 3021 3021 3021 21 68 0 12 10 10 12 12 10 10 12 -3019 3037 3019 3037 3021 3021 3021 3021 21 68 1 0 0 0 0 0 11 11 0 -3019 3037 3019 3037 3021 3021 3021 3039 17 68 0 12 10 10 12 12 10 10 12 -3019 3037 3019 3037 3021 3021 3021 3039 17 68 1 0 0 0 0 0 11 11 0 -3019 3037 3019 3037 3021 3021 3039 3039 14 68 0 12 10 10 12 12 10 10 12 -3019 3037 3019 3037 3021 3021 3039 3039 14 68 1 0 0 0 0 0 11 11 0 -3019 3037 3020 3038 3021 3021 3021 3021 21 68 0 12 10 10 12 12 10 10 12 -3019 3037 3020 3038 3021 3021 3021 3021 21 68 1 0 0 0 0 0 11 11 0 -3019 3037 3020 3038 3021 3021 3021 3039 17 68 0 12 10 10 12 12 10 10 12 -3019 3037 3020 3038 3021 3021 3021 3039 17 68 1 0 0 0 0 0 11 11 0 -3019 3037 3020 3038 3021 3021 3022 3022 21 69 0 12 10 10 12 12 11 11 12 -3019 3037 3020 3038 3021 3021 3022 3040 17 69 0 12 10 10 12 12 11 11 12 -3019 3037 3020 3038 3021 3021 3039 3039 14 68 0 12 10 10 12 12 10 10 12 -3019 3037 3020 3038 3021 3021 3039 3039 14 68 1 0 0 0 0 0 11 11 0 -3019 3037 3020 3038 3021 3021 3040 3040 14 69 0 12 10 10 12 12 11 11 12 -3020 3020 3020 3020 3003 3003 3022 3022 35 69 0 12 10 10 12 12 11 11 12 -3020 3020 3020 3020 3003 3021 3022 3022 31 69 0 12 10 10 12 12 11 11 12 -3020 3020 3020 3020 3004 3004 3022 3022 35 69 0 12 10 10 12 12 11 11 12 -3020 3020 3020 3020 3004 3022 3022 3022 31 69 0 12 10 10 12 12 11 11 12 -3020 3020 3020 3020 3021 3021 3022 3022 28 69 0 12 10 10 12 12 11 11 12 -3020 3020 3020 3020 3022 3022 3022 3022 28 69 0 12 10 10 12 12 11 11 12 -3020 3020 3021 3021 3004 3004 3022 3022 35 70 0 12 10 10 12 12 11 11 12 -3020 3020 3021 3021 3004 3004 3023 3023 35 71 0 12 10 10 12 12 11 11 12 -3020 3020 3021 3021 3004 3004 3023 3023 35 71 1 0 0 11 0 0 0 0 0 -3020 3020 3021 3021 3004 3022 3022 3022 31 70 0 12 10 10 12 12 11 11 12 -3020 3020 3021 3021 3004 3022 3023 3023 31 71 0 12 10 10 12 12 11 11 12 -3020 3020 3021 3021 3004 3022 3023 3023 31 71 1 0 0 11 0 0 0 0 0 -3020 3020 3021 3021 3022 3022 3022 3022 28 70 0 12 10 10 12 12 11 11 12 -3020 3020 3021 3021 3022 3022 3023 3023 28 71 0 12 10 10 12 12 11 11 12 -3020 3020 3021 3021 3022 3022 3023 3023 28 71 1 0 0 11 0 0 0 0 0 -3020 3038 3020 3038 3021 3021 3022 3022 21 69 0 12 10 10 12 12 11 11 12 -3020 3038 3020 3038 3021 3021 3022 3040 17 69 0 12 10 10 12 12 11 11 12 -3020 3038 3020 3038 3021 3021 3040 3040 14 69 0 12 10 10 12 12 11 11 12 -3020 3038 3020 3038 3022 3022 3022 3022 21 69 0 12 10 10 12 12 11 11 12 -3020 3038 3020 3038 3022 3022 3022 3040 17 69 0 12 10 10 12 12 11 11 12 -3020 3038 3020 3038 3022 3022 3040 3040 14 69 0 12 10 10 12 12 11 11 12 -3020 3038 3021 3039 3022 3022 3022 3022 21 70 0 12 10 10 12 12 11 11 12 -3020 3038 3021 3039 3022 3022 3022 3040 17 70 0 12 10 10 12 12 11 11 12 -3020 3038 3021 3039 3022 3022 3023 3023 21 71 0 12 10 10 12 12 11 11 12 -3020 3038 3021 3039 3022 3022 3023 3023 21 71 1 0 0 11 0 0 0 0 0 -3020 3038 3021 3039 3022 3022 3023 3041 17 71 0 12 10 10 12 12 11 11 12 -3020 3038 3021 3039 3022 3022 3023 3041 17 71 1 0 0 11 0 0 0 0 0 -3020 3038 3021 3039 3022 3022 3040 3040 14 70 0 12 10 10 12 12 11 11 12 -3020 3038 3021 3039 3022 3022 3041 3041 14 71 0 12 10 10 12 12 11 11 12 -3020 3038 3021 3039 3022 3022 3041 3041 14 71 1 0 0 11 0 0 0 0 0 -3021 3021 3021 3021 3004 3004 3023 3023 35 71 0 12 10 10 12 12 11 11 12 -3021 3021 3021 3021 3004 3004 3023 3023 35 71 1 0 0 11 0 0 0 0 0 -3021 3021 3021 3021 3004 3022 3023 3023 31 71 0 12 10 10 12 12 11 11 12 -3021 3021 3021 3021 3004 3022 3023 3023 31 71 1 0 0 11 0 0 0 0 0 -3021 3021 3021 3021 3005 3005 3023 3023 35 71 0 12 10 10 12 12 11 11 12 -3021 3021 3021 3021 3005 3005 3023 3023 35 71 1 0 0 11 0 0 0 0 0 -3021 3021 3021 3021 3005 3023 3023 3023 31 71 0 12 10 10 12 12 11 11 12 -3021 3021 3021 3021 3005 3023 3023 3023 31 71 1 0 0 11 0 0 0 0 0 -3021 3021 3021 3021 3022 3022 3023 3023 28 71 0 12 10 10 12 12 11 11 12 -3021 3021 3021 3021 3022 3022 3023 3023 28 71 1 0 0 11 0 0 0 0 0 -3021 3021 3021 3021 3023 3023 3023 3023 28 71 0 12 10 10 12 12 11 11 12 -3021 3021 3021 3021 3023 3023 3023 3023 28 71 1 0 0 11 0 0 0 0 0 -3021 3021 3022 3022 3005 3005 3023 3023 35 72 0 12 11 11 12 12 11 11 12 -3021 3021 3022 3022 3005 3005 3024 3024 35 73 0 12 11 11 12 12 11 11 12 -3021 3021 3022 3022 3005 3023 3023 3023 31 72 0 12 11 11 12 12 11 11 12 -3021 3021 3022 3022 3005 3023 3024 3024 31 73 0 12 11 11 12 12 11 11 12 -3021 3021 3022 3022 3023 3023 3023 3023 28 72 0 12 11 11 12 12 11 11 12 -3021 3021 3022 3022 3023 3023 3024 3024 28 73 0 12 11 11 12 12 11 11 12 -3021 3039 3021 3039 3022 3022 3023 3023 21 71 0 12 10 10 12 12 11 11 12 -3021 3039 3021 3039 3022 3022 3023 3023 21 71 1 0 0 11 0 0 0 0 0 -3021 3039 3021 3039 3022 3022 3023 3041 17 71 0 12 10 10 12 12 11 11 12 -3021 3039 3021 3039 3022 3022 3023 3041 17 71 1 0 0 11 0 0 0 0 0 -3021 3039 3021 3039 3022 3022 3041 3041 14 71 0 12 10 10 12 12 11 11 12 -3021 3039 3021 3039 3022 3022 3041 3041 14 71 1 0 0 11 0 0 0 0 0 -3021 3039 3021 3039 3023 3023 3023 3023 21 71 0 12 10 10 12 12 11 11 12 -3021 3039 3021 3039 3023 3023 3023 3023 21 71 1 0 0 11 0 0 0 0 0 -3021 3039 3021 3039 3023 3023 3023 3041 17 71 0 12 10 10 12 12 11 11 12 -3021 3039 3021 3039 3023 3023 3023 3041 17 71 1 0 0 11 0 0 0 0 0 -3021 3039 3021 3039 3023 3023 3041 3041 14 71 0 12 10 10 12 12 11 11 12 -3021 3039 3021 3039 3023 3023 3041 3041 14 71 1 0 0 11 0 0 0 0 0 -3021 3039 3022 3040 3023 3023 3023 3023 21 72 0 12 11 11 12 12 11 11 12 -3021 3039 3022 3040 3023 3023 3023 3041 17 72 0 12 11 11 12 12 11 11 12 -3021 3039 3022 3040 3023 3023 3024 3024 21 73 0 12 11 11 12 12 11 11 12 -3021 3039 3022 3040 3023 3023 3024 3042 17 73 0 12 11 11 12 12 11 11 12 -3021 3039 3022 3040 3023 3023 3041 3041 14 72 0 12 11 11 12 12 11 11 12 -3021 3039 3022 3040 3023 3023 3042 3042 14 73 0 12 11 11 12 12 11 11 12 -3022 3022 3022 3022 3005 3005 3024 3024 35 73 0 12 11 11 12 12 11 11 12 -3022 3022 3022 3022 3005 3023 3024 3024 31 73 0 12 11 11 12 12 11 11 12 -3022 3022 3022 3022 3006 3006 3024 3024 35 74 0 12 11 11 12 11 11 11 11 -3022 3022 3022 3022 3006 3006 3024 3024 35 74 1 0 0 0 0 12 0 0 12 -3022 3022 3022 3022 3006 3024 3024 3024 31 74 0 12 11 11 12 11 11 11 11 -3022 3022 3022 3022 3006 3024 3024 3024 31 74 1 0 0 0 0 12 0 0 12 -3022 3022 3022 3022 3023 3023 3024 3024 28 73 0 12 11 11 12 12 11 11 12 -3022 3022 3022 3022 3024 3024 3024 3024 28 74 0 12 11 11 12 11 11 11 11 -3022 3022 3022 3022 3024 3024 3024 3024 28 74 1 0 0 0 0 12 0 0 12 -3022 3022 3023 3023 3006 3006 3024 3024 35 74 0 12 11 11 12 11 11 11 11 -3022 3022 3023 3023 3006 3006 3024 3024 35 74 1 0 0 0 0 12 0 0 12 -3022 3022 3023 3023 3006 3006 3025 3025 35 74 0 12 11 11 12 11 11 11 11 -3022 3022 3023 3023 3006 3006 3025 3025 35 74 1 0 0 0 0 12 0 0 12 -3022 3022 3023 3023 3006 3024 3024 3024 31 74 0 12 11 11 12 11 11 11 11 -3022 3022 3023 3023 3006 3024 3024 3024 31 74 1 0 0 0 0 12 0 0 12 -3022 3022 3023 3023 3006 3024 3025 3025 31 74 0 12 11 11 12 11 11 11 11 -3022 3022 3023 3023 3006 3024 3025 3025 31 74 1 0 0 0 0 12 0 0 12 -3022 3022 3023 3023 3024 3024 3024 3024 28 74 0 12 11 11 12 11 11 11 11 -3022 3022 3023 3023 3024 3024 3024 3024 28 74 1 0 0 0 0 12 0 0 12 -3022 3022 3023 3023 3024 3024 3025 3025 28 74 0 12 11 11 12 11 11 11 11 -3022 3022 3023 3023 3024 3024 3025 3025 28 74 1 0 0 0 0 12 0 0 12 -3022 3040 3022 3040 3023 3023 3024 3024 21 73 0 12 11 11 12 12 11 11 12 -3022 3040 3022 3040 3023 3023 3024 3042 17 73 0 12 11 11 12 12 11 11 12 -3022 3040 3022 3040 3023 3023 3042 3042 14 73 0 12 11 11 12 12 11 11 12 -3022 3040 3022 3040 3024 3024 3024 3024 21 74 0 12 11 11 12 11 11 11 11 -3022 3040 3022 3040 3024 3024 3024 3024 21 74 1 0 0 0 0 12 0 0 12 -3022 3040 3022 3040 3024 3024 3024 3042 17 74 0 12 11 11 12 11 11 11 11 -3022 3040 3022 3040 3024 3024 3024 3042 17 74 1 0 0 0 0 12 0 0 12 -3022 3040 3022 3040 3024 3024 3042 3042 14 74 0 12 11 11 12 11 11 11 11 -3022 3040 3022 3040 3024 3024 3042 3042 14 74 1 0 0 0 0 12 0 0 12 -3022 3040 3023 3041 3024 3024 3024 3024 21 74 0 12 11 11 12 11 11 11 11 -3022 3040 3023 3041 3024 3024 3024 3024 21 74 1 0 0 0 0 12 0 0 12 -3022 3040 3023 3041 3024 3024 3024 3042 17 74 0 12 11 11 12 11 11 11 11 -3022 3040 3023 3041 3024 3024 3024 3042 17 74 1 0 0 0 0 12 0 0 12 -3022 3040 3023 3041 3024 3024 3025 3025 21 74 0 12 11 11 12 11 11 11 11 -3022 3040 3023 3041 3024 3024 3025 3025 21 74 1 0 0 0 0 12 0 0 12 -3022 3040 3023 3041 3024 3024 3025 3043 17 74 0 12 11 11 12 11 11 11 11 -3022 3040 3023 3041 3024 3024 3025 3043 17 74 1 0 0 0 0 12 0 0 12 -3022 3040 3023 3041 3024 3024 3042 3042 14 74 0 12 11 11 12 11 11 11 11 -3022 3040 3023 3041 3024 3024 3042 3042 14 74 1 0 0 0 0 12 0 0 12 -3022 3040 3023 3041 3024 3024 3043 3043 14 74 0 12 11 11 12 11 11 11 11 -3022 3040 3023 3041 3024 3024 3043 3043 14 74 1 0 0 0 0 12 0 0 12 -3023 3023 3023 3023 3006 3006 3025 3025 35 75 0 12 11 11 12 11 11 11 11 -3023 3023 3023 3023 3006 3024 3025 3025 31 75 0 12 11 11 12 11 11 11 11 -3023 3023 3023 3023 3007 3007 3025 3025 35 75 0 12 11 11 12 11 11 11 11 -3023 3023 3023 3023 3007 3025 3025 3025 31 75 0 12 11 11 12 11 11 11 11 -3023 3023 3023 3023 3024 3024 3025 3025 28 75 0 12 11 11 12 11 11 11 11 -3023 3023 3023 3023 3025 3025 3025 3025 28 75 0 12 11 11 12 11 11 11 11 -3023 3023 3024 3024 3007 3007 3025 3025 35 76 0 12 11 11 12 11 11 11 11 -3023 3023 3024 3024 3007 3007 3026 3026 35 77 0 12 11 11 12 11 11 11 11 -3023 3023 3024 3024 3007 3025 3025 3025 31 76 0 12 11 11 12 11 11 11 11 -3023 3023 3024 3024 3007 3025 3026 3026 31 77 0 12 11 11 12 11 11 11 11 -3023 3023 3024 3024 3025 3025 3025 3025 28 76 0 12 11 11 12 11 11 11 11 -3023 3023 3024 3024 3025 3025 3026 3026 28 77 0 12 11 11 12 11 11 11 11 -3023 3041 3023 3041 3024 3024 3025 3025 21 75 0 12 11 11 12 11 11 11 11 -3023 3041 3023 3041 3024 3024 3025 3043 17 75 0 12 11 11 12 11 11 11 11 -3023 3041 3023 3041 3024 3024 3043 3043 14 75 0 12 11 11 12 11 11 11 11 -3023 3041 3023 3041 3025 3025 3025 3025 21 75 0 12 11 11 12 11 11 11 11 -3023 3041 3023 3041 3025 3025 3025 3043 17 75 0 12 11 11 12 11 11 11 11 -3023 3041 3023 3041 3025 3025 3043 3043 14 75 0 12 11 11 12 11 11 11 11 -3023 3041 3024 3042 3025 3025 3025 3025 21 76 0 12 11 11 12 11 11 11 11 -3023 3041 3024 3042 3025 3025 3025 3043 17 76 0 12 11 11 12 11 11 11 11 -3023 3041 3024 3042 3025 3025 3026 3026 21 77 0 12 11 11 12 11 11 11 11 -3023 3041 3024 3042 3025 3025 3026 3044 17 77 0 12 11 11 12 11 11 11 11 -3023 3041 3024 3042 3025 3025 3043 3043 14 76 0 12 11 11 12 11 11 11 11 -3023 3041 3024 3042 3025 3025 3044 3044 14 77 0 12 11 11 12 11 11 11 11 -3024 3024 3024 3024 3007 3007 3026 3026 35 77 0 12 11 11 12 11 11 11 11 -3024 3024 3024 3024 3007 3025 3026 3026 31 77 0 12 11 11 12 11 11 11 11 -3024 3024 3024 3024 3008 3008 3026 3026 35 78 0 11 11 11 11 11 11 11 11 -3024 3024 3024 3024 3008 3008 3026 3026 35 78 1 12 0 0 12 0 12 12 0 -3024 3024 3024 3024 3008 3026 3026 3026 31 78 0 11 11 11 11 11 11 11 11 -3024 3024 3024 3024 3008 3026 3026 3026 31 78 1 12 0 0 12 0 12 12 0 -3024 3024 3024 3024 3025 3025 3026 3026 28 77 0 12 11 11 12 11 11 11 11 -3024 3024 3024 3024 3026 3026 3026 3026 28 78 0 11 11 11 11 11 11 11 11 -3024 3024 3024 3024 3026 3026 3026 3026 28 78 1 12 0 0 12 0 12 12 0 -3024 3024 3025 3025 3008 3008 3026 3026 35 78 0 11 11 11 11 11 11 11 11 -3024 3024 3025 3025 3008 3008 3026 3026 35 78 1 12 0 0 12 0 12 12 0 -3024 3024 3025 3025 3008 3008 3027 3027 35 78 0 11 11 11 11 11 11 11 11 -3024 3024 3025 3025 3008 3008 3027 3027 35 78 1 12 0 0 12 0 12 12 0 -3024 3024 3025 3025 3008 3026 3026 3026 31 78 0 11 11 11 11 11 11 11 11 -3024 3024 3025 3025 3008 3026 3026 3026 31 78 1 12 0 0 12 0 12 12 0 -3024 3024 3025 3025 3008 3026 3027 3027 31 78 0 11 11 11 11 11 11 11 11 -3024 3024 3025 3025 3008 3026 3027 3027 31 78 1 12 0 0 12 0 12 12 0 -3024 3024 3025 3025 3026 3026 3026 3026 28 78 0 11 11 11 11 11 11 11 11 -3024 3024 3025 3025 3026 3026 3026 3026 28 78 1 12 0 0 12 0 12 12 0 -3024 3024 3025 3025 3026 3026 3027 3027 28 78 0 11 11 11 11 11 11 11 11 -3024 3024 3025 3025 3026 3026 3027 3027 28 78 1 12 0 0 12 0 12 12 0 -3024 3042 3024 3042 3025 3025 3026 3026 21 77 0 12 11 11 12 11 11 11 11 -3024 3042 3024 3042 3025 3025 3026 3044 17 77 0 12 11 11 12 11 11 11 11 -3024 3042 3024 3042 3025 3025 3044 3044 14 77 0 12 11 11 12 11 11 11 11 -3024 3042 3024 3042 3026 3026 3026 3026 21 78 0 11 11 11 11 11 11 11 11 -3024 3042 3024 3042 3026 3026 3026 3026 21 78 1 12 0 0 12 0 12 12 0 -3024 3042 3024 3042 3026 3026 3026 3044 17 78 0 11 11 11 11 11 11 11 11 -3024 3042 3024 3042 3026 3026 3026 3044 17 78 1 12 0 0 12 0 12 12 0 -3024 3042 3024 3042 3026 3026 3044 3044 14 78 0 11 11 11 11 11 11 11 11 -3024 3042 3024 3042 3026 3026 3044 3044 14 78 1 12 0 0 12 0 12 12 0 -3024 3042 3025 3043 3026 3026 3026 3026 21 78 0 11 11 11 11 11 11 11 11 -3024 3042 3025 3043 3026 3026 3026 3026 21 78 1 12 0 0 12 0 12 12 0 -3024 3042 3025 3043 3026 3026 3026 3044 17 78 0 11 11 11 11 11 11 11 11 -3024 3042 3025 3043 3026 3026 3026 3044 17 78 1 12 0 0 12 0 12 12 0 -3024 3042 3025 3043 3026 3026 3027 3027 21 78 0 11 11 11 11 11 11 11 11 -3024 3042 3025 3043 3026 3026 3027 3027 21 78 1 12 0 0 12 0 12 12 0 -3024 3042 3025 3043 3026 3026 3027 3045 17 78 0 11 11 11 11 11 11 11 11 -3024 3042 3025 3043 3026 3026 3027 3045 17 78 1 12 0 0 12 0 12 12 0 -3024 3042 3025 3043 3026 3026 3044 3044 14 78 0 11 11 11 11 11 11 11 11 -3024 3042 3025 3043 3026 3026 3044 3044 14 78 1 12 0 0 12 0 12 12 0 -3024 3042 3025 3043 3026 3026 3045 3045 14 78 0 11 11 11 11 11 11 11 11 -3024 3042 3025 3043 3026 3026 3045 3045 14 78 1 12 0 0 12 0 12 12 0 -3025 3025 3025 3025 3008 3008 3027 3027 35 79 0 11 11 11 11 11 12 12 11 -3025 3025 3025 3025 3008 3026 3027 3027 31 79 0 11 11 11 11 11 12 12 11 -3025 3025 3025 3025 3009 3009 3027 3027 35 79 0 11 11 11 11 11 12 12 11 -3025 3025 3025 3025 3009 3027 3027 3027 31 79 0 11 11 11 11 11 12 12 11 -3025 3025 3025 3025 3026 3026 3027 3027 28 79 0 11 11 11 11 11 12 12 11 -3025 3025 3025 3025 3027 3027 3027 3027 28 79 0 11 11 11 11 11 12 12 11 -3025 3025 3026 3026 3009 3009 3027 3027 35 80 0 11 11 11 11 11 12 12 11 -3025 3025 3026 3026 3009 3009 3028 3028 35 81 0 11 11 11 11 11 12 12 11 -3025 3025 3026 3026 3009 3027 3027 3027 31 80 0 11 11 11 11 11 12 12 11 -3025 3025 3026 3026 3009 3027 3028 3028 31 81 0 11 11 11 11 11 12 12 11 -3025 3025 3026 3026 3027 3027 3027 3027 28 80 0 11 11 11 11 11 12 12 11 -3025 3025 3026 3026 3027 3027 3028 3028 28 81 0 11 11 11 11 11 12 12 11 -3025 3043 3025 3043 3026 3026 3027 3027 21 79 0 11 11 11 11 11 12 12 11 -3025 3043 3025 3043 3026 3026 3027 3045 17 79 0 11 11 11 11 11 12 12 11 -3025 3043 3025 3043 3026 3026 3045 3045 14 79 0 11 11 11 11 11 12 12 11 -3025 3043 3025 3043 3027 3027 3027 3027 21 79 0 11 11 11 11 11 12 12 11 -3025 3043 3025 3043 3027 3027 3027 3045 17 79 0 11 11 11 11 11 12 12 11 -3025 3043 3025 3043 3027 3027 3045 3045 14 79 0 11 11 11 11 11 12 12 11 -3025 3043 3026 3044 3027 3027 3027 3027 21 80 0 11 11 11 11 11 12 12 11 -3025 3043 3026 3044 3027 3027 3027 3045 17 80 0 11 11 11 11 11 12 12 11 -3025 3043 3026 3044 3027 3027 3028 3028 21 81 0 11 11 11 11 11 12 12 11 -3025 3043 3026 3044 3027 3027 3028 3046 17 81 0 11 11 11 11 11 12 12 11 -3025 3043 3026 3044 3027 3027 3045 3045 14 80 0 11 11 11 11 11 12 12 11 -3025 3043 3026 3044 3027 3027 3046 3046 14 81 0 11 11 11 11 11 12 12 11 -3026 3026 3026 3026 3009 3009 3028 3028 35 81 0 11 11 11 11 11 12 12 11 -3026 3026 3026 3026 3009 3027 3028 3028 31 81 0 11 11 11 11 11 12 12 11 -3026 3026 3026 3026 3010 3010 3028 3028 35 82 0 11 11 11 11 11 12 12 11 -3026 3026 3026 3026 3010 3010 3028 3028 35 82 1 0 12 12 0 0 0 0 0 -3026 3026 3026 3026 3010 3028 3028 3028 31 82 0 11 11 11 11 11 12 12 11 -3026 3026 3026 3026 3010 3028 3028 3028 31 82 1 0 12 12 0 0 0 0 0 -3026 3026 3026 3026 3027 3027 3028 3028 28 81 0 11 11 11 11 11 12 12 11 -3026 3026 3026 3026 3028 3028 3028 3028 28 82 0 11 11 11 11 11 12 12 11 -3026 3026 3026 3026 3028 3028 3028 3028 28 82 1 0 12 12 0 0 0 0 0 -3026 3026 3027 3027 3010 3010 3028 3028 35 82 0 11 11 11 11 11 12 12 11 -3026 3026 3027 3027 3010 3010 3028 3028 35 82 1 0 12 12 0 0 0 0 0 -3026 3026 3027 3027 3010 3010 3029 3029 35 83 0 11 12 12 11 11 12 12 11 -3026 3026 3027 3027 3010 3028 3028 3028 31 82 0 11 11 11 11 11 12 12 11 -3026 3026 3027 3027 3010 3028 3028 3028 31 82 1 0 12 12 0 0 0 0 0 -3026 3026 3027 3027 3010 3028 3029 3029 31 83 0 11 12 12 11 11 12 12 11 -3026 3026 3027 3027 3028 3028 3028 3028 28 82 0 11 11 11 11 11 12 12 11 -3026 3026 3027 3027 3028 3028 3028 3028 28 82 1 0 12 12 0 0 0 0 0 -3026 3026 3027 3027 3028 3028 3029 3029 28 83 0 11 12 12 11 11 12 12 11 -3026 3044 3026 3044 3027 3027 3028 3028 21 81 0 11 11 11 11 11 12 12 11 -3026 3044 3026 3044 3027 3027 3028 3046 17 81 0 11 11 11 11 11 12 12 11 -3026 3044 3026 3044 3027 3027 3046 3046 14 81 0 11 11 11 11 11 12 12 11 -3026 3044 3026 3044 3028 3028 3028 3028 21 82 0 11 11 11 11 11 12 12 11 -3026 3044 3026 3044 3028 3028 3028 3028 21 82 1 0 12 12 0 0 0 0 0 -3026 3044 3026 3044 3028 3028 3028 3046 17 82 0 11 11 11 11 11 12 12 11 -3026 3044 3026 3044 3028 3028 3028 3046 17 82 1 0 12 12 0 0 0 0 0 -3026 3044 3026 3044 3028 3028 3046 3046 14 82 0 11 11 11 11 11 12 12 11 -3026 3044 3026 3044 3028 3028 3046 3046 14 82 1 0 12 12 0 0 0 0 0 -3026 3044 3027 3045 3028 3028 3028 3028 21 82 0 11 11 11 11 11 12 12 11 -3026 3044 3027 3045 3028 3028 3028 3028 21 82 1 0 12 12 0 0 0 0 0 -3026 3044 3027 3045 3028 3028 3028 3046 17 82 0 11 11 11 11 11 12 12 11 -3026 3044 3027 3045 3028 3028 3028 3046 17 82 1 0 12 12 0 0 0 0 0 -3026 3044 3027 3045 3028 3028 3029 3029 21 83 0 11 12 12 11 11 12 12 11 -3026 3044 3027 3045 3028 3028 3029 3047 17 83 0 11 12 12 11 11 12 12 11 -3026 3044 3027 3045 3028 3028 3046 3046 14 82 0 11 11 11 11 11 12 12 11 -3026 3044 3027 3045 3028 3028 3046 3046 14 82 1 0 12 12 0 0 0 0 0 -3026 3044 3027 3045 3028 3028 3047 3047 14 83 0 11 12 12 11 11 12 12 11 -3027 3027 3027 3027 3010 3010 3029 3029 35 83 0 11 12 12 11 11 12 12 11 -3027 3027 3027 3027 3010 3028 3029 3029 31 83 0 11 12 12 11 11 12 12 11 -3027 3027 3027 3027 3011 3011 3029 3029 35 84 0 11 12 12 11 11 12 12 10 -3027 3027 3027 3027 3011 3011 3029 3029 35 84 1 0 0 0 0 0 0 0 11 -3027 3027 3027 3027 3011 3029 3029 3029 31 84 0 11 12 12 11 11 12 12 10 -3027 3027 3027 3027 3011 3029 3029 3029 31 84 1 0 0 0 0 0 0 0 11 -3027 3027 3027 3027 3028 3028 3029 3029 28 83 0 11 12 12 11 11 12 12 11 -3027 3027 3027 3027 3029 3029 3029 3029 28 84 0 11 12 12 11 11 12 12 10 -3027 3027 3027 3027 3029 3029 3029 3029 28 84 1 0 0 0 0 0 0 0 11 -3027 3027 3028 3028 3011 3011 3029 3029 35 84 0 11 12 12 11 11 12 12 10 -3027 3027 3028 3028 3011 3011 3029 3029 35 84 1 0 0 0 0 0 0 0 11 -3027 3027 3028 3028 3011 3011 3030 3030 35 85 0 11 12 12 11 10 12 12 10 -3027 3027 3028 3028 3011 3011 3030 3030 35 85 1 0 0 0 0 11 0 0 0 -3027 3027 3028 3028 3011 3029 3029 3029 31 84 0 11 12 12 11 11 12 12 10 -3027 3027 3028 3028 3011 3029 3029 3029 31 84 1 0 0 0 0 0 0 0 11 -3027 3027 3028 3028 3011 3029 3030 3030 31 85 0 11 12 12 11 10 12 12 10 -3027 3027 3028 3028 3011 3029 3030 3030 31 85 1 0 0 0 0 11 0 0 0 -3027 3027 3028 3028 3029 3029 3029 3029 28 84 0 11 12 12 11 11 12 12 10 -3027 3027 3028 3028 3029 3029 3029 3029 28 84 1 0 0 0 0 0 0 0 11 -3027 3027 3028 3028 3029 3029 3030 3030 28 85 0 11 12 12 11 10 12 12 10 -3027 3027 3028 3028 3029 3029 3030 3030 28 85 1 0 0 0 0 11 0 0 0 -3027 3045 3027 3045 3028 3028 3029 3029 21 83 0 11 12 12 11 11 12 12 11 -3027 3045 3027 3045 3028 3028 3029 3047 17 83 0 11 12 12 11 11 12 12 11 -3027 3045 3027 3045 3028 3028 3047 3047 14 83 0 11 12 12 11 11 12 12 11 -3027 3045 3027 3045 3029 3029 3029 3029 21 84 0 11 12 12 11 11 12 12 10 -3027 3045 3027 3045 3029 3029 3029 3029 21 84 1 0 0 0 0 0 0 0 11 -3027 3045 3027 3045 3029 3029 3029 3047 17 84 0 11 12 12 11 11 12 12 10 -3027 3045 3027 3045 3029 3029 3029 3047 17 84 1 0 0 0 0 0 0 0 11 -3027 3045 3027 3045 3029 3029 3047 3047 14 84 0 11 12 12 11 11 12 12 10 -3027 3045 3027 3045 3029 3029 3047 3047 14 84 1 0 0 0 0 0 0 0 11 -3027 3045 3028 3046 3029 3029 3029 3029 21 84 0 11 12 12 11 11 12 12 10 -3027 3045 3028 3046 3029 3029 3029 3029 21 84 1 0 0 0 0 0 0 0 11 -3027 3045 3028 3046 3029 3029 3029 3047 17 84 0 11 12 12 11 11 12 12 10 -3027 3045 3028 3046 3029 3029 3029 3047 17 84 1 0 0 0 0 0 0 0 11 -3027 3045 3028 3046 3029 3029 3030 3030 21 85 0 11 12 12 11 10 12 12 10 -3027 3045 3028 3046 3029 3029 3030 3030 21 85 1 0 0 0 0 11 0 0 0 -3027 3045 3028 3046 3029 3029 3030 3048 17 85 0 11 12 12 11 10 12 12 10 -3027 3045 3028 3046 3029 3029 3030 3048 17 85 1 0 0 0 0 11 0 0 0 -3027 3045 3028 3046 3029 3029 3047 3047 14 84 0 11 12 12 11 11 12 12 10 -3027 3045 3028 3046 3029 3029 3047 3047 14 84 1 0 0 0 0 0 0 0 11 -3027 3045 3028 3046 3029 3029 3048 3048 14 85 0 11 12 12 11 10 12 12 10 -3027 3045 3028 3046 3029 3029 3048 3048 14 85 1 0 0 0 0 11 0 0 0 -3028 3028 3028 3028 3011 3011 3030 3030 35 85 0 11 12 12 11 10 12 12 10 -3028 3028 3028 3028 3011 3011 3030 3030 35 85 1 0 0 0 0 11 0 0 0 -3028 3028 3028 3028 3011 3029 3030 3030 31 85 0 11 12 12 11 10 12 12 10 -3028 3028 3028 3028 3011 3029 3030 3030 31 85 1 0 0 0 0 11 0 0 0 -3028 3028 3028 3028 3012 3012 3030 3030 35 86 0 11 12 12 11 10 12 12 10 -3028 3028 3028 3028 3012 3030 3030 3030 31 86 0 11 12 12 11 10 12 12 10 -3028 3028 3028 3028 3029 3029 3030 3030 28 85 0 11 12 12 11 10 12 12 10 -3028 3028 3028 3028 3029 3029 3030 3030 28 85 1 0 0 0 0 11 0 0 0 -3028 3028 3028 3028 3030 3030 3030 3030 28 86 0 11 12 12 11 10 12 12 10 -3028 3028 3029 3029 3012 3012 3030 3030 35 86 0 11 12 12 11 10 12 12 10 -3028 3028 3029 3029 3012 3012 3031 3031 35 87 0 11 12 12 11 10 12 12 10 -3028 3028 3029 3029 3012 3030 3030 3030 31 86 0 11 12 12 11 10 12 12 10 -3028 3028 3029 3029 3012 3030 3031 3031 31 87 0 11 12 12 11 10 12 12 10 -3028 3028 3029 3029 3030 3030 3030 3030 28 86 0 11 12 12 11 10 12 12 10 -3028 3028 3029 3029 3030 3030 3031 3031 28 87 0 11 12 12 11 10 12 12 10 -3028 3046 3028 3046 3029 3029 3030 3030 21 85 0 11 12 12 11 10 12 12 10 -3028 3046 3028 3046 3029 3029 3030 3030 21 85 1 0 0 0 0 11 0 0 0 -3028 3046 3028 3046 3029 3029 3030 3048 17 85 0 11 12 12 11 10 12 12 10 -3028 3046 3028 3046 3029 3029 3030 3048 17 85 1 0 0 0 0 11 0 0 0 -3028 3046 3028 3046 3029 3029 3048 3048 14 85 0 11 12 12 11 10 12 12 10 -3028 3046 3028 3046 3029 3029 3048 3048 14 85 1 0 0 0 0 11 0 0 0 -3028 3046 3028 3046 3030 3030 3030 3030 21 86 0 11 12 12 11 10 12 12 10 -3028 3046 3028 3046 3030 3030 3030 3048 17 86 0 11 12 12 11 10 12 12 10 -3028 3046 3028 3046 3030 3030 3048 3048 14 86 0 11 12 12 11 10 12 12 10 -3028 3046 3029 3047 3030 3030 3030 3030 21 86 0 11 12 12 11 10 12 12 10 -3028 3046 3029 3047 3030 3030 3030 3048 17 86 0 11 12 12 11 10 12 12 10 -3028 3046 3029 3047 3030 3030 3031 3031 21 87 0 11 12 12 11 10 12 12 10 -3028 3046 3029 3047 3030 3030 3031 3049 17 87 0 11 12 12 11 10 12 12 10 -3028 3046 3029 3047 3030 3030 3048 3048 14 86 0 11 12 12 11 10 12 12 10 -3028 3046 3029 3047 3030 3030 3049 3049 14 87 0 11 12 12 11 10 12 12 10 -3029 3029 3029 3029 3012 3012 3031 3031 35 87 0 11 12 12 11 10 12 12 10 -3029 3029 3029 3029 3012 3030 3031 3031 31 87 0 11 12 12 11 10 12 12 10 -3029 3029 3029 3029 3030 3030 3031 3031 28 87 0 11 12 12 11 10 12 12 10 -3029 3047 3029 3047 3030 3030 3031 3031 21 87 0 11 12 12 11 10 12 12 10 -3029 3047 3029 3047 3030 3030 3031 3049 17 87 0 11 12 12 11 10 12 12 10 -3029 3047 3029 3047 3030 3030 3049 3049 14 87 0 11 12 12 11 10 12 12 10 -3037 3037 3037 3037 3021 3021 3039 3039 5 68 0 12 10 10 12 12 10 10 12 -3037 3037 3037 3037 3021 3021 3039 3039 5 68 1 0 0 0 0 0 11 11 0 -3037 3037 3038 3038 3021 3021 3039 3039 5 68 0 12 10 10 12 12 10 10 12 -3037 3037 3038 3038 3021 3021 3039 3039 5 68 1 0 0 0 0 0 11 11 0 -3037 3037 3038 3038 3021 3021 3040 3040 5 69 0 12 10 10 12 12 11 11 12 -3038 3038 3038 3038 3021 3021 3040 3040 5 69 0 12 10 10 12 12 11 11 12 -3038 3038 3038 3038 3022 3022 3040 3040 5 69 0 12 10 10 12 12 11 11 12 -3038 3038 3039 3039 3022 3022 3040 3040 5 70 0 12 10 10 12 12 11 11 12 -3038 3038 3039 3039 3022 3022 3041 3041 5 71 0 12 10 10 12 12 11 11 12 -3038 3038 3039 3039 3022 3022 3041 3041 5 71 1 0 0 11 0 0 0 0 0 -3039 3039 3039 3039 3022 3022 3041 3041 5 71 0 12 10 10 12 12 11 11 12 -3039 3039 3039 3039 3022 3022 3041 3041 5 71 1 0 0 11 0 0 0 0 0 -3039 3039 3039 3039 3023 3023 3041 3041 5 71 0 12 10 10 12 12 11 11 12 -3039 3039 3039 3039 3023 3023 3041 3041 5 71 1 0 0 11 0 0 0 0 0 -3039 3039 3040 3040 3023 3023 3041 3041 5 72 0 12 11 11 12 12 11 11 12 -3039 3039 3040 3040 3023 3023 3042 3042 5 73 0 12 11 11 12 12 11 11 12 -3040 3040 3040 3040 3023 3023 3042 3042 5 73 0 12 11 11 12 12 11 11 12 -3040 3040 3040 3040 3024 3024 3042 3042 5 74 0 12 11 11 12 11 11 11 11 -3040 3040 3040 3040 3024 3024 3042 3042 5 74 1 0 0 0 0 12 0 0 12 -3040 3040 3041 3041 3024 3024 3042 3042 5 74 0 12 11 11 12 11 11 11 11 -3040 3040 3041 3041 3024 3024 3042 3042 5 74 1 0 0 0 0 12 0 0 12 -3040 3040 3041 3041 3024 3024 3043 3043 5 74 0 12 11 11 12 11 11 11 11 -3040 3040 3041 3041 3024 3024 3043 3043 5 74 1 0 0 0 0 12 0 0 12 -3041 3041 3041 3041 3024 3024 3043 3043 5 75 0 12 11 11 12 11 11 11 11 -3041 3041 3041 3041 3025 3025 3043 3043 5 75 0 12 11 11 12 11 11 11 11 -3041 3041 3042 3042 3025 3025 3043 3043 5 76 0 12 11 11 12 11 11 11 11 -3041 3041 3042 3042 3025 3025 3044 3044 5 77 0 12 11 11 12 11 11 11 11 -3042 3042 3042 3042 3025 3025 3044 3044 5 77 0 12 11 11 12 11 11 11 11 -3042 3042 3042 3042 3026 3026 3044 3044 5 78 0 11 11 11 11 11 11 11 11 -3042 3042 3042 3042 3026 3026 3044 3044 5 78 1 12 0 0 12 0 12 12 0 -3042 3042 3043 3043 3026 3026 3044 3044 5 78 0 11 11 11 11 11 11 11 11 -3042 3042 3043 3043 3026 3026 3044 3044 5 78 1 12 0 0 12 0 12 12 0 -3042 3042 3043 3043 3026 3026 3045 3045 5 78 0 11 11 11 11 11 11 11 11 -3042 3042 3043 3043 3026 3026 3045 3045 5 78 1 12 0 0 12 0 12 12 0 -3043 3043 3043 3043 3026 3026 3045 3045 5 79 0 11 11 11 11 11 12 12 11 -3043 3043 3043 3043 3027 3027 3045 3045 5 79 0 11 11 11 11 11 12 12 11 -3043 3043 3044 3044 3027 3027 3045 3045 5 80 0 11 11 11 11 11 12 12 11 -3043 3043 3044 3044 3027 3027 3046 3046 5 81 0 11 11 11 11 11 12 12 11 -3044 3044 3044 3044 3027 3027 3046 3046 5 81 0 11 11 11 11 11 12 12 11 -3044 3044 3044 3044 3028 3028 3046 3046 5 82 0 11 11 11 11 11 12 12 11 -3044 3044 3044 3044 3028 3028 3046 3046 5 82 1 0 12 12 0 0 0 0 0 -3044 3044 3045 3045 3028 3028 3046 3046 5 82 0 11 11 11 11 11 12 12 11 -3044 3044 3045 3045 3028 3028 3046 3046 5 82 1 0 12 12 0 0 0 0 0 -3044 3044 3045 3045 3028 3028 3047 3047 5 83 0 11 12 12 11 11 12 12 11 -3045 3045 3045 3045 3028 3028 3047 3047 5 83 0 11 12 12 11 11 12 12 11 -3045 3045 3045 3045 3029 3029 3047 3047 5 84 0 11 12 12 11 11 12 12 10 -3045 3045 3045 3045 3029 3029 3047 3047 5 84 1 0 0 0 0 0 0 0 11 -3045 3045 3046 3046 3029 3029 3047 3047 5 84 0 11 12 12 11 11 12 12 10 -3045 3045 3046 3046 3029 3029 3047 3047 5 84 1 0 0 0 0 0 0 0 11 -3045 3045 3046 3046 3029 3029 3048 3048 5 85 0 11 12 12 11 10 12 12 10 -3045 3045 3046 3046 3029 3029 3048 3048 5 85 1 0 0 0 0 11 0 0 0 -3046 3046 3046 3046 3029 3029 3048 3048 5 85 0 11 12 12 11 10 12 12 10 -3046 3046 3046 3046 3029 3029 3048 3048 5 85 1 0 0 0 0 11 0 0 0 -3046 3046 3046 3046 3030 3030 3048 3048 5 86 0 11 12 12 11 10 12 12 10 -3046 3046 3047 3047 3030 3030 3048 3048 5 86 0 11 12 12 11 10 12 12 10 -3046 3046 3047 3047 3030 3030 3049 3049 5 87 0 11 12 12 11 10 12 12 10 -3047 3047 3047 3047 3030 3030 3049 3049 5 87 0 11 12 12 11 10 12 12 10 -4001 4001 4001 4001 4001 4001 4002 4002 62 2 0 0 0 0 0 0 0 0 0 -4001 4001 4001 4001 4002 4002 4002 4002 62 3 0 0 0 0 0 0 0 0 0 -4001 4001 4001 4019 4001 4001 4002 4002 60 2 0 0 0 0 0 0 0 0 0 -4001 4001 4001 4019 4002 4002 4002 4002 60 3 0 0 0 0 0 0 0 0 0 -4001 4001 4019 4019 4001 4001 4002 4002 59 2 0 0 0 0 0 0 0 0 0 -4001 4001 4019 4019 4002 4002 4002 4002 59 3 0 0 0 0 0 0 0 0 0 -4001 4001 4019 4019 4019 4001 4020 4002 56 2 0 0 0 0 0 0 0 0 0 -4001 4001 4019 4019 4020 4002 4020 4002 56 3 0 0 0 0 0 0 0 0 0 -4001 4019 4019 4019 4019 4001 4020 4002 54 2 0 0 0 0 0 0 0 0 0 -4001 4019 4019 4019 4020 4002 4020 4002 54 3 0 0 0 0 0 0 0 0 0 -4002 4002 4001 4001 4002 4002 4002 4002 62 3 0 0 0 0 0 0 0 0 0 -4002 4002 4001 4001 4002 4002 4003 4003 62 4 0 0 0 0 0 0 0 0 0 -4002 4002 4001 4019 4002 4002 4002 4002 60 3 0 0 0 0 0 0 0 0 0 -4002 4002 4001 4019 4002 4002 4003 4003 60 4 0 0 0 0 0 0 0 0 0 -4002 4002 4002 4002 4002 4002 4003 4003 62 4 0 0 0 0 0 0 0 0 0 -4002 4002 4002 4002 4003 4003 4003 4003 62 5 0 0 0 0 0 0 0 0 0 -4002 4002 4002 4020 4002 4002 4003 4003 60 4 0 0 0 0 0 0 0 0 0 -4002 4002 4002 4020 4003 4003 4003 4003 60 5 0 0 0 0 0 0 0 0 0 -4002 4002 4019 4019 4002 4002 4002 4002 59 3 0 0 0 0 0 0 0 0 0 -4002 4002 4019 4019 4002 4002 4003 4003 59 4 0 0 0 0 0 0 0 0 0 -4002 4002 4019 4019 4020 4002 4020 4002 56 3 0 0 0 0 0 0 0 0 0 -4002 4002 4019 4019 4020 4002 4021 4003 56 4 0 0 0 0 0 0 0 0 0 -4002 4002 4020 4020 4002 4002 4003 4003 59 4 0 0 0 0 0 0 0 0 0 -4002 4002 4020 4020 4003 4003 4003 4003 59 5 0 0 0 0 0 0 0 0 0 -4002 4002 4020 4020 4020 4002 4021 4003 56 4 0 0 0 0 0 0 0 0 0 -4002 4002 4020 4020 4021 4003 4021 4003 56 5 0 0 0 0 0 0 0 0 0 -4002 4020 4019 4019 4020 4002 4020 4002 54 3 0 0 0 0 0 0 0 0 0 -4002 4020 4019 4019 4020 4002 4021 4003 54 4 0 0 0 0 0 0 0 0 0 -4002 4020 4020 4020 4020 4002 4021 4003 54 4 0 0 0 0 0 0 0 0 0 -4002 4020 4020 4020 4021 4003 4021 4003 54 5 0 0 0 0 0 0 0 0 0 -4003 4003 4002 4002 4003 4003 4003 4003 62 5 0 0 0 0 0 0 0 0 0 -4003 4003 4002 4002 4003 4003 4004 4004 62 6 0 0 0 0 0 3 2 2 3 -4003 4003 4002 4020 4003 4003 4003 4003 60 5 0 0 0 0 0 0 0 0 0 -4003 4003 4002 4020 4003 4003 4004 4004 60 6 0 0 0 0 0 3 2 2 3 -4003 4003 4003 4003 4003 4003 4004 4004 62 6 0 0 0 0 0 3 2 2 3 -4003 4003 4003 4003 4004 4004 4004 4004 62 7 0 3 2 2 3 3 2 2 3 -4003 4003 4003 4021 4003 4003 4004 4004 60 6 0 0 0 0 0 3 2 2 3 -4003 4003 4003 4021 4004 4004 4004 4004 60 7 0 3 2 2 3 3 2 2 3 -4003 4003 4020 4020 4003 4003 4003 4003 59 5 0 0 0 0 0 0 0 0 0 -4003 4003 4020 4020 4003 4003 4004 4004 59 6 0 0 0 0 0 3 2 2 3 -4003 4003 4020 4020 4021 4003 4021 4003 56 5 0 0 0 0 0 0 0 0 0 -4003 4003 4020 4020 4021 4003 4022 4004 56 6 0 0 0 0 0 3 2 2 3 -4003 4003 4021 4021 4003 4003 4004 4004 59 6 0 0 0 0 0 3 2 2 3 -4003 4003 4021 4021 4004 4004 4004 4004 59 7 0 3 2 2 3 3 2 2 3 -4003 4003 4021 4021 4021 4003 4022 4004 56 6 0 0 0 0 0 3 2 2 3 -4003 4003 4021 4021 4022 4004 4022 4004 56 7 0 3 2 2 3 3 2 2 3 -4003 4021 4020 4020 4021 4003 4021 4003 54 5 0 0 0 0 0 0 0 0 0 -4003 4021 4020 4020 4021 4003 4022 4004 54 6 0 0 0 0 0 3 2 2 3 -4003 4021 4021 4021 4021 4003 4022 4004 54 6 0 0 0 0 0 3 2 2 3 -4003 4021 4021 4021 4022 4004 4022 4004 54 7 0 3 2 2 3 3 2 2 3 -4004 4004 4003 4003 4004 4004 4004 4004 62 7 0 3 2 2 3 3 2 2 3 -4004 4004 4003 4003 4004 4004 4005 4005 62 8 0 3 2 2 3 3 2 2 3 -4004 4004 4003 4021 4004 4004 4004 4004 60 7 0 3 2 2 3 3 2 2 3 -4004 4004 4003 4021 4004 4004 4005 4005 60 8 0 3 2 2 3 3 2 2 3 -4004 4004 4004 4004 4004 4004 4005 4005 62 8 0 3 2 2 3 3 2 2 3 -4004 4004 4004 4004 4005 4005 4005 4005 62 9 0 3 2 2 3 3 2 2 3 -4004 4004 4004 4022 4004 4004 4005 4005 60 8 0 3 2 2 3 3 2 2 3 -4004 4004 4004 4022 4005 4005 4005 4005 60 9 0 3 2 2 3 3 2 2 3 -4004 4004 4021 4021 4004 4004 4004 4004 59 7 0 3 2 2 3 3 2 2 3 -4004 4004 4021 4021 4004 4004 4005 4005 59 8 0 3 2 2 3 3 2 2 3 -4004 4004 4021 4021 4022 4004 4022 4004 56 7 0 3 2 2 3 3 2 2 3 -4004 4004 4021 4021 4022 4004 4023 4005 56 8 0 3 2 2 3 3 2 2 3 -4004 4004 4022 4022 4004 4004 4005 4005 59 8 0 3 2 2 3 3 2 2 3 -4004 4004 4022 4022 4005 4005 4005 4005 59 9 0 3 2 2 3 3 2 2 3 -4004 4004 4022 4022 4022 4004 4023 4005 56 8 0 3 2 2 3 3 2 2 3 -4004 4004 4022 4022 4023 4005 4023 4005 56 9 0 3 2 2 3 3 2 2 3 -4004 4022 4021 4021 4022 4004 4022 4004 54 7 0 3 2 2 3 3 2 2 3 -4004 4022 4021 4021 4022 4004 4023 4005 54 8 0 3 2 2 3 3 2 2 3 -4004 4022 4022 4022 4022 4004 4023 4005 54 8 0 3 2 2 3 3 2 2 3 -4004 4022 4022 4022 4023 4005 4023 4005 54 9 0 3 2 2 3 3 2 2 3 -4005 4005 4004 4004 4005 4005 4005 4005 62 9 0 3 2 2 3 3 2 2 3 -4005 4005 4004 4004 4005 4005 4006 4006 62 10 0 3 2 2 3 3 2 2 3 -4005 4005 4004 4022 4005 4005 4005 4005 60 9 0 3 2 2 3 3 2 2 3 -4005 4005 4004 4022 4005 4005 4006 4006 60 10 0 3 2 2 3 3 2 2 3 -4005 4005 4005 4005 4005 4005 4006 4006 62 10 0 3 2 2 3 3 2 2 3 -4005 4005 4005 4005 4006 4006 4006 4006 62 11 0 3 2 2 3 3 2 2 3 -4005 4005 4005 4023 4005 4005 4006 4006 60 10 0 3 2 2 3 3 2 2 3 -4005 4005 4005 4023 4006 4006 4006 4006 60 11 0 3 2 2 3 3 2 2 3 -4005 4005 4022 4022 4005 4005 4005 4005 59 9 0 3 2 2 3 3 2 2 3 -4005 4005 4022 4022 4005 4005 4006 4006 59 10 0 3 2 2 3 3 2 2 3 -4005 4005 4022 4022 4023 4005 4023 4005 56 9 0 3 2 2 3 3 2 2 3 -4005 4005 4022 4022 4023 4005 4024 4006 56 10 0 3 2 2 3 3 2 2 3 -4005 4005 4023 4023 4005 4005 4006 4006 59 10 0 3 2 2 3 3 2 2 3 -4005 4005 4023 4023 4006 4006 4006 4006 59 11 0 3 2 2 3 3 2 2 3 -4005 4005 4023 4023 4023 4005 4024 4006 56 10 0 3 2 2 3 3 2 2 3 -4005 4005 4023 4023 4024 4006 4024 4006 56 11 0 3 2 2 3 3 2 2 3 -4005 4023 4022 4022 4023 4005 4023 4005 54 9 0 3 2 2 3 3 2 2 3 -4005 4023 4022 4022 4023 4005 4024 4006 54 10 0 3 2 2 3 3 2 2 3 -4005 4023 4023 4023 4023 4005 4024 4006 54 10 0 3 2 2 3 3 2 2 3 -4005 4023 4023 4023 4024 4006 4024 4006 54 11 0 3 2 2 3 3 2 2 3 -4006 4006 4005 4005 4006 4006 4006 4006 62 11 0 3 2 2 3 3 2 2 3 -4006 4006 4005 4005 4006 4006 4007 4007 62 12 0 3 2 2 3 2 2 2 2 -4006 4006 4005 4005 4006 4006 4007 4007 62 12 1 0 0 0 0 3 3 3 3 -4006 4006 4005 4023 4006 4006 4006 4006 60 11 0 3 2 2 3 3 2 2 3 -4006 4006 4005 4023 4006 4006 4007 4007 60 12 0 3 2 2 3 2 2 2 2 -4006 4006 4005 4023 4006 4006 4007 4007 60 12 1 0 0 0 0 3 3 3 3 -4006 4006 4006 4006 4006 4006 4007 4007 62 12 0 3 2 2 3 2 2 2 2 -4006 4006 4006 4006 4006 4006 4007 4007 62 12 1 0 0 0 0 3 3 3 3 -4006 4006 4006 4006 4007 4007 4007 4007 62 13 0 3 2 2 3 2 3 3 2 -4006 4006 4006 4024 4006 4006 4007 4007 60 12 0 3 2 2 3 2 2 2 2 -4006 4006 4006 4024 4006 4006 4007 4007 60 12 1 0 0 0 0 3 3 3 3 -4006 4006 4006 4024 4007 4007 4007 4007 60 13 0 3 2 2 3 2 3 3 2 -4006 4006 4023 4023 4006 4006 4006 4006 59 11 0 3 2 2 3 3 2 2 3 -4006 4006 4023 4023 4006 4006 4007 4007 59 12 0 3 2 2 3 2 2 2 2 -4006 4006 4023 4023 4006 4006 4007 4007 59 12 1 0 0 0 0 3 3 3 3 -4006 4006 4023 4023 4024 4006 4024 4006 56 11 0 3 2 2 3 3 2 2 3 -4006 4006 4023 4023 4024 4006 4025 4007 56 12 0 3 2 2 3 2 2 2 2 -4006 4006 4023 4023 4024 4006 4025 4007 56 12 1 0 0 0 0 3 3 3 3 -4006 4006 4024 4024 4006 4006 4007 4007 59 12 0 3 2 2 3 2 2 2 2 -4006 4006 4024 4024 4006 4006 4007 4007 59 12 1 0 0 0 0 3 3 3 3 -4006 4006 4024 4024 4007 4007 4007 4007 59 13 0 3 2 2 3 2 3 3 2 -4006 4006 4024 4024 4024 4006 4025 4007 56 12 0 3 2 2 3 2 2 2 2 -4006 4006 4024 4024 4024 4006 4025 4007 56 12 1 0 0 0 0 3 3 3 3 -4006 4006 4024 4024 4025 4007 4025 4007 56 13 0 3 2 2 3 2 3 3 2 -4006 4024 4023 4023 4024 4006 4024 4006 54 11 0 3 2 2 3 3 2 2 3 -4006 4024 4023 4023 4024 4006 4025 4007 54 12 0 3 2 2 3 2 2 2 2 -4006 4024 4023 4023 4024 4006 4025 4007 54 12 1 0 0 0 0 3 3 3 3 -4006 4024 4024 4024 4024 4006 4025 4007 54 12 0 3 2 2 3 2 2 2 2 -4006 4024 4024 4024 4024 4006 4025 4007 54 12 1 0 0 0 0 3 3 3 3 -4006 4024 4024 4024 4025 4007 4025 4007 54 13 0 3 2 2 3 2 3 3 2 -4007 4007 4006 4006 4007 4007 4007 4007 62 13 0 3 2 2 3 2 3 3 2 -4007 4007 4006 4006 4007 4007 4008 4008 62 14 0 2 2 3 2 2 3 3 2 -4007 4007 4006 4006 4007 4007 4008 4008 62 14 1 3 3 0 0 0 0 0 0 -4007 4007 4006 4024 4007 4007 4007 4007 60 13 0 3 2 2 3 2 3 3 2 -4007 4007 4006 4024 4007 4007 4008 4008 60 14 0 2 2 3 2 2 3 3 2 -4007 4007 4006 4024 4007 4007 4008 4008 60 14 1 3 3 0 0 0 0 0 0 -4007 4007 4007 4007 4007 4007 4008 4008 62 14 0 2 2 3 2 2 3 3 2 -4007 4007 4007 4007 4007 4007 4008 4008 62 14 1 3 3 0 0 0 0 0 0 -4007 4007 4007 4007 4008 4008 4008 4008 62 15 0 2 3 3 2 2 3 3 2 -4007 4007 4007 4025 4007 4007 4008 4008 60 14 0 2 2 3 2 2 3 3 2 -4007 4007 4007 4025 4007 4007 4008 4008 60 14 1 3 3 0 0 0 0 0 0 -4007 4007 4007 4025 4008 4008 4008 4008 60 15 0 2 3 3 2 2 3 3 2 -4007 4007 4024 4024 4007 4007 4007 4007 59 13 0 3 2 2 3 2 3 3 2 -4007 4007 4024 4024 4007 4007 4008 4008 59 14 0 2 2 3 2 2 3 3 2 -4007 4007 4024 4024 4007 4007 4008 4008 59 14 1 3 3 0 0 0 0 0 0 -4007 4007 4024 4024 4025 4007 4025 4007 56 13 0 3 2 2 3 2 3 3 2 -4007 4007 4024 4024 4025 4007 4026 4008 56 14 0 2 2 3 2 2 3 3 2 -4007 4007 4024 4024 4025 4007 4026 4008 56 14 1 3 3 0 0 0 0 0 0 -4007 4007 4025 4025 4007 4007 4008 4008 59 14 0 2 2 3 2 2 3 3 2 -4007 4007 4025 4025 4007 4007 4008 4008 59 14 1 3 3 0 0 0 0 0 0 -4007 4007 4025 4025 4008 4008 4008 4008 59 15 0 2 3 3 2 2 3 3 2 -4007 4007 4025 4025 4025 4007 4026 4008 56 14 0 2 2 3 2 2 3 3 2 -4007 4007 4025 4025 4025 4007 4026 4008 56 14 1 3 3 0 0 0 0 0 0 -4007 4007 4025 4025 4026 4008 4026 4008 56 15 0 2 3 3 2 2 3 3 2 -4007 4025 4024 4024 4025 4007 4025 4007 54 13 0 3 2 2 3 2 3 3 2 -4007 4025 4024 4024 4025 4007 4026 4008 54 14 0 2 2 3 2 2 3 3 2 -4007 4025 4024 4024 4025 4007 4026 4008 54 14 1 3 3 0 0 0 0 0 0 -4007 4025 4025 4025 4025 4007 4026 4008 54 14 0 2 2 3 2 2 3 3 2 -4007 4025 4025 4025 4025 4007 4026 4008 54 14 1 3 3 0 0 0 0 0 0 -4007 4025 4025 4025 4026 4008 4026 4008 54 15 0 2 3 3 2 2 3 3 2 -4008 4008 4007 4007 4008 4008 4008 4008 62 15 0 2 3 3 2 2 3 3 2 -4008 4008 4007 4007 4008 4008 4009 4009 62 16 0 2 3 3 2 2 3 3 2 -4008 4008 4007 4025 4008 4008 4008 4008 60 15 0 2 3 3 2 2 3 3 2 -4008 4008 4007 4025 4008 4008 4009 4009 60 16 0 2 3 3 2 2 3 3 2 -4008 4008 4008 4008 4008 4008 4009 4009 62 16 0 2 3 3 2 2 3 3 2 -4008 4008 4008 4008 4009 4009 4009 4009 62 17 0 2 3 3 2 2 3 3 2 -4008 4008 4008 4026 4008 4008 4009 4009 60 16 0 2 3 3 2 2 3 3 2 -4008 4008 4008 4026 4009 4009 4009 4009 60 17 0 2 3 3 2 2 3 3 2 -4008 4008 4025 4025 4008 4008 4008 4008 59 15 0 2 3 3 2 2 3 3 2 -4008 4008 4025 4025 4008 4008 4009 4009 59 16 0 2 3 3 2 2 3 3 2 -4008 4008 4025 4025 4026 4008 4026 4008 56 15 0 2 3 3 2 2 3 3 2 -4008 4008 4025 4025 4026 4008 4027 4009 56 16 0 2 3 3 2 2 3 3 2 -4008 4008 4026 4026 4008 4008 4009 4009 59 16 0 2 3 3 2 2 3 3 2 -4008 4008 4026 4026 4009 4009 4009 4009 59 17 0 2 3 3 2 2 3 3 2 -4008 4008 4026 4026 4026 4008 4027 4009 56 16 0 2 3 3 2 2 3 3 2 -4008 4008 4026 4026 4027 4009 4027 4009 56 17 0 2 3 3 2 2 3 3 2 -4008 4026 4025 4025 4026 4008 4026 4008 54 15 0 2 3 3 2 2 3 3 2 -4008 4026 4025 4025 4026 4008 4027 4009 54 16 0 2 3 3 2 2 3 3 2 -4008 4026 4026 4026 4026 4008 4027 4009 54 16 0 2 3 3 2 2 3 3 2 -4008 4026 4026 4026 4027 4009 4027 4009 54 17 0 2 3 3 2 2 3 3 2 -4009 4009 4008 4008 4009 4009 4009 4009 62 17 0 2 3 3 2 2 3 3 2 -4009 4009 4008 4008 4009 4009 4010 4010 62 18 0 2 3 3 2 2 3 3 2 -4009 4009 4008 4026 4009 4009 4009 4009 60 17 0 2 3 3 2 2 3 3 2 -4009 4009 4008 4026 4009 4009 4010 4010 60 18 0 2 3 3 2 2 3 3 2 -4009 4009 4009 4009 4009 4009 4010 4010 62 18 0 2 3 3 2 2 3 3 2 -4009 4009 4009 4009 4010 4010 4010 4010 62 19 0 2 3 3 2 2 3 3 2 -4009 4009 4009 4027 4009 4009 4010 4010 60 18 0 2 3 3 2 2 3 3 2 -4009 4009 4009 4027 4010 4010 4010 4010 60 19 0 2 3 3 2 2 3 3 2 -4009 4009 4026 4026 4009 4009 4009 4009 59 17 0 2 3 3 2 2 3 3 2 -4009 4009 4026 4026 4009 4009 4010 4010 59 18 0 2 3 3 2 2 3 3 2 -4009 4009 4026 4026 4027 4009 4027 4009 56 17 0 2 3 3 2 2 3 3 2 -4009 4009 4026 4026 4027 4009 4028 4010 56 18 0 2 3 3 2 2 3 3 2 -4009 4009 4027 4027 4009 4009 4010 4010 59 18 0 2 3 3 2 2 3 3 2 -4009 4009 4027 4027 4010 4010 4010 4010 59 19 0 2 3 3 2 2 3 3 2 -4009 4009 4027 4027 4027 4009 4028 4010 56 18 0 2 3 3 2 2 3 3 2 -4009 4009 4027 4027 4028 4010 4028 4010 56 19 0 2 3 3 2 2 3 3 2 -4009 4027 4026 4026 4027 4009 4027 4009 54 17 0 2 3 3 2 2 3 3 2 -4009 4027 4026 4026 4027 4009 4028 4010 54 18 0 2 3 3 2 2 3 3 2 -4009 4027 4027 4027 4027 4009 4028 4010 54 18 0 2 3 3 2 2 3 3 2 -4009 4027 4027 4027 4028 4010 4028 4010 54 19 0 2 3 3 2 2 3 3 2 -4010 4010 4009 4009 4010 4010 4010 4010 62 19 0 2 3 3 2 2 3 3 2 -4010 4010 4009 4009 4010 4010 4011 4011 62 20 0 2 3 3 2 2 3 3 2 -4010 4010 4009 4027 4010 4010 4010 4010 60 19 0 2 3 3 2 2 3 3 2 -4010 4010 4009 4027 4010 4010 4011 4011 60 20 0 2 3 3 2 2 3 3 2 -4010 4010 4010 4010 4010 4010 4011 4011 62 20 0 2 3 3 2 2 3 3 2 -4010 4010 4010 4010 4011 4011 4011 4011 62 21 0 2 3 3 2 2 3 3 2 -4010 4010 4010 4028 4010 4010 4011 4011 60 20 0 2 3 3 2 2 3 3 2 -4010 4010 4010 4028 4011 4011 4011 4011 60 21 0 2 3 3 2 2 3 3 2 -4010 4010 4027 4027 4010 4010 4010 4010 59 19 0 2 3 3 2 2 3 3 2 -4010 4010 4027 4027 4010 4010 4011 4011 59 20 0 2 3 3 2 2 3 3 2 -4010 4010 4027 4027 4028 4010 4028 4010 56 19 0 2 3 3 2 2 3 3 2 -4010 4010 4027 4027 4028 4010 4029 4011 56 20 0 2 3 3 2 2 3 3 2 -4010 4010 4028 4028 4010 4010 4011 4011 59 20 0 2 3 3 2 2 3 3 2 -4010 4010 4028 4028 4011 4011 4011 4011 59 21 0 2 3 3 2 2 3 3 2 -4010 4010 4028 4028 4028 4010 4029 4011 56 20 0 2 3 3 2 2 3 3 2 -4010 4010 4028 4028 4029 4011 4029 4011 56 21 0 2 3 3 2 2 3 3 2 -4010 4028 4027 4027 4028 4010 4028 4010 54 19 0 2 3 3 2 2 3 3 2 -4010 4028 4027 4027 4028 4010 4029 4011 54 20 0 2 3 3 2 2 3 3 2 -4010 4028 4028 4028 4028 4010 4029 4011 54 20 0 2 3 3 2 2 3 3 2 -4010 4028 4028 4028 4029 4011 4029 4011 54 21 0 2 3 3 2 2 3 3 2 -4011 4011 4010 4010 4011 4011 4011 4011 62 21 0 2 3 3 2 2 3 3 2 -4011 4011 4010 4010 4011 4011 4012 4012 62 22 0 2 3 3 2 1 3 3 1 -4011 4011 4010 4010 4011 4011 4012 4012 62 22 1 0 0 0 0 2 4 4 2 -4011 4011 4010 4028 4011 4011 4011 4011 60 21 0 2 3 3 2 2 3 3 2 -4011 4011 4010 4028 4011 4011 4012 4012 60 22 0 2 3 3 2 1 3 3 1 -4011 4011 4010 4028 4011 4011 4012 4012 60 22 1 0 0 0 0 2 4 4 2 -4011 4011 4011 4011 4011 4011 4012 4012 62 22 0 2 3 3 2 1 3 3 1 -4011 4011 4011 4011 4011 4011 4012 4012 62 22 1 0 0 0 0 2 4 4 2 -4011 4011 4011 4011 4012 4012 4012 4012 62 23 0 2 3 3 2 1 4 4 1 -4011 4011 4011 4029 4011 4011 4012 4012 60 22 0 2 3 3 2 1 3 3 1 -4011 4011 4011 4029 4011 4011 4012 4012 60 22 1 0 0 0 0 2 4 4 2 -4011 4011 4011 4029 4012 4012 4012 4012 60 23 0 2 3 3 2 1 4 4 1 -4011 4011 4028 4028 4011 4011 4011 4011 59 21 0 2 3 3 2 2 3 3 2 -4011 4011 4028 4028 4011 4011 4012 4012 59 22 0 2 3 3 2 1 3 3 1 -4011 4011 4028 4028 4011 4011 4012 4012 59 22 1 0 0 0 0 2 4 4 2 -4011 4011 4028 4028 4029 4011 4029 4011 56 21 0 2 3 3 2 2 3 3 2 -4011 4011 4028 4028 4029 4011 4030 4012 56 22 0 2 3 3 2 1 3 3 1 -4011 4011 4028 4028 4029 4011 4030 4012 56 22 1 0 0 0 0 2 4 4 2 -4011 4011 4029 4029 4011 4011 4012 4012 59 22 0 2 3 3 2 1 3 3 1 -4011 4011 4029 4029 4011 4011 4012 4012 59 22 1 0 0 0 0 2 4 4 2 -4011 4011 4029 4029 4012 4012 4012 4012 59 23 0 2 3 3 2 1 4 4 1 -4011 4011 4029 4029 4029 4011 4030 4012 56 22 0 2 3 3 2 1 3 3 1 -4011 4011 4029 4029 4029 4011 4030 4012 56 22 1 0 0 0 0 2 4 4 2 -4011 4011 4029 4029 4030 4012 4030 4012 56 23 0 2 3 3 2 1 4 4 1 -4011 4029 4028 4028 4029 4011 4029 4011 54 21 0 2 3 3 2 2 3 3 2 -4011 4029 4028 4028 4029 4011 4030 4012 54 22 0 2 3 3 2 1 3 3 1 -4011 4029 4028 4028 4029 4011 4030 4012 54 22 1 0 0 0 0 2 4 4 2 -4011 4029 4029 4029 4029 4011 4030 4012 54 22 0 2 3 3 2 1 3 3 1 -4011 4029 4029 4029 4029 4011 4030 4012 54 22 1 0 0 0 0 2 4 4 2 -4011 4029 4029 4029 4030 4012 4030 4012 54 23 0 2 3 3 2 1 4 4 1 -4012 4012 4011 4011 4012 4012 4012 4012 62 23 0 2 3 3 2 1 4 4 1 -4012 4012 4011 4011 4012 4012 4013 4013 62 24 0 1 3 3 1 1 4 4 1 -4012 4012 4011 4011 4012 4012 4013 4013 62 24 1 2 4 4 2 0 0 0 0 -4012 4012 4011 4029 4012 4012 4012 4012 60 23 0 2 3 3 2 1 4 4 1 -4012 4012 4011 4029 4012 4012 4013 4013 60 24 0 1 3 3 1 1 4 4 1 -4012 4012 4011 4029 4012 4012 4013 4013 60 24 1 2 4 4 2 0 0 0 0 -4012 4012 4012 4012 4012 4012 4013 4013 62 24 0 1 3 3 1 1 4 4 1 -4012 4012 4012 4012 4012 4012 4013 4013 62 24 1 2 4 4 2 0 0 0 0 -4012 4012 4012 4012 4013 4013 4013 4013 62 25 0 1 4 4 1 1 4 4 1 -4012 4012 4012 4030 4012 4012 4013 4013 60 24 0 1 3 3 1 1 4 4 1 -4012 4012 4012 4030 4012 4012 4013 4013 60 24 1 2 4 4 2 0 0 0 0 -4012 4012 4012 4030 4013 4013 4013 4013 60 25 0 1 4 4 1 1 4 4 1 -4012 4012 4029 4029 4012 4012 4012 4012 59 23 0 2 3 3 2 1 4 4 1 -4012 4012 4029 4029 4012 4012 4013 4013 59 24 0 1 3 3 1 1 4 4 1 -4012 4012 4029 4029 4012 4012 4013 4013 59 24 1 2 4 4 2 0 0 0 0 -4012 4012 4029 4029 4030 4012 4030 4012 56 23 0 2 3 3 2 1 4 4 1 -4012 4012 4029 4029 4030 4012 4031 4013 56 24 0 1 3 3 1 1 4 4 1 -4012 4012 4029 4029 4030 4012 4031 4013 56 24 1 2 4 4 2 0 0 0 0 -4012 4012 4030 4030 4012 4012 4013 4013 59 24 0 1 3 3 1 1 4 4 1 -4012 4012 4030 4030 4012 4012 4013 4013 59 24 1 2 4 4 2 0 0 0 0 -4012 4012 4030 4030 4013 4013 4013 4013 59 25 0 1 4 4 1 1 4 4 1 -4012 4012 4030 4030 4030 4012 4031 4013 56 24 0 1 3 3 1 1 4 4 1 -4012 4012 4030 4030 4030 4012 4031 4013 56 24 1 2 4 4 2 0 0 0 0 -4012 4012 4030 4030 4031 4013 4031 4013 56 25 0 1 4 4 1 1 4 4 1 -4012 4030 4029 4029 4030 4012 4030 4012 54 23 0 2 3 3 2 1 4 4 1 -4012 4030 4029 4029 4030 4012 4031 4013 54 24 0 1 3 3 1 1 4 4 1 -4012 4030 4029 4029 4030 4012 4031 4013 54 24 1 2 4 4 2 0 0 0 0 -4012 4030 4030 4030 4030 4012 4031 4013 54 24 0 1 3 3 1 1 4 4 1 -4012 4030 4030 4030 4030 4012 4031 4013 54 24 1 2 4 4 2 0 0 0 0 -4012 4030 4030 4030 4031 4013 4031 4013 54 25 0 1 4 4 1 1 4 4 1 -4013 4013 4012 4012 4013 4013 4013 4013 62 25 0 1 4 4 1 1 4 4 1 -4013 4013 4012 4012 4013 4013 4014 4014 62 26 0 1 4 4 1 1 4 4 1 -4013 4013 4012 4030 4013 4013 4013 4013 60 25 0 1 4 4 1 1 4 4 1 -4013 4013 4012 4030 4013 4013 4014 4014 60 26 0 1 4 4 1 1 4 4 1 -4013 4013 4013 4013 4013 4013 4014 4014 62 26 0 1 4 4 1 1 4 4 1 -4013 4013 4013 4013 4014 4014 4014 4014 62 27 0 1 4 4 1 1 4 4 1 -4013 4013 4013 4031 4013 4013 4014 4014 60 26 0 1 4 4 1 1 4 4 1 -4013 4013 4013 4031 4014 4014 4014 4014 60 27 0 1 4 4 1 1 4 4 1 -4013 4013 4030 4030 4013 4013 4013 4013 59 25 0 1 4 4 1 1 4 4 1 -4013 4013 4030 4030 4013 4013 4014 4014 59 26 0 1 4 4 1 1 4 4 1 -4013 4013 4030 4030 4031 4013 4031 4013 56 25 0 1 4 4 1 1 4 4 1 -4013 4013 4030 4030 4031 4013 4032 4014 56 26 0 1 4 4 1 1 4 4 1 -4013 4013 4031 4031 4013 4013 4014 4014 59 26 0 1 4 4 1 1 4 4 1 -4013 4013 4031 4031 4014 4014 4014 4014 59 27 0 1 4 4 1 1 4 4 1 -4013 4013 4031 4031 4031 4013 4032 4014 56 26 0 1 4 4 1 1 4 4 1 -4013 4013 4031 4031 4032 4014 4032 4014 56 27 0 1 4 4 1 1 4 4 1 -4013 4031 4030 4030 4031 4013 4031 4013 54 25 0 1 4 4 1 1 4 4 1 -4013 4031 4030 4030 4031 4013 4032 4014 54 26 0 1 4 4 1 1 4 4 1 -4013 4031 4031 4031 4031 4013 4032 4014 54 26 0 1 4 4 1 1 4 4 1 -4013 4031 4031 4031 4032 4014 4032 4014 54 27 0 1 4 4 1 1 4 4 1 -4014 4014 4013 4013 4014 4014 4014 4014 62 27 0 1 4 4 1 1 4 4 1 -4014 4014 4013 4013 4014 4014 4015 4015 62 28 0 1 4 4 1 1 4 4 1 -4014 4014 4013 4031 4014 4014 4014 4014 60 27 0 1 4 4 1 1 4 4 1 -4014 4014 4013 4031 4014 4014 4015 4015 60 28 0 1 4 4 1 1 4 4 1 -4014 4014 4014 4014 4014 4014 4015 4015 62 28 0 1 4 4 1 1 4 4 1 -4014 4014 4014 4014 4015 4015 4015 4015 62 29 0 1 4 4 1 1 4 4 1 -4014 4014 4014 4032 4014 4014 4015 4015 60 28 0 1 4 4 1 1 4 4 1 -4014 4014 4014 4032 4015 4015 4015 4015 60 29 0 1 4 4 1 1 4 4 1 -4014 4014 4031 4031 4014 4014 4014 4014 59 27 0 1 4 4 1 1 4 4 1 -4014 4014 4031 4031 4014 4014 4015 4015 59 28 0 1 4 4 1 1 4 4 1 -4014 4014 4031 4031 4032 4014 4032 4014 56 27 0 1 4 4 1 1 4 4 1 -4014 4014 4031 4031 4032 4014 4033 4015 56 28 0 1 4 4 1 1 4 4 1 -4014 4014 4032 4032 4014 4014 4015 4015 59 28 0 1 4 4 1 1 4 4 1 -4014 4014 4032 4032 4015 4015 4015 4015 59 29 0 1 4 4 1 1 4 4 1 -4014 4014 4032 4032 4032 4014 4033 4015 56 28 0 1 4 4 1 1 4 4 1 -4014 4014 4032 4032 4033 4015 4033 4015 56 29 0 1 4 4 1 1 4 4 1 -4014 4032 4031 4031 4032 4014 4032 4014 54 27 0 1 4 4 1 1 4 4 1 -4014 4032 4031 4031 4032 4014 4033 4015 54 28 0 1 4 4 1 1 4 4 1 -4014 4032 4032 4032 4032 4014 4033 4015 54 28 0 1 4 4 1 1 4 4 1 -4014 4032 4032 4032 4033 4015 4033 4015 54 29 0 1 4 4 1 1 4 4 1 -4015 4015 4014 4014 4015 4015 4015 4015 62 29 0 1 4 4 1 1 4 4 1 -4015 4015 4014 4014 4015 4015 4016 4016 62 30 0 1 4 4 1 1 4 4 1 -4015 4015 4014 4032 4015 4015 4015 4015 60 29 0 1 4 4 1 1 4 4 1 -4015 4015 4014 4032 4015 4015 4016 4016 60 30 0 1 4 4 1 1 4 4 1 -4015 4015 4015 4015 4015 4015 4016 4016 62 30 0 1 4 4 1 1 4 4 1 -4015 4015 4015 4015 4016 4016 4016 4016 62 31 0 1 4 4 1 1 4 4 1 -4015 4015 4015 4033 4015 4015 4016 4016 60 30 0 1 4 4 1 1 4 4 1 -4015 4015 4015 4033 4016 4016 4016 4016 60 31 0 1 4 4 1 1 4 4 1 -4015 4015 4032 4032 4015 4015 4015 4015 59 29 0 1 4 4 1 1 4 4 1 -4015 4015 4032 4032 4015 4015 4016 4016 59 30 0 1 4 4 1 1 4 4 1 -4015 4015 4032 4032 4033 4015 4033 4015 56 29 0 1 4 4 1 1 4 4 1 -4015 4015 4032 4032 4033 4015 4034 4016 56 30 0 1 4 4 1 1 4 4 1 -4015 4015 4033 4033 4015 4015 4016 4016 59 30 0 1 4 4 1 1 4 4 1 -4015 4015 4033 4033 4016 4016 4016 4016 59 31 0 1 4 4 1 1 4 4 1 -4015 4015 4033 4033 4033 4015 4034 4016 56 30 0 1 4 4 1 1 4 4 1 -4015 4015 4033 4033 4034 4016 4034 4016 56 31 0 1 4 4 1 1 4 4 1 -4015 4033 4032 4032 4033 4015 4033 4015 54 29 0 1 4 4 1 1 4 4 1 -4015 4033 4032 4032 4033 4015 4034 4016 54 30 0 1 4 4 1 1 4 4 1 -4015 4033 4033 4033 4033 4015 4034 4016 54 30 0 1 4 4 1 1 4 4 1 -4015 4033 4033 4033 4034 4016 4034 4016 54 31 0 1 4 4 1 1 4 4 1 -4016 4016 4015 4015 4016 4016 4016 4016 62 31 0 1 4 4 1 1 4 4 1 -4016 4016 4015 4033 4016 4016 4016 4016 60 31 0 1 4 4 1 1 4 4 1 -4016 4016 4016 4016 5001 5001 5001 5001 62 33 0 1 4 4 1 8 6 6 8 -4016 4016 4016 4034 5001 5001 5001 5001 60 33 0 1 4 4 1 8 6 6 8 -4016 4016 4033 4033 4016 4016 4016 4016 59 31 0 1 4 4 1 1 4 4 1 -4016 4016 4033 4033 4034 4016 4034 4016 56 31 0 1 4 4 1 1 4 4 1 -4016 4016 4034 4034 5001 5001 5001 5001 57 33 0 1 4 4 1 8 6 6 8 -4016 4034 4033 4033 4034 4016 4034 4016 54 31 0 1 4 4 1 1 4 4 1 -4016 4034 4034 4034 5001 5001 5001 5001 54 33 0 1 4 4 1 8 6 6 8 -4017 4017 4016 4016 5001 5001 5001 5001 62 34 0 1 4 4 1 8 6 6 8 -4017 4017 4016 4034 5001 5001 5001 5001 60 34 0 1 4 4 1 8 6 6 8 -4017 4017 4034 4034 5001 5001 5001 5001 57 34 0 1 4 4 1 8 6 6 8 -4017 4035 4034 4034 5001 5001 5001 5001 54 34 0 1 4 4 1 8 6 6 8 -4019 4019 4019 4019 4019 4001 4020 4002 53 2 0 0 0 0 0 0 0 0 0 -4019 4019 4019 4019 4019 4019 4020 4020 50 2 0 0 0 0 0 0 0 0 0 -4019 4019 4019 4019 4020 4002 4020 4002 53 3 0 0 0 0 0 0 0 0 0 -4019 4019 4019 4019 4020 4020 4020 4020 50 3 0 0 0 0 0 0 0 0 0 -4019 4019 4019 4037 4019 4019 4020 4020 49 2 0 0 0 0 0 0 0 0 0 -4019 4019 4019 4037 4020 4020 4020 4020 49 3 0 0 0 0 0 0 0 0 0 -4019 4019 4037 4037 4019 4019 4020 4020 47 2 0 0 0 0 0 0 0 0 0 -4019 4019 4037 4037 4020 4020 4020 4020 47 3 0 0 0 0 0 0 0 0 0 -4019 4019 4037 4037 4037 4019 4038 4020 45 2 0 0 0 0 0 0 0 0 0 -4019 4019 4037 4037 4038 4020 4038 4020 45 3 0 0 0 0 0 0 0 0 0 -4019 4037 4037 4037 4037 4019 4038 4020 43 2 0 0 0 0 0 0 0 0 0 -4019 4037 4037 4037 4038 4020 4038 4020 43 3 0 0 0 0 0 0 0 0 0 -4020 4020 4019 4019 4020 4002 4020 4002 53 3 0 0 0 0 0 0 0 0 0 -4020 4020 4019 4019 4020 4002 4021 4003 53 4 0 0 0 0 0 0 0 0 0 -4020 4020 4019 4019 4020 4020 4020 4020 50 3 0 0 0 0 0 0 0 0 0 -4020 4020 4019 4019 4020 4020 4021 4021 50 4 0 0 0 0 0 0 0 0 0 -4020 4020 4019 4037 4020 4020 4020 4020 49 3 0 0 0 0 0 0 0 0 0 -4020 4020 4019 4037 4020 4020 4021 4021 49 4 0 0 0 0 0 0 0 0 0 -4020 4020 4020 4020 4020 4002 4021 4003 53 4 0 0 0 0 0 0 0 0 0 -4020 4020 4020 4020 4020 4020 4021 4021 50 4 0 0 0 0 0 0 0 0 0 -4020 4020 4020 4020 4021 4003 4021 4003 53 5 0 0 0 0 0 0 0 0 0 -4020 4020 4020 4020 4021 4021 4021 4021 50 5 0 0 0 0 0 0 0 0 0 -4020 4020 4020 4038 4020 4020 4021 4021 49 4 0 0 0 0 0 0 0 0 0 -4020 4020 4020 4038 4021 4021 4021 4021 49 5 0 0 0 0 0 0 0 0 0 -4020 4020 4037 4037 4020 4020 4020 4020 47 3 0 0 0 0 0 0 0 0 0 -4020 4020 4037 4037 4020 4020 4021 4021 47 4 0 0 0 0 0 0 0 0 0 -4020 4020 4037 4037 4038 4020 4038 4020 45 3 0 0 0 0 0 0 0 0 0 -4020 4020 4037 4037 4038 4020 4039 4021 45 4 0 0 0 0 0 0 0 0 0 -4020 4020 4038 4038 4020 4020 4021 4021 47 4 0 0 0 0 0 0 0 0 0 -4020 4020 4038 4038 4021 4021 4021 4021 47 5 0 0 0 0 0 0 0 0 0 -4020 4020 4038 4038 4038 4020 4039 4021 45 4 0 0 0 0 0 0 0 0 0 -4020 4020 4038 4038 4039 4021 4039 4021 45 5 0 0 0 0 0 0 0 0 0 -4020 4038 4037 4037 4038 4020 4038 4020 43 3 0 0 0 0 0 0 0 0 0 -4020 4038 4037 4037 4038 4020 4039 4021 43 4 0 0 0 0 0 0 0 0 0 -4020 4038 4038 4038 4038 4020 4039 4021 43 4 0 0 0 0 0 0 0 0 0 -4020 4038 4038 4038 4039 4021 4039 4021 43 5 0 0 0 0 0 0 0 0 0 -4021 4021 4020 4020 4021 4003 4021 4003 53 5 0 0 0 0 0 0 0 0 0 -4021 4021 4020 4020 4021 4003 4022 4004 53 6 0 0 0 0 0 3 2 2 3 -4021 4021 4020 4020 4021 4021 4021 4021 50 5 0 0 0 0 0 0 0 0 0 -4021 4021 4020 4020 4021 4021 4022 4022 50 6 0 0 0 0 0 3 2 2 3 -4021 4021 4020 4038 4021 4021 4021 4021 49 5 0 0 0 0 0 0 0 0 0 -4021 4021 4020 4038 4021 4021 4022 4022 49 6 0 0 0 0 0 3 2 2 3 -4021 4021 4021 4021 4021 4003 4022 4004 53 6 0 0 0 0 0 3 2 2 3 -4021 4021 4021 4021 4021 4021 4022 4022 50 6 0 0 0 0 0 3 2 2 3 -4021 4021 4021 4021 4022 4004 4022 4004 53 7 0 3 2 2 3 3 2 2 3 -4021 4021 4021 4021 4022 4022 4022 4022 50 7 0 3 2 2 3 3 2 2 3 -4021 4021 4021 4039 4021 4021 4022 4022 49 6 0 0 0 0 0 3 2 2 3 -4021 4021 4021 4039 4022 4022 4022 4022 49 7 0 3 2 2 3 3 2 2 3 -4021 4021 4038 4038 4021 4021 4021 4021 47 5 0 0 0 0 0 0 0 0 0 -4021 4021 4038 4038 4021 4021 4022 4022 47 6 0 0 0 0 0 3 2 2 3 -4021 4021 4038 4038 4039 4021 4039 4021 45 5 0 0 0 0 0 0 0 0 0 -4021 4021 4038 4038 4039 4021 4040 4022 45 6 0 0 0 0 0 3 2 2 3 -4021 4021 4039 4039 4021 4021 4022 4022 47 6 0 0 0 0 0 3 2 2 3 -4021 4021 4039 4039 4022 4022 4022 4022 47 7 0 3 2 2 3 3 2 2 3 -4021 4021 4039 4039 4039 4021 4040 4022 45 6 0 0 0 0 0 3 2 2 3 -4021 4021 4039 4039 4040 4022 4040 4022 45 7 0 3 2 2 3 3 2 2 3 -4021 4039 4038 4038 4039 4021 4039 4021 43 5 0 0 0 0 0 0 0 0 0 -4021 4039 4038 4038 4039 4021 4040 4022 43 6 0 0 0 0 0 3 2 2 3 -4021 4039 4039 4039 4039 4021 4040 4022 43 6 0 0 0 0 0 3 2 2 3 -4021 4039 4039 4039 4040 4022 4040 4022 43 7 0 3 2 2 3 3 2 2 3 -4022 4022 4021 4021 4022 4004 4022 4004 53 7 0 3 2 2 3 3 2 2 3 -4022 4022 4021 4021 4022 4004 4023 4005 53 8 0 3 2 2 3 3 2 2 3 -4022 4022 4021 4021 4022 4022 4022 4022 50 7 0 3 2 2 3 3 2 2 3 -4022 4022 4021 4021 4022 4022 4023 4023 50 8 0 3 2 2 3 3 2 2 3 -4022 4022 4021 4039 4022 4022 4022 4022 49 7 0 3 2 2 3 3 2 2 3 -4022 4022 4021 4039 4022 4022 4023 4023 49 8 0 3 2 2 3 3 2 2 3 -4022 4022 4022 4022 4022 4004 4023 4005 53 8 0 3 2 2 3 3 2 2 3 -4022 4022 4022 4022 4022 4022 4023 4023 50 8 0 3 2 2 3 3 2 2 3 -4022 4022 4022 4022 4023 4005 4023 4005 53 9 0 3 2 2 3 3 2 2 3 -4022 4022 4022 4022 4023 4023 4023 4023 50 9 0 3 2 2 3 3 2 2 3 -4022 4022 4022 4040 4022 4022 4023 4023 49 8 0 3 2 2 3 3 2 2 3 -4022 4022 4022 4040 4023 4023 4023 4023 49 9 0 3 2 2 3 3 2 2 3 -4022 4022 4039 4039 4022 4022 4022 4022 47 7 0 3 2 2 3 3 2 2 3 -4022 4022 4039 4039 4022 4022 4023 4023 47 8 0 3 2 2 3 3 2 2 3 -4022 4022 4039 4039 4040 4022 4040 4022 45 7 0 3 2 2 3 3 2 2 3 -4022 4022 4039 4039 4040 4022 4041 4023 45 8 0 3 2 2 3 3 2 2 3 -4022 4022 4040 4040 4022 4022 4023 4023 47 8 0 3 2 2 3 3 2 2 3 -4022 4022 4040 4040 4023 4023 4023 4023 47 9 0 3 2 2 3 3 2 2 3 -4022 4022 4040 4040 4040 4022 4041 4023 45 8 0 3 2 2 3 3 2 2 3 -4022 4022 4040 4040 4041 4023 4041 4023 45 9 0 3 2 2 3 3 2 2 3 -4022 4040 4039 4039 4040 4022 4040 4022 43 7 0 3 2 2 3 3 2 2 3 -4022 4040 4039 4039 4040 4022 4041 4023 43 8 0 3 2 2 3 3 2 2 3 -4022 4040 4040 4040 4040 4022 4041 4023 43 8 0 3 2 2 3 3 2 2 3 -4022 4040 4040 4040 4041 4023 4041 4023 43 9 0 3 2 2 3 3 2 2 3 -4023 4023 4022 4022 4023 4005 4023 4005 53 9 0 3 2 2 3 3 2 2 3 -4023 4023 4022 4022 4023 4005 4024 4006 53 10 0 3 2 2 3 3 2 2 3 -4023 4023 4022 4022 4023 4023 4023 4023 50 9 0 3 2 2 3 3 2 2 3 -4023 4023 4022 4022 4023 4023 4024 4024 50 10 0 3 2 2 3 3 2 2 3 -4023 4023 4022 4040 4023 4023 4023 4023 49 9 0 3 2 2 3 3 2 2 3 -4023 4023 4022 4040 4023 4023 4024 4024 49 10 0 3 2 2 3 3 2 2 3 -4023 4023 4023 4023 4023 4005 4024 4006 53 10 0 3 2 2 3 3 2 2 3 -4023 4023 4023 4023 4023 4023 4024 4024 50 10 0 3 2 2 3 3 2 2 3 -4023 4023 4023 4023 4024 4006 4024 4006 53 11 0 3 2 2 3 3 2 2 3 -4023 4023 4023 4023 4024 4024 4024 4024 50 11 0 3 2 2 3 3 2 2 3 -4023 4023 4023 4041 4023 4023 4024 4024 49 10 0 3 2 2 3 3 2 2 3 -4023 4023 4023 4041 4024 4024 4024 4024 49 11 0 3 2 2 3 3 2 2 3 -4023 4023 4040 4040 4023 4023 4023 4023 47 9 0 3 2 2 3 3 2 2 3 -4023 4023 4040 4040 4023 4023 4024 4024 47 10 0 3 2 2 3 3 2 2 3 -4023 4023 4040 4040 4041 4023 4041 4023 45 9 0 3 2 2 3 3 2 2 3 -4023 4023 4040 4040 4041 4023 4042 4024 45 10 0 3 2 2 3 3 2 2 3 -4023 4023 4041 4041 4023 4023 4024 4024 47 10 0 3 2 2 3 3 2 2 3 -4023 4023 4041 4041 4024 4024 4024 4024 47 11 0 3 2 2 3 3 2 2 3 -4023 4023 4041 4041 4041 4023 4042 4024 45 10 0 3 2 2 3 3 2 2 3 -4023 4023 4041 4041 4042 4024 4042 4024 45 11 0 3 2 2 3 3 2 2 3 -4023 4041 4040 4040 4041 4023 4041 4023 43 9 0 3 2 2 3 3 2 2 3 -4023 4041 4040 4040 4041 4023 4042 4024 43 10 0 3 2 2 3 3 2 2 3 -4023 4041 4041 4041 4041 4023 4042 4024 43 10 0 3 2 2 3 3 2 2 3 -4023 4041 4041 4041 4042 4024 4042 4024 43 11 0 3 2 2 3 3 2 2 3 -4024 4024 4023 4023 4024 4006 4024 4006 53 11 0 3 2 2 3 3 2 2 3 -4024 4024 4023 4023 4024 4006 4025 4007 53 12 0 3 2 2 3 2 2 2 2 -4024 4024 4023 4023 4024 4006 4025 4007 53 12 1 0 0 0 0 3 3 3 3 -4024 4024 4023 4023 4024 4024 4024 4024 50 11 0 3 2 2 3 3 2 2 3 -4024 4024 4023 4023 4024 4024 4025 4025 50 12 0 3 2 2 3 2 2 2 2 -4024 4024 4023 4023 4024 4024 4025 4025 50 12 1 0 0 0 0 3 3 3 3 -4024 4024 4023 4041 4024 4024 4024 4024 49 11 0 3 2 2 3 3 2 2 3 -4024 4024 4023 4041 4024 4024 4025 4025 49 12 0 3 2 2 3 2 2 2 2 -4024 4024 4023 4041 4024 4024 4025 4025 49 12 1 0 0 0 0 3 3 3 3 -4024 4024 4024 4024 4024 4006 4025 4007 53 12 0 3 2 2 3 2 2 2 2 -4024 4024 4024 4024 4024 4006 4025 4007 53 12 1 0 0 0 0 3 3 3 3 -4024 4024 4024 4024 4024 4024 4025 4025 50 12 0 3 2 2 3 2 2 2 2 -4024 4024 4024 4024 4024 4024 4025 4025 50 12 1 0 0 0 0 3 3 3 3 -4024 4024 4024 4024 4025 4007 4025 4007 53 13 0 3 2 2 3 2 3 3 2 -4024 4024 4024 4024 4025 4025 4025 4025 50 13 0 3 2 2 3 2 3 3 2 -4024 4024 4024 4042 4024 4024 4025 4025 49 12 0 3 2 2 3 2 2 2 2 -4024 4024 4024 4042 4024 4024 4025 4025 49 12 1 0 0 0 0 3 3 3 3 -4024 4024 4024 4042 4025 4025 4025 4025 49 13 0 3 2 2 3 2 3 3 2 -4024 4024 4041 4041 4024 4024 4024 4024 47 11 0 3 2 2 3 3 2 2 3 -4024 4024 4041 4041 4024 4024 4025 4025 47 12 0 3 2 2 3 2 2 2 2 -4024 4024 4041 4041 4024 4024 4025 4025 47 12 1 0 0 0 0 3 3 3 3 -4024 4024 4041 4041 4042 4024 4042 4024 45 11 0 3 2 2 3 3 2 2 3 -4024 4024 4041 4041 4042 4024 4043 4025 45 12 0 3 2 2 3 2 2 2 2 -4024 4024 4041 4041 4042 4024 4043 4025 45 12 1 0 0 0 0 3 3 3 3 -4024 4024 4042 4042 4024 4024 4025 4025 47 12 0 3 2 2 3 2 2 2 2 -4024 4024 4042 4042 4024 4024 4025 4025 47 12 1 0 0 0 0 3 3 3 3 -4024 4024 4042 4042 4025 4025 4025 4025 47 13 0 3 2 2 3 2 3 3 2 -4024 4024 4042 4042 4042 4024 4043 4025 45 12 0 3 2 2 3 2 2 2 2 -4024 4024 4042 4042 4042 4024 4043 4025 45 12 1 0 0 0 0 3 3 3 3 -4024 4024 4042 4042 4043 4025 4043 4025 45 13 0 3 2 2 3 2 3 3 2 -4024 4042 4041 4041 4042 4024 4042 4024 43 11 0 3 2 2 3 3 2 2 3 -4024 4042 4041 4041 4042 4024 4043 4025 43 12 0 3 2 2 3 2 2 2 2 -4024 4042 4041 4041 4042 4024 4043 4025 43 12 1 0 0 0 0 3 3 3 3 -4024 4042 4042 4042 4042 4024 4043 4025 43 12 0 3 2 2 3 2 2 2 2 -4024 4042 4042 4042 4042 4024 4043 4025 43 12 1 0 0 0 0 3 3 3 3 -4024 4042 4042 4042 4043 4025 4043 4025 43 13 0 3 2 2 3 2 3 3 2 -4025 4025 4024 4024 4025 4007 4025 4007 53 13 0 3 2 2 3 2 3 3 2 -4025 4025 4024 4024 4025 4007 4026 4008 53 14 0 2 2 3 2 2 3 3 2 -4025 4025 4024 4024 4025 4007 4026 4008 53 14 1 3 3 0 0 0 0 0 0 -4025 4025 4024 4024 4025 4025 4025 4025 50 13 0 3 2 2 3 2 3 3 2 -4025 4025 4024 4024 4025 4025 4026 4026 50 14 0 2 2 3 2 2 3 3 2 -4025 4025 4024 4024 4025 4025 4026 4026 50 14 1 3 3 0 0 0 0 0 0 -4025 4025 4024 4042 4025 4025 4025 4025 49 13 0 3 2 2 3 2 3 3 2 -4025 4025 4024 4042 4025 4025 4026 4026 49 14 0 2 2 3 2 2 3 3 2 -4025 4025 4024 4042 4025 4025 4026 4026 49 14 1 3 3 0 0 0 0 0 0 -4025 4025 4025 4025 4025 4007 4026 4008 53 14 0 2 2 3 2 2 3 3 2 -4025 4025 4025 4025 4025 4007 4026 4008 53 14 1 3 3 0 0 0 0 0 0 -4025 4025 4025 4025 4025 4025 4026 4026 50 14 0 2 2 3 2 2 3 3 2 -4025 4025 4025 4025 4025 4025 4026 4026 50 14 1 3 3 0 0 0 0 0 0 -4025 4025 4025 4025 4026 4008 4026 4008 53 15 0 2 3 3 2 2 3 3 2 -4025 4025 4025 4025 4026 4026 4026 4026 50 15 0 2 3 3 2 2 3 3 2 -4025 4025 4025 4043 4025 4025 4026 4026 49 14 0 2 2 3 2 2 3 3 2 -4025 4025 4025 4043 4025 4025 4026 4026 49 14 1 3 3 0 0 0 0 0 0 -4025 4025 4025 4043 4026 4026 4026 4026 49 15 0 2 3 3 2 2 3 3 2 -4025 4025 4042 4042 4025 4025 4025 4025 47 13 0 3 2 2 3 2 3 3 2 -4025 4025 4042 4042 4025 4025 4026 4026 47 14 0 2 2 3 2 2 3 3 2 -4025 4025 4042 4042 4025 4025 4026 4026 47 14 1 3 3 0 0 0 0 0 0 -4025 4025 4042 4042 4043 4025 4043 4025 45 13 0 3 2 2 3 2 3 3 2 -4025 4025 4042 4042 4043 4025 4044 4026 45 14 0 2 2 3 2 2 3 3 2 -4025 4025 4042 4042 4043 4025 4044 4026 45 14 1 3 3 0 0 0 0 0 0 -4025 4025 4043 4043 4025 4025 4026 4026 47 14 0 2 2 3 2 2 3 3 2 -4025 4025 4043 4043 4025 4025 4026 4026 47 14 1 3 3 0 0 0 0 0 0 -4025 4025 4043 4043 4026 4026 4026 4026 47 15 0 2 3 3 2 2 3 3 2 -4025 4025 4043 4043 4043 4025 4044 4026 45 14 0 2 2 3 2 2 3 3 2 -4025 4025 4043 4043 4043 4025 4044 4026 45 14 1 3 3 0 0 0 0 0 0 -4025 4025 4043 4043 4044 4026 4044 4026 45 15 0 2 3 3 2 2 3 3 2 -4025 4043 4042 4042 4043 4025 4043 4025 43 13 0 3 2 2 3 2 3 3 2 -4025 4043 4042 4042 4043 4025 4044 4026 43 14 0 2 2 3 2 2 3 3 2 -4025 4043 4042 4042 4043 4025 4044 4026 43 14 1 3 3 0 0 0 0 0 0 -4025 4043 4043 4043 4043 4025 4044 4026 43 14 0 2 2 3 2 2 3 3 2 -4025 4043 4043 4043 4043 4025 4044 4026 43 14 1 3 3 0 0 0 0 0 0 -4025 4043 4043 4043 4044 4026 4044 4026 43 15 0 2 3 3 2 2 3 3 2 -4026 4026 4025 4025 4026 4008 4026 4008 53 15 0 2 3 3 2 2 3 3 2 -4026 4026 4025 4025 4026 4008 4027 4009 53 16 0 2 3 3 2 2 3 3 2 -4026 4026 4025 4025 4026 4026 4026 4026 50 15 0 2 3 3 2 2 3 3 2 -4026 4026 4025 4025 4026 4026 4027 4027 50 16 0 2 3 3 2 2 3 3 2 -4026 4026 4025 4043 4026 4026 4026 4026 49 15 0 2 3 3 2 2 3 3 2 -4026 4026 4025 4043 4026 4026 4027 4027 49 16 0 2 3 3 2 2 3 3 2 -4026 4026 4026 4026 4026 4008 4027 4009 53 16 0 2 3 3 2 2 3 3 2 -4026 4026 4026 4026 4026 4026 4027 4027 50 16 0 2 3 3 2 2 3 3 2 -4026 4026 4026 4026 4027 4009 4027 4009 53 17 0 2 3 3 2 2 3 3 2 -4026 4026 4026 4026 4027 4027 4027 4027 50 17 0 2 3 3 2 2 3 3 2 -4026 4026 4026 4044 4026 4026 4027 4027 49 16 0 2 3 3 2 2 3 3 2 -4026 4026 4026 4044 4027 4027 4027 4027 49 17 0 2 3 3 2 2 3 3 2 -4026 4026 4043 4043 4026 4026 4026 4026 47 15 0 2 3 3 2 2 3 3 2 -4026 4026 4043 4043 4026 4026 4027 4027 47 16 0 2 3 3 2 2 3 3 2 -4026 4026 4043 4043 4044 4026 4044 4026 45 15 0 2 3 3 2 2 3 3 2 -4026 4026 4043 4043 4044 4026 4045 4027 45 16 0 2 3 3 2 2 3 3 2 -4026 4026 4044 4044 4026 4026 4027 4027 47 16 0 2 3 3 2 2 3 3 2 -4026 4026 4044 4044 4027 4027 4027 4027 47 17 0 2 3 3 2 2 3 3 2 -4026 4026 4044 4044 4044 4026 4045 4027 45 16 0 2 3 3 2 2 3 3 2 -4026 4026 4044 4044 4045 4027 4045 4027 45 17 0 2 3 3 2 2 3 3 2 -4026 4044 4043 4043 4044 4026 4044 4026 43 15 0 2 3 3 2 2 3 3 2 -4026 4044 4043 4043 4044 4026 4045 4027 43 16 0 2 3 3 2 2 3 3 2 -4026 4044 4044 4044 4044 4026 4045 4027 43 16 0 2 3 3 2 2 3 3 2 -4026 4044 4044 4044 4045 4027 4045 4027 43 17 0 2 3 3 2 2 3 3 2 -4027 4027 4026 4026 4027 4009 4027 4009 53 17 0 2 3 3 2 2 3 3 2 -4027 4027 4026 4026 4027 4009 4028 4010 53 18 0 2 3 3 2 2 3 3 2 -4027 4027 4026 4026 4027 4027 4027 4027 50 17 0 2 3 3 2 2 3 3 2 -4027 4027 4026 4026 4027 4027 4028 4028 50 18 0 2 3 3 2 2 3 3 2 -4027 4027 4026 4044 4027 4027 4027 4027 49 17 0 2 3 3 2 2 3 3 2 -4027 4027 4026 4044 4027 4027 4028 4028 49 18 0 2 3 3 2 2 3 3 2 -4027 4027 4027 4027 4027 4009 4028 4010 53 18 0 2 3 3 2 2 3 3 2 -4027 4027 4027 4027 4027 4027 4028 4028 50 18 0 2 3 3 2 2 3 3 2 -4027 4027 4027 4027 4028 4010 4028 4010 53 19 0 2 3 3 2 2 3 3 2 -4027 4027 4027 4027 4028 4028 4028 4028 50 19 0 2 3 3 2 2 3 3 2 -4027 4027 4027 4045 4027 4027 4028 4028 49 18 0 2 3 3 2 2 3 3 2 -4027 4027 4027 4045 4028 4028 4028 4028 49 19 0 2 3 3 2 2 3 3 2 -4027 4027 4044 4044 4027 4027 4027 4027 47 17 0 2 3 3 2 2 3 3 2 -4027 4027 4044 4044 4027 4027 4028 4028 47 18 0 2 3 3 2 2 3 3 2 -4027 4027 4044 4044 4045 4027 4045 4027 45 17 0 2 3 3 2 2 3 3 2 -4027 4027 4044 4044 4045 4027 4046 4028 45 18 0 2 3 3 2 2 3 3 2 -4027 4027 4045 4045 4027 4027 4028 4028 47 18 0 2 3 3 2 2 3 3 2 -4027 4027 4045 4045 4028 4028 4028 4028 47 19 0 2 3 3 2 2 3 3 2 -4027 4027 4045 4045 4045 4027 4046 4028 44 18 0 2 3 3 2 2 3 3 2 -4027 4027 4045 4045 4046 4028 4046 4028 44 19 0 2 3 3 2 2 3 3 2 -4027 4045 4044 4044 4045 4027 4045 4027 43 17 0 2 3 3 2 2 3 3 2 -4027 4045 4044 4044 4045 4027 4046 4028 43 18 0 2 3 3 2 2 3 3 2 -4027 4045 4045 4045 4045 4027 4046 4028 43 18 0 2 3 3 2 2 3 3 2 -4027 4045 4045 4045 4046 4028 4046 4028 43 19 0 2 3 3 2 2 3 3 2 -4028 4028 4027 4027 4028 4010 4028 4010 53 19 0 2 3 3 2 2 3 3 2 -4028 4028 4027 4027 4028 4010 4029 4011 53 20 0 2 3 3 2 2 3 3 2 -4028 4028 4027 4027 4028 4028 4028 4028 50 19 0 2 3 3 2 2 3 3 2 -4028 4028 4027 4027 4028 4028 4029 4029 50 20 0 2 3 3 2 2 3 3 2 -4028 4028 4027 4045 4028 4028 4028 4028 49 19 0 2 3 3 2 2 3 3 2 -4028 4028 4027 4045 4028 4028 4029 4029 49 20 0 2 3 3 2 2 3 3 2 -4028 4028 4028 4028 4028 4010 4029 4011 53 20 0 2 3 3 2 2 3 3 2 -4028 4028 4028 4028 4028 4028 4029 4029 50 20 0 2 3 3 2 2 3 3 2 -4028 4028 4028 4028 4029 4011 4029 4011 53 21 0 2 3 3 2 2 3 3 2 -4028 4028 4028 4028 4029 4029 4029 4029 50 21 0 2 3 3 2 2 3 3 2 -4028 4028 4028 4046 4028 4028 4029 4029 49 20 0 2 3 3 2 2 3 3 2 -4028 4028 4028 4046 4029 4029 4029 4029 49 21 0 2 3 3 2 2 3 3 2 -4028 4028 4045 4045 4028 4028 4028 4028 47 19 0 2 3 3 2 2 3 3 2 -4028 4028 4045 4045 4028 4028 4029 4029 47 20 0 2 3 3 2 2 3 3 2 -4028 4028 4045 4045 4046 4028 4046 4028 44 19 0 2 3 3 2 2 3 3 2 -4028 4028 4045 4045 4046 4028 4047 4029 44 20 0 2 3 3 2 2 3 3 2 -4028 4028 4046 4046 4028 4028 4029 4029 47 20 0 2 3 3 2 2 3 3 2 -4028 4028 4046 4046 4029 4029 4029 4029 47 21 0 2 3 3 2 2 3 3 2 -4028 4028 4046 4046 4046 4028 4047 4029 44 20 0 2 3 3 2 2 3 3 2 -4028 4028 4046 4046 4047 4029 4047 4029 44 21 0 2 3 3 2 2 3 3 2 -4028 4046 4045 4045 4046 4028 4046 4028 43 19 0 2 3 3 2 2 3 3 2 -4028 4046 4045 4045 4046 4028 4047 4029 43 20 0 2 3 3 2 2 3 3 2 -4028 4046 4046 4046 4046 4028 4047 4029 43 20 0 2 3 3 2 2 3 3 2 -4028 4046 4046 4046 4047 4029 4047 4029 43 21 0 2 3 3 2 2 3 3 2 -4029 4029 4028 4028 4029 4011 4029 4011 53 21 0 2 3 3 2 2 3 3 2 -4029 4029 4028 4028 4029 4011 4030 4012 53 22 0 2 3 3 2 1 3 3 1 -4029 4029 4028 4028 4029 4011 4030 4012 53 22 1 0 0 0 0 2 4 4 2 -4029 4029 4028 4028 4029 4029 4029 4029 50 21 0 2 3 3 2 2 3 3 2 -4029 4029 4028 4028 4029 4029 4030 4030 50 22 0 2 3 3 2 1 3 3 1 -4029 4029 4028 4028 4029 4029 4030 4030 50 22 1 0 0 0 0 2 4 4 2 -4029 4029 4028 4046 4029 4029 4029 4029 49 21 0 2 3 3 2 2 3 3 2 -4029 4029 4028 4046 4029 4029 4030 4030 49 22 0 2 3 3 2 1 3 3 1 -4029 4029 4028 4046 4029 4029 4030 4030 49 22 1 0 0 0 0 2 4 4 2 -4029 4029 4029 4029 4029 4011 4030 4012 53 22 0 2 3 3 2 1 3 3 1 -4029 4029 4029 4029 4029 4011 4030 4012 53 22 1 0 0 0 0 2 4 4 2 -4029 4029 4029 4029 4029 4029 4030 4030 50 22 0 2 3 3 2 1 3 3 1 -4029 4029 4029 4029 4029 4029 4030 4030 50 22 1 0 0 0 0 2 4 4 2 -4029 4029 4029 4029 4030 4012 4030 4012 53 23 0 2 3 3 2 1 4 4 1 -4029 4029 4029 4029 4030 4030 4030 4030 50 23 0 2 3 3 2 1 4 4 1 -4029 4029 4029 4047 4029 4029 4030 4030 49 22 0 2 3 3 2 1 3 3 1 -4029 4029 4029 4047 4029 4029 4030 4030 49 22 1 0 0 0 0 2 4 4 2 -4029 4029 4029 4047 4030 4030 4030 4030 49 23 0 2 3 3 2 1 4 4 1 -4029 4029 4046 4046 4029 4029 4029 4029 47 21 0 2 3 3 2 2 3 3 2 -4029 4029 4046 4046 4029 4029 4030 4030 47 22 0 2 3 3 2 1 3 3 1 -4029 4029 4046 4046 4029 4029 4030 4030 47 22 1 0 0 0 0 2 4 4 2 -4029 4029 4046 4046 4047 4029 4047 4029 44 21 0 2 3 3 2 2 3 3 2 -4029 4029 4046 4046 4047 4029 4048 4030 44 22 0 2 3 3 2 1 3 3 1 -4029 4029 4046 4046 4047 4029 4048 4030 44 22 1 0 0 0 0 2 4 4 2 -4029 4029 4047 4047 4029 4029 4030 4030 47 22 0 2 3 3 2 1 3 3 1 -4029 4029 4047 4047 4029 4029 4030 4030 47 22 1 0 0 0 0 2 4 4 2 -4029 4029 4047 4047 4030 4030 4030 4030 47 23 0 2 3 3 2 1 4 4 1 -4029 4029 4047 4047 4047 4029 4048 4030 44 22 0 2 3 3 2 1 3 3 1 -4029 4029 4047 4047 4047 4029 4048 4030 44 22 1 0 0 0 0 2 4 4 2 -4029 4029 4047 4047 4048 4030 4048 4030 44 23 0 2 3 3 2 1 4 4 1 -4029 4047 4046 4046 4047 4029 4047 4029 43 21 0 2 3 3 2 2 3 3 2 -4029 4047 4046 4046 4047 4029 4048 4030 43 22 0 2 3 3 2 1 3 3 1 -4029 4047 4046 4046 4047 4029 4048 4030 43 22 1 0 0 0 0 2 4 4 2 -4029 4047 4047 4047 4047 4029 4048 4030 43 22 0 2 3 3 2 1 3 3 1 -4029 4047 4047 4047 4047 4029 4048 4030 43 22 1 0 0 0 0 2 4 4 2 -4029 4047 4047 4047 4048 4030 4048 4030 43 23 0 2 3 3 2 1 4 4 1 -4030 4030 4029 4029 4030 4012 4030 4012 53 23 0 2 3 3 2 1 4 4 1 -4030 4030 4029 4029 4030 4012 4031 4013 53 24 0 1 3 3 1 1 4 4 1 -4030 4030 4029 4029 4030 4012 4031 4013 53 24 1 2 4 4 2 0 0 0 0 -4030 4030 4029 4029 4030 4030 4030 4030 50 23 0 2 3 3 2 1 4 4 1 -4030 4030 4029 4029 4030 4030 4031 4031 50 24 0 1 3 3 1 1 4 4 1 -4030 4030 4029 4029 4030 4030 4031 4031 50 24 1 2 4 4 2 0 0 0 0 -4030 4030 4029 4047 4030 4030 4030 4030 49 23 0 2 3 3 2 1 4 4 1 -4030 4030 4029 4047 4030 4030 4031 4031 49 24 0 1 3 3 1 1 4 4 1 -4030 4030 4029 4047 4030 4030 4031 4031 49 24 1 2 4 4 2 0 0 0 0 -4030 4030 4030 4030 4030 4012 4031 4013 53 24 0 1 3 3 1 1 4 4 1 -4030 4030 4030 4030 4030 4012 4031 4013 53 24 1 2 4 4 2 0 0 0 0 -4030 4030 4030 4030 4030 4030 4031 4031 50 24 0 1 3 3 1 1 4 4 1 -4030 4030 4030 4030 4030 4030 4031 4031 50 24 1 2 4 4 2 0 0 0 0 -4030 4030 4030 4030 4031 4013 4031 4013 53 25 0 1 4 4 1 1 4 4 1 -4030 4030 4030 4030 4031 4031 4031 4031 50 25 0 1 4 4 1 1 4 4 1 -4030 4030 4030 4048 4030 4030 4031 4031 49 24 0 1 3 3 1 1 4 4 1 -4030 4030 4030 4048 4030 4030 4031 4031 49 24 1 2 4 4 2 0 0 0 0 -4030 4030 4030 4048 4031 4031 4031 4031 49 25 0 1 4 4 1 1 4 4 1 -4030 4030 4047 4047 4030 4030 4030 4030 47 23 0 2 3 3 2 1 4 4 1 -4030 4030 4047 4047 4030 4030 4031 4031 47 24 0 1 3 3 1 1 4 4 1 -4030 4030 4047 4047 4030 4030 4031 4031 47 24 1 2 4 4 2 0 0 0 0 -4030 4030 4047 4047 4048 4030 4048 4030 44 23 0 2 3 3 2 1 4 4 1 -4030 4030 4047 4047 4048 4030 4049 4031 44 24 0 1 3 3 1 1 4 4 1 -4030 4030 4047 4047 4048 4030 4049 4031 44 24 1 2 4 4 2 0 0 0 0 -4030 4030 4048 4048 4030 4030 4031 4031 47 24 0 1 3 3 1 1 4 4 1 -4030 4030 4048 4048 4030 4030 4031 4031 47 24 1 2 4 4 2 0 0 0 0 -4030 4030 4048 4048 4031 4031 4031 4031 47 25 0 1 4 4 1 1 4 4 1 -4030 4030 4048 4048 4048 4030 4049 4031 44 24 0 1 3 3 1 1 4 4 1 -4030 4030 4048 4048 4048 4030 4049 4031 44 24 1 2 4 4 2 0 0 0 0 -4030 4030 4048 4048 4049 4031 4049 4031 44 25 0 1 4 4 1 1 4 4 1 -4030 4048 4047 4047 4048 4030 4048 4030 43 23 0 2 3 3 2 1 4 4 1 -4030 4048 4047 4047 4048 4030 4049 4031 43 24 0 1 3 3 1 1 4 4 1 -4030 4048 4047 4047 4048 4030 4049 4031 43 24 1 2 4 4 2 0 0 0 0 -4030 4048 4048 4048 4048 4030 4049 4031 43 24 0 1 3 3 1 1 4 4 1 -4030 4048 4048 4048 4048 4030 4049 4031 43 24 1 2 4 4 2 0 0 0 0 -4030 4048 4048 4048 4049 4031 4049 4031 43 25 0 1 4 4 1 1 4 4 1 -4031 4031 4030 4030 4031 4013 4031 4013 53 25 0 1 4 4 1 1 4 4 1 -4031 4031 4030 4030 4031 4013 4032 4014 53 26 0 1 4 4 1 1 4 4 1 -4031 4031 4030 4030 4031 4031 4031 4031 50 25 0 1 4 4 1 1 4 4 1 -4031 4031 4030 4030 4031 4031 4032 4032 50 26 0 1 4 4 1 1 4 4 1 -4031 4031 4030 4048 4031 4031 4031 4031 49 25 0 1 4 4 1 1 4 4 1 -4031 4031 4030 4048 4031 4031 4032 4032 49 26 0 1 4 4 1 1 4 4 1 -4031 4031 4031 4031 4031 4013 4032 4014 53 26 0 1 4 4 1 1 4 4 1 -4031 4031 4031 4031 4031 4031 4032 4032 50 26 0 1 4 4 1 1 4 4 1 -4031 4031 4031 4031 4032 4014 4032 4014 53 27 0 1 4 4 1 1 4 4 1 -4031 4031 4031 4031 4032 4032 4032 4032 50 27 0 1 4 4 1 1 4 4 1 -4031 4031 4031 4049 4031 4031 4032 4032 49 26 0 1 4 4 1 1 4 4 1 -4031 4031 4031 4049 4032 4032 4032 4032 49 27 0 1 4 4 1 1 4 4 1 -4031 4031 4048 4048 4031 4031 4031 4031 47 25 0 1 4 4 1 1 4 4 1 -4031 4031 4048 4048 4031 4031 4032 4032 47 26 0 1 4 4 1 1 4 4 1 -4031 4031 4048 4048 4049 4031 4049 4031 44 25 0 1 4 4 1 1 4 4 1 -4031 4031 4048 4048 4049 4031 4050 4032 44 26 0 1 4 4 1 1 4 4 1 -4031 4031 4049 4049 4031 4031 4032 4032 47 26 0 1 4 4 1 1 4 4 1 -4031 4031 4049 4049 4032 4032 4032 4032 47 27 0 1 4 4 1 1 4 4 1 -4031 4031 4049 4049 4049 4031 4050 4032 44 26 0 1 4 4 1 1 4 4 1 -4031 4031 4049 4049 4050 4032 4050 4032 44 27 0 1 4 4 1 1 4 4 1 -4031 4049 4048 4048 4049 4031 4049 4031 43 25 0 1 4 4 1 1 4 4 1 -4031 4049 4048 4048 4049 4031 4050 4032 43 26 0 1 4 4 1 1 4 4 1 -4031 4049 4049 4049 4049 4031 4050 4032 43 26 0 1 4 4 1 1 4 4 1 -4031 4049 4049 4049 4050 4032 4050 4032 43 27 0 1 4 4 1 1 4 4 1 -4032 4032 4031 4031 4032 4014 4032 4014 53 27 0 1 4 4 1 1 4 4 1 -4032 4032 4031 4031 4032 4014 4033 4015 53 28 0 1 4 4 1 1 4 4 1 -4032 4032 4031 4031 4032 4032 4032 4032 50 27 0 1 4 4 1 1 4 4 1 -4032 4032 4031 4031 4032 4032 4033 4033 50 28 0 1 4 4 1 1 4 4 1 -4032 4032 4031 4049 4032 4032 4032 4032 49 27 0 1 4 4 1 1 4 4 1 -4032 4032 4031 4049 4032 4032 4033 4033 49 28 0 1 4 4 1 1 4 4 1 -4032 4032 4032 4032 4032 4014 4033 4015 53 28 0 1 4 4 1 1 4 4 1 -4032 4032 4032 4032 4032 4032 4033 4033 50 28 0 1 4 4 1 1 4 4 1 -4032 4032 4032 4032 4033 4015 4033 4015 53 29 0 1 4 4 1 1 4 4 1 -4032 4032 4032 4032 4033 4033 4033 4033 50 29 0 1 4 4 1 1 4 4 1 -4032 4032 4032 4050 4032 4032 4033 4033 49 28 0 1 4 4 1 1 4 4 1 -4032 4032 4032 4050 4033 4033 4033 4033 49 29 0 1 4 4 1 1 4 4 1 -4032 4032 4049 4049 4032 4032 4032 4032 47 27 0 1 4 4 1 1 4 4 1 -4032 4032 4049 4049 4032 4032 4033 4033 47 28 0 1 4 4 1 1 4 4 1 -4032 4032 4049 4049 4050 4032 4050 4032 44 27 0 1 4 4 1 1 4 4 1 -4032 4032 4049 4049 4050 4032 4051 4033 44 28 0 1 4 4 1 1 4 4 1 -4032 4032 4050 4050 4032 4032 4033 4033 47 28 0 1 4 4 1 1 4 4 1 -4032 4032 4050 4050 4033 4033 4033 4033 47 29 0 1 4 4 1 1 4 4 1 -4032 4032 4050 4050 4050 4032 4051 4033 44 28 0 1 4 4 1 1 4 4 1 -4032 4032 4050 4050 4051 4033 4051 4033 44 29 0 1 4 4 1 1 4 4 1 -4032 4050 4049 4049 4050 4032 4050 4032 43 27 0 1 4 4 1 1 4 4 1 -4032 4050 4049 4049 4050 4032 4051 4033 43 28 0 1 4 4 1 1 4 4 1 -4032 4050 4050 4050 4050 4032 4051 4033 43 28 0 1 4 4 1 1 4 4 1 -4032 4050 4050 4050 4051 4033 4051 4033 43 29 0 1 4 4 1 1 4 4 1 -4033 4033 4032 4032 4033 4015 4033 4015 53 29 0 1 4 4 1 1 4 4 1 -4033 4033 4032 4032 4033 4015 4034 4016 53 30 0 1 4 4 1 1 4 4 1 -4033 4033 4032 4032 4033 4033 4033 4033 50 29 0 1 4 4 1 1 4 4 1 -4033 4033 4032 4032 4033 4033 4034 4034 50 30 0 1 4 4 1 1 4 4 1 -4033 4033 4032 4050 4033 4033 4033 4033 49 29 0 1 4 4 1 1 4 4 1 -4033 4033 4032 4050 4033 4033 4034 4034 49 30 0 1 4 4 1 1 4 4 1 -4033 4033 4033 4033 4033 4015 4034 4016 53 30 0 1 4 4 1 1 4 4 1 -4033 4033 4033 4033 4033 4033 4034 4034 50 30 0 1 4 4 1 1 4 4 1 -4033 4033 4033 4033 4034 4016 4034 4016 53 31 0 1 4 4 1 1 4 4 1 -4033 4033 4033 4033 4034 4034 4034 4034 50 31 0 1 4 4 1 1 4 4 1 -4033 4033 4033 4051 4033 4033 4034 4034 49 30 0 1 4 4 1 1 4 4 1 -4033 4033 4033 4051 4034 4034 4034 4034 49 31 0 1 4 4 1 1 4 4 1 -4033 4033 4050 4050 4033 4033 4033 4033 47 29 0 1 4 4 1 1 4 4 1 -4033 4033 4050 4050 4033 4033 4034 4034 47 30 0 1 4 4 1 1 4 4 1 -4033 4033 4050 4050 4051 4033 4051 4033 44 29 0 1 4 4 1 1 4 4 1 -4033 4033 4050 4050 4051 4033 4052 4034 44 30 0 1 4 4 1 1 4 4 1 -4033 4033 4051 4051 4033 4033 4034 4034 47 30 0 1 4 4 1 1 4 4 1 -4033 4033 4051 4051 4034 4034 4034 4034 47 31 0 1 4 4 1 1 4 4 1 -4033 4033 4051 4051 4051 4033 4052 4034 44 30 0 1 4 4 1 1 4 4 1 -4033 4033 4051 4051 4052 4034 4052 4034 44 31 0 1 4 4 1 1 4 4 1 -4033 4051 4050 4050 4051 4033 4051 4033 43 29 0 1 4 4 1 1 4 4 1 -4033 4051 4050 4050 4051 4033 4052 4034 43 30 0 1 4 4 1 1 4 4 1 -4033 4051 4051 4051 4051 4033 4052 4034 43 30 0 1 4 4 1 1 4 4 1 -4033 4051 4051 4051 4052 4034 4052 4034 43 31 0 1 4 4 1 1 4 4 1 -4034 4034 4033 4033 4034 4016 4034 4016 53 31 0 1 4 4 1 1 4 4 1 -4034 4034 4033 4033 4034 4034 4034 4034 50 31 0 1 4 4 1 1 4 4 1 -4034 4034 4033 4051 4034 4034 4034 4034 49 31 0 1 4 4 1 1 4 4 1 -4034 4034 4034 4034 5001 5001 5001 5001 54 33 0 1 4 4 1 8 6 6 8 -4034 4034 4034 4034 5019 5001 5019 5001 51 33 0 1 4 4 1 8 6 6 8 -4034 4034 4034 4052 5019 5001 5019 5001 49 33 0 1 4 4 1 8 6 6 8 -4034 4034 4051 4051 4034 4034 4034 4034 47 31 0 1 4 4 1 1 4 4 1 -4034 4034 4051 4051 4052 4034 4052 4034 44 31 0 1 4 4 1 1 4 4 1 -4034 4034 4052 4052 5019 5001 5019 5001 46 33 0 1 4 4 1 8 6 6 8 -4034 4034 4052 4052 5019 5019 5019 5019 44 33 0 1 4 4 1 8 6 6 8 -4034 4052 4051 4051 4052 4034 4052 4034 43 31 0 1 4 4 1 1 4 4 1 -4034 4052 4052 4052 5019 5019 5019 5019 43 33 0 1 4 4 1 8 6 6 8 -4035 4035 4034 4034 5001 5001 5001 5001 54 34 0 1 4 4 1 8 6 6 8 -4035 4035 4034 4034 5019 5001 5019 5001 51 34 0 1 4 4 1 8 6 6 8 -4035 4035 4034 4052 5019 5001 5019 5001 49 34 0 1 4 4 1 8 6 6 8 -4035 4035 4052 4052 5019 5001 5019 5001 46 34 0 1 4 4 1 8 6 6 8 -4035 4035 4052 4052 5019 5019 5019 5019 44 34 0 1 4 4 1 8 6 6 8 -4035 4053 4052 4052 5019 5019 5019 5019 43 34 0 1 4 4 1 8 6 6 8 -4037 4037 4037 4037 4037 4019 4038 4020 41 2 0 0 0 0 0 0 0 0 0 -4037 4037 4037 4037 4037 4037 4038 4038 39 2 0 0 0 0 0 0 0 0 0 -4037 4037 4037 4037 4038 4020 4038 4020 41 3 0 0 0 0 0 0 0 0 0 -4037 4037 4037 4037 4038 4038 4038 4038 39 3 0 0 0 0 0 0 0 0 0 -4037 4037 4037 4055 4037 4037 4038 4038 37 2 0 0 0 0 0 0 0 0 0 -4037 4037 4037 4055 4038 4038 4038 4038 37 3 0 0 0 0 0 0 0 0 0 -4037 4037 4055 4055 4037 4037 4038 4038 36 2 0 0 0 0 0 0 0 0 0 -4037 4037 4055 4055 4038 4038 4038 4038 36 3 0 0 0 0 0 0 0 0 0 -4037 4037 4055 4055 4055 4037 4056 4038 33 2 0 0 0 0 0 0 0 0 0 -4037 4037 4055 4055 4056 4038 4056 4038 33 3 0 0 0 0 0 0 0 0 0 -4037 4055 4055 4055 4055 4037 4056 4038 31 2 0 0 0 0 0 0 0 0 0 -4037 4055 4055 4055 4056 4038 4056 4038 31 3 0 0 0 0 0 0 0 0 0 -4038 4038 4037 4037 4038 4020 4038 4020 41 3 0 0 0 0 0 0 0 0 0 -4038 4038 4037 4037 4038 4020 4039 4021 41 4 0 0 0 0 0 0 0 0 0 -4038 4038 4037 4037 4038 4038 4038 4038 39 3 0 0 0 0 0 0 0 0 0 -4038 4038 4037 4037 4038 4038 4039 4039 39 4 0 0 0 0 0 0 0 0 0 -4038 4038 4037 4055 4038 4038 4038 4038 37 3 0 0 0 0 0 0 0 0 0 -4038 4038 4037 4055 4038 4038 4039 4039 37 4 0 0 0 0 0 0 0 0 0 -4038 4038 4038 4038 4038 4020 4039 4021 41 4 0 0 0 0 0 0 0 0 0 -4038 4038 4038 4038 4038 4038 4039 4039 39 4 0 0 0 0 0 0 0 0 0 -4038 4038 4038 4038 4039 4021 4039 4021 41 5 0 0 0 0 0 0 0 0 0 -4038 4038 4038 4038 4039 4039 4039 4039 39 5 0 0 0 0 0 0 0 0 0 -4038 4038 4038 4056 4038 4038 4039 4039 37 4 0 0 0 0 0 0 0 0 0 -4038 4038 4038 4056 4039 4039 4039 4039 37 5 0 0 0 0 0 0 0 0 0 -4038 4038 4055 4055 4038 4038 4038 4038 36 3 0 0 0 0 0 0 0 0 0 -4038 4038 4055 4055 4038 4038 4039 4039 36 4 0 0 0 0 0 0 0 0 0 -4038 4038 4055 4055 4056 4038 4056 4038 33 3 0 0 0 0 0 0 0 0 0 -4038 4038 4055 4055 4056 4038 4057 4039 33 4 0 0 0 0 0 0 0 0 0 -4038 4038 4056 4056 4038 4038 4039 4039 36 4 0 0 0 0 0 0 0 0 0 -4038 4038 4056 4056 4039 4039 4039 4039 36 5 0 0 0 0 0 0 0 0 0 -4038 4038 4056 4056 4056 4038 4057 4039 33 4 0 0 0 0 0 0 0 0 0 -4038 4038 4056 4056 4057 4039 4057 4039 33 5 0 0 0 0 0 0 0 0 0 -4038 4056 4055 4055 4056 4038 4056 4038 31 3 0 0 0 0 0 0 0 0 0 -4038 4056 4055 4055 4056 4038 4057 4039 31 4 0 0 0 0 0 0 0 0 0 -4038 4056 4056 4056 4056 4038 4057 4039 31 4 0 0 0 0 0 0 0 0 0 -4038 4056 4056 4056 4057 4039 4057 4039 31 5 0 0 0 0 0 0 0 0 0 -4039 4039 4038 4038 4039 4021 4039 4021 41 5 0 0 0 0 0 0 0 0 0 -4039 4039 4038 4038 4039 4021 4040 4022 41 6 0 0 0 0 0 3 2 2 3 -4039 4039 4038 4038 4039 4039 4039 4039 39 5 0 0 0 0 0 0 0 0 0 -4039 4039 4038 4038 4039 4039 4040 4040 39 6 0 0 0 0 0 3 2 2 3 -4039 4039 4038 4056 4039 4039 4039 4039 37 5 0 0 0 0 0 0 0 0 0 -4039 4039 4038 4056 4039 4039 4040 4040 37 6 0 0 0 0 0 3 2 2 3 -4039 4039 4039 4039 4039 4021 4040 4022 41 6 0 0 0 0 0 3 2 2 3 -4039 4039 4039 4039 4039 4039 4040 4040 39 6 0 0 0 0 0 3 2 2 3 -4039 4039 4039 4039 4040 4022 4040 4022 41 7 0 3 2 2 3 3 2 2 3 -4039 4039 4039 4039 4040 4040 4040 4040 39 7 0 3 2 2 3 3 2 2 3 -4039 4039 4039 4057 4039 4039 4040 4040 37 6 0 0 0 0 0 3 2 2 3 -4039 4039 4039 4057 4040 4040 4040 4040 37 7 0 3 2 2 3 3 2 2 3 -4039 4039 4056 4056 4039 4039 4039 4039 36 5 0 0 0 0 0 0 0 0 0 -4039 4039 4056 4056 4039 4039 4040 4040 36 6 0 0 0 0 0 3 2 2 3 -4039 4039 4056 4056 4057 4039 4057 4039 33 5 0 0 0 0 0 0 0 0 0 -4039 4039 4056 4056 4057 4039 4058 4040 33 6 0 0 0 0 0 3 2 2 3 -4039 4039 4057 4057 4039 4039 4040 4040 36 6 0 0 0 0 0 3 2 2 3 -4039 4039 4057 4057 4040 4040 4040 4040 36 7 0 3 2 2 3 3 2 2 3 -4039 4039 4057 4057 4057 4039 4058 4040 33 6 0 0 0 0 0 3 2 2 3 -4039 4039 4057 4057 4058 4040 4058 4040 33 7 0 3 2 2 3 3 2 2 3 -4039 4057 4056 4056 4057 4039 4057 4039 31 5 0 0 0 0 0 0 0 0 0 -4039 4057 4056 4056 4057 4039 4058 4040 31 6 0 0 0 0 0 3 2 2 3 -4039 4057 4057 4057 4057 4039 4058 4040 31 6 0 0 0 0 0 3 2 2 3 -4039 4057 4057 4057 4058 4040 4058 4040 31 7 0 3 2 2 3 3 2 2 3 -4040 4040 4039 4039 4040 4022 4040 4022 41 7 0 3 2 2 3 3 2 2 3 -4040 4040 4039 4039 4040 4022 4041 4023 41 8 0 3 2 2 3 3 2 2 3 -4040 4040 4039 4039 4040 4040 4040 4040 39 7 0 3 2 2 3 3 2 2 3 -4040 4040 4039 4039 4040 4040 4041 4041 39 8 0 3 2 2 3 3 2 2 3 -4040 4040 4039 4057 4040 4040 4040 4040 37 7 0 3 2 2 3 3 2 2 3 -4040 4040 4039 4057 4040 4040 4041 4041 37 8 0 3 2 2 3 3 2 2 3 -4040 4040 4040 4040 4040 4022 4041 4023 41 8 0 3 2 2 3 3 2 2 3 -4040 4040 4040 4040 4040 4040 4041 4041 39 8 0 3 2 2 3 3 2 2 3 -4040 4040 4040 4040 4041 4023 4041 4023 41 9 0 3 2 2 3 3 2 2 3 -4040 4040 4040 4040 4041 4041 4041 4041 39 9 0 3 2 2 3 3 2 2 3 -4040 4040 4040 4058 4040 4040 4041 4041 37 8 0 3 2 2 3 3 2 2 3 -4040 4040 4040 4058 4041 4041 4041 4041 37 9 0 3 2 2 3 3 2 2 3 -4040 4040 4057 4057 4040 4040 4040 4040 36 7 0 3 2 2 3 3 2 2 3 -4040 4040 4057 4057 4040 4040 4041 4041 36 8 0 3 2 2 3 3 2 2 3 -4040 4040 4057 4057 4058 4040 4058 4040 33 7 0 3 2 2 3 3 2 2 3 -4040 4040 4057 4057 4058 4040 4059 4041 33 8 0 3 2 2 3 3 2 2 3 -4040 4040 4058 4058 4040 4040 4041 4041 36 8 0 3 2 2 3 3 2 2 3 -4040 4040 4058 4058 4041 4041 4041 4041 36 9 0 3 2 2 3 3 2 2 3 -4040 4040 4058 4058 4058 4040 4059 4041 33 8 0 3 2 2 3 3 2 2 3 -4040 4040 4058 4058 4059 4041 4059 4041 33 9 0 3 2 2 3 3 2 2 3 -4040 4058 4057 4057 4058 4040 4058 4040 31 7 0 3 2 2 3 3 2 2 3 -4040 4058 4057 4057 4058 4040 4059 4041 31 8 0 3 2 2 3 3 2 2 3 -4040 4058 4058 4058 4058 4040 4059 4041 31 8 0 3 2 2 3 3 2 2 3 -4040 4058 4058 4058 4059 4041 4059 4041 31 9 0 3 2 2 3 3 2 2 3 -4041 4041 4040 4040 4041 4023 4041 4023 41 9 0 3 2 2 3 3 2 2 3 -4041 4041 4040 4040 4041 4023 4042 4024 41 10 0 3 2 2 3 3 2 2 3 -4041 4041 4040 4040 4041 4041 4041 4041 39 9 0 3 2 2 3 3 2 2 3 -4041 4041 4040 4040 4041 4041 4042 4042 39 10 0 3 2 2 3 3 2 2 3 -4041 4041 4040 4058 4041 4041 4041 4041 37 9 0 3 2 2 3 3 2 2 3 -4041 4041 4040 4058 4041 4041 4042 4042 37 10 0 3 2 2 3 3 2 2 3 -4041 4041 4041 4041 4041 4023 4042 4024 41 10 0 3 2 2 3 3 2 2 3 -4041 4041 4041 4041 4041 4041 4042 4042 39 10 0 3 2 2 3 3 2 2 3 -4041 4041 4041 4041 4042 4024 4042 4024 41 11 0 3 2 2 3 3 2 2 3 -4041 4041 4041 4041 4042 4042 4042 4042 39 11 0 3 2 2 3 3 2 2 3 -4041 4041 4041 4059 4041 4041 4042 4042 37 10 0 3 2 2 3 3 2 2 3 -4041 4041 4041 4059 4042 4042 4042 4042 37 11 0 3 2 2 3 3 2 2 3 -4041 4041 4058 4058 4041 4041 4041 4041 36 9 0 3 2 2 3 3 2 2 3 -4041 4041 4058 4058 4041 4041 4042 4042 36 10 0 3 2 2 3 3 2 2 3 -4041 4041 4058 4058 4059 4041 4059 4041 33 9 0 3 2 2 3 3 2 2 3 -4041 4041 4058 4058 4059 4041 4060 4042 33 10 0 3 2 2 3 3 2 2 3 -4041 4041 4059 4059 4041 4041 4042 4042 36 10 0 3 2 2 3 3 2 2 3 -4041 4041 4059 4059 4042 4042 4042 4042 36 11 0 3 2 2 3 3 2 2 3 -4041 4041 4059 4059 4059 4041 4060 4042 33 10 0 3 2 2 3 3 2 2 3 -4041 4041 4059 4059 4060 4042 4060 4042 33 11 0 3 2 2 3 3 2 2 3 -4041 4059 4058 4058 4059 4041 4059 4041 31 9 0 3 2 2 3 3 2 2 3 -4041 4059 4058 4058 4059 4041 4060 4042 31 10 0 3 2 2 3 3 2 2 3 -4041 4059 4059 4059 4059 4041 4060 4042 31 10 0 3 2 2 3 3 2 2 3 -4041 4059 4059 4059 4060 4042 4060 4042 31 11 0 3 2 2 3 3 2 2 3 -4042 4042 4041 4041 4042 4024 4042 4024 41 11 0 3 2 2 3 3 2 2 3 -4042 4042 4041 4041 4042 4024 4043 4025 41 12 0 3 2 2 3 2 2 2 2 -4042 4042 4041 4041 4042 4024 4043 4025 41 12 1 0 0 0 0 3 3 3 3 -4042 4042 4041 4041 4042 4042 4042 4042 39 11 0 3 2 2 3 3 2 2 3 -4042 4042 4041 4041 4042 4042 4043 4043 39 12 0 3 2 2 3 2 2 2 2 -4042 4042 4041 4041 4042 4042 4043 4043 39 12 1 0 0 0 0 3 3 3 3 -4042 4042 4041 4059 4042 4042 4042 4042 37 11 0 3 2 2 3 3 2 2 3 -4042 4042 4041 4059 4042 4042 4043 4043 37 12 0 3 2 2 3 2 2 2 2 -4042 4042 4041 4059 4042 4042 4043 4043 37 12 1 0 0 0 0 3 3 3 3 -4042 4042 4042 4042 4042 4024 4043 4025 41 12 0 3 2 2 3 2 2 2 2 -4042 4042 4042 4042 4042 4024 4043 4025 41 12 1 0 0 0 0 3 3 3 3 -4042 4042 4042 4042 4042 4042 4043 4043 39 12 0 3 2 2 3 2 2 2 2 -4042 4042 4042 4042 4042 4042 4043 4043 39 12 1 0 0 0 0 3 3 3 3 -4042 4042 4042 4042 4043 4025 4043 4025 41 13 0 3 2 2 3 2 3 3 2 -4042 4042 4042 4042 4043 4043 4043 4043 39 13 0 3 2 2 3 2 3 3 2 -4042 4042 4042 4060 4042 4042 4043 4043 37 12 0 3 2 2 3 2 2 2 2 -4042 4042 4042 4060 4042 4042 4043 4043 37 12 1 0 0 0 0 3 3 3 3 -4042 4042 4042 4060 4043 4043 4043 4043 37 13 0 3 2 2 3 2 3 3 2 -4042 4042 4059 4059 4042 4042 4042 4042 36 11 0 3 2 2 3 3 2 2 3 -4042 4042 4059 4059 4042 4042 4043 4043 36 12 0 3 2 2 3 2 2 2 2 -4042 4042 4059 4059 4042 4042 4043 4043 36 12 1 0 0 0 0 3 3 3 3 -4042 4042 4059 4059 4060 4042 4060 4042 33 11 0 3 2 2 3 3 2 2 3 -4042 4042 4059 4059 4060 4042 4061 4043 33 12 0 3 2 2 3 2 2 2 2 -4042 4042 4059 4059 4060 4042 4061 4043 33 12 1 0 0 0 0 3 3 3 3 -4042 4042 4060 4060 4042 4042 4043 4043 36 12 0 3 2 2 3 2 2 2 2 -4042 4042 4060 4060 4042 4042 4043 4043 36 12 1 0 0 0 0 3 3 3 3 -4042 4042 4060 4060 4043 4043 4043 4043 36 13 0 3 2 2 3 2 3 3 2 -4042 4042 4060 4060 4060 4042 4061 4043 33 12 0 3 2 2 3 2 2 2 2 -4042 4042 4060 4060 4060 4042 4061 4043 33 12 1 0 0 0 0 3 3 3 3 -4042 4042 4060 4060 4061 4043 4061 4043 33 13 0 3 2 2 3 2 3 3 2 -4042 4060 4059 4059 4060 4042 4060 4042 31 11 0 3 2 2 3 3 2 2 3 -4042 4060 4059 4059 4060 4042 4061 4043 31 12 0 3 2 2 3 2 2 2 2 -4042 4060 4059 4059 4060 4042 4061 4043 31 12 1 0 0 0 0 3 3 3 3 -4042 4060 4060 4060 4060 4042 4061 4043 31 12 0 3 2 2 3 2 2 2 2 -4042 4060 4060 4060 4060 4042 4061 4043 31 12 1 0 0 0 0 3 3 3 3 -4042 4060 4060 4060 4061 4043 4061 4043 31 13 0 3 2 2 3 2 3 3 2 -4043 4043 4042 4042 4043 4025 4043 4025 41 13 0 3 2 2 3 2 3 3 2 -4043 4043 4042 4042 4043 4025 4044 4026 41 14 0 2 2 3 2 2 3 3 2 -4043 4043 4042 4042 4043 4025 4044 4026 41 14 1 3 3 0 0 0 0 0 0 -4043 4043 4042 4042 4043 4043 4043 4043 39 13 0 3 2 2 3 2 3 3 2 -4043 4043 4042 4042 4043 4043 4044 4044 39 14 0 2 2 3 2 2 3 3 2 -4043 4043 4042 4042 4043 4043 4044 4044 39 14 1 3 3 0 0 0 0 0 0 -4043 4043 4042 4060 4043 4043 4043 4043 37 13 0 3 2 2 3 2 3 3 2 -4043 4043 4042 4060 4043 4043 4044 4044 37 14 0 2 2 3 2 2 3 3 2 -4043 4043 4042 4060 4043 4043 4044 4044 37 14 1 3 3 0 0 0 0 0 0 -4043 4043 4043 4043 4043 4025 4044 4026 41 14 0 2 2 3 2 2 3 3 2 -4043 4043 4043 4043 4043 4025 4044 4026 41 14 1 3 3 0 0 0 0 0 0 -4043 4043 4043 4043 4043 4043 4044 4044 39 14 0 2 2 3 2 2 3 3 2 -4043 4043 4043 4043 4043 4043 4044 4044 39 14 1 3 3 0 0 0 0 0 0 -4043 4043 4043 4043 4044 4026 4044 4026 41 15 0 2 3 3 2 2 3 3 2 -4043 4043 4043 4043 4044 4044 4044 4044 39 15 0 2 3 3 2 2 3 3 2 -4043 4043 4043 4061 4043 4043 4044 4044 37 14 0 2 2 3 2 2 3 3 2 -4043 4043 4043 4061 4043 4043 4044 4044 37 14 1 3 3 0 0 0 0 0 0 -4043 4043 4043 4061 4044 4044 4044 4044 37 15 0 2 3 3 2 2 3 3 2 -4043 4043 4060 4060 4043 4043 4043 4043 36 13 0 3 2 2 3 2 3 3 2 -4043 4043 4060 4060 4043 4043 4044 4044 36 14 0 2 2 3 2 2 3 3 2 -4043 4043 4060 4060 4043 4043 4044 4044 36 14 1 3 3 0 0 0 0 0 0 -4043 4043 4060 4060 4061 4043 4061 4043 33 13 0 3 2 2 3 2 3 3 2 -4043 4043 4060 4060 4061 4043 4062 4044 33 14 0 2 2 3 2 2 3 3 2 -4043 4043 4060 4060 4061 4043 4062 4044 33 14 1 3 3 0 0 0 0 0 0 -4043 4043 4061 4061 4043 4043 4044 4044 36 14 0 2 2 3 2 2 3 3 2 -4043 4043 4061 4061 4043 4043 4044 4044 36 14 1 3 3 0 0 0 0 0 0 -4043 4043 4061 4061 4044 4044 4044 4044 36 15 0 2 3 3 2 2 3 3 2 -4043 4043 4061 4061 4061 4043 4062 4044 33 14 0 2 2 3 2 2 3 3 2 -4043 4043 4061 4061 4061 4043 4062 4044 33 14 1 3 3 0 0 0 0 0 0 -4043 4043 4061 4061 4062 4044 4062 4044 33 15 0 2 3 3 2 2 3 3 2 -4043 4061 4060 4060 4061 4043 4061 4043 31 13 0 3 2 2 3 2 3 3 2 -4043 4061 4060 4060 4061 4043 4062 4044 31 14 0 2 2 3 2 2 3 3 2 -4043 4061 4060 4060 4061 4043 4062 4044 31 14 1 3 3 0 0 0 0 0 0 -4043 4061 4061 4061 4061 4043 4062 4044 31 14 0 2 2 3 2 2 3 3 2 -4043 4061 4061 4061 4061 4043 4062 4044 31 14 1 3 3 0 0 0 0 0 0 -4043 4061 4061 4061 4062 4044 4062 4044 31 15 0 2 3 3 2 2 3 3 2 -4044 4044 4043 4043 4044 4026 4044 4026 41 15 0 2 3 3 2 2 3 3 2 -4044 4044 4043 4043 4044 4026 4045 4027 41 16 0 2 3 3 2 2 3 3 2 -4044 4044 4043 4043 4044 4044 4044 4044 39 15 0 2 3 3 2 2 3 3 2 -4044 4044 4043 4043 4044 4044 4045 4045 39 16 0 2 3 3 2 2 3 3 2 -4044 4044 4043 4061 4044 4044 4044 4044 37 15 0 2 3 3 2 2 3 3 2 -4044 4044 4043 4061 4044 4044 4045 4045 37 16 0 2 3 3 2 2 3 3 2 -4044 4044 4044 4044 4044 4026 4045 4027 41 16 0 2 3 3 2 2 3 3 2 -4044 4044 4044 4044 4044 4044 4045 4045 39 16 0 2 3 3 2 2 3 3 2 -4044 4044 4044 4044 4045 4027 4045 4027 41 17 0 2 3 3 2 2 3 3 2 -4044 4044 4044 4044 4045 4045 4045 4045 39 17 0 2 3 3 2 2 3 3 2 -4044 4044 4044 4062 4044 4044 4045 4045 37 16 0 2 3 3 2 2 3 3 2 -4044 4044 4044 4062 4045 4045 4045 4045 37 17 0 2 3 3 2 2 3 3 2 -4044 4044 4061 4061 4044 4044 4044 4044 36 15 0 2 3 3 2 2 3 3 2 -4044 4044 4061 4061 4044 4044 4045 4045 36 16 0 2 3 3 2 2 3 3 2 -4044 4044 4061 4061 4062 4044 4062 4044 33 15 0 2 3 3 2 2 3 3 2 -4044 4044 4061 4061 4062 4044 4063 4045 33 16 0 2 3 3 2 2 3 3 2 -4044 4044 4062 4062 4044 4044 4045 4045 36 16 0 2 3 3 2 2 3 3 2 -4044 4044 4062 4062 4045 4045 4045 4045 36 17 0 2 3 3 2 2 3 3 2 -4044 4044 4062 4062 4062 4044 4063 4045 33 16 0 2 3 3 2 2 3 3 2 -4044 4044 4062 4062 4063 4045 4063 4045 33 17 0 2 3 3 2 2 3 3 2 -4044 4062 4061 4061 4062 4044 4062 4044 31 15 0 2 3 3 2 2 3 3 2 -4044 4062 4061 4061 4062 4044 4063 4045 31 16 0 2 3 3 2 2 3 3 2 -4044 4062 4062 4062 4062 4044 4063 4045 31 16 0 2 3 3 2 2 3 3 2 -4044 4062 4062 4062 4063 4045 4063 4045 31 17 0 2 3 3 2 2 3 3 2 -4045 4045 4044 4044 4045 4027 4045 4027 41 17 0 2 3 3 2 2 3 3 2 -4045 4045 4044 4044 4045 4027 4046 4028 41 18 0 2 3 3 2 2 3 3 2 -4045 4045 4044 4044 4045 4045 4045 4045 39 17 0 2 3 3 2 2 3 3 2 -4045 4045 4044 4044 4045 4045 4046 4046 39 18 0 2 3 3 2 2 3 3 2 -4045 4045 4044 4062 4045 4045 4045 4045 37 17 0 2 3 3 2 2 3 3 2 -4045 4045 4044 4062 4045 4045 4046 4046 37 18 0 2 3 3 2 2 3 3 2 -4045 4045 4045 4045 4045 4027 4046 4028 41 18 0 2 3 3 2 2 3 3 2 -4045 4045 4045 4045 4045 4045 4046 4046 39 18 0 2 3 3 2 2 3 3 2 -4045 4045 4045 4045 4046 4028 4046 4028 41 19 0 2 3 3 2 2 3 3 2 -4045 4045 4045 4045 4046 4046 4046 4046 39 19 0 2 3 3 2 2 3 3 2 -4045 4045 4045 4063 4045 4045 4046 4046 37 18 0 2 3 3 2 2 3 3 2 -4045 4045 4045 4063 4046 4046 4046 4046 37 19 0 2 3 3 2 2 3 3 2 -4045 4045 4062 4062 4045 4045 4045 4045 36 17 0 2 3 3 2 2 3 3 2 -4045 4045 4062 4062 4045 4045 4046 4046 36 18 0 2 3 3 2 2 3 3 2 -4045 4045 4062 4062 4063 4045 4063 4045 33 17 0 2 3 3 2 2 3 3 2 -4045 4045 4062 4062 4063 4045 4064 4046 33 18 0 2 3 3 2 2 3 3 2 -4045 4045 4063 4063 4045 4045 4046 4046 36 18 0 2 3 3 2 2 3 3 2 -4045 4045 4063 4063 4046 4046 4046 4046 36 19 0 2 3 3 2 2 3 3 2 -4045 4045 4063 4063 4063 4045 4064 4046 33 18 0 2 3 3 2 2 3 3 2 -4045 4045 4063 4063 4064 4046 4064 4046 33 19 0 2 3 3 2 2 3 3 2 -4045 4063 4062 4062 4063 4045 4063 4045 31 17 0 2 3 3 2 2 3 3 2 -4045 4063 4062 4062 4063 4045 4064 4046 31 18 0 2 3 3 2 2 3 3 2 -4045 4063 4063 4063 4063 4045 4064 4046 31 18 0 2 3 3 2 2 3 3 2 -4045 4063 4063 4063 4064 4046 4064 4046 31 19 0 2 3 3 2 2 3 3 2 -4046 4046 4045 4045 4046 4028 4046 4028 41 19 0 2 3 3 2 2 3 3 2 -4046 4046 4045 4045 4046 4028 4047 4029 41 20 0 2 3 3 2 2 3 3 2 -4046 4046 4045 4045 4046 4046 4046 4046 39 19 0 2 3 3 2 2 3 3 2 -4046 4046 4045 4045 4046 4046 4047 4047 39 20 0 2 3 3 2 2 3 3 2 -4046 4046 4045 4063 4046 4046 4046 4046 37 19 0 2 3 3 2 2 3 3 2 -4046 4046 4045 4063 4046 4046 4047 4047 37 20 0 2 3 3 2 2 3 3 2 -4046 4046 4046 4046 4046 4028 4047 4029 41 20 0 2 3 3 2 2 3 3 2 -4046 4046 4046 4046 4046 4046 4047 4047 39 20 0 2 3 3 2 2 3 3 2 -4046 4046 4046 4046 4047 4029 4047 4029 41 21 0 2 3 3 2 2 3 3 2 -4046 4046 4046 4046 4047 4047 4047 4047 39 21 0 2 3 3 2 2 3 3 2 -4046 4046 4046 4064 4046 4046 4047 4047 37 20 0 2 3 3 2 2 3 3 2 -4046 4046 4046 4064 4047 4047 4047 4047 37 21 0 2 3 3 2 2 3 3 2 -4046 4046 4063 4063 4046 4046 4046 4046 36 19 0 2 3 3 2 2 3 3 2 -4046 4046 4063 4063 4046 4046 4047 4047 36 20 0 2 3 3 2 2 3 3 2 -4046 4046 4063 4063 4064 4046 4064 4046 33 19 0 2 3 3 2 2 3 3 2 -4046 4046 4063 4063 4064 4046 4065 4047 33 20 0 2 3 3 2 2 3 3 2 -4046 4046 4064 4064 4046 4046 4047 4047 36 20 0 2 3 3 2 2 3 3 2 -4046 4046 4064 4064 4047 4047 4047 4047 36 21 0 2 3 3 2 2 3 3 2 -4046 4046 4064 4064 4064 4046 4065 4047 33 20 0 2 3 3 2 2 3 3 2 -4046 4046 4064 4064 4065 4047 4065 4047 33 21 0 2 3 3 2 2 3 3 2 -4046 4064 4063 4063 4064 4046 4064 4046 31 19 0 2 3 3 2 2 3 3 2 -4046 4064 4063 4063 4064 4046 4065 4047 31 20 0 2 3 3 2 2 3 3 2 -4046 4064 4064 4064 4064 4046 4065 4047 31 20 0 2 3 3 2 2 3 3 2 -4046 4064 4064 4064 4065 4047 4065 4047 31 21 0 2 3 3 2 2 3 3 2 -4047 4047 4046 4046 4047 4029 4047 4029 41 21 0 2 3 3 2 2 3 3 2 -4047 4047 4046 4046 4047 4029 4048 4030 41 22 0 2 3 3 2 1 3 3 1 -4047 4047 4046 4046 4047 4029 4048 4030 41 22 1 0 0 0 0 2 4 4 2 -4047 4047 4046 4046 4047 4047 4047 4047 39 21 0 2 3 3 2 2 3 3 2 -4047 4047 4046 4046 4047 4047 4048 4048 39 22 0 2 3 3 2 1 3 3 1 -4047 4047 4046 4046 4047 4047 4048 4048 39 22 1 0 0 0 0 2 4 4 2 -4047 4047 4046 4064 4047 4047 4047 4047 37 21 0 2 3 3 2 2 3 3 2 -4047 4047 4046 4064 4047 4047 4048 4048 37 22 0 2 3 3 2 1 3 3 1 -4047 4047 4046 4064 4047 4047 4048 4048 37 22 1 0 0 0 0 2 4 4 2 -4047 4047 4047 4047 4047 4029 4048 4030 41 22 0 2 3 3 2 1 3 3 1 -4047 4047 4047 4047 4047 4029 4048 4030 41 22 1 0 0 0 0 2 4 4 2 -4047 4047 4047 4047 4047 4047 4048 4048 39 22 0 2 3 3 2 1 3 3 1 -4047 4047 4047 4047 4047 4047 4048 4048 39 22 1 0 0 0 0 2 4 4 2 -4047 4047 4047 4047 4048 4030 4048 4030 41 23 0 2 3 3 2 1 4 4 1 -4047 4047 4047 4047 4048 4048 4048 4048 39 23 0 2 3 3 2 1 4 4 1 -4047 4047 4047 4065 4047 4047 4048 4048 37 22 0 2 3 3 2 1 3 3 1 -4047 4047 4047 4065 4047 4047 4048 4048 37 22 1 0 0 0 0 2 4 4 2 -4047 4047 4047 4065 4048 4048 4048 4048 37 23 0 2 3 3 2 1 4 4 1 -4047 4047 4064 4064 4047 4047 4047 4047 36 21 0 2 3 3 2 2 3 3 2 -4047 4047 4064 4064 4047 4047 4048 4048 36 22 0 2 3 3 2 1 3 3 1 -4047 4047 4064 4064 4047 4047 4048 4048 36 22 1 0 0 0 0 2 4 4 2 -4047 4047 4064 4064 4065 4047 4065 4047 33 21 0 2 3 3 2 2 3 3 2 -4047 4047 4064 4064 4065 4047 4066 4048 33 22 0 2 3 3 2 1 3 3 1 -4047 4047 4064 4064 4065 4047 4066 4048 33 22 1 0 0 0 0 2 4 4 2 -4047 4047 4065 4065 4047 4047 4048 4048 36 22 0 2 3 3 2 1 3 3 1 -4047 4047 4065 4065 4047 4047 4048 4048 36 22 1 0 0 0 0 2 4 4 2 -4047 4047 4065 4065 4048 4048 4048 4048 36 23 0 2 3 3 2 1 4 4 1 -4047 4047 4065 4065 4065 4047 4066 4048 33 22 0 2 3 3 2 1 3 3 1 -4047 4047 4065 4065 4065 4047 4066 4048 33 22 1 0 0 0 0 2 4 4 2 -4047 4047 4065 4065 4066 4048 4066 4048 33 23 0 2 3 3 2 1 4 4 1 -4047 4065 4064 4064 4065 4047 4065 4047 31 21 0 2 3 3 2 2 3 3 2 -4047 4065 4064 4064 4065 4047 4066 4048 31 22 0 2 3 3 2 1 3 3 1 -4047 4065 4064 4064 4065 4047 4066 4048 31 22 1 0 0 0 0 2 4 4 2 -4047 4065 4065 4065 4065 4047 4066 4048 31 22 0 2 3 3 2 1 3 3 1 -4047 4065 4065 4065 4065 4047 4066 4048 31 22 1 0 0 0 0 2 4 4 2 -4047 4065 4065 4065 4066 4048 4066 4048 31 23 0 2 3 3 2 1 4 4 1 -4048 4048 4047 4047 4048 4030 4048 4030 41 23 0 2 3 3 2 1 4 4 1 -4048 4048 4047 4047 4048 4030 4049 4031 41 24 0 1 3 3 1 1 4 4 1 -4048 4048 4047 4047 4048 4030 4049 4031 41 24 1 2 4 4 2 0 0 0 0 -4048 4048 4047 4047 4048 4048 4048 4048 39 23 0 2 3 3 2 1 4 4 1 -4048 4048 4047 4047 4048 4048 4049 4049 39 24 0 1 3 3 1 1 4 4 1 -4048 4048 4047 4047 4048 4048 4049 4049 39 24 1 2 4 4 2 0 0 0 0 -4048 4048 4047 4065 4048 4048 4048 4048 37 23 0 2 3 3 2 1 4 4 1 -4048 4048 4047 4065 4048 4048 4049 4049 37 24 0 1 3 3 1 1 4 4 1 -4048 4048 4047 4065 4048 4048 4049 4049 37 24 1 2 4 4 2 0 0 0 0 -4048 4048 4048 4048 4048 4030 4049 4031 41 24 0 1 3 3 1 1 4 4 1 -4048 4048 4048 4048 4048 4030 4049 4031 41 24 1 2 4 4 2 0 0 0 0 -4048 4048 4048 4048 4048 4048 4049 4049 39 24 0 1 3 3 1 1 4 4 1 -4048 4048 4048 4048 4048 4048 4049 4049 39 24 1 2 4 4 2 0 0 0 0 -4048 4048 4048 4048 4049 4031 4049 4031 41 25 0 1 4 4 1 1 4 4 1 -4048 4048 4048 4048 4049 4049 4049 4049 39 25 0 1 4 4 1 1 4 4 1 -4048 4048 4048 4066 4048 4048 4049 4049 37 24 0 1 3 3 1 1 4 4 1 -4048 4048 4048 4066 4048 4048 4049 4049 37 24 1 2 4 4 2 0 0 0 0 -4048 4048 4048 4066 4049 4049 4049 4049 37 25 0 1 4 4 1 1 4 4 1 -4048 4048 4065 4065 4048 4048 4048 4048 36 23 0 2 3 3 2 1 4 4 1 -4048 4048 4065 4065 4048 4048 4049 4049 36 24 0 1 3 3 1 1 4 4 1 -4048 4048 4065 4065 4048 4048 4049 4049 36 24 1 2 4 4 2 0 0 0 0 -4048 4048 4065 4065 4066 4048 4066 4048 33 23 0 2 3 3 2 1 4 4 1 -4048 4048 4065 4065 4066 4048 4067 4049 33 24 0 1 3 3 1 1 4 4 1 -4048 4048 4065 4065 4066 4048 4067 4049 33 24 1 2 4 4 2 0 0 0 0 -4048 4048 4066 4066 4048 4048 4049 4049 36 24 0 1 3 3 1 1 4 4 1 -4048 4048 4066 4066 4048 4048 4049 4049 36 24 1 2 4 4 2 0 0 0 0 -4048 4048 4066 4066 4049 4049 4049 4049 36 25 0 1 4 4 1 1 4 4 1 -4048 4048 4066 4066 4066 4048 4067 4049 33 24 0 1 3 3 1 1 4 4 1 -4048 4048 4066 4066 4066 4048 4067 4049 33 24 1 2 4 4 2 0 0 0 0 -4048 4048 4066 4066 4067 4049 4067 4049 33 25 0 1 4 4 1 1 4 4 1 -4048 4066 4065 4065 4066 4048 4066 4048 31 23 0 2 3 3 2 1 4 4 1 -4048 4066 4065 4065 4066 4048 4067 4049 31 24 0 1 3 3 1 1 4 4 1 -4048 4066 4065 4065 4066 4048 4067 4049 31 24 1 2 4 4 2 0 0 0 0 -4048 4066 4066 4066 4066 4048 4067 4049 31 24 0 1 3 3 1 1 4 4 1 -4048 4066 4066 4066 4066 4048 4067 4049 31 24 1 2 4 4 2 0 0 0 0 -4048 4066 4066 4066 4067 4049 4067 4049 31 25 0 1 4 4 1 1 4 4 1 -4049 4049 4048 4048 4049 4031 4049 4031 41 25 0 1 4 4 1 1 4 4 1 -4049 4049 4048 4048 4049 4031 4050 4032 41 26 0 1 4 4 1 1 4 4 1 -4049 4049 4048 4048 4049 4049 4049 4049 39 25 0 1 4 4 1 1 4 4 1 -4049 4049 4048 4048 4049 4049 4050 4050 39 26 0 1 4 4 1 1 4 4 1 -4049 4049 4048 4066 4049 4049 4049 4049 37 25 0 1 4 4 1 1 4 4 1 -4049 4049 4048 4066 4049 4049 4050 4050 37 26 0 1 4 4 1 1 4 4 1 -4049 4049 4049 4049 4049 4031 4050 4032 41 26 0 1 4 4 1 1 4 4 1 -4049 4049 4049 4049 4049 4049 4050 4050 39 26 0 1 4 4 1 1 4 4 1 -4049 4049 4049 4049 4050 4032 4050 4032 41 27 0 1 4 4 1 1 4 4 1 -4049 4049 4049 4049 4050 4050 4050 4050 39 27 0 1 4 4 1 1 4 4 1 -4049 4049 4049 4067 4049 4049 4050 4050 37 26 0 1 4 4 1 1 4 4 1 -4049 4049 4049 4067 4050 4050 4050 4050 37 27 0 1 4 4 1 1 4 4 1 -4049 4049 4066 4066 4049 4049 4049 4049 36 25 0 1 4 4 1 1 4 4 1 -4049 4049 4066 4066 4049 4049 4050 4050 36 26 0 1 4 4 1 1 4 4 1 -4049 4049 4066 4066 4067 4049 4067 4049 33 25 0 1 4 4 1 1 4 4 1 -4049 4049 4066 4066 4067 4049 4068 4050 33 26 0 1 4 4 1 1 4 4 1 -4049 4049 4067 4067 4049 4049 4050 4050 36 26 0 1 4 4 1 1 4 4 1 -4049 4049 4067 4067 4050 4050 4050 4050 36 27 0 1 4 4 1 1 4 4 1 -4049 4049 4067 4067 4067 4049 4068 4050 33 26 0 1 4 4 1 1 4 4 1 -4049 4049 4067 4067 4068 4050 4068 4050 33 27 0 1 4 4 1 1 4 4 1 -4049 4067 4066 4066 4067 4049 4067 4049 31 25 0 1 4 4 1 1 4 4 1 -4049 4067 4066 4066 4067 4049 4068 4050 31 26 0 1 4 4 1 1 4 4 1 -4049 4067 4067 4067 4067 4049 4068 4050 31 26 0 1 4 4 1 1 4 4 1 -4049 4067 4067 4067 4068 4050 4068 4050 31 27 0 1 4 4 1 1 4 4 1 -4050 4050 4049 4049 4050 4032 4050 4032 41 27 0 1 4 4 1 1 4 4 1 -4050 4050 4049 4049 4050 4032 4051 4033 41 28 0 1 4 4 1 1 4 4 1 -4050 4050 4049 4049 4050 4050 4050 4050 39 27 0 1 4 4 1 1 4 4 1 -4050 4050 4049 4049 4050 4050 4051 4051 39 28 0 1 4 4 1 1 4 4 1 -4050 4050 4049 4067 4050 4050 4050 4050 37 27 0 1 4 4 1 1 4 4 1 -4050 4050 4049 4067 4050 4050 4051 4051 37 28 0 1 4 4 1 1 4 4 1 -4050 4050 4050 4050 4050 4032 4051 4033 41 28 0 1 4 4 1 1 4 4 1 -4050 4050 4050 4050 4050 4050 4051 4051 39 28 0 1 4 4 1 1 4 4 1 -4050 4050 4050 4050 4051 4033 4051 4033 41 29 0 1 4 4 1 1 4 4 1 -4050 4050 4050 4050 4051 4051 4051 4051 39 29 0 1 4 4 1 1 4 4 1 -4050 4050 4050 4068 4050 4050 4051 4051 37 28 0 1 4 4 1 1 4 4 1 -4050 4050 4050 4068 4051 4051 4051 4051 37 29 0 1 4 4 1 1 4 4 1 -4050 4050 4067 4067 4050 4050 4050 4050 36 27 0 1 4 4 1 1 4 4 1 -4050 4050 4067 4067 4050 4050 4051 4051 36 28 0 1 4 4 1 1 4 4 1 -4050 4050 4067 4067 4068 4050 4068 4050 33 27 0 1 4 4 1 1 4 4 1 -4050 4050 4067 4067 4068 4050 4069 4051 33 28 0 1 4 4 1 1 4 4 1 -4050 4050 4068 4068 4050 4050 4051 4051 36 28 0 1 4 4 1 1 4 4 1 -4050 4050 4068 4068 4051 4051 4051 4051 36 29 0 1 4 4 1 1 4 4 1 -4050 4050 4068 4068 4068 4050 4069 4051 33 28 0 1 4 4 1 1 4 4 1 -4050 4050 4068 4068 4069 4051 4069 4051 33 29 0 1 4 4 1 1 4 4 1 -4050 4068 4067 4067 4068 4050 4068 4050 31 27 0 1 4 4 1 1 4 4 1 -4050 4068 4067 4067 4068 4050 4069 4051 31 28 0 1 4 4 1 1 4 4 1 -4050 4068 4068 4068 4068 4050 4069 4051 31 28 0 1 4 4 1 1 4 4 1 -4050 4068 4068 4068 4069 4051 4069 4051 31 29 0 1 4 4 1 1 4 4 1 -4051 4051 4050 4050 4051 4033 4051 4033 41 29 0 1 4 4 1 1 4 4 1 -4051 4051 4050 4050 4051 4033 4052 4034 41 30 0 1 4 4 1 1 4 4 1 -4051 4051 4050 4050 4051 4051 4051 4051 39 29 0 1 4 4 1 1 4 4 1 -4051 4051 4050 4050 4051 4051 4052 4052 39 30 0 1 4 4 1 1 4 4 1 -4051 4051 4050 4068 4051 4051 4051 4051 37 29 0 1 4 4 1 1 4 4 1 -4051 4051 4050 4068 4051 4051 4052 4052 37 30 0 1 4 4 1 1 4 4 1 -4051 4051 4051 4051 4051 4033 4052 4034 41 30 0 1 4 4 1 1 4 4 1 -4051 4051 4051 4051 4051 4051 4052 4052 39 30 0 1 4 4 1 1 4 4 1 -4051 4051 4051 4051 4052 4034 4052 4034 41 31 0 1 4 4 1 1 4 4 1 -4051 4051 4051 4051 4052 4052 4052 4052 39 31 0 1 4 4 1 1 4 4 1 -4051 4051 4051 4069 4051 4051 4052 4052 37 30 0 1 4 4 1 1 4 4 1 -4051 4051 4051 4069 4052 4052 4052 4052 37 31 0 1 4 4 1 1 4 4 1 -4051 4051 4068 4068 4051 4051 4051 4051 36 29 0 1 4 4 1 1 4 4 1 -4051 4051 4068 4068 4051 4051 4052 4052 36 30 0 1 4 4 1 1 4 4 1 -4051 4051 4068 4068 4069 4051 4069 4051 33 29 0 1 4 4 1 1 4 4 1 -4051 4051 4068 4068 4069 4051 4070 4052 33 30 0 1 4 4 1 1 4 4 1 -4051 4051 4069 4069 4051 4051 4052 4052 36 30 0 1 4 4 1 1 4 4 1 -4051 4051 4069 4069 4052 4052 4052 4052 36 31 0 1 4 4 1 1 4 4 1 -4051 4051 4069 4069 4069 4051 4070 4052 33 30 0 1 4 4 1 1 4 4 1 -4051 4051 4069 4069 4070 4052 4070 4052 33 31 0 1 4 4 1 1 4 4 1 -4051 4069 4068 4068 4069 4051 4069 4051 31 29 0 1 4 4 1 1 4 4 1 -4051 4069 4068 4068 4069 4051 4070 4052 31 30 0 1 4 4 1 1 4 4 1 -4051 4069 4069 4069 4069 4051 4070 4052 31 30 0 1 4 4 1 1 4 4 1 -4051 4069 4069 4069 4070 4052 4070 4052 31 31 0 1 4 4 1 1 4 4 1 -4052 4052 4051 4051 4052 4034 4052 4034 41 31 0 1 4 4 1 1 4 4 1 -4052 4052 4051 4051 4052 4052 4052 4052 39 31 0 1 4 4 1 1 4 4 1 -4052 4052 4051 4069 4052 4052 4052 4052 37 31 0 1 4 4 1 1 4 4 1 -4052 4052 4052 4052 5019 5019 5019 5019 40 33 0 1 4 4 1 8 6 6 8 -4052 4052 4052 4070 5019 5019 5019 5019 37 33 0 1 4 4 1 8 6 6 8 -4052 4052 4069 4069 4052 4052 4052 4052 36 31 0 1 4 4 1 1 4 4 1 -4052 4052 4069 4069 4070 4052 4070 4052 33 31 0 1 4 4 1 1 4 4 1 -4052 4052 4070 4070 5019 5019 5019 5019 36 33 0 1 4 4 1 8 6 6 8 -4052 4052 4070 4070 5037 5019 5037 5019 34 33 0 1 4 4 1 8 6 6 8 -4052 4070 4069 4069 4070 4052 4070 4052 31 31 0 1 4 4 1 1 4 4 1 -4052 4070 4070 4070 5037 5019 5037 5019 31 33 0 1 4 4 1 8 6 6 8 -4053 4053 4052 4052 5019 5019 5019 5019 40 34 0 1 4 4 1 8 6 6 8 -4053 4053 4052 4070 5019 5019 5019 5019 37 34 0 1 4 4 1 8 6 6 8 -4053 4053 4070 4070 5019 5019 5019 5019 36 34 0 1 4 4 1 8 6 6 8 -4053 4053 4070 4070 5037 5019 5037 5019 34 34 0 1 4 4 1 8 6 6 8 -4053 4071 4070 4070 5037 5019 5037 5019 31 34 0 1 4 4 1 8 6 6 8 -4055 4055 4055 4055 4055 4037 4056 4038 30 2 0 0 0 0 0 0 0 0 0 -4055 4055 4055 4055 4055 4055 4056 4056 27 2 0 0 0 0 0 0 0 0 0 -4055 4055 4055 4055 4056 4038 4056 4038 30 3 0 0 0 0 0 0 0 0 0 -4055 4055 4055 4055 4056 4056 4056 4056 27 3 0 0 0 0 0 0 0 0 0 -4055 4055 4055 4073 4055 4055 4056 4056 26 2 0 0 0 0 0 0 0 0 0 -4055 4055 4055 4073 4056 4056 4056 4056 26 3 0 0 0 0 0 0 0 0 0 -4055 4055 4073 4073 4055 4055 4056 4056 24 2 0 0 0 0 0 0 0 0 0 -4055 4055 4073 4073 4056 4056 4056 4056 24 3 0 0 0 0 0 0 0 0 0 -4055 4055 4073 4073 4073 4055 4074 4056 22 2 0 0 0 0 0 0 0 0 0 -4055 4055 4073 4073 4074 4056 4074 4056 22 3 0 0 0 0 0 0 0 0 0 -4055 4073 4073 4073 4073 4055 4074 4056 20 2 0 0 0 0 0 0 0 0 0 -4055 4073 4073 4073 4074 4056 4074 4056 20 3 0 0 0 0 0 0 0 0 0 -4056 4056 4055 4055 4056 4038 4056 4038 30 3 0 0 0 0 0 0 0 0 0 -4056 4056 4055 4055 4056 4038 4057 4039 30 4 0 0 0 0 0 0 0 0 0 -4056 4056 4055 4055 4056 4056 4056 4056 27 3 0 0 0 0 0 0 0 0 0 -4056 4056 4055 4055 4056 4056 4057 4057 27 4 0 0 0 0 0 0 0 0 0 -4056 4056 4055 4073 4056 4056 4056 4056 26 3 0 0 0 0 0 0 0 0 0 -4056 4056 4055 4073 4056 4056 4057 4057 26 4 0 0 0 0 0 0 0 0 0 -4056 4056 4056 4056 4056 4038 4057 4039 30 4 0 0 0 0 0 0 0 0 0 -4056 4056 4056 4056 4056 4056 4057 4057 27 4 0 0 0 0 0 0 0 0 0 -4056 4056 4056 4056 4057 4039 4057 4039 30 5 0 0 0 0 0 0 0 0 0 -4056 4056 4056 4056 4057 4057 4057 4057 27 5 0 0 0 0 0 0 0 0 0 -4056 4056 4056 4074 4056 4056 4057 4057 26 4 0 0 0 0 0 0 0 0 0 -4056 4056 4056 4074 4057 4057 4057 4057 26 5 0 0 0 0 0 0 0 0 0 -4056 4056 4073 4073 4056 4056 4056 4056 24 3 0 0 0 0 0 0 0 0 0 -4056 4056 4073 4073 4056 4056 4057 4057 24 4 0 0 0 0 0 0 0 0 0 -4056 4056 4073 4073 4074 4056 4074 4056 22 3 0 0 0 0 0 0 0 0 0 -4056 4056 4073 4073 4074 4056 4075 4057 22 4 0 0 0 0 0 0 0 0 0 -4056 4056 4074 4074 4056 4056 4057 4057 24 4 0 0 0 0 0 0 0 0 0 -4056 4056 4074 4074 4057 4057 4057 4057 24 5 0 0 0 0 0 0 0 0 0 -4056 4056 4074 4074 4074 4056 4075 4057 22 4 0 0 0 0 0 0 0 0 0 -4056 4056 4074 4074 4075 4057 4075 4057 22 5 0 0 0 0 0 0 0 0 0 -4056 4074 4073 4073 4074 4056 4074 4056 20 3 0 0 0 0 0 0 0 0 0 -4056 4074 4073 4073 4074 4056 4075 4057 20 4 0 0 0 0 0 0 0 0 0 -4056 4074 4074 4074 4074 4056 4075 4057 20 4 0 0 0 0 0 0 0 0 0 -4056 4074 4074 4074 4075 4057 4075 4057 20 5 0 0 0 0 0 0 0 0 0 -4057 4057 4056 4056 4057 4039 4057 4039 30 5 0 0 0 0 0 0 0 0 0 -4057 4057 4056 4056 4057 4039 4058 4040 30 6 0 0 0 0 0 3 2 2 3 -4057 4057 4056 4056 4057 4057 4057 4057 27 5 0 0 0 0 0 0 0 0 0 -4057 4057 4056 4056 4057 4057 4058 4058 27 6 0 0 0 0 0 3 2 2 3 -4057 4057 4056 4074 4057 4057 4057 4057 26 5 0 0 0 0 0 0 0 0 0 -4057 4057 4056 4074 4057 4057 4058 4058 26 6 0 0 0 0 0 3 2 2 3 -4057 4057 4057 4057 4057 4039 4058 4040 30 6 0 0 0 0 0 3 2 2 3 -4057 4057 4057 4057 4057 4057 4058 4058 27 6 0 0 0 0 0 3 2 2 3 -4057 4057 4057 4057 4058 4040 4058 4040 30 7 0 3 2 2 3 3 2 2 3 -4057 4057 4057 4057 4058 4058 4058 4058 27 7 0 3 2 2 3 3 2 2 3 -4057 4057 4057 4075 4057 4057 4058 4058 26 6 0 0 0 0 0 3 2 2 3 -4057 4057 4057 4075 4058 4058 4058 4058 26 7 0 3 2 2 3 3 2 2 3 -4057 4057 4074 4074 4057 4057 4057 4057 24 5 0 0 0 0 0 0 0 0 0 -4057 4057 4074 4074 4057 4057 4058 4058 24 6 0 0 0 0 0 3 2 2 3 -4057 4057 4074 4074 4075 4057 4075 4057 22 5 0 0 0 0 0 0 0 0 0 -4057 4057 4074 4074 4075 4057 4076 4058 22 6 0 0 0 0 0 3 2 2 3 -4057 4057 4075 4075 4057 4057 4058 4058 24 6 0 0 0 0 0 3 2 2 3 -4057 4057 4075 4075 4058 4058 4058 4058 24 7 0 3 2 2 3 3 2 2 3 -4057 4057 4075 4075 4075 4057 4076 4058 22 6 0 0 0 0 0 3 2 2 3 -4057 4057 4075 4075 4076 4058 4076 4058 22 7 0 3 2 2 3 3 2 2 3 -4057 4075 4074 4074 4075 4057 4075 4057 20 5 0 0 0 0 0 0 0 0 0 -4057 4075 4074 4074 4075 4057 4076 4058 20 6 0 0 0 0 0 3 2 2 3 -4057 4075 4075 4075 4075 4057 4076 4058 20 6 0 0 0 0 0 3 2 2 3 -4057 4075 4075 4075 4076 4058 4076 4058 20 7 0 3 2 2 3 3 2 2 3 -4058 4058 4057 4057 4058 4040 4058 4040 30 7 0 3 2 2 3 3 2 2 3 -4058 4058 4057 4057 4058 4040 4059 4041 30 8 0 3 2 2 3 3 2 2 3 -4058 4058 4057 4057 4058 4058 4058 4058 27 7 0 3 2 2 3 3 2 2 3 -4058 4058 4057 4057 4058 4058 4059 4059 27 8 0 3 2 2 3 3 2 2 3 -4058 4058 4057 4075 4058 4058 4058 4058 26 7 0 3 2 2 3 3 2 2 3 -4058 4058 4057 4075 4058 4058 4059 4059 26 8 0 3 2 2 3 3 2 2 3 -4058 4058 4058 4058 4058 4040 4059 4041 30 8 0 3 2 2 3 3 2 2 3 -4058 4058 4058 4058 4058 4058 4059 4059 27 8 0 3 2 2 3 3 2 2 3 -4058 4058 4058 4058 4059 4041 4059 4041 30 9 0 3 2 2 3 3 2 2 3 -4058 4058 4058 4058 4059 4059 4059 4059 27 9 0 3 2 2 3 3 2 2 3 -4058 4058 4058 4076 4058 4058 4059 4059 26 8 0 3 2 2 3 3 2 2 3 -4058 4058 4058 4076 4059 4059 4059 4059 26 9 0 3 2 2 3 3 2 2 3 -4058 4058 4075 4075 4058 4058 4058 4058 24 7 0 3 2 2 3 3 2 2 3 -4058 4058 4075 4075 4058 4058 4059 4059 24 8 0 3 2 2 3 3 2 2 3 -4058 4058 4075 4075 4076 4058 4076 4058 22 7 0 3 2 2 3 3 2 2 3 -4058 4058 4075 4075 4076 4058 4077 4059 22 8 0 3 2 2 3 3 2 2 3 -4058 4058 4076 4076 4058 4058 4059 4059 24 8 0 3 2 2 3 3 2 2 3 -4058 4058 4076 4076 4059 4059 4059 4059 24 9 0 3 2 2 3 3 2 2 3 -4058 4058 4076 4076 4076 4058 4077 4059 22 8 0 3 2 2 3 3 2 2 3 -4058 4058 4076 4076 4077 4059 4077 4059 22 9 0 3 2 2 3 3 2 2 3 -4058 4076 4075 4075 4076 4058 4076 4058 20 7 0 3 2 2 3 3 2 2 3 -4058 4076 4075 4075 4076 4058 4077 4059 20 8 0 3 2 2 3 3 2 2 3 -4058 4076 4076 4076 4076 4058 4077 4059 20 8 0 3 2 2 3 3 2 2 3 -4058 4076 4076 4076 4077 4059 4077 4059 20 9 0 3 2 2 3 3 2 2 3 -4059 4059 4058 4058 4059 4041 4059 4041 30 9 0 3 2 2 3 3 2 2 3 -4059 4059 4058 4058 4059 4041 4060 4042 30 10 0 3 2 2 3 3 2 2 3 -4059 4059 4058 4058 4059 4059 4059 4059 27 9 0 3 2 2 3 3 2 2 3 -4059 4059 4058 4058 4059 4059 4060 4060 27 10 0 3 2 2 3 3 2 2 3 -4059 4059 4058 4076 4059 4059 4059 4059 26 9 0 3 2 2 3 3 2 2 3 -4059 4059 4058 4076 4059 4059 4060 4060 26 10 0 3 2 2 3 3 2 2 3 -4059 4059 4059 4059 4059 4041 4060 4042 30 10 0 3 2 2 3 3 2 2 3 -4059 4059 4059 4059 4059 4059 4060 4060 27 10 0 3 2 2 3 3 2 2 3 -4059 4059 4059 4059 4060 4042 4060 4042 30 11 0 3 2 2 3 3 2 2 3 -4059 4059 4059 4059 4060 4060 4060 4060 27 11 0 3 2 2 3 3 2 2 3 -4059 4059 4059 4077 4059 4059 4060 4060 26 10 0 3 2 2 3 3 2 2 3 -4059 4059 4059 4077 4060 4060 4060 4060 26 11 0 3 2 2 3 3 2 2 3 -4059 4059 4076 4076 4059 4059 4059 4059 24 9 0 3 2 2 3 3 2 2 3 -4059 4059 4076 4076 4059 4059 4060 4060 24 10 0 3 2 2 3 3 2 2 3 -4059 4059 4076 4076 4077 4059 4077 4059 22 9 0 3 2 2 3 3 2 2 3 -4059 4059 4076 4076 4077 4059 4078 4060 22 10 0 3 2 2 3 3 2 2 3 -4059 4059 4077 4077 4059 4059 4060 4060 24 10 0 3 2 2 3 3 2 2 3 -4059 4059 4077 4077 4060 4060 4060 4060 24 11 0 3 2 2 3 3 2 2 3 -4059 4059 4077 4077 4077 4059 4078 4060 22 10 0 3 2 2 3 3 2 2 3 -4059 4059 4077 4077 4078 4060 4078 4060 22 11 0 3 2 2 3 3 2 2 3 -4059 4077 4076 4076 4077 4059 4077 4059 20 9 0 3 2 2 3 3 2 2 3 -4059 4077 4076 4076 4077 4059 4078 4060 20 10 0 3 2 2 3 3 2 2 3 -4059 4077 4077 4077 4077 4059 4078 4060 20 10 0 3 2 2 3 3 2 2 3 -4059 4077 4077 4077 4078 4060 4078 4060 20 11 0 3 2 2 3 3 2 2 3 -4060 4060 4059 4059 4060 4042 4060 4042 30 11 0 3 2 2 3 3 2 2 3 -4060 4060 4059 4059 4060 4042 4061 4043 30 12 0 3 2 2 3 2 2 2 2 -4060 4060 4059 4059 4060 4042 4061 4043 30 12 1 0 0 0 0 3 3 3 3 -4060 4060 4059 4059 4060 4060 4060 4060 27 11 0 3 2 2 3 3 2 2 3 -4060 4060 4059 4059 4060 4060 4061 4061 27 12 0 3 2 2 3 2 2 2 2 -4060 4060 4059 4059 4060 4060 4061 4061 27 12 1 0 0 0 0 3 3 3 3 -4060 4060 4059 4077 4060 4060 4060 4060 26 11 0 3 2 2 3 3 2 2 3 -4060 4060 4059 4077 4060 4060 4061 4061 26 12 0 3 2 2 3 2 2 2 2 -4060 4060 4059 4077 4060 4060 4061 4061 26 12 1 0 0 0 0 3 3 3 3 -4060 4060 4060 4060 4060 4042 4061 4043 30 12 0 3 2 2 3 2 2 2 2 -4060 4060 4060 4060 4060 4042 4061 4043 30 12 1 0 0 0 0 3 3 3 3 -4060 4060 4060 4060 4060 4060 4061 4061 27 12 0 3 2 2 3 2 2 2 2 -4060 4060 4060 4060 4060 4060 4061 4061 27 12 1 0 0 0 0 3 3 3 3 -4060 4060 4060 4060 4061 4043 4061 4043 30 13 0 3 2 2 3 2 3 3 2 -4060 4060 4060 4060 4061 4061 4061 4061 27 13 0 3 2 2 3 2 3 3 2 -4060 4060 4060 4078 4060 4060 4061 4061 26 12 0 3 2 2 3 2 2 2 2 -4060 4060 4060 4078 4060 4060 4061 4061 26 12 1 0 0 0 0 3 3 3 3 -4060 4060 4060 4078 4061 4061 4061 4061 26 13 0 3 2 2 3 2 3 3 2 -4060 4060 4077 4077 4060 4060 4060 4060 24 11 0 3 2 2 3 3 2 2 3 -4060 4060 4077 4077 4060 4060 4061 4061 24 12 0 3 2 2 3 2 2 2 2 -4060 4060 4077 4077 4060 4060 4061 4061 24 12 1 0 0 0 0 3 3 3 3 -4060 4060 4077 4077 4078 4060 4078 4060 22 11 0 3 2 2 3 3 2 2 3 -4060 4060 4077 4077 4078 4060 4079 4061 22 12 0 3 2 2 3 2 2 2 2 -4060 4060 4077 4077 4078 4060 4079 4061 22 12 1 0 0 0 0 3 3 3 3 -4060 4060 4078 4078 4060 4060 4061 4061 24 12 0 3 2 2 3 2 2 2 2 -4060 4060 4078 4078 4060 4060 4061 4061 24 12 1 0 0 0 0 3 3 3 3 -4060 4060 4078 4078 4061 4061 4061 4061 24 13 0 3 2 2 3 2 3 3 2 -4060 4060 4078 4078 4078 4060 4079 4061 22 12 0 3 2 2 3 2 2 2 2 -4060 4060 4078 4078 4078 4060 4079 4061 22 12 1 0 0 0 0 3 3 3 3 -4060 4060 4078 4078 4079 4061 4079 4061 22 13 0 3 2 2 3 2 3 3 2 -4060 4078 4077 4077 4078 4060 4078 4060 20 11 0 3 2 2 3 3 2 2 3 -4060 4078 4077 4077 4078 4060 4079 4061 20 12 0 3 2 2 3 2 2 2 2 -4060 4078 4077 4077 4078 4060 4079 4061 20 12 1 0 0 0 0 3 3 3 3 -4060 4078 4078 4078 4078 4060 4079 4061 20 12 0 3 2 2 3 2 2 2 2 -4060 4078 4078 4078 4078 4060 4079 4061 20 12 1 0 0 0 0 3 3 3 3 -4060 4078 4078 4078 4079 4061 4079 4061 20 13 0 3 2 2 3 2 3 3 2 -4061 4061 4060 4060 4061 4043 4061 4043 30 13 0 3 2 2 3 2 3 3 2 -4061 4061 4060 4060 4061 4043 4062 4044 30 14 0 2 2 3 2 2 3 3 2 -4061 4061 4060 4060 4061 4043 4062 4044 30 14 1 3 3 0 0 0 0 0 0 -4061 4061 4060 4060 4061 4061 4061 4061 27 13 0 3 2 2 3 2 3 3 2 -4061 4061 4060 4060 4061 4061 4062 4062 27 14 0 2 2 3 2 2 3 3 2 -4061 4061 4060 4060 4061 4061 4062 4062 27 14 1 3 3 0 0 0 0 0 0 -4061 4061 4060 4078 4061 4061 4061 4061 26 13 0 3 2 2 3 2 3 3 2 -4061 4061 4060 4078 4061 4061 4062 4062 26 14 0 2 2 3 2 2 3 3 2 -4061 4061 4060 4078 4061 4061 4062 4062 26 14 1 3 3 0 0 0 0 0 0 -4061 4061 4061 4061 4061 4043 4062 4044 30 14 0 2 2 3 2 2 3 3 2 -4061 4061 4061 4061 4061 4043 4062 4044 30 14 1 3 3 0 0 0 0 0 0 -4061 4061 4061 4061 4061 4061 4062 4062 27 14 0 2 2 3 2 2 3 3 2 -4061 4061 4061 4061 4061 4061 4062 4062 27 14 1 3 3 0 0 0 0 0 0 -4061 4061 4061 4061 4062 4044 4062 4044 30 15 0 2 3 3 2 2 3 3 2 -4061 4061 4061 4061 4062 4062 4062 4062 27 15 0 2 3 3 2 2 3 3 2 -4061 4061 4061 4079 4061 4061 4062 4062 26 14 0 2 2 3 2 2 3 3 2 -4061 4061 4061 4079 4061 4061 4062 4062 26 14 1 3 3 0 0 0 0 0 0 -4061 4061 4061 4079 4062 4062 4062 4062 26 15 0 2 3 3 2 2 3 3 2 -4061 4061 4078 4078 4061 4061 4061 4061 24 13 0 3 2 2 3 2 3 3 2 -4061 4061 4078 4078 4061 4061 4062 4062 24 14 0 2 2 3 2 2 3 3 2 -4061 4061 4078 4078 4061 4061 4062 4062 24 14 1 3 3 0 0 0 0 0 0 -4061 4061 4078 4078 4079 4061 4079 4061 22 13 0 3 2 2 3 2 3 3 2 -4061 4061 4078 4078 4079 4061 4080 4062 22 14 0 2 2 3 2 2 3 3 2 -4061 4061 4078 4078 4079 4061 4080 4062 22 14 1 3 3 0 0 0 0 0 0 -4061 4061 4079 4079 4061 4061 4062 4062 24 14 0 2 2 3 2 2 3 3 2 -4061 4061 4079 4079 4061 4061 4062 4062 24 14 1 3 3 0 0 0 0 0 0 -4061 4061 4079 4079 4062 4062 4062 4062 24 15 0 2 3 3 2 2 3 3 2 -4061 4061 4079 4079 4079 4061 4080 4062 22 14 0 2 2 3 2 2 3 3 2 -4061 4061 4079 4079 4079 4061 4080 4062 22 14 1 3 3 0 0 0 0 0 0 -4061 4061 4079 4079 4080 4062 4080 4062 22 15 0 2 3 3 2 2 3 3 2 -4061 4079 4078 4078 4079 4061 4079 4061 20 13 0 3 2 2 3 2 3 3 2 -4061 4079 4078 4078 4079 4061 4080 4062 20 14 0 2 2 3 2 2 3 3 2 -4061 4079 4078 4078 4079 4061 4080 4062 20 14 1 3 3 0 0 0 0 0 0 -4061 4079 4079 4079 4079 4061 4080 4062 20 14 0 2 2 3 2 2 3 3 2 -4061 4079 4079 4079 4079 4061 4080 4062 20 14 1 3 3 0 0 0 0 0 0 -4061 4079 4079 4079 4080 4062 4080 4062 20 15 0 2 3 3 2 2 3 3 2 -4062 4062 4061 4061 4062 4044 4062 4044 30 15 0 2 3 3 2 2 3 3 2 -4062 4062 4061 4061 4062 4044 4063 4045 30 16 0 2 3 3 2 2 3 3 2 -4062 4062 4061 4061 4062 4062 4062 4062 27 15 0 2 3 3 2 2 3 3 2 -4062 4062 4061 4061 4062 4062 4063 4063 27 16 0 2 3 3 2 2 3 3 2 -4062 4062 4061 4079 4062 4062 4062 4062 26 15 0 2 3 3 2 2 3 3 2 -4062 4062 4061 4079 4062 4062 4063 4063 26 16 0 2 3 3 2 2 3 3 2 -4062 4062 4062 4062 4062 4044 4063 4045 30 16 0 2 3 3 2 2 3 3 2 -4062 4062 4062 4062 4062 4062 4063 4063 27 16 0 2 3 3 2 2 3 3 2 -4062 4062 4062 4062 4063 4045 4063 4045 30 17 0 2 3 3 2 2 3 3 2 -4062 4062 4062 4062 4063 4063 4063 4063 27 17 0 2 3 3 2 2 3 3 2 -4062 4062 4062 4080 4062 4062 4063 4063 26 16 0 2 3 3 2 2 3 3 2 -4062 4062 4062 4080 4063 4063 4063 4063 26 17 0 2 3 3 2 2 3 3 2 -4062 4062 4079 4079 4062 4062 4062 4062 24 15 0 2 3 3 2 2 3 3 2 -4062 4062 4079 4079 4062 4062 4063 4063 24 16 0 2 3 3 2 2 3 3 2 -4062 4062 4079 4079 4080 4062 4080 4062 22 15 0 2 3 3 2 2 3 3 2 -4062 4062 4079 4079 4080 4062 4081 4063 22 16 0 2 3 3 2 2 3 3 2 -4062 4062 4080 4080 4062 4062 4063 4063 24 16 0 2 3 3 2 2 3 3 2 -4062 4062 4080 4080 4063 4063 4063 4063 24 17 0 2 3 3 2 2 3 3 2 -4062 4062 4080 4080 4080 4062 4081 4063 22 16 0 2 3 3 2 2 3 3 2 -4062 4062 4080 4080 4081 4063 4081 4063 22 17 0 2 3 3 2 2 3 3 2 -4062 4080 4079 4079 4080 4062 4080 4062 20 15 0 2 3 3 2 2 3 3 2 -4062 4080 4079 4079 4080 4062 4081 4063 20 16 0 2 3 3 2 2 3 3 2 -4062 4080 4080 4080 4080 4062 4081 4063 20 16 0 2 3 3 2 2 3 3 2 -4062 4080 4080 4080 4081 4063 4081 4063 20 17 0 2 3 3 2 2 3 3 2 -4063 4063 4062 4062 4063 4045 4063 4045 30 17 0 2 3 3 2 2 3 3 2 -4063 4063 4062 4062 4063 4045 4064 4046 30 18 0 2 3 3 2 2 3 3 2 -4063 4063 4062 4062 4063 4063 4063 4063 27 17 0 2 3 3 2 2 3 3 2 -4063 4063 4062 4062 4063 4063 4064 4064 27 18 0 2 3 3 2 2 3 3 2 -4063 4063 4062 4080 4063 4063 4063 4063 26 17 0 2 3 3 2 2 3 3 2 -4063 4063 4062 4080 4063 4063 4064 4064 26 18 0 2 3 3 2 2 3 3 2 -4063 4063 4063 4063 4063 4045 4064 4046 30 18 0 2 3 3 2 2 3 3 2 -4063 4063 4063 4063 4063 4063 4064 4064 27 18 0 2 3 3 2 2 3 3 2 -4063 4063 4063 4063 4064 4046 4064 4046 30 19 0 2 3 3 2 2 3 3 2 -4063 4063 4063 4063 4064 4064 4064 4064 27 19 0 2 3 3 2 2 3 3 2 -4063 4063 4063 4081 4063 4063 4064 4064 26 18 0 2 3 3 2 2 3 3 2 -4063 4063 4063 4081 4064 4064 4064 4064 26 19 0 2 3 3 2 2 3 3 2 -4063 4063 4080 4080 4063 4063 4063 4063 24 17 0 2 3 3 2 2 3 3 2 -4063 4063 4080 4080 4063 4063 4064 4064 24 18 0 2 3 3 2 2 3 3 2 -4063 4063 4080 4080 4081 4063 4081 4063 22 17 0 2 3 3 2 2 3 3 2 -4063 4063 4080 4080 4081 4063 4082 4064 22 18 0 2 3 3 2 2 3 3 2 -4063 4063 4081 4081 4063 4063 4064 4064 24 18 0 2 3 3 2 2 3 3 2 -4063 4063 4081 4081 4064 4064 4064 4064 24 19 0 2 3 3 2 2 3 3 2 -4063 4063 4081 4081 4081 4063 4082 4064 22 18 0 2 3 3 2 2 3 3 2 -4063 4063 4081 4081 4082 4064 4082 4064 22 19 0 2 3 3 2 2 3 3 2 -4063 4081 4080 4080 4081 4063 4081 4063 20 17 0 2 3 3 2 2 3 3 2 -4063 4081 4080 4080 4081 4063 4082 4064 20 18 0 2 3 3 2 2 3 3 2 -4063 4081 4081 4081 4081 4063 4082 4064 20 18 0 2 3 3 2 2 3 3 2 -4063 4081 4081 4081 4082 4064 4082 4064 20 19 0 2 3 3 2 2 3 3 2 -4064 4064 4063 4063 4064 4046 4064 4046 30 19 0 2 3 3 2 2 3 3 2 -4064 4064 4063 4063 4064 4046 4065 4047 30 20 0 2 3 3 2 2 3 3 2 -4064 4064 4063 4063 4064 4064 4064 4064 27 19 0 2 3 3 2 2 3 3 2 -4064 4064 4063 4063 4064 4064 4065 4065 27 20 0 2 3 3 2 2 3 3 2 -4064 4064 4063 4081 4064 4064 4064 4064 26 19 0 2 3 3 2 2 3 3 2 -4064 4064 4063 4081 4064 4064 4065 4065 26 20 0 2 3 3 2 2 3 3 2 -4064 4064 4064 4064 4064 4046 4065 4047 30 20 0 2 3 3 2 2 3 3 2 -4064 4064 4064 4064 4064 4064 4065 4065 27 20 0 2 3 3 2 2 3 3 2 -4064 4064 4064 4064 4065 4047 4065 4047 30 21 0 2 3 3 2 2 3 3 2 -4064 4064 4064 4064 4065 4065 4065 4065 27 21 0 2 3 3 2 2 3 3 2 -4064 4064 4064 4082 4064 4064 4065 4065 26 20 0 2 3 3 2 2 3 3 2 -4064 4064 4064 4082 4065 4065 4065 4065 26 21 0 2 3 3 2 2 3 3 2 -4064 4064 4081 4081 4064 4064 4064 4064 24 19 0 2 3 3 2 2 3 3 2 -4064 4064 4081 4081 4064 4064 4065 4065 24 20 0 2 3 3 2 2 3 3 2 -4064 4064 4081 4081 4082 4064 4082 4064 22 19 0 2 3 3 2 2 3 3 2 -4064 4064 4081 4081 4082 4064 4083 4065 22 20 0 2 3 3 2 2 3 3 2 -4064 4064 4082 4082 4064 4064 4065 4065 24 20 0 2 3 3 2 2 3 3 2 -4064 4064 4082 4082 4065 4065 4065 4065 24 21 0 2 3 3 2 2 3 3 2 -4064 4064 4082 4082 4082 4064 4083 4065 22 20 0 2 3 3 2 2 3 3 2 -4064 4064 4082 4082 4083 4065 4083 4065 22 21 0 2 3 3 2 2 3 3 2 -4064 4082 4081 4081 4082 4064 4082 4064 20 19 0 2 3 3 2 2 3 3 2 -4064 4082 4081 4081 4082 4064 4083 4065 20 20 0 2 3 3 2 2 3 3 2 -4064 4082 4082 4082 4082 4064 4083 4065 20 20 0 2 3 3 2 2 3 3 2 -4064 4082 4082 4082 4083 4065 4083 4065 20 21 0 2 3 3 2 2 3 3 2 -4065 4065 4064 4064 4065 4047 4065 4047 30 21 0 2 3 3 2 2 3 3 2 -4065 4065 4064 4064 4065 4047 4066 4048 30 22 0 2 3 3 2 1 3 3 1 -4065 4065 4064 4064 4065 4047 4066 4048 30 22 1 0 0 0 0 2 4 4 2 -4065 4065 4064 4064 4065 4065 4065 4065 27 21 0 2 3 3 2 2 3 3 2 -4065 4065 4064 4064 4065 4065 4066 4066 27 22 0 2 3 3 2 1 3 3 1 -4065 4065 4064 4064 4065 4065 4066 4066 27 22 1 0 0 0 0 2 4 4 2 -4065 4065 4064 4082 4065 4065 4065 4065 26 21 0 2 3 3 2 2 3 3 2 -4065 4065 4064 4082 4065 4065 4066 4066 26 22 0 2 3 3 2 1 3 3 1 -4065 4065 4064 4082 4065 4065 4066 4066 26 22 1 0 0 0 0 2 4 4 2 -4065 4065 4065 4065 4065 4047 4066 4048 30 22 0 2 3 3 2 1 3 3 1 -4065 4065 4065 4065 4065 4047 4066 4048 30 22 1 0 0 0 0 2 4 4 2 -4065 4065 4065 4065 4065 4065 4066 4066 27 22 0 2 3 3 2 1 3 3 1 -4065 4065 4065 4065 4065 4065 4066 4066 27 22 1 0 0 0 0 2 4 4 2 -4065 4065 4065 4065 4066 4048 4066 4048 30 23 0 2 3 3 2 1 4 4 1 -4065 4065 4065 4065 4066 4066 4066 4066 27 23 0 2 3 3 2 1 4 4 1 -4065 4065 4065 4083 4065 4065 4066 4066 26 22 0 2 3 3 2 1 3 3 1 -4065 4065 4065 4083 4065 4065 4066 4066 26 22 1 0 0 0 0 2 4 4 2 -4065 4065 4065 4083 4066 4066 4066 4066 26 23 0 2 3 3 2 1 4 4 1 -4065 4065 4082 4082 4065 4065 4065 4065 24 21 0 2 3 3 2 2 3 3 2 -4065 4065 4082 4082 4065 4065 4066 4066 24 22 0 2 3 3 2 1 3 3 1 -4065 4065 4082 4082 4065 4065 4066 4066 24 22 1 0 0 0 0 2 4 4 2 -4065 4065 4082 4082 4083 4065 4083 4065 22 21 0 2 3 3 2 2 3 3 2 -4065 4065 4082 4082 4083 4065 4084 4066 22 22 0 2 3 3 2 1 3 3 1 -4065 4065 4082 4082 4083 4065 4084 4066 22 22 1 0 0 0 0 2 4 4 2 -4065 4065 4083 4083 4065 4065 4066 4066 24 22 0 2 3 3 2 1 3 3 1 -4065 4065 4083 4083 4065 4065 4066 4066 24 22 1 0 0 0 0 2 4 4 2 -4065 4065 4083 4083 4066 4066 4066 4066 24 23 0 2 3 3 2 1 4 4 1 -4065 4065 4083 4083 4083 4065 4084 4066 22 22 0 2 3 3 2 1 3 3 1 -4065 4065 4083 4083 4083 4065 4084 4066 22 22 1 0 0 0 0 2 4 4 2 -4065 4065 4083 4083 4084 4066 4084 4066 22 23 0 2 3 3 2 1 4 4 1 -4065 4083 4082 4082 4083 4065 4083 4065 20 21 0 2 3 3 2 2 3 3 2 -4065 4083 4082 4082 4083 4065 4084 4066 20 22 0 2 3 3 2 1 3 3 1 -4065 4083 4082 4082 4083 4065 4084 4066 20 22 1 0 0 0 0 2 4 4 2 -4065 4083 4083 4083 4083 4065 4084 4066 20 22 0 2 3 3 2 1 3 3 1 -4065 4083 4083 4083 4083 4065 4084 4066 20 22 1 0 0 0 0 2 4 4 2 -4065 4083 4083 4083 4084 4066 4084 4066 20 23 0 2 3 3 2 1 4 4 1 -4066 4066 4065 4065 4066 4048 4066 4048 30 23 0 2 3 3 2 1 4 4 1 -4066 4066 4065 4065 4066 4048 4067 4049 30 24 0 1 3 3 1 1 4 4 1 -4066 4066 4065 4065 4066 4048 4067 4049 30 24 1 2 4 4 2 0 0 0 0 -4066 4066 4065 4065 4066 4066 4066 4066 27 23 0 2 3 3 2 1 4 4 1 -4066 4066 4065 4065 4066 4066 4067 4067 27 24 0 1 3 3 1 1 4 4 1 -4066 4066 4065 4065 4066 4066 4067 4067 27 24 1 2 4 4 2 0 0 0 0 -4066 4066 4065 4083 4066 4066 4066 4066 26 23 0 2 3 3 2 1 4 4 1 -4066 4066 4065 4083 4066 4066 4067 4067 26 24 0 1 3 3 1 1 4 4 1 -4066 4066 4065 4083 4066 4066 4067 4067 26 24 1 2 4 4 2 0 0 0 0 -4066 4066 4066 4066 4066 4048 4067 4049 30 24 0 1 3 3 1 1 4 4 1 -4066 4066 4066 4066 4066 4048 4067 4049 30 24 1 2 4 4 2 0 0 0 0 -4066 4066 4066 4066 4066 4066 4067 4067 27 24 0 1 3 3 1 1 4 4 1 -4066 4066 4066 4066 4066 4066 4067 4067 27 24 1 2 4 4 2 0 0 0 0 -4066 4066 4066 4066 4067 4049 4067 4049 30 25 0 1 4 4 1 1 4 4 1 -4066 4066 4066 4066 4067 4067 4067 4067 27 25 0 1 4 4 1 1 4 4 1 -4066 4066 4066 4084 4066 4066 4067 4067 26 24 0 1 3 3 1 1 4 4 1 -4066 4066 4066 4084 4066 4066 4067 4067 26 24 1 2 4 4 2 0 0 0 0 -4066 4066 4066 4084 4067 4067 4067 4067 26 25 0 1 4 4 1 1 4 4 1 -4066 4066 4083 4083 4066 4066 4066 4066 24 23 0 2 3 3 2 1 4 4 1 -4066 4066 4083 4083 4066 4066 4067 4067 24 24 0 1 3 3 1 1 4 4 1 -4066 4066 4083 4083 4066 4066 4067 4067 24 24 1 2 4 4 2 0 0 0 0 -4066 4066 4083 4083 4084 4066 4084 4066 22 23 0 2 3 3 2 1 4 4 1 -4066 4066 4083 4083 4084 4066 4085 4067 22 24 0 1 3 3 1 1 4 4 1 -4066 4066 4083 4083 4084 4066 4085 4067 22 24 1 2 4 4 2 0 0 0 0 -4066 4066 4084 4084 4066 4066 4067 4067 24 24 0 1 3 3 1 1 4 4 1 -4066 4066 4084 4084 4066 4066 4067 4067 24 24 1 2 4 4 2 0 0 0 0 -4066 4066 4084 4084 4067 4067 4067 4067 24 25 0 1 4 4 1 1 4 4 1 -4066 4066 4084 4084 4084 4066 4085 4067 22 24 0 1 3 3 1 1 4 4 1 -4066 4066 4084 4084 4084 4066 4085 4067 22 24 1 2 4 4 2 0 0 0 0 -4066 4066 4084 4084 4085 4067 4085 4067 22 25 0 1 4 4 1 1 4 4 1 -4066 4084 4083 4083 4084 4066 4084 4066 20 23 0 2 3 3 2 1 4 4 1 -4066 4084 4083 4083 4084 4066 4085 4067 20 24 0 1 3 3 1 1 4 4 1 -4066 4084 4083 4083 4084 4066 4085 4067 20 24 1 2 4 4 2 0 0 0 0 -4066 4084 4084 4084 4084 4066 4085 4067 20 24 0 1 3 3 1 1 4 4 1 -4066 4084 4084 4084 4084 4066 4085 4067 20 24 1 2 4 4 2 0 0 0 0 -4066 4084 4084 4084 4085 4067 4085 4067 20 25 0 1 4 4 1 1 4 4 1 -4067 4067 4066 4066 4067 4049 4067 4049 30 25 0 1 4 4 1 1 4 4 1 -4067 4067 4066 4066 4067 4049 4068 4050 30 26 0 1 4 4 1 1 4 4 1 -4067 4067 4066 4066 4067 4067 4067 4067 27 25 0 1 4 4 1 1 4 4 1 -4067 4067 4066 4066 4067 4067 4068 4068 27 26 0 1 4 4 1 1 4 4 1 -4067 4067 4066 4084 4067 4067 4067 4067 26 25 0 1 4 4 1 1 4 4 1 -4067 4067 4066 4084 4067 4067 4068 4068 26 26 0 1 4 4 1 1 4 4 1 -4067 4067 4067 4067 4067 4049 4068 4050 30 26 0 1 4 4 1 1 4 4 1 -4067 4067 4067 4067 4067 4067 4068 4068 27 26 0 1 4 4 1 1 4 4 1 -4067 4067 4067 4067 4068 4050 4068 4050 30 27 0 1 4 4 1 1 4 4 1 -4067 4067 4067 4067 4068 4068 4068 4068 27 27 0 1 4 4 1 1 4 4 1 -4067 4067 4067 4085 4067 4067 4068 4068 26 26 0 1 4 4 1 1 4 4 1 -4067 4067 4067 4085 4068 4068 4068 4068 26 27 0 1 4 4 1 1 4 4 1 -4067 4067 4084 4084 4067 4067 4067 4067 24 25 0 1 4 4 1 1 4 4 1 -4067 4067 4084 4084 4067 4067 4068 4068 24 26 0 1 4 4 1 1 4 4 1 -4067 4067 4084 4084 4085 4067 4085 4067 22 25 0 1 4 4 1 1 4 4 1 -4067 4067 4084 4084 4085 4067 4086 4068 22 26 0 1 4 4 1 1 4 4 1 -4067 4067 4085 4085 4067 4067 4068 4068 24 26 0 1 4 4 1 1 4 4 1 -4067 4067 4085 4085 4068 4068 4068 4068 24 27 0 1 4 4 1 1 4 4 1 -4067 4067 4085 4085 4085 4067 4086 4068 22 26 0 1 4 4 1 1 4 4 1 -4067 4067 4085 4085 4086 4068 4086 4068 22 27 0 1 4 4 1 1 4 4 1 -4067 4085 4084 4084 4085 4067 4085 4067 20 25 0 1 4 4 1 1 4 4 1 -4067 4085 4084 4084 4085 4067 4086 4068 20 26 0 1 4 4 1 1 4 4 1 -4067 4085 4085 4085 4085 4067 4086 4068 20 26 0 1 4 4 1 1 4 4 1 -4067 4085 4085 4085 4086 4068 4086 4068 20 27 0 1 4 4 1 1 4 4 1 -4068 4068 4067 4067 4068 4050 4068 4050 30 27 0 1 4 4 1 1 4 4 1 -4068 4068 4067 4067 4068 4050 4069 4051 30 28 0 1 4 4 1 1 4 4 1 -4068 4068 4067 4067 4068 4068 4068 4068 27 27 0 1 4 4 1 1 4 4 1 -4068 4068 4067 4067 4068 4068 4069 4069 27 28 0 1 4 4 1 1 4 4 1 -4068 4068 4067 4085 4068 4068 4068 4068 26 27 0 1 4 4 1 1 4 4 1 -4068 4068 4067 4085 4068 4068 4069 4069 26 28 0 1 4 4 1 1 4 4 1 -4068 4068 4068 4068 4068 4050 4069 4051 30 28 0 1 4 4 1 1 4 4 1 -4068 4068 4068 4068 4068 4068 4069 4069 27 28 0 1 4 4 1 1 4 4 1 -4068 4068 4068 4068 4069 4051 4069 4051 30 29 0 1 4 4 1 1 4 4 1 -4068 4068 4068 4068 4069 4069 4069 4069 27 29 0 1 4 4 1 1 4 4 1 -4068 4068 4068 4086 4068 4068 4069 4069 26 28 0 1 4 4 1 1 4 4 1 -4068 4068 4068 4086 4069 4069 4069 4069 26 29 0 1 4 4 1 1 4 4 1 -4068 4068 4085 4085 4068 4068 4068 4068 24 27 0 1 4 4 1 1 4 4 1 -4068 4068 4085 4085 4068 4068 4069 4069 24 28 0 1 4 4 1 1 4 4 1 -4068 4068 4085 4085 4086 4068 4086 4068 22 27 0 1 4 4 1 1 4 4 1 -4068 4068 4085 4085 4086 4068 4087 4069 22 28 0 1 4 4 1 1 4 4 1 -4068 4068 4086 4086 4068 4068 4069 4069 24 28 0 1 4 4 1 1 4 4 1 -4068 4068 4086 4086 4069 4069 4069 4069 24 29 0 1 4 4 1 1 4 4 1 -4068 4068 4086 4086 4086 4068 4087 4069 22 28 0 1 4 4 1 1 4 4 1 -4068 4068 4086 4086 4087 4069 4087 4069 22 29 0 1 4 4 1 1 4 4 1 -4068 4086 4085 4085 4086 4068 4086 4068 20 27 0 1 4 4 1 1 4 4 1 -4068 4086 4085 4085 4086 4068 4087 4069 20 28 0 1 4 4 1 1 4 4 1 -4068 4086 4086 4086 4086 4068 4087 4069 20 28 0 1 4 4 1 1 4 4 1 -4068 4086 4086 4086 4087 4069 4087 4069 20 29 0 1 4 4 1 1 4 4 1 -4069 4069 4068 4068 4069 4051 4069 4051 30 29 0 1 4 4 1 1 4 4 1 -4069 4069 4068 4068 4069 4051 4070 4052 30 30 0 1 4 4 1 1 4 4 1 -4069 4069 4068 4068 4069 4069 4069 4069 27 29 0 1 4 4 1 1 4 4 1 -4069 4069 4068 4068 4069 4069 4070 4070 27 30 0 1 4 4 1 1 4 4 1 -4069 4069 4068 4086 4069 4069 4069 4069 26 29 0 1 4 4 1 1 4 4 1 -4069 4069 4068 4086 4069 4069 4070 4070 26 30 0 1 4 4 1 1 4 4 1 -4069 4069 4069 4069 4069 4051 4070 4052 30 30 0 1 4 4 1 1 4 4 1 -4069 4069 4069 4069 4069 4069 4070 4070 27 30 0 1 4 4 1 1 4 4 1 -4069 4069 4069 4069 4070 4052 4070 4052 30 31 0 1 4 4 1 1 4 4 1 -4069 4069 4069 4069 4070 4070 4070 4070 27 31 0 1 4 4 1 1 4 4 1 -4069 4069 4069 4087 4069 4069 4070 4070 26 30 0 1 4 4 1 1 4 4 1 -4069 4069 4069 4087 4070 4070 4070 4070 26 31 0 1 4 4 1 1 4 4 1 -4069 4069 4086 4086 4069 4069 4069 4069 24 29 0 1 4 4 1 1 4 4 1 -4069 4069 4086 4086 4069 4069 4070 4070 24 30 0 1 4 4 1 1 4 4 1 -4069 4069 4086 4086 4087 4069 4087 4069 22 29 0 1 4 4 1 1 4 4 1 -4069 4069 4086 4086 4087 4069 4088 4070 22 30 0 1 4 4 1 1 4 4 1 -4069 4069 4087 4087 4069 4069 4070 4070 24 30 0 1 4 4 1 1 4 4 1 -4069 4069 4087 4087 4070 4070 4070 4070 24 31 0 1 4 4 1 1 4 4 1 -4069 4069 4087 4087 4087 4069 4088 4070 22 30 0 1 4 4 1 1 4 4 1 -4069 4069 4087 4087 4088 4070 4088 4070 22 31 0 1 4 4 1 1 4 4 1 -4069 4087 4086 4086 4087 4069 4087 4069 20 29 0 1 4 4 1 1 4 4 1 -4069 4087 4086 4086 4087 4069 4088 4070 20 30 0 1 4 4 1 1 4 4 1 -4069 4087 4087 4087 4087 4069 4088 4070 20 30 0 1 4 4 1 1 4 4 1 -4069 4087 4087 4087 4088 4070 4088 4070 20 31 0 1 4 4 1 1 4 4 1 -4070 4070 4069 4069 4070 4052 4070 4052 30 31 0 1 4 4 1 1 4 4 1 -4070 4070 4069 4069 4070 4070 4070 4070 27 31 0 1 4 4 1 1 4 4 1 -4070 4070 4069 4087 4070 4070 4070 4070 26 31 0 1 4 4 1 1 4 4 1 -4070 4070 4070 4070 5037 5019 5037 5019 29 33 0 1 4 4 1 8 6 6 8 -4070 4070 4070 4070 5037 5037 5037 5037 26 33 0 1 4 4 1 8 6 6 8 -4070 4070 4070 4088 5037 5037 5037 5037 26 33 0 1 4 4 1 8 6 6 8 -4070 4070 4087 4087 4070 4070 4070 4070 24 31 0 1 4 4 1 1 4 4 1 -4070 4070 4087 4087 4088 4070 4088 4070 22 31 0 1 4 4 1 1 4 4 1 -4070 4070 4088 4088 5037 5037 5037 5037 23 33 0 1 4 4 1 8 6 6 8 -4070 4088 4087 4087 4088 4070 4088 4070 20 31 0 1 4 4 1 1 4 4 1 -4070 4088 4088 4088 5037 5037 5037 5037 20 33 0 1 4 4 1 8 6 6 8 -4071 4071 4070 4070 5037 5019 5037 5019 29 34 0 1 4 4 1 8 6 6 8 -4071 4071 4070 4070 5037 5037 5037 5037 26 34 0 1 4 4 1 8 6 6 8 -4071 4071 4070 4088 5037 5037 5037 5037 26 34 0 1 4 4 1 8 6 6 8 -4071 4071 4088 4088 5037 5037 5037 5037 23 34 0 1 4 4 1 8 6 6 8 -4071 4089 4088 4088 5037 5037 5037 5037 20 34 0 1 4 4 1 8 6 6 8 -4073 4073 4073 4073 4073 4055 4074 4056 18 2 0 0 0 0 0 0 0 0 0 -4073 4073 4073 4073 4073 4073 4074 4074 16 2 0 0 0 0 0 0 0 0 0 -4073 4073 4073 4073 4074 4056 4074 4056 18 3 0 0 0 0 0 0 0 0 0 -4073 4073 4073 4073 4074 4074 4074 4074 16 3 0 0 0 0 0 0 0 0 0 -4073 4073 4073 4091 4073 4073 4074 4074 14 2 0 0 0 0 0 0 0 0 0 -4073 4073 4073 4091 4074 4074 4074 4074 14 3 0 0 0 0 0 0 0 0 0 -4073 4073 4091 4091 4073 4073 4074 4074 13 2 0 0 0 0 0 0 0 0 0 -4073 4073 4091 4091 4074 4074 4074 4074 13 3 0 0 0 0 0 0 0 0 0 -4073 4073 4091 4091 4091 4073 4092 4074 10 2 0 0 0 0 0 0 0 0 0 -4073 4073 4091 4091 4092 4074 4092 4074 10 3 0 0 0 0 0 0 0 0 0 -4073 4091 4091 4091 4091 4073 4092 4074 9 2 0 0 0 0 0 0 0 0 0 -4073 4091 4091 4091 4092 4074 4092 4074 9 3 0 0 0 0 0 0 0 0 0 -4074 4074 4073 4073 4074 4056 4074 4056 18 3 0 0 0 0 0 0 0 0 0 -4074 4074 4073 4073 4074 4056 4075 4057 18 4 0 0 0 0 0 0 0 0 0 -4074 4074 4073 4073 4074 4074 4074 4074 16 3 0 0 0 0 0 0 0 0 0 -4074 4074 4073 4073 4074 4074 4075 4075 16 4 0 0 0 0 0 0 0 0 0 -4074 4074 4073 4091 4074 4074 4074 4074 14 3 0 0 0 0 0 0 0 0 0 -4074 4074 4073 4091 4074 4074 4075 4075 14 4 0 0 0 0 0 0 0 0 0 -4074 4074 4074 4074 4074 4056 4075 4057 18 4 0 0 0 0 0 0 0 0 0 -4074 4074 4074 4074 4074 4074 4075 4075 16 4 0 0 0 0 0 0 0 0 0 -4074 4074 4074 4074 4075 4057 4075 4057 18 5 0 0 0 0 0 0 0 0 0 -4074 4074 4074 4074 4075 4075 4075 4075 16 5 0 0 0 0 0 0 0 0 0 -4074 4074 4074 4092 4074 4074 4075 4075 14 4 0 0 0 0 0 0 0 0 0 -4074 4074 4074 4092 4075 4075 4075 4075 14 5 0 0 0 0 0 0 0 0 0 -4074 4074 4091 4091 4074 4074 4074 4074 13 3 0 0 0 0 0 0 0 0 0 -4074 4074 4091 4091 4074 4074 4075 4075 13 4 0 0 0 0 0 0 0 0 0 -4074 4074 4091 4091 4092 4074 4092 4074 10 3 0 0 0 0 0 0 0 0 0 -4074 4074 4091 4091 4092 4074 4093 4075 10 4 0 0 0 0 0 0 0 0 0 -4074 4074 4092 4092 4074 4074 4075 4075 13 4 0 0 0 0 0 0 0 0 0 -4074 4074 4092 4092 4075 4075 4075 4075 13 5 0 0 0 0 0 0 0 0 0 -4074 4074 4092 4092 4092 4074 4093 4075 10 4 0 0 0 0 0 0 0 0 0 -4074 4074 4092 4092 4093 4075 4093 4075 10 5 0 0 0 0 0 0 0 0 0 -4074 4092 4091 4091 4092 4074 4092 4074 9 3 0 0 0 0 0 0 0 0 0 -4074 4092 4091 4091 4092 4074 4093 4075 9 4 0 0 0 0 0 0 0 0 0 -4074 4092 4092 4092 4092 4074 4093 4075 9 4 0 0 0 0 0 0 0 0 0 -4074 4092 4092 4092 4093 4075 4093 4075 9 5 0 0 0 0 0 0 0 0 0 -4075 4075 4074 4074 4075 4057 4075 4057 18 5 0 0 0 0 0 0 0 0 0 -4075 4075 4074 4074 4075 4057 4076 4058 18 6 0 0 0 0 0 3 2 2 3 -4075 4075 4074 4074 4075 4075 4075 4075 16 5 0 0 0 0 0 0 0 0 0 -4075 4075 4074 4074 4075 4075 4076 4076 16 6 0 0 0 0 0 3 2 2 3 -4075 4075 4074 4092 4075 4075 4075 4075 14 5 0 0 0 0 0 0 0 0 0 -4075 4075 4074 4092 4075 4075 4076 4076 14 6 0 0 0 0 0 3 2 2 3 -4075 4075 4075 4075 4075 4057 4076 4058 18 6 0 0 0 0 0 3 2 2 3 -4075 4075 4075 4075 4075 4075 4076 4076 16 6 0 0 0 0 0 3 2 2 3 -4075 4075 4075 4075 4076 4058 4076 4058 18 7 0 3 2 2 3 3 2 2 3 -4075 4075 4075 4075 4076 4076 4076 4076 16 7 0 3 2 2 3 3 2 2 3 -4075 4075 4075 4093 4075 4075 4076 4076 14 6 0 0 0 0 0 3 2 2 3 -4075 4075 4075 4093 4076 4076 4076 4076 14 7 0 3 2 2 3 3 2 2 3 -4075 4075 4092 4092 4075 4075 4075 4075 13 5 0 0 0 0 0 0 0 0 0 -4075 4075 4092 4092 4075 4075 4076 4076 13 6 0 0 0 0 0 3 2 2 3 -4075 4075 4092 4092 4093 4075 4093 4075 10 5 0 0 0 0 0 0 0 0 0 -4075 4075 4092 4092 4093 4075 4094 4076 10 6 0 0 0 0 0 3 2 2 3 -4075 4075 4093 4093 4075 4075 4076 4076 13 6 0 0 0 0 0 3 2 2 3 -4075 4075 4093 4093 4076 4076 4076 4076 13 7 0 3 2 2 3 3 2 2 3 -4075 4075 4093 4093 4093 4075 4094 4076 10 6 0 0 0 0 0 3 2 2 3 -4075 4075 4093 4093 4094 4076 4094 4076 10 7 0 3 2 2 3 3 2 2 3 -4075 4093 4092 4092 4093 4075 4093 4075 9 5 0 0 0 0 0 0 0 0 0 -4075 4093 4092 4092 4093 4075 4094 4076 9 6 0 0 0 0 0 3 2 2 3 -4075 4093 4093 4093 4093 4075 4094 4076 9 6 0 0 0 0 0 3 2 2 3 -4075 4093 4093 4093 4094 4076 4094 4076 9 7 0 3 2 2 3 3 2 2 3 -4076 4076 4075 4075 4076 4058 4076 4058 18 7 0 3 2 2 3 3 2 2 3 -4076 4076 4075 4075 4076 4058 4077 4059 18 8 0 3 2 2 3 3 2 2 3 -4076 4076 4075 4075 4076 4076 4076 4076 16 7 0 3 2 2 3 3 2 2 3 -4076 4076 4075 4075 4076 4076 4077 4077 16 8 0 3 2 2 3 3 2 2 3 -4076 4076 4075 4093 4076 4076 4076 4076 14 7 0 3 2 2 3 3 2 2 3 -4076 4076 4075 4093 4076 4076 4077 4077 14 8 0 3 2 2 3 3 2 2 3 -4076 4076 4076 4076 4076 4058 4077 4059 18 8 0 3 2 2 3 3 2 2 3 -4076 4076 4076 4076 4076 4076 4077 4077 16 8 0 3 2 2 3 3 2 2 3 -4076 4076 4076 4076 4077 4059 4077 4059 18 9 0 3 2 2 3 3 2 2 3 -4076 4076 4076 4076 4077 4077 4077 4077 16 9 0 3 2 2 3 3 2 2 3 -4076 4076 4076 4094 4076 4076 4077 4077 14 8 0 3 2 2 3 3 2 2 3 -4076 4076 4076 4094 4077 4077 4077 4077 14 9 0 3 2 2 3 3 2 2 3 -4076 4076 4093 4093 4076 4076 4076 4076 13 7 0 3 2 2 3 3 2 2 3 -4076 4076 4093 4093 4076 4076 4077 4077 13 8 0 3 2 2 3 3 2 2 3 -4076 4076 4093 4093 4094 4076 4094 4076 10 7 0 3 2 2 3 3 2 2 3 -4076 4076 4093 4093 4094 4076 4095 4077 10 8 0 3 2 2 3 3 2 2 3 -4076 4076 4094 4094 4076 4076 4077 4077 13 8 0 3 2 2 3 3 2 2 3 -4076 4076 4094 4094 4077 4077 4077 4077 13 9 0 3 2 2 3 3 2 2 3 -4076 4076 4094 4094 4094 4076 4095 4077 10 8 0 3 2 2 3 3 2 2 3 -4076 4076 4094 4094 4095 4077 4095 4077 10 9 0 3 2 2 3 3 2 2 3 -4076 4094 4093 4093 4094 4076 4094 4076 9 7 0 3 2 2 3 3 2 2 3 -4076 4094 4093 4093 4094 4076 4095 4077 9 8 0 3 2 2 3 3 2 2 3 -4076 4094 4094 4094 4094 4076 4095 4077 9 8 0 3 2 2 3 3 2 2 3 -4076 4094 4094 4094 4095 4077 4095 4077 9 9 0 3 2 2 3 3 2 2 3 -4077 4077 4076 4076 4077 4059 4077 4059 18 9 0 3 2 2 3 3 2 2 3 -4077 4077 4076 4076 4077 4059 4078 4060 18 10 0 3 2 2 3 3 2 2 3 -4077 4077 4076 4076 4077 4077 4077 4077 16 9 0 3 2 2 3 3 2 2 3 -4077 4077 4076 4076 4077 4077 4078 4078 16 10 0 3 2 2 3 3 2 2 3 -4077 4077 4076 4094 4077 4077 4077 4077 14 9 0 3 2 2 3 3 2 2 3 -4077 4077 4076 4094 4077 4077 4078 4078 14 10 0 3 2 2 3 3 2 2 3 -4077 4077 4077 4077 4077 4059 4078 4060 18 10 0 3 2 2 3 3 2 2 3 -4077 4077 4077 4077 4077 4077 4078 4078 16 10 0 3 2 2 3 3 2 2 3 -4077 4077 4077 4077 4078 4060 4078 4060 18 11 0 3 2 2 3 3 2 2 3 -4077 4077 4077 4077 4078 4078 4078 4078 16 11 0 3 2 2 3 3 2 2 3 -4077 4077 4077 4095 4077 4077 4078 4078 14 10 0 3 2 2 3 3 2 2 3 -4077 4077 4077 4095 4078 4078 4078 4078 14 11 0 3 2 2 3 3 2 2 3 -4077 4077 4094 4094 4077 4077 4077 4077 13 9 0 3 2 2 3 3 2 2 3 -4077 4077 4094 4094 4077 4077 4078 4078 13 10 0 3 2 2 3 3 2 2 3 -4077 4077 4094 4094 4095 4077 4095 4077 10 9 0 3 2 2 3 3 2 2 3 -4077 4077 4094 4094 4095 4077 4096 4078 10 10 0 3 2 2 3 3 2 2 3 -4077 4077 4095 4095 4077 4077 4078 4078 13 10 0 3 2 2 3 3 2 2 3 -4077 4077 4095 4095 4078 4078 4078 4078 13 11 0 3 2 2 3 3 2 2 3 -4077 4077 4095 4095 4095 4077 4096 4078 10 10 0 3 2 2 3 3 2 2 3 -4077 4077 4095 4095 4096 4078 4096 4078 10 11 0 3 2 2 3 3 2 2 3 -4077 4095 4094 4094 4095 4077 4095 4077 9 9 0 3 2 2 3 3 2 2 3 -4077 4095 4094 4094 4095 4077 4096 4078 9 10 0 3 2 2 3 3 2 2 3 -4077 4095 4095 4095 4095 4077 4096 4078 9 10 0 3 2 2 3 3 2 2 3 -4077 4095 4095 4095 4096 4078 4096 4078 9 11 0 3 2 2 3 3 2 2 3 -4078 4078 4077 4077 4078 4060 4078 4060 18 11 0 3 2 2 3 3 2 2 3 -4078 4078 4077 4077 4078 4060 4079 4061 18 12 0 3 2 2 3 2 2 2 2 -4078 4078 4077 4077 4078 4060 4079 4061 18 12 1 0 0 0 0 3 3 3 3 -4078 4078 4077 4077 4078 4078 4078 4078 16 11 0 3 2 2 3 3 2 2 3 -4078 4078 4077 4077 4078 4078 4079 4079 16 12 0 3 2 2 3 2 2 2 2 -4078 4078 4077 4077 4078 4078 4079 4079 16 12 1 0 0 0 0 3 3 3 3 -4078 4078 4077 4095 4078 4078 4078 4078 14 11 0 3 2 2 3 3 2 2 3 -4078 4078 4077 4095 4078 4078 4079 4079 14 12 0 3 2 2 3 2 2 2 2 -4078 4078 4077 4095 4078 4078 4079 4079 14 12 1 0 0 0 0 3 3 3 3 -4078 4078 4078 4078 4078 4060 4079 4061 18 12 0 3 2 2 3 2 2 2 2 -4078 4078 4078 4078 4078 4060 4079 4061 18 12 1 0 0 0 0 3 3 3 3 -4078 4078 4078 4078 4078 4078 4079 4079 16 12 0 3 2 2 3 2 2 2 2 -4078 4078 4078 4078 4078 4078 4079 4079 16 12 1 0 0 0 0 3 3 3 3 -4078 4078 4078 4078 4079 4061 4079 4061 18 13 0 3 2 2 3 2 3 3 2 -4078 4078 4078 4078 4079 4079 4079 4079 16 13 0 3 2 2 3 2 3 3 2 -4078 4078 4078 4096 4078 4078 4079 4079 14 12 0 3 2 2 3 2 2 2 2 -4078 4078 4078 4096 4078 4078 4079 4079 14 12 1 0 0 0 0 3 3 3 3 -4078 4078 4078 4096 4079 4079 4079 4079 14 13 0 3 2 2 3 2 3 3 2 -4078 4078 4095 4095 4078 4078 4078 4078 13 11 0 3 2 2 3 3 2 2 3 -4078 4078 4095 4095 4078 4078 4079 4079 13 12 0 3 2 2 3 2 2 2 2 -4078 4078 4095 4095 4078 4078 4079 4079 13 12 1 0 0 0 0 3 3 3 3 -4078 4078 4095 4095 4096 4078 4096 4078 10 11 0 3 2 2 3 3 2 2 3 -4078 4078 4095 4095 4096 4078 4097 4079 10 12 0 3 2 2 3 2 2 2 2 -4078 4078 4095 4095 4096 4078 4097 4079 10 12 1 0 0 0 0 3 3 3 3 -4078 4078 4096 4096 4078 4078 4079 4079 13 12 0 3 2 2 3 2 2 2 2 -4078 4078 4096 4096 4078 4078 4079 4079 13 12 1 0 0 0 0 3 3 3 3 -4078 4078 4096 4096 4079 4079 4079 4079 13 13 0 3 2 2 3 2 3 3 2 -4078 4078 4096 4096 4096 4078 4097 4079 10 12 0 3 2 2 3 2 2 2 2 -4078 4078 4096 4096 4096 4078 4097 4079 10 12 1 0 0 0 0 3 3 3 3 -4078 4078 4096 4096 4097 4079 4097 4079 10 13 0 3 2 2 3 2 3 3 2 -4078 4096 4095 4095 4096 4078 4096 4078 9 11 0 3 2 2 3 3 2 2 3 -4078 4096 4095 4095 4096 4078 4097 4079 9 12 0 3 2 2 3 2 2 2 2 -4078 4096 4095 4095 4096 4078 4097 4079 9 12 1 0 0 0 0 3 3 3 3 -4078 4096 4096 4096 4096 4078 4097 4079 9 12 0 3 2 2 3 2 2 2 2 -4078 4096 4096 4096 4096 4078 4097 4079 9 12 1 0 0 0 0 3 3 3 3 -4078 4096 4096 4096 4097 4079 4097 4079 9 13 0 3 2 2 3 2 3 3 2 -4079 4079 4078 4078 4079 4061 4079 4061 18 13 0 3 2 2 3 2 3 3 2 -4079 4079 4078 4078 4079 4061 4080 4062 18 14 0 2 2 3 2 2 3 3 2 -4079 4079 4078 4078 4079 4061 4080 4062 18 14 1 3 3 0 0 0 0 0 0 -4079 4079 4078 4078 4079 4079 4079 4079 16 13 0 3 2 2 3 2 3 3 2 -4079 4079 4078 4078 4079 4079 4080 4080 16 14 0 2 2 3 2 2 3 3 2 -4079 4079 4078 4078 4079 4079 4080 4080 16 14 1 3 3 0 0 0 0 0 0 -4079 4079 4078 4096 4079 4079 4079 4079 14 13 0 3 2 2 3 2 3 3 2 -4079 4079 4078 4096 4079 4079 4080 4080 14 14 0 2 2 3 2 2 3 3 2 -4079 4079 4078 4096 4079 4079 4080 4080 14 14 1 3 3 0 0 0 0 0 0 -4079 4079 4079 4079 4079 4061 4080 4062 18 14 0 2 2 3 2 2 3 3 2 -4079 4079 4079 4079 4079 4061 4080 4062 18 14 1 3 3 0 0 0 0 0 0 -4079 4079 4079 4079 4079 4079 4080 4080 16 14 0 2 2 3 2 2 3 3 2 -4079 4079 4079 4079 4079 4079 4080 4080 16 14 1 3 3 0 0 0 0 0 0 -4079 4079 4079 4079 4080 4062 4080 4062 18 15 0 2 3 3 2 2 3 3 2 -4079 4079 4079 4079 4080 4080 4080 4080 16 15 0 2 3 3 2 2 3 3 2 -4079 4079 4079 4097 4079 4079 4080 4080 14 14 0 2 2 3 2 2 3 3 2 -4079 4079 4079 4097 4079 4079 4080 4080 14 14 1 3 3 0 0 0 0 0 0 -4079 4079 4079 4097 4080 4080 4080 4080 14 15 0 2 3 3 2 2 3 3 2 -4079 4079 4096 4096 4079 4079 4079 4079 13 13 0 3 2 2 3 2 3 3 2 -4079 4079 4096 4096 4079 4079 4080 4080 13 14 0 2 2 3 2 2 3 3 2 -4079 4079 4096 4096 4079 4079 4080 4080 13 14 1 3 3 0 0 0 0 0 0 -4079 4079 4096 4096 4097 4079 4097 4079 10 13 0 3 2 2 3 2 3 3 2 -4079 4079 4096 4096 4097 4079 4098 4080 10 14 0 2 2 3 2 2 3 3 2 -4079 4079 4096 4096 4097 4079 4098 4080 10 14 1 3 3 0 0 0 0 0 0 -4079 4079 4097 4097 4079 4079 4080 4080 13 14 0 2 2 3 2 2 3 3 2 -4079 4079 4097 4097 4079 4079 4080 4080 13 14 1 3 3 0 0 0 0 0 0 -4079 4079 4097 4097 4080 4080 4080 4080 13 15 0 2 3 3 2 2 3 3 2 -4079 4079 4097 4097 4097 4079 4098 4080 10 14 0 2 2 3 2 2 3 3 2 -4079 4079 4097 4097 4097 4079 4098 4080 10 14 1 3 3 0 0 0 0 0 0 -4079 4079 4097 4097 4098 4080 4098 4080 10 15 0 2 3 3 2 2 3 3 2 -4079 4097 4096 4096 4097 4079 4097 4079 9 13 0 3 2 2 3 2 3 3 2 -4079 4097 4096 4096 4097 4079 4098 4080 9 14 0 2 2 3 2 2 3 3 2 -4079 4097 4096 4096 4097 4079 4098 4080 9 14 1 3 3 0 0 0 0 0 0 -4079 4097 4097 4097 4097 4079 4098 4080 9 14 0 2 2 3 2 2 3 3 2 -4079 4097 4097 4097 4097 4079 4098 4080 9 14 1 3 3 0 0 0 0 0 0 -4079 4097 4097 4097 4098 4080 4098 4080 9 15 0 2 3 3 2 2 3 3 2 -4080 4080 4079 4079 4080 4062 4080 4062 18 15 0 2 3 3 2 2 3 3 2 -4080 4080 4079 4079 4080 4062 4081 4063 18 16 0 2 3 3 2 2 3 3 2 -4080 4080 4079 4079 4080 4080 4080 4080 16 15 0 2 3 3 2 2 3 3 2 -4080 4080 4079 4079 4080 4080 4081 4081 16 16 0 2 3 3 2 2 3 3 2 -4080 4080 4079 4097 4080 4080 4080 4080 14 15 0 2 3 3 2 2 3 3 2 -4080 4080 4079 4097 4080 4080 4081 4081 14 16 0 2 3 3 2 2 3 3 2 -4080 4080 4080 4080 4080 4062 4081 4063 18 16 0 2 3 3 2 2 3 3 2 -4080 4080 4080 4080 4080 4080 4081 4081 16 16 0 2 3 3 2 2 3 3 2 -4080 4080 4080 4080 4081 4063 4081 4063 18 17 0 2 3 3 2 2 3 3 2 -4080 4080 4080 4080 4081 4081 4081 4081 16 17 0 2 3 3 2 2 3 3 2 -4080 4080 4080 4098 4080 4080 4081 4081 14 16 0 2 3 3 2 2 3 3 2 -4080 4080 4080 4098 4081 4081 4081 4081 14 17 0 2 3 3 2 2 3 3 2 -4080 4080 4097 4097 4080 4080 4080 4080 13 15 0 2 3 3 2 2 3 3 2 -4080 4080 4097 4097 4080 4080 4081 4081 13 16 0 2 3 3 2 2 3 3 2 -4080 4080 4097 4097 4098 4080 4098 4080 10 15 0 2 3 3 2 2 3 3 2 -4080 4080 4097 4097 4098 4080 4099 4081 10 16 0 2 3 3 2 2 3 3 2 -4080 4080 4098 4098 4080 4080 4081 4081 13 16 0 2 3 3 2 2 3 3 2 -4080 4080 4098 4098 4081 4081 4081 4081 13 17 0 2 3 3 2 2 3 3 2 -4080 4080 4098 4098 4098 4080 4099 4081 10 16 0 2 3 3 2 2 3 3 2 -4080 4080 4098 4098 4099 4081 4099 4081 10 17 0 2 3 3 2 2 3 3 2 -4080 4098 4097 4097 4098 4080 4098 4080 9 15 0 2 3 3 2 2 3 3 2 -4080 4098 4097 4097 4098 4080 4099 4081 9 16 0 2 3 3 2 2 3 3 2 -4080 4098 4098 4098 4098 4080 4099 4081 9 16 0 2 3 3 2 2 3 3 2 -4080 4098 4098 4098 4099 4081 4099 4081 9 17 0 2 3 3 2 2 3 3 2 -4081 4081 4080 4080 4081 4063 4081 4063 18 17 0 2 3 3 2 2 3 3 2 -4081 4081 4080 4080 4081 4063 4082 4064 18 18 0 2 3 3 2 2 3 3 2 -4081 4081 4080 4080 4081 4081 4081 4081 16 17 0 2 3 3 2 2 3 3 2 -4081 4081 4080 4080 4081 4081 4082 4082 16 18 0 2 3 3 2 2 3 3 2 -4081 4081 4080 4098 4081 4081 4081 4081 14 17 0 2 3 3 2 2 3 3 2 -4081 4081 4080 4098 4081 4081 4082 4082 14 18 0 2 3 3 2 2 3 3 2 -4081 4081 4081 4081 4081 4063 4082 4064 18 18 0 2 3 3 2 2 3 3 2 -4081 4081 4081 4081 4081 4081 4082 4082 16 18 0 2 3 3 2 2 3 3 2 -4081 4081 4081 4081 4082 4064 4082 4064 18 19 0 2 3 3 2 2 3 3 2 -4081 4081 4081 4081 4082 4082 4082 4082 16 19 0 2 3 3 2 2 3 3 2 -4081 4081 4081 4099 4081 4081 4082 4082 14 18 0 2 3 3 2 2 3 3 2 -4081 4081 4081 4099 4082 4082 4082 4082 14 19 0 2 3 3 2 2 3 3 2 -4081 4081 4098 4098 4081 4081 4081 4081 13 17 0 2 3 3 2 2 3 3 2 -4081 4081 4098 4098 4081 4081 4082 4082 13 18 0 2 3 3 2 2 3 3 2 -4081 4081 4098 4098 4099 4081 4099 4081 10 17 0 2 3 3 2 2 3 3 2 -4081 4081 4098 4098 4099 4081 4100 4082 10 18 0 2 3 3 2 2 3 3 2 -4081 4081 4099 4099 4081 4081 4082 4082 13 18 0 2 3 3 2 2 3 3 2 -4081 4081 4099 4099 4082 4082 4082 4082 13 19 0 2 3 3 2 2 3 3 2 -4081 4081 4099 4099 4099 4081 4100 4082 10 18 0 2 3 3 2 2 3 3 2 -4081 4081 4099 4099 4100 4082 4100 4082 10 19 0 2 3 3 2 2 3 3 2 -4081 4099 4098 4098 4099 4081 4099 4081 9 17 0 2 3 3 2 2 3 3 2 -4081 4099 4098 4098 4099 4081 4100 4082 9 18 0 2 3 3 2 2 3 3 2 -4081 4099 4099 4099 4099 4081 4100 4082 9 18 0 2 3 3 2 2 3 3 2 -4081 4099 4099 4099 4100 4082 4100 4082 9 19 0 2 3 3 2 2 3 3 2 -4082 4082 4081 4081 4082 4064 4082 4064 18 19 0 2 3 3 2 2 3 3 2 -4082 4082 4081 4081 4082 4064 4083 4065 18 20 0 2 3 3 2 2 3 3 2 -4082 4082 4081 4081 4082 4082 4082 4082 16 19 0 2 3 3 2 2 3 3 2 -4082 4082 4081 4081 4082 4082 4083 4083 16 20 0 2 3 3 2 2 3 3 2 -4082 4082 4081 4099 4082 4082 4082 4082 14 19 0 2 3 3 2 2 3 3 2 -4082 4082 4081 4099 4082 4082 4083 4083 14 20 0 2 3 3 2 2 3 3 2 -4082 4082 4082 4082 4082 4064 4083 4065 18 20 0 2 3 3 2 2 3 3 2 -4082 4082 4082 4082 4082 4082 4083 4083 16 20 0 2 3 3 2 2 3 3 2 -4082 4082 4082 4082 4083 4065 4083 4065 18 21 0 2 3 3 2 2 3 3 2 -4082 4082 4082 4082 4083 4083 4083 4083 16 21 0 2 3 3 2 2 3 3 2 -4082 4082 4082 4100 4082 4082 4083 4083 14 20 0 2 3 3 2 2 3 3 2 -4082 4082 4082 4100 4083 4083 4083 4083 14 21 0 2 3 3 2 2 3 3 2 -4082 4082 4099 4099 4082 4082 4082 4082 13 19 0 2 3 3 2 2 3 3 2 -4082 4082 4099 4099 4082 4082 4083 4083 13 20 0 2 3 3 2 2 3 3 2 -4082 4082 4099 4099 4100 4082 4100 4082 10 19 0 2 3 3 2 2 3 3 2 -4082 4082 4099 4099 4100 4082 4101 4083 10 20 0 2 3 3 2 2 3 3 2 -4082 4082 4100 4100 4082 4082 4083 4083 13 20 0 2 3 3 2 2 3 3 2 -4082 4082 4100 4100 4083 4083 4083 4083 13 21 0 2 3 3 2 2 3 3 2 -4082 4082 4100 4100 4100 4082 4101 4083 10 20 0 2 3 3 2 2 3 3 2 -4082 4082 4100 4100 4101 4083 4101 4083 10 21 0 2 3 3 2 2 3 3 2 -4082 4100 4099 4099 4100 4082 4100 4082 9 19 0 2 3 3 2 2 3 3 2 -4082 4100 4099 4099 4100 4082 4101 4083 9 20 0 2 3 3 2 2 3 3 2 -4082 4100 4100 4100 4100 4082 4101 4083 9 20 0 2 3 3 2 2 3 3 2 -4082 4100 4100 4100 4101 4083 4101 4083 9 21 0 2 3 3 2 2 3 3 2 -4083 4083 4082 4082 4083 4065 4083 4065 18 21 0 2 3 3 2 2 3 3 2 -4083 4083 4082 4082 4083 4065 4084 4066 18 22 0 2 3 3 2 1 3 3 1 -4083 4083 4082 4082 4083 4065 4084 4066 18 22 1 0 0 0 0 2 4 4 2 -4083 4083 4082 4082 4083 4083 4083 4083 16 21 0 2 3 3 2 2 3 3 2 -4083 4083 4082 4082 4083 4083 4084 4084 16 22 0 2 3 3 2 1 3 3 1 -4083 4083 4082 4082 4083 4083 4084 4084 16 22 1 0 0 0 0 2 4 4 2 -4083 4083 4082 4100 4083 4083 4083 4083 14 21 0 2 3 3 2 2 3 3 2 -4083 4083 4082 4100 4083 4083 4084 4084 14 22 0 2 3 3 2 1 3 3 1 -4083 4083 4082 4100 4083 4083 4084 4084 14 22 1 0 0 0 0 2 4 4 2 -4083 4083 4083 4083 4083 4065 4084 4066 18 22 0 2 3 3 2 1 3 3 1 -4083 4083 4083 4083 4083 4065 4084 4066 18 22 1 0 0 0 0 2 4 4 2 -4083 4083 4083 4083 4083 4083 4084 4084 16 22 0 2 3 3 2 1 3 3 1 -4083 4083 4083 4083 4083 4083 4084 4084 16 22 1 0 0 0 0 2 4 4 2 -4083 4083 4083 4083 4084 4066 4084 4066 18 23 0 2 3 3 2 1 4 4 1 -4083 4083 4083 4083 4084 4084 4084 4084 16 23 0 2 3 3 2 1 4 4 1 -4083 4083 4083 4101 4083 4083 4084 4084 14 22 0 2 3 3 2 1 3 3 1 -4083 4083 4083 4101 4083 4083 4084 4084 14 22 1 0 0 0 0 2 4 4 2 -4083 4083 4083 4101 4084 4084 4084 4084 14 23 0 2 3 3 2 1 4 4 1 -4083 4083 4100 4100 4083 4083 4083 4083 13 21 0 2 3 3 2 2 3 3 2 -4083 4083 4100 4100 4083 4083 4084 4084 13 22 0 2 3 3 2 1 3 3 1 -4083 4083 4100 4100 4083 4083 4084 4084 13 22 1 0 0 0 0 2 4 4 2 -4083 4083 4100 4100 4101 4083 4101 4083 10 21 0 2 3 3 2 2 3 3 2 -4083 4083 4100 4100 4101 4083 4102 4084 10 22 0 2 3 3 2 1 3 3 1 -4083 4083 4100 4100 4101 4083 4102 4084 10 22 1 0 0 0 0 2 4 4 2 -4083 4083 4101 4101 4083 4083 4084 4084 13 22 0 2 3 3 2 1 3 3 1 -4083 4083 4101 4101 4083 4083 4084 4084 13 22 1 0 0 0 0 2 4 4 2 -4083 4083 4101 4101 4084 4084 4084 4084 13 23 0 2 3 3 2 1 4 4 1 -4083 4083 4101 4101 4101 4083 4102 4084 10 22 0 2 3 3 2 1 3 3 1 -4083 4083 4101 4101 4101 4083 4102 4084 10 22 1 0 0 0 0 2 4 4 2 -4083 4083 4101 4101 4102 4084 4102 4084 10 23 0 2 3 3 2 1 4 4 1 -4083 4101 4100 4100 4101 4083 4101 4083 9 21 0 2 3 3 2 2 3 3 2 -4083 4101 4100 4100 4101 4083 4102 4084 9 22 0 2 3 3 2 1 3 3 1 -4083 4101 4100 4100 4101 4083 4102 4084 9 22 1 0 0 0 0 2 4 4 2 -4083 4101 4101 4101 4101 4083 4102 4084 9 22 0 2 3 3 2 1 3 3 1 -4083 4101 4101 4101 4101 4083 4102 4084 9 22 1 0 0 0 0 2 4 4 2 -4083 4101 4101 4101 4102 4084 4102 4084 9 23 0 2 3 3 2 1 4 4 1 -4084 4084 4083 4083 4084 4066 4084 4066 18 23 0 2 3 3 2 1 4 4 1 -4084 4084 4083 4083 4084 4066 4085 4067 18 24 0 1 3 3 1 1 4 4 1 -4084 4084 4083 4083 4084 4066 4085 4067 18 24 1 2 4 4 2 0 0 0 0 -4084 4084 4083 4083 4084 4084 4084 4084 16 23 0 2 3 3 2 1 4 4 1 -4084 4084 4083 4083 4084 4084 4085 4085 16 24 0 1 3 3 1 1 4 4 1 -4084 4084 4083 4083 4084 4084 4085 4085 16 24 1 2 4 4 2 0 0 0 0 -4084 4084 4083 4101 4084 4084 4084 4084 14 23 0 2 3 3 2 1 4 4 1 -4084 4084 4083 4101 4084 4084 4085 4085 14 24 0 1 3 3 1 1 4 4 1 -4084 4084 4083 4101 4084 4084 4085 4085 14 24 1 2 4 4 2 0 0 0 0 -4084 4084 4084 4084 4084 4066 4085 4067 18 24 0 1 3 3 1 1 4 4 1 -4084 4084 4084 4084 4084 4066 4085 4067 18 24 1 2 4 4 2 0 0 0 0 -4084 4084 4084 4084 4084 4084 4085 4085 16 24 0 1 3 3 1 1 4 4 1 -4084 4084 4084 4084 4084 4084 4085 4085 16 24 1 2 4 4 2 0 0 0 0 -4084 4084 4084 4084 4085 4067 4085 4067 19 25 0 1 4 4 1 1 4 4 1 -4084 4084 4084 4084 4085 4085 4085 4085 16 25 0 1 4 4 1 1 4 4 1 -4084 4084 4084 4102 4084 4084 4085 4085 14 24 0 1 3 3 1 1 4 4 1 -4084 4084 4084 4102 4084 4084 4085 4085 14 24 1 2 4 4 2 0 0 0 0 -4084 4084 4084 4102 4085 4085 4085 4085 14 25 0 1 4 4 1 1 4 4 1 -4084 4084 4101 4101 4084 4084 4084 4084 13 23 0 2 3 3 2 1 4 4 1 -4084 4084 4101 4101 4084 4084 4085 4085 13 24 0 1 3 3 1 1 4 4 1 -4084 4084 4101 4101 4084 4084 4085 4085 13 24 1 2 4 4 2 0 0 0 0 -4084 4084 4101 4101 4102 4084 4102 4084 10 23 0 2 3 3 2 1 4 4 1 -4084 4084 4101 4101 4102 4084 4103 4085 10 24 0 1 3 3 1 1 4 4 1 -4084 4084 4101 4101 4102 4084 4103 4085 10 24 1 2 4 4 2 0 0 0 0 -4084 4084 4102 4102 4084 4084 4085 4085 13 24 0 1 3 3 1 1 4 4 1 -4084 4084 4102 4102 4084 4084 4085 4085 13 24 1 2 4 4 2 0 0 0 0 -4084 4084 4102 4102 4085 4085 4085 4085 13 25 0 1 4 4 1 1 4 4 1 -4084 4084 4102 4102 4102 4084 4103 4085 10 24 0 1 3 3 1 1 4 4 1 -4084 4084 4102 4102 4102 4084 4103 4085 10 24 1 2 4 4 2 0 0 0 0 -4084 4084 4102 4102 4103 4085 4103 4085 10 25 0 1 4 4 1 1 4 4 1 -4084 4102 4101 4101 4102 4084 4102 4084 9 23 0 2 3 3 2 1 4 4 1 -4084 4102 4101 4101 4102 4084 4103 4085 9 24 0 1 3 3 1 1 4 4 1 -4084 4102 4101 4101 4102 4084 4103 4085 9 24 1 2 4 4 2 0 0 0 0 -4084 4102 4102 4102 4102 4084 4103 4085 9 24 0 1 3 3 1 1 4 4 1 -4084 4102 4102 4102 4102 4084 4103 4085 9 24 1 2 4 4 2 0 0 0 0 -4084 4102 4102 4102 4103 4085 4103 4085 9 25 0 1 4 4 1 1 4 4 1 -4085 4085 4084 4084 4085 4067 4085 4067 19 25 0 1 4 4 1 1 4 4 1 -4085 4085 4084 4084 4085 4067 4086 4068 19 26 0 1 4 4 1 1 4 4 1 -4085 4085 4084 4084 4085 4085 4085 4085 16 25 0 1 4 4 1 1 4 4 1 -4085 4085 4084 4084 4085 4085 4086 4086 16 26 0 1 4 4 1 1 4 4 1 -4085 4085 4084 4102 4085 4085 4085 4085 14 25 0 1 4 4 1 1 4 4 1 -4085 4085 4084 4102 4085 4085 4086 4086 14 26 0 1 4 4 1 1 4 4 1 -4085 4085 4085 4085 4085 4067 4086 4068 19 26 0 1 4 4 1 1 4 4 1 -4085 4085 4085 4085 4085 4085 4086 4086 16 26 0 1 4 4 1 1 4 4 1 -4085 4085 4085 4085 4086 4068 4086 4068 19 27 0 1 4 4 1 1 4 4 1 -4085 4085 4085 4085 4086 4086 4086 4086 16 27 0 1 4 4 1 1 4 4 1 -4085 4085 4085 4103 4085 4085 4086 4086 14 26 0 1 4 4 1 1 4 4 1 -4085 4085 4085 4103 4086 4086 4086 4086 14 27 0 1 4 4 1 1 4 4 1 -4085 4085 4102 4102 4085 4085 4085 4085 13 25 0 1 4 4 1 1 4 4 1 -4085 4085 4102 4102 4085 4085 4086 4086 13 26 0 1 4 4 1 1 4 4 1 -4085 4085 4102 4102 4103 4085 4103 4085 10 25 0 1 4 4 1 1 4 4 1 -4085 4085 4102 4102 4103 4085 4104 4086 10 26 0 1 4 4 1 1 4 4 1 -4085 4085 4103 4103 4085 4085 4086 4086 13 26 0 1 4 4 1 1 4 4 1 -4085 4085 4103 4103 4086 4086 4086 4086 13 27 0 1 4 4 1 1 4 4 1 -4085 4085 4103 4103 4103 4085 4104 4086 10 26 0 1 4 4 1 1 4 4 1 -4085 4085 4103 4103 4104 4086 4104 4086 10 27 0 1 4 4 1 1 4 4 1 -4085 4103 4102 4102 4103 4085 4103 4085 9 25 0 1 4 4 1 1 4 4 1 -4085 4103 4102 4102 4103 4085 4104 4086 9 26 0 1 4 4 1 1 4 4 1 -4085 4103 4103 4103 4103 4085 4104 4086 9 26 0 1 4 4 1 1 4 4 1 -4085 4103 4103 4103 4104 4086 4104 4086 9 27 0 1 4 4 1 1 4 4 1 -4086 4086 4085 4085 4086 4068 4086 4068 19 27 0 1 4 4 1 1 4 4 1 -4086 4086 4085 4085 4086 4068 4087 4069 19 28 0 1 4 4 1 1 4 4 1 -4086 4086 4085 4085 4086 4086 4086 4086 16 27 0 1 4 4 1 1 4 4 1 -4086 4086 4085 4085 4086 4086 4087 4087 16 28 0 1 4 4 1 1 4 4 1 -4086 4086 4085 4103 4086 4086 4086 4086 14 27 0 1 4 4 1 1 4 4 1 -4086 4086 4085 4103 4086 4086 4087 4087 14 28 0 1 4 4 1 1 4 4 1 -4086 4086 4086 4086 4086 4068 4087 4069 19 28 0 1 4 4 1 1 4 4 1 -4086 4086 4086 4086 4086 4086 4087 4087 16 28 0 1 4 4 1 1 4 4 1 -4086 4086 4086 4086 4087 4069 4087 4069 19 29 0 1 4 4 1 1 4 4 1 -4086 4086 4086 4086 4087 4087 4087 4087 16 29 0 1 4 4 1 1 4 4 1 -4086 4086 4086 4104 4086 4086 4087 4087 14 28 0 1 4 4 1 1 4 4 1 -4086 4086 4086 4104 4087 4087 4087 4087 14 29 0 1 4 4 1 1 4 4 1 -4086 4086 4103 4103 4086 4086 4086 4086 13 27 0 1 4 4 1 1 4 4 1 -4086 4086 4103 4103 4086 4086 4087 4087 13 28 0 1 4 4 1 1 4 4 1 -4086 4086 4103 4103 4104 4086 4104 4086 10 27 0 1 4 4 1 1 4 4 1 -4086 4086 4103 4103 4104 4086 4105 4087 10 28 0 1 4 4 1 1 4 4 1 -4086 4086 4104 4104 4086 4086 4087 4087 13 28 0 1 4 4 1 1 4 4 1 -4086 4086 4104 4104 4087 4087 4087 4087 13 29 0 1 4 4 1 1 4 4 1 -4086 4086 4104 4104 4104 4086 4105 4087 10 28 0 1 4 4 1 1 4 4 1 -4086 4086 4104 4104 4105 4087 4105 4087 10 29 0 1 4 4 1 1 4 4 1 -4086 4104 4103 4103 4104 4086 4104 4086 9 27 0 1 4 4 1 1 4 4 1 -4086 4104 4103 4103 4104 4086 4105 4087 9 28 0 1 4 4 1 1 4 4 1 -4086 4104 4104 4104 4104 4086 4105 4087 9 28 0 1 4 4 1 1 4 4 1 -4086 4104 4104 4104 4105 4087 4105 4087 9 29 0 1 4 4 1 1 4 4 1 -4087 4087 4086 4086 4087 4069 4087 4069 19 29 0 1 4 4 1 1 4 4 1 -4087 4087 4086 4086 4087 4069 4088 4070 19 30 0 1 4 4 1 1 4 4 1 -4087 4087 4086 4086 4087 4087 4087 4087 16 29 0 1 4 4 1 1 4 4 1 -4087 4087 4086 4086 4087 4087 4088 4088 16 30 0 1 4 4 1 1 4 4 1 -4087 4087 4086 4104 4087 4087 4087 4087 14 29 0 1 4 4 1 1 4 4 1 -4087 4087 4086 4104 4087 4087 4088 4088 14 30 0 1 4 4 1 1 4 4 1 -4087 4087 4087 4087 4087 4069 4088 4070 19 30 0 1 4 4 1 1 4 4 1 -4087 4087 4087 4087 4087 4087 4088 4088 16 30 0 1 4 4 1 1 4 4 1 -4087 4087 4087 4087 4088 4070 4088 4070 19 31 0 1 4 4 1 1 4 4 1 -4087 4087 4087 4087 4088 4088 4088 4088 16 31 0 1 4 4 1 1 4 4 1 -4087 4087 4087 4105 4087 4087 4088 4088 14 30 0 1 4 4 1 1 4 4 1 -4087 4087 4087 4105 4088 4088 4088 4088 14 31 0 1 4 4 1 1 4 4 1 -4087 4087 4104 4104 4087 4087 4087 4087 13 29 0 1 4 4 1 1 4 4 1 -4087 4087 4104 4104 4087 4087 4088 4088 13 30 0 1 4 4 1 1 4 4 1 -4087 4087 4104 4104 4105 4087 4105 4087 10 29 0 1 4 4 1 1 4 4 1 -4087 4087 4104 4104 4105 4087 4106 4088 10 30 0 1 4 4 1 1 4 4 1 -4087 4087 4105 4105 4087 4087 4088 4088 13 30 0 1 4 4 1 1 4 4 1 -4087 4087 4105 4105 4088 4088 4088 4088 13 31 0 1 4 4 1 1 4 4 1 -4087 4087 4105 4105 4105 4087 4106 4088 10 30 0 1 4 4 1 1 4 4 1 -4087 4087 4105 4105 4106 4088 4106 4088 10 31 0 1 4 4 1 1 4 4 1 -4087 4105 4104 4104 4105 4087 4105 4087 9 29 0 1 4 4 1 1 4 4 1 -4087 4105 4104 4104 4105 4087 4106 4088 9 30 0 1 4 4 1 1 4 4 1 -4087 4105 4105 4105 4105 4087 4106 4088 9 30 0 1 4 4 1 1 4 4 1 -4087 4105 4105 4105 4106 4088 4106 4088 9 31 0 1 4 4 1 1 4 4 1 -4088 4088 4087 4087 4088 4070 4088 4070 19 31 0 1 4 4 1 1 4 4 1 -4088 4088 4087 4087 4088 4088 4088 4088 16 31 0 1 4 4 1 1 4 4 1 -4088 4088 4087 4105 4088 4088 4088 4088 14 31 0 1 4 4 1 1 4 4 1 -4088 4088 4088 4088 5037 5037 5037 5037 19 33 0 1 4 4 1 8 6 6 8 -4088 4088 4088 4088 5055 5037 5055 5037 17 33 0 1 4 4 1 8 6 6 8 -4088 4088 4088 4106 5055 5037 5055 5037 14 33 0 1 4 4 1 8 6 6 8 -4088 4088 4105 4105 4088 4088 4088 4088 13 31 0 1 4 4 1 1 4 4 1 -4088 4088 4105 4105 4106 4088 4106 4088 10 31 0 1 4 4 1 1 4 4 1 -4088 4088 4106 4106 5055 5037 5055 5037 12 33 0 1 4 4 1 8 6 6 8 -4088 4088 4106 4106 5055 5055 5055 5055 9 33 0 1 4 4 1 8 6 6 8 -4088 4106 4105 4105 4106 4088 4106 4088 9 31 0 1 4 4 1 1 4 4 1 -4088 4106 4106 4106 5055 5055 5055 5055 9 33 0 1 4 4 1 8 6 6 8 -4089 4089 4088 4088 5037 5037 5037 5037 19 34 0 1 4 4 1 8 6 6 8 -4089 4089 4088 4088 5055 5037 5055 5037 17 34 0 1 4 4 1 8 6 6 8 -4089 4089 4088 4106 5055 5037 5055 5037 14 34 0 1 4 4 1 8 6 6 8 -4089 4089 4106 4106 5055 5037 5055 5037 12 34 0 1 4 4 1 8 6 6 8 -4089 4089 4106 4106 5055 5055 5055 5055 9 34 0 1 4 4 1 8 6 6 8 -4089 4107 4106 4106 5055 5055 5055 5055 9 34 0 1 4 4 1 8 6 6 8 -4091 4091 4091 4091 4091 4073 4092 4074 7 2 0 0 0 0 0 0 0 0 0 -4091 4091 4091 4091 4091 4091 4092 4092 4 2 0 0 0 0 0 0 0 0 0 -4091 4091 4091 4091 4092 4074 4092 4074 7 3 0 0 0 0 0 0 0 0 0 -4091 4091 4091 4091 4092 4092 4092 4092 4 3 0 0 0 0 0 0 0 0 0 -4091 4091 4091 4109 4091 4091 4092 4092 3 2 0 0 0 0 0 0 0 0 0 -4091 4091 4091 4109 4092 4092 4092 4092 3 3 0 0 0 0 0 0 0 0 0 -4091 4091 4109 4109 4091 4091 4092 4092 1 2 0 0 0 0 0 0 0 0 0 -4091 4091 4109 4109 4092 4092 4092 4092 1 3 0 0 0 0 0 0 0 0 0 -4092 4092 4091 4091 4092 4074 4092 4074 7 3 0 0 0 0 0 0 0 0 0 -4092 4092 4091 4091 4092 4074 4093 4075 7 4 0 0 0 0 0 0 0 0 0 -4092 4092 4091 4091 4092 4092 4092 4092 4 3 0 0 0 0 0 0 0 0 0 -4092 4092 4091 4091 4092 4092 4093 4093 4 4 0 0 0 0 0 0 0 0 0 -4092 4092 4091 4109 4092 4092 4092 4092 3 3 0 0 0 0 0 0 0 0 0 -4092 4092 4091 4109 4092 4092 4093 4093 3 4 0 0 0 0 0 0 0 0 0 -4092 4092 4092 4092 4092 4074 4093 4075 7 4 0 0 0 0 0 0 0 0 0 -4092 4092 4092 4092 4092 4092 4093 4093 4 4 0 0 0 0 0 0 0 0 0 -4092 4092 4092 4092 4093 4075 4093 4075 7 5 0 0 0 0 0 0 0 0 0 -4092 4092 4092 4092 4093 4093 4093 4093 4 5 0 0 0 0 0 0 0 0 0 -4092 4092 4092 4110 4092 4092 4093 4093 3 4 0 0 0 0 0 0 0 0 0 -4092 4092 4092 4110 4093 4093 4093 4093 3 5 0 0 0 0 0 0 0 0 0 -4092 4092 4109 4109 4092 4092 4092 4092 1 3 0 0 0 0 0 0 0 0 0 -4092 4092 4109 4109 4092 4092 4093 4093 1 4 0 0 0 0 0 0 0 0 0 -4092 4092 4110 4110 4092 4092 4093 4093 1 4 0 0 0 0 0 0 0 0 0 -4092 4092 4110 4110 4093 4093 4093 4093 1 5 0 0 0 0 0 0 0 0 0 -4093 4093 4092 4092 4093 4075 4093 4075 7 5 0 0 0 0 0 0 0 0 0 -4093 4093 4092 4092 4093 4075 4094 4076 7 6 0 0 0 0 0 3 2 2 3 -4093 4093 4092 4092 4093 4093 4093 4093 4 5 0 0 0 0 0 0 0 0 0 -4093 4093 4092 4092 4093 4093 4094 4094 4 6 0 0 0 0 0 3 2 2 3 -4093 4093 4092 4110 4093 4093 4093 4093 3 5 0 0 0 0 0 0 0 0 0 -4093 4093 4092 4110 4093 4093 4094 4094 3 6 0 0 0 0 0 3 2 2 3 -4093 4093 4093 4093 4093 4075 4094 4076 7 6 0 0 0 0 0 3 2 2 3 -4093 4093 4093 4093 4093 4093 4094 4094 4 6 0 0 0 0 0 3 2 2 3 -4093 4093 4093 4093 4094 4076 4094 4076 7 7 0 3 2 2 3 3 2 2 3 -4093 4093 4093 4093 4094 4094 4094 4094 4 7 0 3 2 2 3 3 2 2 3 -4093 4093 4093 4111 4093 4093 4094 4094 3 6 0 0 0 0 0 3 2 2 3 -4093 4093 4093 4111 4094 4094 4094 4094 3 7 0 3 2 2 3 3 2 2 3 -4093 4093 4110 4110 4093 4093 4093 4093 1 5 0 0 0 0 0 0 0 0 0 -4093 4093 4110 4110 4093 4093 4094 4094 1 6 0 0 0 0 0 3 2 2 3 -4093 4093 4111 4111 4093 4093 4094 4094 1 6 0 0 0 0 0 3 2 2 3 -4093 4093 4111 4111 4094 4094 4094 4094 1 7 0 3 2 2 3 3 2 2 3 -4094 4094 4093 4093 4094 4076 4094 4076 7 7 0 3 2 2 3 3 2 2 3 -4094 4094 4093 4093 4094 4076 4095 4077 7 8 0 3 2 2 3 3 2 2 3 -4094 4094 4093 4093 4094 4094 4094 4094 4 7 0 3 2 2 3 3 2 2 3 -4094 4094 4093 4093 4094 4094 4095 4095 4 8 0 3 2 2 3 3 2 2 3 -4094 4094 4093 4111 4094 4094 4094 4094 3 7 0 3 2 2 3 3 2 2 3 -4094 4094 4093 4111 4094 4094 4095 4095 3 8 0 3 2 2 3 3 2 2 3 -4094 4094 4094 4094 4094 4076 4095 4077 7 8 0 3 2 2 3 3 2 2 3 -4094 4094 4094 4094 4094 4094 4095 4095 4 8 0 3 2 2 3 3 2 2 3 -4094 4094 4094 4094 4095 4077 4095 4077 7 9 0 3 2 2 3 3 2 2 3 -4094 4094 4094 4094 4095 4095 4095 4095 4 9 0 3 2 2 3 3 2 2 3 -4094 4094 4094 4112 4094 4094 4095 4095 3 8 0 3 2 2 3 3 2 2 3 -4094 4094 4094 4112 4095 4095 4095 4095 3 9 0 3 2 2 3 3 2 2 3 -4094 4094 4111 4111 4094 4094 4094 4094 1 7 0 3 2 2 3 3 2 2 3 -4094 4094 4111 4111 4094 4094 4095 4095 1 8 0 3 2 2 3 3 2 2 3 -4094 4094 4112 4112 4094 4094 4095 4095 1 8 0 3 2 2 3 3 2 2 3 -4094 4094 4112 4112 4095 4095 4095 4095 1 9 0 3 2 2 3 3 2 2 3 -4095 4095 4094 4094 4095 4077 4095 4077 7 9 0 3 2 2 3 3 2 2 3 -4095 4095 4094 4094 4095 4077 4096 4078 7 10 0 3 2 2 3 3 2 2 3 -4095 4095 4094 4094 4095 4095 4095 4095 4 9 0 3 2 2 3 3 2 2 3 -4095 4095 4094 4094 4095 4095 4096 4096 4 10 0 3 2 2 3 3 2 2 3 -4095 4095 4094 4112 4095 4095 4095 4095 3 9 0 3 2 2 3 3 2 2 3 -4095 4095 4094 4112 4095 4095 4096 4096 3 10 0 3 2 2 3 3 2 2 3 -4095 4095 4095 4095 4095 4077 4096 4078 7 10 0 3 2 2 3 3 2 2 3 -4095 4095 4095 4095 4095 4095 4096 4096 4 10 0 3 2 2 3 3 2 2 3 -4095 4095 4095 4095 4096 4078 4096 4078 7 11 0 3 2 2 3 3 2 2 3 -4095 4095 4095 4095 4096 4096 4096 4096 4 11 0 3 2 2 3 3 2 2 3 -4095 4095 4095 4113 4095 4095 4096 4096 3 10 0 3 2 2 3 3 2 2 3 -4095 4095 4095 4113 4096 4096 4096 4096 3 11 0 3 2 2 3 3 2 2 3 -4095 4095 4112 4112 4095 4095 4095 4095 1 9 0 3 2 2 3 3 2 2 3 -4095 4095 4112 4112 4095 4095 4096 4096 1 10 0 3 2 2 3 3 2 2 3 -4095 4095 4113 4113 4095 4095 4096 4096 1 10 0 3 2 2 3 3 2 2 3 -4095 4095 4113 4113 4096 4096 4096 4096 1 11 0 3 2 2 3 3 2 2 3 -4096 4096 4095 4095 4096 4078 4096 4078 7 11 0 3 2 2 3 3 2 2 3 -4096 4096 4095 4095 4096 4078 4097 4079 7 12 0 3 2 2 3 2 2 2 2 -4096 4096 4095 4095 4096 4078 4097 4079 7 12 1 0 0 0 0 3 3 3 3 -4096 4096 4095 4095 4096 4096 4096 4096 4 11 0 3 2 2 3 3 2 2 3 -4096 4096 4095 4095 4096 4096 4097 4097 4 12 0 3 2 2 3 2 2 2 2 -4096 4096 4095 4095 4096 4096 4097 4097 4 12 1 0 0 0 0 3 3 3 3 -4096 4096 4095 4113 4096 4096 4096 4096 3 11 0 3 2 2 3 3 2 2 3 -4096 4096 4095 4113 4096 4096 4097 4097 3 12 0 3 2 2 3 2 2 2 2 -4096 4096 4095 4113 4096 4096 4097 4097 3 12 1 0 0 0 0 3 3 3 3 -4096 4096 4096 4096 4096 4078 4097 4079 7 12 0 3 2 2 3 2 2 2 2 -4096 4096 4096 4096 4096 4078 4097 4079 7 12 1 0 0 0 0 3 3 3 3 -4096 4096 4096 4096 4096 4096 4097 4097 4 12 0 3 2 2 3 2 2 2 2 -4096 4096 4096 4096 4096 4096 4097 4097 4 12 1 0 0 0 0 3 3 3 3 -4096 4096 4096 4096 4097 4079 4097 4079 7 13 0 3 2 2 3 2 3 3 2 -4096 4096 4096 4096 4097 4097 4097 4097 4 13 0 3 2 2 3 2 3 3 2 -4096 4096 4096 4114 4096 4096 4097 4097 3 12 0 3 2 2 3 2 2 2 2 -4096 4096 4096 4114 4096 4096 4097 4097 3 12 1 0 0 0 0 3 3 3 3 -4096 4096 4096 4114 4097 4097 4097 4097 3 13 0 3 2 2 3 2 3 3 2 -4096 4096 4113 4113 4096 4096 4096 4096 1 11 0 3 2 2 3 3 2 2 3 -4096 4096 4113 4113 4096 4096 4097 4097 1 12 0 3 2 2 3 2 2 2 2 -4096 4096 4113 4113 4096 4096 4097 4097 1 12 1 0 0 0 0 3 3 3 3 -4096 4096 4114 4114 4096 4096 4097 4097 1 12 0 3 2 2 3 2 2 2 2 -4096 4096 4114 4114 4096 4096 4097 4097 1 12 1 0 0 0 0 3 3 3 3 -4096 4096 4114 4114 4097 4097 4097 4097 1 13 0 3 2 2 3 2 3 3 2 -4097 4097 4096 4096 4097 4079 4097 4079 7 13 0 3 2 2 3 2 3 3 2 -4097 4097 4096 4096 4097 4079 4098 4080 7 14 0 2 2 3 2 2 3 3 2 -4097 4097 4096 4096 4097 4079 4098 4080 7 14 1 3 3 0 0 0 0 0 0 -4097 4097 4096 4096 4097 4097 4097 4097 4 13 0 3 2 2 3 2 3 3 2 -4097 4097 4096 4096 4097 4097 4098 4098 4 14 0 2 2 3 2 2 3 3 2 -4097 4097 4096 4096 4097 4097 4098 4098 4 14 1 3 3 0 0 0 0 0 0 -4097 4097 4096 4114 4097 4097 4097 4097 3 13 0 3 2 2 3 2 3 3 2 -4097 4097 4096 4114 4097 4097 4098 4098 3 14 0 2 2 3 2 2 3 3 2 -4097 4097 4096 4114 4097 4097 4098 4098 3 14 1 3 3 0 0 0 0 0 0 -4097 4097 4097 4097 4097 4079 4098 4080 7 14 0 2 2 3 2 2 3 3 2 -4097 4097 4097 4097 4097 4079 4098 4080 7 14 1 3 3 0 0 0 0 0 0 -4097 4097 4097 4097 4097 4097 4098 4098 4 14 0 2 2 3 2 2 3 3 2 -4097 4097 4097 4097 4097 4097 4098 4098 4 14 1 3 3 0 0 0 0 0 0 -4097 4097 4097 4097 4098 4080 4098 4080 7 15 0 2 3 3 2 2 3 3 2 -4097 4097 4097 4097 4098 4098 4098 4098 4 15 0 2 3 3 2 2 3 3 2 -4097 4097 4097 4115 4097 4097 4098 4098 3 14 0 2 2 3 2 2 3 3 2 -4097 4097 4097 4115 4097 4097 4098 4098 3 14 1 3 3 0 0 0 0 0 0 -4097 4097 4097 4115 4098 4098 4098 4098 3 15 0 2 3 3 2 2 3 3 2 -4097 4097 4114 4114 4097 4097 4097 4097 1 13 0 3 2 2 3 2 3 3 2 -4097 4097 4114 4114 4097 4097 4098 4098 1 14 0 2 2 3 2 2 3 3 2 -4097 4097 4114 4114 4097 4097 4098 4098 1 14 1 3 3 0 0 0 0 0 0 -4097 4097 4115 4115 4097 4097 4098 4098 1 14 0 2 2 3 2 2 3 3 2 -4097 4097 4115 4115 4097 4097 4098 4098 1 14 1 3 3 0 0 0 0 0 0 -4097 4097 4115 4115 4098 4098 4098 4098 1 15 0 2 3 3 2 2 3 3 2 -4098 4098 4097 4097 4098 4080 4098 4080 7 15 0 2 3 3 2 2 3 3 2 -4098 4098 4097 4097 4098 4080 4099 4081 7 16 0 2 3 3 2 2 3 3 2 -4098 4098 4097 4097 4098 4098 4098 4098 4 15 0 2 3 3 2 2 3 3 2 -4098 4098 4097 4097 4098 4098 4099 4099 4 16 0 2 3 3 2 2 3 3 2 -4098 4098 4097 4115 4098 4098 4098 4098 3 15 0 2 3 3 2 2 3 3 2 -4098 4098 4097 4115 4098 4098 4099 4099 3 16 0 2 3 3 2 2 3 3 2 -4098 4098 4098 4098 4098 4080 4099 4081 7 16 0 2 3 3 2 2 3 3 2 -4098 4098 4098 4098 4098 4098 4099 4099 4 16 0 2 3 3 2 2 3 3 2 -4098 4098 4098 4098 4099 4081 4099 4081 7 17 0 2 3 3 2 2 3 3 2 -4098 4098 4098 4098 4099 4099 4099 4099 4 17 0 2 3 3 2 2 3 3 2 -4098 4098 4098 4116 4098 4098 4099 4099 3 16 0 2 3 3 2 2 3 3 2 -4098 4098 4098 4116 4099 4099 4099 4099 3 17 0 2 3 3 2 2 3 3 2 -4098 4098 4115 4115 4098 4098 4098 4098 1 15 0 2 3 3 2 2 3 3 2 -4098 4098 4115 4115 4098 4098 4099 4099 1 16 0 2 3 3 2 2 3 3 2 -4098 4098 4116 4116 4098 4098 4099 4099 1 16 0 2 3 3 2 2 3 3 2 -4098 4098 4116 4116 4099 4099 4099 4099 1 17 0 2 3 3 2 2 3 3 2 -4099 4099 4098 4098 4099 4081 4099 4081 7 17 0 2 3 3 2 2 3 3 2 -4099 4099 4098 4098 4099 4081 4100 4082 7 18 0 2 3 3 2 2 3 3 2 -4099 4099 4098 4098 4099 4099 4099 4099 4 17 0 2 3 3 2 2 3 3 2 -4099 4099 4098 4098 4099 4099 4100 4100 4 18 0 2 3 3 2 2 3 3 2 -4099 4099 4098 4116 4099 4099 4099 4099 3 17 0 2 3 3 2 2 3 3 2 -4099 4099 4098 4116 4099 4099 4100 4100 3 18 0 2 3 3 2 2 3 3 2 -4099 4099 4099 4099 4099 4081 4100 4082 7 18 0 2 3 3 2 2 3 3 2 -4099 4099 4099 4099 4099 4099 4100 4100 4 18 0 2 3 3 2 2 3 3 2 -4099 4099 4099 4099 4100 4082 4100 4082 7 19 0 2 3 3 2 2 3 3 2 -4099 4099 4099 4099 4100 4100 4100 4100 4 19 0 2 3 3 2 2 3 3 2 -4099 4099 4099 4117 4099 4099 4100 4100 3 18 0 2 3 3 2 2 3 3 2 -4099 4099 4099 4117 4100 4100 4100 4100 3 19 0 2 3 3 2 2 3 3 2 -4099 4099 4116 4116 4099 4099 4099 4099 1 17 0 2 3 3 2 2 3 3 2 -4099 4099 4116 4116 4099 4099 4100 4100 1 18 0 2 3 3 2 2 3 3 2 -4099 4099 4117 4117 4099 4099 4100 4100 1 18 0 2 3 3 2 2 3 3 2 -4099 4099 4117 4117 4100 4100 4100 4100 1 19 0 2 3 3 2 2 3 3 2 -4100 4100 4099 4099 4100 4082 4100 4082 7 19 0 2 3 3 2 2 3 3 2 -4100 4100 4099 4099 4100 4082 4101 4083 7 20 0 2 3 3 2 2 3 3 2 -4100 4100 4099 4099 4100 4100 4100 4100 4 19 0 2 3 3 2 2 3 3 2 -4100 4100 4099 4099 4100 4100 4101 4101 4 20 0 2 3 3 2 2 3 3 2 -4100 4100 4099 4117 4100 4100 4100 4100 3 19 0 2 3 3 2 2 3 3 2 -4100 4100 4099 4117 4100 4100 4101 4101 3 20 0 2 3 3 2 2 3 3 2 -4100 4100 4100 4100 4100 4082 4101 4083 7 20 0 2 3 3 2 2 3 3 2 -4100 4100 4100 4100 4100 4100 4101 4101 4 20 0 2 3 3 2 2 3 3 2 -4100 4100 4100 4100 4101 4083 4101 4083 7 21 0 2 3 3 2 2 3 3 2 -4100 4100 4100 4100 4101 4101 4101 4101 4 21 0 2 3 3 2 2 3 3 2 -4100 4100 4100 4118 4100 4100 4101 4101 3 20 0 2 3 3 2 2 3 3 2 -4100 4100 4100 4118 4101 4101 4101 4101 3 21 0 2 3 3 2 2 3 3 2 -4100 4100 4117 4117 4100 4100 4100 4100 1 19 0 2 3 3 2 2 3 3 2 -4100 4100 4117 4117 4100 4100 4101 4101 1 20 0 2 3 3 2 2 3 3 2 -4100 4100 4118 4118 4100 4100 4101 4101 1 20 0 2 3 3 2 2 3 3 2 -4100 4100 4118 4118 4101 4101 4101 4101 1 21 0 2 3 3 2 2 3 3 2 -4101 4101 4100 4100 4101 4083 4101 4083 7 21 0 2 3 3 2 2 3 3 2 -4101 4101 4100 4100 4101 4083 4102 4084 7 22 0 2 3 3 2 1 3 3 1 -4101 4101 4100 4100 4101 4083 4102 4084 7 22 1 0 0 0 0 2 4 4 2 -4101 4101 4100 4100 4101 4101 4101 4101 4 21 0 2 3 3 2 2 3 3 2 -4101 4101 4100 4100 4101 4101 4102 4102 4 22 0 2 3 3 2 1 3 3 1 -4101 4101 4100 4100 4101 4101 4102 4102 4 22 1 0 0 0 0 2 4 4 2 -4101 4101 4100 4118 4101 4101 4101 4101 3 21 0 2 3 3 2 2 3 3 2 -4101 4101 4100 4118 4101 4101 4102 4102 3 22 0 2 3 3 2 1 3 3 1 -4101 4101 4100 4118 4101 4101 4102 4102 3 22 1 0 0 0 0 2 4 4 2 -4101 4101 4101 4101 4101 4083 4102 4084 7 22 0 2 3 3 2 1 3 3 1 -4101 4101 4101 4101 4101 4083 4102 4084 7 22 1 0 0 0 0 2 4 4 2 -4101 4101 4101 4101 4101 4101 4102 4102 4 22 0 2 3 3 2 1 3 3 1 -4101 4101 4101 4101 4101 4101 4102 4102 4 22 1 0 0 0 0 2 4 4 2 -4101 4101 4101 4101 4102 4084 4102 4084 7 23 0 2 3 3 2 1 4 4 1 -4101 4101 4101 4101 4102 4102 4102 4102 4 23 0 2 3 3 2 1 4 4 1 -4101 4101 4101 4119 4101 4101 4102 4102 3 22 0 2 3 3 2 1 3 3 1 -4101 4101 4101 4119 4101 4101 4102 4102 3 22 1 0 0 0 0 2 4 4 2 -4101 4101 4101 4119 4102 4102 4102 4102 3 23 0 2 3 3 2 1 4 4 1 -4101 4101 4118 4118 4101 4101 4101 4101 1 21 0 2 3 3 2 2 3 3 2 -4101 4101 4118 4118 4101 4101 4102 4102 1 22 0 2 3 3 2 1 3 3 1 -4101 4101 4118 4118 4101 4101 4102 4102 1 22 1 0 0 0 0 2 4 4 2 -4101 4101 4119 4119 4101 4101 4102 4102 1 22 0 2 3 3 2 1 3 3 1 -4101 4101 4119 4119 4101 4101 4102 4102 1 22 1 0 0 0 0 2 4 4 2 -4101 4101 4119 4119 4102 4102 4102 4102 1 23 0 2 3 3 2 1 4 4 1 -4102 4102 4101 4101 4102 4084 4102 4084 7 23 0 2 3 3 2 1 4 4 1 -4102 4102 4101 4101 4102 4084 4103 4085 7 24 0 1 3 3 1 1 4 4 1 -4102 4102 4101 4101 4102 4084 4103 4085 7 24 1 2 4 4 2 0 0 0 0 -4102 4102 4101 4101 4102 4102 4102 4102 4 23 0 2 3 3 2 1 4 4 1 -4102 4102 4101 4101 4102 4102 4103 4103 4 24 0 1 3 3 1 1 4 4 1 -4102 4102 4101 4101 4102 4102 4103 4103 4 24 1 2 4 4 2 0 0 0 0 -4102 4102 4101 4119 4102 4102 4102 4102 3 23 0 2 3 3 2 1 4 4 1 -4102 4102 4101 4119 4102 4102 4103 4103 3 24 0 1 3 3 1 1 4 4 1 -4102 4102 4101 4119 4102 4102 4103 4103 3 24 1 2 4 4 2 0 0 0 0 -4102 4102 4102 4102 4102 4084 4103 4085 7 24 0 1 3 3 1 1 4 4 1 -4102 4102 4102 4102 4102 4084 4103 4085 7 24 1 2 4 4 2 0 0 0 0 -4102 4102 4102 4102 4102 4102 4103 4103 4 24 0 1 3 3 1 1 4 4 1 -4102 4102 4102 4102 4102 4102 4103 4103 4 24 1 2 4 4 2 0 0 0 0 -4102 4102 4102 4102 4103 4085 4103 4085 7 25 0 1 4 4 1 1 4 4 1 -4102 4102 4102 4102 4103 4103 4103 4103 4 25 0 1 4 4 1 1 4 4 1 -4102 4102 4102 4120 4102 4102 4103 4103 3 24 0 1 3 3 1 1 4 4 1 -4102 4102 4102 4120 4102 4102 4103 4103 3 24 1 2 4 4 2 0 0 0 0 -4102 4102 4102 4120 4103 4103 4103 4103 3 25 0 1 4 4 1 1 4 4 1 -4102 4102 4119 4119 4102 4102 4102 4102 1 23 0 2 3 3 2 1 4 4 1 -4102 4102 4119 4119 4102 4102 4103 4103 1 24 0 1 3 3 1 1 4 4 1 -4102 4102 4119 4119 4102 4102 4103 4103 1 24 1 2 4 4 2 0 0 0 0 -4102 4102 4120 4120 4102 4102 4103 4103 1 24 0 1 3 3 1 1 4 4 1 -4102 4102 4120 4120 4102 4102 4103 4103 1 24 1 2 4 4 2 0 0 0 0 -4102 4102 4120 4120 4103 4103 4103 4103 1 25 0 1 4 4 1 1 4 4 1 -4103 4103 4102 4102 4103 4085 4103 4085 7 25 0 1 4 4 1 1 4 4 1 -4103 4103 4102 4102 4103 4085 4104 4086 7 26 0 1 4 4 1 1 4 4 1 -4103 4103 4102 4102 4103 4103 4103 4103 4 25 0 1 4 4 1 1 4 4 1 -4103 4103 4102 4102 4103 4103 4104 4104 4 26 0 1 4 4 1 1 4 4 1 -4103 4103 4102 4120 4103 4103 4103 4103 3 25 0 1 4 4 1 1 4 4 1 -4103 4103 4102 4120 4103 4103 4104 4104 3 26 0 1 4 4 1 1 4 4 1 -4103 4103 4103 4103 4103 4085 4104 4086 7 26 0 1 4 4 1 1 4 4 1 -4103 4103 4103 4103 4103 4103 4104 4104 4 26 0 1 4 4 1 1 4 4 1 -4103 4103 4103 4103 4104 4086 4104 4086 7 27 0 1 4 4 1 1 4 4 1 -4103 4103 4103 4103 4104 4104 4104 4104 4 27 0 1 4 4 1 1 4 4 1 -4103 4103 4103 4121 4103 4103 4104 4104 3 26 0 1 4 4 1 1 4 4 1 -4103 4103 4103 4121 4104 4104 4104 4104 3 27 0 1 4 4 1 1 4 4 1 -4103 4103 4120 4120 4103 4103 4103 4103 1 25 0 1 4 4 1 1 4 4 1 -4103 4103 4120 4120 4103 4103 4104 4104 1 26 0 1 4 4 1 1 4 4 1 -4103 4103 4121 4121 4103 4103 4104 4104 1 26 0 1 4 4 1 1 4 4 1 -4103 4103 4121 4121 4104 4104 4104 4104 1 27 0 1 4 4 1 1 4 4 1 -4104 4104 4103 4103 4104 4086 4104 4086 7 27 0 1 4 4 1 1 4 4 1 -4104 4104 4103 4103 4104 4086 4105 4087 7 28 0 1 4 4 1 1 4 4 1 -4104 4104 4103 4103 4104 4104 4104 4104 4 27 0 1 4 4 1 1 4 4 1 -4104 4104 4103 4103 4104 4104 4105 4105 4 28 0 1 4 4 1 1 4 4 1 -4104 4104 4103 4121 4104 4104 4104 4104 3 27 0 1 4 4 1 1 4 4 1 -4104 4104 4103 4121 4104 4104 4105 4105 3 28 0 1 4 4 1 1 4 4 1 -4104 4104 4104 4104 4104 4086 4105 4087 7 28 0 1 4 4 1 1 4 4 1 -4104 4104 4104 4104 4104 4104 4105 4105 4 28 0 1 4 4 1 1 4 4 1 -4104 4104 4104 4104 4105 4087 4105 4087 7 29 0 1 4 4 1 1 4 4 1 -4104 4104 4104 4104 4105 4105 4105 4105 4 29 0 1 4 4 1 1 4 4 1 -4104 4104 4104 4122 4104 4104 4105 4105 3 28 0 1 4 4 1 1 4 4 1 -4104 4104 4104 4122 4105 4105 4105 4105 3 29 0 1 4 4 1 1 4 4 1 -4104 4104 4121 4121 4104 4104 4104 4104 1 27 0 1 4 4 1 1 4 4 1 -4104 4104 4121 4121 4104 4104 4105 4105 1 28 0 1 4 4 1 1 4 4 1 -4104 4104 4122 4122 4104 4104 4105 4105 1 28 0 1 4 4 1 1 4 4 1 -4104 4104 4122 4122 4105 4105 4105 4105 1 29 0 1 4 4 1 1 4 4 1 -4105 4105 4104 4104 4105 4087 4105 4087 7 29 0 1 4 4 1 1 4 4 1 -4105 4105 4104 4104 4105 4087 4106 4088 7 30 0 1 4 4 1 1 4 4 1 -4105 4105 4104 4104 4105 4105 4105 4105 4 29 0 1 4 4 1 1 4 4 1 -4105 4105 4104 4104 4105 4105 4106 4106 4 30 0 1 4 4 1 1 4 4 1 -4105 4105 4104 4122 4105 4105 4105 4105 3 29 0 1 4 4 1 1 4 4 1 -4105 4105 4104 4122 4105 4105 4106 4106 3 30 0 1 4 4 1 1 4 4 1 -4105 4105 4105 4105 4105 4087 4106 4088 7 30 0 1 4 4 1 1 4 4 1 -4105 4105 4105 4105 4105 4105 4106 4106 4 30 0 1 4 4 1 1 4 4 1 -4105 4105 4105 4105 4106 4088 4106 4088 7 31 0 1 4 4 1 1 4 4 1 -4105 4105 4105 4105 4106 4106 4106 4106 4 31 0 1 4 4 1 1 4 4 1 -4105 4105 4105 4123 4105 4105 4106 4106 3 30 0 1 4 4 1 1 4 4 1 -4105 4105 4105 4123 4106 4106 4106 4106 3 31 0 1 4 4 1 1 4 4 1 -4105 4105 4122 4122 4105 4105 4105 4105 1 29 0 1 4 4 1 1 4 4 1 -4105 4105 4122 4122 4105 4105 4106 4106 1 30 0 1 4 4 1 1 4 4 1 -4105 4105 4123 4123 4105 4105 4106 4106 1 30 0 1 4 4 1 1 4 4 1 -4105 4105 4123 4123 4106 4106 4106 4106 1 31 0 1 4 4 1 1 4 4 1 -4106 4106 4105 4105 4106 4088 4106 4088 7 31 0 1 4 4 1 1 4 4 1 -4106 4106 4105 4105 4106 4106 4106 4106 4 31 0 1 4 4 1 1 4 4 1 -4106 4106 4105 4123 4106 4106 4106 4106 3 31 0 1 4 4 1 1 4 4 1 -4106 4106 4106 4106 5055 5055 5055 5055 6 33 0 1 4 4 1 8 6 6 8 -4106 4106 4106 4124 5055 5055 5055 5055 3 33 0 1 4 4 1 8 6 6 8 -4106 4106 4123 4123 4106 4106 4106 4106 1 31 0 1 4 4 1 1 4 4 1 -4106 4106 4124 4124 5055 5055 5055 5055 1 33 0 1 4 4 1 8 6 6 8 -4107 4107 4106 4106 5055 5055 5055 5055 6 34 0 1 4 4 1 8 6 6 8 -4107 4107 4106 4124 5055 5055 5055 5055 3 34 0 1 4 4 1 8 6 6 8 -4107 4107 4124 4124 5055 5055 5055 5055 1 34 0 1 4 4 1 8 6 6 8 -5001 5001 5001 5001 5002 5002 5002 5002 60 35 0 8 6 6 8 8 6 6 8 -5001 5001 5001 5001 5002 5002 5003 5003 60 36 0 8 6 6 8 8 6 6 8 -5001 5001 5001 5019 5002 5002 5002 5002 57 35 0 8 6 6 8 8 6 6 8 -5001 5001 5001 5019 5002 5002 5003 5003 57 36 0 8 6 6 8 8 6 6 8 -5001 5001 5002 5002 5002 5002 5003 5003 60 36 0 8 6 6 8 8 6 6 8 -5001 5001 5002 5002 5003 5003 5003 5003 60 37 0 8 6 6 8 8 6 6 8 -5001 5001 5002 5020 5002 5002 5003 5003 57 36 0 8 6 6 8 8 6 6 8 -5001 5001 5002 5020 5003 5003 5003 5003 57 37 0 8 6 6 8 8 6 6 8 -5001 5001 5019 5019 5002 5002 5002 5002 55 35 0 8 6 6 8 8 6 6 8 -5001 5001 5019 5019 5002 5002 5003 5003 55 36 0 8 6 6 8 8 6 6 8 -5001 5001 5019 5019 5020 5002 5020 5002 51 35 0 8 6 6 8 8 6 6 8 -5001 5001 5019 5019 5020 5002 5021 5003 51 36 0 8 6 6 8 8 6 6 8 -5001 5001 5020 5020 5002 5002 5003 5003 55 36 0 8 6 6 8 8 6 6 8 -5001 5001 5020 5020 5003 5003 5003 5003 55 37 0 8 6 6 8 8 6 6 8 -5001 5001 5020 5020 5020 5002 5021 5003 51 36 0 8 6 6 8 8 6 6 8 -5001 5001 5020 5020 5021 5003 5021 5003 51 37 0 8 6 6 8 8 6 6 8 -5001 5019 5019 5019 5020 5002 5020 5002 49 35 0 8 6 6 8 8 6 6 8 -5001 5019 5019 5019 5020 5002 5021 5003 49 36 0 8 6 6 8 8 6 6 8 -5001 5019 5020 5020 5020 5002 5021 5003 49 36 0 8 6 6 8 8 6 6 8 -5001 5019 5020 5020 5021 5003 5021 5003 49 37 0 8 6 6 8 8 6 6 8 -5002 5002 5002 5002 5003 5003 5003 5003 60 37 0 8 6 6 8 8 6 6 8 -5002 5002 5002 5002 5003 5003 5004 5004 60 38 0 8 6 6 8 8 6 6 8 -5002 5002 5002 5020 5003 5003 5003 5003 57 37 0 8 6 6 8 8 6 6 8 -5002 5002 5002 5020 5003 5003 5004 5004 57 38 0 8 6 6 8 8 6 6 8 -5002 5002 5003 5003 5003 5003 5004 5004 60 38 0 8 6 6 8 8 6 6 8 -5002 5002 5003 5003 5004 5004 5004 5004 60 39 0 8 6 6 8 8 6 6 8 -5002 5002 5003 5021 5003 5003 5004 5004 57 38 0 8 6 6 8 8 6 6 8 -5002 5002 5003 5021 5004 5004 5004 5004 57 39 0 8 6 6 8 8 6 6 8 -5002 5002 5020 5020 5003 5003 5003 5003 55 37 0 8 6 6 8 8 6 6 8 -5002 5002 5020 5020 5003 5003 5004 5004 55 38 0 8 6 6 8 8 6 6 8 -5002 5002 5020 5020 5021 5003 5021 5003 51 37 0 8 6 6 8 8 6 6 8 -5002 5002 5020 5020 5021 5003 5022 5004 51 38 0 8 6 6 8 8 6 6 8 -5002 5002 5021 5021 5003 5003 5004 5004 55 38 0 8 6 6 8 8 6 6 8 -5002 5002 5021 5021 5004 5004 5004 5004 55 39 0 8 6 6 8 8 6 6 8 -5002 5002 5021 5021 5021 5003 5022 5004 51 38 0 8 6 6 8 8 6 6 8 -5002 5002 5021 5021 5022 5004 5022 5004 51 39 0 8 6 6 8 8 6 6 8 -5002 5020 5020 5020 5021 5003 5021 5003 49 37 0 8 6 6 8 8 6 6 8 -5002 5020 5020 5020 5021 5003 5022 5004 49 38 0 8 6 6 8 8 6 6 8 -5002 5020 5021 5021 5021 5003 5022 5004 49 38 0 8 6 6 8 8 6 6 8 -5002 5020 5021 5021 5022 5004 5022 5004 49 39 0 8 6 6 8 8 6 6 8 -5003 5003 5003 5003 5004 5004 5004 5004 60 39 0 8 6 6 8 8 6 6 8 -5003 5003 5003 5003 5004 5004 5005 5005 60 40 0 8 6 6 8 8 6 6 8 -5003 5003 5003 5003 5004 5004 5005 5005 60 40 1 0 0 0 0 0 7 7 0 -5003 5003 5003 5021 5004 5004 5004 5004 57 39 0 8 6 6 8 8 6 6 8 -5003 5003 5003 5021 5004 5004 5005 5005 57 40 0 8 6 6 8 8 6 6 8 -5003 5003 5003 5021 5004 5004 5005 5005 57 40 1 0 0 0 0 0 7 7 0 -5003 5003 5004 5004 5004 5004 5005 5005 60 40 0 8 6 6 8 8 6 6 8 -5003 5003 5004 5004 5004 5004 5005 5005 60 40 1 0 0 0 0 0 7 7 0 -5003 5003 5004 5004 5005 5005 5005 5005 60 41 0 8 6 6 8 8 7 7 8 -5003 5003 5004 5022 5004 5004 5005 5005 57 40 0 8 6 6 8 8 6 6 8 -5003 5003 5004 5022 5004 5004 5005 5005 57 40 1 0 0 0 0 0 7 7 0 -5003 5003 5004 5022 5005 5005 5005 5005 57 41 0 8 6 6 8 8 7 7 8 -5003 5003 5021 5021 5004 5004 5004 5004 55 39 0 8 6 6 8 8 6 6 8 -5003 5003 5021 5021 5004 5004 5005 5005 55 40 0 8 6 6 8 8 6 6 8 -5003 5003 5021 5021 5004 5004 5005 5005 55 40 1 0 0 0 0 0 7 7 0 -5003 5003 5021 5021 5022 5004 5022 5004 51 39 0 8 6 6 8 8 6 6 8 -5003 5003 5021 5021 5022 5004 5023 5005 51 40 0 8 6 6 8 8 6 6 8 -5003 5003 5021 5021 5022 5004 5023 5005 51 40 1 0 0 0 0 0 7 7 0 -5003 5003 5022 5022 5004 5004 5005 5005 55 40 0 8 6 6 8 8 6 6 8 -5003 5003 5022 5022 5004 5004 5005 5005 55 40 1 0 0 0 0 0 7 7 0 -5003 5003 5022 5022 5005 5005 5005 5005 55 41 0 8 6 6 8 8 7 7 8 -5003 5003 5022 5022 5022 5004 5023 5005 51 40 0 8 6 6 8 8 6 6 8 -5003 5003 5022 5022 5022 5004 5023 5005 51 40 1 0 0 0 0 0 7 7 0 -5003 5003 5022 5022 5023 5005 5023 5005 51 41 0 8 6 6 8 8 7 7 8 -5003 5021 5021 5021 5022 5004 5022 5004 49 39 0 8 6 6 8 8 6 6 8 -5003 5021 5021 5021 5022 5004 5023 5005 49 40 0 8 6 6 8 8 6 6 8 -5003 5021 5021 5021 5022 5004 5023 5005 49 40 1 0 0 0 0 0 7 7 0 -5003 5021 5022 5022 5022 5004 5023 5005 49 40 0 8 6 6 8 8 6 6 8 -5003 5021 5022 5022 5022 5004 5023 5005 49 40 1 0 0 0 0 0 7 7 0 -5003 5021 5022 5022 5023 5005 5023 5005 49 41 0 8 6 6 8 8 7 7 8 -5004 5004 5004 5004 5005 5005 5005 5005 60 41 0 8 6 6 8 8 7 7 8 -5004 5004 5004 5004 5005 5005 5006 5006 60 42 0 8 6 6 8 7 7 7 7 -5004 5004 5004 5004 5005 5005 5006 5006 60 42 1 0 0 0 0 8 0 0 8 -5004 5004 5004 5022 5005 5005 5005 5005 57 41 0 8 6 6 8 8 7 7 8 -5004 5004 5004 5022 5005 5005 5006 5006 57 42 0 8 6 6 8 7 7 7 7 -5004 5004 5004 5022 5005 5005 5006 5006 57 42 1 0 0 0 0 8 0 0 8 -5004 5004 5005 5005 5005 5005 5006 5006 60 42 0 8 6 6 8 7 7 7 7 -5004 5004 5005 5005 5005 5005 5006 5006 60 42 1 0 0 0 0 8 0 0 8 -5004 5004 5005 5005 5006 5006 5006 5006 60 43 0 8 6 6 8 7 7 7 7 -5004 5004 5005 5005 5006 5006 5006 5006 60 43 1 0 7 7 0 0 0 0 0 -5004 5004 5005 5023 5005 5005 5006 5006 57 42 0 8 6 6 8 7 7 7 7 -5004 5004 5005 5023 5005 5005 5006 5006 57 42 1 0 0 0 0 8 0 0 8 -5004 5004 5005 5023 5006 5006 5006 5006 57 43 0 8 6 6 8 7 7 7 7 -5004 5004 5005 5023 5006 5006 5006 5006 57 43 1 0 7 7 0 0 0 0 0 -5004 5004 5022 5022 5005 5005 5005 5005 55 41 0 8 6 6 8 8 7 7 8 -5004 5004 5022 5022 5005 5005 5006 5006 55 42 0 8 6 6 8 7 7 7 7 -5004 5004 5022 5022 5005 5005 5006 5006 55 42 1 0 0 0 0 8 0 0 8 -5004 5004 5022 5022 5023 5005 5023 5005 51 41 0 8 6 6 8 8 7 7 8 -5004 5004 5022 5022 5023 5005 5024 5006 51 42 0 8 6 6 8 7 7 7 7 -5004 5004 5022 5022 5023 5005 5024 5006 51 42 1 0 0 0 0 8 0 0 8 -5004 5004 5023 5023 5005 5005 5006 5006 55 42 0 8 6 6 8 7 7 7 7 -5004 5004 5023 5023 5005 5005 5006 5006 55 42 1 0 0 0 0 8 0 0 8 -5004 5004 5023 5023 5006 5006 5006 5006 55 43 0 8 6 6 8 7 7 7 7 -5004 5004 5023 5023 5006 5006 5006 5006 55 43 1 0 7 7 0 0 0 0 0 -5004 5004 5023 5023 5023 5005 5024 5006 51 42 0 8 6 6 8 7 7 7 7 -5004 5004 5023 5023 5023 5005 5024 5006 51 42 1 0 0 0 0 8 0 0 8 -5004 5004 5023 5023 5024 5006 5024 5006 51 43 0 8 6 6 8 7 7 7 7 -5004 5004 5023 5023 5024 5006 5024 5006 51 43 1 0 7 7 0 0 0 0 0 -5004 5022 5022 5022 5023 5005 5023 5005 49 41 0 8 6 6 8 8 7 7 8 -5004 5022 5022 5022 5023 5005 5024 5006 49 42 0 8 6 6 8 7 7 7 7 -5004 5022 5022 5022 5023 5005 5024 5006 49 42 1 0 0 0 0 8 0 0 8 -5004 5022 5023 5023 5023 5005 5024 5006 49 42 0 8 6 6 8 7 7 7 7 -5004 5022 5023 5023 5023 5005 5024 5006 49 42 1 0 0 0 0 8 0 0 8 -5004 5022 5023 5023 5024 5006 5024 5006 49 43 0 8 6 6 8 7 7 7 7 -5004 5022 5023 5023 5024 5006 5024 5006 49 43 1 0 7 7 0 0 0 0 0 -5005 5005 5005 5005 5006 5006 5006 5006 60 43 0 8 6 6 8 7 7 7 7 -5005 5005 5005 5005 5006 5006 5006 5006 60 43 1 0 7 7 0 0 0 0 0 -5005 5005 5005 5005 5006 5006 5007 5007 60 44 0 8 7 7 8 7 7 7 7 -5005 5005 5005 5023 5006 5006 5006 5006 57 43 0 8 6 6 8 7 7 7 7 -5005 5005 5005 5023 5006 5006 5006 5006 57 43 1 0 7 7 0 0 0 0 0 -5005 5005 5005 5023 5006 5006 5007 5007 57 44 0 8 7 7 8 7 7 7 7 -5005 5005 5006 5006 5006 5006 5007 5007 60 44 0 8 7 7 8 7 7 7 7 -5005 5005 5006 5006 5007 5007 5007 5007 60 45 0 7 7 7 7 7 7 7 7 -5005 5005 5006 5006 5007 5007 5007 5007 60 45 1 8 0 0 0 0 0 0 0 -5005 5005 5006 5024 5006 5006 5007 5007 57 44 0 8 7 7 8 7 7 7 7 -5005 5005 5006 5024 5007 5007 5007 5007 57 45 0 7 7 7 7 7 7 7 7 -5005 5005 5006 5024 5007 5007 5007 5007 57 45 1 8 0 0 0 0 0 0 0 -5005 5005 5023 5023 5006 5006 5006 5006 55 43 0 8 6 6 8 7 7 7 7 -5005 5005 5023 5023 5006 5006 5006 5006 55 43 1 0 7 7 0 0 0 0 0 -5005 5005 5023 5023 5006 5006 5007 5007 55 44 0 8 7 7 8 7 7 7 7 -5005 5005 5023 5023 5024 5006 5024 5006 51 43 0 8 6 6 8 7 7 7 7 -5005 5005 5023 5023 5024 5006 5024 5006 51 43 1 0 7 7 0 0 0 0 0 -5005 5005 5023 5023 5024 5006 5025 5007 51 44 0 8 7 7 8 7 7 7 7 -5005 5005 5024 5024 5006 5006 5007 5007 55 44 0 8 7 7 8 7 7 7 7 -5005 5005 5024 5024 5007 5007 5007 5007 55 45 0 7 7 7 7 7 7 7 7 -5005 5005 5024 5024 5007 5007 5007 5007 55 45 1 8 0 0 0 0 0 0 0 -5005 5005 5024 5024 5024 5006 5025 5007 51 44 0 8 7 7 8 7 7 7 7 -5005 5005 5024 5024 5025 5007 5025 5007 51 45 0 7 7 7 7 7 7 7 7 -5005 5005 5024 5024 5025 5007 5025 5007 51 45 1 8 0 0 0 0 0 0 0 -5005 5023 5023 5023 5024 5006 5024 5006 49 43 0 8 6 6 8 7 7 7 7 -5005 5023 5023 5023 5024 5006 5024 5006 49 43 1 0 7 7 0 0 0 0 0 -5005 5023 5023 5023 5024 5006 5025 5007 49 44 0 8 7 7 8 7 7 7 7 -5005 5023 5024 5024 5024 5006 5025 5007 49 44 0 8 7 7 8 7 7 7 7 -5005 5023 5024 5024 5025 5007 5025 5007 49 45 0 7 7 7 7 7 7 7 7 -5005 5023 5024 5024 5025 5007 5025 5007 49 45 1 8 0 0 0 0 0 0 0 -5006 5006 5006 5006 5007 5007 5007 5007 60 45 0 7 7 7 7 7 7 7 7 -5006 5006 5006 5006 5007 5007 5007 5007 60 45 1 8 0 0 0 0 0 0 0 -5006 5006 5006 5006 5007 5007 5008 5008 60 46 0 7 7 7 7 7 7 7 7 -5006 5006 5006 5024 5007 5007 5007 5007 57 45 0 7 7 7 7 7 7 7 7 -5006 5006 5006 5024 5007 5007 5007 5007 57 45 1 8 0 0 0 0 0 0 0 -5006 5006 5006 5024 5007 5007 5008 5008 57 46 0 7 7 7 7 7 7 7 7 -5006 5006 5007 5007 5007 5007 5008 5008 60 46 0 7 7 7 7 7 7 7 7 -5006 5006 5007 5007 5008 5008 5008 5008 60 47 0 7 7 7 7 7 7 7 7 -5006 5006 5007 5025 5007 5007 5008 5008 57 46 0 7 7 7 7 7 7 7 7 -5006 5006 5007 5025 5008 5008 5008 5008 57 47 0 7 7 7 7 7 7 7 7 -5006 5006 5024 5024 5007 5007 5007 5007 55 45 0 7 7 7 7 7 7 7 7 -5006 5006 5024 5024 5007 5007 5007 5007 55 45 1 8 0 0 0 0 0 0 0 -5006 5006 5024 5024 5007 5007 5008 5008 55 46 0 7 7 7 7 7 7 7 7 -5006 5006 5024 5024 5025 5007 5025 5007 51 45 0 7 7 7 7 7 7 7 7 -5006 5006 5024 5024 5025 5007 5025 5007 51 45 1 8 0 0 0 0 0 0 0 -5006 5006 5024 5024 5025 5007 5026 5008 51 46 0 7 7 7 7 7 7 7 7 -5006 5006 5025 5025 5007 5007 5008 5008 55 46 0 7 7 7 7 7 7 7 7 -5006 5006 5025 5025 5008 5008 5008 5008 55 47 0 7 7 7 7 7 7 7 7 -5006 5006 5025 5025 5025 5007 5026 5008 51 46 0 7 7 7 7 7 7 7 7 -5006 5006 5025 5025 5026 5008 5026 5008 51 47 0 7 7 7 7 7 7 7 7 -5006 5024 5024 5024 5025 5007 5025 5007 49 45 0 7 7 7 7 7 7 7 7 -5006 5024 5024 5024 5025 5007 5025 5007 49 45 1 8 0 0 0 0 0 0 0 -5006 5024 5024 5024 5025 5007 5026 5008 49 46 0 7 7 7 7 7 7 7 7 -5006 5024 5025 5025 5025 5007 5026 5008 49 46 0 7 7 7 7 7 7 7 7 -5006 5024 5025 5025 5026 5008 5026 5008 49 47 0 7 7 7 7 7 7 7 7 -5007 5007 5007 5007 5008 5008 5008 5008 60 47 0 7 7 7 7 7 7 7 7 -5007 5007 5007 5007 5008 5008 5009 5009 60 48 0 7 7 7 7 7 7 7 7 -5007 5007 5007 5025 5008 5008 5008 5008 57 47 0 7 7 7 7 7 7 7 7 -5007 5007 5007 5025 5008 5008 5009 5009 57 48 0 7 7 7 7 7 7 7 7 -5007 5007 5008 5008 5008 5008 5009 5009 60 48 0 7 7 7 7 7 7 7 7 -5007 5007 5008 5008 5009 5009 5009 5009 60 49 0 7 7 7 7 7 7 7 7 -5007 5007 5008 5026 5008 5008 5009 5009 57 48 0 7 7 7 7 7 7 7 7 -5007 5007 5008 5026 5009 5009 5009 5009 57 49 0 7 7 7 7 7 7 7 7 -5007 5007 5025 5025 5008 5008 5008 5008 55 47 0 7 7 7 7 7 7 7 7 -5007 5007 5025 5025 5008 5008 5009 5009 55 48 0 7 7 7 7 7 7 7 7 -5007 5007 5025 5025 5026 5008 5026 5008 51 47 0 7 7 7 7 7 7 7 7 -5007 5007 5025 5025 5026 5008 5027 5009 51 48 0 7 7 7 7 7 7 7 7 -5007 5007 5026 5026 5008 5008 5009 5009 55 48 0 7 7 7 7 7 7 7 7 -5007 5007 5026 5026 5009 5009 5009 5009 55 49 0 7 7 7 7 7 7 7 7 -5007 5007 5026 5026 5026 5008 5027 5009 51 48 0 7 7 7 7 7 7 7 7 -5007 5007 5026 5026 5027 5009 5027 5009 51 49 0 7 7 7 7 7 7 7 7 -5007 5025 5025 5025 5026 5008 5026 5008 49 47 0 7 7 7 7 7 7 7 7 -5007 5025 5025 5025 5026 5008 5027 5009 49 48 0 7 7 7 7 7 7 7 7 -5007 5025 5026 5026 5026 5008 5027 5009 49 48 0 7 7 7 7 7 7 7 7 -5007 5025 5026 5026 5027 5009 5027 5009 49 49 0 7 7 7 7 7 7 7 7 -5008 5008 5008 5008 5009 5009 5009 5009 60 49 0 7 7 7 7 7 7 7 7 -5008 5008 5008 5008 5009 5009 5010 5010 60 50 0 7 7 7 7 7 7 7 7 -5008 5008 5008 5008 5009 5009 5010 5010 60 50 1 0 0 0 0 0 8 8 0 -5008 5008 5008 5026 5009 5009 5009 5009 57 49 0 7 7 7 7 7 7 7 7 -5008 5008 5008 5026 5009 5009 5010 5010 57 50 0 7 7 7 7 7 7 7 7 -5008 5008 5008 5026 5009 5009 5010 5010 57 50 1 0 0 0 0 0 8 8 0 -5008 5008 5009 5009 5009 5009 5010 5010 60 50 0 7 7 7 7 7 7 7 7 -5008 5008 5009 5009 5009 5009 5010 5010 60 50 1 0 0 0 0 0 8 8 0 -5008 5008 5009 5009 5010 5010 5010 5010 60 51 0 7 7 7 7 6 8 8 6 -5008 5008 5009 5009 5010 5010 5010 5010 60 51 1 0 0 0 0 7 0 0 7 -5008 5008 5009 5027 5009 5009 5010 5010 57 50 0 7 7 7 7 7 7 7 7 -5008 5008 5009 5027 5009 5009 5010 5010 57 50 1 0 0 0 0 0 8 8 0 -5008 5008 5009 5027 5010 5010 5010 5010 57 51 0 7 7 7 7 6 8 8 6 -5008 5008 5009 5027 5010 5010 5010 5010 57 51 1 0 0 0 0 7 0 0 7 -5008 5008 5026 5026 5009 5009 5009 5009 55 49 0 7 7 7 7 7 7 7 7 -5008 5008 5026 5026 5009 5009 5010 5010 55 50 0 7 7 7 7 7 7 7 7 -5008 5008 5026 5026 5009 5009 5010 5010 55 50 1 0 0 0 0 0 8 8 0 -5008 5008 5026 5026 5027 5009 5027 5009 51 49 0 7 7 7 7 7 7 7 7 -5008 5008 5026 5026 5027 5009 5028 5010 51 50 0 7 7 7 7 7 7 7 7 -5008 5008 5026 5026 5027 5009 5028 5010 51 50 1 0 0 0 0 0 8 8 0 -5008 5008 5027 5027 5009 5009 5010 5010 55 50 0 7 7 7 7 7 7 7 7 -5008 5008 5027 5027 5009 5009 5010 5010 55 50 1 0 0 0 0 0 8 8 0 -5008 5008 5027 5027 5010 5010 5010 5010 55 51 0 7 7 7 7 6 8 8 6 -5008 5008 5027 5027 5010 5010 5010 5010 55 51 1 0 0 0 0 7 0 0 7 -5008 5008 5027 5027 5027 5009 5028 5010 51 50 0 7 7 7 7 7 7 7 7 -5008 5008 5027 5027 5027 5009 5028 5010 51 50 1 0 0 0 0 0 8 8 0 -5008 5008 5027 5027 5028 5010 5028 5010 51 51 0 7 7 7 7 6 8 8 6 -5008 5008 5027 5027 5028 5010 5028 5010 51 51 1 0 0 0 0 7 0 0 7 -5008 5026 5026 5026 5027 5009 5027 5009 49 49 0 7 7 7 7 7 7 7 7 -5008 5026 5026 5026 5027 5009 5028 5010 49 50 0 7 7 7 7 7 7 7 7 -5008 5026 5026 5026 5027 5009 5028 5010 49 50 1 0 0 0 0 0 8 8 0 -5008 5026 5027 5027 5027 5009 5028 5010 49 50 0 7 7 7 7 7 7 7 7 -5008 5026 5027 5027 5027 5009 5028 5010 49 50 1 0 0 0 0 0 8 8 0 -5008 5026 5027 5027 5028 5010 5028 5010 49 51 0 7 7 7 7 6 8 8 6 -5008 5026 5027 5027 5028 5010 5028 5010 49 51 1 0 0 0 0 7 0 0 7 -5009 5009 5009 5009 5010 5010 5010 5010 60 51 0 7 7 7 7 6 8 8 6 -5009 5009 5009 5009 5010 5010 5010 5010 60 51 1 0 0 0 0 7 0 0 7 -5009 5009 5009 5009 5010 5010 5011 5011 60 52 0 7 7 7 7 6 8 8 6 -5009 5009 5009 5027 5010 5010 5010 5010 57 51 0 7 7 7 7 6 8 8 6 -5009 5009 5009 5027 5010 5010 5010 5010 57 51 1 0 0 0 0 7 0 0 7 -5009 5009 5009 5027 5010 5010 5011 5011 57 52 0 7 7 7 7 6 8 8 6 -5009 5009 5010 5010 5010 5010 5011 5011 60 52 0 7 7 7 7 6 8 8 6 -5009 5009 5010 5010 5011 5011 5011 5011 60 53 0 7 7 7 7 6 8 8 6 -5009 5009 5010 5010 5011 5011 5011 5011 60 53 1 0 8 8 0 0 0 0 0 -5009 5009 5010 5028 5010 5010 5011 5011 57 52 0 7 7 7 7 6 8 8 6 -5009 5009 5010 5028 5011 5011 5011 5011 57 53 0 7 7 7 7 6 8 8 6 -5009 5009 5010 5028 5011 5011 5011 5011 57 53 1 0 8 8 0 0 0 0 0 -5009 5009 5027 5027 5010 5010 5010 5010 55 51 0 7 7 7 7 6 8 8 6 -5009 5009 5027 5027 5010 5010 5010 5010 55 51 1 0 0 0 0 7 0 0 7 -5009 5009 5027 5027 5010 5010 5011 5011 55 52 0 7 7 7 7 6 8 8 6 -5009 5009 5027 5027 5028 5010 5028 5010 51 51 0 7 7 7 7 6 8 8 6 -5009 5009 5027 5027 5028 5010 5028 5010 51 51 1 0 0 0 0 7 0 0 7 -5009 5009 5027 5027 5028 5010 5029 5011 51 52 0 7 7 7 7 6 8 8 6 -5009 5009 5028 5028 5010 5010 5011 5011 55 52 0 7 7 7 7 6 8 8 6 -5009 5009 5028 5028 5011 5011 5011 5011 55 53 0 7 7 7 7 6 8 8 6 -5009 5009 5028 5028 5011 5011 5011 5011 55 53 1 0 8 8 0 0 0 0 0 -5009 5009 5028 5028 5028 5010 5029 5011 51 52 0 7 7 7 7 6 8 8 6 -5009 5009 5028 5028 5029 5011 5029 5011 51 53 0 7 7 7 7 6 8 8 6 -5009 5009 5028 5028 5029 5011 5029 5011 51 53 1 0 8 8 0 0 0 0 0 -5009 5027 5027 5027 5028 5010 5028 5010 49 51 0 7 7 7 7 6 8 8 6 -5009 5027 5027 5027 5028 5010 5028 5010 49 51 1 0 0 0 0 7 0 0 7 -5009 5027 5027 5027 5028 5010 5029 5011 49 52 0 7 7 7 7 6 8 8 6 -5009 5027 5028 5028 5028 5010 5029 5011 49 52 0 7 7 7 7 6 8 8 6 -5009 5027 5028 5028 5029 5011 5029 5011 49 53 0 7 7 7 7 6 8 8 6 -5009 5027 5028 5028 5029 5011 5029 5011 49 53 1 0 8 8 0 0 0 0 0 -5010 5010 5010 5010 5011 5011 5011 5011 60 53 0 7 7 7 7 6 8 8 6 -5010 5010 5010 5010 5011 5011 5011 5011 60 53 1 0 8 8 0 0 0 0 0 -5010 5010 5010 5010 5011 5011 5012 5012 60 54 0 7 8 8 7 6 8 8 6 -5010 5010 5010 5028 5011 5011 5011 5011 57 53 0 7 7 7 7 6 8 8 6 -5010 5010 5010 5028 5011 5011 5011 5011 57 53 1 0 8 8 0 0 0 0 0 -5010 5010 5010 5028 5011 5011 5012 5012 57 54 0 7 8 8 7 6 8 8 6 -5010 5010 5011 5011 5011 5011 5012 5012 60 54 0 7 8 8 7 6 8 8 6 -5010 5010 5011 5011 5012 5012 5012 5012 60 55 0 6 8 8 6 6 8 8 6 -5010 5010 5011 5011 5012 5012 5012 5012 60 55 1 7 0 0 7 0 0 0 0 -5010 5010 5011 5029 5011 5011 5012 5012 57 54 0 7 8 8 7 6 8 8 6 -5010 5010 5011 5029 5012 5012 5012 5012 57 55 0 6 8 8 6 6 8 8 6 -5010 5010 5011 5029 5012 5012 5012 5012 57 55 1 7 0 0 7 0 0 0 0 -5010 5010 5028 5028 5011 5011 5011 5011 55 53 0 7 7 7 7 6 8 8 6 -5010 5010 5028 5028 5011 5011 5011 5011 55 53 1 0 8 8 0 0 0 0 0 -5010 5010 5028 5028 5011 5011 5012 5012 55 54 0 7 8 8 7 6 8 8 6 -5010 5010 5028 5028 5029 5011 5029 5011 51 53 0 7 7 7 7 6 8 8 6 -5010 5010 5028 5028 5029 5011 5029 5011 51 53 1 0 8 8 0 0 0 0 0 -5010 5010 5028 5028 5029 5011 5030 5012 51 54 0 7 8 8 7 6 8 8 6 -5010 5010 5029 5029 5011 5011 5012 5012 55 54 0 7 8 8 7 6 8 8 6 -5010 5010 5029 5029 5012 5012 5012 5012 55 55 0 6 8 8 6 6 8 8 6 -5010 5010 5029 5029 5012 5012 5012 5012 55 55 1 7 0 0 7 0 0 0 0 -5010 5010 5029 5029 5029 5011 5030 5012 51 54 0 7 8 8 7 6 8 8 6 -5010 5010 5029 5029 5030 5012 5030 5012 51 55 0 6 8 8 6 6 8 8 6 -5010 5010 5029 5029 5030 5012 5030 5012 51 55 1 7 0 0 7 0 0 0 0 -5010 5028 5028 5028 5029 5011 5029 5011 49 53 0 7 7 7 7 6 8 8 6 -5010 5028 5028 5028 5029 5011 5029 5011 49 53 1 0 8 8 0 0 0 0 0 -5010 5028 5028 5028 5029 5011 5030 5012 49 54 0 7 8 8 7 6 8 8 6 -5010 5028 5029 5029 5029 5011 5030 5012 49 54 0 7 8 8 7 6 8 8 6 -5010 5028 5029 5029 5030 5012 5030 5012 49 55 0 6 8 8 6 6 8 8 6 -5010 5028 5029 5029 5030 5012 5030 5012 49 55 1 7 0 0 7 0 0 0 0 -5011 5011 5011 5011 5012 5012 5012 5012 60 55 0 6 8 8 6 6 8 8 6 -5011 5011 5011 5011 5012 5012 5012 5012 60 55 1 7 0 0 7 0 0 0 0 -5011 5011 5011 5011 5012 5012 5013 5013 60 56 0 6 8 8 6 6 8 8 6 -5011 5011 5011 5029 5012 5012 5012 5012 57 55 0 6 8 8 6 6 8 8 6 -5011 5011 5011 5029 5012 5012 5012 5012 57 55 1 7 0 0 7 0 0 0 0 -5011 5011 5011 5029 5012 5012 5013 5013 57 56 0 6 8 8 6 6 8 8 6 -5011 5011 5012 5012 5012 5012 5013 5013 60 56 0 6 8 8 6 6 8 8 6 -5011 5011 5012 5012 5013 5013 5013 5013 60 57 0 6 8 8 6 6 8 8 6 -5011 5011 5012 5030 5012 5012 5013 5013 57 56 0 6 8 8 6 6 8 8 6 -5011 5011 5012 5030 5013 5013 5013 5013 57 57 0 6 8 8 6 6 8 8 6 -5011 5011 5029 5029 5012 5012 5012 5012 55 55 0 6 8 8 6 6 8 8 6 -5011 5011 5029 5029 5012 5012 5012 5012 55 55 1 7 0 0 7 0 0 0 0 -5011 5011 5029 5029 5012 5012 5013 5013 55 56 0 6 8 8 6 6 8 8 6 -5011 5011 5029 5029 5030 5012 5030 5012 51 55 0 6 8 8 6 6 8 8 6 -5011 5011 5029 5029 5030 5012 5030 5012 51 55 1 7 0 0 7 0 0 0 0 -5011 5011 5029 5029 5030 5012 5031 5013 51 56 0 6 8 8 6 6 8 8 6 -5011 5011 5030 5030 5012 5012 5013 5013 55 56 0 6 8 8 6 6 8 8 6 -5011 5011 5030 5030 5013 5013 5013 5013 55 57 0 6 8 8 6 6 8 8 6 -5011 5011 5030 5030 5030 5012 5031 5013 51 56 0 6 8 8 6 6 8 8 6 -5011 5011 5030 5030 5031 5013 5031 5013 51 57 0 6 8 8 6 6 8 8 6 -5011 5029 5029 5029 5030 5012 5030 5012 49 55 0 6 8 8 6 6 8 8 6 -5011 5029 5029 5029 5030 5012 5030 5012 49 55 1 7 0 0 7 0 0 0 0 -5011 5029 5029 5029 5030 5012 5031 5013 49 56 0 6 8 8 6 6 8 8 6 -5011 5029 5030 5030 5030 5012 5031 5013 49 56 0 6 8 8 6 6 8 8 6 -5011 5029 5030 5030 5031 5013 5031 5013 49 57 0 6 8 8 6 6 8 8 6 -5012 5012 5012 5012 5013 5013 5013 5013 60 57 0 6 8 8 6 6 8 8 6 -5012 5012 5012 5012 5013 5013 5014 5014 60 58 0 6 8 8 6 6 8 8 6 -5012 5012 5012 5030 5013 5013 5013 5013 57 57 0 6 8 8 6 6 8 8 6 -5012 5012 5012 5030 5013 5013 5014 5014 57 58 0 6 8 8 6 6 8 8 6 -5012 5012 5013 5013 5013 5013 5014 5014 60 58 0 6 8 8 6 6 8 8 6 -5012 5012 5013 5013 5014 5014 5014 5014 60 59 0 6 8 8 6 6 8 8 6 -5012 5012 5013 5031 5013 5013 5014 5014 57 58 0 6 8 8 6 6 8 8 6 -5012 5012 5013 5031 5014 5014 5014 5014 57 59 0 6 8 8 6 6 8 8 6 -5012 5012 5030 5030 5013 5013 5013 5013 55 57 0 6 8 8 6 6 8 8 6 -5012 5012 5030 5030 5013 5013 5014 5014 55 58 0 6 8 8 6 6 8 8 6 -5012 5012 5030 5030 5031 5013 5031 5013 51 57 0 6 8 8 6 6 8 8 6 -5012 5012 5030 5030 5031 5013 5032 5014 51 58 0 6 8 8 6 6 8 8 6 -5012 5012 5031 5031 5013 5013 5014 5014 55 58 0 6 8 8 6 6 8 8 6 -5012 5012 5031 5031 5014 5014 5014 5014 55 59 0 6 8 8 6 6 8 8 6 -5012 5012 5031 5031 5031 5013 5032 5014 51 58 0 6 8 8 6 6 8 8 6 -5012 5012 5031 5031 5032 5014 5032 5014 51 59 0 6 8 8 6 6 8 8 6 -5012 5030 5030 5030 5031 5013 5031 5013 49 57 0 6 8 8 6 6 8 8 6 -5012 5030 5030 5030 5031 5013 5032 5014 49 58 0 6 8 8 6 6 8 8 6 -5012 5030 5031 5031 5031 5013 5032 5014 49 58 0 6 8 8 6 6 8 8 6 -5012 5030 5031 5031 5032 5014 5032 5014 49 59 0 6 8 8 6 6 8 8 6 -5013 5013 5013 5013 5014 5014 5014 5014 60 59 0 6 8 8 6 6 8 8 6 -5013 5013 5013 5031 5014 5014 5014 5014 57 59 0 6 8 8 6 6 8 8 6 -5013 5013 5014 5014 6001 6001 6001 6001 60 61 0 6 8 8 6 12 10 10 12 -5013 5013 5014 5032 6001 6001 6001 6001 57 61 0 6 8 8 6 12 10 10 12 -5013 5013 5031 5031 5014 5014 5014 5014 55 59 0 6 8 8 6 6 8 8 6 -5013 5013 5031 5031 5032 5014 5032 5014 51 59 0 6 8 8 6 6 8 8 6 -5013 5013 5032 5032 6001 6001 6001 6001 55 61 0 6 8 8 6 12 10 10 12 -5013 5013 5032 5032 6019 6001 6019 6001 51 61 0 6 8 8 6 12 10 10 12 -5013 5031 5031 5031 5032 5014 5032 5014 49 59 0 6 8 8 6 6 8 8 6 -5013 5031 5032 5032 6019 6001 6019 6001 49 61 0 6 8 8 6 12 10 10 12 -5014 5014 5014 5014 6001 6001 6001 6001 60 61 0 6 8 8 6 12 10 10 12 -5014 5014 5014 5014 6001 6001 6002 6002 60 62 0 6 8 8 6 12 10 10 12 -5014 5014 5014 5032 6001 6001 6001 6001 57 61 0 6 8 8 6 12 10 10 12 -5014 5014 5014 5032 6001 6001 6002 6002 57 62 0 6 8 8 6 12 10 10 12 -5014 5014 5015 5015 6001 6001 6002 6002 60 62 0 6 8 8 6 12 10 10 12 -5014 5014 5015 5015 6002 6002 6002 6002 60 63 0 6 8 0 0 12 10 10 12 -5014 5014 5015 5033 6001 6001 6002 6002 57 62 0 6 8 8 6 12 10 10 12 -5014 5014 5015 5033 6002 6002 6002 6002 57 63 0 6 8 0 0 12 10 10 12 -5014 5014 5032 5032 6001 6001 6001 6001 55 61 0 6 8 8 6 12 10 10 12 -5014 5014 5032 5032 6001 6001 6002 6002 55 62 0 6 8 8 6 12 10 10 12 -5014 5014 5032 5032 6019 6001 6019 6001 51 61 0 6 8 8 6 12 10 10 12 -5014 5014 5032 5032 6019 6001 6020 6002 51 62 0 6 8 8 6 12 10 10 12 -5014 5014 5033 5033 6001 6001 6002 6002 55 62 0 6 8 8 6 12 10 10 12 -5014 5014 5033 5033 6002 6002 6002 6002 55 63 0 6 8 0 0 12 10 10 12 -5014 5014 5033 5033 6019 6001 6020 6002 51 62 0 6 8 8 6 12 10 10 12 -5014 5014 5033 5033 6020 6002 6020 6002 51 63 0 6 8 0 0 12 10 10 12 -5014 5032 5032 5032 6019 6001 6019 6001 49 61 0 6 8 8 6 12 10 10 12 -5014 5032 5032 5032 6019 6001 6020 6002 49 62 0 6 8 8 6 12 10 10 12 -5014 5032 5033 5033 6019 6001 6020 6002 49 62 0 6 8 8 6 12 10 10 12 -5014 5032 5033 5033 6020 6002 6020 6002 49 63 0 6 8 0 0 12 10 10 12 -5019 5019 5019 5019 5020 5002 5020 5002 46 35 0 8 6 6 8 8 6 6 8 -5019 5019 5019 5019 5020 5002 5021 5003 46 36 0 8 6 6 8 8 6 6 8 -5019 5019 5019 5019 5020 5020 5020 5020 42 35 0 8 6 6 8 8 6 6 8 -5019 5019 5019 5019 5020 5020 5021 5021 42 36 0 8 6 6 8 8 6 6 8 -5019 5019 5019 5037 5020 5020 5020 5020 40 35 0 8 6 6 8 8 6 6 8 -5019 5019 5019 5037 5020 5020 5021 5021 40 36 0 8 6 6 8 8 6 6 8 -5019 5019 5020 5020 5020 5002 5021 5003 46 36 0 8 6 6 8 8 6 6 8 -5019 5019 5020 5020 5020 5020 5021 5021 42 36 0 8 6 6 8 8 6 6 8 -5019 5019 5020 5020 5021 5003 5021 5003 46 37 0 8 6 6 8 8 6 6 8 -5019 5019 5020 5020 5021 5021 5021 5021 42 37 0 8 6 6 8 8 6 6 8 -5019 5019 5020 5038 5020 5020 5021 5021 40 36 0 8 6 6 8 8 6 6 8 -5019 5019 5020 5038 5021 5021 5021 5021 40 37 0 8 6 6 8 8 6 6 8 -5019 5019 5037 5037 5020 5020 5020 5020 38 35 0 8 6 6 8 8 6 6 8 -5019 5019 5037 5037 5020 5020 5021 5021 38 36 0 8 6 6 8 8 6 6 8 -5019 5019 5037 5037 5038 5020 5038 5020 34 35 0 8 6 6 8 8 6 6 8 -5019 5019 5037 5037 5038 5020 5039 5021 34 36 0 8 6 6 8 8 6 6 8 -5019 5019 5038 5038 5020 5020 5021 5021 38 36 0 8 6 6 8 8 6 6 8 -5019 5019 5038 5038 5021 5021 5021 5021 38 37 0 8 6 6 8 8 6 6 8 -5019 5019 5038 5038 5038 5020 5039 5021 34 36 0 8 6 6 8 8 6 6 8 -5019 5019 5038 5038 5039 5021 5039 5021 34 37 0 8 6 6 8 8 6 6 8 -5019 5037 5037 5037 5038 5020 5038 5020 31 35 0 8 6 6 8 8 6 6 8 -5019 5037 5037 5037 5038 5020 5039 5021 31 36 0 8 6 6 8 8 6 6 8 -5019 5037 5038 5038 5038 5020 5039 5021 31 36 0 8 6 6 8 8 6 6 8 -5019 5037 5038 5038 5039 5021 5039 5021 31 37 0 8 6 6 8 8 6 6 8 -5020 5020 5020 5020 5021 5003 5021 5003 46 37 0 8 6 6 8 8 6 6 8 -5020 5020 5020 5020 5021 5003 5022 5004 46 38 0 8 6 6 8 8 6 6 8 -5020 5020 5020 5020 5021 5021 5021 5021 42 37 0 8 6 6 8 8 6 6 8 -5020 5020 5020 5020 5021 5021 5022 5022 42 38 0 8 6 6 8 8 6 6 8 -5020 5020 5020 5038 5021 5021 5021 5021 40 37 0 8 6 6 8 8 6 6 8 -5020 5020 5020 5038 5021 5021 5022 5022 40 38 0 8 6 6 8 8 6 6 8 -5020 5020 5021 5021 5021 5003 5022 5004 46 38 0 8 6 6 8 8 6 6 8 -5020 5020 5021 5021 5021 5021 5022 5022 42 38 0 8 6 6 8 8 6 6 8 -5020 5020 5021 5021 5022 5004 5022 5004 46 39 0 8 6 6 8 8 6 6 8 -5020 5020 5021 5021 5022 5022 5022 5022 42 39 0 8 6 6 8 8 6 6 8 -5020 5020 5021 5039 5021 5021 5022 5022 40 38 0 8 6 6 8 8 6 6 8 -5020 5020 5021 5039 5022 5022 5022 5022 40 39 0 8 6 6 8 8 6 6 8 -5020 5020 5038 5038 5021 5021 5021 5021 38 37 0 8 6 6 8 8 6 6 8 -5020 5020 5038 5038 5021 5021 5022 5022 38 38 0 8 6 6 8 8 6 6 8 -5020 5020 5038 5038 5039 5021 5039 5021 34 37 0 8 6 6 8 8 6 6 8 -5020 5020 5038 5038 5039 5021 5040 5022 34 38 0 8 6 6 8 8 6 6 8 -5020 5020 5039 5039 5021 5021 5022 5022 38 38 0 8 6 6 8 8 6 6 8 -5020 5020 5039 5039 5022 5022 5022 5022 38 39 0 8 6 6 8 8 6 6 8 -5020 5020 5039 5039 5039 5021 5040 5022 34 38 0 8 6 6 8 8 6 6 8 -5020 5020 5039 5039 5040 5022 5040 5022 34 39 0 8 6 6 8 8 6 6 8 -5020 5038 5038 5038 5039 5021 5039 5021 31 37 0 8 6 6 8 8 6 6 8 -5020 5038 5038 5038 5039 5021 5040 5022 31 38 0 8 6 6 8 8 6 6 8 -5020 5038 5039 5039 5039 5021 5040 5022 31 38 0 8 6 6 8 8 6 6 8 -5020 5038 5039 5039 5040 5022 5040 5022 31 39 0 8 6 6 8 8 6 6 8 -5021 5021 5021 5021 5022 5004 5022 5004 46 39 0 8 6 6 8 8 6 6 8 -5021 5021 5021 5021 5022 5004 5023 5005 46 40 0 8 6 6 8 8 6 6 8 -5021 5021 5021 5021 5022 5004 5023 5005 46 40 1 0 0 0 0 0 7 7 0 -5021 5021 5021 5021 5022 5022 5022 5022 42 39 0 8 6 6 8 8 6 6 8 -5021 5021 5021 5021 5022 5022 5023 5023 42 40 0 8 6 6 8 8 6 6 8 -5021 5021 5021 5021 5022 5022 5023 5023 42 40 1 0 0 0 0 0 7 7 0 -5021 5021 5021 5039 5022 5022 5022 5022 40 39 0 8 6 6 8 8 6 6 8 -5021 5021 5021 5039 5022 5022 5023 5023 40 40 0 8 6 6 8 8 6 6 8 -5021 5021 5021 5039 5022 5022 5023 5023 40 40 1 0 0 0 0 0 7 7 0 -5021 5021 5022 5022 5022 5004 5023 5005 46 40 0 8 6 6 8 8 6 6 8 -5021 5021 5022 5022 5022 5004 5023 5005 46 40 1 0 0 0 0 0 7 7 0 -5021 5021 5022 5022 5022 5022 5023 5023 42 40 0 8 6 6 8 8 6 6 8 -5021 5021 5022 5022 5022 5022 5023 5023 42 40 1 0 0 0 0 0 7 7 0 -5021 5021 5022 5022 5023 5005 5023 5005 46 41 0 8 6 6 8 8 7 7 8 -5021 5021 5022 5022 5023 5023 5023 5023 42 41 0 8 6 6 8 8 7 7 8 -5021 5021 5022 5040 5022 5022 5023 5023 40 40 0 8 6 6 8 8 6 6 8 -5021 5021 5022 5040 5022 5022 5023 5023 40 40 1 0 0 0 0 0 7 7 0 -5021 5021 5022 5040 5023 5023 5023 5023 40 41 0 8 6 6 8 8 7 7 8 -5021 5021 5039 5039 5022 5022 5022 5022 38 39 0 8 6 6 8 8 6 6 8 -5021 5021 5039 5039 5022 5022 5023 5023 38 40 0 8 6 6 8 8 6 6 8 -5021 5021 5039 5039 5022 5022 5023 5023 38 40 1 0 0 0 0 0 7 7 0 -5021 5021 5039 5039 5040 5022 5040 5022 34 39 0 8 6 6 8 8 6 6 8 -5021 5021 5039 5039 5040 5022 5041 5023 34 40 0 8 6 6 8 8 6 6 8 -5021 5021 5039 5039 5040 5022 5041 5023 34 40 1 0 0 0 0 0 7 7 0 -5021 5021 5040 5040 5022 5022 5023 5023 38 40 0 8 6 6 8 8 6 6 8 -5021 5021 5040 5040 5022 5022 5023 5023 38 40 1 0 0 0 0 0 7 7 0 -5021 5021 5040 5040 5023 5023 5023 5023 38 41 0 8 6 6 8 8 7 7 8 -5021 5021 5040 5040 5040 5022 5041 5023 34 40 0 8 6 6 8 8 6 6 8 -5021 5021 5040 5040 5040 5022 5041 5023 34 40 1 0 0 0 0 0 7 7 0 -5021 5021 5040 5040 5041 5023 5041 5023 34 41 0 8 6 6 8 8 7 7 8 -5021 5039 5039 5039 5040 5022 5040 5022 31 39 0 8 6 6 8 8 6 6 8 -5021 5039 5039 5039 5040 5022 5041 5023 31 40 0 8 6 6 8 8 6 6 8 -5021 5039 5039 5039 5040 5022 5041 5023 31 40 1 0 0 0 0 0 7 7 0 -5021 5039 5040 5040 5040 5022 5041 5023 31 40 0 8 6 6 8 8 6 6 8 -5021 5039 5040 5040 5040 5022 5041 5023 31 40 1 0 0 0 0 0 7 7 0 -5021 5039 5040 5040 5041 5023 5041 5023 31 41 0 8 6 6 8 8 7 7 8 -5022 5022 5022 5022 5023 5005 5023 5005 46 41 0 8 6 6 8 8 7 7 8 -5022 5022 5022 5022 5023 5005 5024 5006 46 42 0 8 6 6 8 7 7 7 7 -5022 5022 5022 5022 5023 5005 5024 5006 46 42 1 0 0 0 0 8 0 0 8 -5022 5022 5022 5022 5023 5023 5023 5023 42 41 0 8 6 6 8 8 7 7 8 -5022 5022 5022 5022 5023 5023 5024 5024 42 42 0 8 6 6 8 7 7 7 7 -5022 5022 5022 5022 5023 5023 5024 5024 42 42 1 0 0 0 0 8 0 0 8 -5022 5022 5022 5040 5023 5023 5023 5023 40 41 0 8 6 6 8 8 7 7 8 -5022 5022 5022 5040 5023 5023 5024 5024 40 42 0 8 6 6 8 7 7 7 7 -5022 5022 5022 5040 5023 5023 5024 5024 40 42 1 0 0 0 0 8 0 0 8 -5022 5022 5023 5023 5023 5005 5024 5006 46 42 0 8 6 6 8 7 7 7 7 -5022 5022 5023 5023 5023 5005 5024 5006 46 42 1 0 0 0 0 8 0 0 8 -5022 5022 5023 5023 5023 5023 5024 5024 42 42 0 8 6 6 8 7 7 7 7 -5022 5022 5023 5023 5023 5023 5024 5024 42 42 1 0 0 0 0 8 0 0 8 -5022 5022 5023 5023 5024 5006 5024 5006 46 43 0 8 6 6 8 7 7 7 7 -5022 5022 5023 5023 5024 5006 5024 5006 46 43 1 0 7 7 0 0 0 0 0 -5022 5022 5023 5023 5024 5024 5024 5024 42 43 0 8 6 6 8 7 7 7 7 -5022 5022 5023 5023 5024 5024 5024 5024 42 43 1 0 7 7 0 0 0 0 0 -5022 5022 5023 5041 5023 5023 5024 5024 40 42 0 8 6 6 8 7 7 7 7 -5022 5022 5023 5041 5023 5023 5024 5024 40 42 1 0 0 0 0 8 0 0 8 -5022 5022 5023 5041 5024 5024 5024 5024 40 43 0 8 6 6 8 7 7 7 7 -5022 5022 5023 5041 5024 5024 5024 5024 40 43 1 0 7 7 0 0 0 0 0 -5022 5022 5040 5040 5023 5023 5023 5023 38 41 0 8 6 6 8 8 7 7 8 -5022 5022 5040 5040 5023 5023 5024 5024 38 42 0 8 6 6 8 7 7 7 7 -5022 5022 5040 5040 5023 5023 5024 5024 38 42 1 0 0 0 0 8 0 0 8 -5022 5022 5040 5040 5041 5023 5041 5023 34 41 0 8 6 6 8 8 7 7 8 -5022 5022 5040 5040 5041 5023 5042 5024 34 42 0 8 6 6 8 7 7 7 7 -5022 5022 5040 5040 5041 5023 5042 5024 34 42 1 0 0 0 0 8 0 0 8 -5022 5022 5041 5041 5023 5023 5024 5024 38 42 0 8 6 6 8 7 7 7 7 -5022 5022 5041 5041 5023 5023 5024 5024 38 42 1 0 0 0 0 8 0 0 8 -5022 5022 5041 5041 5024 5024 5024 5024 38 43 0 8 6 6 8 7 7 7 7 -5022 5022 5041 5041 5024 5024 5024 5024 38 43 1 0 7 7 0 0 0 0 0 -5022 5022 5041 5041 5041 5023 5042 5024 34 42 0 8 6 6 8 7 7 7 7 -5022 5022 5041 5041 5041 5023 5042 5024 34 42 1 0 0 0 0 8 0 0 8 -5022 5022 5041 5041 5042 5024 5042 5024 34 43 0 8 6 6 8 7 7 7 7 -5022 5022 5041 5041 5042 5024 5042 5024 34 43 1 0 7 7 0 0 0 0 0 -5022 5040 5040 5040 5041 5023 5041 5023 31 41 0 8 6 6 8 8 7 7 8 -5022 5040 5040 5040 5041 5023 5042 5024 31 42 0 8 6 6 8 7 7 7 7 -5022 5040 5040 5040 5041 5023 5042 5024 31 42 1 0 0 0 0 8 0 0 8 -5022 5040 5041 5041 5041 5023 5042 5024 31 42 0 8 6 6 8 7 7 7 7 -5022 5040 5041 5041 5041 5023 5042 5024 31 42 1 0 0 0 0 8 0 0 8 -5022 5040 5041 5041 5042 5024 5042 5024 31 43 0 8 6 6 8 7 7 7 7 -5022 5040 5041 5041 5042 5024 5042 5024 31 43 1 0 7 7 0 0 0 0 0 -5023 5023 5023 5023 5024 5006 5024 5006 46 43 0 8 6 6 8 7 7 7 7 -5023 5023 5023 5023 5024 5006 5024 5006 46 43 1 0 7 7 0 0 0 0 0 -5023 5023 5023 5023 5024 5006 5025 5007 46 44 0 8 7 7 8 7 7 7 7 -5023 5023 5023 5023 5024 5024 5024 5024 42 43 0 8 6 6 8 7 7 7 7 -5023 5023 5023 5023 5024 5024 5024 5024 42 43 1 0 7 7 0 0 0 0 0 -5023 5023 5023 5023 5024 5024 5025 5025 42 44 0 8 7 7 8 7 7 7 7 -5023 5023 5023 5041 5024 5024 5024 5024 40 43 0 8 6 6 8 7 7 7 7 -5023 5023 5023 5041 5024 5024 5024 5024 40 43 1 0 7 7 0 0 0 0 0 -5023 5023 5023 5041 5024 5024 5025 5025 40 44 0 8 7 7 8 7 7 7 7 -5023 5023 5024 5024 5024 5006 5025 5007 46 44 0 8 7 7 8 7 7 7 7 -5023 5023 5024 5024 5024 5024 5025 5025 42 44 0 8 7 7 8 7 7 7 7 -5023 5023 5024 5024 5025 5007 5025 5007 46 45 0 7 7 7 7 7 7 7 7 -5023 5023 5024 5024 5025 5007 5025 5007 46 45 1 8 0 0 0 0 0 0 0 -5023 5023 5024 5024 5025 5025 5025 5025 42 45 0 7 7 7 7 7 7 7 7 -5023 5023 5024 5024 5025 5025 5025 5025 42 45 1 8 0 0 0 0 0 0 0 -5023 5023 5024 5042 5024 5024 5025 5025 40 44 0 8 7 7 8 7 7 7 7 -5023 5023 5024 5042 5025 5025 5025 5025 40 45 0 7 7 7 7 7 7 7 7 -5023 5023 5024 5042 5025 5025 5025 5025 40 45 1 8 0 0 0 0 0 0 0 -5023 5023 5041 5041 5024 5024 5024 5024 38 43 0 8 6 6 8 7 7 7 7 -5023 5023 5041 5041 5024 5024 5024 5024 38 43 1 0 7 7 0 0 0 0 0 -5023 5023 5041 5041 5024 5024 5025 5025 38 44 0 8 7 7 8 7 7 7 7 -5023 5023 5041 5041 5042 5024 5042 5024 34 43 0 8 6 6 8 7 7 7 7 -5023 5023 5041 5041 5042 5024 5042 5024 34 43 1 0 7 7 0 0 0 0 0 -5023 5023 5041 5041 5042 5024 5043 5025 34 44 0 8 7 7 8 7 7 7 7 -5023 5023 5042 5042 5024 5024 5025 5025 38 44 0 8 7 7 8 7 7 7 7 -5023 5023 5042 5042 5025 5025 5025 5025 38 45 0 7 7 7 7 7 7 7 7 -5023 5023 5042 5042 5025 5025 5025 5025 38 45 1 8 0 0 0 0 0 0 0 -5023 5023 5042 5042 5042 5024 5043 5025 34 44 0 8 7 7 8 7 7 7 7 -5023 5023 5042 5042 5043 5025 5043 5025 34 45 0 7 7 7 7 7 7 7 7 -5023 5023 5042 5042 5043 5025 5043 5025 34 45 1 8 0 0 0 0 0 0 0 -5023 5041 5041 5041 5042 5024 5042 5024 31 43 0 8 6 6 8 7 7 7 7 -5023 5041 5041 5041 5042 5024 5042 5024 31 43 1 0 7 7 0 0 0 0 0 -5023 5041 5041 5041 5042 5024 5043 5025 31 44 0 8 7 7 8 7 7 7 7 -5023 5041 5042 5042 5042 5024 5043 5025 31 44 0 8 7 7 8 7 7 7 7 -5023 5041 5042 5042 5043 5025 5043 5025 31 45 0 7 7 7 7 7 7 7 7 -5023 5041 5042 5042 5043 5025 5043 5025 31 45 1 8 0 0 0 0 0 0 0 -5024 5024 5024 5024 5025 5007 5025 5007 46 45 0 7 7 7 7 7 7 7 7 -5024 5024 5024 5024 5025 5007 5025 5007 46 45 1 8 0 0 0 0 0 0 0 -5024 5024 5024 5024 5025 5007 5026 5008 46 46 0 7 7 7 7 7 7 7 7 -5024 5024 5024 5024 5025 5025 5025 5025 42 45 0 7 7 7 7 7 7 7 7 -5024 5024 5024 5024 5025 5025 5025 5025 42 45 1 8 0 0 0 0 0 0 0 -5024 5024 5024 5024 5025 5025 5026 5026 42 46 0 7 7 7 7 7 7 7 7 -5024 5024 5024 5042 5025 5025 5025 5025 40 45 0 7 7 7 7 7 7 7 7 -5024 5024 5024 5042 5025 5025 5025 5025 40 45 1 8 0 0 0 0 0 0 0 -5024 5024 5024 5042 5025 5025 5026 5026 40 46 0 7 7 7 7 7 7 7 7 -5024 5024 5025 5025 5025 5007 5026 5008 46 46 0 7 7 7 7 7 7 7 7 -5024 5024 5025 5025 5025 5025 5026 5026 42 46 0 7 7 7 7 7 7 7 7 -5024 5024 5025 5025 5026 5008 5026 5008 46 47 0 7 7 7 7 7 7 7 7 -5024 5024 5025 5025 5026 5026 5026 5026 42 47 0 7 7 7 7 7 7 7 7 -5024 5024 5025 5043 5025 5025 5026 5026 40 46 0 7 7 7 7 7 7 7 7 -5024 5024 5025 5043 5026 5026 5026 5026 40 47 0 7 7 7 7 7 7 7 7 -5024 5024 5042 5042 5025 5025 5025 5025 38 45 0 7 7 7 7 7 7 7 7 -5024 5024 5042 5042 5025 5025 5025 5025 38 45 1 8 0 0 0 0 0 0 0 -5024 5024 5042 5042 5025 5025 5026 5026 38 46 0 7 7 7 7 7 7 7 7 -5024 5024 5042 5042 5043 5025 5043 5025 34 45 0 7 7 7 7 7 7 7 7 -5024 5024 5042 5042 5043 5025 5043 5025 34 45 1 8 0 0 0 0 0 0 0 -5024 5024 5042 5042 5043 5025 5044 5026 34 46 0 7 7 7 7 7 7 7 7 -5024 5024 5043 5043 5025 5025 5026 5026 38 46 0 7 7 7 7 7 7 7 7 -5024 5024 5043 5043 5026 5026 5026 5026 38 47 0 7 7 7 7 7 7 7 7 -5024 5024 5043 5043 5043 5025 5044 5026 34 46 0 7 7 7 7 7 7 7 7 -5024 5024 5043 5043 5044 5026 5044 5026 34 47 0 7 7 7 7 7 7 7 7 -5024 5042 5042 5042 5043 5025 5043 5025 31 45 0 7 7 7 7 7 7 7 7 -5024 5042 5042 5042 5043 5025 5043 5025 31 45 1 8 0 0 0 0 0 0 0 -5024 5042 5042 5042 5043 5025 5044 5026 31 46 0 7 7 7 7 7 7 7 7 -5024 5042 5043 5043 5043 5025 5044 5026 31 46 0 7 7 7 7 7 7 7 7 -5024 5042 5043 5043 5044 5026 5044 5026 31 47 0 7 7 7 7 7 7 7 7 -5025 5025 5025 5025 5026 5008 5026 5008 46 47 0 7 7 7 7 7 7 7 7 -5025 5025 5025 5025 5026 5008 5027 5009 46 48 0 7 7 7 7 7 7 7 7 -5025 5025 5025 5025 5026 5026 5026 5026 42 47 0 7 7 7 7 7 7 7 7 -5025 5025 5025 5025 5026 5026 5027 5027 42 48 0 7 7 7 7 7 7 7 7 -5025 5025 5025 5043 5026 5026 5026 5026 40 47 0 7 7 7 7 7 7 7 7 -5025 5025 5025 5043 5026 5026 5027 5027 40 48 0 7 7 7 7 7 7 7 7 -5025 5025 5026 5026 5026 5008 5027 5009 46 48 0 7 7 7 7 7 7 7 7 -5025 5025 5026 5026 5026 5026 5027 5027 42 48 0 7 7 7 7 7 7 7 7 -5025 5025 5026 5026 5027 5009 5027 5009 46 49 0 7 7 7 7 7 7 7 7 -5025 5025 5026 5026 5027 5027 5027 5027 42 49 0 7 7 7 7 7 7 7 7 -5025 5025 5026 5044 5026 5026 5027 5027 40 48 0 7 7 7 7 7 7 7 7 -5025 5025 5026 5044 5027 5027 5027 5027 40 49 0 7 7 7 7 7 7 7 7 -5025 5025 5043 5043 5026 5026 5026 5026 38 47 0 7 7 7 7 7 7 7 7 -5025 5025 5043 5043 5026 5026 5027 5027 38 48 0 7 7 7 7 7 7 7 7 -5025 5025 5043 5043 5044 5026 5044 5026 34 47 0 7 7 7 7 7 7 7 7 -5025 5025 5043 5043 5044 5026 5045 5027 34 48 0 7 7 7 7 7 7 7 7 -5025 5025 5044 5044 5026 5026 5027 5027 38 48 0 7 7 7 7 7 7 7 7 -5025 5025 5044 5044 5027 5027 5027 5027 38 49 0 7 7 7 7 7 7 7 7 -5025 5025 5044 5044 5044 5026 5045 5027 34 48 0 7 7 7 7 7 7 7 7 -5025 5025 5044 5044 5045 5027 5045 5027 34 49 0 7 7 7 7 7 7 7 7 -5025 5043 5043 5043 5044 5026 5044 5026 31 47 0 7 7 7 7 7 7 7 7 -5025 5043 5043 5043 5044 5026 5045 5027 31 48 0 7 7 7 7 7 7 7 7 -5025 5043 5044 5044 5044 5026 5045 5027 31 48 0 7 7 7 7 7 7 7 7 -5025 5043 5044 5044 5045 5027 5045 5027 31 49 0 7 7 7 7 7 7 7 7 -5026 5026 5026 5026 5027 5009 5027 5009 46 49 0 7 7 7 7 7 7 7 7 -5026 5026 5026 5026 5027 5009 5028 5010 46 50 0 7 7 7 7 7 7 7 7 -5026 5026 5026 5026 5027 5009 5028 5010 46 50 1 0 0 0 0 0 8 8 0 -5026 5026 5026 5026 5027 5027 5027 5027 42 49 0 7 7 7 7 7 7 7 7 -5026 5026 5026 5026 5027 5027 5028 5028 42 50 0 7 7 7 7 7 7 7 7 -5026 5026 5026 5026 5027 5027 5028 5028 42 50 1 0 0 0 0 0 8 8 0 -5026 5026 5026 5044 5027 5027 5027 5027 40 49 0 7 7 7 7 7 7 7 7 -5026 5026 5026 5044 5027 5027 5028 5028 40 50 0 7 7 7 7 7 7 7 7 -5026 5026 5026 5044 5027 5027 5028 5028 40 50 1 0 0 0 0 0 8 8 0 -5026 5026 5027 5027 5027 5009 5028 5010 46 50 0 7 7 7 7 7 7 7 7 -5026 5026 5027 5027 5027 5009 5028 5010 46 50 1 0 0 0 0 0 8 8 0 -5026 5026 5027 5027 5027 5027 5028 5028 42 50 0 7 7 7 7 7 7 7 7 -5026 5026 5027 5027 5027 5027 5028 5028 42 50 1 0 0 0 0 0 8 8 0 -5026 5026 5027 5027 5028 5010 5028 5010 46 51 0 7 7 7 7 6 8 8 6 -5026 5026 5027 5027 5028 5010 5028 5010 46 51 1 0 0 0 0 7 0 0 7 -5026 5026 5027 5027 5028 5028 5028 5028 42 51 0 7 7 7 7 6 8 8 6 -5026 5026 5027 5027 5028 5028 5028 5028 42 51 1 0 0 0 0 7 0 0 7 -5026 5026 5027 5045 5027 5027 5028 5028 40 50 0 7 7 7 7 7 7 7 7 -5026 5026 5027 5045 5027 5027 5028 5028 40 50 1 0 0 0 0 0 8 8 0 -5026 5026 5027 5045 5028 5028 5028 5028 40 51 0 7 7 7 7 6 8 8 6 -5026 5026 5027 5045 5028 5028 5028 5028 40 51 1 0 0 0 0 7 0 0 7 -5026 5026 5044 5044 5027 5027 5027 5027 38 49 0 7 7 7 7 7 7 7 7 -5026 5026 5044 5044 5027 5027 5028 5028 38 50 0 7 7 7 7 7 7 7 7 -5026 5026 5044 5044 5027 5027 5028 5028 38 50 1 0 0 0 0 0 8 8 0 -5026 5026 5044 5044 5045 5027 5045 5027 34 49 0 7 7 7 7 7 7 7 7 -5026 5026 5044 5044 5045 5027 5046 5028 34 50 0 7 7 7 7 7 7 7 7 -5026 5026 5044 5044 5045 5027 5046 5028 34 50 1 0 0 0 0 0 8 8 0 -5026 5026 5045 5045 5027 5027 5028 5028 38 50 0 7 7 7 7 7 7 7 7 -5026 5026 5045 5045 5027 5027 5028 5028 38 50 1 0 0 0 0 0 8 8 0 -5026 5026 5045 5045 5028 5028 5028 5028 38 51 0 7 7 7 7 6 8 8 6 -5026 5026 5045 5045 5028 5028 5028 5028 38 51 1 0 0 0 0 7 0 0 7 -5026 5026 5045 5045 5045 5027 5046 5028 34 50 0 7 7 7 7 7 7 7 7 -5026 5026 5045 5045 5045 5027 5046 5028 34 50 1 0 0 0 0 0 8 8 0 -5026 5026 5045 5045 5046 5028 5046 5028 34 51 0 7 7 7 7 6 8 8 6 -5026 5026 5045 5045 5046 5028 5046 5028 34 51 1 0 0 0 0 7 0 0 7 -5026 5044 5044 5044 5045 5027 5045 5027 31 49 0 7 7 7 7 7 7 7 7 -5026 5044 5044 5044 5045 5027 5046 5028 31 50 0 7 7 7 7 7 7 7 7 -5026 5044 5044 5044 5045 5027 5046 5028 31 50 1 0 0 0 0 0 8 8 0 -5026 5044 5045 5045 5045 5027 5046 5028 31 50 0 7 7 7 7 7 7 7 7 -5026 5044 5045 5045 5045 5027 5046 5028 31 50 1 0 0 0 0 0 8 8 0 -5026 5044 5045 5045 5046 5028 5046 5028 31 51 0 7 7 7 7 6 8 8 6 -5026 5044 5045 5045 5046 5028 5046 5028 31 51 1 0 0 0 0 7 0 0 7 -5027 5027 5027 5027 5028 5010 5028 5010 46 51 0 7 7 7 7 6 8 8 6 -5027 5027 5027 5027 5028 5010 5028 5010 46 51 1 0 0 0 0 7 0 0 7 -5027 5027 5027 5027 5028 5010 5029 5011 46 52 0 7 7 7 7 6 8 8 6 -5027 5027 5027 5027 5028 5028 5028 5028 42 51 0 7 7 7 7 6 8 8 6 -5027 5027 5027 5027 5028 5028 5028 5028 42 51 1 0 0 0 0 7 0 0 7 -5027 5027 5027 5027 5028 5028 5029 5029 42 52 0 7 7 7 7 6 8 8 6 -5027 5027 5027 5045 5028 5028 5028 5028 40 51 0 7 7 7 7 6 8 8 6 -5027 5027 5027 5045 5028 5028 5028 5028 40 51 1 0 0 0 0 7 0 0 7 -5027 5027 5027 5045 5028 5028 5029 5029 40 52 0 7 7 7 7 6 8 8 6 -5027 5027 5028 5028 5028 5010 5029 5011 46 52 0 7 7 7 7 6 8 8 6 -5027 5027 5028 5028 5028 5028 5029 5029 42 52 0 7 7 7 7 6 8 8 6 -5027 5027 5028 5028 5029 5011 5029 5011 46 53 0 7 7 7 7 6 8 8 6 -5027 5027 5028 5028 5029 5011 5029 5011 46 53 1 0 8 8 0 0 0 0 0 -5027 5027 5028 5028 5029 5029 5029 5029 42 53 0 7 7 7 7 6 8 8 6 -5027 5027 5028 5028 5029 5029 5029 5029 42 53 1 0 8 8 0 0 0 0 0 -5027 5027 5028 5046 5028 5028 5029 5029 40 52 0 7 7 7 7 6 8 8 6 -5027 5027 5028 5046 5029 5029 5029 5029 40 53 0 7 7 7 7 6 8 8 6 -5027 5027 5028 5046 5029 5029 5029 5029 40 53 1 0 8 8 0 0 0 0 0 -5027 5027 5045 5045 5028 5028 5028 5028 38 51 0 7 7 7 7 6 8 8 6 -5027 5027 5045 5045 5028 5028 5028 5028 38 51 1 0 0 0 0 7 0 0 7 -5027 5027 5045 5045 5028 5028 5029 5029 38 52 0 7 7 7 7 6 8 8 6 -5027 5027 5045 5045 5046 5028 5046 5028 34 51 0 7 7 7 7 6 8 8 6 -5027 5027 5045 5045 5046 5028 5046 5028 34 51 1 0 0 0 0 7 0 0 7 -5027 5027 5045 5045 5046 5028 5047 5029 34 52 0 7 7 7 7 6 8 8 6 -5027 5027 5046 5046 5028 5028 5029 5029 38 52 0 7 7 7 7 6 8 8 6 -5027 5027 5046 5046 5029 5029 5029 5029 38 53 0 7 7 7 7 6 8 8 6 -5027 5027 5046 5046 5029 5029 5029 5029 38 53 1 0 8 8 0 0 0 0 0 -5027 5027 5046 5046 5046 5028 5047 5029 34 52 0 7 7 7 7 6 8 8 6 -5027 5027 5046 5046 5047 5029 5047 5029 34 53 0 7 7 7 7 6 8 8 6 -5027 5027 5046 5046 5047 5029 5047 5029 34 53 1 0 8 8 0 0 0 0 0 -5027 5045 5045 5045 5046 5028 5046 5028 31 51 0 7 7 7 7 6 8 8 6 -5027 5045 5045 5045 5046 5028 5046 5028 31 51 1 0 0 0 0 7 0 0 7 -5027 5045 5045 5045 5046 5028 5047 5029 31 52 0 7 7 7 7 6 8 8 6 -5027 5045 5046 5046 5046 5028 5047 5029 31 52 0 7 7 7 7 6 8 8 6 -5027 5045 5046 5046 5047 5029 5047 5029 31 53 0 7 7 7 7 6 8 8 6 -5027 5045 5046 5046 5047 5029 5047 5029 31 53 1 0 8 8 0 0 0 0 0 -5028 5028 5028 5028 5029 5011 5029 5011 46 53 0 7 7 7 7 6 8 8 6 -5028 5028 5028 5028 5029 5011 5029 5011 46 53 1 0 8 8 0 0 0 0 0 -5028 5028 5028 5028 5029 5011 5030 5012 46 54 0 7 8 8 7 6 8 8 6 -5028 5028 5028 5028 5029 5029 5029 5029 42 53 0 7 7 7 7 6 8 8 6 -5028 5028 5028 5028 5029 5029 5029 5029 42 53 1 0 8 8 0 0 0 0 0 -5028 5028 5028 5028 5029 5029 5030 5030 42 54 0 7 8 8 7 6 8 8 6 -5028 5028 5028 5046 5029 5029 5029 5029 40 53 0 7 7 7 7 6 8 8 6 -5028 5028 5028 5046 5029 5029 5029 5029 40 53 1 0 8 8 0 0 0 0 0 -5028 5028 5028 5046 5029 5029 5030 5030 40 54 0 7 8 8 7 6 8 8 6 -5028 5028 5029 5029 5029 5011 5030 5012 46 54 0 7 8 8 7 6 8 8 6 -5028 5028 5029 5029 5029 5029 5030 5030 42 54 0 7 8 8 7 6 8 8 6 -5028 5028 5029 5029 5030 5012 5030 5012 46 55 0 6 8 8 6 6 8 8 6 -5028 5028 5029 5029 5030 5012 5030 5012 46 55 1 7 0 0 7 0 0 0 0 -5028 5028 5029 5029 5030 5030 5030 5030 42 55 0 6 8 8 6 6 8 8 6 -5028 5028 5029 5029 5030 5030 5030 5030 42 55 1 7 0 0 7 0 0 0 0 -5028 5028 5029 5047 5029 5029 5030 5030 40 54 0 7 8 8 7 6 8 8 6 -5028 5028 5029 5047 5030 5030 5030 5030 40 55 0 6 8 8 6 6 8 8 6 -5028 5028 5029 5047 5030 5030 5030 5030 40 55 1 7 0 0 7 0 0 0 0 -5028 5028 5046 5046 5029 5029 5029 5029 38 53 0 7 7 7 7 6 8 8 6 -5028 5028 5046 5046 5029 5029 5029 5029 38 53 1 0 8 8 0 0 0 0 0 -5028 5028 5046 5046 5029 5029 5030 5030 38 54 0 7 8 8 7 6 8 8 6 -5028 5028 5046 5046 5047 5029 5047 5029 34 53 0 7 7 7 7 6 8 8 6 -5028 5028 5046 5046 5047 5029 5047 5029 34 53 1 0 8 8 0 0 0 0 0 -5028 5028 5046 5046 5047 5029 5048 5030 34 54 0 7 8 8 7 6 8 8 6 -5028 5028 5047 5047 5029 5029 5030 5030 38 54 0 7 8 8 7 6 8 8 6 -5028 5028 5047 5047 5030 5030 5030 5030 38 55 0 6 8 8 6 6 8 8 6 -5028 5028 5047 5047 5030 5030 5030 5030 38 55 1 7 0 0 7 0 0 0 0 -5028 5028 5047 5047 5047 5029 5048 5030 34 54 0 7 8 8 7 6 8 8 6 -5028 5028 5047 5047 5048 5030 5048 5030 34 55 0 6 8 8 6 6 8 8 6 -5028 5028 5047 5047 5048 5030 5048 5030 34 55 1 7 0 0 7 0 0 0 0 -5028 5046 5046 5046 5047 5029 5047 5029 31 53 0 7 7 7 7 6 8 8 6 -5028 5046 5046 5046 5047 5029 5047 5029 31 53 1 0 8 8 0 0 0 0 0 -5028 5046 5046 5046 5047 5029 5048 5030 31 54 0 7 8 8 7 6 8 8 6 -5028 5046 5047 5047 5047 5029 5048 5030 31 54 0 7 8 8 7 6 8 8 6 -5028 5046 5047 5047 5048 5030 5048 5030 31 55 0 6 8 8 6 6 8 8 6 -5028 5046 5047 5047 5048 5030 5048 5030 31 55 1 7 0 0 7 0 0 0 0 -5029 5029 5029 5029 5030 5012 5030 5012 46 55 0 6 8 8 6 6 8 8 6 -5029 5029 5029 5029 5030 5012 5030 5012 46 55 1 7 0 0 7 0 0 0 0 -5029 5029 5029 5029 5030 5012 5031 5013 46 56 0 6 8 8 6 6 8 8 6 -5029 5029 5029 5029 5030 5030 5030 5030 42 55 0 6 8 8 6 6 8 8 6 -5029 5029 5029 5029 5030 5030 5030 5030 42 55 1 7 0 0 7 0 0 0 0 -5029 5029 5029 5029 5030 5030 5031 5031 42 56 0 6 8 8 6 6 8 8 6 -5029 5029 5029 5047 5030 5030 5030 5030 40 55 0 6 8 8 6 6 8 8 6 -5029 5029 5029 5047 5030 5030 5030 5030 40 55 1 7 0 0 7 0 0 0 0 -5029 5029 5029 5047 5030 5030 5031 5031 40 56 0 6 8 8 6 6 8 8 6 -5029 5029 5030 5030 5030 5012 5031 5013 46 56 0 6 8 8 6 6 8 8 6 -5029 5029 5030 5030 5030 5030 5031 5031 42 56 0 6 8 8 6 6 8 8 6 -5029 5029 5030 5030 5031 5013 5031 5013 46 57 0 6 8 8 6 6 8 8 6 -5029 5029 5030 5030 5031 5031 5031 5031 42 57 0 6 8 8 6 6 8 8 6 -5029 5029 5030 5048 5030 5030 5031 5031 40 56 0 6 8 8 6 6 8 8 6 -5029 5029 5030 5048 5031 5031 5031 5031 40 57 0 6 8 8 6 6 8 8 6 -5029 5029 5047 5047 5030 5030 5030 5030 38 55 0 6 8 8 6 6 8 8 6 -5029 5029 5047 5047 5030 5030 5030 5030 38 55 1 7 0 0 7 0 0 0 0 -5029 5029 5047 5047 5030 5030 5031 5031 38 56 0 6 8 8 6 6 8 8 6 -5029 5029 5047 5047 5048 5030 5048 5030 34 55 0 6 8 8 6 6 8 8 6 -5029 5029 5047 5047 5048 5030 5048 5030 34 55 1 7 0 0 7 0 0 0 0 -5029 5029 5047 5047 5048 5030 5049 5031 34 56 0 6 8 8 6 6 8 8 6 -5029 5029 5048 5048 5030 5030 5031 5031 38 56 0 6 8 8 6 6 8 8 6 -5029 5029 5048 5048 5031 5031 5031 5031 38 57 0 6 8 8 6 6 8 8 6 -5029 5029 5048 5048 5048 5030 5049 5031 34 56 0 6 8 8 6 6 8 8 6 -5029 5029 5048 5048 5049 5031 5049 5031 34 57 0 6 8 8 6 6 8 8 6 -5029 5047 5047 5047 5048 5030 5048 5030 31 55 0 6 8 8 6 6 8 8 6 -5029 5047 5047 5047 5048 5030 5048 5030 31 55 1 7 0 0 7 0 0 0 0 -5029 5047 5047 5047 5048 5030 5049 5031 31 56 0 6 8 8 6 6 8 8 6 -5029 5047 5048 5048 5048 5030 5049 5031 31 56 0 6 8 8 6 6 8 8 6 -5029 5047 5048 5048 5049 5031 5049 5031 31 57 0 6 8 8 6 6 8 8 6 -5030 5030 5030 5030 5031 5013 5031 5013 46 57 0 6 8 8 6 6 8 8 6 -5030 5030 5030 5030 5031 5013 5032 5014 46 58 0 6 8 8 6 6 8 8 6 -5030 5030 5030 5030 5031 5031 5031 5031 42 57 0 6 8 8 6 6 8 8 6 -5030 5030 5030 5030 5031 5031 5032 5032 42 58 0 6 8 8 6 6 8 8 6 -5030 5030 5030 5048 5031 5031 5031 5031 40 57 0 6 8 8 6 6 8 8 6 -5030 5030 5030 5048 5031 5031 5032 5032 40 58 0 6 8 8 6 6 8 8 6 -5030 5030 5031 5031 5031 5013 5032 5014 46 58 0 6 8 8 6 6 8 8 6 -5030 5030 5031 5031 5031 5031 5032 5032 42 58 0 6 8 8 6 6 8 8 6 -5030 5030 5031 5031 5032 5014 5032 5014 46 59 0 6 8 8 6 6 8 8 6 -5030 5030 5031 5031 5032 5032 5032 5032 42 59 0 6 8 8 6 6 8 8 6 -5030 5030 5031 5049 5031 5031 5032 5032 40 58 0 6 8 8 6 6 8 8 6 -5030 5030 5031 5049 5032 5032 5032 5032 40 59 0 6 8 8 6 6 8 8 6 -5030 5030 5048 5048 5031 5031 5031 5031 38 57 0 6 8 8 6 6 8 8 6 -5030 5030 5048 5048 5031 5031 5032 5032 38 58 0 6 8 8 6 6 8 8 6 -5030 5030 5048 5048 5049 5031 5049 5031 34 57 0 6 8 8 6 6 8 8 6 -5030 5030 5048 5048 5049 5031 5050 5032 34 58 0 6 8 8 6 6 8 8 6 -5030 5030 5049 5049 5031 5031 5032 5032 38 58 0 6 8 8 6 6 8 8 6 -5030 5030 5049 5049 5032 5032 5032 5032 38 59 0 6 8 8 6 6 8 8 6 -5030 5030 5049 5049 5049 5031 5050 5032 34 58 0 6 8 8 6 6 8 8 6 -5030 5030 5049 5049 5050 5032 5050 5032 34 59 0 6 8 8 6 6 8 8 6 -5030 5048 5048 5048 5049 5031 5049 5031 31 57 0 6 8 8 6 6 8 8 6 -5030 5048 5048 5048 5049 5031 5050 5032 31 58 0 6 8 8 6 6 8 8 6 -5030 5048 5049 5049 5049 5031 5050 5032 31 58 0 6 8 8 6 6 8 8 6 -5030 5048 5049 5049 5050 5032 5050 5032 31 59 0 6 8 8 6 6 8 8 6 -5031 5031 5031 5031 5032 5014 5032 5014 46 59 0 6 8 8 6 6 8 8 6 -5031 5031 5031 5031 5032 5032 5032 5032 42 59 0 6 8 8 6 6 8 8 6 -5031 5031 5031 5049 5032 5032 5032 5032 40 59 0 6 8 8 6 6 8 8 6 -5031 5031 5032 5032 6019 6001 6019 6001 46 61 0 6 8 8 6 12 10 10 12 -5031 5031 5032 5032 6019 6019 6019 6019 42 61 0 6 8 8 6 12 10 10 12 -5031 5031 5032 5050 6019 6019 6019 6019 40 61 0 6 8 8 6 12 10 10 12 -5031 5031 5049 5049 5032 5032 5032 5032 38 59 0 6 8 8 6 6 8 8 6 -5031 5031 5049 5049 5050 5032 5050 5032 34 59 0 6 8 8 6 6 8 8 6 -5031 5031 5050 5050 6019 6019 6019 6019 38 61 0 6 8 8 6 12 10 10 12 -5031 5031 5050 5050 6037 6019 6037 6019 34 61 0 6 8 8 6 12 10 10 12 -5031 5049 5049 5049 5050 5032 5050 5032 31 59 0 6 8 8 6 6 8 8 6 -5031 5049 5050 5050 6037 6019 6037 6019 31 61 0 6 8 8 6 12 10 10 12 -5032 5032 5032 5032 6019 6001 6019 6001 46 61 0 6 8 8 6 12 10 10 12 -5032 5032 5032 5032 6019 6001 6020 6002 46 62 0 6 8 8 6 12 10 10 12 -5032 5032 5032 5032 6019 6019 6019 6019 42 61 0 6 8 8 6 12 10 10 12 -5032 5032 5032 5032 6019 6019 6020 6020 42 62 0 6 8 8 6 12 10 10 12 -5032 5032 5032 5050 6019 6019 6019 6019 40 61 0 6 8 8 6 12 10 10 12 -5032 5032 5032 5050 6019 6019 6020 6020 40 62 0 6 8 8 6 12 10 10 12 -5032 5032 5033 5033 6019 6001 6020 6002 46 62 0 6 8 8 6 12 10 10 12 -5032 5032 5033 5033 6019 6019 6020 6020 42 62 0 6 8 8 6 12 10 10 12 -5032 5032 5033 5033 6020 6002 6020 6002 46 63 0 6 8 0 0 12 10 10 12 -5032 5032 5033 5033 6020 6020 6020 6020 42 63 0 6 8 0 0 12 10 10 12 -5032 5032 5033 5051 6019 6019 6020 6020 40 62 0 6 8 8 6 12 10 10 12 -5032 5032 5033 5051 6020 6020 6020 6020 40 63 0 6 8 0 0 12 10 10 12 -5032 5032 5050 5050 6019 6019 6019 6019 38 61 0 6 8 8 6 12 10 10 12 -5032 5032 5050 5050 6019 6019 6020 6020 38 62 0 6 8 8 6 12 10 10 12 -5032 5032 5050 5050 6037 6019 6037 6019 34 61 0 6 8 8 6 12 10 10 12 -5032 5032 5050 5050 6037 6019 6038 6020 34 62 0 6 8 8 6 12 10 10 12 -5032 5032 5051 5051 6019 6019 6020 6020 38 62 0 6 8 8 6 12 10 10 12 -5032 5032 5051 5051 6020 6020 6020 6020 38 63 0 6 8 0 0 12 10 10 12 -5032 5032 5051 5051 6037 6019 6038 6020 34 62 0 6 8 8 6 12 10 10 12 -5032 5032 5051 5051 6038 6020 6038 6020 34 63 0 6 8 0 0 12 10 10 12 -5032 5050 5050 5050 6037 6019 6037 6019 31 61 0 6 8 8 6 12 10 10 12 -5032 5050 5050 5050 6037 6019 6038 6020 31 62 0 6 8 8 6 12 10 10 12 -5032 5050 5051 5051 6037 6019 6038 6020 31 62 0 6 8 8 6 12 10 10 12 -5032 5050 5051 5051 6038 6020 6038 6020 31 63 0 6 8 0 0 12 10 10 12 -5037 5037 5037 5037 5038 5020 5038 5020 29 35 0 8 6 6 8 8 6 6 8 -5037 5037 5037 5037 5038 5020 5039 5021 29 36 0 8 6 6 8 8 6 6 8 -5037 5037 5037 5037 5038 5038 5038 5038 25 35 0 8 6 6 8 8 6 6 8 -5037 5037 5037 5037 5038 5038 5039 5039 25 36 0 8 6 6 8 8 6 6 8 -5037 5037 5037 5055 5038 5038 5038 5038 23 35 0 8 6 6 8 8 6 6 8 -5037 5037 5037 5055 5038 5038 5039 5039 23 36 0 8 6 6 8 8 6 6 8 -5037 5037 5038 5038 5038 5020 5039 5021 29 36 0 8 6 6 8 8 6 6 8 -5037 5037 5038 5038 5038 5038 5039 5039 25 36 0 8 6 6 8 8 6 6 8 -5037 5037 5038 5038 5039 5021 5039 5021 29 37 0 8 6 6 8 8 6 6 8 -5037 5037 5038 5038 5039 5039 5039 5039 25 37 0 8 6 6 8 8 6 6 8 -5037 5037 5038 5056 5038 5038 5039 5039 23 36 0 8 6 6 8 8 6 6 8 -5037 5037 5038 5056 5039 5039 5039 5039 23 37 0 8 6 6 8 8 6 6 8 -5037 5037 5055 5055 5038 5038 5038 5038 21 35 0 8 6 6 8 8 6 6 8 -5037 5037 5055 5055 5038 5038 5039 5039 21 36 0 8 6 6 8 8 6 6 8 -5037 5037 5055 5055 5056 5038 5056 5038 17 35 0 8 6 6 8 8 6 6 8 -5037 5037 5055 5055 5056 5038 5057 5039 17 36 0 8 6 6 8 8 6 6 8 -5037 5037 5056 5056 5038 5038 5039 5039 21 36 0 8 6 6 8 8 6 6 8 -5037 5037 5056 5056 5039 5039 5039 5039 21 37 0 8 6 6 8 8 6 6 8 -5037 5037 5056 5056 5056 5038 5057 5039 17 36 0 8 6 6 8 8 6 6 8 -5037 5037 5056 5056 5057 5039 5057 5039 17 37 0 8 6 6 8 8 6 6 8 -5037 5055 5055 5055 5056 5038 5056 5038 14 35 0 8 6 6 8 8 6 6 8 -5037 5055 5055 5055 5056 5038 5057 5039 14 36 0 8 6 6 8 8 6 6 8 -5037 5055 5056 5056 5056 5038 5057 5039 14 36 0 8 6 6 8 8 6 6 8 -5037 5055 5056 5056 5057 5039 5057 5039 14 37 0 8 6 6 8 8 6 6 8 -5038 5038 5038 5038 5039 5021 5039 5021 29 37 0 8 6 6 8 8 6 6 8 -5038 5038 5038 5038 5039 5021 5040 5022 29 38 0 8 6 6 8 8 6 6 8 -5038 5038 5038 5038 5039 5039 5039 5039 25 37 0 8 6 6 8 8 6 6 8 -5038 5038 5038 5038 5039 5039 5040 5040 25 38 0 8 6 6 8 8 6 6 8 -5038 5038 5038 5056 5039 5039 5039 5039 23 37 0 8 6 6 8 8 6 6 8 -5038 5038 5038 5056 5039 5039 5040 5040 23 38 0 8 6 6 8 8 6 6 8 -5038 5038 5039 5039 5039 5021 5040 5022 29 38 0 8 6 6 8 8 6 6 8 -5038 5038 5039 5039 5039 5039 5040 5040 25 38 0 8 6 6 8 8 6 6 8 -5038 5038 5039 5039 5040 5022 5040 5022 29 39 0 8 6 6 8 8 6 6 8 -5038 5038 5039 5039 5040 5040 5040 5040 25 39 0 8 6 6 8 8 6 6 8 -5038 5038 5039 5057 5039 5039 5040 5040 23 38 0 8 6 6 8 8 6 6 8 -5038 5038 5039 5057 5040 5040 5040 5040 23 39 0 8 6 6 8 8 6 6 8 -5038 5038 5056 5056 5039 5039 5039 5039 21 37 0 8 6 6 8 8 6 6 8 -5038 5038 5056 5056 5039 5039 5040 5040 21 38 0 8 6 6 8 8 6 6 8 -5038 5038 5056 5056 5057 5039 5057 5039 17 37 0 8 6 6 8 8 6 6 8 -5038 5038 5056 5056 5057 5039 5058 5040 17 38 0 8 6 6 8 8 6 6 8 -5038 5038 5057 5057 5039 5039 5040 5040 21 38 0 8 6 6 8 8 6 6 8 -5038 5038 5057 5057 5040 5040 5040 5040 21 39 0 8 6 6 8 8 6 6 8 -5038 5038 5057 5057 5057 5039 5058 5040 17 38 0 8 6 6 8 8 6 6 8 -5038 5038 5057 5057 5058 5040 5058 5040 17 39 0 8 6 6 8 8 6 6 8 -5038 5056 5056 5056 5057 5039 5057 5039 14 37 0 8 6 6 8 8 6 6 8 -5038 5056 5056 5056 5057 5039 5058 5040 14 38 0 8 6 6 8 8 6 6 8 -5038 5056 5057 5057 5057 5039 5058 5040 14 38 0 8 6 6 8 8 6 6 8 -5038 5056 5057 5057 5058 5040 5058 5040 14 39 0 8 6 6 8 8 6 6 8 -5039 5039 5039 5039 5040 5022 5040 5022 29 39 0 8 6 6 8 8 6 6 8 -5039 5039 5039 5039 5040 5022 5041 5023 29 40 0 8 6 6 8 8 6 6 8 -5039 5039 5039 5039 5040 5022 5041 5023 29 40 1 0 0 0 0 0 7 7 0 -5039 5039 5039 5039 5040 5040 5040 5040 25 39 0 8 6 6 8 8 6 6 8 -5039 5039 5039 5039 5040 5040 5041 5041 25 40 0 8 6 6 8 8 6 6 8 -5039 5039 5039 5039 5040 5040 5041 5041 25 40 1 0 0 0 0 0 7 7 0 -5039 5039 5039 5057 5040 5040 5040 5040 23 39 0 8 6 6 8 8 6 6 8 -5039 5039 5039 5057 5040 5040 5041 5041 23 40 0 8 6 6 8 8 6 6 8 -5039 5039 5039 5057 5040 5040 5041 5041 23 40 1 0 0 0 0 0 7 7 0 -5039 5039 5040 5040 5040 5022 5041 5023 29 40 0 8 6 6 8 8 6 6 8 -5039 5039 5040 5040 5040 5022 5041 5023 29 40 1 0 0 0 0 0 7 7 0 -5039 5039 5040 5040 5040 5040 5041 5041 25 40 0 8 6 6 8 8 6 6 8 -5039 5039 5040 5040 5040 5040 5041 5041 25 40 1 0 0 0 0 0 7 7 0 -5039 5039 5040 5040 5041 5023 5041 5023 29 41 0 8 6 6 8 8 7 7 8 -5039 5039 5040 5040 5041 5041 5041 5041 25 41 0 8 6 6 8 8 7 7 8 -5039 5039 5040 5058 5040 5040 5041 5041 23 40 0 8 6 6 8 8 6 6 8 -5039 5039 5040 5058 5040 5040 5041 5041 23 40 1 0 0 0 0 0 7 7 0 -5039 5039 5040 5058 5041 5041 5041 5041 23 41 0 8 6 6 8 8 7 7 8 -5039 5039 5057 5057 5040 5040 5040 5040 21 39 0 8 6 6 8 8 6 6 8 -5039 5039 5057 5057 5040 5040 5041 5041 21 40 0 8 6 6 8 8 6 6 8 -5039 5039 5057 5057 5040 5040 5041 5041 21 40 1 0 0 0 0 0 7 7 0 -5039 5039 5057 5057 5058 5040 5058 5040 17 39 0 8 6 6 8 8 6 6 8 -5039 5039 5057 5057 5058 5040 5059 5041 17 40 0 8 6 6 8 8 6 6 8 -5039 5039 5057 5057 5058 5040 5059 5041 17 40 1 0 0 0 0 0 7 7 0 -5039 5039 5058 5058 5040 5040 5041 5041 21 40 0 8 6 6 8 8 6 6 8 -5039 5039 5058 5058 5040 5040 5041 5041 21 40 1 0 0 0 0 0 7 7 0 -5039 5039 5058 5058 5041 5041 5041 5041 21 41 0 8 6 6 8 8 7 7 8 -5039 5039 5058 5058 5058 5040 5059 5041 17 40 0 8 6 6 8 8 6 6 8 -5039 5039 5058 5058 5058 5040 5059 5041 17 40 1 0 0 0 0 0 7 7 0 -5039 5039 5058 5058 5059 5041 5059 5041 17 41 0 8 6 6 8 8 7 7 8 -5039 5057 5057 5057 5058 5040 5058 5040 14 39 0 8 6 6 8 8 6 6 8 -5039 5057 5057 5057 5058 5040 5059 5041 14 40 0 8 6 6 8 8 6 6 8 -5039 5057 5057 5057 5058 5040 5059 5041 14 40 1 0 0 0 0 0 7 7 0 -5039 5057 5058 5058 5058 5040 5059 5041 14 40 0 8 6 6 8 8 6 6 8 -5039 5057 5058 5058 5058 5040 5059 5041 14 40 1 0 0 0 0 0 7 7 0 -5039 5057 5058 5058 5059 5041 5059 5041 14 41 0 8 6 6 8 8 7 7 8 -5040 5040 5040 5040 5041 5023 5041 5023 29 41 0 8 6 6 8 8 7 7 8 -5040 5040 5040 5040 5041 5023 5042 5024 29 42 0 8 6 6 8 7 7 7 7 -5040 5040 5040 5040 5041 5023 5042 5024 29 42 1 0 0 0 0 8 0 0 8 -5040 5040 5040 5040 5041 5041 5041 5041 25 41 0 8 6 6 8 8 7 7 8 -5040 5040 5040 5040 5041 5041 5042 5042 25 42 0 8 6 6 8 7 7 7 7 -5040 5040 5040 5040 5041 5041 5042 5042 25 42 1 0 0 0 0 8 0 0 8 -5040 5040 5040 5058 5041 5041 5041 5041 23 41 0 8 6 6 8 8 7 7 8 -5040 5040 5040 5058 5041 5041 5042 5042 23 42 0 8 6 6 8 7 7 7 7 -5040 5040 5040 5058 5041 5041 5042 5042 23 42 1 0 0 0 0 8 0 0 8 -5040 5040 5041 5041 5041 5023 5042 5024 29 42 0 8 6 6 8 7 7 7 7 -5040 5040 5041 5041 5041 5023 5042 5024 29 42 1 0 0 0 0 8 0 0 8 -5040 5040 5041 5041 5041 5041 5042 5042 25 42 0 8 6 6 8 7 7 7 7 -5040 5040 5041 5041 5041 5041 5042 5042 25 42 1 0 0 0 0 8 0 0 8 -5040 5040 5041 5041 5042 5024 5042 5024 29 43 0 8 6 6 8 7 7 7 7 -5040 5040 5041 5041 5042 5024 5042 5024 29 43 1 0 7 7 0 0 0 0 0 -5040 5040 5041 5041 5042 5042 5042 5042 25 43 0 8 6 6 8 7 7 7 7 -5040 5040 5041 5041 5042 5042 5042 5042 25 43 1 0 7 7 0 0 0 0 0 -5040 5040 5041 5059 5041 5041 5042 5042 23 42 0 8 6 6 8 7 7 7 7 -5040 5040 5041 5059 5041 5041 5042 5042 23 42 1 0 0 0 0 8 0 0 8 -5040 5040 5041 5059 5042 5042 5042 5042 23 43 0 8 6 6 8 7 7 7 7 -5040 5040 5041 5059 5042 5042 5042 5042 23 43 1 0 7 7 0 0 0 0 0 -5040 5040 5058 5058 5041 5041 5041 5041 21 41 0 8 6 6 8 8 7 7 8 -5040 5040 5058 5058 5041 5041 5042 5042 21 42 0 8 6 6 8 7 7 7 7 -5040 5040 5058 5058 5041 5041 5042 5042 21 42 1 0 0 0 0 8 0 0 8 -5040 5040 5058 5058 5059 5041 5059 5041 17 41 0 8 6 6 8 8 7 7 8 -5040 5040 5058 5058 5059 5041 5060 5042 17 42 0 8 6 6 8 7 7 7 7 -5040 5040 5058 5058 5059 5041 5060 5042 17 42 1 0 0 0 0 8 0 0 8 -5040 5040 5059 5059 5041 5041 5042 5042 21 42 0 8 6 6 8 7 7 7 7 -5040 5040 5059 5059 5041 5041 5042 5042 21 42 1 0 0 0 0 8 0 0 8 -5040 5040 5059 5059 5042 5042 5042 5042 21 43 0 8 6 6 8 7 7 7 7 -5040 5040 5059 5059 5042 5042 5042 5042 21 43 1 0 7 7 0 0 0 0 0 -5040 5040 5059 5059 5059 5041 5060 5042 17 42 0 8 6 6 8 7 7 7 7 -5040 5040 5059 5059 5059 5041 5060 5042 17 42 1 0 0 0 0 8 0 0 8 -5040 5040 5059 5059 5060 5042 5060 5042 17 43 0 8 6 6 8 7 7 7 7 -5040 5040 5059 5059 5060 5042 5060 5042 17 43 1 0 7 7 0 0 0 0 0 -5040 5058 5058 5058 5059 5041 5059 5041 14 41 0 8 6 6 8 8 7 7 8 -5040 5058 5058 5058 5059 5041 5060 5042 14 42 0 8 6 6 8 7 7 7 7 -5040 5058 5058 5058 5059 5041 5060 5042 14 42 1 0 0 0 0 8 0 0 8 -5040 5058 5059 5059 5059 5041 5060 5042 14 42 0 8 6 6 8 7 7 7 7 -5040 5058 5059 5059 5059 5041 5060 5042 14 42 1 0 0 0 0 8 0 0 8 -5040 5058 5059 5059 5060 5042 5060 5042 14 43 0 8 6 6 8 7 7 7 7 -5040 5058 5059 5059 5060 5042 5060 5042 14 43 1 0 7 7 0 0 0 0 0 -5041 5041 5041 5041 5042 5024 5042 5024 29 43 0 8 6 6 8 7 7 7 7 -5041 5041 5041 5041 5042 5024 5042 5024 29 43 1 0 7 7 0 0 0 0 0 -5041 5041 5041 5041 5042 5024 5043 5025 29 44 0 8 7 7 8 7 7 7 7 -5041 5041 5041 5041 5042 5042 5042 5042 25 43 0 8 6 6 8 7 7 7 7 -5041 5041 5041 5041 5042 5042 5042 5042 25 43 1 0 7 7 0 0 0 0 0 -5041 5041 5041 5041 5042 5042 5043 5043 25 44 0 8 7 7 8 7 7 7 7 -5041 5041 5041 5059 5042 5042 5042 5042 23 43 0 8 6 6 8 7 7 7 7 -5041 5041 5041 5059 5042 5042 5042 5042 23 43 1 0 7 7 0 0 0 0 0 -5041 5041 5041 5059 5042 5042 5043 5043 23 44 0 8 7 7 8 7 7 7 7 -5041 5041 5042 5042 5042 5024 5043 5025 29 44 0 8 7 7 8 7 7 7 7 -5041 5041 5042 5042 5042 5042 5043 5043 25 44 0 8 7 7 8 7 7 7 7 -5041 5041 5042 5042 5043 5025 5043 5025 29 45 0 7 7 7 7 7 7 7 7 -5041 5041 5042 5042 5043 5025 5043 5025 29 45 1 8 0 0 0 0 0 0 0 -5041 5041 5042 5042 5043 5043 5043 5043 25 45 0 7 7 7 7 7 7 7 7 -5041 5041 5042 5042 5043 5043 5043 5043 25 45 1 8 0 0 0 0 0 0 0 -5041 5041 5042 5060 5042 5042 5043 5043 23 44 0 8 7 7 8 7 7 7 7 -5041 5041 5042 5060 5043 5043 5043 5043 23 45 0 7 7 7 7 7 7 7 7 -5041 5041 5042 5060 5043 5043 5043 5043 23 45 1 8 0 0 0 0 0 0 0 -5041 5041 5059 5059 5042 5042 5042 5042 21 43 0 8 6 6 8 7 7 7 7 -5041 5041 5059 5059 5042 5042 5042 5042 21 43 1 0 7 7 0 0 0 0 0 -5041 5041 5059 5059 5042 5042 5043 5043 21 44 0 8 7 7 8 7 7 7 7 -5041 5041 5059 5059 5060 5042 5060 5042 17 43 0 8 6 6 8 7 7 7 7 -5041 5041 5059 5059 5060 5042 5060 5042 17 43 1 0 7 7 0 0 0 0 0 -5041 5041 5059 5059 5060 5042 5061 5043 17 44 0 8 7 7 8 7 7 7 7 -5041 5041 5060 5060 5042 5042 5043 5043 21 44 0 8 7 7 8 7 7 7 7 -5041 5041 5060 5060 5043 5043 5043 5043 21 45 0 7 7 7 7 7 7 7 7 -5041 5041 5060 5060 5043 5043 5043 5043 21 45 1 8 0 0 0 0 0 0 0 -5041 5041 5060 5060 5060 5042 5061 5043 17 44 0 8 7 7 8 7 7 7 7 -5041 5041 5060 5060 5061 5043 5061 5043 17 45 0 7 7 7 7 7 7 7 7 -5041 5041 5060 5060 5061 5043 5061 5043 17 45 1 8 0 0 0 0 0 0 0 -5041 5059 5059 5059 5060 5042 5060 5042 14 43 0 8 6 6 8 7 7 7 7 -5041 5059 5059 5059 5060 5042 5060 5042 14 43 1 0 7 7 0 0 0 0 0 -5041 5059 5059 5059 5060 5042 5061 5043 14 44 0 8 7 7 8 7 7 7 7 -5041 5059 5060 5060 5060 5042 5061 5043 14 44 0 8 7 7 8 7 7 7 7 -5041 5059 5060 5060 5061 5043 5061 5043 14 45 0 7 7 7 7 7 7 7 7 -5041 5059 5060 5060 5061 5043 5061 5043 14 45 1 8 0 0 0 0 0 0 0 -5042 5042 5042 5042 5043 5025 5043 5025 29 45 0 7 7 7 7 7 7 7 7 -5042 5042 5042 5042 5043 5025 5043 5025 29 45 1 8 0 0 0 0 0 0 0 -5042 5042 5042 5042 5043 5025 5044 5026 29 46 0 7 7 7 7 7 7 7 7 -5042 5042 5042 5042 5043 5043 5043 5043 25 45 0 7 7 7 7 7 7 7 7 -5042 5042 5042 5042 5043 5043 5043 5043 25 45 1 8 0 0 0 0 0 0 0 -5042 5042 5042 5042 5043 5043 5044 5044 25 46 0 7 7 7 7 7 7 7 7 -5042 5042 5042 5060 5043 5043 5043 5043 23 45 0 7 7 7 7 7 7 7 7 -5042 5042 5042 5060 5043 5043 5043 5043 23 45 1 8 0 0 0 0 0 0 0 -5042 5042 5042 5060 5043 5043 5044 5044 23 46 0 7 7 7 7 7 7 7 7 -5042 5042 5043 5043 5043 5025 5044 5026 29 46 0 7 7 7 7 7 7 7 7 -5042 5042 5043 5043 5043 5043 5044 5044 25 46 0 7 7 7 7 7 7 7 7 -5042 5042 5043 5043 5044 5026 5044 5026 29 47 0 7 7 7 7 7 7 7 7 -5042 5042 5043 5043 5044 5044 5044 5044 25 47 0 7 7 7 7 7 7 7 7 -5042 5042 5043 5061 5043 5043 5044 5044 23 46 0 7 7 7 7 7 7 7 7 -5042 5042 5043 5061 5044 5044 5044 5044 23 47 0 7 7 7 7 7 7 7 7 -5042 5042 5060 5060 5043 5043 5043 5043 21 45 0 7 7 7 7 7 7 7 7 -5042 5042 5060 5060 5043 5043 5043 5043 21 45 1 8 0 0 0 0 0 0 0 -5042 5042 5060 5060 5043 5043 5044 5044 21 46 0 7 7 7 7 7 7 7 7 -5042 5042 5060 5060 5061 5043 5061 5043 17 45 0 7 7 7 7 7 7 7 7 -5042 5042 5060 5060 5061 5043 5061 5043 17 45 1 8 0 0 0 0 0 0 0 -5042 5042 5060 5060 5061 5043 5062 5044 17 46 0 7 7 7 7 7 7 7 7 -5042 5042 5061 5061 5043 5043 5044 5044 21 46 0 7 7 7 7 7 7 7 7 -5042 5042 5061 5061 5044 5044 5044 5044 21 47 0 7 7 7 7 7 7 7 7 -5042 5042 5061 5061 5061 5043 5062 5044 17 46 0 7 7 7 7 7 7 7 7 -5042 5042 5061 5061 5062 5044 5062 5044 17 47 0 7 7 7 7 7 7 7 7 -5042 5060 5060 5060 5061 5043 5061 5043 14 45 0 7 7 7 7 7 7 7 7 -5042 5060 5060 5060 5061 5043 5061 5043 14 45 1 8 0 0 0 0 0 0 0 -5042 5060 5060 5060 5061 5043 5062 5044 14 46 0 7 7 7 7 7 7 7 7 -5042 5060 5061 5061 5061 5043 5062 5044 14 46 0 7 7 7 7 7 7 7 7 -5042 5060 5061 5061 5062 5044 5062 5044 14 47 0 7 7 7 7 7 7 7 7 -5043 5043 5043 5043 5044 5026 5044 5026 29 47 0 7 7 7 7 7 7 7 7 -5043 5043 5043 5043 5044 5026 5045 5027 29 48 0 7 7 7 7 7 7 7 7 -5043 5043 5043 5043 5044 5044 5044 5044 25 47 0 7 7 7 7 7 7 7 7 -5043 5043 5043 5043 5044 5044 5045 5045 25 48 0 7 7 7 7 7 7 7 7 -5043 5043 5043 5061 5044 5044 5044 5044 23 47 0 7 7 7 7 7 7 7 7 -5043 5043 5043 5061 5044 5044 5045 5045 23 48 0 7 7 7 7 7 7 7 7 -5043 5043 5044 5044 5044 5026 5045 5027 29 48 0 7 7 7 7 7 7 7 7 -5043 5043 5044 5044 5044 5044 5045 5045 25 48 0 7 7 7 7 7 7 7 7 -5043 5043 5044 5044 5045 5027 5045 5027 29 49 0 7 7 7 7 7 7 7 7 -5043 5043 5044 5044 5045 5045 5045 5045 25 49 0 7 7 7 7 7 7 7 7 -5043 5043 5044 5062 5044 5044 5045 5045 23 48 0 7 7 7 7 7 7 7 7 -5043 5043 5044 5062 5045 5045 5045 5045 23 49 0 7 7 7 7 7 7 7 7 -5043 5043 5061 5061 5044 5044 5044 5044 21 47 0 7 7 7 7 7 7 7 7 -5043 5043 5061 5061 5044 5044 5045 5045 21 48 0 7 7 7 7 7 7 7 7 -5043 5043 5061 5061 5062 5044 5062 5044 17 47 0 7 7 7 7 7 7 7 7 -5043 5043 5061 5061 5062 5044 5063 5045 17 48 0 7 7 7 7 7 7 7 7 -5043 5043 5062 5062 5044 5044 5045 5045 21 48 0 7 7 7 7 7 7 7 7 -5043 5043 5062 5062 5045 5045 5045 5045 21 49 0 7 7 7 7 7 7 7 7 -5043 5043 5062 5062 5062 5044 5063 5045 17 48 0 7 7 7 7 7 7 7 7 -5043 5043 5062 5062 5063 5045 5063 5045 17 49 0 7 7 7 7 7 7 7 7 -5043 5061 5061 5061 5062 5044 5062 5044 14 47 0 7 7 7 7 7 7 7 7 -5043 5061 5061 5061 5062 5044 5063 5045 14 48 0 7 7 7 7 7 7 7 7 -5043 5061 5062 5062 5062 5044 5063 5045 14 48 0 7 7 7 7 7 7 7 7 -5043 5061 5062 5062 5063 5045 5063 5045 14 49 0 7 7 7 7 7 7 7 7 -5044 5044 5044 5044 5045 5027 5045 5027 29 49 0 7 7 7 7 7 7 7 7 -5044 5044 5044 5044 5045 5027 5046 5028 29 50 0 7 7 7 7 7 7 7 7 -5044 5044 5044 5044 5045 5027 5046 5028 29 50 1 0 0 0 0 0 8 8 0 -5044 5044 5044 5044 5045 5045 5045 5045 25 49 0 7 7 7 7 7 7 7 7 -5044 5044 5044 5044 5045 5045 5046 5046 25 50 0 7 7 7 7 7 7 7 7 -5044 5044 5044 5044 5045 5045 5046 5046 25 50 1 0 0 0 0 0 8 8 0 -5044 5044 5044 5062 5045 5045 5045 5045 23 49 0 7 7 7 7 7 7 7 7 -5044 5044 5044 5062 5045 5045 5046 5046 23 50 0 7 7 7 7 7 7 7 7 -5044 5044 5044 5062 5045 5045 5046 5046 23 50 1 0 0 0 0 0 8 8 0 -5044 5044 5045 5045 5045 5027 5046 5028 29 50 0 7 7 7 7 7 7 7 7 -5044 5044 5045 5045 5045 5027 5046 5028 29 50 1 0 0 0 0 0 8 8 0 -5044 5044 5045 5045 5045 5045 5046 5046 25 50 0 7 7 7 7 7 7 7 7 -5044 5044 5045 5045 5045 5045 5046 5046 25 50 1 0 0 0 0 0 8 8 0 -5044 5044 5045 5045 5046 5028 5046 5028 29 51 0 7 7 7 7 6 8 8 6 -5044 5044 5045 5045 5046 5028 5046 5028 29 51 1 0 0 0 0 7 0 0 7 -5044 5044 5045 5045 5046 5046 5046 5046 25 51 0 7 7 7 7 6 8 8 6 -5044 5044 5045 5045 5046 5046 5046 5046 25 51 1 0 0 0 0 7 0 0 7 -5044 5044 5045 5063 5045 5045 5046 5046 23 50 0 7 7 7 7 7 7 7 7 -5044 5044 5045 5063 5045 5045 5046 5046 23 50 1 0 0 0 0 0 8 8 0 -5044 5044 5045 5063 5046 5046 5046 5046 23 51 0 7 7 7 7 6 8 8 6 -5044 5044 5045 5063 5046 5046 5046 5046 23 51 1 0 0 0 0 7 0 0 7 -5044 5044 5062 5062 5045 5045 5045 5045 21 49 0 7 7 7 7 7 7 7 7 -5044 5044 5062 5062 5045 5045 5046 5046 21 50 0 7 7 7 7 7 7 7 7 -5044 5044 5062 5062 5045 5045 5046 5046 21 50 1 0 0 0 0 0 8 8 0 -5044 5044 5062 5062 5063 5045 5063 5045 17 49 0 7 7 7 7 7 7 7 7 -5044 5044 5062 5062 5063 5045 5064 5046 17 50 0 7 7 7 7 7 7 7 7 -5044 5044 5062 5062 5063 5045 5064 5046 17 50 1 0 0 0 0 0 8 8 0 -5044 5044 5063 5063 5045 5045 5046 5046 21 50 0 7 7 7 7 7 7 7 7 -5044 5044 5063 5063 5045 5045 5046 5046 21 50 1 0 0 0 0 0 8 8 0 -5044 5044 5063 5063 5046 5046 5046 5046 21 51 0 7 7 7 7 6 8 8 6 -5044 5044 5063 5063 5046 5046 5046 5046 21 51 1 0 0 0 0 7 0 0 7 -5044 5044 5063 5063 5063 5045 5064 5046 17 50 0 7 7 7 7 7 7 7 7 -5044 5044 5063 5063 5063 5045 5064 5046 17 50 1 0 0 0 0 0 8 8 0 -5044 5044 5063 5063 5064 5046 5064 5046 17 51 0 7 7 7 7 6 8 8 6 -5044 5044 5063 5063 5064 5046 5064 5046 17 51 1 0 0 0 0 7 0 0 7 -5044 5062 5062 5062 5063 5045 5063 5045 14 49 0 7 7 7 7 7 7 7 7 -5044 5062 5062 5062 5063 5045 5064 5046 14 50 0 7 7 7 7 7 7 7 7 -5044 5062 5062 5062 5063 5045 5064 5046 14 50 1 0 0 0 0 0 8 8 0 -5044 5062 5063 5063 5063 5045 5064 5046 14 50 0 7 7 7 7 7 7 7 7 -5044 5062 5063 5063 5063 5045 5064 5046 14 50 1 0 0 0 0 0 8 8 0 -5044 5062 5063 5063 5064 5046 5064 5046 14 51 0 7 7 7 7 6 8 8 6 -5044 5062 5063 5063 5064 5046 5064 5046 14 51 1 0 0 0 0 7 0 0 7 -5045 5045 5045 5045 5046 5028 5046 5028 29 51 0 7 7 7 7 6 8 8 6 -5045 5045 5045 5045 5046 5028 5046 5028 29 51 1 0 0 0 0 7 0 0 7 -5045 5045 5045 5045 5046 5028 5047 5029 29 52 0 7 7 7 7 6 8 8 6 -5045 5045 5045 5045 5046 5046 5046 5046 25 51 0 7 7 7 7 6 8 8 6 -5045 5045 5045 5045 5046 5046 5046 5046 25 51 1 0 0 0 0 7 0 0 7 -5045 5045 5045 5045 5046 5046 5047 5047 25 52 0 7 7 7 7 6 8 8 6 -5045 5045 5045 5063 5046 5046 5046 5046 23 51 0 7 7 7 7 6 8 8 6 -5045 5045 5045 5063 5046 5046 5046 5046 23 51 1 0 0 0 0 7 0 0 7 -5045 5045 5045 5063 5046 5046 5047 5047 23 52 0 7 7 7 7 6 8 8 6 -5045 5045 5046 5046 5046 5028 5047 5029 29 52 0 7 7 7 7 6 8 8 6 -5045 5045 5046 5046 5046 5046 5047 5047 25 52 0 7 7 7 7 6 8 8 6 -5045 5045 5046 5046 5047 5029 5047 5029 29 53 0 7 7 7 7 6 8 8 6 -5045 5045 5046 5046 5047 5029 5047 5029 29 53 1 0 8 8 0 0 0 0 0 -5045 5045 5046 5046 5047 5047 5047 5047 25 53 0 7 7 7 7 6 8 8 6 -5045 5045 5046 5046 5047 5047 5047 5047 25 53 1 0 8 8 0 0 0 0 0 -5045 5045 5046 5064 5046 5046 5047 5047 23 52 0 7 7 7 7 6 8 8 6 -5045 5045 5046 5064 5047 5047 5047 5047 23 53 0 7 7 7 7 6 8 8 6 -5045 5045 5046 5064 5047 5047 5047 5047 23 53 1 0 8 8 0 0 0 0 0 -5045 5045 5063 5063 5046 5046 5046 5046 21 51 0 7 7 7 7 6 8 8 6 -5045 5045 5063 5063 5046 5046 5046 5046 21 51 1 0 0 0 0 7 0 0 7 -5045 5045 5063 5063 5046 5046 5047 5047 21 52 0 7 7 7 7 6 8 8 6 -5045 5045 5063 5063 5064 5046 5064 5046 17 51 0 7 7 7 7 6 8 8 6 -5045 5045 5063 5063 5064 5046 5064 5046 17 51 1 0 0 0 0 7 0 0 7 -5045 5045 5063 5063 5064 5046 5065 5047 17 52 0 7 7 7 7 6 8 8 6 -5045 5045 5064 5064 5046 5046 5047 5047 21 52 0 7 7 7 7 6 8 8 6 -5045 5045 5064 5064 5047 5047 5047 5047 21 53 0 7 7 7 7 6 8 8 6 -5045 5045 5064 5064 5047 5047 5047 5047 21 53 1 0 8 8 0 0 0 0 0 -5045 5045 5064 5064 5064 5046 5065 5047 17 52 0 7 7 7 7 6 8 8 6 -5045 5045 5064 5064 5065 5047 5065 5047 17 53 0 7 7 7 7 6 8 8 6 -5045 5045 5064 5064 5065 5047 5065 5047 17 53 1 0 8 8 0 0 0 0 0 -5045 5063 5063 5063 5064 5046 5064 5046 14 51 0 7 7 7 7 6 8 8 6 -5045 5063 5063 5063 5064 5046 5064 5046 14 51 1 0 0 0 0 7 0 0 7 -5045 5063 5063 5063 5064 5046 5065 5047 14 52 0 7 7 7 7 6 8 8 6 -5045 5063 5064 5064 5064 5046 5065 5047 14 52 0 7 7 7 7 6 8 8 6 -5045 5063 5064 5064 5065 5047 5065 5047 14 53 0 7 7 7 7 6 8 8 6 -5045 5063 5064 5064 5065 5047 5065 5047 14 53 1 0 8 8 0 0 0 0 0 -5046 5046 5046 5046 5047 5029 5047 5029 29 53 0 7 7 7 7 6 8 8 6 -5046 5046 5046 5046 5047 5029 5047 5029 29 53 1 0 8 8 0 0 0 0 0 -5046 5046 5046 5046 5047 5029 5048 5030 29 54 0 7 8 8 7 6 8 8 6 -5046 5046 5046 5046 5047 5047 5047 5047 25 53 0 7 7 7 7 6 8 8 6 -5046 5046 5046 5046 5047 5047 5047 5047 25 53 1 0 8 8 0 0 0 0 0 -5046 5046 5046 5046 5047 5047 5048 5048 25 54 0 7 8 8 7 6 8 8 6 -5046 5046 5046 5064 5047 5047 5047 5047 23 53 0 7 7 7 7 6 8 8 6 -5046 5046 5046 5064 5047 5047 5047 5047 23 53 1 0 8 8 0 0 0 0 0 -5046 5046 5046 5064 5047 5047 5048 5048 23 54 0 7 8 8 7 6 8 8 6 -5046 5046 5047 5047 5047 5029 5048 5030 29 54 0 7 8 8 7 6 8 8 6 -5046 5046 5047 5047 5047 5047 5048 5048 25 54 0 7 8 8 7 6 8 8 6 -5046 5046 5047 5047 5048 5030 5048 5030 29 55 0 6 8 8 6 6 8 8 6 -5046 5046 5047 5047 5048 5030 5048 5030 29 55 1 7 0 0 7 0 0 0 0 -5046 5046 5047 5047 5048 5048 5048 5048 25 55 0 6 8 8 6 6 8 8 6 -5046 5046 5047 5047 5048 5048 5048 5048 25 55 1 7 0 0 7 0 0 0 0 -5046 5046 5047 5065 5047 5047 5048 5048 23 54 0 7 8 8 7 6 8 8 6 -5046 5046 5047 5065 5048 5048 5048 5048 23 55 0 6 8 8 6 6 8 8 6 -5046 5046 5047 5065 5048 5048 5048 5048 23 55 1 7 0 0 7 0 0 0 0 -5046 5046 5064 5064 5047 5047 5047 5047 21 53 0 7 7 7 7 6 8 8 6 -5046 5046 5064 5064 5047 5047 5047 5047 21 53 1 0 8 8 0 0 0 0 0 -5046 5046 5064 5064 5047 5047 5048 5048 21 54 0 7 8 8 7 6 8 8 6 -5046 5046 5064 5064 5065 5047 5065 5047 17 53 0 7 7 7 7 6 8 8 6 -5046 5046 5064 5064 5065 5047 5065 5047 17 53 1 0 8 8 0 0 0 0 0 -5046 5046 5064 5064 5065 5047 5066 5048 17 54 0 7 8 8 7 6 8 8 6 -5046 5046 5065 5065 5047 5047 5048 5048 21 54 0 7 8 8 7 6 8 8 6 -5046 5046 5065 5065 5048 5048 5048 5048 21 55 0 6 8 8 6 6 8 8 6 -5046 5046 5065 5065 5048 5048 5048 5048 21 55 1 7 0 0 7 0 0 0 0 -5046 5046 5065 5065 5065 5047 5066 5048 17 54 0 7 8 8 7 6 8 8 6 -5046 5046 5065 5065 5066 5048 5066 5048 17 55 0 6 8 8 6 6 8 8 6 -5046 5046 5065 5065 5066 5048 5066 5048 17 55 1 7 0 0 7 0 0 0 0 -5046 5064 5064 5064 5065 5047 5065 5047 14 53 0 7 7 7 7 6 8 8 6 -5046 5064 5064 5064 5065 5047 5065 5047 14 53 1 0 8 8 0 0 0 0 0 -5046 5064 5064 5064 5065 5047 5066 5048 14 54 0 7 8 8 7 6 8 8 6 -5046 5064 5065 5065 5065 5047 5066 5048 14 54 0 7 8 8 7 6 8 8 6 -5046 5064 5065 5065 5066 5048 5066 5048 14 55 0 6 8 8 6 6 8 8 6 -5046 5064 5065 5065 5066 5048 5066 5048 14 55 1 7 0 0 7 0 0 0 0 -5047 5047 5047 5047 5048 5030 5048 5030 29 55 0 6 8 8 6 6 8 8 6 -5047 5047 5047 5047 5048 5030 5048 5030 29 55 1 7 0 0 7 0 0 0 0 -5047 5047 5047 5047 5048 5030 5049 5031 29 56 0 6 8 8 6 6 8 8 6 -5047 5047 5047 5047 5048 5048 5048 5048 25 55 0 6 8 8 6 6 8 8 6 -5047 5047 5047 5047 5048 5048 5048 5048 25 55 1 7 0 0 7 0 0 0 0 -5047 5047 5047 5047 5048 5048 5049 5049 25 56 0 6 8 8 6 6 8 8 6 -5047 5047 5047 5065 5048 5048 5048 5048 23 55 0 6 8 8 6 6 8 8 6 -5047 5047 5047 5065 5048 5048 5048 5048 23 55 1 7 0 0 7 0 0 0 0 -5047 5047 5047 5065 5048 5048 5049 5049 23 56 0 6 8 8 6 6 8 8 6 -5047 5047 5048 5048 5048 5030 5049 5031 29 56 0 6 8 8 6 6 8 8 6 -5047 5047 5048 5048 5048 5048 5049 5049 25 56 0 6 8 8 6 6 8 8 6 -5047 5047 5048 5048 5049 5031 5049 5031 29 57 0 6 8 8 6 6 8 8 6 -5047 5047 5048 5048 5049 5049 5049 5049 25 57 0 6 8 8 6 6 8 8 6 -5047 5047 5048 5066 5048 5048 5049 5049 23 56 0 6 8 8 6 6 8 8 6 -5047 5047 5048 5066 5049 5049 5049 5049 23 57 0 6 8 8 6 6 8 8 6 -5047 5047 5065 5065 5048 5048 5048 5048 21 55 0 6 8 8 6 6 8 8 6 -5047 5047 5065 5065 5048 5048 5048 5048 21 55 1 7 0 0 7 0 0 0 0 -5047 5047 5065 5065 5048 5048 5049 5049 21 56 0 6 8 8 6 6 8 8 6 -5047 5047 5065 5065 5066 5048 5066 5048 17 55 0 6 8 8 6 6 8 8 6 -5047 5047 5065 5065 5066 5048 5066 5048 17 55 1 7 0 0 7 0 0 0 0 -5047 5047 5065 5065 5066 5048 5067 5049 17 56 0 6 8 8 6 6 8 8 6 -5047 5047 5066 5066 5048 5048 5049 5049 21 56 0 6 8 8 6 6 8 8 6 -5047 5047 5066 5066 5049 5049 5049 5049 21 57 0 6 8 8 6 6 8 8 6 -5047 5047 5066 5066 5066 5048 5067 5049 17 56 0 6 8 8 6 6 8 8 6 -5047 5047 5066 5066 5067 5049 5067 5049 17 57 0 6 8 8 6 6 8 8 6 -5047 5065 5065 5065 5066 5048 5066 5048 14 55 0 6 8 8 6 6 8 8 6 -5047 5065 5065 5065 5066 5048 5066 5048 14 55 1 7 0 0 7 0 0 0 0 -5047 5065 5065 5065 5066 5048 5067 5049 14 56 0 6 8 8 6 6 8 8 6 -5047 5065 5066 5066 5066 5048 5067 5049 14 56 0 6 8 8 6 6 8 8 6 -5047 5065 5066 5066 5067 5049 5067 5049 14 57 0 6 8 8 6 6 8 8 6 -5048 5048 5048 5048 5049 5031 5049 5031 29 57 0 6 8 8 6 6 8 8 6 -5048 5048 5048 5048 5049 5031 5050 5032 29 58 0 6 8 8 6 6 8 8 6 -5048 5048 5048 5048 5049 5049 5049 5049 25 57 0 6 8 8 6 6 8 8 6 -5048 5048 5048 5048 5049 5049 5050 5050 25 58 0 6 8 8 6 6 8 8 6 -5048 5048 5048 5066 5049 5049 5049 5049 23 57 0 6 8 8 6 6 8 8 6 -5048 5048 5048 5066 5049 5049 5050 5050 23 58 0 6 8 8 6 6 8 8 6 -5048 5048 5049 5049 5049 5031 5050 5032 29 58 0 6 8 8 6 6 8 8 6 -5048 5048 5049 5049 5049 5049 5050 5050 25 58 0 6 8 8 6 6 8 8 6 -5048 5048 5049 5049 5050 5032 5050 5032 29 59 0 6 8 8 6 6 8 8 6 -5048 5048 5049 5049 5050 5050 5050 5050 25 59 0 6 8 8 6 6 8 8 6 -5048 5048 5049 5067 5049 5049 5050 5050 23 58 0 6 8 8 6 6 8 8 6 -5048 5048 5049 5067 5050 5050 5050 5050 23 59 0 6 8 8 6 6 8 8 6 -5048 5048 5066 5066 5049 5049 5049 5049 21 57 0 6 8 8 6 6 8 8 6 -5048 5048 5066 5066 5049 5049 5050 5050 21 58 0 6 8 8 6 6 8 8 6 -5048 5048 5066 5066 5067 5049 5067 5049 17 57 0 6 8 8 6 6 8 8 6 -5048 5048 5066 5066 5067 5049 5068 5050 17 58 0 6 8 8 6 6 8 8 6 -5048 5048 5067 5067 5049 5049 5050 5050 21 58 0 6 8 8 6 6 8 8 6 -5048 5048 5067 5067 5050 5050 5050 5050 21 59 0 6 8 8 6 6 8 8 6 -5048 5048 5067 5067 5067 5049 5068 5050 17 58 0 6 8 8 6 6 8 8 6 -5048 5048 5067 5067 5068 5050 5068 5050 17 59 0 6 8 8 6 6 8 8 6 -5048 5066 5066 5066 5067 5049 5067 5049 14 57 0 6 8 8 6 6 8 8 6 -5048 5066 5066 5066 5067 5049 5068 5050 14 58 0 6 8 8 6 6 8 8 6 -5048 5066 5067 5067 5067 5049 5068 5050 14 58 0 6 8 8 6 6 8 8 6 -5048 5066 5067 5067 5068 5050 5068 5050 14 59 0 6 8 8 6 6 8 8 6 -5049 5049 5049 5049 5050 5032 5050 5032 29 59 0 6 8 8 6 6 8 8 6 -5049 5049 5049 5049 5050 5050 5050 5050 25 59 0 6 8 8 6 6 8 8 6 -5049 5049 5049 5067 5050 5050 5050 5050 23 59 0 6 8 8 6 6 8 8 6 -5049 5049 5050 5050 6037 6019 6037 6019 29 61 0 6 8 8 6 12 10 10 12 -5049 5049 5050 5050 6037 6037 6037 6037 25 61 0 6 8 8 6 12 10 10 12 -5049 5049 5050 5068 6037 6037 6037 6037 23 61 0 6 8 8 6 12 10 10 12 -5049 5049 5067 5067 5050 5050 5050 5050 21 59 0 6 8 8 6 6 8 8 6 -5049 5049 5067 5067 5068 5050 5068 5050 17 59 0 6 8 8 6 6 8 8 6 -5049 5049 5068 5068 6037 6037 6037 6037 21 61 0 6 8 8 6 12 10 10 12 -5049 5049 5068 5068 6055 6037 6055 6037 17 61 0 6 8 8 6 12 10 10 12 -5049 5067 5067 5067 5068 5050 5068 5050 14 59 0 6 8 8 6 6 8 8 6 -5049 5067 5068 5068 6055 6037 6055 6037 14 61 0 6 8 8 6 12 10 10 12 -5050 5050 5050 5050 6037 6019 6037 6019 29 61 0 6 8 8 6 12 10 10 12 -5050 5050 5050 5050 6037 6019 6038 6020 29 62 0 6 8 8 6 12 10 10 12 -5050 5050 5050 5050 6037 6037 6037 6037 25 61 0 6 8 8 6 12 10 10 12 -5050 5050 5050 5050 6037 6037 6038 6038 25 62 0 6 8 8 6 12 10 10 12 -5050 5050 5050 5068 6037 6037 6037 6037 23 61 0 6 8 8 6 12 10 10 12 -5050 5050 5050 5068 6037 6037 6038 6038 23 62 0 6 8 8 6 12 10 10 12 -5050 5050 5051 5051 6037 6019 6038 6020 29 62 0 6 8 8 6 12 10 10 12 -5050 5050 5051 5051 6037 6037 6038 6038 25 62 0 6 8 8 6 12 10 10 12 -5050 5050 5051 5051 6038 6020 6038 6020 29 63 0 6 8 0 0 12 10 10 12 -5050 5050 5051 5051 6038 6038 6038 6038 25 63 0 6 8 0 0 12 10 10 12 -5050 5050 5051 5069 6038 6038 6038 6038 23 63 0 6 8 0 0 12 10 10 12 -5050 5050 5068 5068 6037 6037 6037 6037 21 61 0 6 8 8 6 12 10 10 12 -5050 5050 5068 5068 6037 6037 6038 6038 21 62 0 6 8 8 6 12 10 10 12 -5050 5050 5068 5068 6055 6037 6055 6037 17 61 0 6 8 8 6 12 10 10 12 -5050 5050 5068 5068 6055 6037 6056 6038 17 62 0 6 8 8 6 12 10 10 12 -5050 5050 5069 5069 6037 6037 6038 6038 21 62 0 6 8 8 6 12 10 10 12 -5050 5050 5069 5069 6038 6038 6038 6038 21 63 0 6 8 0 0 12 10 10 12 -5050 5050 5069 5069 6055 6037 6056 6038 17 62 0 6 8 8 6 12 10 10 12 -5050 5050 5069 5069 6056 6038 6056 6038 17 63 0 6 8 0 0 12 10 10 12 -5050 5068 5068 5068 6055 6037 6055 6037 14 61 0 6 8 8 6 12 10 10 12 -5050 5068 5068 5068 6055 6037 6056 6038 14 62 0 6 8 8 6 12 10 10 12 -5050 5068 5069 5069 6055 6037 6056 6038 14 62 0 6 8 8 6 12 10 10 12 -5050 5068 5069 5069 6056 6038 6056 6038 14 63 0 6 8 0 0 12 10 10 12 -5055 5055 5055 5055 5056 5038 5056 5038 12 35 0 8 6 6 8 8 6 6 8 -5055 5055 5055 5055 5056 5038 5057 5039 12 36 0 8 6 6 8 8 6 6 8 -5055 5055 5055 5055 5056 5056 5056 5056 8 35 0 8 6 6 8 8 6 6 8 -5055 5055 5055 5055 5056 5056 5057 5057 8 36 0 8 6 6 8 8 6 6 8 -5055 5055 5055 5073 5056 5056 5056 5056 6 35 0 8 6 6 8 8 6 6 8 -5055 5055 5055 5073 5056 5056 5057 5057 6 36 0 8 6 6 8 8 6 6 8 -5055 5055 5056 5056 5056 5038 5057 5039 12 36 0 8 6 6 8 8 6 6 8 -5055 5055 5056 5056 5056 5056 5057 5057 8 36 0 8 6 6 8 8 6 6 8 -5055 5055 5056 5056 5057 5039 5057 5039 12 37 0 8 6 6 8 8 6 6 8 -5055 5055 5056 5056 5057 5057 5057 5057 8 37 0 8 6 6 8 8 6 6 8 -5055 5055 5056 5074 5056 5056 5057 5057 6 36 0 8 6 6 8 8 6 6 8 -5055 5055 5056 5074 5057 5057 5057 5057 6 37 0 8 6 6 8 8 6 6 8 -5055 5055 5073 5073 5056 5056 5056 5056 2 35 0 8 6 6 8 8 6 6 8 -5055 5055 5073 5073 5056 5056 5057 5057 2 36 0 8 6 6 8 8 6 6 8 -5055 5055 5074 5074 5056 5056 5057 5057 2 36 0 8 6 6 8 8 6 6 8 -5055 5055 5074 5074 5057 5057 5057 5057 2 37 0 8 6 6 8 8 6 6 8 -5056 5056 5056 5056 5057 5039 5057 5039 12 37 0 8 6 6 8 8 6 6 8 -5056 5056 5056 5056 5057 5039 5058 5040 12 38 0 8 6 6 8 8 6 6 8 -5056 5056 5056 5056 5057 5057 5057 5057 8 37 0 8 6 6 8 8 6 6 8 -5056 5056 5056 5056 5057 5057 5058 5058 8 38 0 8 6 6 8 8 6 6 8 -5056 5056 5056 5074 5057 5057 5057 5057 6 37 0 8 6 6 8 8 6 6 8 -5056 5056 5056 5074 5057 5057 5058 5058 6 38 0 8 6 6 8 8 6 6 8 -5056 5056 5057 5057 5057 5039 5058 5040 12 38 0 8 6 6 8 8 6 6 8 -5056 5056 5057 5057 5057 5057 5058 5058 8 38 0 8 6 6 8 8 6 6 8 -5056 5056 5057 5057 5058 5040 5058 5040 12 39 0 8 6 6 8 8 6 6 8 -5056 5056 5057 5057 5058 5058 5058 5058 8 39 0 8 6 6 8 8 6 6 8 -5056 5056 5057 5075 5057 5057 5058 5058 6 38 0 8 6 6 8 8 6 6 8 -5056 5056 5057 5075 5058 5058 5058 5058 6 39 0 8 6 6 8 8 6 6 8 -5056 5056 5074 5074 5057 5057 5057 5057 2 37 0 8 6 6 8 8 6 6 8 -5056 5056 5074 5074 5057 5057 5058 5058 2 38 0 8 6 6 8 8 6 6 8 -5056 5056 5075 5075 5057 5057 5058 5058 2 38 0 8 6 6 8 8 6 6 8 -5056 5056 5075 5075 5058 5058 5058 5058 2 39 0 8 6 6 8 8 6 6 8 -5057 5057 5057 5057 5058 5040 5058 5040 12 39 0 8 6 6 8 8 6 6 8 -5057 5057 5057 5057 5058 5040 5059 5041 12 40 0 8 6 6 8 8 6 6 8 -5057 5057 5057 5057 5058 5040 5059 5041 12 40 1 0 0 0 0 0 7 7 0 -5057 5057 5057 5057 5058 5058 5058 5058 8 39 0 8 6 6 8 8 6 6 8 -5057 5057 5057 5057 5058 5058 5059 5059 8 40 0 8 6 6 8 8 6 6 8 -5057 5057 5057 5057 5058 5058 5059 5059 8 40 1 0 0 0 0 0 7 7 0 -5057 5057 5057 5075 5058 5058 5058 5058 6 39 0 8 6 6 8 8 6 6 8 -5057 5057 5057 5075 5058 5058 5059 5059 6 40 0 8 6 6 8 8 6 6 8 -5057 5057 5057 5075 5058 5058 5059 5059 6 40 1 0 0 0 0 0 7 7 0 -5057 5057 5058 5058 5058 5040 5059 5041 12 40 0 8 6 6 8 8 6 6 8 -5057 5057 5058 5058 5058 5040 5059 5041 12 40 1 0 0 0 0 0 7 7 0 -5057 5057 5058 5058 5058 5058 5059 5059 8 40 0 8 6 6 8 8 6 6 8 -5057 5057 5058 5058 5058 5058 5059 5059 8 40 1 0 0 0 0 0 7 7 0 -5057 5057 5058 5058 5059 5041 5059 5041 12 41 0 8 6 6 8 8 7 7 8 -5057 5057 5058 5058 5059 5059 5059 5059 8 41 0 8 6 6 8 8 7 7 8 -5057 5057 5058 5076 5058 5058 5059 5059 6 40 0 8 6 6 8 8 6 6 8 -5057 5057 5058 5076 5058 5058 5059 5059 6 40 1 0 0 0 0 0 7 7 0 -5057 5057 5058 5076 5059 5059 5059 5059 6 41 0 8 6 6 8 8 7 7 8 -5057 5057 5075 5075 5058 5058 5058 5058 2 39 0 8 6 6 8 8 6 6 8 -5057 5057 5075 5075 5058 5058 5059 5059 2 40 0 8 6 6 8 8 6 6 8 -5057 5057 5075 5075 5058 5058 5059 5059 2 40 1 0 0 0 0 0 7 7 0 -5057 5057 5076 5076 5058 5058 5059 5059 2 40 0 8 6 6 8 8 6 6 8 -5057 5057 5076 5076 5058 5058 5059 5059 2 40 1 0 0 0 0 0 7 7 0 -5057 5057 5076 5076 5059 5059 5059 5059 3 41 0 8 6 6 8 8 7 7 8 -5058 5058 5058 5058 5059 5041 5059 5041 12 41 0 8 6 6 8 8 7 7 8 -5058 5058 5058 5058 5059 5041 5060 5042 12 42 0 8 6 6 8 7 7 7 7 -5058 5058 5058 5058 5059 5041 5060 5042 12 42 1 0 0 0 0 8 0 0 8 -5058 5058 5058 5058 5059 5059 5059 5059 8 41 0 8 6 6 8 8 7 7 8 -5058 5058 5058 5058 5059 5059 5060 5060 8 42 0 8 6 6 8 7 7 7 7 -5058 5058 5058 5058 5059 5059 5060 5060 8 42 1 0 0 0 0 8 0 0 8 -5058 5058 5058 5076 5059 5059 5059 5059 6 41 0 8 6 6 8 8 7 7 8 -5058 5058 5058 5076 5059 5059 5060 5060 6 42 0 8 6 6 8 7 7 7 7 -5058 5058 5058 5076 5059 5059 5060 5060 6 42 1 0 0 0 0 8 0 0 8 -5058 5058 5059 5059 5059 5041 5060 5042 12 42 0 8 6 6 8 7 7 7 7 -5058 5058 5059 5059 5059 5041 5060 5042 12 42 1 0 0 0 0 8 0 0 8 -5058 5058 5059 5059 5059 5059 5060 5060 8 42 0 8 6 6 8 7 7 7 7 -5058 5058 5059 5059 5059 5059 5060 5060 8 42 1 0 0 0 0 8 0 0 8 -5058 5058 5059 5059 5060 5042 5060 5042 12 43 0 8 6 6 8 7 7 7 7 -5058 5058 5059 5059 5060 5042 5060 5042 12 43 1 0 7 7 0 0 0 0 0 -5058 5058 5059 5059 5060 5060 5060 5060 8 43 0 8 6 6 8 7 7 7 7 -5058 5058 5059 5059 5060 5060 5060 5060 8 43 1 0 7 7 0 0 0 0 0 -5058 5058 5059 5077 5059 5059 5060 5060 6 42 0 8 6 6 8 7 7 7 7 -5058 5058 5059 5077 5059 5059 5060 5060 6 42 1 0 0 0 0 8 0 0 8 -5058 5058 5059 5077 5060 5060 5060 5060 6 43 0 8 6 6 8 7 7 7 7 -5058 5058 5059 5077 5060 5060 5060 5060 6 43 1 0 7 7 0 0 0 0 0 -5058 5058 5076 5076 5059 5059 5059 5059 3 41 0 8 6 6 8 8 7 7 8 -5058 5058 5076 5076 5059 5059 5060 5060 3 42 0 8 6 6 8 7 7 7 7 -5058 5058 5076 5076 5059 5059 5060 5060 3 42 1 0 0 0 0 8 0 0 8 -5058 5058 5077 5077 5059 5059 5060 5060 3 42 0 8 6 6 8 7 7 7 7 -5058 5058 5077 5077 5059 5059 5060 5060 3 42 1 0 0 0 0 8 0 0 8 -5058 5058 5077 5077 5060 5060 5060 5060 3 43 0 8 6 6 8 7 7 7 7 -5058 5058 5077 5077 5060 5060 5060 5060 3 43 1 0 7 7 0 0 0 0 0 -5059 5059 5059 5059 5060 5042 5060 5042 12 43 0 8 6 6 8 7 7 7 7 -5059 5059 5059 5059 5060 5042 5060 5042 12 43 1 0 7 7 0 0 0 0 0 -5059 5059 5059 5059 5060 5042 5061 5043 12 44 0 8 7 7 8 7 7 7 7 -5059 5059 5059 5059 5060 5060 5060 5060 8 43 0 8 6 6 8 7 7 7 7 -5059 5059 5059 5059 5060 5060 5060 5060 8 43 1 0 7 7 0 0 0 0 0 -5059 5059 5059 5059 5060 5060 5061 5061 8 44 0 8 7 7 8 7 7 7 7 -5059 5059 5059 5077 5060 5060 5060 5060 6 43 0 8 6 6 8 7 7 7 7 -5059 5059 5059 5077 5060 5060 5060 5060 6 43 1 0 7 7 0 0 0 0 0 -5059 5059 5059 5077 5060 5060 5061 5061 6 44 0 8 7 7 8 7 7 7 7 -5059 5059 5060 5060 5060 5042 5061 5043 12 44 0 8 7 7 8 7 7 7 7 -5059 5059 5060 5060 5060 5060 5061 5061 8 44 0 8 7 7 8 7 7 7 7 -5059 5059 5060 5060 5061 5043 5061 5043 12 45 0 7 7 7 7 7 7 7 7 -5059 5059 5060 5060 5061 5043 5061 5043 12 45 1 8 0 0 0 0 0 0 0 -5059 5059 5060 5060 5061 5061 5061 5061 8 45 0 7 7 7 7 7 7 7 7 -5059 5059 5060 5060 5061 5061 5061 5061 8 45 1 8 0 0 0 0 0 0 0 -5059 5059 5060 5078 5060 5060 5061 5061 6 44 0 8 7 7 8 7 7 7 7 -5059 5059 5060 5078 5061 5061 5061 5061 6 45 0 7 7 7 7 7 7 7 7 -5059 5059 5060 5078 5061 5061 5061 5061 6 45 1 8 0 0 0 0 0 0 0 -5059 5059 5077 5077 5060 5060 5060 5060 3 43 0 8 6 6 8 7 7 7 7 -5059 5059 5077 5077 5060 5060 5060 5060 3 43 1 0 7 7 0 0 0 0 0 -5059 5059 5077 5077 5060 5060 5061 5061 3 44 0 8 7 7 8 7 7 7 7 -5059 5059 5078 5078 5060 5060 5061 5061 3 44 0 8 7 7 8 7 7 7 7 -5059 5059 5078 5078 5061 5061 5061 5061 3 45 0 7 7 7 7 7 7 7 7 -5059 5059 5078 5078 5061 5061 5061 5061 3 45 1 8 0 0 0 0 0 0 0 -5060 5060 5060 5060 5061 5043 5061 5043 12 45 0 7 7 7 7 7 7 7 7 -5060 5060 5060 5060 5061 5043 5061 5043 12 45 1 8 0 0 0 0 0 0 0 -5060 5060 5060 5060 5061 5043 5062 5044 12 46 0 7 7 7 7 7 7 7 7 -5060 5060 5060 5060 5061 5061 5061 5061 8 45 0 7 7 7 7 7 7 7 7 -5060 5060 5060 5060 5061 5061 5061 5061 8 45 1 8 0 0 0 0 0 0 0 -5060 5060 5060 5060 5061 5061 5062 5062 8 46 0 7 7 7 7 7 7 7 7 -5060 5060 5060 5078 5061 5061 5061 5061 6 45 0 7 7 7 7 7 7 7 7 -5060 5060 5060 5078 5061 5061 5061 5061 6 45 1 8 0 0 0 0 0 0 0 -5060 5060 5060 5078 5061 5061 5062 5062 6 46 0 7 7 7 7 7 7 7 7 -5060 5060 5061 5061 5061 5043 5062 5044 12 46 0 7 7 7 7 7 7 7 7 -5060 5060 5061 5061 5061 5061 5062 5062 8 46 0 7 7 7 7 7 7 7 7 -5060 5060 5061 5061 5062 5044 5062 5044 12 47 0 7 7 7 7 7 7 7 7 -5060 5060 5061 5061 5062 5062 5062 5062 8 47 0 7 7 7 7 7 7 7 7 -5060 5060 5061 5079 5061 5061 5062 5062 6 46 0 7 7 7 7 7 7 7 7 -5060 5060 5061 5079 5062 5062 5062 5062 6 47 0 7 7 7 7 7 7 7 7 -5060 5060 5078 5078 5061 5061 5061 5061 3 45 0 7 7 7 7 7 7 7 7 -5060 5060 5078 5078 5061 5061 5061 5061 3 45 1 8 0 0 0 0 0 0 0 -5060 5060 5078 5078 5061 5061 5062 5062 3 46 0 7 7 7 7 7 7 7 7 -5060 5060 5079 5079 5061 5061 5062 5062 3 46 0 7 7 7 7 7 7 7 7 -5060 5060 5079 5079 5062 5062 5062 5062 3 47 0 7 7 7 7 7 7 7 7 -5061 5061 5061 5061 5062 5044 5062 5044 12 47 0 7 7 7 7 7 7 7 7 -5061 5061 5061 5061 5062 5044 5063 5045 12 48 0 7 7 7 7 7 7 7 7 -5061 5061 5061 5061 5062 5062 5062 5062 8 47 0 7 7 7 7 7 7 7 7 -5061 5061 5061 5061 5062 5062 5063 5063 8 48 0 7 7 7 7 7 7 7 7 -5061 5061 5061 5079 5062 5062 5062 5062 6 47 0 7 7 7 7 7 7 7 7 -5061 5061 5061 5079 5062 5062 5063 5063 6 48 0 7 7 7 7 7 7 7 7 -5061 5061 5062 5062 5062 5044 5063 5045 12 48 0 7 7 7 7 7 7 7 7 -5061 5061 5062 5062 5062 5062 5063 5063 8 48 0 7 7 7 7 7 7 7 7 -5061 5061 5062 5062 5063 5045 5063 5045 12 49 0 7 7 7 7 7 7 7 7 -5061 5061 5062 5062 5063 5063 5063 5063 8 49 0 7 7 7 7 7 7 7 7 -5061 5061 5062 5080 5062 5062 5063 5063 6 48 0 7 7 7 7 7 7 7 7 -5061 5061 5062 5080 5063 5063 5063 5063 6 49 0 7 7 7 7 7 7 7 7 -5061 5061 5079 5079 5062 5062 5062 5062 3 47 0 7 7 7 7 7 7 7 7 -5061 5061 5079 5079 5062 5062 5063 5063 3 48 0 7 7 7 7 7 7 7 7 -5061 5061 5080 5080 5062 5062 5063 5063 3 48 0 7 7 7 7 7 7 7 7 -5061 5061 5080 5080 5063 5063 5063 5063 3 49 0 7 7 7 7 7 7 7 7 -5062 5062 5062 5062 5063 5045 5063 5045 12 49 0 7 7 7 7 7 7 7 7 -5062 5062 5062 5062 5063 5045 5064 5046 12 50 0 7 7 7 7 7 7 7 7 -5062 5062 5062 5062 5063 5045 5064 5046 12 50 1 0 0 0 0 0 8 8 0 -5062 5062 5062 5062 5063 5063 5063 5063 8 49 0 7 7 7 7 7 7 7 7 -5062 5062 5062 5062 5063 5063 5064 5064 8 50 0 7 7 7 7 7 7 7 7 -5062 5062 5062 5062 5063 5063 5064 5064 8 50 1 0 0 0 0 0 8 8 0 -5062 5062 5062 5080 5063 5063 5063 5063 6 49 0 7 7 7 7 7 7 7 7 -5062 5062 5062 5080 5063 5063 5064 5064 6 50 0 7 7 7 7 7 7 7 7 -5062 5062 5062 5080 5063 5063 5064 5064 6 50 1 0 0 0 0 0 8 8 0 -5062 5062 5063 5063 5063 5045 5064 5046 12 50 0 7 7 7 7 7 7 7 7 -5062 5062 5063 5063 5063 5045 5064 5046 12 50 1 0 0 0 0 0 8 8 0 -5062 5062 5063 5063 5063 5063 5064 5064 8 50 0 7 7 7 7 7 7 7 7 -5062 5062 5063 5063 5063 5063 5064 5064 8 50 1 0 0 0 0 0 8 8 0 -5062 5062 5063 5063 5064 5046 5064 5046 12 51 0 7 7 7 7 6 8 8 6 -5062 5062 5063 5063 5064 5046 5064 5046 12 51 1 0 0 0 0 7 0 0 7 -5062 5062 5063 5063 5064 5064 5064 5064 8 51 0 7 7 7 7 6 8 8 6 -5062 5062 5063 5063 5064 5064 5064 5064 8 51 1 0 0 0 0 7 0 0 7 -5062 5062 5063 5081 5063 5063 5064 5064 6 50 0 7 7 7 7 7 7 7 7 -5062 5062 5063 5081 5063 5063 5064 5064 6 50 1 0 0 0 0 0 8 8 0 -5062 5062 5063 5081 5064 5064 5064 5064 6 51 0 7 7 7 7 6 8 8 6 -5062 5062 5063 5081 5064 5064 5064 5064 6 51 1 0 0 0 0 7 0 0 7 -5062 5062 5080 5080 5063 5063 5063 5063 3 49 0 7 7 7 7 7 7 7 7 -5062 5062 5080 5080 5063 5063 5064 5064 3 50 0 7 7 7 7 7 7 7 7 -5062 5062 5080 5080 5063 5063 5064 5064 3 50 1 0 0 0 0 0 8 8 0 -5062 5062 5081 5081 5063 5063 5064 5064 3 50 0 7 7 7 7 7 7 7 7 -5062 5062 5081 5081 5063 5063 5064 5064 3 50 1 0 0 0 0 0 8 8 0 -5062 5062 5081 5081 5064 5064 5064 5064 3 51 0 7 7 7 7 6 8 8 6 -5062 5062 5081 5081 5064 5064 5064 5064 3 51 1 0 0 0 0 7 0 0 7 -5063 5063 5063 5063 5064 5046 5064 5046 12 51 0 7 7 7 7 6 8 8 6 -5063 5063 5063 5063 5064 5046 5064 5046 12 51 1 0 0 0 0 7 0 0 7 -5063 5063 5063 5063 5064 5046 5065 5047 12 52 0 7 7 7 7 6 8 8 6 -5063 5063 5063 5063 5064 5064 5064 5064 8 51 0 7 7 7 7 6 8 8 6 -5063 5063 5063 5063 5064 5064 5064 5064 8 51 1 0 0 0 0 7 0 0 7 -5063 5063 5063 5063 5064 5064 5065 5065 8 52 0 7 7 7 7 6 8 8 6 -5063 5063 5063 5081 5064 5064 5064 5064 6 51 0 7 7 7 7 6 8 8 6 -5063 5063 5063 5081 5064 5064 5064 5064 6 51 1 0 0 0 0 7 0 0 7 -5063 5063 5063 5081 5064 5064 5065 5065 6 52 0 7 7 7 7 6 8 8 6 -5063 5063 5064 5064 5064 5046 5065 5047 12 52 0 7 7 7 7 6 8 8 6 -5063 5063 5064 5064 5064 5064 5065 5065 8 52 0 7 7 7 7 6 8 8 6 -5063 5063 5064 5064 5065 5047 5065 5047 12 53 0 7 7 7 7 6 8 8 6 -5063 5063 5064 5064 5065 5047 5065 5047 12 53 1 0 8 8 0 0 0 0 0 -5063 5063 5064 5064 5065 5065 5065 5065 8 53 0 7 7 7 7 6 8 8 6 -5063 5063 5064 5064 5065 5065 5065 5065 8 53 1 0 8 8 0 0 0 0 0 -5063 5063 5064 5082 5064 5064 5065 5065 6 52 0 7 7 7 7 6 8 8 6 -5063 5063 5064 5082 5065 5065 5065 5065 6 53 0 7 7 7 7 6 8 8 6 -5063 5063 5064 5082 5065 5065 5065 5065 6 53 1 0 8 8 0 0 0 0 0 -5063 5063 5081 5081 5064 5064 5064 5064 3 51 0 7 7 7 7 6 8 8 6 -5063 5063 5081 5081 5064 5064 5064 5064 3 51 1 0 0 0 0 7 0 0 7 -5063 5063 5081 5081 5064 5064 5065 5065 3 52 0 7 7 7 7 6 8 8 6 -5063 5063 5082 5082 5064 5064 5065 5065 3 52 0 7 7 7 7 6 8 8 6 -5063 5063 5082 5082 5065 5065 5065 5065 3 53 0 7 7 7 7 6 8 8 6 -5063 5063 5082 5082 5065 5065 5065 5065 3 53 1 0 8 8 0 0 0 0 0 -5064 5064 5064 5064 5065 5047 5065 5047 12 53 0 7 7 7 7 6 8 8 6 -5064 5064 5064 5064 5065 5047 5065 5047 12 53 1 0 8 8 0 0 0 0 0 -5064 5064 5064 5064 5065 5047 5066 5048 12 54 0 7 8 8 7 6 8 8 6 -5064 5064 5064 5064 5065 5065 5065 5065 8 53 0 7 7 7 7 6 8 8 6 -5064 5064 5064 5064 5065 5065 5065 5065 8 53 1 0 8 8 0 0 0 0 0 -5064 5064 5064 5064 5065 5065 5066 5066 8 54 0 7 8 8 7 6 8 8 6 -5064 5064 5064 5082 5065 5065 5065 5065 6 53 0 7 7 7 7 6 8 8 6 -5064 5064 5064 5082 5065 5065 5065 5065 6 53 1 0 8 8 0 0 0 0 0 -5064 5064 5064 5082 5065 5065 5066 5066 6 54 0 7 8 8 7 6 8 8 6 -5064 5064 5065 5065 5065 5047 5066 5048 12 54 0 7 8 8 7 6 8 8 6 -5064 5064 5065 5065 5065 5065 5066 5066 8 54 0 7 8 8 7 6 8 8 6 -5064 5064 5065 5065 5066 5048 5066 5048 12 55 0 6 8 8 6 6 8 8 6 -5064 5064 5065 5065 5066 5048 5066 5048 12 55 1 7 0 0 7 0 0 0 0 -5064 5064 5065 5065 5066 5066 5066 5066 8 55 0 6 8 8 6 6 8 8 6 -5064 5064 5065 5065 5066 5066 5066 5066 8 55 1 7 0 0 7 0 0 0 0 -5064 5064 5065 5083 5065 5065 5066 5066 6 54 0 7 8 8 7 6 8 8 6 -5064 5064 5065 5083 5066 5066 5066 5066 6 55 0 6 8 8 6 6 8 8 6 -5064 5064 5065 5083 5066 5066 5066 5066 6 55 1 7 0 0 7 0 0 0 0 -5064 5064 5082 5082 5065 5065 5065 5065 3 53 0 7 7 7 7 6 8 8 6 -5064 5064 5082 5082 5065 5065 5065 5065 3 53 1 0 8 8 0 0 0 0 0 -5064 5064 5082 5082 5065 5065 5066 5066 3 54 0 7 8 8 7 6 8 8 6 -5064 5064 5083 5083 5065 5065 5066 5066 3 54 0 7 8 8 7 6 8 8 6 -5064 5064 5083 5083 5066 5066 5066 5066 3 55 0 6 8 8 6 6 8 8 6 -5064 5064 5083 5083 5066 5066 5066 5066 3 55 1 7 0 0 7 0 0 0 0 -5065 5065 5065 5065 5066 5048 5066 5048 12 55 0 6 8 8 6 6 8 8 6 -5065 5065 5065 5065 5066 5048 5066 5048 12 55 1 7 0 0 7 0 0 0 0 -5065 5065 5065 5065 5066 5048 5067 5049 12 56 0 6 8 8 6 6 8 8 6 -5065 5065 5065 5065 5066 5066 5066 5066 8 55 0 6 8 8 6 6 8 8 6 -5065 5065 5065 5065 5066 5066 5066 5066 8 55 1 7 0 0 7 0 0 0 0 -5065 5065 5065 5065 5066 5066 5067 5067 8 56 0 6 8 8 6 6 8 8 6 -5065 5065 5065 5083 5066 5066 5066 5066 6 55 0 6 8 8 6 6 8 8 6 -5065 5065 5065 5083 5066 5066 5066 5066 6 55 1 7 0 0 7 0 0 0 0 -5065 5065 5065 5083 5066 5066 5067 5067 6 56 0 6 8 8 6 6 8 8 6 -5065 5065 5066 5066 5066 5048 5067 5049 12 56 0 6 8 8 6 6 8 8 6 -5065 5065 5066 5066 5066 5066 5067 5067 8 56 0 6 8 8 6 6 8 8 6 -5065 5065 5066 5066 5067 5049 5067 5049 12 57 0 6 8 8 6 6 8 8 6 -5065 5065 5066 5066 5067 5067 5067 5067 8 57 0 6 8 8 6 6 8 8 6 -5065 5065 5066 5084 5066 5066 5067 5067 6 56 0 6 8 8 6 6 8 8 6 -5065 5065 5066 5084 5067 5067 5067 5067 6 57 0 6 8 8 6 6 8 8 6 -5065 5065 5083 5083 5066 5066 5066 5066 3 55 0 6 8 8 6 6 8 8 6 -5065 5065 5083 5083 5066 5066 5066 5066 3 55 1 7 0 0 7 0 0 0 0 -5065 5065 5083 5083 5066 5066 5067 5067 3 56 0 6 8 8 6 6 8 8 6 -5065 5065 5084 5084 5066 5066 5067 5067 3 56 0 6 8 8 6 6 8 8 6 -5065 5065 5084 5084 5067 5067 5067 5067 3 57 0 6 8 8 6 6 8 8 6 -5066 5066 5066 5066 5067 5049 5067 5049 12 57 0 6 8 8 6 6 8 8 6 -5066 5066 5066 5066 5067 5049 5068 5050 12 58 0 6 8 8 6 6 8 8 6 -5066 5066 5066 5066 5067 5067 5067 5067 8 57 0 6 8 8 6 6 8 8 6 -5066 5066 5066 5066 5067 5067 5068 5068 8 58 0 6 8 8 6 6 8 8 6 -5066 5066 5066 5084 5067 5067 5067 5067 6 57 0 6 8 8 6 6 8 8 6 -5066 5066 5066 5084 5067 5067 5068 5068 6 58 0 6 8 8 6 6 8 8 6 -5066 5066 5067 5067 5067 5049 5068 5050 12 58 0 6 8 8 6 6 8 8 6 -5066 5066 5067 5067 5067 5067 5068 5068 8 58 0 6 8 8 6 6 8 8 6 -5066 5066 5067 5067 5068 5050 5068 5050 12 59 0 6 8 8 6 6 8 8 6 -5066 5066 5067 5067 5068 5068 5068 5068 8 59 0 6 8 8 6 6 8 8 6 -5066 5066 5067 5085 5067 5067 5068 5068 6 58 0 6 8 8 6 6 8 8 6 -5066 5066 5067 5085 5068 5068 5068 5068 6 59 0 6 8 8 6 6 8 8 6 -5066 5066 5084 5084 5067 5067 5067 5067 3 57 0 6 8 8 6 6 8 8 6 -5066 5066 5084 5084 5067 5067 5068 5068 3 58 0 6 8 8 6 6 8 8 6 -5066 5066 5085 5085 5067 5067 5068 5068 3 58 0 6 8 8 6 6 8 8 6 -5066 5066 5085 5085 5068 5068 5068 5068 3 59 0 6 8 8 6 6 8 8 6 -5067 5067 5067 5067 5068 5050 5068 5050 12 59 0 6 8 8 6 6 8 8 6 -5067 5067 5067 5067 5068 5068 5068 5068 8 59 0 6 8 8 6 6 8 8 6 -5067 5067 5067 5085 5068 5068 5068 5068 6 59 0 6 8 8 6 6 8 8 6 -5067 5067 5068 5068 6055 6037 6055 6037 12 61 0 6 8 8 6 12 10 10 12 -5067 5067 5068 5068 6055 6055 6055 6055 8 61 0 6 8 8 6 12 10 10 12 -5067 5067 5068 5086 6055 6055 6055 6055 6 61 0 6 8 8 6 12 10 10 12 -5067 5067 5085 5085 5068 5068 5068 5068 3 59 0 6 8 8 6 6 8 8 6 -5067 5067 5086 5086 6055 6055 6055 6055 3 61 0 6 8 8 6 12 10 10 12 -5068 5068 5068 5068 6055 6037 6055 6037 12 61 0 6 8 8 6 12 10 10 12 -5068 5068 5068 5068 6055 6037 6056 6038 12 62 0 6 8 8 6 12 10 10 12 -5068 5068 5068 5068 6055 6055 6055 6055 8 61 0 6 8 8 6 12 10 10 12 -5068 5068 5068 5068 6055 6055 6056 6056 8 62 0 6 8 8 6 12 10 10 12 -5068 5068 5068 5086 6055 6055 6055 6055 6 61 0 6 8 8 6 12 10 10 12 -5068 5068 5068 5086 6055 6055 6056 6056 6 62 0 6 8 8 6 12 10 10 12 -5068 5068 5069 5069 6055 6037 6056 6038 12 62 0 6 8 8 6 12 10 10 12 -5068 5068 5069 5069 6055 6055 6056 6056 8 62 0 6 8 8 6 12 10 10 12 -5068 5068 5069 5069 6056 6038 6056 6038 12 63 0 6 8 0 0 12 10 10 12 -5068 5068 5069 5069 6056 6056 6056 6056 8 63 0 6 8 0 0 12 10 10 12 -5068 5068 5069 5087 6055 6055 6056 6056 6 62 0 6 8 8 6 12 10 10 12 -5068 5068 5069 5087 6056 6056 6056 6056 6 63 0 6 8 0 0 12 10 10 12 -5068 5068 5086 5086 6055 6055 6055 6055 3 61 0 6 8 8 6 12 10 10 12 -5068 5068 5086 5086 6055 6055 6056 6056 3 62 0 6 8 8 6 12 10 10 12 -5068 5068 5087 5087 6055 6055 6056 6056 3 62 0 6 8 8 6 12 10 10 12 -5068 5068 5087 5087 6056 6056 6056 6056 3 63 0 6 8 0 0 12 10 10 12 -6001 6001 6001 6001 6002 6002 6003 6003 60 65 0 12 10 10 12 12 10 10 12 -6001 6001 6001 6001 6003 6003 6003 6003 60 65 0 12 10 10 12 12 10 10 12 -6001 6001 6001 6019 6002 6002 6003 6003 57 65 0 12 10 10 12 12 10 10 12 -6001 6001 6001 6019 6003 6003 6003 6003 57 65 0 12 10 10 12 12 10 10 12 -6001 6001 6019 6019 6002 6002 6003 6003 55 65 0 12 10 10 12 12 10 10 12 -6001 6001 6019 6019 6003 6003 6003 6003 55 65 0 12 10 10 12 12 10 10 12 -6001 6001 6019 6019 6020 6002 6021 6003 51 65 0 12 10 10 12 12 10 10 12 -6001 6001 6019 6019 6021 6003 6021 6003 51 65 0 12 10 10 12 12 10 10 12 -6001 6019 6019 6019 6020 6002 6021 6003 49 65 0 12 10 10 12 12 10 10 12 -6001 6019 6019 6019 6021 6003 6021 6003 49 65 0 12 10 10 12 12 10 10 12 -6002 6002 6001 6001 6003 6003 6003 6003 60 66 0 12 10 10 12 12 10 10 12 -6002 6002 6001 6001 6003 6003 6004 6004 60 66 0 12 10 10 12 12 10 10 12 -6002 6002 6001 6019 6003 6003 6003 6003 57 66 0 12 10 10 12 12 10 10 12 -6002 6002 6001 6019 6003 6003 6004 6004 57 66 0 12 10 10 12 12 10 10 12 -6002 6002 6002 6002 6003 6003 6004 6004 60 67 0 12 10 10 12 12 10 10 12 -6002 6002 6002 6002 6004 6004 6004 6004 60 67 0 12 10 10 12 12 10 10 12 -6002 6002 6002 6020 6003 6003 6004 6004 57 67 0 12 10 10 12 12 10 10 12 -6002 6002 6002 6020 6004 6004 6004 6004 57 67 0 12 10 10 12 12 10 10 12 -6002 6002 6019 6019 6003 6003 6003 6003 55 66 0 12 10 10 12 12 10 10 12 -6002 6002 6019 6019 6003 6003 6004 6004 55 66 0 12 10 10 12 12 10 10 12 -6002 6002 6019 6019 6021 6003 6021 6003 51 66 0 12 10 10 12 12 10 10 12 -6002 6002 6019 6019 6021 6003 6022 6004 51 66 0 12 10 10 12 12 10 10 12 -6002 6002 6020 6020 6003 6003 6004 6004 55 67 0 12 10 10 12 12 10 10 12 -6002 6002 6020 6020 6004 6004 6004 6004 55 67 0 12 10 10 12 12 10 10 12 -6002 6002 6020 6020 6021 6003 6022 6004 51 67 0 12 10 10 12 12 10 10 12 -6002 6002 6020 6020 6022 6004 6022 6004 51 67 0 12 10 10 12 12 10 10 12 -6002 6020 6019 6019 6021 6003 6021 6003 49 66 0 12 10 10 12 12 10 10 12 -6002 6020 6019 6019 6021 6003 6022 6004 49 66 0 12 10 10 12 12 10 10 12 -6002 6020 6020 6020 6021 6003 6022 6004 49 67 0 12 10 10 12 12 10 10 12 -6002 6020 6020 6020 6022 6004 6022 6004 49 67 0 12 10 10 12 12 10 10 12 -6003 6003 6002 6002 6004 6004 6004 6004 60 68 0 12 10 10 12 12 10 10 12 -6003 6003 6002 6002 6004 6004 6004 6004 60 68 1 0 0 0 0 0 11 11 0 -6003 6003 6002 6002 6004 6004 6005 6005 60 68 0 12 10 10 12 12 10 10 12 -6003 6003 6002 6002 6004 6004 6005 6005 60 68 1 0 0 0 0 0 11 11 0 -6003 6003 6002 6020 6004 6004 6004 6004 57 68 0 12 10 10 12 12 10 10 12 -6003 6003 6002 6020 6004 6004 6004 6004 57 68 1 0 0 0 0 0 11 11 0 -6003 6003 6002 6020 6004 6004 6005 6005 57 68 0 12 10 10 12 12 10 10 12 -6003 6003 6002 6020 6004 6004 6005 6005 57 68 1 0 0 0 0 0 11 11 0 -6003 6003 6003 6003 6004 6004 6005 6005 60 69 0 12 10 10 12 12 11 11 12 -6003 6003 6003 6003 6005 6005 6005 6005 60 69 0 12 10 10 12 12 11 11 12 -6003 6003 6003 6021 6004 6004 6005 6005 57 69 0 12 10 10 12 12 11 11 12 -6003 6003 6003 6021 6005 6005 6005 6005 57 69 0 12 10 10 12 12 11 11 12 -6003 6003 6020 6020 6004 6004 6004 6004 55 68 0 12 10 10 12 12 10 10 12 -6003 6003 6020 6020 6004 6004 6004 6004 55 68 1 0 0 0 0 0 11 11 0 -6003 6003 6020 6020 6004 6004 6005 6005 55 68 0 12 10 10 12 12 10 10 12 -6003 6003 6020 6020 6004 6004 6005 6005 55 68 1 0 0 0 0 0 11 11 0 -6003 6003 6020 6020 6022 6004 6022 6004 51 68 0 12 10 10 12 12 10 10 12 -6003 6003 6020 6020 6022 6004 6022 6004 51 68 1 0 0 0 0 0 11 11 0 -6003 6003 6020 6020 6022 6004 6023 6005 51 68 0 12 10 10 12 12 10 10 12 -6003 6003 6020 6020 6022 6004 6023 6005 51 68 1 0 0 0 0 0 11 11 0 -6003 6003 6021 6021 6004 6004 6005 6005 55 69 0 12 10 10 12 12 11 11 12 -6003 6003 6021 6021 6005 6005 6005 6005 55 69 0 12 10 10 12 12 11 11 12 -6003 6003 6021 6021 6022 6004 6023 6005 51 69 0 12 10 10 12 12 11 11 12 -6003 6003 6021 6021 6023 6005 6023 6005 51 69 0 12 10 10 12 12 11 11 12 -6003 6021 6020 6020 6022 6004 6022 6004 49 68 0 12 10 10 12 12 10 10 12 -6003 6021 6020 6020 6022 6004 6022 6004 49 68 1 0 0 0 0 0 11 11 0 -6003 6021 6020 6020 6022 6004 6023 6005 49 68 0 12 10 10 12 12 10 10 12 -6003 6021 6020 6020 6022 6004 6023 6005 49 68 1 0 0 0 0 0 11 11 0 -6003 6021 6021 6021 6022 6004 6023 6005 49 69 0 12 10 10 12 12 11 11 12 -6003 6021 6021 6021 6023 6005 6023 6005 49 69 0 12 10 10 12 12 11 11 12 -6004 6004 6003 6003 6005 6005 6005 6005 60 70 0 12 10 10 12 12 11 11 11 -6004 6004 6003 6003 6005 6005 6005 6005 60 70 1 0 0 0 0 0 0 0 12 -6004 6004 6003 6003 6005 6005 6006 6006 60 70 0 12 10 10 12 12 11 11 11 -6004 6004 6003 6003 6005 6005 6006 6006 60 70 1 0 0 0 0 0 0 0 12 -6004 6004 6003 6021 6005 6005 6005 6005 57 70 0 12 10 10 12 12 11 11 11 -6004 6004 6003 6021 6005 6005 6005 6005 57 70 1 0 0 0 0 0 0 0 12 -6004 6004 6003 6021 6005 6005 6006 6006 57 70 0 12 10 10 12 12 11 11 11 -6004 6004 6003 6021 6005 6005 6006 6006 57 70 1 0 0 0 0 0 0 0 12 -6004 6004 6004 6004 6005 6005 6006 6006 60 71 0 12 10 10 12 11 11 11 11 -6004 6004 6004 6004 6005 6005 6006 6006 60 71 1 0 11 11 0 12 0 0 0 -6004 6004 6004 6004 6006 6006 6006 6006 60 71 0 12 10 10 12 11 11 11 11 -6004 6004 6004 6004 6006 6006 6006 6006 60 71 1 0 11 11 0 12 0 0 0 -6004 6004 6004 6022 6005 6005 6006 6006 57 71 0 12 10 10 12 11 11 11 11 -6004 6004 6004 6022 6005 6005 6006 6006 57 71 1 0 11 11 0 12 0 0 0 -6004 6004 6004 6022 6006 6006 6006 6006 57 71 0 12 10 10 12 11 11 11 11 -6004 6004 6004 6022 6006 6006 6006 6006 57 71 1 0 11 11 0 12 0 0 0 -6004 6004 6021 6021 6005 6005 6005 6005 55 70 0 12 10 10 12 12 11 11 11 -6004 6004 6021 6021 6005 6005 6005 6005 55 70 1 0 0 0 0 0 0 0 12 -6004 6004 6021 6021 6005 6005 6006 6006 55 70 0 12 10 10 12 12 11 11 11 -6004 6004 6021 6021 6005 6005 6006 6006 55 70 1 0 0 0 0 0 0 0 12 -6004 6004 6021 6021 6023 6005 6023 6005 51 70 0 12 10 10 12 12 11 11 11 -6004 6004 6021 6021 6023 6005 6023 6005 51 70 1 0 0 0 0 0 0 0 12 -6004 6004 6021 6021 6023 6005 6024 6006 51 70 0 12 10 10 12 12 11 11 11 -6004 6004 6021 6021 6023 6005 6024 6006 51 70 1 0 0 0 0 0 0 0 12 -6004 6004 6022 6022 6005 6005 6006 6006 55 71 0 12 10 10 12 11 11 11 11 -6004 6004 6022 6022 6005 6005 6006 6006 55 71 1 0 11 11 0 12 0 0 0 -6004 6004 6022 6022 6006 6006 6006 6006 55 71 0 12 10 10 12 11 11 11 11 -6004 6004 6022 6022 6006 6006 6006 6006 55 71 1 0 11 11 0 12 0 0 0 -6004 6004 6022 6022 6023 6005 6024 6006 51 71 0 12 10 10 12 11 11 11 11 -6004 6004 6022 6022 6023 6005 6024 6006 51 71 1 0 11 11 0 12 0 0 0 -6004 6004 6022 6022 6024 6006 6024 6006 51 71 0 12 10 10 12 11 11 11 11 -6004 6004 6022 6022 6024 6006 6024 6006 51 71 1 0 11 11 0 12 0 0 0 -6004 6022 6021 6021 6023 6005 6023 6005 49 70 0 12 10 10 12 12 11 11 11 -6004 6022 6021 6021 6023 6005 6023 6005 49 70 1 0 0 0 0 0 0 0 12 -6004 6022 6021 6021 6023 6005 6024 6006 49 70 0 12 10 10 12 12 11 11 11 -6004 6022 6021 6021 6023 6005 6024 6006 49 70 1 0 0 0 0 0 0 0 12 -6004 6022 6022 6022 6023 6005 6024 6006 49 71 0 12 10 10 12 11 11 11 11 -6004 6022 6022 6022 6023 6005 6024 6006 49 71 1 0 11 11 0 12 0 0 0 -6004 6022 6022 6022 6024 6006 6024 6006 49 71 0 12 10 10 12 11 11 11 11 -6004 6022 6022 6022 6024 6006 6024 6006 49 71 1 0 11 11 0 12 0 0 0 -6005 6005 6004 6004 6006 6006 6006 6006 60 72 0 12 11 11 12 11 11 11 11 -6005 6005 6004 6004 6006 6006 6007 6007 60 72 0 12 11 11 12 11 11 11 11 -6005 6005 6004 6022 6006 6006 6006 6006 57 72 0 12 11 11 12 11 11 11 11 -6005 6005 6004 6022 6006 6006 6007 6007 57 72 0 12 11 11 12 11 11 11 11 -6005 6005 6005 6005 6006 6006 6007 6007 61 73 0 12 11 11 12 11 11 11 11 -6005 6005 6005 6005 6007 6007 6007 6007 61 73 0 12 11 11 12 11 11 11 11 -6005 6005 6005 6023 6006 6006 6007 6007 57 73 0 12 11 11 12 11 11 11 11 -6005 6005 6005 6023 6007 6007 6007 6007 57 73 0 12 11 11 12 11 11 11 11 -6005 6005 6022 6022 6006 6006 6006 6006 55 72 0 12 11 11 12 11 11 11 11 -6005 6005 6022 6022 6006 6006 6007 6007 55 72 0 12 11 11 12 11 11 11 11 -6005 6005 6022 6022 6024 6006 6024 6006 51 72 0 12 11 11 12 11 11 11 11 -6005 6005 6022 6022 6024 6006 6025 6007 51 72 0 12 11 11 12 11 11 11 11 -6005 6005 6023 6023 6006 6006 6007 6007 55 73 0 12 11 11 12 11 11 11 11 -6005 6005 6023 6023 6007 6007 6007 6007 55 73 0 12 11 11 12 11 11 11 11 -6005 6005 6023 6023 6024 6006 6025 6007 51 73 0 12 11 11 12 11 11 11 11 -6005 6005 6023 6023 6025 6007 6025 6007 51 73 0 12 11 11 12 11 11 11 11 -6005 6023 6022 6022 6024 6006 6024 6006 49 72 0 12 11 11 12 11 11 11 11 -6005 6023 6022 6022 6024 6006 6025 6007 49 72 0 12 11 11 12 11 11 11 11 -6005 6023 6023 6023 6024 6006 6025 6007 49 73 0 12 11 11 12 11 11 11 11 -6005 6023 6023 6023 6025 6007 6025 6007 49 73 0 12 11 11 12 11 11 11 11 -6006 6006 6005 6005 6007 6007 6007 6007 61 74 0 11 11 11 11 11 11 11 11 -6006 6006 6005 6005 6007 6007 6007 6007 61 74 1 12 0 0 0 0 0 0 0 -6006 6006 6005 6005 6007 6007 6008 6008 61 74 0 11 11 11 11 11 11 11 11 -6006 6006 6005 6005 6007 6007 6008 6008 61 74 1 12 0 0 0 0 0 0 0 -6006 6006 6005 6023 6007 6007 6007 6007 57 74 0 11 11 11 11 11 11 11 11 -6006 6006 6005 6023 6007 6007 6007 6007 57 74 1 12 0 0 0 0 0 0 0 -6006 6006 6005 6023 6007 6007 6008 6008 57 74 0 11 11 11 11 11 11 11 11 -6006 6006 6005 6023 6007 6007 6008 6008 57 74 1 12 0 0 0 0 0 0 0 -6006 6006 6006 6006 6007 6007 6008 6008 60 75 0 11 11 11 11 11 11 11 11 -6006 6006 6006 6006 6008 6008 6008 6008 60 75 0 11 11 11 11 11 11 11 11 -6006 6006 6006 6024 6007 6007 6008 6008 57 75 0 11 11 11 11 11 11 11 11 -6006 6006 6006 6024 6008 6008 6008 6008 57 75 0 11 11 11 11 11 11 11 11 -6006 6006 6023 6023 6007 6007 6007 6007 55 74 0 11 11 11 11 11 11 11 11 -6006 6006 6023 6023 6007 6007 6007 6007 55 74 1 12 0 0 0 0 0 0 0 -6006 6006 6023 6023 6007 6007 6008 6008 55 74 0 11 11 11 11 11 11 11 11 -6006 6006 6023 6023 6007 6007 6008 6008 55 74 1 12 0 0 0 0 0 0 0 -6006 6006 6023 6023 6025 6007 6025 6007 51 74 0 11 11 11 11 11 11 11 11 -6006 6006 6023 6023 6025 6007 6025 6007 51 74 1 12 0 0 0 0 0 0 0 -6006 6006 6023 6023 6025 6007 6026 6008 51 74 0 11 11 11 11 11 11 11 11 -6006 6006 6023 6023 6025 6007 6026 6008 51 74 1 12 0 0 0 0 0 0 0 -6006 6006 6024 6024 6007 6007 6008 6008 55 75 0 11 11 11 11 11 11 11 11 -6006 6006 6024 6024 6008 6008 6008 6008 55 75 0 11 11 11 11 11 11 11 11 -6006 6006 6024 6024 6025 6007 6026 6008 51 75 0 11 11 11 11 11 11 11 11 -6006 6006 6024 6024 6026 6008 6026 6008 51 75 0 11 11 11 11 11 11 11 11 -6006 6024 6023 6023 6025 6007 6025 6007 49 74 0 11 11 11 11 11 11 11 11 -6006 6024 6023 6023 6025 6007 6025 6007 49 74 1 12 0 0 0 0 0 0 0 -6006 6024 6023 6023 6025 6007 6026 6008 49 74 0 11 11 11 11 11 11 11 11 -6006 6024 6023 6023 6025 6007 6026 6008 49 74 1 12 0 0 0 0 0 0 0 -6006 6024 6024 6024 6025 6007 6026 6008 49 75 0 11 11 11 11 11 11 11 11 -6006 6024 6024 6024 6026 6008 6026 6008 49 75 0 11 11 11 11 11 11 11 11 -6007 6007 6006 6006 6008 6008 6008 6008 60 76 0 11 11 11 11 11 11 11 11 -6007 6007 6006 6006 6008 6008 6009 6009 60 76 0 11 11 11 11 11 11 11 11 -6007 6007 6006 6024 6008 6008 6008 6008 57 76 0 11 11 11 11 11 11 11 11 -6007 6007 6006 6024 6008 6008 6009 6009 57 76 0 11 11 11 11 11 11 11 11 -6007 6007 6007 6007 6008 6008 6009 6009 60 77 0 11 11 11 11 11 11 11 11 -6007 6007 6007 6007 6009 6009 6009 6009 60 77 0 11 11 11 11 11 11 11 11 -6007 6007 6007 6025 6008 6008 6009 6009 57 77 0 11 11 11 11 11 11 11 11 -6007 6007 6007 6025 6009 6009 6009 6009 57 77 0 11 11 11 11 11 11 11 11 -6007 6007 6024 6024 6008 6008 6008 6008 55 76 0 11 11 11 11 11 11 11 11 -6007 6007 6024 6024 6008 6008 6009 6009 55 76 0 11 11 11 11 11 11 11 11 -6007 6007 6024 6024 6026 6008 6026 6008 51 76 0 11 11 11 11 11 11 11 11 -6007 6007 6024 6024 6026 6008 6027 6009 51 76 0 11 11 11 11 11 11 11 11 -6007 6007 6025 6025 6008 6008 6009 6009 55 77 0 11 11 11 11 11 11 11 11 -6007 6007 6025 6025 6009 6009 6009 6009 55 77 0 11 11 11 11 11 11 11 11 -6007 6007 6025 6025 6026 6008 6027 6009 51 77 0 11 11 11 11 11 11 11 11 -6007 6007 6025 6025 6027 6009 6027 6009 51 77 0 11 11 11 11 11 11 11 11 -6007 6025 6024 6024 6026 6008 6026 6008 49 76 0 11 11 11 11 11 11 11 11 -6007 6025 6024 6024 6026 6008 6027 6009 49 76 0 11 11 11 11 11 11 11 11 -6007 6025 6025 6025 6026 6008 6027 6009 49 77 0 11 11 11 11 11 11 11 11 -6007 6025 6025 6025 6027 6009 6027 6009 49 77 0 11 11 11 11 11 11 11 11 -6008 6008 6007 6007 6009 6009 6009 6009 60 78 0 11 11 11 11 11 11 11 11 -6008 6008 6007 6007 6009 6009 6009 6009 60 78 1 0 0 0 0 0 12 12 0 -6008 6008 6007 6007 6009 6009 6010 6010 60 78 0 11 11 11 11 11 11 11 11 -6008 6008 6007 6007 6009 6009 6010 6010 60 78 1 0 0 0 0 0 12 12 0 -6008 6008 6007 6025 6009 6009 6009 6009 57 78 0 11 11 11 11 11 11 11 11 -6008 6008 6007 6025 6009 6009 6009 6009 57 78 1 0 0 0 0 0 12 12 0 -6008 6008 6007 6025 6009 6009 6010 6010 57 78 0 11 11 11 11 11 11 11 11 -6008 6008 6007 6025 6009 6009 6010 6010 57 78 1 0 0 0 0 0 12 12 0 -6008 6008 6008 6008 6009 6009 6010 6010 60 79 0 11 11 11 11 11 12 12 11 -6008 6008 6008 6008 6010 6010 6010 6010 60 79 0 11 11 11 11 11 12 12 11 -6008 6008 6008 6026 6009 6009 6010 6010 57 79 0 11 11 11 11 11 12 12 11 -6008 6008 6008 6026 6010 6010 6010 6010 57 79 0 11 11 11 11 11 12 12 11 -6008 6008 6025 6025 6009 6009 6009 6009 55 78 0 11 11 11 11 11 11 11 11 -6008 6008 6025 6025 6009 6009 6009 6009 55 78 1 0 0 0 0 0 12 12 0 -6008 6008 6025 6025 6009 6009 6010 6010 55 78 0 11 11 11 11 11 11 11 11 -6008 6008 6025 6025 6009 6009 6010 6010 55 78 1 0 0 0 0 0 12 12 0 -6008 6008 6025 6025 6027 6009 6027 6009 51 78 0 11 11 11 11 11 11 11 11 -6008 6008 6025 6025 6027 6009 6027 6009 51 78 1 0 0 0 0 0 12 12 0 -6008 6008 6025 6025 6027 6009 6028 6010 51 78 0 11 11 11 11 11 11 11 11 -6008 6008 6025 6025 6027 6009 6028 6010 51 78 1 0 0 0 0 0 12 12 0 -6008 6008 6026 6026 6009 6009 6010 6010 55 79 0 11 11 11 11 11 12 12 11 -6008 6008 6026 6026 6010 6010 6010 6010 55 79 0 11 11 11 11 11 12 12 11 -6008 6008 6026 6026 6027 6009 6028 6010 51 79 0 11 11 11 11 11 12 12 11 -6008 6008 6026 6026 6028 6010 6028 6010 51 79 0 11 11 11 11 11 12 12 11 -6008 6026 6025 6025 6027 6009 6027 6009 49 78 0 11 11 11 11 11 11 11 11 -6008 6026 6025 6025 6027 6009 6027 6009 49 78 1 0 0 0 0 0 12 12 0 -6008 6026 6025 6025 6027 6009 6028 6010 49 78 0 11 11 11 11 11 11 11 11 -6008 6026 6025 6025 6027 6009 6028 6010 49 78 1 0 0 0 0 0 12 12 0 -6008 6026 6026 6026 6027 6009 6028 6010 49 79 0 11 11 11 11 11 12 12 11 -6008 6026 6026 6026 6028 6010 6028 6010 49 79 0 11 11 11 11 11 12 12 11 -6009 6009 6008 6008 6010 6010 6010 6010 60 80 0 11 11 11 11 10 12 12 10 -6009 6009 6008 6008 6010 6010 6010 6010 60 80 1 0 0 0 0 11 0 0 11 -6009 6009 6008 6008 6010 6010 6011 6011 60 80 0 11 11 11 11 10 12 12 10 -6009 6009 6008 6008 6010 6010 6011 6011 60 80 1 0 0 0 0 11 0 0 11 -6009 6009 6008 6026 6010 6010 6010 6010 57 80 0 11 11 11 11 10 12 12 10 -6009 6009 6008 6026 6010 6010 6010 6010 57 80 1 0 0 0 0 11 0 0 11 -6009 6009 6008 6026 6010 6010 6011 6011 57 80 0 11 11 11 11 10 12 12 10 -6009 6009 6008 6026 6010 6010 6011 6011 57 80 1 0 0 0 0 11 0 0 11 -6009 6009 6009 6009 6010 6010 6011 6011 60 81 0 11 11 11 11 10 12 12 10 -6009 6009 6009 6009 6010 6010 6011 6011 60 81 1 0 12 12 0 0 0 0 0 -6009 6009 6009 6009 6011 6011 6011 6011 60 81 0 11 11 11 11 10 12 12 10 -6009 6009 6009 6009 6011 6011 6011 6011 60 81 1 0 12 12 0 0 0 0 0 -6009 6009 6009 6027 6010 6010 6011 6011 57 81 0 11 11 11 11 10 12 12 10 -6009 6009 6009 6027 6010 6010 6011 6011 57 81 1 0 12 12 0 0 0 0 0 -6009 6009 6009 6027 6011 6011 6011 6011 57 81 0 11 11 11 11 10 12 12 10 -6009 6009 6009 6027 6011 6011 6011 6011 57 81 1 0 12 12 0 0 0 0 0 -6009 6009 6026 6026 6010 6010 6010 6010 55 80 0 11 11 11 11 10 12 12 10 -6009 6009 6026 6026 6010 6010 6010 6010 55 80 1 0 0 0 0 11 0 0 11 -6009 6009 6026 6026 6010 6010 6011 6011 55 80 0 11 11 11 11 10 12 12 10 -6009 6009 6026 6026 6010 6010 6011 6011 55 80 1 0 0 0 0 11 0 0 11 -6009 6009 6026 6026 6028 6010 6028 6010 51 80 0 11 11 11 11 10 12 12 10 -6009 6009 6026 6026 6028 6010 6028 6010 51 80 1 0 0 0 0 11 0 0 11 -6009 6009 6026 6026 6028 6010 6029 6011 51 80 0 11 11 11 11 10 12 12 10 -6009 6009 6026 6026 6028 6010 6029 6011 51 80 1 0 0 0 0 11 0 0 11 -6009 6009 6027 6027 6010 6010 6011 6011 55 81 0 11 11 11 11 10 12 12 10 -6009 6009 6027 6027 6010 6010 6011 6011 55 81 1 0 12 12 0 0 0 0 0 -6009 6009 6027 6027 6011 6011 6011 6011 55 81 0 11 11 11 11 10 12 12 10 -6009 6009 6027 6027 6011 6011 6011 6011 55 81 1 0 12 12 0 0 0 0 0 -6009 6009 6027 6027 6028 6010 6029 6011 51 81 0 11 11 11 11 10 12 12 10 -6009 6009 6027 6027 6028 6010 6029 6011 51 81 1 0 12 12 0 0 0 0 0 -6009 6009 6027 6027 6029 6011 6029 6011 51 81 0 11 11 11 11 10 12 12 10 -6009 6009 6027 6027 6029 6011 6029 6011 51 81 1 0 12 12 0 0 0 0 0 -6009 6027 6026 6026 6028 6010 6028 6010 49 80 0 11 11 11 11 10 12 12 10 -6009 6027 6026 6026 6028 6010 6028 6010 49 80 1 0 0 0 0 11 0 0 11 -6009 6027 6026 6026 6028 6010 6029 6011 49 80 0 11 11 11 11 10 12 12 10 -6009 6027 6026 6026 6028 6010 6029 6011 49 80 1 0 0 0 0 11 0 0 11 -6009 6027 6027 6027 6028 6010 6029 6011 49 81 0 11 11 11 11 10 12 12 10 -6009 6027 6027 6027 6028 6010 6029 6011 49 81 1 0 12 12 0 0 0 0 0 -6009 6027 6027 6027 6029 6011 6029 6011 49 81 0 11 11 11 11 10 12 12 10 -6009 6027 6027 6027 6029 6011 6029 6011 49 81 1 0 12 12 0 0 0 0 0 -6010 6010 6009 6009 6011 6011 6011 6011 59 82 0 11 12 12 11 10 12 12 10 -6010 6010 6009 6009 6011 6011 6012 6012 59 82 0 11 12 12 11 10 12 12 10 -6010 6010 6009 6027 6011 6011 6011 6011 57 82 0 11 12 12 11 10 12 12 10 -6010 6010 6009 6027 6011 6011 6012 6012 57 82 0 11 12 12 11 10 12 12 10 -6010 6010 6010 6010 6011 6011 6012 6012 59 83 0 11 12 12 11 10 12 12 10 -6010 6010 6010 6010 6012 6012 6012 6012 59 83 0 11 12 12 11 10 12 12 10 -6010 6010 6010 6028 6011 6011 6012 6012 57 83 0 11 12 12 11 10 12 12 10 -6010 6010 6010 6028 6012 6012 6012 6012 57 83 0 11 12 12 11 10 12 12 10 -6010 6010 6027 6027 6011 6011 6011 6011 55 82 0 11 12 12 11 10 12 12 10 -6010 6010 6027 6027 6011 6011 6012 6012 55 82 0 11 12 12 11 10 12 12 10 -6010 6010 6027 6027 6029 6011 6029 6011 51 82 0 11 12 12 11 10 12 12 10 -6010 6010 6027 6027 6029 6011 6030 6012 51 82 0 11 12 12 11 10 12 12 10 -6010 6010 6028 6028 6011 6011 6012 6012 55 83 0 11 12 12 11 10 12 12 10 -6010 6010 6028 6028 6012 6012 6012 6012 55 83 0 11 12 12 11 10 12 12 10 -6010 6010 6028 6028 6029 6011 6030 6012 51 83 0 11 12 12 11 10 12 12 10 -6010 6010 6028 6028 6030 6012 6030 6012 51 83 0 11 12 12 11 10 12 12 10 -6010 6028 6027 6027 6029 6011 6029 6011 49 82 0 11 12 12 11 10 12 12 10 -6010 6028 6027 6027 6029 6011 6030 6012 49 82 0 11 12 12 11 10 12 12 10 -6010 6028 6028 6028 6029 6011 6030 6012 49 83 0 11 12 12 11 10 12 12 10 -6010 6028 6028 6028 6030 6012 6030 6012 49 83 0 11 12 12 11 10 12 12 10 -6011 6011 6010 6010 6012 6012 6012 6012 59 84 0 10 12 12 10 10 12 12 10 -6011 6011 6010 6010 6012 6012 6012 6012 59 84 1 11 0 0 0 0 0 0 0 -6011 6011 6010 6010 6012 6012 6013 6013 59 84 0 10 12 12 10 10 12 12 10 -6011 6011 6010 6010 6012 6012 6013 6013 59 84 1 11 0 0 0 0 0 0 0 -6011 6011 6010 6028 6012 6012 6012 6012 57 84 0 10 12 12 10 10 12 12 10 -6011 6011 6010 6028 6012 6012 6012 6012 57 84 1 11 0 0 0 0 0 0 0 -6011 6011 6010 6028 6012 6012 6013 6013 57 84 0 10 12 12 10 10 12 12 10 -6011 6011 6010 6028 6012 6012 6013 6013 57 84 1 11 0 0 0 0 0 0 0 -6011 6011 6011 6011 6012 6012 6013 6013 59 85 0 10 12 12 10 10 12 12 10 -6011 6011 6011 6011 6013 6013 6013 6013 59 85 0 10 12 12 10 10 12 12 10 -6011 6011 6011 6029 6012 6012 6013 6013 57 85 0 10 12 12 10 10 12 12 10 -6011 6011 6011 6029 6013 6013 6013 6013 57 85 0 10 12 12 10 10 12 12 10 -6011 6011 6028 6028 6012 6012 6012 6012 55 84 0 10 12 12 10 10 12 12 10 -6011 6011 6028 6028 6012 6012 6012 6012 55 84 1 11 0 0 0 0 0 0 0 -6011 6011 6028 6028 6012 6012 6013 6013 55 84 0 10 12 12 10 10 12 12 10 -6011 6011 6028 6028 6012 6012 6013 6013 55 84 1 11 0 0 0 0 0 0 0 -6011 6011 6028 6028 6030 6012 6030 6012 51 84 0 10 12 12 10 10 12 12 10 -6011 6011 6028 6028 6030 6012 6030 6012 51 84 1 11 0 0 0 0 0 0 0 -6011 6011 6028 6028 6030 6012 6031 6013 51 84 0 10 12 12 10 10 12 12 10 -6011 6011 6028 6028 6030 6012 6031 6013 51 84 1 11 0 0 0 0 0 0 0 -6011 6011 6029 6029 6012 6012 6013 6013 55 85 0 10 12 12 10 10 12 12 10 -6011 6011 6029 6029 6013 6013 6013 6013 55 85 0 10 12 12 10 10 12 12 10 -6011 6011 6029 6029 6030 6012 6031 6013 51 85 0 10 12 12 10 10 12 12 10 -6011 6011 6029 6029 6031 6013 6031 6013 51 85 0 10 12 12 10 10 12 12 10 -6011 6029 6028 6028 6030 6012 6030 6012 49 84 0 10 12 12 10 10 12 12 10 -6011 6029 6028 6028 6030 6012 6030 6012 49 84 1 11 0 0 0 0 0 0 0 -6011 6029 6028 6028 6030 6012 6031 6013 49 84 0 10 12 12 10 10 12 12 10 -6011 6029 6028 6028 6030 6012 6031 6013 49 84 1 11 0 0 0 0 0 0 0 -6011 6029 6029 6029 6030 6012 6031 6013 49 85 0 10 12 12 10 10 12 12 10 -6011 6029 6029 6029 6031 6013 6031 6013 49 85 0 10 12 12 10 10 12 12 10 -6012 6012 6011 6011 6013 6013 6013 6013 59 86 0 10 12 12 10 10 12 12 10 -6012 6012 6011 6011 6013 6013 6014 6014 59 86 0 10 12 12 10 10 12 12 10 -6012 6012 6011 6029 6013 6013 6013 6013 57 86 0 10 12 12 10 10 12 12 10 -6012 6012 6011 6029 6013 6013 6014 6014 57 86 0 10 12 12 10 10 12 12 10 -6012 6012 6012 6012 6013 6013 6014 6014 59 87 0 10 12 12 10 10 12 12 10 -6012 6012 6012 6030 6013 6013 6014 6014 57 87 0 10 12 12 10 10 12 12 10 -6012 6012 6029 6029 6013 6013 6013 6013 55 86 0 10 12 12 10 10 12 12 10 -6012 6012 6029 6029 6013 6013 6014 6014 55 86 0 10 12 12 10 10 12 12 10 -6012 6012 6029 6029 6031 6013 6031 6013 51 86 0 10 12 12 10 10 12 12 10 -6012 6012 6029 6029 6031 6013 6032 6014 51 86 0 10 12 12 10 10 12 12 10 -6012 6012 6030 6030 6013 6013 6014 6014 55 87 0 10 12 12 10 10 12 12 10 -6012 6012 6030 6030 6031 6013 6032 6014 51 87 0 10 12 12 10 10 12 12 10 -6012 6030 6029 6029 6031 6013 6031 6013 49 86 0 10 12 12 10 10 12 12 10 -6012 6030 6029 6029 6031 6013 6032 6014 49 86 0 10 12 12 10 10 12 12 10 -6012 6030 6030 6030 6031 6013 6032 6014 49 87 0 10 12 12 10 10 12 12 10 -6019 6019 6019 6019 6020 6002 6021 6003 46 65 0 12 10 10 12 12 10 10 12 -6019 6019 6019 6019 6020 6020 6021 6021 42 65 0 12 10 10 12 12 10 10 12 -6019 6019 6019 6019 6021 6003 6021 6003 46 65 0 12 10 10 12 12 10 10 12 -6019 6019 6019 6019 6021 6021 6021 6021 42 65 0 12 10 10 12 12 10 10 12 -6019 6019 6019 6037 6020 6020 6021 6021 40 65 0 12 10 10 12 12 10 10 12 -6019 6019 6019 6037 6021 6021 6021 6021 40 65 0 12 10 10 12 12 10 10 12 -6019 6019 6037 6037 6020 6020 6021 6021 38 65 0 12 10 10 12 12 10 10 12 -6019 6019 6037 6037 6021 6021 6021 6021 38 65 0 12 10 10 12 12 10 10 12 -6019 6019 6037 6037 6038 6020 6039 6021 34 65 0 12 10 10 12 12 10 10 12 -6019 6019 6037 6037 6039 6021 6039 6021 34 65 0 12 10 10 12 12 10 10 12 -6019 6037 6037 6037 6038 6020 6039 6021 31 65 0 12 10 10 12 12 10 10 12 -6019 6037 6037 6037 6039 6021 6039 6021 31 65 0 12 10 10 12 12 10 10 12 -6020 6020 6019 6019 6021 6003 6021 6003 46 66 0 12 10 10 12 12 10 10 12 -6020 6020 6019 6019 6021 6003 6022 6004 46 66 0 12 10 10 12 12 10 10 12 -6020 6020 6019 6019 6021 6021 6021 6021 42 66 0 12 10 10 12 12 10 10 12 -6020 6020 6019 6019 6021 6021 6022 6022 42 66 0 12 10 10 12 12 10 10 12 -6020 6020 6019 6037 6021 6021 6021 6021 40 66 0 12 10 10 12 12 10 10 12 -6020 6020 6019 6037 6021 6021 6022 6022 40 66 0 12 10 10 12 12 10 10 12 -6020 6020 6020 6020 6021 6003 6022 6004 46 67 0 12 10 10 12 12 10 10 12 -6020 6020 6020 6020 6021 6021 6022 6022 42 67 0 12 10 10 12 12 10 10 12 -6020 6020 6020 6020 6022 6004 6022 6004 46 67 0 12 10 10 12 12 10 10 12 -6020 6020 6020 6020 6022 6022 6022 6022 42 67 0 12 10 10 12 12 10 10 12 -6020 6020 6020 6038 6021 6021 6022 6022 40 67 0 12 10 10 12 12 10 10 12 -6020 6020 6020 6038 6022 6022 6022 6022 40 67 0 12 10 10 12 12 10 10 12 -6020 6020 6037 6037 6021 6021 6021 6021 38 66 0 12 10 10 12 12 10 10 12 -6020 6020 6037 6037 6021 6021 6022 6022 38 66 0 12 10 10 12 12 10 10 12 -6020 6020 6037 6037 6039 6021 6039 6021 34 66 0 12 10 10 12 12 10 10 12 -6020 6020 6037 6037 6039 6021 6040 6022 34 66 0 12 10 10 12 12 10 10 12 -6020 6020 6038 6038 6021 6021 6022 6022 38 67 0 12 10 10 12 12 10 10 12 -6020 6020 6038 6038 6022 6022 6022 6022 38 67 0 12 10 10 12 12 10 10 12 -6020 6020 6038 6038 6039 6021 6040 6022 34 67 0 12 10 10 12 12 10 10 12 -6020 6020 6038 6038 6040 6022 6040 6022 34 67 0 12 10 10 12 12 10 10 12 -6020 6038 6037 6037 6039 6021 6039 6021 31 66 0 12 10 10 12 12 10 10 12 -6020 6038 6037 6037 6039 6021 6040 6022 31 66 0 12 10 10 12 12 10 10 12 -6020 6038 6038 6038 6039 6021 6040 6022 31 67 0 12 10 10 12 12 10 10 12 -6020 6038 6038 6038 6040 6022 6040 6022 31 67 0 12 10 10 12 12 10 10 12 -6021 6021 6020 6020 6022 6004 6022 6004 46 68 0 12 10 10 12 12 10 10 12 -6021 6021 6020 6020 6022 6004 6022 6004 46 68 1 0 0 0 0 0 11 11 0 -6021 6021 6020 6020 6022 6004 6023 6005 46 68 0 12 10 10 12 12 10 10 12 -6021 6021 6020 6020 6022 6004 6023 6005 46 68 1 0 0 0 0 0 11 11 0 -6021 6021 6020 6020 6022 6022 6022 6022 42 68 0 12 10 10 12 12 10 10 12 -6021 6021 6020 6020 6022 6022 6022 6022 42 68 1 0 0 0 0 0 11 11 0 -6021 6021 6020 6020 6022 6022 6023 6023 42 68 0 12 10 10 12 12 10 10 12 -6021 6021 6020 6020 6022 6022 6023 6023 42 68 1 0 0 0 0 0 11 11 0 -6021 6021 6020 6038 6022 6022 6022 6022 40 68 0 12 10 10 12 12 10 10 12 -6021 6021 6020 6038 6022 6022 6022 6022 40 68 1 0 0 0 0 0 11 11 0 -6021 6021 6020 6038 6022 6022 6023 6023 40 68 0 12 10 10 12 12 10 10 12 -6021 6021 6020 6038 6022 6022 6023 6023 40 68 1 0 0 0 0 0 11 11 0 -6021 6021 6021 6021 6022 6004 6023 6005 46 69 0 12 10 10 12 12 11 11 12 -6021 6021 6021 6021 6022 6022 6023 6023 42 69 0 12 10 10 12 12 11 11 12 -6021 6021 6021 6021 6023 6005 6023 6005 46 69 0 12 10 10 12 12 11 11 12 -6021 6021 6021 6021 6023 6023 6023 6023 42 69 0 12 10 10 12 12 11 11 12 -6021 6021 6021 6039 6022 6022 6023 6023 40 69 0 12 10 10 12 12 11 11 12 -6021 6021 6021 6039 6023 6023 6023 6023 40 69 0 12 10 10 12 12 11 11 12 -6021 6021 6038 6038 6022 6022 6022 6022 38 68 0 12 10 10 12 12 10 10 12 -6021 6021 6038 6038 6022 6022 6022 6022 38 68 1 0 0 0 0 0 11 11 0 -6021 6021 6038 6038 6022 6022 6023 6023 38 68 0 12 10 10 12 12 10 10 12 -6021 6021 6038 6038 6022 6022 6023 6023 38 68 1 0 0 0 0 0 11 11 0 -6021 6021 6038 6038 6040 6022 6040 6022 34 68 0 12 10 10 12 12 10 10 12 -6021 6021 6038 6038 6040 6022 6040 6022 34 68 1 0 0 0 0 0 11 11 0 -6021 6021 6038 6038 6040 6022 6041 6023 34 68 0 12 10 10 12 12 10 10 12 -6021 6021 6038 6038 6040 6022 6041 6023 34 68 1 0 0 0 0 0 11 11 0 -6021 6021 6039 6039 6022 6022 6023 6023 38 69 0 12 10 10 12 12 11 11 12 -6021 6021 6039 6039 6023 6023 6023 6023 38 69 0 12 10 10 12 12 11 11 12 -6021 6021 6039 6039 6040 6022 6041 6023 34 69 0 12 10 10 12 12 11 11 12 -6021 6021 6039 6039 6041 6023 6041 6023 34 69 0 12 10 10 12 12 11 11 12 -6021 6039 6038 6038 6040 6022 6040 6022 31 68 0 12 10 10 12 12 10 10 12 -6021 6039 6038 6038 6040 6022 6040 6022 31 68 1 0 0 0 0 0 11 11 0 -6021 6039 6038 6038 6040 6022 6041 6023 31 68 0 12 10 10 12 12 10 10 12 -6021 6039 6038 6038 6040 6022 6041 6023 31 68 1 0 0 0 0 0 11 11 0 -6021 6039 6039 6039 6040 6022 6041 6023 31 69 0 12 10 10 12 12 11 11 12 -6021 6039 6039 6039 6041 6023 6041 6023 31 69 0 12 10 10 12 12 11 11 12 -6022 6022 6021 6021 6023 6005 6023 6005 46 70 0 12 10 10 12 12 11 11 11 -6022 6022 6021 6021 6023 6005 6023 6005 46 70 1 0 0 0 0 0 0 0 12 -6022 6022 6021 6021 6023 6005 6024 6006 46 70 0 12 10 10 12 12 11 11 11 -6022 6022 6021 6021 6023 6005 6024 6006 46 70 1 0 0 0 0 0 0 0 12 -6022 6022 6021 6021 6023 6023 6023 6023 42 70 0 12 10 10 12 12 11 11 11 -6022 6022 6021 6021 6023 6023 6023 6023 42 70 1 0 0 0 0 0 0 0 12 -6022 6022 6021 6021 6023 6023 6024 6024 42 70 0 12 10 10 12 12 11 11 11 -6022 6022 6021 6021 6023 6023 6024 6024 42 70 1 0 0 0 0 0 0 0 12 -6022 6022 6021 6039 6023 6023 6023 6023 40 70 0 12 10 10 12 12 11 11 11 -6022 6022 6021 6039 6023 6023 6023 6023 40 70 1 0 0 0 0 0 0 0 12 -6022 6022 6021 6039 6023 6023 6024 6024 40 70 0 12 10 10 12 12 11 11 11 -6022 6022 6021 6039 6023 6023 6024 6024 40 70 1 0 0 0 0 0 0 0 12 -6022 6022 6022 6022 6023 6005 6024 6006 46 71 0 12 10 10 12 11 11 11 11 -6022 6022 6022 6022 6023 6005 6024 6006 46 71 1 0 11 11 0 12 0 0 0 -6022 6022 6022 6022 6023 6023 6024 6024 42 71 0 12 10 10 12 11 11 11 11 -6022 6022 6022 6022 6023 6023 6024 6024 42 71 1 0 11 11 0 12 0 0 0 -6022 6022 6022 6022 6024 6006 6024 6006 46 71 0 12 10 10 12 11 11 11 11 -6022 6022 6022 6022 6024 6006 6024 6006 46 71 1 0 11 11 0 12 0 0 0 -6022 6022 6022 6022 6024 6024 6024 6024 42 71 0 12 10 10 12 11 11 11 11 -6022 6022 6022 6022 6024 6024 6024 6024 42 71 1 0 11 11 0 12 0 0 0 -6022 6022 6022 6040 6023 6023 6024 6024 40 71 0 12 10 10 12 11 11 11 11 -6022 6022 6022 6040 6023 6023 6024 6024 40 71 1 0 11 11 0 12 0 0 0 -6022 6022 6022 6040 6024 6024 6024 6024 40 71 0 12 10 10 12 11 11 11 11 -6022 6022 6022 6040 6024 6024 6024 6024 40 71 1 0 11 11 0 12 0 0 0 -6022 6022 6039 6039 6023 6023 6023 6023 38 70 0 12 10 10 12 12 11 11 11 -6022 6022 6039 6039 6023 6023 6023 6023 38 70 1 0 0 0 0 0 0 0 12 -6022 6022 6039 6039 6023 6023 6024 6024 38 70 0 12 10 10 12 12 11 11 11 -6022 6022 6039 6039 6023 6023 6024 6024 38 70 1 0 0 0 0 0 0 0 12 -6022 6022 6039 6039 6041 6023 6041 6023 34 70 0 12 10 10 12 12 11 11 11 -6022 6022 6039 6039 6041 6023 6041 6023 34 70 1 0 0 0 0 0 0 0 12 -6022 6022 6039 6039 6041 6023 6042 6024 34 70 0 12 10 10 12 12 11 11 11 -6022 6022 6039 6039 6041 6023 6042 6024 34 70 1 0 0 0 0 0 0 0 12 -6022 6022 6040 6040 6023 6023 6024 6024 38 71 0 12 10 10 12 11 11 11 11 -6022 6022 6040 6040 6023 6023 6024 6024 38 71 1 0 11 11 0 12 0 0 0 -6022 6022 6040 6040 6024 6024 6024 6024 38 71 0 12 10 10 12 11 11 11 11 -6022 6022 6040 6040 6024 6024 6024 6024 38 71 1 0 11 11 0 12 0 0 0 -6022 6022 6040 6040 6041 6023 6042 6024 34 71 0 12 10 10 12 11 11 11 11 -6022 6022 6040 6040 6041 6023 6042 6024 34 71 1 0 11 11 0 12 0 0 0 -6022 6022 6040 6040 6042 6024 6042 6024 34 71 0 12 10 10 12 11 11 11 11 -6022 6022 6040 6040 6042 6024 6042 6024 34 71 1 0 11 11 0 12 0 0 0 -6022 6040 6039 6039 6041 6023 6041 6023 31 70 0 12 10 10 12 12 11 11 11 -6022 6040 6039 6039 6041 6023 6041 6023 31 70 1 0 0 0 0 0 0 0 12 -6022 6040 6039 6039 6041 6023 6042 6024 31 70 0 12 10 10 12 12 11 11 11 -6022 6040 6039 6039 6041 6023 6042 6024 31 70 1 0 0 0 0 0 0 0 12 -6022 6040 6040 6040 6041 6023 6042 6024 31 71 0 12 10 10 12 11 11 11 11 -6022 6040 6040 6040 6041 6023 6042 6024 31 71 1 0 11 11 0 12 0 0 0 -6022 6040 6040 6040 6042 6024 6042 6024 31 71 0 12 10 10 12 11 11 11 11 -6022 6040 6040 6040 6042 6024 6042 6024 31 71 1 0 11 11 0 12 0 0 0 -6023 6023 6022 6022 6024 6006 6024 6006 46 72 0 12 11 11 12 11 11 11 11 -6023 6023 6022 6022 6024 6006 6025 6007 46 72 0 12 11 11 12 11 11 11 11 -6023 6023 6022 6022 6024 6024 6024 6024 42 72 0 12 11 11 12 11 11 11 11 -6023 6023 6022 6022 6024 6024 6025 6025 42 72 0 12 11 11 12 11 11 11 11 -6023 6023 6022 6040 6024 6024 6024 6024 40 72 0 12 11 11 12 11 11 11 11 -6023 6023 6022 6040 6024 6024 6025 6025 40 72 0 12 11 11 12 11 11 11 11 -6023 6023 6023 6023 6024 6006 6025 6007 46 73 0 12 11 11 12 11 11 11 11 -6023 6023 6023 6023 6024 6024 6025 6025 42 73 0 12 11 11 12 11 11 11 11 -6023 6023 6023 6023 6025 6007 6025 6007 46 73 0 12 11 11 12 11 11 11 11 -6023 6023 6023 6023 6025 6025 6025 6025 42 73 0 12 11 11 12 11 11 11 11 -6023 6023 6023 6041 6024 6024 6025 6025 40 73 0 12 11 11 12 11 11 11 11 -6023 6023 6023 6041 6025 6025 6025 6025 40 73 0 12 11 11 12 11 11 11 11 -6023 6023 6040 6040 6024 6024 6024 6024 38 72 0 12 11 11 12 11 11 11 11 -6023 6023 6040 6040 6024 6024 6025 6025 38 72 0 12 11 11 12 11 11 11 11 -6023 6023 6040 6040 6042 6024 6042 6024 34 72 0 12 11 11 12 11 11 11 11 -6023 6023 6040 6040 6042 6024 6043 6025 34 72 0 12 11 11 12 11 11 11 11 -6023 6023 6041 6041 6024 6024 6025 6025 38 73 0 12 11 11 12 11 11 11 11 -6023 6023 6041 6041 6025 6025 6025 6025 38 73 0 12 11 11 12 11 11 11 11 -6023 6023 6041 6041 6042 6024 6043 6025 34 73 0 12 11 11 12 11 11 11 11 -6023 6023 6041 6041 6043 6025 6043 6025 34 73 0 12 11 11 12 11 11 11 11 -6023 6041 6040 6040 6042 6024 6042 6024 31 72 0 12 11 11 12 11 11 11 11 -6023 6041 6040 6040 6042 6024 6043 6025 31 72 0 12 11 11 12 11 11 11 11 -6023 6041 6041 6041 6042 6024 6043 6025 31 73 0 12 11 11 12 11 11 11 11 -6023 6041 6041 6041 6043 6025 6043 6025 31 73 0 12 11 11 12 11 11 11 11 -6024 6024 6023 6023 6025 6007 6025 6007 46 74 0 11 11 11 11 11 11 11 11 -6024 6024 6023 6023 6025 6007 6025 6007 46 74 1 12 0 0 0 0 0 0 0 -6024 6024 6023 6023 6025 6007 6026 6008 46 74 0 11 11 11 11 11 11 11 11 -6024 6024 6023 6023 6025 6007 6026 6008 46 74 1 12 0 0 0 0 0 0 0 -6024 6024 6023 6023 6025 6025 6025 6025 42 74 0 11 11 11 11 11 11 11 11 -6024 6024 6023 6023 6025 6025 6025 6025 42 74 1 12 0 0 0 0 0 0 0 -6024 6024 6023 6023 6025 6025 6026 6026 42 74 0 11 11 11 11 11 11 11 11 -6024 6024 6023 6023 6025 6025 6026 6026 42 74 1 12 0 0 0 0 0 0 0 -6024 6024 6023 6041 6025 6025 6025 6025 40 74 0 11 11 11 11 11 11 11 11 -6024 6024 6023 6041 6025 6025 6025 6025 40 74 1 12 0 0 0 0 0 0 0 -6024 6024 6023 6041 6025 6025 6026 6026 40 74 0 11 11 11 11 11 11 11 11 -6024 6024 6023 6041 6025 6025 6026 6026 40 74 1 12 0 0 0 0 0 0 0 -6024 6024 6024 6024 6025 6007 6026 6008 46 75 0 11 11 11 11 11 11 11 11 -6024 6024 6024 6024 6025 6025 6026 6026 42 75 0 11 11 11 11 11 11 11 11 -6024 6024 6024 6024 6026 6008 6026 6008 46 75 0 11 11 11 11 11 11 11 11 -6024 6024 6024 6024 6026 6026 6026 6026 42 75 0 11 11 11 11 11 11 11 11 -6024 6024 6024 6042 6025 6025 6026 6026 40 75 0 11 11 11 11 11 11 11 11 -6024 6024 6024 6042 6026 6026 6026 6026 40 75 0 11 11 11 11 11 11 11 11 -6024 6024 6041 6041 6025 6025 6025 6025 38 74 0 11 11 11 11 11 11 11 11 -6024 6024 6041 6041 6025 6025 6025 6025 38 74 1 12 0 0 0 0 0 0 0 -6024 6024 6041 6041 6025 6025 6026 6026 38 74 0 11 11 11 11 11 11 11 11 -6024 6024 6041 6041 6025 6025 6026 6026 38 74 1 12 0 0 0 0 0 0 0 -6024 6024 6041 6041 6043 6025 6043 6025 34 74 0 11 11 11 11 11 11 11 11 -6024 6024 6041 6041 6043 6025 6043 6025 34 74 1 12 0 0 0 0 0 0 0 -6024 6024 6041 6041 6043 6025 6044 6026 34 74 0 11 11 11 11 11 11 11 11 -6024 6024 6041 6041 6043 6025 6044 6026 34 74 1 12 0 0 0 0 0 0 0 -6024 6024 6042 6042 6025 6025 6026 6026 38 75 0 11 11 11 11 11 11 11 11 -6024 6024 6042 6042 6026 6026 6026 6026 38 75 0 11 11 11 11 11 11 11 11 -6024 6024 6042 6042 6043 6025 6044 6026 34 75 0 11 11 11 11 11 11 11 11 -6024 6024 6042 6042 6044 6026 6044 6026 34 75 0 11 11 11 11 11 11 11 11 -6024 6042 6041 6041 6043 6025 6043 6025 31 74 0 11 11 11 11 11 11 11 11 -6024 6042 6041 6041 6043 6025 6043 6025 31 74 1 12 0 0 0 0 0 0 0 -6024 6042 6041 6041 6043 6025 6044 6026 31 74 0 11 11 11 11 11 11 11 11 -6024 6042 6041 6041 6043 6025 6044 6026 31 74 1 12 0 0 0 0 0 0 0 -6024 6042 6042 6042 6043 6025 6044 6026 31 75 0 11 11 11 11 11 11 11 11 -6024 6042 6042 6042 6044 6026 6044 6026 31 75 0 11 11 11 11 11 11 11 11 -6025 6025 6024 6024 6026 6008 6026 6008 46 76 0 11 11 11 11 11 11 11 11 -6025 6025 6024 6024 6026 6008 6027 6009 46 76 0 11 11 11 11 11 11 11 11 -6025 6025 6024 6024 6026 6026 6026 6026 42 76 0 11 11 11 11 11 11 11 11 -6025 6025 6024 6024 6026 6026 6027 6027 42 76 0 11 11 11 11 11 11 11 11 -6025 6025 6024 6042 6026 6026 6026 6026 40 76 0 11 11 11 11 11 11 11 11 -6025 6025 6024 6042 6026 6026 6027 6027 40 76 0 11 11 11 11 11 11 11 11 -6025 6025 6025 6025 6026 6008 6027 6009 46 77 0 11 11 11 11 11 11 11 11 -6025 6025 6025 6025 6026 6026 6027 6027 42 77 0 11 11 11 11 11 11 11 11 -6025 6025 6025 6025 6027 6009 6027 6009 46 77 0 11 11 11 11 11 11 11 11 -6025 6025 6025 6025 6027 6027 6027 6027 42 77 0 11 11 11 11 11 11 11 11 -6025 6025 6025 6043 6026 6026 6027 6027 40 77 0 11 11 11 11 11 11 11 11 -6025 6025 6025 6043 6027 6027 6027 6027 40 77 0 11 11 11 11 11 11 11 11 -6025 6025 6042 6042 6026 6026 6026 6026 38 76 0 11 11 11 11 11 11 11 11 -6025 6025 6042 6042 6026 6026 6027 6027 38 76 0 11 11 11 11 11 11 11 11 -6025 6025 6042 6042 6044 6026 6044 6026 34 76 0 11 11 11 11 11 11 11 11 -6025 6025 6042 6042 6044 6026 6045 6027 34 76 0 11 11 11 11 11 11 11 11 -6025 6025 6043 6043 6026 6026 6027 6027 38 77 0 11 11 11 11 11 11 11 11 -6025 6025 6043 6043 6027 6027 6027 6027 38 77 0 11 11 11 11 11 11 11 11 -6025 6025 6043 6043 6044 6026 6045 6027 34 77 0 11 11 11 11 11 11 11 11 -6025 6025 6043 6043 6045 6027 6045 6027 34 77 0 11 11 11 11 11 11 11 11 -6025 6043 6042 6042 6044 6026 6044 6026 31 76 0 11 11 11 11 11 11 11 11 -6025 6043 6042 6042 6044 6026 6045 6027 31 76 0 11 11 11 11 11 11 11 11 -6025 6043 6043 6043 6044 6026 6045 6027 31 77 0 11 11 11 11 11 11 11 11 -6025 6043 6043 6043 6045 6027 6045 6027 31 77 0 11 11 11 11 11 11 11 11 -6026 6026 6025 6025 6027 6009 6027 6009 46 78 0 11 11 11 11 11 11 11 11 -6026 6026 6025 6025 6027 6009 6027 6009 46 78 1 0 0 0 0 0 12 12 0 -6026 6026 6025 6025 6027 6009 6028 6010 46 78 0 11 11 11 11 11 11 11 11 -6026 6026 6025 6025 6027 6009 6028 6010 46 78 1 0 0 0 0 0 12 12 0 -6026 6026 6025 6025 6027 6027 6027 6027 42 78 0 11 11 11 11 11 11 11 11 -6026 6026 6025 6025 6027 6027 6027 6027 42 78 1 0 0 0 0 0 12 12 0 -6026 6026 6025 6025 6027 6027 6028 6028 42 78 0 11 11 11 11 11 11 11 11 -6026 6026 6025 6025 6027 6027 6028 6028 42 78 1 0 0 0 0 0 12 12 0 -6026 6026 6025 6043 6027 6027 6027 6027 40 78 0 11 11 11 11 11 11 11 11 -6026 6026 6025 6043 6027 6027 6027 6027 40 78 1 0 0 0 0 0 12 12 0 -6026 6026 6025 6043 6027 6027 6028 6028 40 78 0 11 11 11 11 11 11 11 11 -6026 6026 6025 6043 6027 6027 6028 6028 40 78 1 0 0 0 0 0 12 12 0 -6026 6026 6026 6026 6027 6009 6028 6010 46 79 0 11 11 11 11 11 12 12 11 -6026 6026 6026 6026 6027 6027 6028 6028 42 79 0 11 11 11 11 11 12 12 11 -6026 6026 6026 6026 6028 6010 6028 6010 46 79 0 11 11 11 11 11 12 12 11 -6026 6026 6026 6026 6028 6028 6028 6028 42 79 0 11 11 11 11 11 12 12 11 -6026 6026 6026 6044 6027 6027 6028 6028 40 79 0 11 11 11 11 11 12 12 11 -6026 6026 6026 6044 6028 6028 6028 6028 40 79 0 11 11 11 11 11 12 12 11 -6026 6026 6043 6043 6027 6027 6027 6027 38 78 0 11 11 11 11 11 11 11 11 -6026 6026 6043 6043 6027 6027 6027 6027 38 78 1 0 0 0 0 0 12 12 0 -6026 6026 6043 6043 6027 6027 6028 6028 38 78 0 11 11 11 11 11 11 11 11 -6026 6026 6043 6043 6027 6027 6028 6028 38 78 1 0 0 0 0 0 12 12 0 -6026 6026 6043 6043 6045 6027 6045 6027 34 78 0 11 11 11 11 11 11 11 11 -6026 6026 6043 6043 6045 6027 6045 6027 34 78 1 0 0 0 0 0 12 12 0 -6026 6026 6043 6043 6045 6027 6046 6028 34 78 0 11 11 11 11 11 11 11 11 -6026 6026 6043 6043 6045 6027 6046 6028 34 78 1 0 0 0 0 0 12 12 0 -6026 6026 6044 6044 6027 6027 6028 6028 38 79 0 11 11 11 11 11 12 12 11 -6026 6026 6044 6044 6028 6028 6028 6028 38 79 0 11 11 11 11 11 12 12 11 -6026 6026 6044 6044 6045 6027 6046 6028 34 79 0 11 11 11 11 11 12 12 11 -6026 6026 6044 6044 6046 6028 6046 6028 34 79 0 11 11 11 11 11 12 12 11 -6026 6044 6043 6043 6045 6027 6045 6027 31 78 0 11 11 11 11 11 11 11 11 -6026 6044 6043 6043 6045 6027 6045 6027 31 78 1 0 0 0 0 0 12 12 0 -6026 6044 6043 6043 6045 6027 6046 6028 31 78 0 11 11 11 11 11 11 11 11 -6026 6044 6043 6043 6045 6027 6046 6028 31 78 1 0 0 0 0 0 12 12 0 -6026 6044 6044 6044 6045 6027 6046 6028 31 79 0 11 11 11 11 11 12 12 11 -6026 6044 6044 6044 6046 6028 6046 6028 31 79 0 11 11 11 11 11 12 12 11 -6027 6027 6026 6026 6028 6010 6028 6010 46 80 0 11 11 11 11 10 12 12 10 -6027 6027 6026 6026 6028 6010 6028 6010 46 80 1 0 0 0 0 11 0 0 11 -6027 6027 6026 6026 6028 6010 6029 6011 46 80 0 11 11 11 11 10 12 12 10 -6027 6027 6026 6026 6028 6010 6029 6011 46 80 1 0 0 0 0 11 0 0 11 -6027 6027 6026 6026 6028 6028 6028 6028 42 80 0 11 11 11 11 10 12 12 10 -6027 6027 6026 6026 6028 6028 6028 6028 42 80 1 0 0 0 0 11 0 0 11 -6027 6027 6026 6026 6028 6028 6029 6029 42 80 0 11 11 11 11 10 12 12 10 -6027 6027 6026 6026 6028 6028 6029 6029 42 80 1 0 0 0 0 11 0 0 11 -6027 6027 6026 6044 6028 6028 6028 6028 40 80 0 11 11 11 11 10 12 12 10 -6027 6027 6026 6044 6028 6028 6028 6028 40 80 1 0 0 0 0 11 0 0 11 -6027 6027 6026 6044 6028 6028 6029 6029 40 80 0 11 11 11 11 10 12 12 10 -6027 6027 6026 6044 6028 6028 6029 6029 40 80 1 0 0 0 0 11 0 0 11 -6027 6027 6027 6027 6028 6010 6029 6011 46 81 0 11 11 11 11 10 12 12 10 -6027 6027 6027 6027 6028 6010 6029 6011 46 81 1 0 12 12 0 0 0 0 0 -6027 6027 6027 6027 6028 6028 6029 6029 42 81 0 11 11 11 11 10 12 12 10 -6027 6027 6027 6027 6028 6028 6029 6029 42 81 1 0 12 12 0 0 0 0 0 -6027 6027 6027 6027 6029 6011 6029 6011 46 81 0 11 11 11 11 10 12 12 10 -6027 6027 6027 6027 6029 6011 6029 6011 46 81 1 0 12 12 0 0 0 0 0 -6027 6027 6027 6027 6029 6029 6029 6029 42 81 0 11 11 11 11 10 12 12 10 -6027 6027 6027 6027 6029 6029 6029 6029 42 81 1 0 12 12 0 0 0 0 0 -6027 6027 6027 6045 6028 6028 6029 6029 40 81 0 11 11 11 11 10 12 12 10 -6027 6027 6027 6045 6028 6028 6029 6029 40 81 1 0 12 12 0 0 0 0 0 -6027 6027 6027 6045 6029 6029 6029 6029 40 81 0 11 11 11 11 10 12 12 10 -6027 6027 6027 6045 6029 6029 6029 6029 40 81 1 0 12 12 0 0 0 0 0 -6027 6027 6044 6044 6028 6028 6028 6028 38 80 0 11 11 11 11 10 12 12 10 -6027 6027 6044 6044 6028 6028 6028 6028 38 80 1 0 0 0 0 11 0 0 11 -6027 6027 6044 6044 6028 6028 6029 6029 38 80 0 11 11 11 11 10 12 12 10 -6027 6027 6044 6044 6028 6028 6029 6029 38 80 1 0 0 0 0 11 0 0 11 -6027 6027 6044 6044 6046 6028 6046 6028 34 80 0 11 11 11 11 10 12 12 10 -6027 6027 6044 6044 6046 6028 6046 6028 34 80 1 0 0 0 0 11 0 0 11 -6027 6027 6044 6044 6046 6028 6047 6029 34 80 0 11 11 11 11 10 12 12 10 -6027 6027 6044 6044 6046 6028 6047 6029 34 80 1 0 0 0 0 11 0 0 11 -6027 6027 6045 6045 6028 6028 6029 6029 38 81 0 11 11 11 11 10 12 12 10 -6027 6027 6045 6045 6028 6028 6029 6029 38 81 1 0 12 12 0 0 0 0 0 -6027 6027 6045 6045 6029 6029 6029 6029 38 81 0 11 11 11 11 10 12 12 10 -6027 6027 6045 6045 6029 6029 6029 6029 38 81 1 0 12 12 0 0 0 0 0 -6027 6027 6045 6045 6046 6028 6047 6029 34 81 0 11 11 11 11 10 12 12 10 -6027 6027 6045 6045 6046 6028 6047 6029 34 81 1 0 12 12 0 0 0 0 0 -6027 6027 6045 6045 6047 6029 6047 6029 34 81 0 11 11 11 11 10 12 12 10 -6027 6027 6045 6045 6047 6029 6047 6029 34 81 1 0 12 12 0 0 0 0 0 -6027 6045 6044 6044 6046 6028 6046 6028 31 80 0 11 11 11 11 10 12 12 10 -6027 6045 6044 6044 6046 6028 6046 6028 31 80 1 0 0 0 0 11 0 0 11 -6027 6045 6044 6044 6046 6028 6047 6029 31 80 0 11 11 11 11 10 12 12 10 -6027 6045 6044 6044 6046 6028 6047 6029 31 80 1 0 0 0 0 11 0 0 11 -6027 6045 6045 6045 6046 6028 6047 6029 31 81 0 11 11 11 11 10 12 12 10 -6027 6045 6045 6045 6046 6028 6047 6029 31 81 1 0 12 12 0 0 0 0 0 -6027 6045 6045 6045 6047 6029 6047 6029 31 81 0 11 11 11 11 10 12 12 10 -6027 6045 6045 6045 6047 6029 6047 6029 31 81 1 0 12 12 0 0 0 0 0 -6028 6028 6027 6027 6029 6011 6029 6011 46 82 0 11 12 12 11 10 12 12 10 -6028 6028 6027 6027 6029 6011 6030 6012 46 82 0 11 12 12 11 10 12 12 10 -6028 6028 6027 6027 6029 6029 6029 6029 42 82 0 11 12 12 11 10 12 12 10 -6028 6028 6027 6027 6029 6029 6030 6030 42 82 0 11 12 12 11 10 12 12 10 -6028 6028 6027 6045 6029 6029 6029 6029 40 82 0 11 12 12 11 10 12 12 10 -6028 6028 6027 6045 6029 6029 6030 6030 40 82 0 11 12 12 11 10 12 12 10 -6028 6028 6028 6028 6029 6011 6030 6012 46 83 0 11 12 12 11 10 12 12 10 -6028 6028 6028 6028 6029 6029 6030 6030 42 83 0 11 12 12 11 10 12 12 10 -6028 6028 6028 6028 6030 6012 6030 6012 46 83 0 11 12 12 11 10 12 12 10 -6028 6028 6028 6028 6030 6030 6030 6030 42 83 0 11 12 12 11 10 12 12 10 -6028 6028 6028 6046 6029 6029 6030 6030 40 83 0 11 12 12 11 10 12 12 10 -6028 6028 6028 6046 6030 6030 6030 6030 40 83 0 11 12 12 11 10 12 12 10 -6028 6028 6045 6045 6029 6029 6029 6029 38 82 0 11 12 12 11 10 12 12 10 -6028 6028 6045 6045 6029 6029 6030 6030 38 82 0 11 12 12 11 10 12 12 10 -6028 6028 6045 6045 6047 6029 6047 6029 34 82 0 11 12 12 11 10 12 12 10 -6028 6028 6045 6045 6047 6029 6048 6030 34 82 0 11 12 12 11 10 12 12 10 -6028 6028 6046 6046 6029 6029 6030 6030 38 83 0 11 12 12 11 10 12 12 10 -6028 6028 6046 6046 6030 6030 6030 6030 38 83 0 11 12 12 11 10 12 12 10 -6028 6028 6046 6046 6047 6029 6048 6030 34 83 0 11 12 12 11 10 12 12 10 -6028 6028 6046 6046 6048 6030 6048 6030 34 83 0 11 12 12 11 10 12 12 10 -6028 6046 6045 6045 6047 6029 6047 6029 31 82 0 11 12 12 11 10 12 12 10 -6028 6046 6045 6045 6047 6029 6048 6030 31 82 0 11 12 12 11 10 12 12 10 -6028 6046 6046 6046 6047 6029 6048 6030 31 83 0 11 12 12 11 10 12 12 10 -6028 6046 6046 6046 6048 6030 6048 6030 31 83 0 11 12 12 11 10 12 12 10 -6029 6029 6028 6028 6030 6012 6030 6012 46 84 0 10 12 12 10 10 12 12 10 -6029 6029 6028 6028 6030 6012 6030 6012 46 84 1 11 0 0 0 0 0 0 0 -6029 6029 6028 6028 6030 6012 6031 6013 46 84 0 10 12 12 10 10 12 12 10 -6029 6029 6028 6028 6030 6012 6031 6013 46 84 1 11 0 0 0 0 0 0 0 -6029 6029 6028 6028 6030 6030 6030 6030 42 84 0 10 12 12 10 10 12 12 10 -6029 6029 6028 6028 6030 6030 6030 6030 42 84 1 11 0 0 0 0 0 0 0 -6029 6029 6028 6028 6030 6030 6031 6031 42 84 0 10 12 12 10 10 12 12 10 -6029 6029 6028 6028 6030 6030 6031 6031 42 84 1 11 0 0 0 0 0 0 0 -6029 6029 6028 6046 6030 6030 6030 6030 40 84 0 10 12 12 10 10 12 12 10 -6029 6029 6028 6046 6030 6030 6030 6030 40 84 1 11 0 0 0 0 0 0 0 -6029 6029 6028 6046 6030 6030 6031 6031 40 84 0 10 12 12 10 10 12 12 10 -6029 6029 6028 6046 6030 6030 6031 6031 40 84 1 11 0 0 0 0 0 0 0 -6029 6029 6029 6029 6030 6012 6031 6013 46 85 0 10 12 12 10 10 12 12 10 -6029 6029 6029 6029 6030 6030 6031 6031 42 85 0 10 12 12 10 10 12 12 10 -6029 6029 6029 6029 6031 6013 6031 6013 46 85 0 10 12 12 10 10 12 12 10 -6029 6029 6029 6029 6031 6031 6031 6031 42 85 0 10 12 12 10 10 12 12 10 -6029 6029 6029 6047 6030 6030 6031 6031 40 85 0 10 12 12 10 10 12 12 10 -6029 6029 6029 6047 6031 6031 6031 6031 40 85 0 10 12 12 10 10 12 12 10 -6029 6029 6046 6046 6030 6030 6030 6030 38 84 0 10 12 12 10 10 12 12 10 -6029 6029 6046 6046 6030 6030 6030 6030 38 84 1 11 0 0 0 0 0 0 0 -6029 6029 6046 6046 6030 6030 6031 6031 38 84 0 10 12 12 10 10 12 12 10 -6029 6029 6046 6046 6030 6030 6031 6031 38 84 1 11 0 0 0 0 0 0 0 -6029 6029 6046 6046 6048 6030 6048 6030 34 84 0 10 12 12 10 10 12 12 10 -6029 6029 6046 6046 6048 6030 6048 6030 34 84 1 11 0 0 0 0 0 0 0 -6029 6029 6046 6046 6048 6030 6049 6031 34 84 0 10 12 12 10 10 12 12 10 -6029 6029 6046 6046 6048 6030 6049 6031 34 84 1 11 0 0 0 0 0 0 0 -6029 6029 6047 6047 6030 6030 6031 6031 38 85 0 10 12 12 10 10 12 12 10 -6029 6029 6047 6047 6031 6031 6031 6031 38 85 0 10 12 12 10 10 12 12 10 -6029 6029 6047 6047 6048 6030 6049 6031 34 85 0 10 12 12 10 10 12 12 10 -6029 6029 6047 6047 6049 6031 6049 6031 34 85 0 10 12 12 10 10 12 12 10 -6029 6047 6046 6046 6048 6030 6048 6030 31 84 0 10 12 12 10 10 12 12 10 -6029 6047 6046 6046 6048 6030 6048 6030 31 84 1 11 0 0 0 0 0 0 0 -6029 6047 6046 6046 6048 6030 6049 6031 31 84 0 10 12 12 10 10 12 12 10 -6029 6047 6046 6046 6048 6030 6049 6031 31 84 1 11 0 0 0 0 0 0 0 -6029 6047 6047 6047 6048 6030 6049 6031 31 85 0 10 12 12 10 10 12 12 10 -6029 6047 6047 6047 6049 6031 6049 6031 31 85 0 10 12 12 10 10 12 12 10 -6030 6030 6029 6029 6031 6013 6031 6013 46 86 0 10 12 12 10 10 12 12 10 -6030 6030 6029 6029 6031 6013 6032 6014 46 86 0 10 12 12 10 10 12 12 10 -6030 6030 6029 6029 6031 6031 6031 6031 42 86 0 10 12 12 10 10 12 12 10 -6030 6030 6029 6029 6031 6031 6032 6032 42 86 0 10 12 12 10 10 12 12 10 -6030 6030 6029 6047 6031 6031 6031 6031 40 86 0 10 12 12 10 10 12 12 10 -6030 6030 6029 6047 6031 6031 6032 6032 40 86 0 10 12 12 10 10 12 12 10 -6030 6030 6030 6030 6031 6013 6032 6014 46 87 0 10 12 12 10 10 12 12 10 -6030 6030 6030 6030 6031 6031 6032 6032 42 87 0 10 12 12 10 10 12 12 10 -6030 6030 6030 6048 6031 6031 6032 6032 40 87 0 10 12 12 10 10 12 12 10 -6030 6030 6047 6047 6031 6031 6031 6031 38 86 0 10 12 12 10 10 12 12 10 -6030 6030 6047 6047 6031 6031 6032 6032 38 86 0 10 12 12 10 10 12 12 10 -6030 6030 6047 6047 6049 6031 6049 6031 34 86 0 10 12 12 10 10 12 12 10 -6030 6030 6047 6047 6049 6031 6050 6032 34 86 0 10 12 12 10 10 12 12 10 -6030 6030 6048 6048 6031 6031 6032 6032 38 87 0 10 12 12 10 10 12 12 10 -6030 6030 6048 6048 6049 6031 6050 6032 34 87 0 10 12 12 10 10 12 12 10 -6030 6048 6047 6047 6049 6031 6049 6031 31 86 0 10 12 12 10 10 12 12 10 -6030 6048 6047 6047 6049 6031 6050 6032 31 86 0 10 12 12 10 10 12 12 10 -6030 6048 6048 6048 6049 6031 6050 6032 31 87 0 10 12 12 10 10 12 12 10 -6037 6037 6037 6037 6038 6020 6039 6021 29 65 0 12 10 10 12 12 10 10 12 -6037 6037 6037 6037 6038 6038 6039 6039 25 65 0 12 10 10 12 12 10 10 12 -6037 6037 6037 6037 6039 6021 6039 6021 29 65 0 12 10 10 12 12 10 10 12 -6037 6037 6037 6037 6039 6039 6039 6039 25 65 0 12 10 10 12 12 10 10 12 -6037 6037 6037 6055 6038 6038 6039 6039 23 65 0 12 10 10 12 12 10 10 12 -6037 6037 6037 6055 6039 6039 6039 6039 23 65 0 12 10 10 12 12 10 10 12 -6037 6037 6055 6055 6038 6038 6039 6039 21 65 0 12 10 10 12 12 10 10 12 -6037 6037 6055 6055 6039 6039 6039 6039 21 65 0 12 10 10 12 12 10 10 12 -6037 6037 6055 6055 6056 6038 6057 6039 17 65 0 12 10 10 12 12 10 10 12 -6037 6037 6055 6055 6057 6039 6057 6039 17 65 0 12 10 10 12 12 10 10 12 -6037 6055 6055 6055 6057 6039 6057 6039 14 65 0 12 10 10 12 12 10 10 12 -6038 6038 6037 6037 6039 6021 6039 6021 29 66 0 12 10 10 12 12 10 10 12 -6038 6038 6037 6037 6039 6021 6040 6022 29 66 0 12 10 10 12 12 10 10 12 -6038 6038 6037 6037 6039 6039 6039 6039 25 66 0 12 10 10 12 12 10 10 12 -6038 6038 6037 6037 6039 6039 6040 6040 25 66 0 12 10 10 12 12 10 10 12 -6038 6038 6037 6055 6039 6039 6039 6039 23 66 0 12 10 10 12 12 10 10 12 -6038 6038 6037 6055 6039 6039 6040 6040 23 66 0 12 10 10 12 12 10 10 12 -6038 6038 6038 6038 6039 6021 6040 6022 29 67 0 12 10 10 12 12 10 10 12 -6038 6038 6038 6038 6039 6039 6040 6040 25 67 0 12 10 10 12 12 10 10 12 -6038 6038 6038 6038 6040 6022 6040 6022 29 67 0 12 10 10 12 12 10 10 12 -6038 6038 6038 6038 6040 6040 6040 6040 25 67 0 12 10 10 12 12 10 10 12 -6038 6038 6038 6056 6039 6039 6040 6040 23 67 0 12 10 10 12 12 10 10 12 -6038 6038 6038 6056 6040 6040 6040 6040 23 67 0 12 10 10 12 12 10 10 12 -6038 6038 6055 6055 6039 6039 6039 6039 21 66 0 12 10 10 12 12 10 10 12 -6038 6038 6055 6055 6039 6039 6040 6040 21 66 0 12 10 10 12 12 10 10 12 -6038 6038 6055 6055 6057 6039 6057 6039 17 66 0 12 10 10 12 12 10 10 12 -6038 6038 6055 6055 6057 6039 6058 6040 17 66 0 12 10 10 12 12 10 10 12 -6038 6038 6056 6056 6039 6039 6040 6040 21 67 0 12 10 10 12 12 10 10 12 -6038 6038 6056 6056 6040 6040 6040 6040 21 67 0 12 10 10 12 12 10 10 12 -6038 6038 6056 6056 6057 6039 6058 6040 17 67 0 12 10 10 12 12 10 10 12 -6038 6038 6056 6056 6058 6040 6058 6040 17 67 0 12 10 10 12 12 10 10 12 -6038 6056 6055 6055 6057 6039 6057 6039 14 66 0 12 10 10 12 12 10 10 12 -6038 6056 6055 6055 6057 6039 6058 6040 14 66 0 12 10 10 12 12 10 10 12 -6038 6056 6056 6056 6057 6039 6058 6040 14 67 0 12 10 10 12 12 10 10 12 -6038 6056 6056 6056 6058 6040 6058 6040 14 67 0 12 10 10 12 12 10 10 12 -6039 6039 6038 6038 6040 6022 6040 6022 29 68 0 12 10 10 12 12 10 10 12 -6039 6039 6038 6038 6040 6022 6040 6022 29 68 1 0 0 0 0 0 11 11 0 -6039 6039 6038 6038 6040 6022 6041 6023 29 68 0 12 10 10 12 12 10 10 12 -6039 6039 6038 6038 6040 6022 6041 6023 29 68 1 0 0 0 0 0 11 11 0 -6039 6039 6038 6038 6040 6040 6040 6040 25 68 0 12 10 10 12 12 10 10 12 -6039 6039 6038 6038 6040 6040 6040 6040 25 68 1 0 0 0 0 0 11 11 0 -6039 6039 6038 6038 6040 6040 6041 6041 25 68 0 12 10 10 12 12 10 10 12 -6039 6039 6038 6038 6040 6040 6041 6041 25 68 1 0 0 0 0 0 11 11 0 -6039 6039 6038 6056 6040 6040 6040 6040 23 68 0 12 10 10 12 12 10 10 12 -6039 6039 6038 6056 6040 6040 6040 6040 23 68 1 0 0 0 0 0 11 11 0 -6039 6039 6038 6056 6040 6040 6041 6041 23 68 0 12 10 10 12 12 10 10 12 -6039 6039 6038 6056 6040 6040 6041 6041 23 68 1 0 0 0 0 0 11 11 0 -6039 6039 6039 6039 6040 6022 6041 6023 29 69 0 12 10 10 12 12 11 11 12 -6039 6039 6039 6039 6040 6040 6041 6041 25 69 0 12 10 10 12 12 11 11 12 -6039 6039 6039 6039 6041 6023 6041 6023 29 69 0 12 10 10 12 12 11 11 12 -6039 6039 6039 6039 6041 6041 6041 6041 25 69 0 12 10 10 12 12 11 11 12 -6039 6039 6039 6057 6040 6040 6041 6041 23 69 0 12 10 10 12 12 11 11 12 -6039 6039 6039 6057 6041 6041 6041 6041 23 69 0 12 10 10 12 12 11 11 12 -6039 6039 6056 6056 6040 6040 6040 6040 21 68 0 12 10 10 12 12 10 10 12 -6039 6039 6056 6056 6040 6040 6040 6040 21 68 1 0 0 0 0 0 11 11 0 -6039 6039 6056 6056 6040 6040 6041 6041 21 68 0 12 10 10 12 12 10 10 12 -6039 6039 6056 6056 6040 6040 6041 6041 21 68 1 0 0 0 0 0 11 11 0 -6039 6039 6056 6056 6058 6040 6058 6040 17 68 0 12 10 10 12 12 10 10 12 -6039 6039 6056 6056 6058 6040 6058 6040 17 68 1 0 0 0 0 0 11 11 0 -6039 6039 6056 6056 6058 6040 6059 6041 17 68 0 12 10 10 12 12 10 10 12 -6039 6039 6056 6056 6058 6040 6059 6041 17 68 1 0 0 0 0 0 11 11 0 -6039 6039 6057 6057 6040 6040 6041 6041 21 69 0 12 10 10 12 12 11 11 12 -6039 6039 6057 6057 6041 6041 6041 6041 21 69 0 12 10 10 12 12 11 11 12 -6039 6039 6057 6057 6058 6040 6059 6041 17 69 0 12 10 10 12 12 11 11 12 -6039 6039 6057 6057 6059 6041 6059 6041 17 69 0 12 10 10 12 12 11 11 12 -6039 6057 6056 6056 6058 6040 6058 6040 14 68 0 12 10 10 12 12 10 10 12 -6039 6057 6056 6056 6058 6040 6058 6040 14 68 1 0 0 0 0 0 11 11 0 -6039 6057 6056 6056 6058 6040 6059 6041 14 68 0 12 10 10 12 12 10 10 12 -6039 6057 6056 6056 6058 6040 6059 6041 14 68 1 0 0 0 0 0 11 11 0 -6039 6057 6057 6057 6058 6040 6059 6041 14 69 0 12 10 10 12 12 11 11 12 -6039 6057 6057 6057 6059 6041 6059 6041 14 69 0 12 10 10 12 12 11 11 12 -6040 6040 6039 6039 6041 6023 6041 6023 29 70 0 12 10 10 12 12 11 11 11 -6040 6040 6039 6039 6041 6023 6041 6023 29 70 1 0 0 0 0 0 0 0 12 -6040 6040 6039 6039 6041 6023 6042 6024 29 70 0 12 10 10 12 12 11 11 11 -6040 6040 6039 6039 6041 6023 6042 6024 29 70 1 0 0 0 0 0 0 0 12 -6040 6040 6039 6039 6041 6041 6041 6041 25 70 0 12 10 10 12 12 11 11 11 -6040 6040 6039 6039 6041 6041 6041 6041 25 70 1 0 0 0 0 0 0 0 12 -6040 6040 6039 6039 6041 6041 6042 6042 25 70 0 12 10 10 12 12 11 11 11 -6040 6040 6039 6039 6041 6041 6042 6042 25 70 1 0 0 0 0 0 0 0 12 -6040 6040 6039 6057 6041 6041 6041 6041 23 70 0 12 10 10 12 12 11 11 11 -6040 6040 6039 6057 6041 6041 6041 6041 23 70 1 0 0 0 0 0 0 0 12 -6040 6040 6039 6057 6041 6041 6042 6042 23 70 0 12 10 10 12 12 11 11 11 -6040 6040 6039 6057 6041 6041 6042 6042 23 70 1 0 0 0 0 0 0 0 12 -6040 6040 6040 6040 6041 6023 6042 6024 29 71 0 12 10 10 12 11 11 11 11 -6040 6040 6040 6040 6041 6023 6042 6024 29 71 1 0 11 11 0 12 0 0 0 -6040 6040 6040 6040 6041 6041 6042 6042 25 71 0 12 10 10 12 11 11 11 11 -6040 6040 6040 6040 6041 6041 6042 6042 25 71 1 0 11 11 0 12 0 0 0 -6040 6040 6040 6040 6042 6024 6042 6024 29 71 0 12 10 10 12 11 11 11 11 -6040 6040 6040 6040 6042 6024 6042 6024 29 71 1 0 11 11 0 12 0 0 0 -6040 6040 6040 6040 6042 6042 6042 6042 25 71 0 12 10 10 12 11 11 11 11 -6040 6040 6040 6040 6042 6042 6042 6042 25 71 1 0 11 11 0 12 0 0 0 -6040 6040 6040 6058 6041 6041 6042 6042 23 71 0 12 10 10 12 11 11 11 11 -6040 6040 6040 6058 6041 6041 6042 6042 23 71 1 0 11 11 0 12 0 0 0 -6040 6040 6040 6058 6042 6042 6042 6042 23 71 0 12 10 10 12 11 11 11 11 -6040 6040 6040 6058 6042 6042 6042 6042 23 71 1 0 11 11 0 12 0 0 0 -6040 6040 6057 6057 6041 6041 6041 6041 21 70 0 12 10 10 12 12 11 11 11 -6040 6040 6057 6057 6041 6041 6041 6041 21 70 1 0 0 0 0 0 0 0 12 -6040 6040 6057 6057 6041 6041 6042 6042 21 70 0 12 10 10 12 12 11 11 11 -6040 6040 6057 6057 6041 6041 6042 6042 21 70 1 0 0 0 0 0 0 0 12 -6040 6040 6057 6057 6059 6041 6059 6041 17 70 0 12 10 10 12 12 11 11 11 -6040 6040 6057 6057 6059 6041 6059 6041 17 70 1 0 0 0 0 0 0 0 12 -6040 6040 6057 6057 6059 6041 6060 6042 17 70 0 12 10 10 12 12 11 11 11 -6040 6040 6057 6057 6059 6041 6060 6042 17 70 1 0 0 0 0 0 0 0 12 -6040 6040 6058 6058 6041 6041 6042 6042 21 71 0 12 10 10 12 11 11 11 11 -6040 6040 6058 6058 6041 6041 6042 6042 21 71 1 0 11 11 0 12 0 0 0 -6040 6040 6058 6058 6042 6042 6042 6042 21 71 0 12 10 10 12 11 11 11 11 -6040 6040 6058 6058 6042 6042 6042 6042 21 71 1 0 11 11 0 12 0 0 0 -6040 6040 6058 6058 6059 6041 6060 6042 17 71 0 12 10 10 12 11 11 11 11 -6040 6040 6058 6058 6059 6041 6060 6042 17 71 1 0 11 11 0 12 0 0 0 -6040 6040 6058 6058 6060 6042 6060 6042 17 71 0 12 10 10 12 11 11 11 11 -6040 6040 6058 6058 6060 6042 6060 6042 17 71 1 0 11 11 0 12 0 0 0 -6040 6058 6057 6057 6059 6041 6059 6041 14 70 0 12 10 10 12 12 11 11 11 -6040 6058 6057 6057 6059 6041 6059 6041 14 70 1 0 0 0 0 0 0 0 12 -6040 6058 6057 6057 6059 6041 6060 6042 14 70 0 12 10 10 12 12 11 11 11 -6040 6058 6057 6057 6059 6041 6060 6042 14 70 1 0 0 0 0 0 0 0 12 -6040 6058 6058 6058 6059 6041 6060 6042 14 71 0 12 10 10 12 11 11 11 11 -6040 6058 6058 6058 6059 6041 6060 6042 14 71 1 0 11 11 0 12 0 0 0 -6040 6058 6058 6058 6060 6042 6060 6042 14 71 0 12 10 10 12 11 11 11 11 -6040 6058 6058 6058 6060 6042 6060 6042 14 71 1 0 11 11 0 12 0 0 0 -6041 6041 6040 6040 6042 6024 6042 6024 29 72 0 12 11 11 12 11 11 11 11 -6041 6041 6040 6040 6042 6024 6043 6025 29 72 0 12 11 11 12 11 11 11 11 -6041 6041 6040 6040 6042 6042 6042 6042 25 72 0 12 11 11 12 11 11 11 11 -6041 6041 6040 6040 6042 6042 6043 6043 25 72 0 12 11 11 12 11 11 11 11 -6041 6041 6040 6058 6042 6042 6042 6042 23 72 0 12 11 11 12 11 11 11 11 -6041 6041 6040 6058 6042 6042 6043 6043 23 72 0 12 11 11 12 11 11 11 11 -6041 6041 6041 6041 6042 6024 6043 6025 29 73 0 12 11 11 12 11 11 11 11 -6041 6041 6041 6041 6042 6042 6043 6043 25 73 0 12 11 11 12 11 11 11 11 -6041 6041 6041 6041 6043 6025 6043 6025 29 73 0 12 11 11 12 11 11 11 11 -6041 6041 6041 6041 6043 6043 6043 6043 25 73 0 12 11 11 12 11 11 11 11 -6041 6041 6041 6059 6042 6042 6043 6043 23 73 0 12 11 11 12 11 11 11 11 -6041 6041 6041 6059 6043 6043 6043 6043 23 73 0 12 11 11 12 11 11 11 11 -6041 6041 6058 6058 6042 6042 6042 6042 21 72 0 12 11 11 12 11 11 11 11 -6041 6041 6058 6058 6042 6042 6043 6043 21 72 0 12 11 11 12 11 11 11 11 -6041 6041 6058 6058 6060 6042 6060 6042 17 72 0 12 11 11 12 11 11 11 11 -6041 6041 6058 6058 6060 6042 6061 6043 17 72 0 12 11 11 12 11 11 11 11 -6041 6041 6059 6059 6042 6042 6043 6043 21 73 0 12 11 11 12 11 11 11 11 -6041 6041 6059 6059 6043 6043 6043 6043 21 73 0 12 11 11 12 11 11 11 11 -6041 6041 6059 6059 6060 6042 6061 6043 17 73 0 12 11 11 12 11 11 11 11 -6041 6041 6059 6059 6061 6043 6061 6043 17 73 0 12 11 11 12 11 11 11 11 -6041 6059 6058 6058 6060 6042 6060 6042 14 72 0 12 11 11 12 11 11 11 11 -6041 6059 6058 6058 6060 6042 6061 6043 14 72 0 12 11 11 12 11 11 11 11 -6041 6059 6059 6059 6060 6042 6061 6043 14 73 0 12 11 11 12 11 11 11 11 -6041 6059 6059 6059 6061 6043 6061 6043 14 73 0 12 11 11 12 11 11 11 11 -6042 6042 6041 6041 6043 6025 6043 6025 29 74 0 11 11 11 11 11 11 11 11 -6042 6042 6041 6041 6043 6025 6043 6025 29 74 1 12 0 0 0 0 0 0 0 -6042 6042 6041 6041 6043 6025 6044 6026 29 74 0 11 11 11 11 11 11 11 11 -6042 6042 6041 6041 6043 6025 6044 6026 29 74 1 12 0 0 0 0 0 0 0 -6042 6042 6041 6041 6043 6043 6043 6043 25 74 0 11 11 11 11 11 11 11 11 -6042 6042 6041 6041 6043 6043 6043 6043 25 74 1 12 0 0 0 0 0 0 0 -6042 6042 6041 6041 6043 6043 6044 6044 25 74 0 11 11 11 11 11 11 11 11 -6042 6042 6041 6041 6043 6043 6044 6044 25 74 1 12 0 0 0 0 0 0 0 -6042 6042 6041 6059 6043 6043 6043 6043 23 74 0 11 11 11 11 11 11 11 11 -6042 6042 6041 6059 6043 6043 6043 6043 23 74 1 12 0 0 0 0 0 0 0 -6042 6042 6041 6059 6043 6043 6044 6044 23 74 0 11 11 11 11 11 11 11 11 -6042 6042 6041 6059 6043 6043 6044 6044 23 74 1 12 0 0 0 0 0 0 0 -6042 6042 6042 6042 6043 6025 6044 6026 29 75 0 11 11 11 11 11 11 11 11 -6042 6042 6042 6042 6043 6043 6044 6044 25 75 0 11 11 11 11 11 11 11 11 -6042 6042 6042 6042 6044 6026 6044 6026 29 75 0 11 11 11 11 11 11 11 11 -6042 6042 6042 6042 6044 6044 6044 6044 25 75 0 11 11 11 11 11 11 11 11 -6042 6042 6042 6060 6043 6043 6044 6044 23 75 0 11 11 11 11 11 11 11 11 -6042 6042 6042 6060 6044 6044 6044 6044 23 75 0 11 11 11 11 11 11 11 11 -6042 6042 6059 6059 6043 6043 6043 6043 21 74 0 11 11 11 11 11 11 11 11 -6042 6042 6059 6059 6043 6043 6043 6043 21 74 1 12 0 0 0 0 0 0 0 -6042 6042 6059 6059 6043 6043 6044 6044 21 74 0 11 11 11 11 11 11 11 11 -6042 6042 6059 6059 6043 6043 6044 6044 21 74 1 12 0 0 0 0 0 0 0 -6042 6042 6059 6059 6061 6043 6061 6043 17 74 0 11 11 11 11 11 11 11 11 -6042 6042 6059 6059 6061 6043 6061 6043 17 74 1 12 0 0 0 0 0 0 0 -6042 6042 6059 6059 6061 6043 6062 6044 17 74 0 11 11 11 11 11 11 11 11 -6042 6042 6059 6059 6061 6043 6062 6044 17 74 1 12 0 0 0 0 0 0 0 -6042 6042 6060 6060 6043 6043 6044 6044 21 75 0 11 11 11 11 11 11 11 11 -6042 6042 6060 6060 6044 6044 6044 6044 21 75 0 11 11 11 11 11 11 11 11 -6042 6042 6060 6060 6061 6043 6062 6044 17 75 0 11 11 11 11 11 11 11 11 -6042 6042 6060 6060 6062 6044 6062 6044 17 75 0 11 11 11 11 11 11 11 11 -6042 6060 6059 6059 6061 6043 6061 6043 14 74 0 11 11 11 11 11 11 11 11 -6042 6060 6059 6059 6061 6043 6061 6043 14 74 1 12 0 0 0 0 0 0 0 -6042 6060 6059 6059 6061 6043 6062 6044 14 74 0 11 11 11 11 11 11 11 11 -6042 6060 6059 6059 6061 6043 6062 6044 14 74 1 12 0 0 0 0 0 0 0 -6042 6060 6060 6060 6061 6043 6062 6044 14 75 0 11 11 11 11 11 11 11 11 -6042 6060 6060 6060 6062 6044 6062 6044 14 75 0 11 11 11 11 11 11 11 11 -6043 6043 6042 6042 6044 6026 6044 6026 29 76 0 11 11 11 11 11 11 11 11 -6043 6043 6042 6042 6044 6026 6045 6027 29 76 0 11 11 11 11 11 11 11 11 -6043 6043 6042 6042 6044 6044 6044 6044 25 76 0 11 11 11 11 11 11 11 11 -6043 6043 6042 6042 6044 6044 6045 6045 25 76 0 11 11 11 11 11 11 11 11 -6043 6043 6042 6060 6044 6044 6044 6044 23 76 0 11 11 11 11 11 11 11 11 -6043 6043 6042 6060 6044 6044 6045 6045 23 76 0 11 11 11 11 11 11 11 11 -6043 6043 6043 6043 6044 6026 6045 6027 29 77 0 11 11 11 11 11 11 11 11 -6043 6043 6043 6043 6044 6044 6045 6045 25 77 0 11 11 11 11 11 11 11 11 -6043 6043 6043 6043 6045 6027 6045 6027 29 77 0 11 11 11 11 11 11 11 11 -6043 6043 6043 6043 6045 6045 6045 6045 25 77 0 11 11 11 11 11 11 11 11 -6043 6043 6043 6061 6044 6044 6045 6045 23 77 0 11 11 11 11 11 11 11 11 -6043 6043 6043 6061 6045 6045 6045 6045 23 77 0 11 11 11 11 11 11 11 11 -6043 6043 6060 6060 6044 6044 6044 6044 21 76 0 11 11 11 11 11 11 11 11 -6043 6043 6060 6060 6044 6044 6045 6045 21 76 0 11 11 11 11 11 11 11 11 -6043 6043 6060 6060 6062 6044 6062 6044 17 76 0 11 11 11 11 11 11 11 11 -6043 6043 6060 6060 6062 6044 6063 6045 17 76 0 11 11 11 11 11 11 11 11 -6043 6043 6061 6061 6044 6044 6045 6045 21 77 0 11 11 11 11 11 11 11 11 -6043 6043 6061 6061 6045 6045 6045 6045 21 77 0 11 11 11 11 11 11 11 11 -6043 6043 6061 6061 6062 6044 6063 6045 17 77 0 11 11 11 11 11 11 11 11 -6043 6043 6061 6061 6063 6045 6063 6045 17 77 0 11 11 11 11 11 11 11 11 -6043 6061 6060 6060 6062 6044 6062 6044 14 76 0 11 11 11 11 11 11 11 11 -6043 6061 6060 6060 6062 6044 6063 6045 14 76 0 11 11 11 11 11 11 11 11 -6043 6061 6061 6061 6062 6044 6063 6045 14 77 0 11 11 11 11 11 11 11 11 -6043 6061 6061 6061 6063 6045 6063 6045 14 77 0 11 11 11 11 11 11 11 11 -6044 6044 6043 6043 6045 6027 6045 6027 29 78 0 11 11 11 11 11 11 11 11 -6044 6044 6043 6043 6045 6027 6045 6027 29 78 1 0 0 0 0 0 12 12 0 -6044 6044 6043 6043 6045 6027 6046 6028 29 78 0 11 11 11 11 11 11 11 11 -6044 6044 6043 6043 6045 6027 6046 6028 29 78 1 0 0 0 0 0 12 12 0 -6044 6044 6043 6043 6045 6045 6045 6045 25 78 0 11 11 11 11 11 11 11 11 -6044 6044 6043 6043 6045 6045 6045 6045 25 78 1 0 0 0 0 0 12 12 0 -6044 6044 6043 6043 6045 6045 6046 6046 25 78 0 11 11 11 11 11 11 11 11 -6044 6044 6043 6043 6045 6045 6046 6046 25 78 1 0 0 0 0 0 12 12 0 -6044 6044 6043 6061 6045 6045 6045 6045 23 78 0 11 11 11 11 11 11 11 11 -6044 6044 6043 6061 6045 6045 6045 6045 23 78 1 0 0 0 0 0 12 12 0 -6044 6044 6043 6061 6045 6045 6046 6046 23 78 0 11 11 11 11 11 11 11 11 -6044 6044 6043 6061 6045 6045 6046 6046 23 78 1 0 0 0 0 0 12 12 0 -6044 6044 6044 6044 6045 6027 6046 6028 29 79 0 11 11 11 11 11 12 12 11 -6044 6044 6044 6044 6045 6045 6046 6046 25 79 0 11 11 11 11 11 12 12 11 -6044 6044 6044 6044 6046 6028 6046 6028 29 79 0 11 11 11 11 11 12 12 11 -6044 6044 6044 6044 6046 6046 6046 6046 25 79 0 11 11 11 11 11 12 12 11 -6044 6044 6044 6062 6045 6045 6046 6046 23 79 0 11 11 11 11 11 12 12 11 -6044 6044 6044 6062 6046 6046 6046 6046 23 79 0 11 11 11 11 11 12 12 11 -6044 6044 6061 6061 6045 6045 6045 6045 21 78 0 11 11 11 11 11 11 11 11 -6044 6044 6061 6061 6045 6045 6045 6045 21 78 1 0 0 0 0 0 12 12 0 -6044 6044 6061 6061 6045 6045 6046 6046 21 78 0 11 11 11 11 11 11 11 11 -6044 6044 6061 6061 6045 6045 6046 6046 21 78 1 0 0 0 0 0 12 12 0 -6044 6044 6061 6061 6063 6045 6063 6045 17 78 0 11 11 11 11 11 11 11 11 -6044 6044 6061 6061 6063 6045 6063 6045 17 78 1 0 0 0 0 0 12 12 0 -6044 6044 6061 6061 6063 6045 6064 6046 17 78 0 11 11 11 11 11 11 11 11 -6044 6044 6061 6061 6063 6045 6064 6046 17 78 1 0 0 0 0 0 12 12 0 -6044 6044 6062 6062 6045 6045 6046 6046 21 79 0 11 11 11 11 11 12 12 11 -6044 6044 6062 6062 6046 6046 6046 6046 21 79 0 11 11 11 11 11 12 12 11 -6044 6044 6062 6062 6063 6045 6064 6046 17 79 0 11 11 11 11 11 12 12 11 -6044 6044 6062 6062 6064 6046 6064 6046 17 79 0 11 11 11 11 11 12 12 11 -6044 6062 6061 6061 6063 6045 6063 6045 14 78 0 11 11 11 11 11 11 11 11 -6044 6062 6061 6061 6063 6045 6063 6045 14 78 1 0 0 0 0 0 12 12 0 -6044 6062 6061 6061 6063 6045 6064 6046 14 78 0 11 11 11 11 11 11 11 11 -6044 6062 6061 6061 6063 6045 6064 6046 14 78 1 0 0 0 0 0 12 12 0 -6044 6062 6062 6062 6063 6045 6064 6046 14 79 0 11 11 11 11 11 12 12 11 -6044 6062 6062 6062 6064 6046 6064 6046 14 79 0 11 11 11 11 11 12 12 11 -6045 6045 6044 6044 6046 6028 6046 6028 29 80 0 11 11 11 11 10 12 12 10 -6045 6045 6044 6044 6046 6028 6046 6028 29 80 1 0 0 0 0 11 0 0 11 -6045 6045 6044 6044 6046 6028 6047 6029 29 80 0 11 11 11 11 10 12 12 10 -6045 6045 6044 6044 6046 6028 6047 6029 29 80 1 0 0 0 0 11 0 0 11 -6045 6045 6044 6044 6046 6046 6046 6046 25 80 0 11 11 11 11 10 12 12 10 -6045 6045 6044 6044 6046 6046 6046 6046 25 80 1 0 0 0 0 11 0 0 11 -6045 6045 6044 6044 6046 6046 6047 6047 25 80 0 11 11 11 11 10 12 12 10 -6045 6045 6044 6044 6046 6046 6047 6047 25 80 1 0 0 0 0 11 0 0 11 -6045 6045 6044 6062 6046 6046 6046 6046 23 80 0 11 11 11 11 10 12 12 10 -6045 6045 6044 6062 6046 6046 6046 6046 23 80 1 0 0 0 0 11 0 0 11 -6045 6045 6044 6062 6046 6046 6047 6047 23 80 0 11 11 11 11 10 12 12 10 -6045 6045 6044 6062 6046 6046 6047 6047 23 80 1 0 0 0 0 11 0 0 11 -6045 6045 6045 6045 6046 6028 6047 6029 29 81 0 11 11 11 11 10 12 12 10 -6045 6045 6045 6045 6046 6028 6047 6029 29 81 1 0 12 12 0 0 0 0 0 -6045 6045 6045 6045 6046 6046 6047 6047 25 81 0 11 11 11 11 10 12 12 10 -6045 6045 6045 6045 6046 6046 6047 6047 25 81 1 0 12 12 0 0 0 0 0 -6045 6045 6045 6045 6047 6029 6047 6029 29 81 0 11 11 11 11 10 12 12 10 -6045 6045 6045 6045 6047 6029 6047 6029 29 81 1 0 12 12 0 0 0 0 0 -6045 6045 6045 6045 6047 6047 6047 6047 25 81 0 11 11 11 11 10 12 12 10 -6045 6045 6045 6045 6047 6047 6047 6047 25 81 1 0 12 12 0 0 0 0 0 -6045 6045 6045 6063 6046 6046 6047 6047 23 81 0 11 11 11 11 10 12 12 10 -6045 6045 6045 6063 6046 6046 6047 6047 23 81 1 0 12 12 0 0 0 0 0 -6045 6045 6045 6063 6047 6047 6047 6047 23 81 0 11 11 11 11 10 12 12 10 -6045 6045 6045 6063 6047 6047 6047 6047 23 81 1 0 12 12 0 0 0 0 0 -6045 6045 6062 6062 6046 6046 6046 6046 21 80 0 11 11 11 11 10 12 12 10 -6045 6045 6062 6062 6046 6046 6046 6046 21 80 1 0 0 0 0 11 0 0 11 -6045 6045 6062 6062 6046 6046 6047 6047 21 80 0 11 11 11 11 10 12 12 10 -6045 6045 6062 6062 6046 6046 6047 6047 21 80 1 0 0 0 0 11 0 0 11 -6045 6045 6062 6062 6064 6046 6064 6046 17 80 0 11 11 11 11 10 12 12 10 -6045 6045 6062 6062 6064 6046 6064 6046 17 80 1 0 0 0 0 11 0 0 11 -6045 6045 6062 6062 6064 6046 6065 6047 17 80 0 11 11 11 11 10 12 12 10 -6045 6045 6062 6062 6064 6046 6065 6047 17 80 1 0 0 0 0 11 0 0 11 -6045 6045 6063 6063 6046 6046 6047 6047 21 81 0 11 11 11 11 10 12 12 10 -6045 6045 6063 6063 6046 6046 6047 6047 21 81 1 0 12 12 0 0 0 0 0 -6045 6045 6063 6063 6047 6047 6047 6047 21 81 0 11 11 11 11 10 12 12 10 -6045 6045 6063 6063 6047 6047 6047 6047 21 81 1 0 12 12 0 0 0 0 0 -6045 6045 6063 6063 6064 6046 6065 6047 17 81 0 11 11 11 11 10 12 12 10 -6045 6045 6063 6063 6064 6046 6065 6047 17 81 1 0 12 12 0 0 0 0 0 -6045 6045 6063 6063 6065 6047 6065 6047 17 81 0 11 11 11 11 10 12 12 10 -6045 6045 6063 6063 6065 6047 6065 6047 17 81 1 0 12 12 0 0 0 0 0 -6045 6063 6062 6062 6064 6046 6064 6046 14 80 0 11 11 11 11 10 12 12 10 -6045 6063 6062 6062 6064 6046 6064 6046 14 80 1 0 0 0 0 11 0 0 11 -6045 6063 6062 6062 6064 6046 6065 6047 14 80 0 11 11 11 11 10 12 12 10 -6045 6063 6062 6062 6064 6046 6065 6047 14 80 1 0 0 0 0 11 0 0 11 -6045 6063 6063 6063 6064 6046 6065 6047 14 81 0 11 11 11 11 10 12 12 10 -6045 6063 6063 6063 6064 6046 6065 6047 14 81 1 0 12 12 0 0 0 0 0 -6045 6063 6063 6063 6065 6047 6065 6047 14 81 0 11 11 11 11 10 12 12 10 -6045 6063 6063 6063 6065 6047 6065 6047 14 81 1 0 12 12 0 0 0 0 0 -6046 6046 6045 6045 6047 6029 6047 6029 29 82 0 11 12 12 11 10 12 12 10 -6046 6046 6045 6045 6047 6029 6048 6030 29 82 0 11 12 12 11 10 12 12 10 -6046 6046 6045 6045 6047 6047 6047 6047 25 82 0 11 12 12 11 10 12 12 10 -6046 6046 6045 6045 6047 6047 6048 6048 25 82 0 11 12 12 11 10 12 12 10 -6046 6046 6045 6063 6047 6047 6047 6047 23 82 0 11 12 12 11 10 12 12 10 -6046 6046 6045 6063 6047 6047 6048 6048 23 82 0 11 12 12 11 10 12 12 10 -6046 6046 6046 6046 6047 6029 6048 6030 29 83 0 11 12 12 11 10 12 12 10 -6046 6046 6046 6046 6047 6047 6048 6048 25 83 0 11 12 12 11 10 12 12 10 -6046 6046 6046 6046 6048 6030 6048 6030 29 83 0 11 12 12 11 10 12 12 10 -6046 6046 6046 6046 6048 6048 6048 6048 25 83 0 11 12 12 11 10 12 12 10 -6046 6046 6046 6064 6047 6047 6048 6048 23 83 0 11 12 12 11 10 12 12 10 -6046 6046 6046 6064 6048 6048 6048 6048 23 83 0 11 12 12 11 10 12 12 10 -6046 6046 6063 6063 6047 6047 6047 6047 21 82 0 11 12 12 11 10 12 12 10 -6046 6046 6063 6063 6047 6047 6048 6048 21 82 0 11 12 12 11 10 12 12 10 -6046 6046 6063 6063 6065 6047 6065 6047 17 82 0 11 12 12 11 10 12 12 10 -6046 6046 6063 6063 6065 6047 6066 6048 17 82 0 11 12 12 11 10 12 12 10 -6046 6046 6064 6064 6047 6047 6048 6048 21 83 0 11 12 12 11 10 12 12 10 -6046 6046 6064 6064 6048 6048 6048 6048 21 83 0 11 12 12 11 10 12 12 10 -6046 6046 6064 6064 6065 6047 6066 6048 17 83 0 11 12 12 11 10 12 12 10 -6046 6046 6064 6064 6066 6048 6066 6048 17 83 0 11 12 12 11 10 12 12 10 -6046 6064 6063 6063 6065 6047 6065 6047 14 82 0 11 12 12 11 10 12 12 10 -6046 6064 6063 6063 6065 6047 6066 6048 14 82 0 11 12 12 11 10 12 12 10 -6046 6064 6064 6064 6065 6047 6066 6048 14 83 0 11 12 12 11 10 12 12 10 -6046 6064 6064 6064 6066 6048 6066 6048 14 83 0 11 12 12 11 10 12 12 10 -6047 6047 6046 6046 6048 6030 6048 6030 29 84 0 10 12 12 10 10 12 12 10 -6047 6047 6046 6046 6048 6030 6048 6030 29 84 1 11 0 0 0 0 0 0 0 -6047 6047 6046 6046 6048 6030 6049 6031 29 84 0 10 12 12 10 10 12 12 10 -6047 6047 6046 6046 6048 6030 6049 6031 29 84 1 11 0 0 0 0 0 0 0 -6047 6047 6046 6046 6048 6048 6048 6048 25 84 0 10 12 12 10 10 12 12 10 -6047 6047 6046 6046 6048 6048 6048 6048 25 84 1 11 0 0 0 0 0 0 0 -6047 6047 6046 6046 6048 6048 6049 6049 25 84 0 10 12 12 10 10 12 12 10 -6047 6047 6046 6046 6048 6048 6049 6049 25 84 1 11 0 0 0 0 0 0 0 -6047 6047 6046 6064 6048 6048 6048 6048 23 84 0 10 12 12 10 10 12 12 10 -6047 6047 6046 6064 6048 6048 6048 6048 23 84 1 11 0 0 0 0 0 0 0 -6047 6047 6046 6064 6048 6048 6049 6049 23 84 0 10 12 12 10 10 12 12 10 -6047 6047 6046 6064 6048 6048 6049 6049 23 84 1 11 0 0 0 0 0 0 0 -6047 6047 6047 6047 6048 6030 6049 6031 29 85 0 10 12 12 10 10 12 12 10 -6047 6047 6047 6047 6048 6048 6049 6049 25 85 0 10 12 12 10 10 12 12 10 -6047 6047 6047 6047 6049 6031 6049 6031 29 85 0 10 12 12 10 10 12 12 10 -6047 6047 6047 6047 6049 6049 6049 6049 25 85 0 10 12 12 10 10 12 12 10 -6047 6047 6047 6065 6048 6048 6049 6049 23 85 0 10 12 12 10 10 12 12 10 -6047 6047 6064 6064 6048 6048 6048 6048 21 84 0 10 12 12 10 10 12 12 10 -6047 6047 6064 6064 6048 6048 6048 6048 21 84 1 11 0 0 0 0 0 0 0 -6047 6047 6064 6064 6048 6048 6049 6049 21 84 0 10 12 12 10 10 12 12 10 -6047 6047 6064 6064 6048 6048 6049 6049 21 84 1 11 0 0 0 0 0 0 0 -6047 6047 6064 6064 6066 6048 6066 6048 17 84 0 10 12 12 10 10 12 12 10 -6047 6047 6064 6064 6066 6048 6066 6048 17 84 1 11 0 0 0 0 0 0 0 -6047 6047 6064 6064 6066 6048 6067 6049 17 84 0 10 12 12 10 10 12 12 10 -6047 6047 6064 6064 6066 6048 6067 6049 17 84 1 11 0 0 0 0 0 0 0 -6047 6047 6065 6065 6048 6048 6049 6049 21 85 0 10 12 12 10 10 12 12 10 -6047 6047 6065 6065 6049 6049 6049 6049 21 85 0 10 12 12 10 10 12 12 10 -6047 6047 6065 6065 6066 6048 6067 6049 17 85 0 10 12 12 10 10 12 12 10 -6047 6047 6065 6065 6067 6049 6067 6049 17 85 0 10 12 12 10 10 12 12 10 -6047 6065 6064 6064 6066 6048 6066 6048 14 84 0 10 12 12 10 10 12 12 10 -6047 6065 6064 6064 6066 6048 6066 6048 14 84 1 11 0 0 0 0 0 0 0 -6047 6065 6064 6064 6066 6048 6067 6049 14 84 0 10 12 12 10 10 12 12 10 -6047 6065 6064 6064 6066 6048 6067 6049 14 84 1 11 0 0 0 0 0 0 0 -6047 6065 6065 6065 6066 6048 6067 6049 14 85 0 10 12 12 10 10 12 12 10 -6047 6065 6065 6065 6067 6049 6067 6049 14 85 0 10 12 12 10 10 12 12 10 -6048 6048 6047 6047 6049 6031 6049 6031 29 86 0 10 12 12 10 10 12 12 10 -6048 6048 6047 6047 6049 6031 6050 6032 29 86 0 10 12 12 10 10 12 12 10 -6048 6048 6047 6047 6049 6049 6049 6049 25 86 0 10 12 12 10 10 12 12 10 -6048 6048 6047 6047 6049 6049 6050 6050 25 86 0 10 12 12 10 10 12 12 10 -6048 6048 6047 6065 6049 6049 6049 6049 23 86 0 10 12 12 10 10 12 12 10 -6048 6048 6047 6065 6049 6049 6050 6050 23 86 0 10 12 12 10 10 12 12 10 -6048 6048 6048 6048 6049 6031 6050 6032 29 87 0 10 12 12 10 10 12 12 10 -6048 6048 6048 6048 6049 6049 6050 6050 25 87 0 10 12 12 10 10 12 12 10 -6048 6048 6048 6066 6049 6049 6050 6050 23 87 0 10 12 12 10 10 12 12 10 -6048 6048 6065 6065 6049 6049 6049 6049 21 86 0 10 12 12 10 10 12 12 10 -6048 6048 6065 6065 6049 6049 6050 6050 21 86 0 10 12 12 10 10 12 12 10 -6048 6048 6065 6065 6067 6049 6067 6049 17 86 0 10 12 12 10 10 12 12 10 -6048 6048 6065 6065 6067 6049 6068 6050 17 86 0 10 12 12 10 10 12 12 10 -6048 6048 6066 6066 6049 6049 6050 6050 21 87 0 10 12 12 10 10 12 12 10 -6048 6048 6066 6066 6067 6049 6068 6050 17 87 0 10 12 12 10 10 12 12 10 -6048 6066 6065 6065 6067 6049 6067 6049 14 86 0 10 12 12 10 10 12 12 10 -6048 6066 6065 6065 6067 6049 6068 6050 14 86 0 10 12 12 10 10 12 12 10 -6048 6066 6066 6066 6067 6049 6068 6050 14 87 0 10 12 12 10 10 12 12 10 -6055 6055 6055 6055 6056 6038 6057 6039 12 65 0 12 10 10 12 12 10 10 12 -6055 6055 6055 6055 6056 6056 6057 6057 8 65 0 12 10 10 12 12 10 10 12 -6055 6055 6055 6055 6057 6039 6057 6039 12 65 0 12 10 10 12 12 10 10 12 -6055 6055 6055 6055 6057 6057 6057 6057 8 65 0 12 10 10 12 12 10 10 12 -6055 6055 6055 6073 6056 6056 6057 6057 6 65 0 12 10 10 12 12 10 10 12 -6055 6055 6055 6073 6057 6057 6057 6057 6 65 0 12 10 10 12 12 10 10 12 -6055 6055 6073 6073 6056 6056 6057 6057 3 65 0 12 10 10 12 12 10 10 12 -6055 6055 6073 6073 6057 6057 6057 6057 3 65 0 12 10 10 12 12 10 10 12 -6056 6056 6055 6055 6057 6039 6057 6039 12 66 0 12 10 10 12 12 10 10 12 -6056 6056 6055 6055 6057 6039 6058 6040 12 66 0 12 10 10 12 12 10 10 12 -6056 6056 6055 6055 6057 6057 6057 6057 8 66 0 12 10 10 12 12 10 10 12 -6056 6056 6055 6055 6057 6057 6058 6058 8 66 0 12 10 10 12 12 10 10 12 -6056 6056 6055 6073 6057 6057 6057 6057 6 66 0 12 10 10 12 12 10 10 12 -6056 6056 6055 6073 6057 6057 6058 6058 6 66 0 12 10 10 12 12 10 10 12 -6056 6056 6056 6056 6057 6039 6058 6040 12 67 0 12 10 10 12 12 10 10 12 -6056 6056 6056 6056 6057 6057 6058 6058 8 67 0 12 10 10 12 12 10 10 12 -6056 6056 6056 6056 6058 6040 6058 6040 12 67 0 12 10 10 12 12 10 10 12 -6056 6056 6056 6056 6058 6058 6058 6058 8 67 0 12 10 10 12 12 10 10 12 -6056 6056 6056 6074 6057 6057 6058 6058 6 67 0 12 10 10 12 12 10 10 12 -6056 6056 6056 6074 6058 6058 6058 6058 6 67 0 12 10 10 12 12 10 10 12 -6056 6056 6073 6073 6057 6057 6057 6057 3 66 0 12 10 10 12 12 10 10 12 -6056 6056 6073 6073 6057 6057 6058 6058 3 66 0 12 10 10 12 12 10 10 12 -6056 6056 6074 6074 6057 6057 6058 6058 3 67 0 12 10 10 12 12 10 10 12 -6056 6056 6074 6074 6058 6058 6058 6058 3 67 0 12 10 10 12 12 10 10 12 -6057 6057 6056 6056 6058 6040 6058 6040 12 68 0 12 10 10 12 12 10 10 12 -6057 6057 6056 6056 6058 6040 6058 6040 12 68 1 0 0 0 0 0 11 11 0 -6057 6057 6056 6056 6058 6040 6059 6041 12 68 0 12 10 10 12 12 10 10 12 -6057 6057 6056 6056 6058 6040 6059 6041 12 68 1 0 0 0 0 0 11 11 0 -6057 6057 6056 6056 6058 6058 6058 6058 8 68 0 12 10 10 12 12 10 10 12 -6057 6057 6056 6056 6058 6058 6058 6058 8 68 1 0 0 0 0 0 11 11 0 -6057 6057 6056 6056 6058 6058 6059 6059 8 68 0 12 10 10 12 12 10 10 12 -6057 6057 6056 6056 6058 6058 6059 6059 8 68 1 0 0 0 0 0 11 11 0 -6057 6057 6056 6074 6058 6058 6058 6058 6 68 0 12 10 10 12 12 10 10 12 -6057 6057 6056 6074 6058 6058 6058 6058 6 68 1 0 0 0 0 0 11 11 0 -6057 6057 6056 6074 6058 6058 6059 6059 6 68 0 12 10 10 12 12 10 10 12 -6057 6057 6056 6074 6058 6058 6059 6059 6 68 1 0 0 0 0 0 11 11 0 -6057 6057 6057 6057 6058 6040 6059 6041 12 69 0 12 10 10 12 12 11 11 12 -6057 6057 6057 6057 6058 6058 6059 6059 8 69 0 12 10 10 12 12 11 11 12 -6057 6057 6057 6057 6059 6041 6059 6041 12 69 0 12 10 10 12 12 11 11 12 -6057 6057 6057 6057 6059 6059 6059 6059 8 69 0 12 10 10 12 12 11 11 12 -6057 6057 6057 6075 6058 6058 6059 6059 6 69 0 12 10 10 12 12 11 11 12 -6057 6057 6057 6075 6059 6059 6059 6059 6 69 0 12 10 10 12 12 11 11 12 -6057 6057 6074 6074 6058 6058 6058 6058 3 68 0 12 10 10 12 12 10 10 12 -6057 6057 6074 6074 6058 6058 6058 6058 3 68 1 0 0 0 0 0 11 11 0 -6057 6057 6074 6074 6058 6058 6059 6059 3 68 0 12 10 10 12 12 10 10 12 -6057 6057 6074 6074 6058 6058 6059 6059 3 68 1 0 0 0 0 0 11 11 0 -6057 6057 6075 6075 6058 6058 6059 6059 3 69 0 12 10 10 12 12 11 11 12 -6057 6057 6075 6075 6059 6059 6059 6059 3 69 0 12 10 10 12 12 11 11 12 -6058 6058 6057 6057 6059 6041 6059 6041 12 70 0 12 10 10 12 12 11 11 11 -6058 6058 6057 6057 6059 6041 6059 6041 12 70 1 0 0 0 0 0 0 0 12 -6058 6058 6057 6057 6059 6041 6060 6042 12 70 0 12 10 10 12 12 11 11 11 -6058 6058 6057 6057 6059 6041 6060 6042 12 70 1 0 0 0 0 0 0 0 12 -6058 6058 6057 6057 6059 6059 6059 6059 8 70 0 12 10 10 12 12 11 11 11 -6058 6058 6057 6057 6059 6059 6059 6059 8 70 1 0 0 0 0 0 0 0 12 -6058 6058 6057 6057 6059 6059 6060 6060 8 70 0 12 10 10 12 12 11 11 11 -6058 6058 6057 6057 6059 6059 6060 6060 8 70 1 0 0 0 0 0 0 0 12 -6058 6058 6057 6075 6059 6059 6059 6059 6 70 0 12 10 10 12 12 11 11 11 -6058 6058 6057 6075 6059 6059 6059 6059 6 70 1 0 0 0 0 0 0 0 12 -6058 6058 6057 6075 6059 6059 6060 6060 6 70 0 12 10 10 12 12 11 11 11 -6058 6058 6057 6075 6059 6059 6060 6060 6 70 1 0 0 0 0 0 0 0 12 -6058 6058 6058 6058 6059 6041 6060 6042 12 71 0 12 10 10 12 11 11 11 11 -6058 6058 6058 6058 6059 6041 6060 6042 12 71 1 0 11 11 0 12 0 0 0 -6058 6058 6058 6058 6059 6059 6060 6060 8 71 0 12 10 10 12 11 11 11 11 -6058 6058 6058 6058 6059 6059 6060 6060 8 71 1 0 11 11 0 12 0 0 0 -6058 6058 6058 6058 6060 6042 6060 6042 12 71 0 12 10 10 12 11 11 11 11 -6058 6058 6058 6058 6060 6042 6060 6042 12 71 1 0 11 11 0 12 0 0 0 -6058 6058 6058 6058 6060 6060 6060 6060 8 71 0 12 10 10 12 11 11 11 11 -6058 6058 6058 6058 6060 6060 6060 6060 8 71 1 0 11 11 0 12 0 0 0 -6058 6058 6058 6076 6059 6059 6060 6060 6 71 0 12 10 10 12 11 11 11 11 -6058 6058 6058 6076 6059 6059 6060 6060 6 71 1 0 11 11 0 12 0 0 0 -6058 6058 6058 6076 6060 6060 6060 6060 6 71 0 12 10 10 12 11 11 11 11 -6058 6058 6058 6076 6060 6060 6060 6060 6 71 1 0 11 11 0 12 0 0 0 -6058 6058 6075 6075 6059 6059 6059 6059 2 70 0 12 10 10 12 12 11 11 11 -6058 6058 6075 6075 6059 6059 6059 6059 2 70 1 0 0 0 0 0 0 0 12 -6058 6058 6075 6075 6059 6059 6060 6060 2 70 0 12 10 10 12 12 11 11 11 -6058 6058 6075 6075 6059 6059 6060 6060 2 70 1 0 0 0 0 0 0 0 12 -6058 6058 6076 6076 6059 6059 6060 6060 2 71 0 12 10 10 12 11 11 11 11 -6058 6058 6076 6076 6059 6059 6060 6060 2 71 1 0 11 11 0 12 0 0 0 -6058 6058 6076 6076 6060 6060 6060 6060 2 71 0 12 10 10 12 11 11 11 11 -6058 6058 6076 6076 6060 6060 6060 6060 2 71 1 0 11 11 0 12 0 0 0 -6059 6059 6058 6058 6060 6042 6060 6042 12 72 0 12 11 11 12 11 11 11 11 -6059 6059 6058 6058 6060 6042 6061 6043 12 72 0 12 11 11 12 11 11 11 11 -6059 6059 6058 6058 6060 6060 6060 6060 8 72 0 12 11 11 12 11 11 11 11 -6059 6059 6058 6058 6060 6060 6061 6061 8 72 0 12 11 11 12 11 11 11 11 -6059 6059 6058 6076 6060 6060 6060 6060 6 72 0 12 11 11 12 11 11 11 11 -6059 6059 6058 6076 6060 6060 6061 6061 6 72 0 12 11 11 12 11 11 11 11 -6059 6059 6059 6059 6060 6042 6061 6043 12 73 0 12 11 11 12 11 11 11 11 -6059 6059 6059 6059 6060 6060 6061 6061 8 73 0 12 11 11 12 11 11 11 11 -6059 6059 6059 6059 6061 6043 6061 6043 12 73 0 12 11 11 12 11 11 11 11 -6059 6059 6059 6059 6061 6061 6061 6061 8 73 0 12 11 11 12 11 11 11 11 -6059 6059 6059 6077 6060 6060 6061 6061 6 73 0 12 11 11 12 11 11 11 11 -6059 6059 6059 6077 6061 6061 6061 6061 6 73 0 12 11 11 12 11 11 11 11 -6059 6059 6076 6076 6060 6060 6060 6060 2 72 0 12 11 11 12 11 11 11 11 -6059 6059 6076 6076 6060 6060 6061 6061 2 72 0 12 11 11 12 11 11 11 11 -6059 6059 6077 6077 6060 6060 6061 6061 2 73 0 12 11 11 12 11 11 11 11 -6059 6059 6077 6077 6061 6061 6061 6061 2 73 0 12 11 11 12 11 11 11 11 -6060 6060 6059 6059 6061 6043 6061 6043 12 74 0 11 11 11 11 11 11 11 11 -6060 6060 6059 6059 6061 6043 6061 6043 12 74 1 12 0 0 0 0 0 0 0 -6060 6060 6059 6059 6061 6043 6062 6044 12 74 0 11 11 11 11 11 11 11 11 -6060 6060 6059 6059 6061 6043 6062 6044 12 74 1 12 0 0 0 0 0 0 0 -6060 6060 6059 6059 6061 6061 6061 6061 8 74 0 11 11 11 11 11 11 11 11 -6060 6060 6059 6059 6061 6061 6061 6061 8 74 1 12 0 0 0 0 0 0 0 -6060 6060 6059 6059 6061 6061 6062 6062 8 74 0 11 11 11 11 11 11 11 11 -6060 6060 6059 6059 6061 6061 6062 6062 8 74 1 12 0 0 0 0 0 0 0 -6060 6060 6059 6077 6061 6061 6061 6061 6 74 0 11 11 11 11 11 11 11 11 -6060 6060 6059 6077 6061 6061 6061 6061 6 74 1 12 0 0 0 0 0 0 0 -6060 6060 6059 6077 6061 6061 6062 6062 6 74 0 11 11 11 11 11 11 11 11 -6060 6060 6059 6077 6061 6061 6062 6062 6 74 1 12 0 0 0 0 0 0 0 -6060 6060 6060 6060 6061 6043 6062 6044 12 75 0 11 11 11 11 11 11 11 11 -6060 6060 6060 6060 6061 6061 6062 6062 8 75 0 11 11 11 11 11 11 11 11 -6060 6060 6060 6060 6062 6044 6062 6044 12 75 0 11 11 11 11 11 11 11 11 -6060 6060 6060 6060 6062 6062 6062 6062 8 75 0 11 11 11 11 11 11 11 11 -6060 6060 6060 6078 6061 6061 6062 6062 6 75 0 11 11 11 11 11 11 11 11 -6060 6060 6060 6078 6062 6062 6062 6062 6 75 0 11 11 11 11 11 11 11 11 -6060 6060 6077 6077 6061 6061 6061 6061 2 74 0 11 11 11 11 11 11 11 11 -6060 6060 6077 6077 6061 6061 6061 6061 2 74 1 12 0 0 0 0 0 0 0 -6060 6060 6077 6077 6061 6061 6062 6062 2 74 0 11 11 11 11 11 11 11 11 -6060 6060 6077 6077 6061 6061 6062 6062 2 74 1 12 0 0 0 0 0 0 0 -6060 6060 6078 6078 6061 6061 6062 6062 3 75 0 11 11 11 11 11 11 11 11 -6060 6060 6078 6078 6062 6062 6062 6062 3 75 0 11 11 11 11 11 11 11 11 -6061 6061 6060 6060 6062 6044 6062 6044 12 76 0 11 11 11 11 11 11 11 11 -6061 6061 6060 6060 6062 6044 6063 6045 12 76 0 11 11 11 11 11 11 11 11 -6061 6061 6060 6060 6062 6062 6062 6062 8 76 0 11 11 11 11 11 11 11 11 -6061 6061 6060 6060 6062 6062 6063 6063 8 76 0 11 11 11 11 11 11 11 11 -6061 6061 6060 6078 6062 6062 6062 6062 6 76 0 11 11 11 11 11 11 11 11 -6061 6061 6060 6078 6062 6062 6063 6063 6 76 0 11 11 11 11 11 11 11 11 -6061 6061 6061 6061 6062 6044 6063 6045 12 77 0 11 11 11 11 11 11 11 11 -6061 6061 6061 6061 6062 6062 6063 6063 8 77 0 11 11 11 11 11 11 11 11 -6061 6061 6061 6061 6063 6045 6063 6045 12 77 0 11 11 11 11 11 11 11 11 -6061 6061 6061 6061 6063 6063 6063 6063 8 77 0 11 11 11 11 11 11 11 11 -6061 6061 6061 6079 6062 6062 6063 6063 6 77 0 11 11 11 11 11 11 11 11 -6061 6061 6061 6079 6063 6063 6063 6063 6 77 0 11 11 11 11 11 11 11 11 -6061 6061 6078 6078 6062 6062 6062 6062 3 76 0 11 11 11 11 11 11 11 11 -6061 6061 6078 6078 6062 6062 6063 6063 3 76 0 11 11 11 11 11 11 11 11 -6061 6061 6079 6079 6062 6062 6063 6063 3 77 0 11 11 11 11 11 11 11 11 -6061 6061 6079 6079 6063 6063 6063 6063 3 77 0 11 11 11 11 11 11 11 11 -6062 6062 6061 6061 6063 6045 6063 6045 12 78 0 11 11 11 11 11 11 11 11 -6062 6062 6061 6061 6063 6045 6063 6045 12 78 1 0 0 0 0 0 12 12 0 -6062 6062 6061 6061 6063 6045 6064 6046 12 78 0 11 11 11 11 11 11 11 11 -6062 6062 6061 6061 6063 6045 6064 6046 12 78 1 0 0 0 0 0 12 12 0 -6062 6062 6061 6061 6063 6063 6063 6063 8 78 0 11 11 11 11 11 11 11 11 -6062 6062 6061 6061 6063 6063 6063 6063 8 78 1 0 0 0 0 0 12 12 0 -6062 6062 6061 6061 6063 6063 6064 6064 8 78 0 11 11 11 11 11 11 11 11 -6062 6062 6061 6061 6063 6063 6064 6064 8 78 1 0 0 0 0 0 12 12 0 -6062 6062 6061 6079 6063 6063 6063 6063 6 78 0 11 11 11 11 11 11 11 11 -6062 6062 6061 6079 6063 6063 6063 6063 6 78 1 0 0 0 0 0 12 12 0 -6062 6062 6061 6079 6063 6063 6064 6064 6 78 0 11 11 11 11 11 11 11 11 -6062 6062 6061 6079 6063 6063 6064 6064 6 78 1 0 0 0 0 0 12 12 0 -6062 6062 6062 6062 6063 6045 6064 6046 12 79 0 11 11 11 11 11 12 12 11 -6062 6062 6062 6062 6063 6063 6064 6064 8 79 0 11 11 11 11 11 12 12 11 -6062 6062 6062 6062 6064 6046 6064 6046 12 79 0 11 11 11 11 11 12 12 11 -6062 6062 6062 6062 6064 6064 6064 6064 8 79 0 11 11 11 11 11 12 12 11 -6062 6062 6062 6080 6063 6063 6064 6064 6 79 0 11 11 11 11 11 12 12 11 -6062 6062 6062 6080 6064 6064 6064 6064 6 79 0 11 11 11 11 11 12 12 11 -6062 6062 6079 6079 6063 6063 6063 6063 3 78 0 11 11 11 11 11 11 11 11 -6062 6062 6079 6079 6063 6063 6063 6063 3 78 1 0 0 0 0 0 12 12 0 -6062 6062 6079 6079 6063 6063 6064 6064 3 78 0 11 11 11 11 11 11 11 11 -6062 6062 6079 6079 6063 6063 6064 6064 3 78 1 0 0 0 0 0 12 12 0 -6062 6062 6080 6080 6063 6063 6064 6064 3 79 0 11 11 11 11 11 12 12 11 -6062 6062 6080 6080 6064 6064 6064 6064 3 79 0 11 11 11 11 11 12 12 11 -6063 6063 6062 6062 6064 6046 6064 6046 12 80 0 11 11 11 11 10 12 12 10 -6063 6063 6062 6062 6064 6046 6064 6046 12 80 1 0 0 0 0 11 0 0 11 -6063 6063 6062 6062 6064 6046 6065 6047 12 80 0 11 11 11 11 10 12 12 10 -6063 6063 6062 6062 6064 6046 6065 6047 12 80 1 0 0 0 0 11 0 0 11 -6063 6063 6062 6062 6064 6064 6064 6064 8 80 0 11 11 11 11 10 12 12 10 -6063 6063 6062 6062 6064 6064 6064 6064 8 80 1 0 0 0 0 11 0 0 11 -6063 6063 6062 6062 6064 6064 6065 6065 8 80 0 11 11 11 11 10 12 12 10 -6063 6063 6062 6062 6064 6064 6065 6065 8 80 1 0 0 0 0 11 0 0 11 -6063 6063 6062 6080 6064 6064 6064 6064 6 80 0 11 11 11 11 10 12 12 10 -6063 6063 6062 6080 6064 6064 6064 6064 6 80 1 0 0 0 0 11 0 0 11 -6063 6063 6062 6080 6064 6064 6065 6065 6 80 0 11 11 11 11 10 12 12 10 -6063 6063 6062 6080 6064 6064 6065 6065 6 80 1 0 0 0 0 11 0 0 11 -6063 6063 6063 6063 6064 6046 6065 6047 12 81 0 11 11 11 11 10 12 12 10 -6063 6063 6063 6063 6064 6046 6065 6047 12 81 1 0 12 12 0 0 0 0 0 -6063 6063 6063 6063 6064 6064 6065 6065 8 81 0 11 11 11 11 10 12 12 10 -6063 6063 6063 6063 6064 6064 6065 6065 8 81 1 0 12 12 0 0 0 0 0 -6063 6063 6063 6063 6065 6047 6065 6047 12 81 0 11 11 11 11 10 12 12 10 -6063 6063 6063 6063 6065 6047 6065 6047 12 81 1 0 12 12 0 0 0 0 0 -6063 6063 6063 6063 6065 6065 6065 6065 8 81 0 11 11 11 11 10 12 12 10 -6063 6063 6063 6063 6065 6065 6065 6065 8 81 1 0 12 12 0 0 0 0 0 -6063 6063 6063 6081 6064 6064 6065 6065 6 81 0 11 11 11 11 10 12 12 10 -6063 6063 6063 6081 6064 6064 6065 6065 6 81 1 0 12 12 0 0 0 0 0 -6063 6063 6063 6081 6065 6065 6065 6065 6 81 0 11 11 11 11 10 12 12 10 -6063 6063 6063 6081 6065 6065 6065 6065 6 81 1 0 12 12 0 0 0 0 0 -6063 6063 6080 6080 6064 6064 6064 6064 3 80 0 11 11 11 11 10 12 12 10 -6063 6063 6080 6080 6064 6064 6064 6064 3 80 1 0 0 0 0 11 0 0 11 -6063 6063 6080 6080 6064 6064 6065 6065 3 80 0 11 11 11 11 10 12 12 10 -6063 6063 6080 6080 6064 6064 6065 6065 3 80 1 0 0 0 0 11 0 0 11 -6063 6063 6081 6081 6064 6064 6065 6065 3 81 0 11 11 11 11 10 12 12 10 -6063 6063 6081 6081 6064 6064 6065 6065 3 81 1 0 12 12 0 0 0 0 0 -6063 6063 6081 6081 6065 6065 6065 6065 3 81 0 11 11 11 11 10 12 12 10 -6063 6063 6081 6081 6065 6065 6065 6065 3 81 1 0 12 12 0 0 0 0 0 -6064 6064 6063 6063 6065 6047 6065 6047 12 82 0 11 12 12 11 10 12 12 10 -6064 6064 6063 6063 6065 6047 6066 6048 12 82 0 11 12 12 11 10 12 12 10 -6064 6064 6063 6063 6065 6065 6065 6065 8 82 0 11 12 12 11 10 12 12 10 -6064 6064 6063 6063 6065 6065 6066 6066 8 82 0 11 12 12 11 10 12 12 10 -6064 6064 6063 6081 6065 6065 6065 6065 6 82 0 11 12 12 11 10 12 12 10 -6064 6064 6063 6081 6065 6065 6066 6066 6 82 0 11 12 12 11 10 12 12 10 -6064 6064 6064 6064 6065 6047 6066 6048 12 83 0 11 12 12 11 10 12 12 10 -6064 6064 6064 6064 6065 6065 6066 6066 8 83 0 11 12 12 11 10 12 12 10 -6064 6064 6064 6064 6066 6048 6066 6048 12 83 0 11 12 12 11 10 12 12 10 -6064 6064 6064 6064 6066 6066 6066 6066 8 83 0 11 12 12 11 10 12 12 10 -6064 6064 6064 6082 6065 6065 6066 6066 6 83 0 11 12 12 11 10 12 12 10 -6064 6064 6064 6082 6066 6066 6066 6066 6 83 0 11 12 12 11 10 12 12 10 -6064 6064 6081 6081 6065 6065 6065 6065 4 82 0 11 12 12 11 10 12 12 10 -6064 6064 6081 6081 6065 6065 6066 6066 4 82 0 11 12 12 11 10 12 12 10 -6064 6064 6082 6082 6065 6065 6066 6066 4 83 0 11 12 12 11 10 12 12 10 -6064 6064 6082 6082 6066 6066 6066 6066 4 83 0 11 12 12 11 10 12 12 10 -6065 6065 6064 6064 6066 6048 6066 6048 12 84 0 10 12 12 10 10 12 12 10 -6065 6065 6064 6064 6066 6048 6066 6048 12 84 1 11 0 0 0 0 0 0 0 -6065 6065 6064 6064 6066 6048 6067 6049 12 84 0 10 12 12 10 10 12 12 10 -6065 6065 6064 6064 6066 6048 6067 6049 12 84 1 11 0 0 0 0 0 0 0 -6065 6065 6064 6064 6066 6066 6066 6066 8 84 0 10 12 12 10 10 12 12 10 -6065 6065 6064 6064 6066 6066 6066 6066 8 84 1 11 0 0 0 0 0 0 0 -6065 6065 6064 6064 6066 6066 6067 6067 8 84 0 10 12 12 10 10 12 12 10 -6065 6065 6064 6064 6066 6066 6067 6067 8 84 1 11 0 0 0 0 0 0 0 -6065 6065 6064 6082 6066 6066 6066 6066 6 84 0 10 12 12 10 10 12 12 10 -6065 6065 6064 6082 6066 6066 6066 6066 6 84 1 11 0 0 0 0 0 0 0 -6065 6065 6064 6082 6066 6066 6067 6067 6 84 0 10 12 12 10 10 12 12 10 -6065 6065 6064 6082 6066 6066 6067 6067 6 84 1 11 0 0 0 0 0 0 0 -6065 6065 6065 6065 6066 6048 6067 6049 12 85 0 10 12 12 10 10 12 12 10 -6065 6065 6065 6065 6066 6066 6067 6067 8 85 0 10 12 12 10 10 12 12 10 -6065 6065 6065 6065 6067 6049 6067 6049 12 85 0 10 12 12 10 10 12 12 10 -6065 6065 6065 6065 6067 6067 6067 6067 8 85 0 10 12 12 10 10 12 12 10 -6065 6065 6065 6083 6066 6066 6067 6067 6 85 0 10 12 12 10 10 12 12 10 -6065 6065 6065 6083 6067 6067 6067 6067 6 85 0 10 12 12 10 10 12 12 10 -6065 6065 6082 6082 6066 6066 6066 6066 4 84 0 10 12 12 10 10 12 12 10 -6065 6065 6082 6082 6066 6066 6066 6066 4 84 1 11 0 0 0 0 0 0 0 -6065 6065 6082 6082 6066 6066 6067 6067 4 84 0 10 12 12 10 10 12 12 10 -6065 6065 6082 6082 6066 6066 6067 6067 4 84 1 11 0 0 0 0 0 0 0 -6065 6065 6083 6083 6066 6066 6067 6067 4 85 0 10 12 12 10 10 12 12 10 -6065 6065 6083 6083 6067 6067 6067 6067 4 85 0 10 12 12 10 10 12 12 10 -6066 6066 6065 6065 6067 6049 6067 6049 12 86 0 10 12 12 10 10 12 12 10 -6066 6066 6065 6065 6067 6049 6068 6050 12 86 0 10 12 12 10 10 12 12 10 -6066 6066 6065 6065 6067 6067 6067 6067 8 86 0 10 12 12 10 10 12 12 10 -6066 6066 6065 6065 6067 6067 6068 6068 8 86 0 10 12 12 10 10 12 12 10 -6066 6066 6065 6083 6067 6067 6067 6067 6 86 0 10 12 12 10 10 12 12 10 -6066 6066 6065 6083 6067 6067 6068 6068 6 86 0 10 12 12 10 10 12 12 10 -6066 6066 6066 6066 6067 6049 6068 6050 12 87 0 10 12 12 10 10 12 12 10 -6066 6066 6066 6066 6067 6067 6068 6068 8 87 0 10 12 12 10 10 12 12 10 -6066 6066 6066 6084 6067 6067 6068 6068 6 87 0 10 12 12 10 10 12 12 10 -6066 6066 6083 6083 6067 6067 6067 6067 4 86 0 10 12 12 10 10 12 12 10 -6066 6066 6083 6083 6067 6067 6068 6068 4 86 0 10 12 12 10 10 12 12 10 -6066 6066 6084 6084 6067 6067 6068 6068 4 87 0 10 12 12 10 10 12 12 10 diff --git a/Trigger/TrigT1/TrigT1NSWSimTools/src/PadTriggerLookupTool.cxx b/Trigger/TrigT1/TrigT1NSWSimTools/src/PadTriggerLookupTool.cxx deleted file mode 100644 index c1ed5c1a6935820d4384ff8278826bce1bd8e14f..0000000000000000000000000000000000000000 --- a/Trigger/TrigT1/TrigT1NSWSimTools/src/PadTriggerLookupTool.cxx +++ /dev/null @@ -1,519 +0,0 @@ -/* - Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration -*/ - -#include "TrigT1NSWSimTools/PadTriggerLookupTool.h" - -#include "GaudiKernel/ITHistSvc.h" -#include "GaudiKernel/IIncidentSvc.h" -#include "TrigT1NSWSimTools/PadData.h" -#include "TrigT1NSWSimTools/PadOfflineData.h" -#include "TrigT1NSWSimTools/PadTrigger.h" -#include "TrigT1NSWSimTools/tdr_compat_enum.h" -#include "TrigT1NSWSimTools/sTGCTriggerBandsInEta.h" -#include "MuonReadoutGeometry/sTgcReadoutElement.h" -#include "PathResolver/PathResolver.h" - -#include <boost/geometry.hpp> -#include <boost/geometry/geometries/point_xy.hpp> -#include <boost/geometry/geometries/polygon.hpp> -#include <algorithm> -#include <fstream> -#include <numeric> - -namespace NSWL1 { -//------------------------------------------------------------------------------ -PadTriggerLookupTool::PadTriggerLookupTool(const std::string& type, const std::string& name, const IInterface* parent) : - AthAlgTool(type,name,parent), - m_etaBandsLargeSector(BandsInEtaLargeSector), - m_etaBandsSmallSector(BandsInEtaSmallSector){ - declareInterface<NSWL1::IPadTriggerLookupTool>(this); -} - -StatusCode PadTriggerLookupTool::initialize() { - ATH_MSG_DEBUG( "initializing " << name() ); - ATH_MSG_DEBUG( name() << " configuration:"); - ATH_CHECK(m_detManagerKey.initialize()); - ATH_CHECK(loadCoincidenceTable("TriggerPatterns.dat") ); - if(m_dumpSectorGeometry){ - ATH_MSG_DEBUG(" Will dump 3D pad geometry / sector"); - std::ofstream padGeoFile("NSWSectorPadsGeoDump.dat");//use local variables in order not to contaminate members - //grab full sector pads - std::vector<std::shared_ptr<PadOfflineData>> smallSectorPads=fetchSmallSectorPads(); - std::vector<std::shared_ptr<PadOfflineData>> largeSectorPads=fetchLargeSectorPads(); - ATH_CHECK(printGeometry(largeSectorPads,padGeoFile) ); - ATH_CHECK(printGeometry(smallSectorPads,padGeoFile) ); - padGeoFile.close(); - - } - ATH_CHECK(m_idHelperSvc.retrieve()); - return StatusCode::SUCCESS; -} -//------------------------------------------------------------------------------ - -void PadTriggerLookupTool::handle(const Incident& inc) { - - if( inc.type()==IncidentType::BeginEvent ) { - return; - } - - - return; -} -//given a set of Pads / event this will distinguish the activated sides + sectors then looks up all possible triggers from the LUT -StatusCode PadTriggerLookupTool::lookup_pad_triggers(const std::vector<std::shared_ptr<PadData>>& pads, - std::vector<std::unique_ptr<PadTrigger>> &triggers) -{ - std::set<int> activeSides; - std::set<int> activeSectors; - //use sector numbers {1,2,3,.....16} - std::for_each(pads.begin(),pads.end(),[&](const std::shared_ptr<PadData>& p){ - activeSides.insert(p->sideId() ); - activeSectors.insert(p->triggerSectorNumber()); - } - ); - - //use only active sectors selected by the pads / event - for(const int side : activeSides){//0:C 1:A - for(const int sector : activeSectors){//{1...16} odd:L even:S - ATH_CHECK( LookupSectorTriggers(pads,side,sector,triggers)); - } - } - //now you have gathered all the triggers from all sides/sectors.. - //fill some geometric info for strip selection. the info is sent to the strip - //(currently using band eta-design from Y.R) - //However it must be removed from the code once xml file is fixed for bands-strips - - return StatusCode::SUCCESS; -} - - -StatusCode PadTriggerLookupTool::loadCoincidenceTable(const std::string& padCoincidenceFileName){ - - std::string file = PathResolver::find_file (padCoincidenceFileName, "DATAPATH"); - ATH_MSG_DEBUG("Loading coincidence table from "<<file); - std::ifstream infile(file.c_str()); - if(!infile){ - ATH_MSG_FATAL("Can't open file " << file); - return StatusCode::FAILURE; - } - std::string line; - while( getline( infile, line ) ){ - - std::stringstream iss( line ); - int number; - std::vector<int> fullPattern; - while ( iss >> number ){ - fullPattern.push_back( number ); - } - //strip pads and band-phiId parts off - //The first 8 elements are coincidence patterns the remaining two and band and phi ids - std::vector<int> padsOnlyPattern(fullPattern.begin(), fullPattern.begin() + 8); - std::vector<int> bandAndPhiId(fullPattern.begin()+8, fullPattern.begin() + 10); - int bandId=bandAndPhiId.at(0); - int phiId=bandAndPhiId.at(1); - m_pats[padsOnlyPattern]=std::pair<int,int>(bandId,phiId); - } - - ATH_CHECK(expandCoincidenceTable() ); - ATH_MSG_DEBUG(" Load "<<m_pats.size()<<" coincidence patterns..."); - return StatusCode::SUCCESS; -} - -StatusCode PadTriggerLookupTool::expandCoincidenceTable(){//There we append 3o4s to the lookup table itself... - - std::unordered_map<std::vector<int>,std::pair<int,int> ,hashPattern> derivedCoincidencePatterns; - - std::vector<int> innerIndices(4); - std::vector<int> outerIndices(4); - std::vector<int> allIndices(8); - std::iota(innerIndices.begin(), innerIndices.begin() + 4, 0); - std::iota(outerIndices.begin(), outerIndices.begin() + 4, 4); - std::iota(allIndices.begin(),allIndices.begin()+8,0); - - for(const auto& kv : m_pats){ - int bandid=kv.second.first; - int phiid=kv.second.second; - for(int in : innerIndices ){ - std::vector<int> pattern=kv.first;//copy - if(pattern.at(in)==nullPadNumber || pattern.at(in+4)==nullPadNumber){ - continue; - } - pattern.at(in)=nullPadNumber; - for(int out :outerIndices){ - int thispattern=pattern.at(out); - pattern.at(out)=nullPadNumber; - derivedCoincidencePatterns[pattern]=std::pair<int,int>(bandid,phiid); - pattern.at(out)=thispattern;//revert the change for the next one - } - } - - for(int i : allIndices){ - std::vector<int> pattern=kv.first;//copy - pattern.at(i)=nullPadNumber; - derivedCoincidencePatterns[pattern]=std::pair<int,int>(bandid,phiid); - } - } - - m_pats.insert(derivedCoincidencePatterns.begin(),derivedCoincidencePatterns.end()); - ATH_MSG_DEBUG(" Picked up "<<m_pats.size()<<" pad coincidences"); - return StatusCode::SUCCESS; -} - - - -/* -selectWedgePatterns : - -Given a set of pads / event -This will filter the given pads w.r.t to side/sector/multiplet/layers -then will return all possible pad combinations (taking the logic into account..) -later on these combinations are to be lookedup from the table / execute -//for 4-layers hit patterns, use a weak logic to tolerate noisy pads(only 1 layer tolerance) - -====it may return empty vector ==== -*/ - - - -std::vector<std::vector<std::shared_ptr<PadData> >> PadTriggerLookupTool::selectWedgePatterns(const std::vector<std::shared_ptr<PadData>> &pads,int side, int sector,int wedge) const { - - //first filter w.r.t inner/outer - std::vector<std::shared_ptr<PadData> > padsInThisWedge; - //Within logic we have sectors numbered as {1,2,3....16} : A/C - auto wedgeSelector=[=](const std::shared_ptr<PadData>& pad)->bool{ - return pad->sideId() == side && - pad->triggerSectorNumber() == sector && - pad->multipletId() == wedge; - }; - //filter pads within this sector / wedge - std::copy_if(pads.begin(),pads.end(),std::back_inserter(padsInThisWedge),[=]( const std::shared_ptr<PadData>& pad){ return wedgeSelector(pad);} ); - //too many pad hits might cause a performance issue . 100 pads ~ 100/4 ~ 25 pad hits per layer !!!! - if(padsInThisWedge.size()>100){ - ATH_MSG_WARNING("Too many pad hits: ("<<padsInThisWedge.size()<<")pad hits on side= "<<side<<" sector="<<sector<<" wedge="<<wedge); - } - //classify pads now layerwise - std::vector<std::shared_ptr<PadData> > padsOnLayer1; - std::vector<std::shared_ptr<PadData> > padsOnLayer2; - std::vector<std::shared_ptr<PadData> > padsOnLayer3; - std::vector<std::shared_ptr<PadData> > padsOnLayer4; - std::copy_if(padsInThisWedge.begin(),padsInThisWedge.end(),std::back_inserter(padsOnLayer1),[](const std::shared_ptr<PadData>& pad){ return pad->gasGapId()==1;} ); - std::copy_if(padsInThisWedge.begin(),padsInThisWedge.end(),std::back_inserter(padsOnLayer2),[](const std::shared_ptr<PadData>& pad){ return pad->gasGapId()==2;} ); - std::copy_if(padsInThisWedge.begin(),padsInThisWedge.end(),std::back_inserter(padsOnLayer3),[](const std::shared_ptr<PadData>& pad){ return pad->gasGapId()==3;} ); - std::copy_if(padsInThisWedge.begin(),padsInThisWedge.end(),std::back_inserter(padsOnLayer4),[](const std::shared_ptr<PadData>& pad){ return pad->gasGapId()==4;} ); - - //build all possible combinations with pad/layer - std::vector<std::vector<std::shared_ptr<PadData> >> padCombinationsInWedge; - //if we have more than 1 layer missing reject / returns an empty list - std::vector< size_t> nHitsLayerWise={ padsOnLayer1.size(),padsOnLayer2.size(),padsOnLayer3.size(),padsOnLayer4.size() }; - if( std::count(nHitsLayerWise.begin(),nHitsLayerWise.end(),0)>1){ - ATH_MSG_WARNING("Not enough layer hits to build a pattern at side="<<side<<" sector="<<sector); - return padCombinationsInWedge;//returns empty - } - //assigns a vector of {nullPad} (size 1) on a layer if it has no hits - auto addEmptyLayerIfAny=[]( std::vector<std::shared_ptr<PadData> >& layerPads)->void{ - if(layerPads.empty()){ - std::vector<std::shared_ptr<PadData>> emptyLayer; - std::shared_ptr<PadData> nullPad=std::make_shared<PadOfflineData>(Identifier(0), 0, 0, nullptr);//do not change the null pointer ! - emptyLayer.push_back(nullPad); - layerPads=emptyLayer; - } - }; - - addEmptyLayerIfAny(padsOnLayer1); - addEmptyLayerIfAny(padsOnLayer2); - addEmptyLayerIfAny(padsOnLayer3); - addEmptyLayerIfAny(padsOnLayer4); - //The neighborhood, in ieta and iphi, can be spanned by 1 at max in both directions (logic) - //Obviously , do not apply logic or any other kind of check if one layer is missing - - auto padBinaryLogic=[](const std::shared_ptr<PadData>& padNext,const std::shared_ptr<PadData>& padPrev)->bool{//compares two pads on consecutive layers - if(padNext->padNumber()==nullPadNumber || padPrev->padNumber() == nullPadNumber) return true; - else{ - return std::abs(padNext->padNumber()-padPrev->padNumber() )==1 || - std::abs(padNext->padNumber() -padPrev->padNumber() )==18 || - std::abs(padNext->padNumber() -padPrev->padNumber() )==19 || - std::abs(padNext->padNumber() -padPrev->padNumber() )==17 || - (padNext->padNumber() -padPrev->padNumber() ==0); - } - }; - - //given a set of pads check if all is within the same module... - auto allInSameModule=[](const std::vector<std::shared_ptr<PadData>>& pads)->bool{ - if(pads.size()!=4) return false;//no need to check again here but extra protection doesnt hurt - int moduleIdFirst; - int ctr=0; - for(const std::shared_ptr<PadData>& pad : pads){ - if(pad->padNumber()==nullPadNumber) continue;//ignore missing layer - if(ctr==0){ - moduleIdFirst=pad->moduleId(); - ctr++; - continue; - } - if(pad->moduleId()!=moduleIdFirst) return false; - - } - return true; - }; - //Given a set of pads/module/wedge check if the given pad configuration satisfies the logic - //for 4 layer hit patterns use the 2-bits weak logic. - //if you want to scan all the legit triggers use full logic (with 3 bits for 4 layer hits!) - auto padTowerLogic=[&padBinaryLogic,&allInSameModule](const std::vector<std::shared_ptr<PadData>>& pads)->bool{ - std::bitset<3> layerbits;//holds 0-->1 1-->2 2-->3 logic / transitions across consecutive layers - //==== check all pads have same module ids ===== - if(not allInSameModule(pads)) return false; - for(unsigned i=0;i<4;i++){ - if( padBinaryLogic(pads.at(i),pads.at(i+1)) ) layerbits.set(i); //sets bits 0 ,1 and 2 (layer transitions 0->1 1->2 2->3 ) - if(i==2) break; - } - // for 3o4s the logic bits must be 1,1,1 - //for 4o4s the bits must have at least two bits set (1 layer fault tolerance, to acount for noise as discussed with Y.R, E.K and Riccardo to mimic the hardware) - bool is4o4= true ? std::count_if(pads.begin(),pads.end(),[](const std::shared_ptr<PadData>& p){ return p->padNumber()==nullPadNumber;})==0 : false; - if(is4o4){ - return layerbits.count()>=2; - } - else{//3o4 - return layerbits.count()==3; - } - }; - //as we are using pads/sector but not pads/module this will boost performance by eliminating meaningless pad combinations across different modules - auto sameModule=[](const std::shared_ptr<PadData>& padNext,const std::shared_ptr<PadData>& padPrev )->bool{ - if(padNext->padNumber()==nullPadNumber || padPrev->padNumber() == nullPadNumber) return true; - else return (padNext->padNumber()/1000 == padPrev->padNumber()/1000); - /* - No need to check sector/side matching as the whole thing runs on per unique sector - */ - }; - - //We can remove the entire "allInSameModule" check as we do module checks with sameModule in nested loops (Gal spotted this) - for(const std::shared_ptr<PadData>& pad1 : padsOnLayer1 ){ - for(const std::shared_ptr<PadData>& pad2 : padsOnLayer2 ){ - if( !sameModule(pad2,pad1) ) continue; - for(const std::shared_ptr<PadData>& pad3 : padsOnLayer3 ){ - if( !sameModule(pad3,pad2) ) continue; - for(const std::shared_ptr<PadData>& pad4 : padsOnLayer4 ){ - if( !sameModule(pad4,pad3) ) continue; - std::vector<std::shared_ptr<PadData>> patt={pad1,pad2,pad3,pad4}; - if(! padTowerLogic(patt) ) continue; - padCombinationsInWedge.emplace_back(std::vector<std::shared_ptr<PadData> >({pad1,pad2,pad3,pad4}) ); - } - } - } - } - return padCombinationsInWedge; - } - - StatusCode PadTriggerLookupTool::LookupSectorTriggers(const std::vector<std::shared_ptr<PadData>>& pads,int side, int sector, std::vector<std::unique_ptr<PadTrigger>> &triggers){ - const int STGCINNER=1; - const int STGCOUTER=2; - auto inOutModuleMatch=[](const std::vector<std::shared_ptr<PadData>>& inM,const std::vector<std::shared_ptr<PadData>>& outM)->bool{ - for(const auto& in : inM){ - for(const auto& out : outM){ - if(in->padNumber()!=nullPadNumber && out->padNumber()!=nullPadNumber ){ - //if youre not sure what these numbers are here and all around see PadOfflineData::padNumber() - return out->padNumber()/1000-in->padNumber()/1000 <=1; - } - } - } - return false; - }; - - std::vector<std::pair<int,int> > uniqueBandPhiIds;//just to keep track of the unique triggers found within this lookup call - std::vector<std::vector<std::shared_ptr<PadData>> > innerPatterns=selectWedgePatterns(pads, side, sector,STGCINNER); - std::vector<std::vector<std::shared_ptr<PadData>> > outerPatterns=selectWedgePatterns(pads, side, sector,STGCOUTER); - if(innerPatterns.empty()){ - ATH_MSG_WARNING(" No hit patterns found / inner wedge"); - return StatusCode::SUCCESS; - } - if(outerPatterns.empty()){ - ATH_MSG_WARNING(" No hit patterns found / outer wedge"); - return StatusCode::SUCCESS; - } - - for(const std::vector<std::shared_ptr<PadData>>& inner: innerPatterns){ - for(const std::vector<std::shared_ptr<PadData>>& outer: outerPatterns){ - //concatenate the two if modules match then Lookup - if(! inOutModuleMatch(inner,outer)) continue; - std::vector<std::shared_ptr<PadData>> combinedInOut; - combinedInOut.insert(combinedInOut.end(),inner.begin(),inner.end()); - combinedInOut.insert(combinedInOut.end(),outer.begin(),outer.end()); - //convert set of pads into numbers as in the LUT - std::vector<int> pads2Numbers; - std::transform(combinedInOut.begin(),combinedInOut.end(),std::back_inserter(pads2Numbers),[](const std::shared_ptr<PadData>& p){ return p->padNumber();}); - std::pair<int,int> lookupValue=Lookup(pads2Numbers); - if(lookupValue.first<0) continue;//{ //no trigger is found yet - //append pads to triggers + fill in unique triggers - //if band and phi id found is already in the list of sector triggers do not add it to the list - //uniqueness defined by sideId /sectorId /bandId /phiId (!!!not only band and phiIds !!!) - auto trgpos=std::find_if(triggers.begin(),triggers.end(), - [&lookupValue,&side,§or](const std::unique_ptr<PadTrigger>&tr){ - return tr->bandId() == lookupValue.second && - tr->phiId() == lookupValue.first && - tr->triggerSectorNumber() == sector && - tr->sideId() == side; - }); - if( trgpos != triggers.end() ) continue;//trigger already exists int the list ... skip - uniqueBandPhiIds.push_back(lookupValue); - //otherwise instantiate a trigger and append to the list - auto trigger=std::make_unique<PadTrigger>();//TODO : PadTrigger needs to be rewriten as a proper class.using a C struct is too messy - std::copy(combinedInOut.begin(),combinedInOut.begin()+4,std::back_inserter(trigger->m_padsInner)); - std::copy(combinedInOut.begin()+4,combinedInOut.end(),std::back_inserter(trigger->m_padsOuter)); - std::copy(combinedInOut.begin(),combinedInOut.end(),std::back_inserter(trigger->m_pads)); - trigger->m_bandid=lookupValue.second; - trigger->m_phi_id=lookupValue.first; - int triggerSectorType=trigger->firstPad()->sectorType();//S:0/1:L - switch(triggerSectorType){ - case(0)://S - //Y.R says band ids should start from 2, so to convert it to a C index subtract 2 from bandId - //See the header file sTGCTriggerBandsInEta (strip channels<--> bands must be implmeneted in the XML and this eta mased matching must be abandoned. The existing XML values are wrong) - trigger->m_etamin=m_etaBandsSmallSector.at(trigger->bandId()-1); - trigger->m_etamax=m_etaBandsSmallSector.at(trigger->bandId()-2); - break; - case(1)://L - // The same subtraction likewise for L as well - trigger->m_etamin=m_etaBandsLargeSector.at(trigger->bandId()-1); - trigger->m_etamax=m_etaBandsLargeSector.at(trigger->bandId()-2); - break; - - default: - ATH_MSG_FATAL("Unable to determine trigger sector type"); - break; - } - triggers.push_back(std::move(trigger)); - } - } - - ATH_MSG_DEBUG("Found "<<uniqueBandPhiIds.size()<<" unique triggers from LUT"); - //Upto this point no geometry is used ... i.e no pad corners , no tower roi , no overlap area etc .... - //In principle band id should be suficient to select strips . But we dont have the band configuration in the XML yet ... - //so we have to stick to the eta-based strip selection for now .... - - return StatusCode::SUCCESS; - - } - //grabs a whole sector pads with Identifiers and 3D geometry information available - /* The method is necessary to create pad coincidence LUT by using the methods within this class - also useful to dump the full geometetry for geometry validation& side studies(see 'printGeometry' meth. and corresponding flag in the JO) - */ - std::vector<std::shared_ptr<PadOfflineData>> PadTriggerLookupTool::fetchSectorPads(bool isSmall, int SIDE,int SECTOR) { - - SG::ReadCondHandle<MuonGM::MuonDetectorManager> detManagerHandle{m_detManagerKey, Gaudi::Hive::currentContext()}; - const MuonGM::MuonDetectorManager* detManager = detManagerHandle.cptr(); - std::vector<std::shared_ptr<PadOfflineData>> sectorPads; - std::vector<Identifier> padIds; - - for(const Identifier& modId : m_idHelperSvc->stgcIdHelper().idVector() ){ - int ModuleSide=1?m_idHelperSvc->stgcIdHelper().stationEta(modId)>0 :0; - int ModuleSect=m_idHelperSvc->stgcIdHelper().stationPhi(modId); - bool SectType=m_idHelperSvc->stgcIdHelper().isSmall(modId); - if(ModuleSide!=SIDE || ModuleSect !=SECTOR || SectType!=isSmall) continue;//grab only sector modules selected by the method args - std::vector<Identifier> all_channels; - m_idHelperSvc->stgcIdHelper().idChannels(modId,all_channels); - - std::vector<Identifier> pad_channels; - const sTgcIdHelper* idHelper = &m_idHelperSvc->stgcIdHelper(); - std::copy_if(all_channels.begin(),all_channels.end(),std::back_inserter(pad_channels), - [idHelper](const Identifier& id){ - int chanType=idHelper->channelType(id); - return chanType==0; - } - ); - padIds.insert(padIds.end(),pad_channels.begin(),pad_channels.end()); - - } - - for(Identifier id : padIds){ - int multilayer=m_idHelperSvc->stgcIdHelper().multilayer(id); - int gasgap=m_idHelperSvc->stgcIdHelper().gasGap(id); - - int channeltype=m_idHelperSvc->stgcIdHelper().channelType(id); - const MuonGM::sTgcReadoutElement* rdoEl = detManager->getsTgcReadoutElement(id); - const MuonGM::MuonPadDesign* mpd=rdoEl->getPadDesign(id); - int padEtaMinFromDesign=mpd->padEtaMin; - int padEtaMaxFromDesign=mpd->padEtaMax; - int nPadCols=mpd->nPadColumns; - - int thisEta=m_idHelperSvc->stgcIdHelper().padEta(id); - int thisPhi=m_idHelperSvc->stgcIdHelper().padPhi(id); - - int nPadRowsFromDesign=padEtaMaxFromDesign-padEtaMinFromDesign; - if( thisEta>nPadRowsFromDesign || thisPhi > nPadCols ) continue; - - Identifier pid=m_idHelperSvc->stgcIdHelper().padID(id, multilayer, gasgap, channeltype, thisEta, thisPhi); - auto pad=std::make_shared<PadOfflineData>(pid, 0, 0, detManager); - pad->fillGeometricInformation(); - sectorPads.push_back(pad); - } - return sectorPads; - } - //check the header, default sector is 1 default side is 1 - - - //just as some wrapping for other sectors - std::vector<std::shared_ptr<PadOfflineData>> PadTriggerLookupTool::fetchSmallSectorPads(int side,int sector){ - return fetchSectorPads(true,side,sector); - } - std::vector<std::shared_ptr<PadOfflineData>> PadTriggerLookupTool::fetchLargeSectorPads(int side,int sector){ - return fetchSectorPads(false,side,sector); - } - -StatusCode PadTriggerLookupTool::printGeometry( const std::vector<std::shared_ptr<PadOfflineData> >& pads, std::ofstream& ofile) const { - const static std::vector<int> vertexordering={0,1,3,2}; - if(! ofile.is_open()){ - ATH_MSG_FATAL("File is not open!"); - } - auto dumpPadGeometry=[&ofile](const std::shared_ptr<PadOfflineData>& p)->void{ - Vertices padVertices; - for(int i=0;i<4;i++){//four corners - int index=vertexordering.at(i); - float x=p->m_cornerXyz[index][0]; - float y=p->m_cornerXyz[index][1]; - Vertex vtx(x,y); - padVertices.push_back(std::move(vtx)); - } - std::string secType= p->sectorType()==1 ? "LARGE": "SMALL"; - float layerZ=p->m_cornerXyz[0][2]; - Polygon padPolygon=buildPolygon(padVertices); - std::stringstream ss; - ss<<secType<<" multilayer="<<p->multipletId()<<" module="<<p->moduleId()<<" layer="<<p->gasGapId()<<" layerZ="<<layerZ<<" iEta="<<p->padEtaId()<<" iPhi="<<p->padPhiId()<<" <--> "<<boost::geometry::wkt(padPolygon)<<std::endl; - ofile<<ss.rdbuf(); - }; - std::for_each(pads.begin(),pads.end(),dumpPadGeometry); - return StatusCode::SUCCESS; -} - -//Given a pattern check if it is in the LUT if yes get bandId and PhiId - std::pair<int,int> PadTriggerLookupTool::Lookup( std::vector<int> patt){ - auto pos=m_pats.find(patt);//should be consant in time - if( pos != m_pats.end() ){//if something is found from this pattern then return it - return pos->second; - } - - //if nothing is found yet, check if the pattern is 4o4+4o4 or 3o4+3o4 + ... etc - //if 3o4+3o4 return (-1,-1) i.e nothing to lookup up furthermore - //else if 4o4+4o4 or 4o4+3o4 or vice versa continue lookup by removing layers from 4o4s ... - int nullCountInner=std::count(patt.begin(),patt.begin()+4,nullPadNumber); - int nullCountOuter=std::count(patt.begin()+4,patt.end(),nullPadNumber); - if(nullCountInner+nullCountOuter==2) return std::pair<int,int>(-1,-1); - if( nullCountInner ==0 ){//outer is then 3o4, dont touch outer, remove layers from inner + lookup - for(int i :{0,1,2,3}){ - int valueOnLayer=patt.at(i); - patt.at(i)=nullPadNumber;//removes layer - auto pos=m_pats.find(patt); - if( pos!=m_pats.end() ) return pos->second; - patt.at(i)=valueOnLayer;//add the layer back - } - } - if( nullCountOuter ==0 ){// inner is then 3o4 dont touch inner, remove layers from outer+lookup - for(int i :{4,5,6,7}){ - int valueOnLayer=patt.at(i); - patt.at(i)=nullPadNumber;//removes layer - auto pos=m_pats.find(patt); - if( pos!=m_pats.end() ) return pos->second; - patt.at(i)=valueOnLayer;//add the layer back - } - } - return std::pair<int,int>(-1,-1); - } - -} // NSWL1 diff --git a/Trigger/TrigT1/TrigT1NSWSimTools/src/components/TrigT1NSWSimTools_entries.cxx b/Trigger/TrigT1/TrigT1NSWSimTools/src/components/TrigT1NSWSimTools_entries.cxx index 0e6bd72a9779e8ee999f734e429e636d6be08c2d..f51ef138ff478a683a66c946053ca7466c4a185b 100644 --- a/Trigger/TrigT1/TrigT1NSWSimTools/src/components/TrigT1NSWSimTools_entries.cxx +++ b/Trigger/TrigT1/TrigT1NSWSimTools/src/components/TrigT1NSWSimTools_entries.cxx @@ -1,6 +1,5 @@ #include "TrigT1NSWSimTools/PadTdsOfflineTool.h" #include "TrigT1NSWSimTools/PadTriggerLogicOfflineTool.h" -#include "TrigT1NSWSimTools/PadTriggerLookupTool.h" #include "TrigT1NSWSimTools/StripTdsOfflineTool.h" #include "TrigT1NSWSimTools/StripClusterTool.h" #include "TrigT1NSWSimTools/StripSegmentTool.h" @@ -9,7 +8,6 @@ using NSWL1::PadTdsOfflineTool; using NSWL1::PadTriggerLogicOfflineTool; -using NSWL1::PadTriggerLookupTool; using NSWL1::StripTdsOfflineTool; using NSWL1::StripClusterTool; using NSWL1::StripSegmentTool; @@ -18,7 +16,6 @@ using NSWL1::TriggerProcessorTool; DECLARE_COMPONENT( PadTdsOfflineTool ) DECLARE_COMPONENT( PadTriggerLogicOfflineTool ) -DECLARE_COMPONENT( PadTriggerLookupTool ) DECLARE_COMPONENT( StripTdsOfflineTool ) DECLARE_COMPONENT( StripClusterTool ) DECLARE_COMPONENT( StripSegmentTool ) diff --git a/Trigger/TriggerCommon/TriggerJobOpts/python/Lvl1MuonSimulationConfig.py b/Trigger/TriggerCommon/TriggerJobOpts/python/Lvl1MuonSimulationConfig.py index 50041b91175635397ca1ccedd69779269e2e0f46..55569d9bd2d063ad3e274e72528c010814e8bb5e 100644 --- a/Trigger/TriggerCommon/TriggerJobOpts/python/Lvl1MuonSimulationConfig.py +++ b/Trigger/TriggerCommon/TriggerJobOpts/python/Lvl1MuonSimulationConfig.py @@ -90,7 +90,7 @@ def MuonBytestream2RdoConfig(flags): from MuonConfig.MuonBytestreamDecodeConfig import MmRDODDecoderCfg Muon_MM_RawDataProviderToolMT = CompFactory.Muon.MM_RawDataProviderToolMT MuonMmRawDataProviderTool = Muon_MM_RawDataProviderToolMT(name = "MM_RawDataProviderToolMT"+postFix, - Decoder = acc.popToolsAndMerge(MmRDODDecoderCfg(flags, + Decoder = acc.popToolsAndMerge(MmRDODDecoderCfg(flags, name="MM_RODDecoder"+postFix)), RdoLocation = "MMRDO_L1") Muon__MmRawDataProvider = CompFactory.Muon.MM_RawDataProvider @@ -151,11 +151,11 @@ def MuonRdo2PrdConfig(flags): RDOContainer = "MDTCSM"+suffix )) ### RPC RDO data ### from MuonConfig.MuonRdoDecodeConfig import RpcRDODecodeCfg - acc.merge(RpcRDODecodeCfg(flags, name = "RpcRdoToRpcPrepData" + postFix, + acc.merge(RpcRDODecodeCfg(flags, name = "RpcRdoToRpcPrepData" + postFix, RDOContainer = "RPCPAD"+suffix)) ### TGC RDO data ### from MuonConfig.MuonRdoDecodeConfig import TgcRDODecodeCfg - acc.merge(TgcRDODecodeCfg(flags, name = "TgcRdoToPrepData" + postFix, + acc.merge(TgcRDODecodeCfg(flags, name = "TgcRdoToPrepData" + postFix, RDOContainer = "TGCRDO"+suffix)) return acc @@ -198,7 +198,7 @@ def MuonRdoToMuonDigitToolCfg(flags, name="MuonRdoToMuonDigitTool", **kwargs ): #Set N BCs and central BC consistently with RPC readout settings rpcrdo_decode = CompFactory.Muon.RpcRDO_Decoder("RpcRDO_Decoder", BCZERO=flags.Trigger.L1MuonSim.RPCNBCZ) kwargs.setdefault("rpcRdoDecoderTool", rpcrdo_decode) - + the_tool = CompFactory.MuonRdoToMuonDigitTool (name, **kwargs) result.setPrivateTools(the_tool) return result @@ -264,7 +264,6 @@ def NSWTriggerConfig(flags): PadTdsTool = CompFactory.NSWL1.PadTdsOfflineTool("NSWL1__PadTdsOfflineTool",DoNtuple=flags.Trigger.L1MuonSim.WritesTGCBranches, IsMC = flags.Input.isMC, sTGC_DigitContainerName="sTGC_DIGITS_L1") PadTriggerLogicTool = CompFactory.NSWL1.PadTriggerLogicOfflineTool("NSWL1__PadTriggerLogicOfflineTool",DoNtuple=flags.Trigger.L1MuonSim.WritesTGCBranches) - PadTriggerLookupTool = CompFactory.NSWL1.PadTriggerLookupTool("NSWL1__PadTriggerLookupTool") StripTdsTool = CompFactory.NSWL1.StripTdsOfflineTool("NSWL1__StripTdsOfflineTool",DoNtuple=flags.Trigger.L1MuonSim.WritesTGCBranches,IsMC=flags.Input.isMC,sTGC_DigitContainerName="sTGC_DIGITS_L1") StripClusterTool = CompFactory.NSWL1.StripClusterTool("NSWL1__StripClusterTool",DoNtuple=flags.Trigger.L1MuonSim.WritesTGCBranches,IsMC=flags.Input.isMC) StripSegmentTool = CompFactory.NSWL1.StripSegmentTool("NSWL1__StripSegmentTool",DoNtuple=flags.Trigger.L1MuonSim.WritesTGCBranches) @@ -277,7 +276,6 @@ def NSWTriggerConfig(flags): stgcRegSel = acc.popToolsAndMerge(regSelTool_STGC_Cfg( flags )) # noqa: F841 (adds a conditions algo as a side-effect) nswAlg = CompFactory.NSWL1.NSWL1Simulation("NSWL1Simulation", - UseLookup = False, DoNtuple = flags.Trigger.L1MuonSim.WriteNSWDebugNtuple, DoMM = flags.Trigger.L1MuonSim.doMMTrigger, DoMMDiamonds = flags.Trigger.L1MuonSim.doMMTrigger, @@ -286,7 +284,6 @@ def NSWTriggerConfig(flags): DoStrip = flags.Trigger.L1MuonSim.doStripTrigger, PadTdsTool = PadTdsTool, PadTriggerTool = PadTriggerLogicTool, - PadTriggerLookupTool = PadTriggerLookupTool, StripTdsTool = StripTdsTool, StripClusterTool = StripClusterTool, StripSegmentTool = StripSegmentTool, diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/CalibCosmicMon/MonitorChainConfiguration.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/CalibCosmicMon/MonitorChainConfiguration.py index d642705de8d73d3b790f9c0a9a45b6e0146eea53..28716492fb7a41951a996aa696feafa9c3367dbc 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/CalibCosmicMon/MonitorChainConfiguration.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/CalibCosmicMon/MonitorChainConfiguration.py @@ -121,7 +121,7 @@ def CaloClusterMonitorCfg(flags, suffix = ""): reco = InEventRecoCA('CaloClusterMonitoring' + suffix) - reco.merge( hltCaloTopoClusteringCfg(flags, namePrefix="CaloMon", nameSuffix="FS" + suffix, CellsName="CaloCellsFS" + suffix, monitorCells=True, clustersKey="HLT_MonitoringCaloClusters" + suffix) ) + reco.merge( hltCaloTopoClusteringCfg(flags, namePrefix="CaloMon", nameSuffix="FS" + suffix, CellsName="CaloCellsFS" + suffix, monitorCells=False, clustersKey="HLT_MonitoringCaloClusters" + suffix) ) selAcc = SelectionCA('CaloClusterMonitoringSequence' + suffix) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/P1_run3_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/P1_run3_v1.py index 4dc33d97b1b1382af1518017b1b7d2e679f9a2e6..52952299b44d3f45d568688486b6aef936d82cad 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/P1_run3_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLT/Menu/P1_run3_v1.py @@ -310,7 +310,10 @@ def addCommonP1Signatures(chains): ChainProp(name='HLT_mistimemonj400_L1All', l1SeedThresholds=['FSNOSEED'], stream=['Mistimed'], groups=['PS:NoHLTRepro','RATE:Monitoring','BW:Other']), ChainProp(name='HLT_larsupercellmon_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED'], stream=['DISCARD'], groups=SupportGroup+['RATE:DISCARD','BW:DISCARD']), ChainProp(name='HLT_larsupercellmon_L1RD0_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['DISCARD'], groups=SupportGroup+['RATE:DISCARD','BW:DISCARD']), - ChainProp(name='HLT_larsupercellmon_L1RD0_FIRSTEMPTY', l1SeedThresholds=['FSNOSEED'], stream=['DISCARD'], groups=SupportGroup+['RATE:DISCARD','BW:DISCARD']) + ChainProp(name='HLT_larsupercellmon_L1RD0_FIRSTEMPTY', l1SeedThresholds=['FSNOSEED'], stream=['DISCARD'], groups=SupportGroup+['RATE:DISCARD','BW:DISCARD']), + ChainProp(name='HLT_caloclustermon_L1RD0_FILLED', l1SeedThresholds=['FSNOSEED'], stream=['DISCARD'], groups=SupportGroup+['RATE:DISCARD','BW:DISCARD']), + ChainProp(name='HLT_caloclustermon_L1RD0_EMPTY', l1SeedThresholds=['FSNOSEED'], stream=['DISCARD'], groups=SupportGroup+['RATE:DISCARD','BW:DISCARD']), + ChainProp(name='HLT_caloclustermon_L1RD0_FIRSTEMPTY', l1SeedThresholds=['FSNOSEED'], stream=['DISCARD'], groups=SupportGroup+['RATE:DISCARD','BW:DISCARD']) ] chainsP1['Beamspot'] = [ diff --git a/graphics/EventDisplaysOnline/CMakeLists.txt b/graphics/EventDisplaysOnline/CMakeLists.txt index 9864ae5d5479c2805a9289579dc33df018b4cce0..6ec49ebcd9f3054cbfb5f63b36bf9f8520822c0e 100644 --- a/graphics/EventDisplaysOnline/CMakeLists.txt +++ b/graphics/EventDisplaysOnline/CMakeLists.txt @@ -21,3 +21,4 @@ atlas_add_component( EventDisplaysOnline # Install files from the package: atlas_install_python_modules( python/*.py POST_BUILD_CMD ${ATLAS_FLAKE8} ) +atlas_install_scripts( python/EventDisplaysOnlineConfig.py ) diff --git a/graphics/EventDisplaysOnline/python/EventDisplaysOnlineConfig.py b/graphics/EventDisplaysOnline/python/EventDisplaysOnlineConfig.py index 99821ccc040151eefa4a0a78ebdf4b11fad3b19e..f3ee4c65fdcf5639caf095821ecbdb23839955ba 100644 --- a/graphics/EventDisplaysOnline/python/EventDisplaysOnlineConfig.py +++ b/graphics/EventDisplaysOnline/python/EventDisplaysOnlineConfig.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration def EventDisplaysOnlineCfg(flags, **kwargs): from EventDisplaysOnline.EventDisplaysOnlineHelpers import GetBFields, WaitForPartition, GetUniqueJobID, GetRunNumber diff --git a/graphics/JiveXML/JiveXML/IDataRetriever.h b/graphics/JiveXML/JiveXML/IDataRetriever.h index 35c34a19b9ac0de577daff240c9c7a0be9da8ec5..891aeb5c3fbc2c8b618560d4b901fc4df3b50cef 100755 --- a/graphics/JiveXML/JiveXML/IDataRetriever.h +++ b/graphics/JiveXML/JiveXML/IDataRetriever.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration */ #ifndef JIVEXML_IDATARETRIEVER_H diff --git a/graphics/JiveXML/python/InDetRetrieversConfig.py b/graphics/JiveXML/python/InDetRetrieversConfig.py index 29bdfeeae0ede9e15482074dd2b32d6e61923bd8..643474ec630d3dda0436f4fe3df9cd6a03921e8e 100644 --- a/graphics/JiveXML/python/InDetRetrieversConfig.py +++ b/graphics/JiveXML/python/InDetRetrieversConfig.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory from AthenaConfiguration.Enums import Format @@ -44,7 +44,18 @@ def TRTRetrieverCfg(flags, name="TRTRetriever", **kwargs): def TrackRetrieverCfg(flags, name="TrackRetriever", **kwargs): # Based on TrkJiveXML_DataTypes result = ComponentAccumulator() - # FIXME - this is copied from TrkJiveXML_DataTypes.py, but we can do better + + from MuonConfig.MuonRecToolsConfig import MuonTrackSummaryHelperToolCfg + muonSummaryHelperTool=result.popToolsAndMerge(MuonTrackSummaryHelperToolCfg(flags)) + + from TrkConfig.TrkTrackSummaryToolConfig import InDetTrackSummaryToolCfg + InDetTrackSummaryTool=result.popToolsAndMerge(InDetTrackSummaryToolCfg(flags,MuonSummaryHelperTool=muonSummaryHelperTool)) + kwargs.setdefault("TrackSummaryTool", InDetTrackSummaryTool) + + from TrkConfig.TrkResidualPullCalculatorConfig import (ResidualPullCalculatorCfg) + ResidualPullCalculator=result.addPublicTool(result.popToolsAndMerge(ResidualPullCalculatorCfg(flags))) + kwargs.setdefault("ResidualPullCalculator", ResidualPullCalculator) + kwargs.setdefault("PriorityTrackCollection", "Tracks") kwargs.setdefault( "OtherTrackCollections", diff --git a/graphics/JiveXML/python/xAODRetrieversConfig.py b/graphics/JiveXML/python/xAODRetrieversConfig.py index 78059268d5ffbaa5cd3f7852789389b5e23af627..08750e0cab2483b95fa1671546ef3026c0b7ee3c 100644 --- a/graphics/JiveXML/python/xAODRetrieversConfig.py +++ b/graphics/JiveXML/python/xAODRetrieversConfig.py @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration +# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory @@ -8,8 +8,10 @@ def xAODElectronRetrieverCfg(flags, **kwargs): result = ComponentAccumulator() the_tool = CompFactory.JiveXML.xAODElectronRetriever( name="xAODElectronRetriever", - StoreGateKey="Electrons", - OtherCollections=["Electrons"], + PriorityElectronCollection="Electrons", + OtherElectronCollections=[], + DoWriteAllCollections=False, + DoWriteHLT=False, ) result.addPublicTool(the_tool, primary=True) return result @@ -19,13 +21,15 @@ def xAODMissingETRetrieverCfg(flags, **kwargs): result = ComponentAccumulator() the_tool = CompFactory.JiveXML.xAODMissingETRetriever( name="xAODMissingETRetriever", - FavouriteMETCollection="MET_Reference_AntiKt4EMPFlow", + PriorityMETCollection="MET_Reference_AntiKt4EMPFlow", OtherMETCollections=[ "MET_Reference_AntiKt4EMTopo", "MET_Calo", "MET_LocHadTopo", "MET_Core_AntiKt4LCTopo", ], + DoWriteAllCollections=False, + DoWriteHLT=False, ) result.addPublicTool(the_tool, primary=True) return result @@ -34,7 +38,11 @@ def xAODMissingETRetrieverCfg(flags, **kwargs): def xAODMuonRetrieverCfg(flags, **kwargs): result = ComponentAccumulator() the_tool = CompFactory.JiveXML.xAODMuonRetriever( - name="xAODMuonRetriever", StoreGateKey="Muons", OtherCollections=["Muons"] + name="xAODMuonRetriever", + PriorityMuonCollection="Muons", + OtherMuonCollections=[], + DoWriteAllCollections=False, + DoWriteHLT=False, ) result.addPublicTool(the_tool, primary=True) return result @@ -44,8 +52,10 @@ def xAODPhotonRetrieverCfg(flags, **kwargs): result = ComponentAccumulator() the_tool = CompFactory.JiveXML.xAODPhotonRetriever( name="xAODPhotonRetriever", - StoreGateKey="Photons", - OtherCollections=["Photons"], + PriorityPhotonCollection="Photons", + OtherPhotonCollections=[], + DoWriteAllCollections=False, + DoWriteHLT=False, ) result.addPublicTool(the_tool, primary=True) return result @@ -55,7 +65,7 @@ def xAODJetRetrieverCfg(flags, **kwargs): result = ComponentAccumulator() the_tool = CompFactory.JiveXML.xAODJetRetriever( name="xAODJetRetriever", - FavouriteJetCollection="AntiKt4EMPFlowJets", + PriorityJetCollection="AntiKt4EMPFlowJets", OtherJetCollections=[ "AntiKt4EMTopoJets", "AntiKt4LCTopoJets", @@ -69,7 +79,9 @@ def xAODJetRetrieverCfg(flags, **kwargs): CDIPaths=[ "xAODBTaggingEfficiency/13p6TeV/2023-22-13p6TeV-MC21-CDI_Test_2023-08-1_v1.root", "xAODBTaggingEfficiency/13p6TeV/2023-02_MC23_CDI_GN2v01-noSF.root", - ] + ], + DoWriteAllCollections=False, + DoWriteHLT=False, ) result.addPublicTool(the_tool, primary=True) return result @@ -78,7 +90,11 @@ def xAODJetRetrieverCfg(flags, **kwargs): def xAODTauRetrieverCfg(flags, **kwargs): result = ComponentAccumulator() the_tool = CompFactory.JiveXML.xAODTauRetriever( - name="xAODTauRetriever", StoreGateKey="TauJets" + name="xAODTauRetriever", + PriorityTauCollection="TauJets", + OtherTauCollections=[], + DoWriteAllCollections=False, + DoWriteHLT=False, ) result.addPublicTool(the_tool, primary=True) return result @@ -88,12 +104,14 @@ def xAODTrackParticleRetrieverCfg(flags, **kwargs): result = ComponentAccumulator() the_tool = CompFactory.JiveXML.xAODTrackParticleRetriever( name="xAODTrackParticleRetriever", - StoreGateKey="InDetTrackParticles", - OtherTrackCollections=[ + PriorityTrackParticleCollection="InDetTrackParticles", + OtherTrackParticleCollections=[ "InDetLargeD0TrackParticles", "CombinedMuonTrackParticles", "GSFTrackParticles", ], + DoWriteAllCollections=False, + DoWriteHLT=False, ) result.addPublicTool(the_tool, primary=True) return result @@ -104,7 +122,12 @@ def xAODVertexRetrieverCfg(flags, **kwargs): the_tool = CompFactory.JiveXML.xAODVertexRetriever( name="xAODVertexRetriever", PrimaryVertexCollection="PrimaryVertices", - SecondaryVertexCollection="BTagging_AntiKt2TrackSecVtx", + SecondaryVertexCollection="BTagging_AntiKt4EMPFlowSecVtx", + TracksName="InDetTrackParticles_xAOD", + OtherVertexCollections=["BTagging_AntiKt4EMTopoSecVtx"], + DoWriteAllCollections=False, + DoWriteHLT=False, + DoWriteV0=False, ) result.addPublicTool(the_tool, primary=True) return result @@ -114,15 +137,16 @@ def xAODCaloClusterRetrieverCfg(flags, **kwargs): result = ComponentAccumulator() the_tool = CompFactory.JiveXML.xAODCaloClusterRetriever( name="xAODCaloClusterRetriever", - FavouriteClusterCollection="egammaClusters", + PriorityClusterCollection="egammaClusters", OtherClusterCollections=["CaloCalTopoClusters"], + DoWriteAllCollections=False, + DoWriteHLT=False, ) result.addPublicTool(the_tool, primary=True) return result def xAODRetrieversCfg(flags): - # Based on xAODJiveXML_DataTypes.py result = ComponentAccumulator() tools = [] # It's not really necessary to configure these, since nothing depends on flags. @@ -134,7 +158,7 @@ def xAODRetrieversCfg(flags): tools += [result.getPrimaryAndMerge(xAODJetRetrieverCfg(flags))] tools += [result.getPrimaryAndMerge(xAODTauRetrieverCfg(flags))] tools += [result.getPrimaryAndMerge(xAODTrackParticleRetrieverCfg(flags))] - tools += [result.getPrimaryAndMerge(xAODVertexRetrieverCfg(flags))]# + tools += [result.getPrimaryAndMerge(xAODVertexRetrieverCfg(flags))] tools += [result.getPrimaryAndMerge(xAODCaloClusterRetrieverCfg(flags))] return result, tools