diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1ad51c09ff9454132f5a4a3c945aeb81c7deaaee..599f51c198a3ada009c0c075ed08730b0c0bb34b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -56,6 +56,7 @@ after the configuration or use ccmake or cmake-gui.
   * GAUDI_GENCONF_NO_FAIL
 * Compile options
   * GAUDI_ENABLE_GAUDIALG
+  * GAUDI_ENABLE_GAUDIPARTPROP
   * GAUDI_REFLEX_COMPONENT_ALIASES
 * Doxygen
   * DOXYGEN_WITH_LOCAL_MATHJAX
@@ -110,7 +111,10 @@ string(APPEND GAUDI_OPTIONAL_DEPENDENCIES "set(GAUDI_USE_PYTHON_MAJOR ${GAUDI_US
 list(PREPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/modules") # (Find*.cmake)
 include(cmake/GaudiDependencies.cmake)
 
-string(APPEND GAUDI_OPTIONAL_DEPENDENCIES "set(GAUDI_ENABLE_GAUDIALG ${GAUDI_ENABLE_GAUDIALG})\n")
+string(APPEND GAUDI_OPTIONAL_DEPENDENCIES "
+set(GAUDI_ENABLE_GAUDIALG ${GAUDI_ENABLE_GAUDIALG})
+set(GAUDI_ENABLE_GAUDIPARTPROP ${GAUDI_ENABLE_GAUDIPARTPROP})
+")
 
 # The C++ standard used must be the same as ROOT's
 if(NOT GAUDI_CXX_STANDARD)
diff --git a/GaudiExamples/CMakeLists.txt b/GaudiExamples/CMakeLists.txt
index f5c56310e343f5e1d2ddee3770b426778ae280d6..cd8c22d862127d56625fe7d929150e2691b52a45 100644
--- a/GaudiExamples/CMakeLists.txt
+++ b/GaudiExamples/CMakeLists.txt
@@ -1,5 +1,5 @@
 #####################################################################################
-# (c) Copyright 1998-2021 CERN for the benefit of the LHCb and ATLAS collaborations #
+# (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations #
 #                                                                                   #
 # This software is distributed under the terms of the Apache version 2 licence,     #
 # copied verbatim in the file "LICENSE".                                            #
@@ -127,8 +127,7 @@ if(GAUDI_USE_AIDA)
     target_link_libraries(GaudiExamples PRIVATE AIDA::aida)
 endif()
 if(GAUDI_USE_HEPPDT)
-    target_sources(GaudiExamples PRIVATE src/PartProp/GaudiPPS.cpp
-                                         src/PartProp/PartPropExa.cpp)
+    target_sources(GaudiExamples PRIVATE src/PartProp/PartPropExa.cpp)
     target_link_libraries(GaudiExamples PRIVATE HepPDT::heppdt)
 endif()
 if(TARGET RootCnvLib)
@@ -137,6 +136,13 @@ if(TARGET RootCnvLib)
                                          src/MultiInput/MIWriteAlg.cpp)
     target_link_libraries(GaudiExamples PRIVATE RootCnvLib)
 endif()
+if(GAUDI_ENABLE_GAUDIPARTPROP)
+    target_sources(GaudiExamples PRIVATE
+        src/PartProp/GaudiPPS.cpp
+        src/PartProp/PartPropAlg.cpp
+    )
+    target_link_libraries(GaudiExamples PRIVATE Gaudi::GaudiPartProp)
+endif()
 
 # Build the executable
 gaudi_add_executable(Allocator
@@ -188,6 +194,12 @@ if(BUILD_TESTING)
       PROPERTIES DISABLED TRUE
     )
   endif()
+  if(NOT GAUDI_ENABLE_GAUDIPARTPROP)
+    set_tests_properties(
+      GaudiExamples.particlepropsvc
+      PROPERTIES DISABLED TRUE
+    )
+  endif()
 endif()
 
 gaudi_add_pytest(tests/pytest)
diff --git a/GaudiExamples/src/PartProp/GaudiPPS.cpp b/GaudiExamples/src/PartProp/GaudiPPS.cpp
index 88678b1d3c3d38ae78eabdf68057f8f998f7beee..e66878360623dcca94f927f05cd864d3071fed7b 100644
--- a/GaudiExamples/src/PartProp/GaudiPPS.cpp
+++ b/GaudiExamples/src/PartProp/GaudiPPS.cpp
@@ -1,5 +1,5 @@
 /***********************************************************************************\
-* (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
+* (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations *
 *                                                                                   *
 * This software is distributed under the terms of the Apache version 2 licence,     *
 * copied verbatim in the file "LICENSE".                                            *
@@ -8,45 +8,29 @@
 * granted to it by virtue of its status as an Intergovernmental Organization        *
 * or submit itself to any jurisdiction.                                             *
 \***********************************************************************************/
-// Include files
-// from Gaudi
-#include "GaudiKernel/IParticlePropertySvc.h"
+#include <Gaudi/Functional/Consumer.h>
+#include <Gaudi/Interfaces/IParticlePropertySvc.h>
 
-// local
-#include "GaudiPPS.h"
-
-//-----------------------------------------------------------------------------
-// Implementation file for class : GaudiPPS
-//
-// 2008-05-23 : Marco CLEMENCIC
-//-----------------------------------------------------------------------------
 namespace GaudiExamples {
-  // Declaration of the Algorithm Factory
-  DECLARE_COMPONENT( GaudiPPS )
-
-  //=============================================================================
-  // Initialization
-  //=============================================================================
-  StatusCode GaudiPPS::initialize() {
-    StatusCode sc = Algorithm::initialize(); // must be executed first
-    if ( sc.isFailure() ) return sc;         // error printed already by Algorithm
-
-    if ( msgLevel( MSG::DEBUG ) ) debug() << "==> Initialize" << endmsg;
-
-    auto pps = service<IParticlePropertySvc>( "Gaudi::ParticlePropertySvc", true );
-
-    return StatusCode::SUCCESS;
-  }
-
-  //=============================================================================
-  // Main execution
-  //=============================================================================
-  StatusCode GaudiPPS::execute() {
-
-    if ( msgLevel( MSG::DEBUG ) ) debug() << "==> Execute" << endmsg;
-
-    return StatusCode::SUCCESS;
-  }
+  /** Small algorithm using Gaudi::ParticlePropertySvc.
+   *
+   *  @author Marco CLEMENCIC
+   *  @date   2008-05-23
+   */
+  struct GaudiPPS : public Gaudi::Functional::Consumer<void()> {
+    using Consumer::Consumer;
+
+    StatusCode initialize() override {
+      return Consumer::initialize().andThen( [&] {
+        using Gaudi::Interfaces::IParticlePropertySvc;
+        if ( msgLevel( MSG::DEBUG ) ) debug() << "==> Initialize" << endmsg;
+        auto pps = service<IParticlePropertySvc>( "Gaudi::ParticlePropertySvc", true );
+      } );
+    }
+    void operator()() const override {
+      if ( msgLevel( MSG::DEBUG ) ) debug() << "==> Execute" << endmsg;
+    }
+  };
 
+  DECLARE_COMPONENT( GaudiPPS )
 } // namespace GaudiExamples
-//=============================================================================
diff --git a/GaudiExamples/src/PartProp/PartPropAlg.cpp b/GaudiExamples/src/PartProp/PartPropAlg.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..efd22f4768ebc9f8c4c446113d5ae03920d764ce
--- /dev/null
+++ b/GaudiExamples/src/PartProp/PartPropAlg.cpp
@@ -0,0 +1,167 @@
+/***********************************************************************************\
+* (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
+*                                                                                   *
+* This software is distributed under the terms of the Apache version 2 licence,     *
+* copied verbatim in the file "LICENSE".                                            *
+*                                                                                   *
+* In applying this licence, CERN does not waive the privileges and immunities       *
+* granted to it by virtue of its status as an Intergovernmental Organization        *
+* or submit itself to any jurisdiction.                                             *
+\***********************************************************************************/
+#include <iostream>
+
+#include "PartPropAlg.h"
+
+Gaudi::Examples::PartPropAlg::PartPropAlg( const std::string& name, ISvcLocator* pSvcLocator )
+    : Gaudi::Algorithm( name, pSvcLocator ) {}
+
+StatusCode Gaudi::Examples::PartPropAlg::initialize() {
+  StatusCode sc = Algorithm::initialize(); //     initialize the base
+  if ( sc.isFailure() ) { return sc; }
+  // locate particle property service
+  Gaudi::Examples::PartPropAlg::ppSvc();
+  return StatusCode::SUCCESS;
+}
+
+StatusCode Gaudi::Examples::PartPropAlg::finalize() {
+  // release the aquired service
+  m_ppSvc.reset();
+  return Algorithm::finalize(); //        finalize the base
+}
+
+// locate the new particle property service
+const Gaudi::Interfaces::IParticlePropertySvc* Gaudi::Examples::PartPropAlg::ppSvc() const {
+  if ( !m_ppSvc ) {
+    m_ppSvc = service( "Gaudi::ParticlePropertySvc", true );
+    if ( !m_ppSvc ) {
+      throw GaudiException( "Service [Gaudi::ParticlePropertySvc] not found", name(), StatusCode::FAILURE );
+    }
+  }
+  return m_ppSvc.get();
+}
+
+// execute the algorithm
+StatusCode Gaudi::Examples::PartPropAlg::execute( const EventContext& ctx ) const {
+  // get the service
+  const Gaudi::Interfaces::IParticlePropertySvc* svc = ppSvc();
+
+  if ( !svc ) { return StatusCode::FAILURE; }
+  if ( !ctx.valid() ) { return StatusCode::FAILURE; }
+
+  // avoid long names
+  typedef Gaudi::Interfaces::IParticlePropertySvc::ParticleProperties PPs;
+
+  MsgStream log( msgSvc(), name() );
+
+  { // get all invalid
+    PPs invalid;
+    svc->get(
+        // functor : invalid
+        []( const Gaudi::ParticleProperty* pp ) { return !pp->pid().isValid(); },
+        // output
+        std::back_inserter( invalid ) );
+    // print as the table
+    // header ?
+    log << MSG::INFO << " # Invalid = " << invalid.size() << std::endl;
+    // content
+    Gaudi::ParticleProperties::printAsTable( invalid, log, svc );
+    log << endmsg;
+  }
+
+  { // get all not from quarks
+    PPs noquarks;
+    svc->get(
+        // functor : has no quarks
+        []( const Gaudi::ParticleProperty* pp ) { return !pp->pid().hasQuarks(); },
+        // output
+        std::back_inserter( noquarks ) );
+    // print as the table
+    // header ?
+    log << MSG::INFO << " # Has no quarks = " << noquarks.size() << std::endl;
+    // content
+    Gaudi::ParticleProperties::printAsTable( noquarks, log, svc );
+    log << endmsg;
+  }
+
+  { // get all 'fundamental'
+    PPs fundamental;
+    svc->get(
+        // functor : fundamental
+        []( const Gaudi::ParticleProperty* pp ) {
+          auto fid = pp->pid().fundamentalID();
+          return 0 < fid && 100 >= fid;
+        },
+        // output
+        std::back_inserter( fundamental ) );
+    // print as the table
+    // header ?
+    log << MSG::INFO << " # Fundamental (0,100] = " << fundamental.size() << std::endl;
+    // content
+    Gaudi::ParticleProperties::printAsTable( fundamental, log, svc );
+    log << endmsg;
+  }
+
+  { // get all leptons
+    PPs leptons;
+    svc->get(
+        // functor : lepton
+        []( const Gaudi::ParticleProperty* pp ) { return pp->pid().isLepton(); },
+        // output
+        std::back_inserter( leptons ) );
+    // print as the table
+    // header ?
+    log << MSG::INFO << " # Leptons = " << leptons.size() << std::endl;
+    // content
+    Gaudi::ParticleProperties::printAsTable( leptons, log, svc );
+    log << endmsg;
+  }
+
+  { // get all long-lived (>1um)
+    PPs longlived;
+    svc->get(
+        // functor : ctau>1um
+        []( const Gaudi::ParticleProperty* pp ) { return pp->ctau() > 1 * Gaudi::Units::micrometer; },
+        // output
+        std::back_inserter( longlived ) );
+    // print as the table
+    // header ?
+    log << MSG::INFO << " # Long-lived(>1mu) = " << longlived.size() << std::endl;
+    // content
+    Gaudi::ParticleProperties::printAsTable( longlived, log, svc );
+    log << endmsg;
+  }
+
+  { // get all nuclea
+    PPs nuclea;
+    svc->get(
+        // functor : nucleus
+        []( const Gaudi::ParticleProperty* pp ) { return pp->pid().isNucleus(); },
+        // output
+        std::back_inserter( nuclea ) );
+    // print as the table
+    // header ?
+    log << MSG::INFO << " # Nuclea  = " << nuclea.size() << std::endl;
+    // content
+    Gaudi::ParticleProperties::printAsTable( nuclea, log, svc );
+    log << endmsg;
+  }
+
+  { // get all beauty baryons
+    PPs bbaryons;
+    svc->get(
+        // functor : beauty & baryon
+        []( const Gaudi::ParticleProperty* pp ) { return pp->pid().hasBottom() && pp->pid().isBaryon(); },
+        // output
+        std::back_inserter( bbaryons ) );
+    // print as the table
+    // header ?
+    log << MSG::INFO << " # Beauty Baryons  = " << bbaryons.size() << std::endl;
+    // content
+    Gaudi::ParticleProperties::printAsTable( bbaryons, log, svc );
+    log << endmsg;
+  }
+
+  return StatusCode::SUCCESS;
+}
+
+DECLARE_COMPONENT( Gaudi::Examples::PartPropAlg )
diff --git a/GaudiExamples/src/PartProp/PartPropAlg.h b/GaudiExamples/src/PartProp/PartPropAlg.h
new file mode 100644
index 0000000000000000000000000000000000000000..038e96ab9fffcfcba8a3d10e50aee39e10ef49e0
--- /dev/null
+++ b/GaudiExamples/src/PartProp/PartPropAlg.h
@@ -0,0 +1,44 @@
+/***********************************************************************************\
+* (c) Copyright 2023 CERN for the benefit of the LHCb and ATLAS collaborations      *
+*                                                                                   *
+* This software is distributed under the terms of the Apache version 2 licence,     *
+* copied verbatim in the file "LICENSE".                                            *
+*                                                                                   *
+* In applying this licence, CERN does not waive the privileges and immunities       *
+* granted to it by virtue of its status as an Intergovernmental Organization        *
+* or submit itself to any jurisdiction.                                             *
+\***********************************************************************************/
+#ifndef GAUDIEXAMPLES_PARTPROPALG_H
+#define GAUDIEXAMPLES_PARTPROPALG_H
+
+#include <Gaudi/Algorithm.h>
+
+#include "Gaudi/ParticleID.h"
+#include "Gaudi/ParticleProperty.h"
+#include <Gaudi/Interfaces/IParticlePropertySvc.h>
+
+namespace Gaudi {
+  namespace Examples {
+    /** @class PartPropAlg
+     * @brief  an algorithm to test the particle property service
+     * @author Graeme Stewart
+     * @author author Vanya Belyaev
+     */
+    class PartPropAlg : public Gaudi::Algorithm {
+
+    public:
+      PartPropAlg( const std::string& name, ISvcLocator* pSvcLocator );
+      StatusCode initialize() override;
+      StatusCode execute( const EventContext& ctx ) const override;
+      StatusCode finalize() override;
+
+      const Gaudi::Interfaces::IParticlePropertySvc* ppSvc() const;
+
+    private:
+      // the pointer to new particle property service
+      mutable SmartIF<Gaudi::Interfaces::IParticlePropertySvc> m_ppSvc; // new part.property.svc
+    };
+  } // namespace Examples
+} // namespace Gaudi
+
+#endif // GAUDIEXAMPLES_PARTPROPALG_H
diff --git a/GaudiExamples/tests/data/ParticleTable.txt b/GaudiExamples/tests/data/ParticleTable.txt
index e35a084ed85a04fb27569cfe4473252677f63ef3..1db00136629a4f760fad3ee20a965e1a607fcd84 100644
--- a/GaudiExamples/tests/data/ParticleTable.txt
+++ b/GaudiExamples/tests/data/ParticleTable.txt
@@ -1,25 +1,986 @@
-#
-# Example of a file containing particle properties for ParticlePropertySvc,
-# EvtGen and Pythia.
+# ParticleTable.txt file containing particle
+# properties for ParticlePropertySvc, EvtGen and Pythia.
+# Uses PDG 2014 when available.
 #
 PARTICLE
 #
-#                    GEANTID    PDGID  CHARGE   MASS(GeV)      TLIFE(s)            EVTGENNAME    PYTHIAID    MAXWIDTH
+#                    GEANTID    PDGID  CHARGE   MASS(GeV)      TLIFE(s)                    EVTGENNAME    PYTHIAID    MAXWIDTH
 #
- gamma                 1          22  0.0   0.000000e+000   1.000000e+016                    gamma          22   0.000000e+000
- e+                    2         -11  1.0   5.109989e-004   1.000000e+016                       e+         -11   0.000000e+000
- e-                    3          11 -1.0   5.109989e-004   1.000000e+016                       e-          11   0.000000e+000
- nu                    4          12  0.0   0.000000e+000   1.000000e+016                     nu_e          12   0.000000e+000
- mu+                   5         -13  1.0        0.105658   2.197036e-006                      mu+         -13   0.000000e+000
- mu-                   6          13 -1.0        0.105658   2.197036e-006                      mu-          13   0.000000e+000
- pi0                   7         111  0.0        0.134977   8.438618e-017                      pi0         111   0.000000e+000
- pi+                   8         211  1.0        0.139570   2.603276e-008                      pi+         211   0.000000e+000
- pi-                   9        -211 -1.0        0.139570   2.603276e-008                      pi-        -211   0.000000e+000
- KL0                  10         130  0.0        0.497672   5.174624e-008                     K_L0         130   0.000000e+000
- K+                   11         321  1.0        0.493677   1.238405e-008                       K+         321   0.000000e+000
- K-                   12        -321 -1.0        0.493677   1.238405e-008                       K-        -321   0.000000e+000
- n0                   13        2112  0.0        0.939565      885.646128                       n0        2112   0.000000e+000
- p+                   14        2212  1.0        0.938272   1.000000e+016                       p+        2212   0.000000e+000
- p~-                  15       -2212 -1.0        0.938272   1.000000e+016                  anti-p-       -2212   0.000000e+000
+ gamma                   1          22   0.0      0.00000000      1.000000e+16                     gamma          22      0.00000000
+ W+                     53          24   1.0     80.37900000      3.156893e-25                        W+          24      0.00000000
+ W-                     54         -24  -1.0     80.37900000      3.156893e-25                        W-         -24      0.00000000
+ Z0                     55          23   0.0     91.18760000      2.637914e-25                        Z0          23      0.00000000
+ e+                      2         -11   1.0      0.00051100      1.000000e+16                        e+         -11      0.00000000
+ e-                      3          11  -1.0      0.00051100      1.000000e+16                        e-          11      0.00000000
+ nu_e                    4          12   0.0      0.00000000      1.000000e+16                      nu_e          12      0.00000000
+ nu_e~                 302         -12   0.0      0.00000000      1.000000e+16                 anti-nu_e         -12      0.00000000
+ mu+                     5         -13   1.0      0.10565837      2.196981e-06                       mu+         -13      0.00000000
+ mu-                     6          13  -1.0      0.10565837      2.196981e-06                       mu-          13      0.00000000
+ nu_mu                 300          14   0.0      0.00000000      1.000000e+16                     nu_mu          14      0.00000000
+ nu_mu~                301         -14   0.0      0.00000000      1.000000e+16                anti-nu_mu         -14      0.00000000
+ tau+                   51         -15   1.0      1.77686000      2.903449e-13                      tau+         -15      0.00000000
+ tau-                   52          15  -1.0      1.77686000      2.903449e-13                      tau-          15      0.00000000
+ pi0                     7         111   0.0      0.13497700      8.520000e-17                       pi0         111      0.00000000
+ pi+                     8         211   1.0      0.13957061      2.603300e-08                       pi+         211      0.00000000
+ pi-                     9        -211  -1.0      0.13957061      2.603300e-08                       pi-        -211      0.00000000
+ eta                    17         221   0.0      0.54786200      5.063171e-19                       eta         221      0.00000000
+ rho(770)0              33         113   0.0      0.77526000      4.414569e-24                      rho0         113      0.00000000
+ rho(770)+              34         213   1.0      0.77526000      4.414569e-24                      rho+         213      0.00000000
+ rho(770)-              35        -213  -1.0      0.77526000      4.414569e-24                      rho-        -213      0.00000000
+ omega(782)             36         223   0.0      0.78265000      7.752794e-23                     omega         223      0.00000000
+ eta_prime             127         331   0.0      0.95778000      3.358224e-21                      eta'         331      0.00000000
+ sigma_0               850     9000221   0.0      0.47500000      1.196749e-24                   sigma_0           0      0.00000000
+ f_0(980)              596     9010221   0.0      0.99000000      1.097020e-23                       f_0       10221      0.00000000
+ a_0(980)0             132     9000111   0.0      0.98000000      8.776163e-24                      a_00       10111      0.00000000
+ a_0(980)+             133     9000211   1.0      0.98000000      8.776163e-24                      a_0+       10211      0.00000000
+ a_0(980)-             134    -9000211  -1.0      0.98000000      8.776163e-24                      a_0-      -10211      0.00000000
+ phi(1020)              37         333   0.0      1.01946100      1.549099e-22                       phi         333      0.00000000
+ h_1(1170)             597       10223   0.0      1.17000000      1.828367e-24                       h_1       10223      0.00000000
+ b_1(1235)0            588       10113   0.0      1.22950000      4.635297e-24                      b_10       10113      0.00000000
+ b_1(1235)+            592       10213   1.0      1.22950000      4.635297e-24                      b_1+       10213      0.00000000
+ b_1(1235)-            593      -10213  -1.0      1.22950000      4.635297e-24                      b_1-      -10213      0.00000000
+ a_1(1260)0            135       20113   0.0      1.23000000      1.567172e-24                      a_10       20113      0.00000000
+ a_1(1260)+             42       20213   1.0      1.23000000      1.567172e-24                      a_1+       20213      0.00000000
+ a_1(1260)-             43      -20213  -1.0      1.23000000      1.567172e-24                      a_1-      -20213      0.00000000
+ f_2(1270)             367         225   0.0      1.27550000      3.555982e-24                       f_2         225      0.00000000
+ f_1(1285)             687       20223   0.0      1.28190000      2.899612e-23                       f_1       20223      0.00000000
+ eta(1295)             811      100221   0.0      1.29400000      1.196749e-23                   eta(2S)           0      0.00000000
+ pi(1300)0             805      100111   0.0      1.30000000      1.645530e-24                   pi(2S)0           0      0.00000000
+ pi(1300)+             807      100211   1.0      1.30000000      1.645530e-24                   pi(2S)+           0      0.00000000
+ pi(1300)-             808     -100211  -1.0      1.30000000      1.645530e-24                   pi(2S)-           0      0.00000000
+ a_2(1320)0            136         115   0.0      1.31690000      6.151516e-24                      a_20         115      0.00000000
+ a_2(1320)+            137         215   1.0      1.31690000      6.151516e-24                      a_2+         215      0.00000000
+ a_2(1320)-            138        -215  -1.0      1.31690000      6.151516e-24                      a_2-        -215      0.00000000
+ f_0(1370)             686       10221   0.0      1.35000000      1.880606e-24                      f'_0       10331      0.00000000
+ h_1(1380)             604       10333   0.0      1.41600000      7.313467e-24                      h'_1       10333      0.00000000
+ pi_1(1400)0          1021     9000113   0.0      1.35400000      1.994582e-24               pi_1(1400)0           0      0.00000000
+ pi_1(1400)+          1023     9000213   1.0      1.35400000      1.994582e-24               pi_1(1400)+           0      0.00000000
+ pi_1(1400)-          1024    -9000213  -1.0      1.35400000      1.994582e-24               pi_1(1400)-           0      0.00000000
+ eta(1405)0           1025     9020221   0.0      1.40880000      1.313796e-23                eta(1405)0           0      0.00000000
+ omega(1420)           812      100223   0.0      1.42500000      3.061452e-24                 omega(2S)           0      0.00000000
+ f_1(1420)             692       20333   0.0      1.42640000      1.198929e-23                      f'_1       20333      0.00000000
+ rho(1450)0            806      100113   0.0      1.46500000      1.645530e-24                  rho(2S)0           0      0.00000000
+ rho(1450)+            809      100213   1.0      1.46500000      1.645530e-24                  rho(2S)+           0      0.00000000
+ rho(1450)-            810     -100213  -1.0      1.46500000      1.645530e-24                  rho(2S)-           0      0.00000000
+ a_0(1450)0            587       10111   0.0      1.46700000      2.483820e-24                a_0(1450)0           0      0.00000000
+ a_0(1450)+            590       10211   1.0      1.46700000      2.483820e-24                a_0(1450)+           0      0.00000000
+ a_0(1450)-            591      -10211  -1.0      1.46700000      2.483820e-24                a_0(1450)-           0      0.00000000
+ eta(1475)             826      100331   0.0      1.47500000      7.743673e-24                 eta(1475)           0      0.00000000
+ f_0(1500)             855     9030221   0.0      1.50600000      6.038644e-24                 f_0(1500)           0      0.00000000
+ f'_2(1525)            380         335   0.0      1.52500000      9.016605e-24                      f'_2         335      0.00000000
+ pi_1(1600)0          1027     9010113   0.0      1.66000000      2.742551e-24               pi_1(1600)0           0      0.00000000
+ pi_1(1600)+          1029     9010213   1.0      1.66000000      2.742551e-24               pi_1(1600)+           0      0.00000000
+ pi_1(1600)-          1030    -9010213  -1.0      1.66000000      2.742551e-24               pi_1(1600)-           0      0.00000000
+ eta_2(1645)           598       10225   0.0      1.61700000      3.636531e-24               eta_2(1645)           0      0.00000000
+ omega(1650)           746       30223   0.0      1.67000000      2.089563e-24               omega(1650)           0      0.00000000
+ pi_2(1670)0           589       10115   0.0      1.67060000      2.551209e-24               pi_2(1670)0           0      0.00000000
+ pi_2(1670)+           594       10215   1.0      1.67060000      2.551209e-24               pi_2(1670)+           0      0.00000000
+ pi_2(1670)-           595      -10215  -1.0      1.67060000      2.551209e-24               pi_2(1670)-           0      0.00000000
+ omega_3(1670)         368         227   0.0      1.66700000      3.917930e-24             omega_3(1670)           0      0.00000000
+ phi(1680)             827      100333   0.0      1.68000000      4.388081e-24                 phi(1680)           0      0.00000000
+ rho_3(1690)0          361         117   0.0      1.68880000      4.088274e-24              rho_3(1690)0           0      0.00000000
+ rho_3(1690)+          363         217   1.0      1.68880000      4.088274e-24              rho_3(1690)+           0      0.00000000
+ rho_3(1690)-          364        -217  -1.0      1.68880000      4.088274e-24              rho_3(1690)-           0      0.00000000
+ rho(1700)0            743       30113   0.0      1.72000000      2.632849e-24                  rho(3S)0           0      0.00000000
+ rho(1700)+            744       30213   1.0      1.72000000      2.632849e-24                  rho(3S)+           0      0.00000000
+ rho(1700)-            745      -30213  -1.0      1.72000000      2.632849e-24                  rho(3S)-           0      0.00000000
+ f_0(1710)             603       10331   0.0      1.70400000      5.351317e-24                 f_0(1710)           0      0.00000000
+ pi(1800)0             840     9010111   0.0      1.81000000      3.164482e-24                 pi(1800)0           0      0.00000000
+ pi(1800)+             841     9010211   1.0      1.81000000      3.164482e-24                 pi(1800)+           0      0.00000000
+ pi(1800)-             842    -9010211  -1.0      1.81000000      3.164482e-24                 pi(1800)-           0      0.00000000
+ phi_3(1850)           381         337   0.0      1.85400000      7.565657e-24               phi_3(1850)           0      0.00000000
+ eta_2(1870)           605       10335   0.0      1.85400000      0.000000e+00               eta_2(1870)           0      0.00000000
+ f_2(1950)             813     9050225   0.0      1.93600000      1.418560e-24                 f_2(1950)           0      0.00000000
+ f_2(2010)             828     9060225   0.0      2.01000000      3.291061e-24                 f_2(2010)           0      0.00000000
+ a_4(2040)0            362         119   0.0      1.96700000      2.581224e-24                a_4(2040)0           0      0.00000000
+ a_4(2040)+            365         219   1.0      1.96700000      2.581224e-24                a_4(2040)+           0      0.00000000
+ a_4(2040)-            366        -219  -1.0      1.96700000      2.581224e-24                a_4(2040)-           0      0.00000000
+ f_4(2050)             369         229   0.0      2.01800000      2.777267e-24                 f_4(2050)           0      0.00000000
+ f_2(2300)             857     9080225   0.0      2.29700000      4.417530e-24                 f_2(2300)           0      0.00000000
+ f_2(2340)             858     9090225   0.0      2.35000000      2.063361e-24                 f_2(2340)           0      0.00000000
+ K0                    370         311   0.0      0.49761100      0.000000e+00                        K0         311      0.00000000
+ K~0                   371        -311   0.0      0.49761100      0.000000e+00                   anti-K0        -311      0.00000000
+ KS0                    16         310   0.0      0.49761100      8.956400e-11                      K_S0         310      0.00000000
+ KL0                    10         130   0.0      0.49761100      5.116000e-08                      K_L0         130      0.00000000
+ K+                     11         321   1.0      0.49367700      1.238000e-08                        K+         321      0.00000000
+ K-                     12        -321  -1.0      0.49367700      1.238000e-08                        K-        -321      0.00000000
+ K*(892)0               40         313   0.0      0.89555000      1.391569e-23                       K*0         313      0.00000000
+ K*(892)~0              41        -313   0.0      0.89555000      1.391569e-23                  anti-K*0        -313      0.00000000
+ K*(892)+               38         323   1.0      0.89166000      1.308573e-23                       K*+         323      0.00000000
+ K*(892)-               39        -323  -1.0      0.89166000      1.308573e-23                       K*-        -323      0.00000000
+ K_1(1270)0            141       10313   0.0      1.27200000      7.313469e-24                      K_10       10313      0.00000000
+ K_1(1270)~0           142      -10313   0.0      1.27200000      7.313469e-24                 anti-K_10      -10313      0.00000000
+ K_1(1270)+            139       10323   1.0      1.27200000      7.313469e-24                      K_1+       10323      0.00000000
+ K_1(1270)-            140      -10323  -1.0      1.27200000      7.313469e-24                      K_1-      -10323      0.00000000
+ K_1(1400)0            145       20313   0.0      1.40300000      3.782829e-24                     K'_10       20313      0.00000000
+ K_1(1400)~0           146      -20313   0.0      1.40300000      3.782829e-24                anti-K'_10      -20313      0.00000000
+ K_1(1400)+            143       20323   1.0      1.40300000      3.782829e-24                     K'_1+       20323      0.00000000
+ K_1(1400)-            144      -20323  -1.0      1.40300000      3.782829e-24                     K'_1-      -20323      0.00000000
+ K*(1410)0             816      100313   0.0      1.42100000      2.837122e-24                      K'*0           0      0.00000000
+ K*(1410)~0            817     -100313   0.0      1.42100000      2.837122e-24                 anti-K'*0           0      0.00000000
+ K*(1410)+             822      100323   1.0      1.42100000      2.837122e-24                      K'*+           0      0.00000000
+ K*(1410)-             823     -100323  -1.0      1.42100000      2.837122e-24                      K'*-           0      0.00000000
+ K*_0(1430)0           149       10311   0.0      1.43000000      2.437823e-24                     K_0*0       10311      0.00000000
+ K*_0(1430)~0          150      -10311   0.0      1.43000000      2.437823e-24                anti-K_0*0      -10311      0.00000000
+ K*_0(1430)+           147       10321   1.0      1.43000000      2.437823e-24                     K_0*+       10321      0.00000000
+ K*_0(1430)-           148      -10321  -1.0      1.43000000      2.437823e-24                     K_0*-      -10321      0.00000000
+ K*_2(1430)0           153         315   0.0      1.43240000      6.038644e-24                     K_2*0         315      0.00000000
+ K*_2(1430)~0          154        -315   0.0      1.43240000      6.038644e-24                anti-K_2*0        -315      0.00000000
+ K*_2(1430)+           151         325   1.0      1.42560000      6.682357e-24                     K_2*+         325      0.00000000
+ K*_2(1430)-           152        -325  -1.0      1.42560000      6.682357e-24                     K_2*-        -325      0.00000000
+ K(1460)0              814      100311   0.0      1.43240000      0.000000e+00                  K(1460)0           0      0.00000000
+ K(1460)~0             815     -100311   0.0      1.43240000      0.000000e+00             anti-K(1460)0           0      0.00000000
+ K(1460)+              820      100321   1.0      1.43240000      0.000000e+00                  K(1460)+           0      0.00000000
+ K(1460)-              821     -100321  -1.0      1.43240000      0.000000e+00                  K(1460)-           0      0.00000000
+ K*(1680)0             747       30313   0.0      1.71800000      2.056913e-24                     K''*0           0      0.00000000
+ K*(1680)~0            748      -30313   0.0      1.71800000      2.056913e-24                anti-K''*0           0      0.00000000
+ K*(1680)+             749       30323   1.0      1.71800000      2.056913e-24                     K''*+           0      0.00000000
+ K*(1680)-             750      -30323  -1.0      1.71800000      2.056913e-24                     K''*-           0      0.00000000
+ K_2(1770)0            599       10315   0.0      1.77300000      3.538775e-24                K_2(1770)0           0      0.00000000
+ K_2(1770)~0           600      -10315   0.0      1.77300000      3.538775e-24           anti-K_2(1770)0           0      0.00000000
+ K_2(1770)+            601       10325   1.0      1.77300000      3.538775e-24                K_2(1770)+           0      0.00000000
+ K_2(1770)-            602      -10325  -1.0      1.77300000      3.538775e-24                K_2(1770)-           0      0.00000000
+ K*_3(1780)0           372         317   0.0      1.77600000      4.139699e-24                     K_3*0           0      0.00000000
+ K*_3(1780)~0          373        -317   0.0      1.77600000      4.139699e-24                anti-K_3*0           0      0.00000000
+ K*_3(1780)+           376         327   1.0      1.77600000      4.139699e-24                     K_3*+           0      0.00000000
+ K*_3(1780)-           377        -327  -1.0      1.77600000      4.139699e-24                     K_3*-           0      0.00000000
+ K_2(1820)0            688       20315   0.0      1.81900000      2.493227e-24                K_2(1820)0           0      0.00000000
+ K_2(1820)~0           689      -20315   0.0      1.81900000      2.493227e-24           anti-K_2(1820)0           0      0.00000000
+ K_2(1820)+            690       20325   1.0      1.81900000      2.493227e-24                K_2(1820)+           0      0.00000000
+ K_2(1820)-            691      -20325  -1.0      1.81900000      2.493227e-24                K_2(1820)-           0      0.00000000
+ K*_2(1980)0           818      100315   0.0      1.97300000      0.000000e+00               K*_2(1980)0           0      0.00000000
+ K*_2(1980)~0          819     -100315   0.0      1.97300000      0.000000e+00          anti-K*_2(1980)0           0      0.00000000
+ K*_2(1980)+           824      100325   1.0      1.97300000      0.000000e+00               K*_2(1980)+           0      0.00000000
+ K*_2(1980)-           825     -100325  -1.0      1.97300000      0.000000e+00               K*_2(1980)-           0      0.00000000
+ K*_4(2045)0           374         319   0.0      2.04500000      3.324304e-24                     K_4*0           0      0.00000000
+ K*_4(2045)~0          375        -319   0.0      2.04500000      3.324304e-24                anti-K_4*0           0      0.00000000
+ K*_4(2045)+           378         329   1.0      2.04500000      3.324304e-24                     K_4*+           0      0.00000000
+ K*_4(2045)-           379        -329  -1.0      2.04500000      3.324304e-24                     K_4*-           0      0.00000000
+ D0                     58         421   0.0      1.86483000      4.101000e-13                        D0         421      0.00000000
+ D~0                    59        -421   0.0      1.86483000      4.101000e-13                   anti-D0        -421      0.00000000
+ D+                     56         411   1.0      1.86965000      1.040000e-12                        D+         411      0.00000000
+ D-                     57        -411  -1.0      1.86965000      1.040000e-12                        D-        -411      0.00000000
+ D*(2007)0              67         423   0.0      2.00685000      1.000003e-19                       D*0         423      0.00000000
+ D*(2007)~0             68        -423   0.0      2.00685000      1.000003e-19                  anti-D*0        -423      0.00000000
+ D*(2010)+              65         413   1.0      2.01026000      7.892230e-21                       D*+         413      0.00000000
+ D*(2010)-              66        -413  -1.0      2.01026000      7.892230e-21                       D*-        -413      0.00000000
+ D*_0+                 155       10411   1.0      2.34900000      2.978335e-24                     D_0*+       10411      0.00000000
+ D*_0-                 159      -10411  -1.0      2.34900000      2.978335e-24                     D_0*-      -10411      0.00000000
+ D*_00                 163       10421   0.0      2.30000000      2.402234e-24                     D_0*0       10421      0.00000000
+ D*_0~0                167      -10421   0.0      2.30000000      2.402234e-24                anti-D_0*0      -10421      0.00000000
+ D_1(H)0               164       20423   0.0      2.44500000      2.630000e-24                     D'_10       20423      0.00000000
+ D_1(H)~0              168      -20423   0.0      2.44500000      2.630000e-24                anti-D'_10      -20423      0.00000000
+ D_1(H)+               156       20413   1.0      2.44500000      2.630000e-24                     D'_1+       20413      0.00000000
+ D_1(H)-               160      -20413  -1.0      2.44500000      2.630000e-24                     D'_1-      -20413      0.00000000
+ D_1(2420)0            165       10423   0.0      2.42080000      2.428827e-23                      D_10       10423      0.00000000
+ D_1(2420)~0           169      -10423   0.0      2.42080000      2.428827e-23                 anti-D_10      -10423      0.00000000
+ D_1(2420)+            157       10413   1.0      2.42300000      3.290000e-23                      D_1+       10413      0.00000000
+ D_1(2420)-            161      -10413  -1.0      2.42300000      3.290000e-23                      D_1-      -10413      0.00000000
+ D*_2(2460)0           170         425   0.0      2.46070000      1.385709e-23                     D_2*0         425      0.00000000
+ D*_2(2460)~0          166        -425   0.0      2.46070000      1.385709e-23                anti-D_2*0        -425      0.00000000
+ D*_2(2460)+           162         415   1.0      2.46540000      1.778952e-23                     D_2*+         415      0.00000000
+ D*_2(2460)-           158        -415  -1.0      2.46540000      1.778952e-23                     D_2*-        -415      0.00000000
+ D(2S)0                761      100421   0.0      2.58000000      0.000000e+00                    D(2S)0           0      0.00000000
+ D(2S)~0               762     -100421   0.0      2.58000000      0.000000e+00               anti-D(2S)0           0      0.00000000
+ D(2S)+                757      100411   1.0      2.58000000      0.000000e+00                    D(2S)+           0      0.00000000
+ D(2S)-                758     -100411  -1.0      2.58000000      0.000000e+00                    D(2S)-           0      0.00000000
+ D*(2640)0             763      100423   0.0      2.64000000      0.000000e+00                   D*(2S)0           0      0.00000000
+ D*(2640)~0            764     -100423   0.0      2.64000000      0.000000e+00              anti-D*(2S)0           0      0.00000000
+ D*(2640)+             759      100413   1.0      2.64000000      0.000000e+00                   D*(2S)+           0      0.00000000
+ D*(2640)-             760     -100413  -1.0      2.64000000      0.000000e+00                   D*(2S)-           0      0.00000000
+ D_s+                   60         431   1.0      1.96834000      5.043770e-13                      D_s+         431      0.00000000
+ D_s-                   61        -431  -1.0      1.96834000      5.043770e-13                      D_s-        -431      0.00000000
+ D*_s+                  69         433   1.0      2.11220000      1.000003e-19                     D_s*+         433      0.00000000
+ D*_s-                  70        -433  -1.0      2.11220000      1.000003e-19                     D_s*-        -433      0.00000000
+ D*_s0+                171       10431   1.0      2.31780000      6.582100e-22                    D_s0*+       10431      0.00000000
+ D*_s0-                175      -10431  -1.0      2.31780000      6.582100e-22                    D_s0*-      -10431      0.00000000
+ D_s1(2460)+           172       20433   1.0      2.45950000      6.582100e-22                     D_s1+       20433      0.00000000
+ D_s1(2460)-           176      -20433  -1.0      2.45950000      6.582100e-22                     D_s1-      -20433      0.00000000
+ D_s1(2536)+           173       10433   1.0      2.53511000      7.154480e-22                    D'_s1+       10433      0.00000000
+ D_s1(2536)-           177      -10433  -1.0      2.53511000      7.154480e-22                    D'_s1-      -10433      0.00000000
+ D*_s2+                174         435   1.0      2.56910000      3.894746e-23                    D_s2*+         435      0.00000000
+ D*_s2-                178        -435  -1.0      2.56910000      3.894746e-23                    D_s2*-        -435      0.00000000
+ B0                     73         511   0.0      5.27964000      1.520120e-12                        B0         511      0.00000000
+ B~0                    74        -511   0.0      5.27964000      1.520120e-12                   anti-B0        -511      0.00000000
+ B0H                 99998         510   0.0      5.27958000      1.519000e-12                       B0H           0      0.00000000
+ B0L                 99999         150   0.0      5.27958000      1.519000e-12                       B0L           0      0.00000000
+ B+                     71         521   1.0      5.27933000      1.638158e-12                        B+         521      0.00000000
+ B-                     72        -521  -1.0      5.27933000      1.638158e-12                        B-        -521      0.00000000
+ B*0                   189         513   0.0      5.32470000      1.000019e-19                       B*0         513      0.00000000
+ B*~0                  190        -513   0.0      5.32470000      1.000019e-19                  anti-B*0        -513      0.00000000
+ B*-                   187        -523  -1.0      5.32470000      1.000019e-19                       B*-        -523      0.00000000
+ B*+                   188         523   1.0      5.32470000      1.000019e-19                       B*+         523      0.00000000
+ B*_00                 201       10511   0.0      5.73800000      4.390000e-24                     B_0*0       10511      0.00000000
+ B*_0~0                205      -10511   0.0      5.73800000      4.390000e-24                anti-B_0*0      -10511      0.00000000
+ B*_0+                 193       10521   1.0      5.73800000      4.390000e-24                     B_0*+       10521      0.00000000
+ B*_0-                 197      -10521  -1.0      5.73800000      4.390000e-24                     B_0*-      -10521      0.00000000
+ B_1(H)0               202       20513   0.0      5.75700000      2.630000e-24                     B'_10       20513      0.00000000
+ B_1(H)~0              206      -20513   0.0      5.75700000      2.630000e-24                anti-B'_10      -20513      0.00000000
+ B_1(H)+               194       20523   1.0      5.75700000      2.630000e-24                     B'_1+       20523      0.00000000
+ B_1(H)-               198      -20523  -1.0      5.75700000      2.630000e-24                     B'_1-      -20523      0.00000000
+ B_1(L)0               203       10513   0.0      5.72610000      3.134000e-23                      B_10       10513      0.00000000
+ B_1(L)~0              207      -10513   0.0      5.72610000      3.134000e-23                 anti-B_10      -10513      0.00000000
+ B_1(L)+               195       10523   1.0      5.72590000      3.134000e-23                      B_1+       10523      0.00000000
+ B_1(L)-               199      -10523  -1.0      5.72590000      3.134000e-23                      B_1-      -10523      0.00000000
+ B*_20                 204         515   0.0      5.73950000      2.861792e-23                     B_2*0         515      0.00000000
+ B*_2~0                208        -515   0.0      5.73950000      2.861792e-23                anti-B_2*0        -515      0.00000000
+ B*_2+                 196         525   1.0      5.73720000      3.291060e-23                     B_2*+         525      0.00000000
+ B*_2-                 200        -525  -1.0      5.73720000      3.291060e-23                     B_2*-        -525      0.00000000
+ B_s0                   75         531   0.0      5.36688000      1.512000e-12                      B_s0         531      0.00000000
+ B_s~0                  76        -531   0.0      5.36688000      1.512000e-12                 anti-B_s0        -531      0.00000000
+ B_s0H               99996         530   0.0      5.36677000      1.661000e-12                     B_s0H           0      0.00000000
+ B_s0L               99997         350   0.0      5.36677000      1.405000e-12                     B_s0L           0      0.00000000
+ B*_s0                 191         533   0.0      5.41540000      1.000000e-19                     B_s*0         533      0.00000000
+ B*_s~0                192        -533   0.0      5.41540000      1.000000e-19                anti-B_s*0        -533      0.00000000
+ B*_s00                209       10531   0.0      5.84100000      4.390000e-24                    B_s0*0       10531      0.00000000
+ B*_s0~0               213      -10531   0.0      5.84100000      4.390000e-24               anti-B_s0*0      -10531      0.00000000
+ B_s1(H)0              210       20533   0.0      5.85900000      2.630000e-24                    B'_s10       20533      0.00000000
+ B_s1(H)~0             214      -20533   0.0      5.85900000      2.630000e-24               anti-B'_s10      -20533      0.00000000
+ B_s1(L)0              211       10533   0.0      5.82870000      1.316424e-21                     B_s10       10533      0.00000000
+ B_s1(L)~0             215      -10533   0.0      5.82870000      1.316424e-21                anti-B_s10      -10533      0.00000000
+ B*_s20                212         535   0.0      5.83985000      4.477633e-22                    B_s2*0         535      0.00000000
+ B*_s2~0               216        -535   0.0      5.83985000      4.477633e-22               anti-B_s2*0        -535      0.00000000
+ B_c+                   77         541   1.0      6.27447000      5.070971e-13                      B_c+         541      0.00000000
+ B_c-                   78        -541  -1.0      6.27447000      5.070971e-13                      B_c-        -541      0.00000000
+ B_c*+                 382         543   1.0      6.33330000      0.000000e+00                     B_c*+         543      0.00000000
+ B_c*-                 383        -543  -1.0      6.33330000      0.000000e+00                     B_c*-        -543      0.00000000
+ B_c0*+                607       10541   1.0      6.70600000      0.000000e+00                    B_c0*+       10541      0.00000000
+ B_c0*-                608      -10541  -1.0      6.70600000      0.000000e+00                    B_c0*-      -10541      0.00000000
+ B_c1(L)+              609       10543   1.0      6.74100000      0.000000e+00                     B_c1+       10543      0.00000000
+ B_c1(L)-              610      -10543  -1.0      6.74100000      0.000000e+00                     B_c1-      -10543      0.00000000
+ B_c1(H)+              693       20543   1.0      6.75000000      0.000000e+00                    B'_c1+       20543      0.00000000
+ B_c1(H)-              694      -20543  -1.0      6.75000000      0.000000e+00                    B'_c1-      -20543      0.00000000
+ B_c2*+                384         545   1.0      6.76800000      0.000000e+00                    B_c2*+         545      0.00000000
+ B_c2*-                385        -545  -1.0      6.76800000      0.000000e+00                    B_c2*-        -545      0.00000000
+ B_c(2S)+           100541      100541   1.0      6.87210000      0.000000e+00                  B_c(2S)+      100541      0.00000000
+ B_c(2S)-           100542     -100541  -1.0      6.87210000      0.000000e+00                  B_c(2S)-     -100541      0.00000000
+ B_c*(2S)+          100543      100543   1.0      6.90000000      0.000000e+00                 B_c*(2S)+      100543      0.00000000
+ B_c*(2S)-          100544     -100543  -1.0      6.90000000      0.000000e+00                 B_c*(2S)-     -100543      0.00000000
+ eta_c(1S)             128         441   0.0      2.98390000      2.216203e-23                     eta_c         441      0.00000000
+ J/psi(1S)              64         443   0.0      3.09690000      7.085169e-21                     J/psi         443      0.00000000
+ chi_c0(1P)            129       10441   0.0      3.41471000      6.328963e-23                    chi_c0       10441      0.00000000
+ chi_c1(1P)            130       20443   0.0      3.51067000      7.835857e-22                    chi_c1       20443      0.00000000
+ h_c(1P)               606       10443   0.0      3.52538000      9.403029e-22                       h_c       10443      0.00000000
+ chi_c2(1P)            131         445   0.0      3.55617000      3.410425e-22                    chi_c2         445      0.00000000
+ eta_c(2S)             829      100441   0.0      3.63750000      6.582122e-23                 eta_c(2S)      100441      0.00000000
+ psi(2S)               126      100443   0.0      3.68609700      2.238816e-21                   psi(2S)      100443      0.00000000
+ psi(3770)             765       30443   0.0      3.77313000      2.419898e-23                 psi(3770)       30443      0.00000000
+ chi_c2(2P)           1031      100445   0.0      3.92720000      2.742551e-23                chi_c2(2P)           0      0.00000000
+ psi(4040)             851     9000443   0.0      4.03900000      8.227652e-24                 psi(4040)           0      0.00000000
+ psi(4160)             853     9010443   0.0      4.19100000      9.403029e-24                 psi(4160)           0      0.00000000
+ psi(4415)             856     9020443   0.0      4.42100000      1.061633e-23                 psi(4415)           0      0.00000000
+ X_1(3872)            1016     9920443   0.0      3.87169000      2.076340e-21                 X_1(3872)     9920443      0.00000000
+ X_2(3872)            1017     9910445   0.0      3.87169000      2.076340e-21                 X_2(3872)     9910445      0.00000000
+ Z(4430)+             1018     9042413   1.0      4.47800000      3.630504e-24                  Z(4430)+     9042413      0.00000000
+ Z(4430)-             1019    -9042413  -1.0      4.47800000      3.630504e-24                  Z(4430)-    -9042413      0.00000000
+ eta_b(1S)             386         551   0.0      9.39870000      6.582120e-23                     eta_b         551      0.00000000
+ eta_b(2S)             830      100551   0.0      9.99700000      0.000000e+00                 eta_b(2S)           0      0.00000000
+ eta_b(3S)             843      200551   0.0     10.33500000      0.000000e+00                 eta_b(3S)           0      0.00000000
+ eta_b2(1D)            613       10555   0.0     10.15700000      0.000000e+00                eta_b2(1D)       10555      0.00000000
+ eta_b2(2D)            836      110555   0.0     10.44100000      0.000000e+00                eta_b2(2D)      110555      0.00000000
+ Upsilon(1S)           387         553   0.0      9.46030000      1.218911e-20                   Upsilon         553      0.00000000
+ Upsilon(2S)           831      100553   0.0     10.02326000      2.058199e-20               Upsilon(2S)      100553      0.00000000
+ Upsilon(3S)           844      200553   0.0     10.35520000      3.242425e-20               Upsilon(3S)      200553      0.00000000
+ Upsilon_1(1D)         766       30553   0.0     10.16370000      0.000000e+00             Upsilon_1(1D)       30553      0.00000000
+ Upsilon_1(2D)         839      130553   0.0     10.43490000      0.000000e+00             Upsilon_1(2D)      130553      0.00000000
+ Upsilon_2(1D)         696       20555   0.0     10.15620000      0.000000e+00             Upsilon_2(1D)       20555      0.00000000
+ Upsilon_2(2D)         838      120555   0.0     10.44060000      0.000000e+00             Upsilon_2(2D)      120555      0.00000000
+ Upsilon_3(1D)         389         557   0.0     10.15990000      0.000000e+00             Upsilon_3(1D)         557      0.00000000
+ Upsilon_3(2D)         833      100557   0.0     10.44430000      0.000000e+00             Upsilon_3(2D)      100557      0.00000000
+ Upsilon(4S)           849      300553   0.0     10.57940000      3.210791e-23               Upsilon(4S)      300553      0.00000000
+ Upsilon(10860)        852     9000553   0.0     10.88990000      1.290612e-23               Upsilon(5S)           0      0.00000000
+ Upsilon(11020)        854     9010553   0.0     10.99290000      1.343290e-23            Upsilon(11020)           0      0.00000000
+ chi_b0(1P)            611       10551   0.0      9.85940000      0.000000e+00                    chi_b0       10551      0.00000000
+ chi_b0(2P)            834      110551   0.0     10.23250000      0.000000e+00                chi_b0(2P)      110551      0.00000000
+ chi_b0(3P)            846      210551   0.0     10.50040000      0.000000e+00                chi_b0(3P)      210551      0.00000000
+ chi_b1(3P)            848      220553   0.0     10.51210000      0.000000e+00                chi_b1(3P)      220553      0.00000000
+ chi_b1(1P)            695       20553   0.0      9.89287800      0.000000e+00                    chi_b1       20553      0.00000000
+ chi_b1(2P)            837      120553   0.0     10.25546000      0.000000e+00                chi_b1(2P)      120553      0.00000000
+ chi_b2(1P)            388         555   0.0      9.91221000      0.000000e+00                    chi_b2         555      0.00000000
+ chi_b2(2P)            832      100555   0.0     10.26865000      0.000000e+00                chi_b2(2P)      100555      0.00000000
+ chi_b2(3P)            845      200555   0.0     10.52620000      0.000000e+00                chi_b2(3P)      200555      0.00000000
+ h_b(1P)               612       10553   0.0      9.89930000      0.000000e+00                       h_b       10553      0.00000000
+ h_b(2P)               835      110553   0.0     10.25500000      0.000000e+00                   h_b(2P)      110553      0.00000000
+ h_b(3P)               847      210553   0.0     10.51600000      0.000000e+00                   h_b(3P)      210553      0.00000000
+ n0                     13        2112   0.0      0.93956541      8.803000e+02                        n0        2112      0.00000000
+ n~0                    25       -2112   0.0      0.93956541      8.803000e+02                   anti-n0       -2112      0.00000000
+ p+                     14        2212   1.0      0.93827208      1.000000e+16                        p+        2212      0.00000000
+ p~-                    15       -2212  -1.0      0.93827208      1.000000e+16                   anti-p-       -2212      0.00000000
+ N(1440)0              624       12112   0.0      1.44000000      2.194041e-24                  N(1440)0           0      0.00000000
+ N(1440)~0             625      -12112   0.0      1.44000000      2.194041e-24             anti-N(1440)0           0      0.00000000
+ N(1440)+              636       12212   1.0      1.44000000      2.194041e-24                  N(1440)+           0      0.00000000
+ N(1440)~-             637      -12212  -1.0      1.44000000      2.194041e-24             anti-N(1440)-           0      0.00000000
+ N(1520)0              404        1214   0.0      1.51500000      5.983745e-24                  N(1520)0           0      0.00000000
+ N(1520)~0             405       -1214   0.0      1.51500000      5.983745e-24             anti-N(1520)0           0      0.00000000
+ N(1520)+              420        2124   1.0      1.51500000      5.983745e-24                  N(1520)+           0      0.00000000
+ N(1520)~-             421       -2124  -1.0      1.51500000      5.983745e-24             anti-N(1520)-           0      0.00000000
+ N(1535)0              705       22112   0.0      1.53000000      4.388081e-24                  N(1535)0           0      0.00000000
+ N(1535)~0             706      -22112   0.0      1.53000000      4.388081e-24             anti-N(1535)0           0      0.00000000
+ N(1535)+              713       22212   1.0      1.53000000      4.388081e-24                  N(1535)+           0      0.00000000
+ N(1535)~-             714      -22212  -1.0      1.53000000      4.388081e-24             anti-N(1535)-           0      0.00000000
+ N(1650)0              771       32112   0.0      1.65000000      5.265696e-24                  N(1650)0           0      0.00000000
+ N(1650)~0             772      -32112   0.0      1.65000000      5.265696e-24             anti-N(1650)0           0      0.00000000
+ N(1650)+              777       32212   1.0      1.65000000      5.265696e-24                  N(1650)+           0      0.00000000
+ N(1650)~-             778      -32212  -1.0      1.65000000      5.265696e-24             anti-N(1650)-           0      0.00000000
+ N(1675)0              414        2116   0.0      1.67500000      4.539393e-24                  N(1675)0           0      0.00000000
+ N(1675)~0             415       -2116   0.0      1.67500000      4.539393e-24             anti-N(1675)0           0      0.00000000
+ N(1675)+              428        2216   1.0      1.67500000      4.539393e-24                  N(1675)+           0      0.00000000
+ N(1675)~-             429       -2216  -1.0      1.67500000      4.539393e-24             anti-N(1675)-           0      0.00000000
+ N(1680)0              628       12116   0.0      1.68500000      5.485100e-24                  N(1680)0           0      0.00000000
+ N(1680)~0             629      -12116   0.0      1.68500000      5.485100e-24             anti-N(1680)0           0      0.00000000
+ N(1680)+              640       12216   1.0      1.68500000      5.485100e-24                  N(1680)+           0      0.00000000
+ N(1680)~-             641      -12216  -1.0      1.68500000      5.485100e-24             anti-N(1680)-           0      0.00000000
+ N(1700)+              711       22124   1.0      1.72000000      4.388081e-24                  N(1700)+           0      0.00000000
+ N(1700)~-             712      -22124  -1.0      1.72000000      4.388081e-24             anti-N(1700)-           0      0.00000000
+ N(1700)0              703       21214   0.0      1.72000000      4.388081e-24                  N(1700)0           0      0.00000000
+ N(1700)~0             704      -21214   0.0      1.72000000      4.388081e-24             anti-N(1700)0           0      0.00000000
+ N(1710)0              791       42112   0.0      1.71000000      6.582122e-24                  N(1710)0           0      0.00000000
+ N(1710)~0             792      -42112   0.0      1.71000000      6.582122e-24             anti-N(1710)0           0      0.00000000
+ N(1710)+              795       42212   1.0      1.71000000      6.582122e-24                  N(1710)+           0      0.00000000
+ N(1710)~-             796      -42212  -1.0      1.71000000      6.582122e-24             anti-N(1710)-           0      0.00000000
+ N(1720)0              769       31214   0.0      1.72000000      2.632849e-24                  N(1720)0           0      0.00000000
+ N(1720)~0             770      -31214   0.0      1.72000000      2.632849e-24             anti-N(1720)0           0      0.00000000
+ N(1720)+              775       32124   1.0      1.72000000      2.632849e-24                  N(1720)+           0      0.00000000
+ N(1720)~-             776      -32124  -1.0      1.72000000      2.632849e-24             anti-N(1720)-           0      0.00000000
+ N(1900)0              789       41214   0.0      1.89500000      5.476011e-24                  N(1900)0           0      0.00000000
+ N(1900)~0             790      -41214   0.0      1.89500000      5.476011e-24             anti-N(1900)0           0      0.00000000
+ N(1900)+              793       42124   1.0      1.89500000      5.476011e-24                  N(1900)+           0      0.00000000
+ N(1900)~-             794      -42124  -1.0      1.89500000      5.476011e-24             anti-N(1900)-           0      0.00000000
+ N(1990)0              630       12118   0.0      1.95000000      0.000000e+00                  N(1990)0           0      0.00000000
+ N(1990)~0             631      -12118   0.0      1.95000000      0.000000e+00             anti-N(1990)0           0      0.00000000
+ N(1990)+              642       12218   1.0      1.95000000      0.000000e+00                  N(1990)+           0      0.00000000
+ N(1990)~-             643      -12218  -1.0      1.95000000      0.000000e+00             anti-N(1990)-           0      0.00000000
+ N(2090)0              799       52114   0.0      2.00000000      0.000000e+00                  N(2090)0           0      0.00000000
+ N(2090)~0             800      -52114   0.0      2.00000000      0.000000e+00             anti-N(2090)0           0      0.00000000
+ N(2090)+              801       52214   1.0      2.00000000      0.000000e+00                  N(2090)+           0      0.00000000
+ N(2090)~-             802      -52214  -1.0      2.00000000      0.000000e+00             anti-N(2090)-           0      0.00000000
+ N(2190)0              408        1218   0.0      2.18000000      1.645530e-24                  N(2190)0           0      0.00000000
+ N(2190)~0             409       -1218   0.0      2.18000000      1.645530e-24             anti-N(2190)0           0      0.00000000
+ N(2190)+              424        2128   1.0      2.18000000      1.645530e-24                  N(2190)+           0      0.00000000
+ N(2190)~-             425       -2128  -1.0      2.18000000      1.645530e-24             anti-N(2190)-           0      0.00000000
+ Delta-                182        1114  -1.0      1.23200000      5.625745e-24                    Delta-        1114      0.00000000
+ Delta~+               186       -1114   1.0      1.23200000      5.625745e-24               anti-Delta+       -1114      0.00000000
+ Delta0                181        2114   0.0      1.23200000      5.625745e-24                    Delta0        2114      0.00000000
+ Delta~0               185       -2114   0.0      1.23200000      5.625745e-24               anti-Delta0       -2114      0.00000000
+ Delta+                180        2214   1.0      1.23200000      5.625745e-24                    Delta+        2214      0.00000000
+ Delta~-               184       -2214  -1.0      1.23200000      5.625745e-24               anti-Delta-       -2214      0.00000000
+ Delta++               179        2224   2.0      1.23200000      5.625745e-24                   Delta++        2224      0.00000000
+ Delta~--              183       -2224  -2.0      1.23200000      5.625745e-24              anti-Delta--       -2224      0.00000000
+ Delta(1600)-          767       31114  -1.0      1.57000000      2.632848e-24              Delta(1600)-           0      0.00000000
+ Delta(1600)~+         768      -31114   1.0      1.57000000      2.632848e-24         anti-Delta(1600)+           0      0.00000000
+ Delta(1600)0          773       32114   0.0      1.57000000      2.632848e-24              Delta(1600)0           0      0.00000000
+ Delta(1600)~0         774      -32114   0.0      1.57000000      2.632848e-24         anti-Delta(1600)0           0      0.00000000
+ Delta(1600)+          779       32214   1.0      1.57000000      2.632848e-24              Delta(1600)+           0      0.00000000
+ Delta(1600)~-         780      -32214  -1.0      1.57000000      2.632848e-24         anti-Delta(1600)-           0      0.00000000
+ Delta(1600)++         781       32224   2.0      1.57000000      2.632848e-24             Delta(1600)++           0      0.00000000
+ Delta(1600)~--        782      -32224  -2.0      1.57000000      2.632848e-24        anti-Delta(1600)--           0      0.00000000
+ Delta(1620)-          396        1112  -1.0      1.61000000      5.063169e-24              Delta(1620)-           0      0.00000000
+ Delta(1620)~+         397       -1112   1.0      1.61000000      5.063169e-24         anti-Delta(1620)+           0      0.00000000
+ Delta(1620)0          402        1212   0.0      1.61000000      5.063169e-24              Delta(1620)0           0      0.00000000
+ Delta(1620)~0         403       -1212   0.0      1.61000000      5.063169e-24         anti-Delta(1620)0           0      0.00000000
+ Delta(1620)+          418        2122   1.0      1.61000000      5.063169e-24              Delta(1620)+           0      0.00000000
+ Delta(1620)~-         419       -2122  -1.0      1.61000000      5.063169e-24         anti-Delta(1620)-           0      0.00000000
+ Delta(1620)++         432        2222   2.0      1.61000000      5.063169e-24             Delta(1620)++           0      0.00000000
+ Delta(1620)~--        433       -2222  -2.0      1.61000000      5.063169e-24        anti-Delta(1620)--           0      0.00000000
+ Delta(1700)-          616       11114  -1.0      1.71000000      2.194041e-24              Delta(1700)-           0      0.00000000
+ Delta(1700)~+         617      -11114   1.0      1.71000000      2.194041e-24         anti-Delta(1700)+           0      0.00000000
+ Delta(1700)0          626       12114   0.0      1.71000000      2.194041e-24              Delta(1700)0           0      0.00000000
+ Delta(1700)~0         627      -12114   0.0      1.71000000      2.194041e-24         anti-Delta(1700)0           0      0.00000000
+ Delta(1700)+          638       12214   1.0      1.71000000      2.194041e-24              Delta(1700)+           0      0.00000000
+ Delta(1700)~-         639      -12214  -1.0      1.71000000      2.194041e-24         anti-Delta(1700)-           0      0.00000000
+ Delta(1700)++         646       12224   2.0      1.71000000      2.194041e-24             Delta(1700)++           0      0.00000000
+ Delta(1700)~--        647      -12224  -2.0      1.71000000      2.194041e-24        anti-Delta(1700)--           0      0.00000000
+ Delta(1900)-          614       11112  -1.0      1.86000000      2.632848e-24              Delta(1900)-           0      0.00000000
+ Delta(1900)~+         615      -11112   1.0      1.86000000      2.632848e-24         anti-Delta(1900)+           0      0.00000000
+ Delta(1900)0          620       11212   0.0      1.86000000      2.632848e-24              Delta(1900)0           0      0.00000000
+ Delta(1900)~0         621      -11212   0.0      1.86000000      2.632848e-24         anti-Delta(1900)0           0      0.00000000
+ Delta(1900)+          632       12122   1.0      1.86000000      2.632848e-24              Delta(1900)+           0      0.00000000
+ Delta(1900)~-         633      -12122  -1.0      1.86000000      2.632848e-24         anti-Delta(1900)-           0      0.00000000
+ Delta(1900)++         644       12222   2.0      1.86000000      2.632848e-24             Delta(1900)++           0      0.00000000
+ Delta(1900)~--        645      -12222  -2.0      1.86000000      2.632848e-24        anti-Delta(1900)--           0      0.00000000
+ Delta(1905)-          398        1116  -1.0      1.88000000      1.994582e-24              Delta(1905)-           0      0.00000000
+ Delta(1905)~+         399       -1116   1.0      1.88000000      1.994582e-24         anti-Delta(1905)+           0      0.00000000
+ Delta(1905)0          406        1216   0.0      1.88000000      1.994582e-24              Delta(1905)0           0      0.00000000
+ Delta(1905)~0         407       -1216   0.0      1.88000000      1.994582e-24         anti-Delta(1905)0           0      0.00000000
+ Delta(1905)+          422        2126   1.0      1.88000000      1.994582e-24              Delta(1905)+           0      0.00000000
+ Delta(1905)~-         423       -2126  -1.0      1.88000000      1.994582e-24         anti-Delta(1905)-           0      0.00000000
+ Delta(1905)++         434        2226   2.0      1.88000000      1.994582e-24             Delta(1905)++           0      0.00000000
+ Delta(1905)~--        435       -2226  -2.0      1.88000000      1.994582e-24        anti-Delta(1905)--           0      0.00000000
+ Delta(1910)-          697       21112  -1.0      1.90000000      2.350758e-24              Delta(1910)-           0      0.00000000
+ Delta(1910)~+         698      -21112   1.0      1.90000000      2.350758e-24         anti-Delta(1910)+           0      0.00000000
+ Delta(1910)0          701       21212   0.0      1.90000000      2.350758e-24              Delta(1910)0           0      0.00000000
+ Delta(1910)~0         702      -21212   0.0      1.90000000      2.350758e-24         anti-Delta(1910)0           0      0.00000000
+ Delta(1910)+          709       22122   1.0      1.90000000      2.350758e-24              Delta(1910)+           0      0.00000000
+ Delta(1910)~-         710      -22122  -1.0      1.90000000      2.350758e-24         anti-Delta(1910)-           0      0.00000000
+ Delta(1910)++         717       22222   2.0      1.90000000      2.350758e-24             Delta(1910)++           0      0.00000000
+ Delta(1910)~--        718      -22222  -2.0      1.90000000      2.350758e-24        anti-Delta(1910)--           0      0.00000000
+ Delta(1920)-          699       21114  -1.0      1.92000000      2.531585e-24              Delta(1920)-           0      0.00000000
+ Delta(1920)~+         700      -21114   1.0      1.92000000      2.531585e-24         anti-Delta(1920)+           0      0.00000000
+ Delta(1920)0          707       22114   0.0      1.92000000      2.531585e-24              Delta(1920)0           0      0.00000000
+ Delta(1920)~0         708      -22114   0.0      1.92000000      2.531585e-24         anti-Delta(1920)0           0      0.00000000
+ Delta(1920)+          715       22214   1.0      1.92000000      2.531585e-24              Delta(1920)+           0      0.00000000
+ Delta(1920)~-         716      -22214  -1.0      1.92000000      2.531585e-24         anti-Delta(1920)-           0      0.00000000
+ Delta(1920)++         719       22224   2.0      1.92000000      2.531585e-24             Delta(1920)++           0      0.00000000
+ Delta(1920)~--        720      -22224  -2.0      1.92000000      2.531585e-24        anti-Delta(1920)--           0      0.00000000
+ Delta(1930)-          618       11116  -1.0      1.95000000      2.194040e-24              Delta(1930)-           0      0.00000000
+ Delta(1930)~+         619      -11116   1.0      1.95000000      2.194040e-24         anti-Delta(1930)+           0      0.00000000
+ Delta(1930)0          622       11216   0.0      1.95000000      2.194040e-24              Delta(1930)0           0      0.00000000
+ Delta(1930)~0         623      -11216   0.0      1.95000000      2.194040e-24         anti-Delta(1930)0           0      0.00000000
+ Delta(1930)+          634       12126   1.0      1.95000000      2.194040e-24              Delta(1930)+           0      0.00000000
+ Delta(1930)~-         635      -12126  -1.0      1.95000000      2.194040e-24         anti-Delta(1930)-           0      0.00000000
+ Delta(1930)++         648       12226   2.0      1.95000000      2.194040e-24             Delta(1930)++           0      0.00000000
+ Delta(1930)~--        649      -12226  -2.0      1.95000000      2.194040e-24        anti-Delta(1930)--           0      0.00000000
+ Delta(1950)-          400        1118  -1.0      1.93000000      2.350758e-24              Delta(1950)-           0      0.00000000
+ Delta(1950)~+         401       -1118   1.0      1.93000000      2.350758e-24         anti-Delta(1950)+           0      0.00000000
+ Delta(1950)0          416        2118   0.0      1.93000000      2.350758e-24              Delta(1950)0           0      0.00000000
+ Delta(1950)~0         417       -2118   0.0      1.93000000      2.350758e-24         anti-Delta(1950)0           0      0.00000000
+ Delta(1950)+          430        2218   1.0      1.93000000      2.350758e-24              Delta(1950)+           0      0.00000000
+ Delta(1950)~-         431       -2218  -1.0      1.93000000      2.350758e-24         anti-Delta(1950)-           0      0.00000000
+ Delta(1950)++         436        2228   2.0      1.93000000      2.350758e-24             Delta(1950)++           0      0.00000000
+ Delta(1950)~--        437       -2228  -2.0      1.93000000      2.350758e-24        anti-Delta(1950)--           0      0.00000000
+ Lambda0                18        3122   0.0      1.11568300      2.632000e-10                   Lambda0        3122      0.00000000
+ Lambda~0               26       -3122   0.0      1.11568300      2.632000e-10              anti-Lambda0       -3122      0.00000000
+ Lambda(1405)0         656       13122   0.0      1.40510000      1.316424e-23             Lambda(1405)0           0      0.00000000
+ Lambda(1405)~0        657      -13122   0.0      1.40510000      1.316424e-23        anti-Lambda(1405)0           0      0.00000000
+ Lambda(1520)0         448        3124   0.0      1.51950000      4.219309e-23             Lambda(1520)0           0      0.00000000
+ Lambda(1520)~0        449       -3124   0.0      1.51950000      4.219309e-23        anti-Lambda(1520)0           0      0.00000000
+ Lambda(1600)0         725       23122   0.0      1.60000000      4.388081e-24             Lambda(1600)0           0      0.00000000
+ Lambda(1600)~0        726      -23122   0.0      1.60000000      4.388081e-24        anti-Lambda(1600)0           0      0.00000000
+ Lambda(1670)0         783       33122   0.0      1.67000000      1.880606e-23             Lambda(1670)0           0      0.00000000
+ Lambda(1670)~0        784      -33122   0.0      1.67000000      1.880606e-23        anti-Lambda(1670)0           0      0.00000000
+ Lambda(1690)0         658       13124   0.0      1.69000000      1.097020e-23             Lambda(1690)0           0      0.00000000
+ Lambda(1690)~0        659      -13124   0.0      1.69000000      1.097020e-23        anti-Lambda(1690)0           0      0.00000000
+ Lambda(1800)0         797       43122   0.0      1.80000000      2.194041e-24             Lambda(1800)0           0      0.00000000
+ Lambda(1800)~0        798      -43122   0.0      1.80000000      2.194041e-24        anti-Lambda(1800)0           0      0.00000000
+ Lambda(1810)0         803       53122   0.0      1.81000000      4.388081e-24             Lambda(1810)0           0      0.00000000
+ Lambda(1810)~0        804      -53122   0.0      1.81000000      4.388081e-24        anti-Lambda(1810)0           0      0.00000000
+ Lambda(1820)0         450        3126   0.0      1.82000000      8.227652e-24             Lambda(1820)0           0      0.00000000
+ Lambda(1820)~0        451       -3126   0.0      1.82000000      8.227652e-24        anti-Lambda(1820)0           0      0.00000000
+ Lambda(1830)0         660       13126   0.0      1.83000000      6.928549e-24             Lambda(1830)0           0      0.00000000
+ Lambda(1830)~0        661      -13126   0.0      1.83000000      6.928549e-24        anti-Lambda(1830)0           0      0.00000000
+ Lambda(1890)0         727       23124   0.0      1.89000000      6.582122e-24             Lambda(1890)0           0      0.00000000
+ Lambda(1890)~0        728      -23124   0.0      1.89000000      6.582122e-24        anti-Lambda(1890)0           0      0.00000000
+ Lambda(2100)0         452        3128   0.0      2.10000000      3.291061e-24             Lambda(2100)0           0      0.00000000
+ Lambda(2100)~0        453       -3128   0.0      2.10000000      3.291061e-24        anti-Lambda(2100)0           0      0.00000000
+ Lambda(2110)0         729       23126   0.0      2.11000000      3.291061e-24             Lambda(2110)0           0      0.00000000
+ Lambda(2110)~0        730      -23126   0.0      2.11000000      3.291061e-24        anti-Lambda(2110)0           0      0.00000000
+ Sigma-                 21        3112  -1.0      1.19744900      1.479128e-10                    Sigma-        3112      0.00000000
+ Sigma~+                29       -3112   1.0      1.19744900      1.479128e-10               anti-Sigma+       -3112      0.00000000
+ Sigma0                 20        3212   0.0      1.19264200      7.400000e-20                    Sigma0        3212      0.00000000
+ Sigma~0                28       -3212   0.0      1.19264200      7.400000e-20               anti-Sigma0       -3212      0.00000000
+ Sigma+                 19        3222   1.0      1.18937000      8.018175e-11                    Sigma+        3222      0.00000000
+ Sigma~-                27       -3222  -1.0      1.18937000      8.018175e-11               anti-Sigma-       -3222      0.00000000
+ Sigma*-               442        3114  -1.0      1.38720000      1.670589e-23                   Sigma*-        3114      0.00000000
+ Sigma*~+              443       -3114   1.0      1.38720000      1.670589e-23              anti-Sigma*+       -3114      0.00000000
+ Sigma*0               458        3214   0.0      1.38370000      1.828367e-23                   Sigma*0        3214      0.00000000
+ Sigma*~0              459       -3214   0.0      1.38370000      1.828367e-23              anti-Sigma*0       -3214      0.00000000
+ Sigma*+               464        3224   1.0      1.38280000      1.828367e-23                   Sigma*+        3224      0.00000000
+ Sigma*~-              465       -3224  -1.0      1.38280000      1.828367e-23              anti-Sigma*-       -3224      0.00000000
+ Sigma(1660)-          650       13112  -1.0      1.66000000      6.582122e-24              Sigma(1660)-           0      0.00000000
+ Sigma(1660)~+         651      -13112   1.0      1.66000000      6.582122e-24         anti-Sigma(1660)+           0      0.00000000
+ Sigma(1660)0          662       13212   0.0      1.66000000      6.582122e-24              Sigma(1660)0           0      0.00000000
+ Sigma(1660)~0         663      -13212   0.0      1.66000000      6.582122e-24         anti-Sigma(1660)0           0      0.00000000
+ Sigma(1660)+          668       13222   1.0      1.66000000      6.582122e-24              Sigma(1660)+           0      0.00000000
+ Sigma(1660)~-         669      -13222  -1.0      1.66000000      6.582122e-24         anti-Sigma(1660)-           0      0.00000000
+ Sigma(1670)-          652       13114  -1.0      1.67000000      1.097020e-23              Sigma(1670)-           0      0.00000000
+ Sigma(1670)~+         653      -13114   1.0      1.67000000      1.097020e-23         anti-Sigma(1670)+           0      0.00000000
+ Sigma(1670)0          664       13214   0.0      1.67000000      1.097020e-23              Sigma(1670)0           0      0.00000000
+ Sigma(1670)~0         665      -13214   0.0      1.67000000      1.097020e-23         anti-Sigma(1670)0           0      0.00000000
+ Sigma(1670)+          670       13224   1.0      1.67000000      1.097020e-23              Sigma(1670)+           0      0.00000000
+ Sigma(1670)~-         671      -13224  -1.0      1.67000000      1.097020e-23         anti-Sigma(1670)-           0      0.00000000
+ Sigma(1750)-          721       23112  -1.0      1.75000000      7.313469e-24              Sigma(1750)-           0      0.00000000
+ Sigma(1750)~+         722      -23112   1.0      1.75000000      7.313469e-24         anti-Sigma(1750)+           0      0.00000000
+ Sigma(1750)0          731       23212   0.0      1.75000000      7.313469e-24              Sigma(1750)0           0      0.00000000
+ Sigma(1750)~0         732      -23212   0.0      1.75000000      7.313469e-24         anti-Sigma(1750)0           0      0.00000000
+ Sigma(1750)+          735       23222   1.0      1.75000000      7.313469e-24              Sigma(1750)+           0      0.00000000
+ Sigma(1750)~-         736      -23222  -1.0      1.75000000      7.313469e-24         anti-Sigma(1750)-           0      0.00000000
+ Sigma(1775)-          444        3116  -1.0      1.77500000      5.485102e-24              Sigma(1775)-           0      0.00000000
+ Sigma(1775)~+         445       -3116   1.0      1.77500000      5.485102e-24         anti-Sigma(1775)+           0      0.00000000
+ Sigma(1775)0          460        3216   0.0      1.77500000      5.485102e-24              Sigma(1775)0           0      0.00000000
+ Sigma(1775)~0         461       -3216   0.0      1.77500000      5.485102e-24         anti-Sigma(1775)0           0      0.00000000
+ Sigma(1775)+          466        3226   1.0      1.77500000      5.485102e-24              Sigma(1775)+           0      0.00000000
+ Sigma(1775)~-         467       -3226  -1.0      1.77500000      5.485102e-24         anti-Sigma(1775)-           0      0.00000000
+ Sigma(1915)-          654       13116  -1.0      1.91500000      5.485102e-24              Sigma(1915)-           0      0.00000000
+ Sigma(1915)~+         655      -13116   1.0      1.91500000      5.485102e-24         anti-Sigma(1915)+           0      0.00000000
+ Sigma(1915)0          666       13216   0.0      1.91500000      5.485102e-24              Sigma(1915)0           0      0.00000000
+ Sigma(1915)~0         667      -13216   0.0      1.91500000      5.485102e-24         anti-Sigma(1915)0           0      0.00000000
+ Sigma(1915)+          672       13226   1.0      1.91500000      5.485102e-24              Sigma(1915)+           0      0.00000000
+ Sigma(1915)~-         673      -13226  -1.0      1.91500000      5.485102e-24         anti-Sigma(1915)-           0      0.00000000
+ Sigma(1940)-          723       23114  -1.0      1.94000000      2.991874e-24              Sigma(1940)-           0      0.00000000
+ Sigma(1940)~+         724      -23114   1.0      1.94000000      2.991874e-24         anti-Sigma(1940)+           0      0.00000000
+ Sigma(1940)0          733       23214   0.0      1.94000000      2.991874e-24              Sigma(1940)0           0      0.00000000
+ Sigma(1940)~0         734      -23214   0.0      1.94000000      2.991874e-24         anti-Sigma(1940)0           0      0.00000000
+ Sigma(1940)+          737       23224   1.0      1.94000000      2.991874e-24              Sigma(1940)+           0      0.00000000
+ Sigma(1940)~-         738      -23224  -1.0      1.94000000      2.991874e-24         anti-Sigma(1940)-           0      0.00000000
+ Sigma(2030)0          462        3218   0.0      2.03000000      3.656734e-24              Sigma(2030)0           0      0.00000000
+ Sigma(2030)~0         463       -3218   0.0      2.03000000      3.656734e-24         anti-Sigma(2030)0           0      0.00000000
+ Sigma(2030)+          468        3228   1.0      2.03000000      3.656734e-24              Sigma(2030)+           0      0.00000000
+ Sigma(2030)~-         469       -3228  -1.0      2.03000000      3.656734e-24         anti-Sigma(2030)-           0      0.00000000
+ Sigma(2030)-          446        3118  -1.0      2.03000000      3.656734e-24              Sigma(2030)-           0      0.00000000
+ Sigma(2030)~+         447       -3118   1.0      2.03000000      3.656734e-24         anti-Sigma(2030)+           0      0.00000000
+ Sigma(2250)0         1059      103212   0.0      2.25000000      6.580000e-24              Sigma(2250)0           0      0.00000000
+ Sigma(2250)~0        1060     -103212   0.0      2.25000000      6.580000e-24         anti-Sigma(2250)0           0      0.00000000
+ Sigma(2250)+         1061      103222   1.0      2.25000000      6.580000e-24              Sigma(2250)+           0      0.00000000
+ Sigma(2250)~-        1062     -103222  -1.0      2.25000000      6.580000e-24         anti-Sigma(2250)-           0      0.00000000
+ Sigma(2250)-         1063      103112  -1.0      2.25000000      6.580000e-24              Sigma(2250)-           0      0.00000000
+ Sigma(2250)~+        1064     -103112   1.0      2.25000000      6.580000e-24         anti-Sigma(2250)+           0      0.00000000
+ Xi-                    23        3312  -1.0      1.32171000      1.639000e-10                       Xi-        3312      0.00000000
+ Xi~+                   31       -3312   1.0      1.32171000      1.639000e-10                  anti-Xi+       -3312      0.00000000
+ Xi0                    22        3322   0.0      1.31486000      2.900000e-10                       Xi0        3322      0.00000000
+ Xi~0                   30       -3322   0.0      1.31486000      2.900000e-10                  anti-Xi0       -3322      0.00000000
+ Xi*-                  472        3314  -1.0      1.53500000      6.648608e-23                      Xi*-        3314      0.00000000
+ Xi*~+                 473       -3314   1.0      1.53500000      6.648608e-23                 anti-Xi*+       -3314      0.00000000
+ Xi*0                  474        3324   0.0      1.53180000      7.233101e-23                      Xi*0        3324      0.00000000
+ Xi*~0                 475       -3324   0.0      1.53180000      7.233101e-23                 anti-Xi*0       -3324      0.00000000
+ Xi(1690)-            1033      203312  -1.0      1.69000000      0.000000e+00                 Xi(1690)-           0      0.00000000
+ Xi(1690)~+           1034     -203312   1.0      1.69000000      0.000000e+00            anti-Xi(1690)+           0      0.00000000
+ Xi(1690)0            1035      203322   0.0      1.69000000      0.000000e+00                 Xi(1690)0           0      0.00000000
+ Xi(1690)~0           1036     -203322   0.0      1.69000000      0.000000e+00            anti-Xi(1690)0           0      0.00000000
+ Xi(1820)-             674       13314  -1.0      1.82300000      2.742551e-23                 Xi(1820)-           0      0.00000000
+ Xi(1820)~+            675      -13314   1.0      1.82300000      2.742551e-23            anti-Xi(1820)+           0      0.00000000
+ Xi(1820)0             678       13324   0.0      1.82300000      2.742551e-23                 Xi(1820)0           0      0.00000000
+ Xi(1820)~0            679      -13324   0.0      1.82300000      2.742551e-23            anti-Xi(1820)0           0      0.00000000
+ Xi(1950)-            1037      103316  -1.0      1.95000000      1.097020e-23                 Xi(1950)-           0      0.00000000
+ Xi(1950)~+           1038     -103316   1.0      1.95000000      1.097020e-23            anti-Xi(1950)+           0      0.00000000
+ Xi(1950)0            1039      103326   0.0      1.95000000      1.097020e-23                 Xi(1950)0           0      0.00000000
+ Xi(1950)~0           1040     -103326   0.0      1.95000000      1.097020e-23            anti-Xi(1950)0           0      0.00000000
+ Xi(2030)-            1041      203316  -1.0      2.02500000      3.291061e-23                 Xi(2030)-           0      0.00000000
+ Xi(2030)~+           1042     -203316   1.0      2.02500000      3.291061e-23            anti-Xi(2030)+           0      0.00000000
+ Xi(2030)0            1043      203326   0.0      2.02500000      3.291061e-23                 Xi(2030)0           0      0.00000000
+ Xi(2030)~0           1044     -203326   0.0      2.02500000      3.291061e-23            anti-Xi(2030)0           0      0.00000000
+ Omega-                 24        3334  -1.0      1.67245000      8.210000e-11                    Omega-        3334      0.00000000
+ Omega~+                32       -3334   1.0      1.67245000      8.210000e-11               anti-Omega+       -3334      0.00000000
+ Omega(2250)-         1045      203338  -1.0      2.25200000      1.196749e-23              Omega(2250)-           0      0.00000000
+ Omega(2250)~+        1046     -203338   1.0      2.25200000      1.196749e-23         anti-Omega(2250)+           0      0.00000000
+ Lambda_c+              62        4122   1.0      2.28646000      2.000000e-13                 Lambda_c+        4122      0.00000000
+ Lambda_c~-             63       -4122  -1.0      2.28646000      2.000000e-13            anti-Lambda_c-       -4122      0.00000000
+ Lambda_c(2595)+       682       14122   1.0      2.59225000      2.531585e-22           Lambda_c(2593)+           0      0.00000000
+ Lambda_c(2595)~-      683      -14122  -1.0      2.59225000      2.531585e-22      anti-Lambda_c(2593)-           0      0.00000000
+ Lambda_c(2625)+      1047      104124   1.0      2.62811000      0.000000e+00           Lambda_c(2625)+           0      0.00000000
+ Lambda_c(2625)~-     1048     -104124  -1.0      2.62811000      0.000000e+00      anti-Lambda_c(2625)-           0      0.00000000
+ Lambda_c(2880)+      1049      204126   1.0      2.88163000      1.175379e-22           Lambda_c(2880)+           0      0.00000000
+ Lambda_c(2880)~-     1050     -204126  -1.0      2.88163000      1.175379e-22      anti-Lambda_c(2880)-           0      0.00000000
+ Sigma_c0               81        4112   0.0      2.45375000      3.596787e-22                  Sigma_c0        4112      0.00000000
+ Sigma_c~0              82       -4112   0.0      2.45375000      3.596787e-22             anti-Sigma_c0       -4112      0.00000000
+ Sigma_c+               83        4212   1.0      2.45290000      3.999999e-22                  Sigma_c+        4212      0.00000000
+ Sigma_c~-              84       -4212  -1.0      2.45290000      3.999999e-22             anti-Sigma_c-       -4212      0.00000000
+ Sigma_c++              85        4222   2.0      2.45397000      3.482603e-22                 Sigma_c++        4222      0.00000000
+ Sigma_c~--             86       -4222  -2.0      2.45397000      3.482603e-22            anti-Sigma_c--       -4222      0.00000000
+ Sigma_c*0             480        4114   0.0      2.51848000      4.539394e-23                 Sigma_c*0        4114      0.00000000
+ Sigma_c*~0            481       -4114   0.0      2.51848000      4.539394e-23            anti-Sigma_c*0       -4114      0.00000000
+ Sigma_c*+             486        4214   1.0      2.51750000      3.291061e-22                 Sigma_c*+        4214      0.00000000
+ Sigma_c*~-            487       -4214  -1.0      2.51750000      3.291061e-22            anti-Sigma_c*-       -4214      0.00000000
+ Sigma_c*++            488        4224   2.0      2.51841000      4.453396e-23                Sigma_c*++        4224      0.00000000
+ Sigma_c*~--           489       -4224  -2.0      2.51841000      4.453396e-23           anti-Sigma_c*--       -4224      0.00000000
+ Xi_c0                 106        4132   0.0      2.47091000      1.530726e-13                     Xi_c0        4132      0.00000000
+ Xi_c~0                107       -4132   0.0      2.47091000      1.530726e-13                anti-Xi_c0       -4132      0.00000000
+ Xi_c+                 108        4232   1.0      2.46793000      4.420000e-13                     Xi_c+        4232      0.00000000
+ Xi_c~-                109       -4232  -1.0      2.46793000      4.420000e-13                anti-Xi_c-       -4232      0.00000000
+ Xi'_c0                100        4312   0.0      2.57920000      0.000000e+00                    Xi'_c0        4312      0.00000000
+ Xi'_c~0               101       -4312   0.0      2.57920000      0.000000e+00               anti-Xi'_c0       -4312      0.00000000
+ Xi'_c+                102        4322   1.0      2.57840000      0.000000e+00                    Xi'_c+        4322      0.00000000
+ Xi'_c~-               103       -4322  -1.0      2.57840000      0.000000e+00               anti-Xi'_c-       -4322      0.00000000
+ Xi_c*0                494        4314   0.0      2.64638000      2.800902e-22                    Xi_c*0        4314      0.00000000
+ Xi_c*~0               495       -4314   0.0      2.64638000      2.800902e-22               anti-Xi_c*0       -4314      0.00000000
+ Xi_c*+                496        4324   1.0      2.64557000      3.075757e-22                    Xi_c*+        4324      0.00000000
+ Xi_c*~-               497       -4324  -1.0      2.64557000      3.075757e-22               anti-Xi_c*-       -4324      0.00000000
+ Xi_c(2790)+          1051      104324   1.0      2.79240000      7.395640e-23               Xi_c(2790)+           0      0.00000000
+ Xi_c(2790)~-         1052     -104324  -1.0      2.79240000      7.395640e-23          anti-Xi_c(2790)-           0      0.00000000
+ Xi_c(2790)0          1053      104314   0.0      2.79410000      6.582120e-23               Xi_c(2790)0           0      0.00000000
+ Xi_c(2790)~0         1054     -104314   0.0      2.79410000      6.582120e-23          anti-Xi_c(2790)0           0      0.00000000
+ Xi_c(2815)+          1055      104322   1.0      2.81673000      2.708691e-22               Xi_c(2815)+           0      0.00000000
+ Xi_c(2815)~-         1056     -104322  -1.0      2.81673000      2.708691e-22          anti-Xi_c(2815)-           0      0.00000000
+ Xi_c(2815)0          1057      104312   0.0      2.82026000      2.591386e-22               Xi_c(2815)0           0      0.00000000
+ Xi_c(2815)~0         1058     -104312   0.0      2.82026000      2.591386e-22          anti-Xi_c(2815)0           0      0.00000000
+ Omega_c0              104        4332   0.0      2.69520000      2.680000e-13                  Omega_c0        4332      0.00000000
+ Omega_c~0             105       -4332   0.0      2.69520000      2.680000e-13             anti-Omega_c0       -4332      0.00000000
+ Omega_c*0             498        4334   0.0      2.76590000      0.000000e+00                 Omega_c*0        4334      0.00000000
+ Omega_c*~0            499       -4334   0.0      2.76590000      0.000000e+00            anti-Omega_c*0       -4334      0.00000000
+ Xi_cc+                502        4412   1.0      3.62140000      0.800000e-13                    Xi_cc+        4412      0.00000000
+ Xi_cc~-               503       -4412  -1.0      3.62140000      0.800000e-13               anti-Xi_cc-       -4412      0.00000000
+ Xi*_cc+               504        4414   1.0      3.65648000      0.000000e+00                   Xi_cc*+        4414      0.00000000
+ Xi*_cc~-              505       -4414  -1.0      3.65648000      0.000000e+00              anti-Xi_cc*-       -4414      0.00000000
+ Xi_cc++               506        4422   2.0      3.62140000      2.560000e-13                   Xi_cc++        4422      0.00000000
+ Xi_cc~--              507       -4422  -2.0      3.62140000      2.560000e-13              anti-Xi_cc--       -4422      0.00000000
+ Xi*_cc++              508        4424   2.0      3.65648000      0.000000e+00                  Xi_cc*++        4424      0.00000000
+ Xi*_cc~--             509       -4424  -2.0      3.65648000      0.000000e+00             anti-Xi_cc*--       -4424      0.00000000
+ Omega_cc+             510        4432   1.0      3.73800000      1.600000e-13                 Omega_cc+        4432      0.00000000
+ Omega_cc~-            511       -4432  -1.0      3.73800000      1.600000e-13            anti-Omega_cc-       -4432      0.00000000
+ Omega*_cc+            512        4434   1.0      3.82466000      0.000000e+00                Omega_cc*+        4434      0.00000000
+ Omega*_cc~-           513       -4434  -1.0      3.82466000      0.000000e+00           anti-Omega_cc*-       -4434      0.00000000
+ Omega*_ccc++          514        4444   2.0      4.91594000      0.000000e+00              Omega*_ccc++        4444      0.00000000
+ Omega*_ccc~--         515       -4444  -2.0      4.91594000      0.000000e+00         anti-Omega*_ccc--       -4444      0.00000000
+ Lambda_b0              79        5122   0.0      5.61960000      1.470865e-12                 Lambda_b0        5122      0.00000000
+ Lambda_b~0             80       -5122   0.0      5.61960000      1.470865e-12            anti-Lambda_b0       -5122      0.00000000
+ Lambda_b(5912)0      1065       15122   0.0      5.91220000      1.316000e-21           Lambda_b(5912)0       15122      0.00000000
+ Lambda_b(5912)~0     1066      -15122   0.0      5.91220000      1.316000e-21      anti-Lambda_b(5912)0      -15122      0.00000000
+ Lambda_b(5920)0      1067        5124   0.0      5.91992000      1.316000e-21           Lambda_b(5920)0        5124      0.00000000
+ Lambda_b(5920)~0     1068       -5124   0.0      5.91992000      1.316000e-21      anti-Lambda_b(5920)0       -5124      0.00000000
+ Sigma_b-              114        5112  -1.0      5.81564000      1.343290e-22                  Sigma_b-        5112      0.00000000
+ Sigma_b~+             115       -5112   1.0      5.81564000      1.343290e-22             anti-Sigma_b+       -5112      0.00000000
+ Sigma_b0              112        5212   0.0      5.80780000      1.000000e-19                  Sigma_b0        5212      0.00000000
+ Sigma_b~0             113       -5212   0.0      5.80780000      1.000000e-19             anti-Sigma_b0       -5212      0.00000000
+ Sigma_b+              110        5222   1.0      5.81056000      1.316424e-22                  Sigma_b+        5222      0.00000000
+ Sigma_b~-             111       -5222  -1.0      5.81056000      1.316424e-22             anti-Sigma_b-       -5222      0.00000000
+ Sigma_b*-             520        5114  -1.0      5.83474000      8.776160e-23                 Sigma_b*-        5114      0.00000000
+ Sigma_b*~+            521       -5114   1.0      5.83474000      8.776160e-23            anti-Sigma_b*+       -5114      0.00000000
+ Sigma_b*0             528        5214   0.0      5.82900000      0.000000e+00                 Sigma_b*0        5214      0.00000000
+ Sigma_b*~0            529       -5214   0.0      5.82900000      0.000000e+00            anti-Sigma_b*0       -5214      0.00000000
+ Sigma_b*+             530        5224   1.0      5.83032000      7.002255e-23                 Sigma_b*+        5224      0.00000000
+ Sigma_b*~-            531       -5224  -1.0      5.83032000      7.002255e-23            anti-Sigma_b*-       -5224      0.00000000
+ Xi_b-                 122        5132  -1.0      5.79700000      1.570912e-12                     Xi_b-        5132      0.00000000
+ Xi_b~+                123       -5132   1.0      5.79700000      1.570912e-12                anti-Xi_b+       -5132      0.00000000
+ Xi_b0                 124        5232   0.0      5.79190000      1.490000e-12                     Xi_b0        5232      0.00000000
+ Xi_b~0                125       -5232   0.0      5.79190000      1.490000e-12                anti-Xi_b0       -5232      0.00000000
+ Xi'_b-                116        5312  -1.0      5.96000000      1.000000e-19                    Xi'_b-        5312      0.00000000
+ Xi'_b~+               117       -5312   1.0      5.96000000      1.000000e-19               anti-Xi'_b+       -5312      0.00000000
+ Xi'_b0                118        5322   0.0      5.96000000      1.000000e-19                    Xi'_b0        5322      0.00000000
+ Xi'_b~0               119       -5322   0.0      5.96000000      1.000000e-19               anti-Xi'_b0       -5322      0.00000000
+ Xi_b*-                538        5314  -1.0      5.97000000      0.000000e+00                    Xi_b*-        5314      0.00000000
+ Xi_b*~+               539       -5314   1.0      5.97000000      0.000000e+00               anti-Xi_b*+       -5314      0.00000000
+ Xi_b*0                540        5324   0.0      5.97000000      0.000000e+00                    Xi_b*0        5324      0.00000000
+ Xi_b*~0               541       -5324   0.0      5.97000000      0.000000e+00               anti-Xi_b*0       -5324      0.00000000
+ Omega_b*-             542        5334  -1.0      6.13000000      0.000000e+00                 Omega_b*-        5334      0.00000000
+ Omega_b*~+            543       -5334   1.0      6.13000000      0.000000e+00            anti-Omega_b*+       -5334      0.00000000
+ Omega_b-              120        5332  -1.0      6.04610000      1.645530e-12                  Omega_b-        5332      0.00000000
+ Omega_b~+             121       -5332   1.0      6.04610000      1.645530e-12             anti-Omega_b+       -5332      0.00000000
+ Xi_bc0                522        5142   0.0      6.90000000      0.500000e-12                    Xi_bc0        5142      0.00000000
+ Xi_bc~0               523       -5142   0.0      6.90000000      0.500000e-12               anti-Xi_bc0       -5142      0.00000000
+ Xi_bc+                532        5242   1.0      6.90000000      0.500000e-12                    Xi_bc+        5242      0.00000000
+ Xi_bc~-               533       -5242  -1.0      6.90000000      0.500000e-12               anti-Xi_bc-       -5242      0.00000000
+ Omega_bc0             544        5342   0.0      7.19099000      0.500000e-12                 Omega_bc0        5342      0.00000000
+ Omega_bc~0            545       -5342   0.0      7.19099000      0.500000e-12            anti-Omega_bc0       -5342      0.00000000
+ Xi'_bc0               550        5412   0.0      7.03724000      0.000000e+00                   Xi'_bc0        5412      0.00000000
+ Xi'_bc~0              551       -5412   0.0      7.03724000      0.000000e+00              anti-Xi'_bc0       -5412      0.00000000
+ Xi*_bc0               552        5414   0.0      7.04850000      0.000000e+00                   Xi*_bc0        5414      0.00000000
+ Xi*_bc~0              553       -5414   0.0      7.04850000      0.000000e+00              anti-Xi*_bc0       -5414      0.00000000
+ Xi'_bc+               554        5422   1.0      7.03724000      0.000000e+00                   Xi'_bc+        5422      0.00000000
+ Xi'_bc~-              555       -5422  -1.0      7.03724000      0.000000e+00              anti-Xi'_bc-       -5422      0.00000000
+ Xi*_bc+               556        5424   1.0      7.04850000      0.000000e+00                   Xi*_bc+        5424      0.00000000
+ Xi*_bc~-              557       -5424  -1.0      7.04850000      0.000000e+00              anti-Xi*_bc+       -5424      0.00000000
+ Omega'_bc0            558        5432   0.0      7.21101000      0.000000e+00                Omega'_bc0        5432      0.00000000
+ Omega'_bc~0           559       -5432   0.0      7.21101000      0.000000e+00           anti-Omega'_bc0       -5432      0.00000000
+ Omega*_bc0            560        5434   0.0      7.21900000      0.000000e+00                Omega*_bc0        5434      0.00000000
+ Omega*_bc~0           561       -5434   0.0      7.21900000      0.000000e+00           anti-Omega*_bc0       -5434      0.00000000
+ Omega_bcc+            562        5442   1.0      8.30945000      1.290893e-12                Omega_bcc+        5442      0.00000000
+ Omega_bcc~-           563       -5442  -1.0      8.30945000      1.290893e-12           anti-Omega_bcc-       -5442      0.00000000
+ Omega*_bcc+           564        5444   1.0      8.31325000      0.000000e+00               Omega*_bcc+        5444      0.00000000
+ Omega*_bcc~-          565       -5444  -1.0      8.31325000      0.000000e+00          anti-Omega*_bcc-       -5444      0.00000000
+ Xi_bb-                568        5512  -1.0     10.42272000      1.290893e-12                    Xi_bb-        5512      0.00000000
+ Xi_bb~+               569       -5512   1.0     10.42272000      1.290893e-12               anti-Xi_bb+       -5512      0.00000000
+ Xi*_bb-               570        5514  -1.0     10.44144000      0.000000e+00                   Xi*_bb-        5514      0.00000000
+ Xi*_bb~+              571       -5514   1.0     10.44144000      0.000000e+00              anti-Xi*_bb+       -5514      0.00000000
+ Xi_bb0                572        5522   0.0     10.42272000      1.290893e-12                    Xi_bb0        5522      0.00000000
+ Xi_bb~0               573       -5522   0.0     10.42272000      1.290893e-12               anti-Xi_bb0       -5522      0.00000000
+ Xi*_bb0               574        5524   0.0     10.44144000      0.000000e+00                   Xi*_bb0        5524      0.00000000
+ Xi*_bb~0              575       -5524   0.0     10.44144000      0.000000e+00              anti-Xi*_bb0       -5524      0.00000000
+ Omega_bb-             576        5532  -1.0     10.60209000      1.290893e-12                 Omega_bb-        5532      0.00000000
+ Omega_bb~+            577       -5532   1.0     10.60209000      1.290893e-12            anti-Omega_bb+       -5532      0.00000000
+ Omega*_bb-            578        5534  -1.0     10.61426000      0.000000e+00                Omega*_bb-        5534      0.00000000
+ Omega*_bb~+           579       -5534   1.0     10.61426000      0.000000e+00           anti-Omega*_bb+       -5534      0.00000000
+ Omega_bbc0            580        5542   0.0     11.70767000      1.290893e-12                Omega_bbc0        5542      0.00000000
+ Omega_bbc~0           581       -5542   0.0     11.70767000      1.290893e-12           anti-Omega_bbc0       -5542      0.00000000
+ Omega*_bbc0           582        5544   0.0     11.71147000      0.000000e+00               Omega*_bbc0        5544      0.00000000
+ Omega*_bbc~0          583       -5544   0.0     11.71147000      0.000000e+00          anti-Omega*_bbc0       -5544      0.00000000
+ Omega*_bbb-           584        5554  -1.0     15.11061000      0.000000e+00               Omega*_bbb-        5554      0.00000000
+ Omega*_bbb~+          585       -5554   1.0     15.11061000      0.000000e+00          anti-Omega*_bbb+       -5554      0.00000000
+ deuteron               45  1000010020   1.0      1.87561300      1.000000e+15                  deuteron           0      0.00000000
+ triton                 46  1000010030   1.0      2.80925000      1.000000e+15                   tritium           0      0.00000000
+ alpha                  47  1000020040   2.0      3.72741700      1.000000e+15                     alpha           0      0.00000000
+ geantino               48   480000000   0.0      0.00000000      1.000000e+15                  geantino           0      0.00000000
+ opticalphoton          50       20022   0.0      0.00000000      1.000000e+16                  Cerenkov           0      0.00000000
+ H_10                   87          25   0.0    125.10000000      9.400000e-26                    Higgs0          25      0.00000000
+ H_20                   88          35   0.0    310.00000000      9.400000e-26                   Higgs'0          35      0.00000000
+ H_30                   89          36   0.0    310.00000000      9.400000e-26                        A0          36      0.00000000
+ H+                     90          37   1.0    310.00000000      9.400000e-26                    Higgs+          37      0.00000000
+ H-                     91         -37  -1.0    310.00000000      9.400000e-26                    Higgs-         -37      0.00000000
+ d                     303           1  -0.3      0.00990000      0.000000e+00                         d           1      0.00000000
+ anti-d                304          -1   0.3      0.00990000      0.000000e+00                    anti-d          -1      0.00000000
+ u                     305           2   0.7      0.00560000      0.000000e+00                         u           2      0.00000000
+ anti-u                306          -2  -0.7      0.00560000      0.000000e+00                    anti-u          -2      0.00000000
+ s                     307           3  -0.3      0.19900000      0.000000e+00                         s           3      0.00000000
+ anti-s                308          -3   0.3      0.19900000      0.000000e+00                    anti-s          -3      0.00000000
+ c                     309           4   0.7      1.35000000      0.000000e+00                         c           4      0.00000000
+ anti-c                310          -4  -0.7      1.35000000      0.000000e+00                    anti-c          -4      0.00000000
+ b                     311           5  -0.3      5.00000000      0.000000e+00                         b           5      0.00000000
+ anti-b                312          -5   0.3      5.00000000      0.000000e+00                    anti-b          -5      0.00000000
+ t                     313           6   0.7    173.50000000      3.291061e-25                         t           6      0.00000000
+ anti-t                314          -6  -0.7    173.50000000      3.291061e-25                    anti-t          -6      0.00000000
+ b'                    315           7  -0.3    400.00000000      0.000000e+00                        b'           7      0.00000000
+ anti-b'               316          -7   0.3    400.00000000      0.000000e+00                   anti-b'          -7      0.00000000
+ t'                    317           8   0.7    500.00000000      0.000000e+00                        t'           8      0.00000000
+ anti-t'               318          -8  -0.7    500.00000000      0.000000e+00                   anti-t'          -8      0.00000000
+ nu_tau                319          16   0.0      0.00000000      1.000000e+16                    nu_tau          16      0.00000000
+ nu_tau~               320         -16   0.0      0.00000000      1.000000e+16               anti-nu_tau         -16      0.00000000
+ L-                    321          17  -1.0    400.00000000      0.000000e+00                        L-          17      0.00000000
+ L+                    322         -17   1.0    400.00000000      0.000000e+00                        L+         -17      0.00000000
+ nu_L                  323          18   0.0      0.00000000      0.000000e+00                      nu_L          18      0.00000000
+ anti-nu_L             324         -18   0.0      0.00000000      0.000000e+00                 anti-nu_L         -18      0.00000000
+ g                     325          21   0.0      0.00000000      1.000000e+16                         g          21      0.00000000
+ Z'0                   326          32   0.0    500.00000000      0.000000e+00                       Z'0          32      0.00000000
+ Z''0                  327          33   0.0    900.00000000      0.000000e+00                      Z''0          33      0.00000000
+ W'+                   328          34   1.0    500.00000000      0.000000e+00                       W'+          34      0.00000000
+ W'-                   329         -34  -1.0    500.00000000      0.000000e+00                       W'-         -34      0.00000000
+ Graviton              330          39   0.0      0.00000000      0.000000e+00                   unknown          39      0.00000000
+ R0                    331          41   0.0   5000.00000000      0.000000e+00                        R0          41      0.00000000
+ anti-R0               332         -41   0.0   5000.00000000      0.000000e+00                   anti-R0         -41      0.00000000
+ LQ_ue                 333          42  -0.3    200.00000000      0.000000e+00                   unknown          42      0.00000000
+ LQ_uebar              334         -42   0.3    200.00000000      0.000000e+00                   unknown         -42      0.00000000
+ Xu0                   335          43   0.0      1.00000000      0.000000e+00                       Xu0          43      0.00000000
+ Xu+                   336          44   1.0      1.00000000      0.000000e+00                       Xu+          44      0.00000000
+ Xu-                   337         -44  -1.0      1.00000000      0.000000e+00                       Xu-         -44      0.00000000
+ specflav              338          81   0.0      0.00000000      0.000000e+00                  specflav          81      0.00000000
+ rndmflav              339          82   0.0      0.00000000      0.000000e+00                  rndmflav          82      0.00000000
+ anti-rndmflav         340         -82   0.0      0.00000000      0.000000e+00             anti-rndmflav         -82      0.00000000
+ phasespa              341          83   0.0      1.00000000      0.000000e+00                  phasespa          83      0.00000000
+ c-hadron              342          84   0.7      2.00000000      3.335641e-13                  c-hadron          84      0.00000000
+ anti-c-hadron         343         -84  -0.7      2.00000000      3.335641e-13             anti-c-hadron         -84      0.00000000
+ b-hadron              344          85  -0.3      5.00000000      1.290893e-12                  b-hadron          85      0.00000000
+ anti-b-hadron         345         -85   0.3      5.00000000      1.290893e-12             anti-b-hadron         -85      0.00000000
+ t-hadron              346          86   0.7    175.00000000      0.000000e+00                  t-hadron           0      0.00000000
+ anti-t-hadron         347         -86  -0.7    175.00000000      0.000000e+00             anti-t-hadron           0      0.00000000
+ b'-hadron             348          87  -0.3    400.00000000      0.000000e+00                 b'-hadron           0      0.00000000
+ anti-b'-hadron        349         -87   0.3    400.00000000      0.000000e+00            anti-b'-hadron           0      0.00000000
+ junction              350          88   0.0      0.00000000      0.000000e+00                  junction          88      0.00000000
+ system                351          90   0.0      0.00000000      0.000000e+00                    system          90      0.00000000
+ cluster               352          91   0.0      0.00000000      0.000000e+00                   cluster          91      0.00000000
+ string                353          92   0.0      0.00000000      0.000000e+00                    string          92      0.00000000
+ indep                 354          93   0.0      0.00000000      0.000000e+00                     indep          93      0.00000000
+ CMshower              355          94   0.0      0.00000000      0.000000e+00                  CMshower          94      0.00000000
+ SPHEaxis              356          95   0.0      0.00000000      0.000000e+00                  SPHEaxis          95      0.00000000
+ THRUaxis              357          96   0.0      0.00000000      0.000000e+00                  THRUaxis          96      0.00000000
+ CLUSjet               358          97   0.0      0.00000000      0.000000e+00                   CLUSjet          97      0.00000000
+ CELLjet               359          98   0.0      0.00000000      0.000000e+00                   CELLjet          98      0.00000000
+ table                 360          99   0.0      0.00000000      0.000000e+00                     table          99      0.00000000
+ deuteron~             390 -1000010020  -1.0      1.87561300      1.000000e+15             anti-deuteron           0      0.00000000
+ triton~               392 -1000010030  -1.0      2.80925000      1.000000e+15              anti-tritium           0      0.00000000
+ alpha~                393 -1000020040  -2.0      3.72741700      1.000000e+15                anti-alpha           0      0.00000000
+ dd_1                  394        1103  -0.7      0.00000000      0.000000e+00                      dd_1        1103      0.00000000
+ anti-dd_1             395       -1103   0.7      0.00000000      0.000000e+00                 anti-dd_1       -1103      0.00000000
+ ud_0                  410        2101   0.3      0.00000000      0.000000e+00                      ud_0        2101      0.00000000
+ anti-ud_0             411       -2101  -0.3      0.00000000      0.000000e+00                 anti-ud_0       -2101      0.00000000
+ ud_1                  412        2103   0.3      0.00000000      0.000000e+00                      ud_1        2103      0.00000000
+ anti-ud_1             413       -2103  -0.3      0.00000000      0.000000e+00                 anti-ud_1       -2103      0.00000000
+ uu_1                  426        2203   1.3      0.00000000      0.000000e+00                      uu_1        2203      0.00000000
+ anti-uu_1             427       -2203  -1.3      0.00000000      0.000000e+00                 anti-uu_1       -2203      0.00000000
+ sd_0                  438        3101  -0.7      0.00000000      0.000000e+00                      sd_0        3101      0.00000000
+ anti-sd_0             439       -3101   0.7      0.00000000      0.000000e+00                 anti-sd_0       -3101      0.00000000
+ sd_1                  440        3103  -0.7      0.00000000      0.000000e+00                      sd_1        3103      0.00000000
+ anti-sd_1             441       -3103   0.7      0.00000000      0.000000e+00                 anti-sd_1       -3103      0.00000000
+ su_0                  454        3201   0.3      0.00000000      0.000000e+00                      su_0        3201      0.00000000
+ anti-su_0             455       -3201  -0.3      0.00000000      0.000000e+00                 anti-su_0       -3201      0.00000000
+ su_1                  456        3203   0.3      0.00000000      0.000000e+00                      su_1        3203      0.00000000
+ anti-su_1             457       -3203  -0.3      0.00000000      0.000000e+00                 anti-su_1       -3203      0.00000000
+ ss_1                  470        3303  -0.7      0.00000000      0.000000e+00                      ss_1        3303      0.00000000
+ anti-ss_1             471       -3303   0.7      0.00000000      0.000000e+00                 anti-ss_1       -3303      0.00000000
+ cd_0                  476        4101   0.3      0.00000000      0.000000e+00                      cd_0        4101      0.00000000
+ anti-cd_0             477       -4101  -0.3      0.00000000      0.000000e+00                 anti-cd_0       -4101      0.00000000
+ cd_1                  478        4103   0.3      0.00000000      0.000000e+00                      cd_1        4103      0.00000000
+ anti-cd_1             479       -4103  -0.3      0.00000000      0.000000e+00                 anti-cd_1       -4103      0.00000000
+ cu_0                  482        4201   1.3      0.00000000      0.000000e+00                      cu_0        4201      0.00000000
+ anti-cu_0             483       -4201  -1.3      0.00000000      0.000000e+00                 anti-cu_0       -4201      0.00000000
+ cu_1                  484        4203   1.3      0.00000000      0.000000e+00                      cu_1        4203      0.00000000
+ anti-cu_1             485       -4203  -1.3      0.00000000      0.000000e+00                 anti-cu_1       -4203      0.00000000
+ cs_0                  490        4301   0.3      0.00000000      0.000000e+00                      cs_0        4301      0.00000000
+ anti-cs_0             491       -4301  -0.3      0.00000000      0.000000e+00                 anti-cs_0       -4301      0.00000000
+ cs_1                  492        4303   0.3      0.00000000      0.000000e+00                      cs_1        4303      0.00000000
+ anti-cs_1             493       -4303  -0.3      0.00000000      0.000000e+00                 anti-cs_1       -4303      0.00000000
+ cc_1                  500        4403   1.3      0.00000000      0.000000e+00                      cc_1        4403      0.00000000
+ anti-cc_1             501       -4403  -1.3      0.00000000      0.000000e+00                 anti-cc_1       -4403      0.00000000
+ bd_0                  516        5101  -0.7      0.00000000      0.000000e+00                      bd_0        5101      0.00000000
+ anti-bd_0             517       -5101   0.7      0.00000000      0.000000e+00                 anti-bd_0       -5101      0.00000000
+ bd_1                  518        5103  -0.7      0.00000000      0.000000e+00                      bd_1        5103      0.00000000
+ anti-bd_1             519       -5103   0.7      0.00000000      0.000000e+00                 anti-bd_1       -5103      0.00000000
+ bu_0                  524        5201   0.3      0.00000000      0.000000e+00                      bu_0        5201      0.00000000
+ anti-bu_0             525       -5201  -0.3      0.00000000      0.000000e+00                 anti-bu_0       -5201      0.00000000
+ bu_1                  526        5203   0.3      0.00000000      0.000000e+00                      bu_1        5203      0.00000000
+ anti-bu_1             527       -5203  -0.3      0.00000000      0.000000e+00                 anti-bu_1       -5203      0.00000000
+ bs_0                  534        5301  -0.7      0.00000000      0.000000e+00                      bs_0        5301      0.00000000
+ anti-bs_0             535       -5301   0.7      0.00000000      0.000000e+00                 anti-bs_0       -5301      0.00000000
+ bs_1                  536        5303  -0.7      0.00000000      0.000000e+00                      bs_1        5303      0.00000000
+ anti-bs_1             537       -5303   0.7      0.00000000      0.000000e+00                 anti-bs_1       -5303      0.00000000
+ bc_0                  546        5401   0.3      0.00000000      0.000000e+00                      bc_0        5401      0.00000000
+ anti-bc_0             547       -5401  -0.3      0.00000000      0.000000e+00                 anti-bc_0       -5401      0.00000000
+ bc_1                  548        5403   0.3      0.00000000      0.000000e+00                      bc_1        5403      0.00000000
+ anti-bc_1             549       -5403  -0.3      0.00000000      0.000000e+00                 anti-bc_1       -5403      0.00000000
+ bb_1                  566        5503  -0.7      0.00000000      0.000000e+00                      bb_1        5503      0.00000000
+ anti-bb_1             567       -5503   0.7      0.00000000      0.000000e+00                 anti-bb_1       -5503      0.00000000
+ vpho                  586       10022   0.0      0.00000000      0.000000e+00                      vpho           0      0.00000000
+ Xsd                   751       30343   0.0      1.60000000      0.000000e+00                       Xsd       30343      0.00000000
+ anti-Xsd              752      -30343   0.0      1.60000000      0.000000e+00                  anti-Xsd      -30343      0.00000000
+ Xsu                   753       30353   1.0      1.60000000      0.000000e+00                       Xsu       30353      0.00000000
+ anti-Xsu              754      -30353  -1.0      1.60000000      0.000000e+00                  anti-Xsu      -30353      0.00000000
+ Xss                   755       30363   0.0      1.80000000      0.000000e+00                       Xss       30363      0.00000000
+ anti-Xss              756      -30363   0.0      1.80000000      0.000000e+00                  anti-Xss      -30363      0.00000000
+ ~d_L                  859     1000001  -0.3    500.00000000      0.000000e+00                   unknown     1000001      0.00000000
+ ~d_Lbar               860    -1000001   0.3    500.00000000      0.000000e+00                   unknown    -1000001      0.00000000
+ ~u_L                  861     1000002   0.7    500.00000000      0.000000e+00                   unknown     1000002      0.00000000
+ ~u_Lbar               862    -1000002  -0.7    500.00000000      0.000000e+00                   unknown    -1000002      0.00000000
+ ~s_L                  863     1000003  -0.3    500.00000000      0.000000e+00                   unknown     1000003      0.00000000
+ ~s_Lbar               864    -1000003   0.3    500.00000000      0.000000e+00                   unknown    -1000003      0.00000000
+ ~c_L                  865     1000004   0.7    500.00000000      0.000000e+00                   unknown     1000004      0.00000000
+ ~c_Lbar               866    -1000004  -0.7    500.00000000      0.000000e+00                   unknown    -1000004      0.00000000
+ ~b_1                  867     1000005  -0.3    500.00000000      0.000000e+00                   unknown     1000005      0.00000000
+ ~b_1bar               868    -1000005   0.3    500.00000000      0.000000e+00                   unknown    -1000005      0.00000000
+ ~t_1                  869     1000006   0.7    500.00000000      0.000000e+00                   unknown     1000006      0.00000000
+ ~t_1bar               870    -1000006  -0.7    500.00000000      0.000000e+00                   unknown    -1000006      0.00000000
+ ~e_L-                 871     1000011  -1.0    500.00000000      0.000000e+00                   unknown     1000011      0.00000000
+ ~e_L+                 872    -1000011   1.0    500.00000000      0.000000e+00                   unknown    -1000011      0.00000000
+ ~nu_eL                873     1000012   0.0    500.00000000      0.000000e+00                   unknown     1000012      0.00000000
+ ~nu_eLbar             874    -1000012   0.0    500.00000000      0.000000e+00                   unknown    -1000012      0.00000000
+ ~mu_L-                875     1000013  -1.0    500.00000000      0.000000e+00                   unknown     1000013      0.00000000
+ ~mu_L+                876    -1000013   1.0    500.00000000      0.000000e+00                   unknown    -1000013      0.00000000
+ ~nu_muL               877     1000014   0.0    500.00000000      0.000000e+00                   unknown     1000014      0.00000000
+ ~nu_muLbar            878    -1000014   0.0    500.00000000      0.000000e+00                   unknown    -1000014      0.00000000
+ ~tau_1-               879     1000015  -1.0    500.00000000      0.000000e+00                   unknown     1000015      0.00000000
+ ~tau_1+               880    -1000015   1.0    500.00000000      0.000000e+00                   unknown    -1000015      0.00000000
+ ~nu_tauL              881     1000016   0.0    500.00000000      0.000000e+00                   unknown     1000016      0.00000000
+ ~nu_tauLbar           882    -1000016   0.0    500.00000000      0.000000e+00                   unknown    -1000016      0.00000000
+ ~g                    883     1000021   0.0    500.00000000      0.000000e+00                   unknown     1000021      0.00000000
+ ~chi_10               884     1000022   0.0    500.00000000      0.000000e+00                   unknown     1000022      0.00000000
+ ~chi_20               885     1000023   0.0    500.00000000      0.000000e+00                   unknown     1000023      0.00000000
+ ~chi_1+               886     1000024   1.0    500.00000000      0.000000e+00                   unknown     1000024      0.00000000
+ ~chi_1-               887    -1000024  -1.0    500.00000000      0.000000e+00                   unknown    -1000024      0.00000000
+ ~chi_30               888     1000025   0.0    500.00000000      0.000000e+00                   unknown     1000025      0.00000000
+ ~chi_40               889     1000035   0.0    500.00000000      0.000000e+00                   unknown     1000035      0.00000000
+ ~chi_2+               890     1000037   1.0    500.00000000      0.000000e+00                   unknown     1000037      0.00000000
+ ~chi_2-               891    -1000037  -1.0    500.00000000      0.000000e+00                   unknown    -1000037      0.00000000
+ ~Gravitino            892     1000039   0.0    500.00000000      0.000000e+00                   unknown     1000039      0.00000000
+ ~d_R                  893     2000001  -0.3    500.00000000      0.000000e+00                   unknown     2000001      0.00000000
+ ~d_Rbar               894    -2000001   0.3    500.00000000      0.000000e+00                   unknown    -2000001      0.00000000
+ ~u_R                  895     2000002   0.7    500.00000000      0.000000e+00                   unknown     2000002      0.00000000
+ ~u_Rbar               896    -2000002  -0.7    500.00000000      0.000000e+00                   unknown    -2000002      0.00000000
+ ~s_R                  897     2000003  -0.3    500.00000000      0.000000e+00                   unknown     2000003      0.00000000
+ ~s_Rbar               898    -2000003   0.3    500.00000000      0.000000e+00                   unknown    -2000003      0.00000000
+ ~c_R                  899     2000004   0.7    500.00000000      0.000000e+00                   unknown     2000004      0.00000000
+ ~c_Rbar               900    -2000004  -0.7    500.00000000      0.000000e+00                   unknown    -2000004      0.00000000
+ ~b_2                  901     2000005  -0.3    500.00000000      0.000000e+00                   unknown     2000005      0.00000000
+ ~b_2bar               902    -2000005   0.3    500.00000000      0.000000e+00                   unknown    -2000005      0.00000000
+ ~t_2                  903     2000006   0.7    500.00000000      0.000000e+00                   unknown     2000006      0.00000000
+ ~t_2bar               904    -2000006  -0.7    500.00000000      0.000000e+00                   unknown    -2000006      0.00000000
+ ~e_R-                 905     2000011  -1.0    500.00000000      0.000000e+00                   unknown     2000011      0.00000000
+ ~e_R+                 906    -2000011   1.0    500.00000000      0.000000e+00                   unknown    -2000011      0.00000000
+ ~nu_eR                907     2000012   0.0    500.00000000      0.000000e+00                   unknown     2000012      0.00000000
+ ~nu_eRbar             908    -2000012   0.0    500.00000000      0.000000e+00                   unknown    -2000012      0.00000000
+ ~mu_R-                909     2000013  -1.0    500.00000000      0.000000e+00                   unknown     2000013      0.00000000
+ ~mu_R+                910    -2000013   1.0    500.00000000      0.000000e+00                   unknown    -2000013      0.00000000
+ ~nu_muR               911     2000014   0.0    500.00000000      0.000000e+00                   unknown     2000014      0.00000000
+ ~nu_muRbar            912    -2000014   0.0    500.00000000      0.000000e+00                   unknown    -2000014      0.00000000
+ ~tau_2-               913     2000015  -1.0    500.00000000      0.000000e+00                   unknown     2000015      0.00000000
+ ~tau_2+               914    -2000015   1.0    500.00000000      0.000000e+00                   unknown    -2000015      0.00000000
+ ~nu_tauR              915     2000016   0.0    500.00000000      0.000000e+00                   unknown     2000016      0.00000000
+ ~nu_tauRbar           916    -2000016   0.0    500.00000000      0.000000e+00                   unknown    -2000016      0.00000000
+ pi_tc0                917     3000111   0.0    110.00000000      0.000000e+00                   unknown     3000111      0.00000000
+ rho_tc0               918     3000113   0.0    210.00000000      0.000000e+00                   unknown     3000113      0.00000000
+ pi_tc+                919     3000211   1.0    110.00000000      0.000000e+00                   unknown     3000211      0.00000000
+ pi_tc-                920    -3000211  -1.0    110.00000000      0.000000e+00                   unknown    -3000211      0.00000000
+ rho_tc+               921     3000213   1.0    210.00000000      0.000000e+00                   unknown     3000213      0.00000000
+ rho_tc-               922    -3000213  -1.0    210.00000000      0.000000e+00                   unknown    -3000213      0.00000000
+ pi'_tc0               923     3000221   0.0    110.00000000      0.000000e+00                   unknown     3000221      0.00000000
+ omega_tc              924     3000223   0.0    210.00000000      0.000000e+00                   unknown     3000223      0.00000000
+ eta_tc0               925     3000331   0.0    350.00000000      0.000000e+00                   unknown     3000331      0.00000000
+ V8_tc                 926     3100021   0.0    500.00000000      0.000000e+00                   unknown     3100021      0.00000000
+ pi_22_1_tc            927     3100111   0.0    125.00000000      0.000000e+00                   unknown     3100111      0.00000000
+ rho_11_tc             928     3100113   0.0    400.00000000      0.000000e+00                   unknown     3100113      0.00000000
+ pi_22_8_tc            929     3200111   0.0    250.00000000      0.000000e+00                   unknown     3200111      0.00000000
+ rho_12_tc             930     3200113   0.0    350.00000000      0.000000e+00                   unknown     3200113      0.00000000
+ rho_21_tc             931     3300113   0.0    350.00000000      0.000000e+00                   unknown     3300113      0.00000000
+ rho_22_tc             932     3400113   0.0    300.00000000      0.000000e+00                   unknown     3400113      0.00000000
+ d*                    933     4000001  -0.3    400.00000000      0.000000e+00                   unknown     4000001      0.00000000
+ d*bar                 934    -4000001   0.3    400.00000000      0.000000e+00                   unknown    -4000001      0.00000000
+ u*                    935     4000002   0.7    400.00000000      0.000000e+00                   unknown     4000002      0.00000000
+ u*bar                 936    -4000002  -0.7    400.00000000      0.000000e+00                   unknown    -4000002      0.00000000
+ e*-                   937     4000011  -1.0    400.00000000      0.000000e+00                   unknown     4000011      0.00000000
+ e*bar+                938    -4000011   1.0    400.00000000      0.000000e+00                   unknown    -4000011      0.00000000
+ nu*_e0                939     4000012   0.0    400.00000000      0.000000e+00                   unknown     4000012      0.00000000
+ nu*_ebar0             940    -4000012   0.0    400.00000000      0.000000e+00                   unknown    -4000012      0.00000000
+ gv                4900021     4900021   0.0      0.00000000        0.0000e+00                        gv     4900021      0.00000000
+ Zv                4900023     4900023   0.0    125.00000000        6.5800e-23                        Zv     4900023      0.01000000
+ qv                4900101     4900101   0.0      1.00000000        0.0000e+00                        qv     4900101      0.00000000
+ qvbar            -4900101    -4900101   0.0      1.00000000        0.0000e+00                     qvbar    -4900101      0.00000000
+ pivDiag           4900111     4900111   0.0      1.20000000        5.0000e-12                   pivDiag     4900111      2.0000e-11
+ pivUp             4900211     4900211   0.0      1.20000000        0.0000e+00                     pivUp     4900211      0.00000000
+ pivDn            -4900211    -4900211   0.0      1.20000000        0.0000e+00                     pivDn    -4900211      0.00000000
+ rhovDiag          4900113     4900113   0.0      1.20000000        0.0000e+00                  rhovDiag     4900113      0.00000000
+ rhovUp            4900213     4900213   0.0      1.20000000        0.0000e+00                    rhovUp     4900213      0.00000000
+ rhovDn           -4900213    -4900213   0.0      1.20000000        0.0000e+00                    rhovDn    -4900213      0.00000000
+ Graviton*             941     5000039   0.0   1000.00000000      0.000000e+00                   unknown     5000039      0.00000000
+ nu_Re                 942     9900012   0.0    500.00000000      0.000000e+00                   unknown     9900012      0.00000000
+ nu_Rmu                943     9900014   0.0    500.00000000      0.000000e+00                   unknown     9900014      0.00000000
+ nu_Rtau               944     9900016   0.0    500.00000000      0.000000e+00                   unknown     9900016      0.00000000
+ Z_R0                  945     9900023   0.0   1200.00000000      0.000000e+00                   unknown     9900023      0.00000000
+ W_R+                  946     9900024   1.0    750.00000000      0.000000e+00                   unknown     9900024      0.00000000
+ W_R-                  947    -9900024  -1.0    750.00000000      0.000000e+00                   unknown    -9900024      0.00000000
+ H_L++                 948     9900041   2.0    200.00000000      0.000000e+00                   unknown     9900041      0.00000000
+ H_L--                 949    -9900041  -2.0    200.00000000      0.000000e+00                   unknown    -9900041      0.00000000
+ H_R++                 950     9900042   2.0    200.00000000      0.000000e+00                   unknown     9900042      0.00000000
+ H_R--                 951    -9900042  -2.0    200.00000000      0.000000e+00                   unknown    -9900042      0.00000000
+ He3[0.0]               49  1000020030   2.0      2.80923000      1.000000e+15                       He3           0      0.00000000
+ He3~[0.0]             391 -1000020030  -2.0      2.80923000      1.000000e+15                  anti-He3           0      0.00000000
+ Li7[0.0]              988  1000030070   3.0      6.53536500      0.000000e+00                   unknown           0      0.00000000
+ Be8[0.0]              992  1000040080   4.0      7.45689300      0.000000e+00                   unknown           0      0.00000000
+ Be9[0.0]              959  1000040090   4.0      8.39479200      0.000000e+00                   unknown           0      0.00000000
+ Be10[0.0]             993  1000040100   4.0      9.32754500      0.000000e+00                   unknown           0      0.00000000
+ B10[0.0]              994  1000050100   5.0      9.32698900      0.000000e+00                   unknown           0      0.00000000
+ B11[0.0]              974  1000050110   5.0     10.25510100      0.000000e+00                   unknown           0      0.00000000
+ B12[0.0]              975  1000050120   5.0     11.19129500      0.000000e+00                   unknown           0      0.00000000
+ C12[0.0]              953  1000060120   6.0     11.17490000      0.000000e+00                   unknown           0      0.00000000
+ C13[0.0]              976  1000060130   6.0     12.11254500      0.000000e+00                   unknown           0      0.00000000
+ C14[0.0]              977  1000060140   6.0     13.04393400      0.000000e+00                   unknown           0      0.00000000
+ N14[0.0]              955  1000070140   7.0     13.04378000      0.000000e+00                   unknown           0      0.00000000
+ N15[0.0]              982  1000070150   7.0     13.04377800      0.000000e+00                   unknown           0      0.00000000
+ N16[0.0]              995  1000070160   7.0     14.90958500      0.000000e+00                   unknown           0      0.00000000
+ O16[0.0]              956  1000080160   8.0     14.89510000      0.000000e+00                   unknown           0      0.00000000
+ O17[0.0]              996  1000080170   8.0     15.83458700      0.000000e+00                   unknown           0      0.00000000
+ O18[0.0]              967  1000080180   8.0     16.76610800      0.000000e+00                   unknown           0      0.00000000
+ O19[0.0]              997  1000080190   8.0     17.70171700      0.000000e+00                   unknown           0      0.00000000
+ F19[0.0]              960  1000090190   9.0     17.69689600      0.000000e+00                   unknown           0      0.00000000
+ Ne22[0.0]             983  1000100220  10.0     20.48484100      0.000000e+00                   unknown           0      0.00000000
+ Ne23[0.0]             998  1000100230  10.0     21.41920500      0.000000e+00                   unknown           0      0.00000000
+ Na24[0.0]             999  1000110240  11.0     22.34743500      0.000000e+00                   unknown           0      0.00000000
+ Mg24[0.0]             979  1000120240  12.0     22.34192000      0.000000e+00                   unknown           0      0.00000000
+ Mg25[0.0]             989  1000120250  12.0     23.27415400      0.000000e+00                   unknown           0      0.00000000
+ Mg26[0.0]             980  1000120260  12.0     24.20262600      0.000000e+00                   unknown           0      0.00000000
+ Mg27[0.0]             981  1000120270  12.0     25.13574800      0.000000e+00                   unknown           0      0.00000000
+ Al27[0.0]             952  1000130270  13.0     25.12650000      0.000000e+00                   unknown           0      0.00000000
+ Al28[0.0]             972  1000130280  13.0     26.06497800      0.000000e+00                   unknown           0      0.00000000
+ Si28[0.0]             957  1000140280  14.0     26.05320000      0.000000e+00                   unknown           0      0.00000000
+ Si29[0.0]             964  1000140290  14.0     26.99142700      0.000000e+00                   unknown           0      0.00000000
+ Si30[0.0]             968  1000140300  14.0     27.92038300      0.000000e+00                   unknown           0      0.00000000
+ P31[0.0]             1000  1000150310  15.0     28.85186900      0.000000e+00                   unknown           0      0.00000000
+ Cl39[0.0]            1001  1000170390  17.0     36.29846000      0.000000e+00                   unknown           0      0.00000000
+ Cl40[0.0]            1002  1000170400  17.0     37.23220100      0.000000e+00                   unknown           0      0.00000000
+ Ar36[0.0]            1003  1000180360  18.0     33.50354900      0.000000e+00                   unknown           0      0.00000000
+ Ar40[0.0]             973  1000180400  18.0     37.22471500      0.000000e+00                   unknown           0      0.00000000
+ Cr50[0.0]            1004  1000240500  24.0     46.52443900      0.000000e+00                   unknown           0      0.00000000
+ Cr52[0.0]             978  1000240520  24.0     48.37010000      0.000000e+00                   unknown           0      0.00000000
+ Cr53[0.0]             990  1000240530  24.0     49.31389400      0.000000e+00                   unknown           0      0.00000000
+ Cr54[0.0]            1005  1000240540  24.0     50.24374100      0.000000e+00                   unknown           0      0.00000000
+ Mn55[0.0]             991  1000250550  25.0     51.17445700      0.000000e+00                   unknown           0      0.00000000
+ Fe54[0.0]             966  1000260540  26.0     50.24442100      0.000000e+00                   unknown           0      0.00000000
+ Fe56[0.0]             961  1000260560  26.0     52.10305600      0.000000e+00                   unknown           0      0.00000000
+ Fe57[0.0]             969  1000260570  26.0     53.03497500      0.000000e+00                   unknown           0      0.00000000
+ Fe59[0.0]            1006  1000260590  26.0     54.89748000      0.000000e+00                   unknown           0      0.00000000
+ Ni58[0.0]             984  1000280580  28.0     53.96642200      0.000000e+00                   unknown           0      0.00000000
+ Ni60[0.0]             985  1000280600  28.0     55.82516400      0.000000e+00                   unknown           0      0.00000000
+ Ni61[0.0]            1007  1000280610  28.0     56.75690900      0.000000e+00                   unknown           0      0.00000000
+ Ni62[0.0]             986  1000280620  28.0     57.68587700      0.000000e+00                   unknown           0      0.00000000
+ Ni63[0.0]            1008  1000280630  28.0     58.61860500      0.000000e+00                   unknown           0      0.00000000
+ Ni64[0.0]             987  1000280640  28.0     59.54851200      0.000000e+00                   unknown           0      0.00000000
+ Cu63[0.0]             954  1000290630  29.0     58.61860000      0.000000e+00                   unknown           0      0.00000000
+ Cu65[0.0]             958  1000290650  29.0     60.47984200      0.000000e+00                   unknown           0      0.00000000
+ Mo92[0.0]            1009  1000420920  42.0     85.61063000      0.000000e+00                   unknown           0      0.00000000
+ Mo95[0.0]            1010  1000420950  42.0     88.40421000      0.000000e+00                   unknown           0      0.00000000
+ Mo96[0.0]            1011  1000420960  42.0     89.33462100      0.000000e+00                   unknown           0      0.00000000
+ Mo97[0.0]            1012  1000420970  42.0     90.26736500      0.000000e+00                   unknown           0      0.00000000
+ Mo98[0.0]            1013  1000420980  42.0     91.19828700      0.000000e+00                   unknown           0      0.00000000
+ Mo100[0.0]           1014  1000421000  42.0     93.06320300      0.000000e+00                   unknown           0      0.00000000
+ Pd108[0.0]           1015  1000461080  46.0    100.51181600      0.000000e+00                   unknown           0      0.00000000
+ Au197[0.0]           1020  1000791970  79.0    183.43336000      0.000000e+00                   unknown           0      0.00000000
+ Pb207[0.0]            962  1000822070  82.0    192.79676500      0.000000e+00                   unknown           0      0.00000000
+ Pb208[0.0]            963  1000822080  82.0    193.72896200      0.000000e+00                   unknown           0      0.00000000
+ Pb206[0.0]            965  1000822060  82.0    191.86393700      0.000000e+00                   unknown           0      0.00000000
+ Pb204[0.0]            970  1000822040  82.0    189.99962700      0.000000e+00                   unknown           0      0.00000000
+ Intermediate          971   -99000000   0.0      0.00000000      0.000000e+00                   unknown           0      0.00000000
 #
 END PARTICLE
diff --git a/GaudiExamples/tests/qmtest/gaudiexamples.qms/particlepropsvc.qmt b/GaudiExamples/tests/qmtest/gaudiexamples.qms/particlepropsvc.qmt
index fccc856a592f9e44da76e7d3a2afef39c2a8f32f..87f32038d35bc758bab6eef09195f301e6a78284 100644
--- a/GaudiExamples/tests/qmtest/gaudiexamples.qms/particlepropsvc.qmt
+++ b/GaudiExamples/tests/qmtest/gaudiexamples.qms/particlepropsvc.qmt
@@ -18,7 +18,11 @@ from Configurables import GaudiExamples__GaudiPPS as GaudiPPS
 
 importOptions("Common.opts")
 
-ParticlePropertySvc( ParticlePropertiesFile = "../data/ParticleTable.txt" )
+from pathlib import Path
+ParticlePropertiesFilePath = Path("..") / "data" / "ParticleTable.txt"
+
+ParticlePropertySvc( ParticlePropertiesFile = str(ParticlePropertiesFilePath) )
+
 
 ApplicationMgr( EvtMax = 1,
                 EvtSel = 'NONE',
diff --git a/GaudiKernel/dict/dictionary.h b/GaudiKernel/dict/dictionary.h
index 8157c3d6f27a0602c8d294db05c0c0a21081fd7f..d9778bc142a36f6c49ecf2c0899c575fc9710a42 100644
--- a/GaudiKernel/dict/dictionary.h
+++ b/GaudiKernel/dict/dictionary.h
@@ -83,7 +83,6 @@
 #include "GaudiKernel/INamedInterface.h"
 #include "GaudiKernel/IOpaqueAddress.h"
 #include "GaudiKernel/IPartPropSvc.h"
-#include "GaudiKernel/IParticlePropertySvc.h"
 #include "GaudiKernel/IPartitionControl.h"
 #include "GaudiKernel/IPersistencySvc.h"
 #include "GaudiKernel/IProperty.h"
diff --git a/GaudiKernel/dict/dictionary.xml b/GaudiKernel/dict/dictionary.xml
index 52d89fe9309bf0fac6b42bcdf5b76b32e8f82351..174dd44de1c5641e43da991a88cde5c47f21d46a 100644
--- a/GaudiKernel/dict/dictionary.xml
+++ b/GaudiKernel/dict/dictionary.xml
@@ -89,7 +89,6 @@
   <class name="INTupleSvc"/>
   <!--class name="IObjManager"/-->
   <class name="IOpaqueAddress"/>
-  <class name="IParticlePropertySvc"/>
   <class name="IPartPropSvc"/>
   <class name="IPartitionControl"/>
   <class name="IPersistencySvc"/>
diff --git a/GaudiKernel/include/Gaudi/cxx/SynchronizedValue.h b/GaudiKernel/include/Gaudi/cxx/SynchronizedValue.h
new file mode 100644
index 0000000000000000000000000000000000000000..c96029ddc6b1cf311821a7c714642593b987ed0b
--- /dev/null
+++ b/GaudiKernel/include/Gaudi/cxx/SynchronizedValue.h
@@ -0,0 +1,108 @@
+/***********************************************************************************\
+* (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations *
+*                                                                                   *
+* This software is distributed under the terms of the Apache version 2 licence,     *
+* copied verbatim in the file "LICENSE".                                            *
+*                                                                                   *
+* In applying this licence, CERN does not waive the privileges and immunities       *
+* granted to it by virtue of its status as an Intergovernmental Organization        *
+* or submit itself to any jurisdiction.                                             *
+\***********************************************************************************/
+#pragma once
+#include <functional>
+#include <mutex>
+#include <shared_mutex>
+#include <tuple>
+#include <type_traits>
+#include <utility>
+
+namespace Gaudi::cxx {
+
+  namespace details {
+
+    template <typename Value, typename... Args>
+    using require_constructible_t = std::enable_if_t<std::is_constructible_v<Value, Args...>>;
+
+  } // namespace details
+
+  // C++20: replace with http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0290r2.html
+  //         http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4033.html
+
+  template <typename Value, typename Mutex = std::mutex,
+            typename ReadLock  = std::conditional_t<std::is_same_v<std::shared_mutex, Mutex>, std::shared_lock<Mutex>,
+                                                   std::lock_guard<Mutex>>,
+            typename WriteLock = std::lock_guard<Mutex>>
+  class SynchronizedValue {
+    static_assert( !std::is_reference_v<Value>, "Value must not be a reference" );
+    Value         m_obj;
+    mutable Mutex m_mtx;
+
+  public:
+    template <typename... Args, typename = details::require_constructible_t<Value, Args...>>
+    SynchronizedValue( Args&&... args ) : m_obj{ std::forward<Args>( args )... } {}
+
+    SynchronizedValue( const SynchronizedValue& rhs ) {
+      static_assert( std::is_default_constructible_v<Value> ); // bound to hold, as otherwise we wouldn't get this
+                                                               // far... so for 'documnentation purpose' really (C++20:
+                                                               // turn into a `requires` clause )...
+      static_assert( std::is_copy_assignable_v<Value> );
+      auto lock = std::scoped_lock{ rhs.m_mtx, m_mtx };
+      m_obj     = rhs.m_obj;
+    }
+
+    SynchronizedValue& operator=( const SynchronizedValue& rhs ) {
+      static_assert( std::is_copy_assignable_v<Value> );
+      if ( this != &rhs ) {
+        auto lock = std::scoped_lock{ rhs.m_mtx, m_mtx };
+        m_obj     = rhs.m_obj;
+      }
+      return *this;
+    }
+
+    SynchronizedValue( SynchronizedValue&& rhs ) {
+      static_assert( std::is_default_constructible_v<Value> ); // bound to hold, as otherwise we wouldn't get this
+                                                               // far... so for 'documnentation purpose' really (C++20:
+                                                               // turn into a `requires` clause )...
+      static_assert( std::is_move_assignable_v<Value> );
+      auto lock = std::scoped_lock{ rhs.m_mtx, m_mtx };
+      m_obj     = std::move( rhs.m_obj );
+    }
+
+    SynchronizedValue& operator=( SynchronizedValue&& rhs ) {
+      static_assert( std::is_move_assignable_v<Value> );
+      if ( this != &rhs ) {
+        auto lock = std::scoped_lock{ rhs.m_mtx, m_mtx };
+        m_obj     = std::move( rhs.m_obj );
+      }
+      return *this;
+    }
+
+    template <typename F, typename... Args,
+              typename = std::enable_if_t<std::is_invocable_v<F, Value&, Args...> &&
+                                          !std::is_invocable_v<F, const Value&, Args...>>>
+    decltype( auto ) with_lock( F&& f, Args&&... args ) {
+      WriteLock _{ m_mtx };
+      return std::invoke( std::forward<F>( f ), m_obj, std::forward<Args>( args )... );
+    }
+
+    template <typename F, typename... Args, typename = std::enable_if_t<std::is_invocable_v<F, const Value&, Args...>>>
+    decltype( auto ) with_lock( F&& f, Args&&... args ) const {
+      ReadLock _{ m_mtx };
+      return std::invoke( std::forward<F>( f ), m_obj, std::forward<Args>( args )... );
+    }
+  };
+
+  // transform an f(T,...) into an f(SynchronizedValue<T>,...)
+  template <typename Fun>
+  auto with_lock( Fun&& f ) {
+    return [f = std::forward<Fun>( f )]( auto& p, auto&&... args ) -> decltype( auto ) {
+      return p.with_lock( f, std::forward<decltype( args )>( args )... );
+    };
+  }
+  // call f(T) for each element in a container of Synced<T>
+  template <typename ContainerOfSynced, typename Fun>
+  void for_each( ContainerOfSynced& c, Fun&& f ) {
+    std::for_each( begin( c ), end( c ), with_lock( std::forward<Fun>( f ) ) );
+  }
+
+} // namespace Gaudi::cxx
diff --git a/GaudiKernel/include/GaudiKernel/FindByMassRange.h b/GaudiKernel/include/GaudiKernel/FindByMassRange.h
deleted file mode 100644
index ebd621f36e839b769c85b5bf60319b94ad211fc3..0000000000000000000000000000000000000000
--- a/GaudiKernel/include/GaudiKernel/FindByMassRange.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/***********************************************************************************\
-* (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
-*                                                                                   *
-* This software is distributed under the terms of the Apache version 2 licence,     *
-* copied verbatim in the file "LICENSE".                                            *
-*                                                                                   *
-* In applying this licence, CERN does not waive the privileges and immunities       *
-* granted to it by virtue of its status as an Intergovernmental Organization        *
-* or submit itself to any jurisdiction.                                             *
-\***********************************************************************************/
-#ifndef GAUDIKERNEL_FINDBYMASSRANGE_H
-#define GAUDIKERNEL_FINDBYMASSRANGE_H
-
-// Include files
-#include "GaudiKernel/IParticlePropertySvc.h"
-#include "GaudiKernel/ParticleProperty.h"
-
-/** @class FindByMassRange FindByMassRange.h GaudiKernel/FindByMassRange.h
-    IParticlePropertySvc::value_type is a typedef that defines the
-    internal service storage type that is returned when an iterator
-    is dereferenced. In this case it corresponds to
-    pair< std::string, ParticleProperty* > as the ParticlePropertySvc
-    stores all its data in a map. The string will be the map's key
-    (usually the particle name) and the pointer is a pointer to the
-    ParticleProperty object.
-
-    The data is accessed in the following manner:
-    const IParticlePropertySvc::value_type& pp_ref;
-    std::string key = pp_ref.first;
-    ParticleProperty* pp = pp_ref.second;
-
-    @author Ian Last
-*/
-class GAUDI_API FindByMassRange {
-
-public:
-  /// Constructor - sets the mass range in Gev.
-  FindByMassRange( double low, double high ) : m_low( low ), m_high( high ) {}
-
-  /** This routine check to see if the mass of a particle lies within the
-      given mass range and returns true if it does.
-  */
-  bool operator()( const ParticleProperty* pp ) const { return pp && pp->mass() >= m_low && pp->mass() <= m_high; }
-
-private:
-  /// Low and high mass range (GeV)
-  double m_low;
-  double m_high;
-};
-
-#endif // GAUDIKERNEL_FINDBYMASSRANGE_H
diff --git a/GaudiKernel/include/GaudiKernel/IParticlePropertySvc.h b/GaudiKernel/include/GaudiKernel/IParticlePropertySvc.h
deleted file mode 100644
index 6cbc1e7967bd8d348e95b6a7bba31a61926222d4..0000000000000000000000000000000000000000
--- a/GaudiKernel/include/GaudiKernel/IParticlePropertySvc.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/***********************************************************************************\
-* (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
-*                                                                                   *
-* This software is distributed under the terms of the Apache version 2 licence,     *
-* copied verbatim in the file "LICENSE".                                            *
-*                                                                                   *
-* In applying this licence, CERN does not waive the privileges and immunities       *
-* granted to it by virtue of its status as an Intergovernmental Organization        *
-* or submit itself to any jurisdiction.                                             *
-\***********************************************************************************/
-#ifndef GAUDIKERNEL_IPARTICLEPROPERTYSVC_H
-#define GAUDIKERNEL_IPARTICLEPROPERTYSVC_H
-
-// Include Files
-#include "GaudiKernel/IService.h"
-#include <vector>
-
-// Forward declarations.
-class ParticleProperty;
-
-/** @class IParticlePropertySvc IParticlePropertySvc.h GaudiKernel/IParticlePropertySvc.h
-
-    This class is an interface to the ParticlePropertySvc.
-
-    @author Iain Last
-    @author G.Corti
-*/
-class GAUDI_API IParticlePropertySvc : virtual public IService {
-
-public:
-  /// InterfaceID
-  DeclareInterfaceID( IParticlePropertySvc, 3, 0 );
-
-  // Typedefs for container type
-  typedef std::vector<ParticleProperty*> VectPP;
-  typedef VectPP::const_iterator         const_iterator;
-  typedef VectPP::iterator               iterator;
-
-  /** Create a new particle property
-      @param  particle  String name of the particle
-      @param  geantId  Geant3 ID of the particle
-      @param  jetsetId Jetset ID of the particle
-      @param  charge  Particle charge (/e)
-      @param  mass  Particle mass (MeV)
-      @param  tlife Particle lifetime (s)
-      @param  evtName  String name of the particle in EvtGen
-      @param  pythiaId  ID of particle in Pythia
-      @return StatusCode - SUCCESS if the particle property was added
-  */
-  virtual StatusCode push_back( const std::string& particle, int geantId, int jetsetId, double charge, double mass,
-                                double tlife, const std::string& evtName, int pythiaId, double maxWidth ) = 0;
-
-  /** Create a new particle property.
-      @param  pp a particle property class
-      @return StatusCode - SUCCESS if the particle property was added
-  */
-  virtual StatusCode push_back( ParticleProperty* pp ) = 0;
-
-  /// Get a const reference to the begining of the container.
-  virtual const_iterator begin() const = 0;
-
-  /// Get a const reference to the end of the container.
-  virtual const_iterator end() const = 0;
-
-  /// Get the container size.
-  virtual int size() const = 0;
-
-  /// Retrieve an object by geant3 id.
-  virtual ParticleProperty* find( int geantId ) = 0;
-
-  /// Retrieve an object by StdHep id
-  virtual ParticleProperty* findByStdHepID( int stdHepID ) = 0;
-
-  /// Retrieve an object by name.
-  virtual ParticleProperty* find( const std::string& name ) = 0;
-
-  /// Retrieve an object by PythiaID
-  virtual ParticleProperty* findByPythiaID( int pythiaID ) = 0;
-
-  /// Erase a property by geant3 id.
-  virtual StatusCode erase( int geantId ) = 0;
-
-  /// Erase a property by particle name.
-  virtual StatusCode erase( const std::string& name ) = 0;
-
-  /// Erase a property by StdHep id
-  virtual StatusCode eraseByStdHepID( int stdHepID ) = 0;
-};
-
-#endif
diff --git a/GaudiKernel/include/GaudiKernel/ParticleProperty.h b/GaudiKernel/include/GaudiKernel/ParticleProperty.h
deleted file mode 100644
index 5ac2a13c4ea2d7c2c8ed251dc5f77012f922be11..0000000000000000000000000000000000000000
--- a/GaudiKernel/include/GaudiKernel/ParticleProperty.h
+++ /dev/null
@@ -1,153 +0,0 @@
-/***********************************************************************************\
-* (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
-*                                                                                   *
-* This software is distributed under the terms of the Apache version 2 licence,     *
-* copied verbatim in the file "LICENSE".                                            *
-*                                                                                   *
-* In applying this licence, CERN does not waive the privileges and immunities       *
-* granted to it by virtue of its status as an Intergovernmental Organization        *
-* or submit itself to any jurisdiction.                                             *
-\***********************************************************************************/
-#ifndef GAUDIKERNEL_PARTICLEPROPERTY_H
-#define GAUDIKERNEL_PARTICLEPROPERTY_H 1
-// ============================================================================
-// Include files
-// ============================================================================
-#include <iomanip>
-#include <ostream>
-#include <string>
-// ============================================================================
-
-/** @class ParticleProperty ParticleProperty.h GaudiKernel/ParticleProperty.h
- *
- *  A trivial class to hold information about a single particle properties.
- *  All particle properties are accessible through accessor functions
- *
- *  @author  Iain Last,G.Corti
- */
-class ParticleProperty final {
-public:
-  /// Constructors
-  ParticleProperty() = default;
-
-  ParticleProperty( std::string particle, int geantId, int jetsetId, double charge, double mass, double tlife,
-                    std::string evtgenName, int pythiaId, double maxWidth )
-      : m_name( std::move( particle ) )
-      , m_idgeant( geantId )
-      , m_idjetset( jetsetId )
-      , m_charge( charge )
-      , m_mass( mass )
-      , m_tlife( tlife )
-      , m_evtgenName( std::move( evtgenName ) )
-      , m_pythiaId( pythiaId )
-      , m_maxWidth( maxWidth ) {}
-
-  /// Destructor.
-  ~ParticleProperty() = default;
-
-  /// Get the particle name.
-  const std::string& particle() const { return m_name; }
-
-  /// Set the particle name.
-  void setParticle( const std::string& particle ) { m_name = particle; }
-
-  /// Get the GEANT3 ID.
-  int geantID() const { return m_idgeant; }
-
-  /// Set the GEANT3 ID.
-  void setGeantID( int id ) { m_idgeant = id; }
-
-  /// Get the PDG (= JETSET) ID
-  int pdgID() const { return m_idjetset; }
-
-  /// Set the PDG (= JETSET) ID
-  void setPdgID( int id ) { m_idjetset = id; }
-
-  /// Get the JETSET(StdHep) ID.
-  int jetsetID() const { return m_idjetset; }
-
-  /// Set the JETSET(StdHep) ID.
-  void setJetsetID( int id ) { m_idjetset = id; }
-
-  /// Get the particle charge.
-  double charge() const { return m_charge; }
-
-  /// Set the particle charge.
-  void setCharge( double q ) { m_charge = q; }
-
-  /// Get the particle mass.
-  double mass() const { return m_mass; }
-
-  /// Set the particle charge.
-  void setMass( double m ) { m_mass = m; }
-
-  /// Get the particle lifetime.
-  double lifetime() const { return m_tlife; }
-
-  /// Set the particle lifetime.
-  void setLifetime( double t ) { m_tlife = t; }
-
-  /// Get the EvtGen name
-  const std::string& evtGenName() const { return m_evtgenName; }
-
-  /// Set the EvtGen name
-  void setEvtGenName( const std::string& name ) { m_evtgenName = name; }
-
-  /// Get the Pythia ID
-  int pythiaID() const { return m_pythiaId; }
-
-  /// Set the Pythia ID
-  void setPythiaID( int pId ) { m_pythiaId = pId; }
-
-  /// Get the max width deviation
-  double maxWidth() const { return m_maxWidth; }
-
-  /// Set the max width deviation
-  void setMaxWidth( double mW ) { m_maxWidth = mW; }
-
-  /// get the pointer to the antiparticle
-  const ParticleProperty* antiParticle() const { return m_anti; }
-  /// set the pointer to the antiparticle
-  void setAntiParticle( const ParticleProperty* p ) { m_anti = p; }
-
-  friend std::ostream& operator<<( std::ostream& stream, const ParticleProperty& pp ) {
-    stream << "Name : " << pp.m_name << ", Geant ID : " << pp.m_idgeant << ", JetSet ID : " << pp.m_idjetset
-           << ", Charge (/e): " << pp.m_charge << ", Mass (MeV): " << pp.m_mass << ", Lifetime (ns): " << pp.m_tlife
-           << ", EvtGen Name: " << pp.m_evtgenName << ", Pythia ID: " << pp.m_pythiaId
-           << ", Max width deviation (MeV): " << pp.m_maxWidth;
-    return stream;
-  }
-
-private:
-  /// The particle name.
-  std::string m_name;
-
-  /// The GEANT ID.
-  int m_idgeant;
-
-  /// The Jetset ID.
-  int m_idjetset;
-
-  /// The charge.
-  double m_charge;
-
-  /// The mass.
-  double m_mass;
-
-  /// The lifetime.
-  double m_tlife;
-
-  /// The EvtGen Name
-  std::string m_evtgenName;
-
-  /// The Pythia ID
-  int m_pythiaId;
-
-  /// The maximum width deviation
-  double m_maxWidth;
-
-  /// the antiparticle
-  const ParticleProperty* m_anti = nullptr;
-};
-
-#endif
diff --git a/GaudiMP/dict/gaudimp_dict.h b/GaudiMP/dict/gaudimp_dict.h
index 0720ab552c7c4beaacaa6d60e424d31f95d74430..6f37abae9b4142480b01025d13573aac64506af1 100644
--- a/GaudiMP/dict/gaudimp_dict.h
+++ b/GaudiMP/dict/gaudimp_dict.h
@@ -21,7 +21,6 @@
 #include "GaudiKernel/Algorithm.h"
 #include "GaudiKernel/Chrono.h"
 #include "GaudiKernel/ChronoEntity.h"
-#include "GaudiKernel/ParticleProperty.h"
 #include "GaudiKernel/Range.h"
 #include "GaudiKernel/SerializeSTL.h"
 #include "GaudiKernel/Stat.h"
diff --git a/GaudiPartProp/CMakeLists.txt b/GaudiPartProp/CMakeLists.txt
index 95eda5958f51e8eeb9340cd475e239370ab723ea..3aad2a4c156109d6d8bdadb5176c804ae28291d5 100644
--- a/GaudiPartProp/CMakeLists.txt
+++ b/GaudiPartProp/CMakeLists.txt
@@ -1,5 +1,5 @@
 #####################################################################################
-# (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations #
+# (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations #
 #                                                                                   #
 # This software is distributed under the terms of the Apache version 2 licence,     #
 # copied verbatim in the file "LICENSE".                                            #
@@ -10,7 +10,43 @@
 #####################################################################################
 # GaudiPartProp subdirectory
 
-gaudi_add_module(GaudiPartProp
-                 SOURCES src/ParticlePropertySvc.cpp
-                 LINK GaudiKernel
-                      Boost::headers)
+if(NOT GAUDI_ENABLE_GAUDIPARTPROP)
+   return()
+endif()
+
+gaudi_add_library(GaudiPartProp
+    SOURCES
+        src/CC.cpp
+        src/Decay.cpp
+        src/IParticlePropertySvc.cpp
+        src/NodePIDs.cpp
+        src/Nodes.cpp
+        src/ParticleID.cpp
+        src/ParticleProperty.cpp
+        src/Symbols.cpp
+        src/TrackDefaultParticles.cpp
+        src/iNode.cpp
+    LINK
+        PUBLIC
+            Gaudi::GaudiKernel
+)
+
+gaudi_add_module(GaudiPartPropModule
+    SOURCES
+        src/Module/ParticlePropertySvc.cpp
+    LINK
+        GaudiPartProp
+)
+
+gaudi_add_dictionary(GaudiPartPropDict
+    HEADERFILES dict/PartPropDict.h
+    SELECTION dict/PartProp.xml
+    LINK
+        GaudiPartProp
+)
+
+gaudi_install(PYTHON)
+
+gaudi_install(SCRIPTS)
+
+gaudi_add_tests(QMTest)
diff --git a/GaudiPartProp/dict/PartProp.xml b/GaudiPartProp/dict/PartProp.xml
new file mode 100644
index 0000000000000000000000000000000000000000..dac29e7535d6730d6b93d783ef609160d2594838
--- /dev/null
+++ b/GaudiPartProp/dict/PartProp.xml
@@ -0,0 +1,58 @@
+<!--
+    (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations
+
+    This software is distributed under the terms of the Apache version 2 licence,
+    copied verbatim in the file "LICENSE".
+
+    In applying this licence, CERN does not waive the privileges and immunities
+    granted to it by virtue of its status as an Intergovernmental Organization
+    or submit itself to any jurisdiction.
+-->
+<!--
+     * ========================================================================
+     * @file
+     * The seleciton file to build Reflex dictionaries for
+     * Kernel/PartProp package
+     * @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     * @date 2008-12-01
+     * ========================================================================
+-->
+
+<lcgdict>
+
+  <class name = "Gaudi::ParticleID"                />
+  <class name = "Gaudi::ParticleProperty"          />
+  <class name = "Gaudi::Interfaces::IParticlePropertySvc"      />
+  <class name = "Gaudi::Interfaces::IParticlePropertySvc::ParticleProperties" />
+  <class name = "Gaudi::Interfaces::IParticlePropertySvc::iterator"           />
+
+  <class name = "std::vector<Gaudi::ParticleID>"              />
+  <class name = "std::vector<const Gaudi::ParticleProperty*>" />
+
+
+  <enum name = "Gaudi::ParticleID::Quark"    />
+  <enum name = "Gaudi::ParticleID::Location" />
+
+  <function name = "Gaudi::ParticleProperties::printAsTable"   />
+  <function name = "Gaudi::ParticleProperties::particle"       />
+  <function name = "Gaudi::ParticleProperties::particleID"     />
+  <function name = "Gaudi::ParticleProperties::byPythiaID"     />
+  <function name = "Gaudi::ParticleProperties::byEvtGenName"   />
+  <function name = "Gaudi::ParticleProperties::allProperties"  />
+  <function name = "Gaudi::ParticleProperties::index"          />
+
+  <class name = "Gaudi::Decays::Symbols"/>
+
+  <class name = "Gaudi::Decays::Decay"       />
+  <class name = "Gaudi::Decays::Decay::Item" />
+  <class name = "std::vector<Gaudi::Decays::Decay>"       />
+  <class name = "std::vector<Gaudi::Decays::Decay::Item>" />
+
+  <class name    = "Gaudi::Decays::iNode"    />
+  <class name    = "Gaudi::Decays::Node"     />
+  <class pattern = "Gaudi::Decays::Nodes::*" />
+  <class name    = "Gaudi::Decays::Dict::NodeOps" />
+  <class name    = "Gaudi::Decays::NodeList" />
+  <class name    = "std::vector<Gaudi::Decays::Nodes::_Node>" />
+
+</lcgdict>
diff --git a/GaudiPartProp/dict/PartPropDict.h b/GaudiPartProp/dict/PartPropDict.h
new file mode 100644
index 0000000000000000000000000000000000000000..5684e6d0d1f7a2026ed74065adb33065d71fc9a1
--- /dev/null
+++ b/GaudiPartProp/dict/PartPropDict.h
@@ -0,0 +1,65 @@
+/***********************************************************************************\
+* (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations *
+*                                                                                   *
+* This software is distributed under the terms of the Apache version 2 licence,     *
+* copied verbatim in the file "LICENSE".                                            *
+*                                                                                   *
+* In applying this licence, CERN does not waive the privileges and immunities       *
+* granted to it by virtue of its status as an Intergovernmental Organization        *
+* or submit itself to any jurisdiction.                                             *
+\***********************************************************************************/
+#include <Gaudi/Decays/Decay.h>
+#include <Gaudi/Decays/Nodes.h>
+#include <Gaudi/Decays/NodesPIDs.h>
+#include <Gaudi/Decays/Symbols.h>
+#include <Gaudi/Decays/iNode.h>
+#include <Gaudi/Interfaces/IParticlePropertySvc.h>
+#include <Gaudi/ParticleID.h>
+#include <Gaudi/ParticleProperty.h>
+
+namespace Gaudi::Decays {
+  namespace Dict {
+    struct NodeOps {
+      typedef Decays::iNode iNode;
+      typedef Decays::Node  Node;
+      static bool           __call__( const iNode& node, const Gaudi::ParticleID& pid ) { return node( pid ); }
+      static bool __call__( const iNode& node, const Gaudi::ParticleProperty* pp ) { return node( pp->particleID() ); }
+      static bool __call__( const iNode& node, const int pid ) { return node( Gaudi::ParticleID( pid ) ); }
+      static bool __rrshift__( const iNode& node, const Gaudi::ParticleID& pid ) { return node( pid ); }
+      static bool __rrshift__( const iNode& node, const Gaudi::ParticleProperty* pp ) {
+        return node( pp->particleID() );
+      }
+      static bool __rrshift__( const iNode& node, const int pid ) { return node( Gaudi::ParticleID( pid ) ); }
+      static Node __or__( const iNode& n1, const iNode& n2 ) { return n1 || n2; }
+      static Node __or__( const iNode& n1, const std::string& n2 ) { return n1 || n2; }
+      static Node __or__( const iNode& n1, const Gaudi::ParticleID& n2 ) { return n1 || n2; }
+      static Node __or__( const iNode& n1, const Gaudi::ParticleProperty* n2 ) { return n1 || n2; }
+      static Node __or__( const iNode& n1, const Decays::Decay::Item& n2 ) { return n1 || n2; }
+      static Node __ror__( const iNode& n1, const std::string& n2 ) { return n1 || n2; }
+      static Node __ror__( const iNode& n1, const Gaudi::ParticleID& n2 ) { return n1 || n2; }
+      static Node __ror__( const iNode& n1, const Gaudi::ParticleProperty* n2 ) { return n1 || n2; }
+      static Node __ror__( const iNode& n1, const Decays::Decay::Item& n2 ) { return n1 || n2; }
+      static Node __and__( const iNode& n1, const iNode& n2 ) { return n1 && n2; }
+      static Node __and__( const iNode& n1, const std::string& n2 ) { return n1 && n2; }
+      static Node __and__( const iNode& n1, const Gaudi::ParticleID& n2 ) { return n1 && n2; }
+      static Node __and__( const iNode& n1, const Gaudi::ParticleProperty* n2 ) { return n1 && n2; }
+      static Node __and__( const iNode& n1, const Decays::Decay::Item& n2 ) { return n1 && n2; }
+      static Node __rand__( const iNode& n1, const std::string& n2 ) { return n1 && n2; }
+      static Node __rand__( const iNode& n1, const Gaudi::ParticleID& n2 ) { return n1 && n2; }
+      static Node __rand__( const iNode& n1, const Gaudi::ParticleProperty* n2 ) { return n1 && n2; }
+      static Node __rand__( const iNode& n1, const Decays::Decay::Item& n2 ) { return n1 && n2; }
+      static Node __rshift__( const iNode& n1, const iNode& n2 ) { return n1 && n2; }
+      static Node __invert__( const iNode& n1 ) { return ~n1; }
+    };
+  } // namespace Dict
+} // namespace Gaudi::Decays
+
+namespace {
+  struct PartProp_Instantiations {
+    std::vector<Gaudi::ParticleID>              m_pidv;
+    std::vector<const Gaudi::ParticleProperty*> m_ppv;
+
+    std::vector<Gaudi::Decays::Decay>       m_vd;
+    std::vector<Gaudi::Decays::Decay::Item> m_vi;
+  };
+} // namespace
diff --git a/GaudiPartProp/include/Gaudi/Decays/CC.h b/GaudiPartProp/include/Gaudi/Decays/CC.h
new file mode 100644
index 0000000000000000000000000000000000000000..2ff5c281b97488b04a01efccda4de42fdbc91391
--- /dev/null
+++ b/GaudiPartProp/include/Gaudi/Decays/CC.h
@@ -0,0 +1,58 @@
+/***********************************************************************************\
+* (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations *
+*                                                                                   *
+* This software is distributed under the terms of the Apache version 2 licence,     *
+* copied verbatim in the file "LICENSE".                                            *
+*                                                                                   *
+* In applying this licence, CERN does not waive the privileges and immunities       *
+* granted to it by virtue of its status as an Intergovernmental Organization        *
+* or submit itself to any jurisdiction.                                             *
+\***********************************************************************************/
+#pragma once
+
+#include <map>
+#include <set>
+#include <string>
+
+namespace Gaudi::Decays {
+  namespace CC {
+    /** @struct CmpCC
+     *  a bit specific comparison of strings, useful for
+     *  ordering according to the length as the primary parameter
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     */
+    struct CmpCC {
+      /** the only one essential method
+       *  The most long string is "less", otherwise the
+       *  standard comparison is applicable.
+       */
+      inline bool operator()( const std::string& v1, const std::string& v2 ) const {
+        const std::string::size_type s1 = v1.size();
+        const std::string::size_type s2 = v2.size();
+        return s1 < s2 ? false : s2 < s1 ? true : ( v1 < v2 );
+      }
+    };
+    /// the actual type of CC-map
+    typedef std::map<std::string, std::string, CmpCC> MapCC; // CC-MAP
+    /// the actual type of CC-set
+    typedef std::set<std::string, CmpCC> SetCC; // CC-SET
+
+    /** simple function to make charge conjugated inside the original string.
+     *  All substrings are subsutututed by their charge conjugates
+     *  @param orig the original sring
+     *  @param map_ the full map of substitutions
+     *  @param pos the starting position
+     *  @return charge-conjugated string
+     */
+    std::string cc( const std::string& decay, const MapCC& map_ );
+
+    /** simple function to make charge conjugated inside the original string.
+     *  All substrings are subsutututed by their charge conjugates
+     *  @param orig the original sring
+     *  @param map_ the full map of substitutions
+     *  @param pos the starting position
+     *  @return charge-conjugated string
+     */
+    std::string cc( const std::string& decay, const std::map<std::string, std::string>& map_ );
+  } // namespace CC
+} // namespace Gaudi::Decays
diff --git a/GaudiPartProp/include/Gaudi/Decays/Decay.h b/GaudiPartProp/include/Gaudi/Decays/Decay.h
new file mode 100644
index 0000000000000000000000000000000000000000..a7f48f82350d03ed968df82f6adc96803cb76823
--- /dev/null
+++ b/GaudiPartProp/include/Gaudi/Decays/Decay.h
@@ -0,0 +1,181 @@
+/***********************************************************************************\
+* (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations *
+*                                                                                   *
+* This software is distributed under the terms of the Apache version 2 licence,     *
+* copied verbatim in the file "LICENSE".                                            *
+*                                                                                   *
+* In applying this licence, CERN does not waive the privileges and immunities       *
+* granted to it by virtue of its status as an Intergovernmental Organization        *
+* or submit itself to any jurisdiction.                                             *
+\***********************************************************************************/
+#pragma once
+
+#include <Gaudi/ParticleID.h>
+#include <GaudiKernel/StatusCode.h>
+#include <string>
+#include <vector>
+
+namespace Gaudi {
+  namespace Interfaces {
+    class IParticlePropertySvc;
+  }
+  class ParticleProperty;
+} // namespace Gaudi
+
+namespace Gaudi::Decays {
+  /** @class Decay Kernel/Decay.h
+   *  The simple representation of "simple 1-step" decay (there are no trees!
+   *
+   *  @author  Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date   2008-03-31
+   */
+  class GAUDI_API Decay final {
+  public:
+    /** @class Item
+     *  the helper representation of the item in the decay chain
+     *  @author  Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date   2008-03-31
+     */
+    class Item final {
+    public:
+      /// the constructor from the particle property
+      Item( const Gaudi::ParticleProperty* pp = 0 );
+      /// the constructor from the particle name
+      Item( const std::string& name );
+      /// the constructor from the particle PID
+      Item( const Gaudi::ParticleID& pid );
+
+      /// get the particle name
+      const std::string& name() const { return m_name; }
+      /// get the particle PID
+      const Gaudi::ParticleID& pid() const { return m_pid; }
+      /// get the particle property
+      const Gaudi::ParticleProperty* pp() const { return m_pp; }
+
+      /// the default printout
+      std::ostream& fillStream( std::ostream& s ) const;
+
+      /// validate the item using the service
+      StatusCode validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const;
+      /// validate the item using the particle property object
+      StatusCode validate( const Gaudi::ParticleProperty* prop ) const;
+
+    private:
+      /// the particle name
+      mutable std::string m_name;
+      /// the particle PID
+      mutable Gaudi::ParticleID m_pid;
+      /// the source of properties
+      mutable const Gaudi::ParticleProperty* m_pp = nullptr;
+    };
+
+    /// the vector of items (the obvious representation of daughter particles)
+    typedef std::vector<Item> Items;
+
+  public:
+    Decay() = default;
+
+    /** the constructor from mother and daughters
+     *  @param mother the mother
+     *  @param daughters the daughters
+     */
+    Decay( const Gaudi::ParticleProperty* mother, const std::vector<const Gaudi::ParticleProperty*>& daughters );
+
+    /** the constructor from mother and daughters
+     *  @param mother the mother
+     *  @param daughters the daughters
+     */
+
+    Decay( const std::string& mother, const std::vector<std::string>& daughters );
+    /** the constructor from mother and daughters
+     *  @param mother the mother
+     *  @param daughters the daughters
+     */
+
+    Decay( const Gaudi::ParticleID& mother, const std::vector<Gaudi::ParticleID>& daughters );
+
+    /** the constructor from mother and daughters
+     *  @param mother the mother
+     *  @param daughters the daughters
+     */
+    Decay( const Item& mother, const std::vector<Item>& daughters );
+
+    /// get the mother(head) of the decay
+    const Item& mother() const { return m_mother; }
+    /// get all daughters
+    const Items& daughters() const { return m_daughters; }
+    /// get all daughters
+    const Items& children() const { return daughters(); }
+    /// get the number of daughters
+    size_t nDaughters() const { return m_daughters.size(); }
+    /// get the number of daughters
+    size_t nChildren() const { return m_daughters.size(); }
+    /** get the component by the number
+     *  @attention index 0 corresponds to the mother particle
+     *  @param index the index (0 corresponds to the mother particle)
+     *  @return the component
+     */
+    const Item& operator()( const unsigned int index ) const;
+    /** get the component by the number
+     *  @attention index 0 corresponds to th emother particle
+     *  @param index the index (0 corresponds to the mother particle)
+     *  @return the component
+     */
+    const Item& operator[]( const unsigned int index ) const { return ( *this )( index ); }
+
+    /// set the mother
+    void setMother( const Item& mom );
+    /// set the mother
+    void setMother( const Gaudi::ParticleProperty* mom );
+    /// set the mother
+    void setMother( const std::string& mom );
+    /// set the mother
+    void setMother( const Gaudi::ParticleID& mom );
+    /// set the daughters
+    void setDaughters( const Items& daugs );
+    /// set the daughters
+    void setDaughters( const std::vector<const Gaudi::ParticleProperty*>& daugs );
+    /// set the daughters
+    void setDaughters( const std::vector<std::string>& daugs );
+    /// set the daughters
+    void setDaughters( const std::vector<Gaudi::ParticleID>& daugs );
+    /// set the daughters
+    void setChildren( const Items& daugs ) { setDaughters( daugs ); }
+    /// set the daughters
+    void setChildren( const std::vector<const Gaudi::ParticleProperty*>& daugs ) { setDaughters( daugs ); }
+    /// set the daughters
+    void setChildren( const std::vector<std::string>& daugs ) { setDaughters( daugs ); }
+    /// set the daughters
+    void setChidlren( const std::vector<Gaudi::ParticleID>& daugs ) { setDaughters( daugs ); }
+
+    /// add the child
+    Decay& operator+=( const std::string& child );
+    /// add the child
+    Decay& operator+=( const Gaudi::ParticleID& child );
+    /// add the child
+    Decay& operator+=( const Gaudi::ParticleProperty* child );
+    /// add the child
+    Decay& operator+=( const Item& child );
+
+    /// validate the decay using the service
+    StatusCode validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const;
+
+    /// the default printout
+    std::ostream& fillStream( std::ostream& s ) const;
+    /// the conversion to the string
+    std::string toString() const;
+
+    /// the head of the decay
+    mutable Item m_mother; // the head of the decay
+    /// the daughter particles
+    mutable Items m_daughters; // the daughter particles
+  };
+} // namespace Gaudi::Decays
+
+/// the printout operator to the stream
+inline std::ostream& operator<<( std::ostream& s, const Gaudi::Decays::Decay& decay ) { return decay.fillStream( s ); }
+
+/// the printout operator to the stream
+inline std::ostream& operator<<( std::ostream& s, const Gaudi::Decays::Decay::Item& item ) {
+  return item.fillStream( s );
+}
diff --git a/GaudiPartProp/include/Gaudi/Decays/Nodes.h b/GaudiPartProp/include/Gaudi/Decays/Nodes.h
new file mode 100644
index 0000000000000000000000000000000000000000..713c094b764599e5d11a898e69c7efa4d71cf6a5
--- /dev/null
+++ b/GaudiPartProp/include/Gaudi/Decays/Nodes.h
@@ -0,0 +1,492 @@
+/***********************************************************************************\
+* (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations *
+*                                                                                   *
+* This software is distributed under the terms of the Apache version 2 licence,     *
+* copied verbatim in the file "LICENSE".                                            *
+*                                                                                   *
+* In applying this licence, CERN does not waive the privileges and immunities       *
+* granted to it by virtue of its status as an Intergovernmental Organization        *
+* or submit itself to any jurisdiction.                                             *
+\***********************************************************************************/
+#pragma once
+
+#include <Gaudi/Decays/Decay.h>
+#include <Gaudi/Decays/iNode.h>
+#include <Gaudi/ParticleID.h>
+#include <GaudiKernel/Kernel.h>
+#include <GaudiKernel/SmartIF.h>
+#include <GaudiKernel/StatusCode.h>
+
+/** @file Decays/Nodes.h
+ *  Helper general purpose utilities to deal with decay nodes
+ *  @see Decays::iNode
+ *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+ *  @date 2008-04-21
+ */
+namespace Gaudi::Decays {
+  /** check the validness of the trees or nodes
+   *  @param begin begin-iterator for the sequence of trees/nodes
+   *  @param end end-iterator for the sequence of trees/nodes
+   *  @return true of no invalid trees are found
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-21
+   */
+  template <typename Iterator>
+  bool valid( Iterator begin, Iterator end ) {
+    return std::all_of( begin, end, []( const auto& i ) { return i.valid(); } );
+  }
+  template <typename Container>
+  bool valid( Container const& c ) {
+    return valid( c.begin(), c.end() );
+  }
+
+  /** validate trees/nodes
+   *  @param begin begin-iterator for the sequence of trees/nodes
+   *  @param end end-iterator for the sequence of trees/nodes
+   *  @param svc the Particle Property Service for validation
+   *  @return statuis code
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-21
+   */
+  template <class Iterator>
+  StatusCode validate( Iterator begin, Iterator end, const Gaudi::Interfaces::IParticlePropertySvc* svc ) {
+    for ( ; begin != end; ++begin ) {
+      StatusCode sc = begin->validate( svc );
+      if ( sc.isFailure() ) { return sc; }
+    }
+    return StatusCode::SUCCESS;
+  }
+  template <class TREE>
+  StatusCode validate( TREE const& tree, const Gaudi::Interfaces::IParticlePropertySvc* svc ) {
+    return validate( tree.begin(), tree.end(), svc );
+  }
+
+  class NodeList;
+
+  namespace Nodes {
+    /** @class Invalid
+     *  the most simple node to represent the invalid node
+     *  it matches to all valid the Gaudi::Particles
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2008-04-12
+     */
+    class GAUDI_API Invalid : public Decays::iNode {
+    public:
+      /// MANDATORY: default constructor
+      Invalid() = default;
+      /// MANDATORY: clone method ("virtual constructor")
+      Invalid* clone() const override;
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& /* p */ ) const override;
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+      /// MANDATORY: check the validity
+      bool valid() const override;
+      /// MANDATORY: the proper validation of the node
+      StatusCode validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const override;
+    };
+
+    /** @class _Node
+     *  Helper structure (especially it is light version node-holder
+     *  the default constructor
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2008-04-12
+     */
+    class GAUDI_API _Node {
+    public:
+      /// the default constructor
+      _Node();
+      /// the constructor from iNode
+      _Node( const iNode& node ) : m_node( node ) {}
+      /// the constructor from  Node
+      _Node( const Node& node ) : m_node( node ) {}
+      // default copy constructor
+      _Node( const _Node& node ) = default;
+      /// Check the validity
+      inline bool valid() const { return m_node.node().valid(); }
+      /// The proper validation of the node
+      inline StatusCode validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const {
+        return m_node.node().validate( svc );
+      }
+      /// The major method
+      inline bool operator()( const Gaudi::ParticleID& pid ) const { return m_node.node( pid ); }
+
+      inline bool operator==( const Gaudi::ParticleID& pid ) const { return m_node.node( pid ); }
+
+      inline bool operator!=( const Gaudi::ParticleID& pid ) const { return !m_node.node( pid ); }
+
+      /// pseudo-assignment operator:
+      _Node& operator=( const Node& right ) {
+        m_node = right;
+        return *this;
+      }
+      /// pseudo-assignment from arbitrary node
+      _Node& operator=( const iNode& right ) {
+        m_node = right;
+        return *this;
+      }
+      /// pseudo-assignment from arbitrary node
+      _Node& operator=( const _Node& right ) {
+        m_node = right.m_node;
+        return *this;
+      }
+
+      _Node& operator|=( const iNode& right ) {
+        m_node |= right;
+        return *this;
+      }
+      _Node& operator&=( const iNode& right ) {
+        m_node &= right;
+        return *this;
+      }
+
+      _Node& operator|=( const NodeList& right ) { return op_or( right ); }
+      _Node& operator&=( const NodeList& right ) { return op_and( right ); }
+
+      _Node& operator|=( const _Node& right ) {
+        m_node |= right;
+        return *this;
+      }
+      _Node& operator&=( const _Node& right ) {
+        m_node &= right;
+        return *this;
+      }
+
+      /// the accessor to the node
+      const Decays::iNode& node() const { return m_node.node(); }
+      /// the cast operator to the actual list of nodes
+      operator const Decays::iNode&() const { return node(); }
+
+    private:
+      _Node& op_or( const NodeList& right );
+      _Node& op_and( const NodeList& right );
+      /// the node holder itself
+      Decays::Node m_node;
+    };
+  } // namespace Nodes
+
+  class GAUDI_API NodeList {
+  public:
+    /// the actual type of the sequence of nodes
+    typedef std::vector<Decays::Nodes::_Node> Nodes_;
+    typedef Nodes_::const_iterator            const_iterator;
+    typedef Nodes_::iterator                  iterator;
+    typedef Nodes_::value_type                value_type;
+
+    /// constructor from the list of Nodes
+    NodeList( const Nodes_& nodes = Nodes_() );
+
+    void push_back( const Decays::Nodes::_Node& node );
+    void push_back( const Decays::iNode& node );
+    void push_back( const Nodes_& nodes );
+    void push_back( const NodeList& nodes );
+    void clear() { m_nodes.clear(); }
+
+    NodeList& operator=( const Decays::Nodes::_Node& node );
+    NodeList& operator=( const Decays::iNode& node );
+
+    NodeList& operator+=( const Decays::Nodes::_Node& node ) {
+      push_back( node );
+      return *this;
+    }
+    NodeList& operator+=( const Decays::iNode& node ) {
+      push_back( node );
+      return *this;
+    }
+    NodeList& operator+=( const Nodes_& nodes ) {
+      push_back( nodes );
+      return *this;
+    }
+    NodeList& operator+=( const NodeList& nodes ) {
+      push_back( nodes );
+      return *this;
+    }
+
+    size_t         size() const { return m_nodes.size(); }
+    bool           empty() const { return m_nodes.empty(); }
+    iterator       begin() { return m_nodes.begin(); }
+    iterator       end() { return m_nodes.end(); }
+    const_iterator begin() const { return m_nodes.begin(); }
+    const_iterator end() const { return m_nodes.end(); }
+
+    operator const Nodes_&() const { return m_nodes; }
+
+  private:
+    /// the actual list of nodes
+    Nodes_ m_nodes;
+  };
+
+  namespace Nodes {
+    /** @class Or
+     *  the rather simple (but powerful) node in the decay tree:
+     *  it matches .OR. for sub-nodes
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2008-04-12
+     */
+    class GAUDI_API Or : public Decays::iNode {
+    public:
+      /// constructor from two nodes
+      Or( const Decays::iNode& n1, const Decays::iNode& n2 );
+      /// constructor from three nodes
+      Or( const Decays::iNode& n1, const Decays::iNode& n2, const Decays::iNode& n3 );
+      /// constructor from four nodes
+      Or( const Decays::iNode& n1, const Decays::iNode& n2, const Decays::iNode& n3, const Decays::iNode& n4 );
+      /// constructor from list of nodes
+      Or( const Decays::NodeList& nodes );
+      /// MANDATORY: clone method ("virtual constructor")
+      Or* clone() const override;
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& pid ) const override;
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+      /// MANDATORY: check the validity
+      bool valid() const override;
+      /// MANDATORY: the proper validation of the node
+      StatusCode validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const override;
+
+    protected:
+      size_t add( const Decays::iNode& node );
+      size_t add( const Decays::NodeList& nodes );
+
+    public:
+      Or& operator+=( const Decays::iNode& node );
+      Or& operator+=( const Decays::NodeList& node );
+
+    private:
+      /// the default constructor is disabled
+      Or(); // the default constructor is disabled
+
+      /// the sub-nodes
+      Decays::NodeList m_nodes;
+    };
+
+    /** @class And
+     *  the rather simple (but powerful) node in the decay tree:
+     *  it matches .AND. for sub-nodes
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2008-04-12
+     */
+    class GAUDI_API And : public Decays::iNode {
+    public:
+      /// constructor from two nodes
+      And( const Decays::iNode& n1, const Decays::iNode& n2 );
+      /// constructor from three nodes
+      And( const Decays::iNode& n1, const Decays::iNode& n2, const Decays::iNode& n3 );
+      /// constructor from four nodes
+      And( const Decays::iNode& n1, const Decays::iNode& n2, const Decays::iNode& n3, const Decays::iNode& n4 );
+      /// constructor from list of nodes
+      And( const Decays::NodeList& nodes );
+      /// MANDATORY: clone method ("virtual constructor")
+      And* clone() const override;
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& p ) const override;
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+      /// MANDATORY: check the validity
+      bool valid() const override;
+      /// MANDATORY: the proper validation of the node
+      StatusCode validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const override;
+
+    protected:
+      size_t add( const Decays::iNode& node );
+      size_t add( const Decays::NodeList& nodes );
+
+    public:
+      And& operator+=( const Decays::iNode& node );
+      And& operator+=( const Decays::NodeList& nodes );
+
+    private:
+      /// the sub-nodes
+      NodeList m_nodes;
+    };
+
+    /** @class Not
+     *  Simple node which match "NOT" for the subnode
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2008-04-12
+     */
+    class GAUDI_API Not : public Decays::iNode {
+    public:
+      /// constructor from the node
+      Not( const Decays::iNode& node );
+      /// MANDATORY: clone method ("virtual constructor")
+      Not* clone() const override;
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& pid ) const override;
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+      /// MANDATORY: check the validity
+      bool valid() const override;
+      /// MANDATORY: the proper validation of the node
+      StatusCode validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const override;
+
+    public:
+      /// get the underlying node
+      const Decays::iNode& node() const { return m_node.node(); }
+
+    private:
+      /// the node itself
+      Decays::Node m_node;
+    };
+
+    /** Create the "NOT" for the node
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2008-04-12
+     */
+    inline Decays::Nodes::Not operator!( const Decays::Nodes::Not& o ) { return Decays::Node( o.node() ); }
+
+    /// output operator
+    inline std::ostream& operator<<( std::ostream& s, const Decays::Nodes::_Node& n ) { return s << n.node(); }
+  } // namespace Nodes
+
+  /** Create the "OR" of two nodes
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-12
+   */
+  inline Decays::Nodes::Or operator||( const Decays::iNode& o1, const Decays::iNode& o2 ) {
+    return Decays::Nodes::Or( o1, o2 );
+  }
+
+  /** Create the "OR" of two nodes
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-12
+   */
+  inline Decays::Nodes::Or operator|( const Decays::iNode& o1, const Decays::iNode& o2 ) {
+    return Decays::Nodes::Or( o1, o2 );
+  }
+
+  /** Create the "AND" of two nodes
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-12
+   */
+  inline Decays::Nodes::And operator&&( const Decays::iNode& o1, const Decays::iNode& o2 ) {
+    return Decays::Nodes::And( o1, o2 );
+  }
+
+  /** Create the "AND" of two nodes
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-12
+   */
+  inline Decays::Nodes::And operator&( const Decays::iNode& o1, const Decays::iNode& o2 ) {
+    return Decays::Nodes::And( o1, o2 );
+  }
+
+  /** Create the "NOT" for the node
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-12
+   */
+  inline Decays::Nodes::Not operator~( const Decays::iNode& o ) { return Decays::Nodes::Not( o ); }
+
+  /** Create the "OR" of two nodes
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-12
+   */
+  GAUDI_API
+  Decays::Nodes::Or operator||( const Decays::iNode& o1, const std::string& o2 );
+
+  /** Create the "OR" of two nodes
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-12
+   */
+  GAUDI_API
+  Decays::Nodes::Or operator||( const Decays::iNode& o1, const Gaudi::ParticleID& o2 );
+
+  /** Create the "OR" of two nodes
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-12
+   */
+  GAUDI_API
+  Decays::Nodes::Or operator||( const Decays::iNode& o1, const Decays::Decay::Item& o2 );
+
+  /** Create the "OR" of two nodes
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-12
+   */
+  GAUDI_API
+  Decays::Nodes::Or operator||( const Decays::iNode& o1, const Gaudi::ParticleProperty* o2 );
+
+  /** Create the "OR" of two nodes
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-12
+   */
+  GAUDI_API
+  Decays::Nodes::Or operator||( const std::string& o2, const Decays::iNode& o1 );
+
+  /** Create the "OR" of two nodes
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-12
+   */
+  GAUDI_API
+  Decays::Nodes::Or operator||( const Gaudi::ParticleID& o2, const Decays::iNode& o1 );
+
+  /** Create the "OR" of two nodes
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-12
+   */
+  GAUDI_API
+  Decays::Nodes::Or operator||( const Decays::Decay::Item& o2, const Decays::iNode& o1 );
+
+  /** Create the "OR" of two nodes
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-12
+   */
+  GAUDI_API
+  Decays::Nodes::Or operator||( const Gaudi::ParticleProperty* o2, const Decays::iNode& o1 );
+
+  /** Create the "AND" of two nodes
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-12
+   */
+  GAUDI_API
+  Decays::Nodes::And operator&&( const Decays::iNode& o1, const std::string& o2 );
+
+  /** Create the "AND" of two nodes
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-12
+   */
+  GAUDI_API
+  Decays::Nodes::And operator&&( const Decays::iNode& o1, const Gaudi::ParticleID& o2 );
+
+  /** Create the "AND" of two nodes
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-12
+   */
+  GAUDI_API
+  Decays::Nodes::And operator&&( const Decays::iNode& o1, const Decays::Decay::Item& o2 );
+
+  /** Create the "AND" of two nodes
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-12
+   */
+  GAUDI_API
+  Decays::Nodes::And operator&&( const Decays::iNode& o1, const Gaudi::ParticleProperty* o2 );
+
+  /** Create the "AND" of two nodes
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-12
+   */
+  GAUDI_API
+  Decays::Nodes::And operator&&( const std::string& o2, const Decays::iNode& o1 );
+
+  /** Create the "AND" of two nodes
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-12
+   */
+  GAUDI_API
+  Decays::Nodes::And operator&&( const Gaudi::ParticleID& o2, const Decays::iNode& o1 );
+
+  /** Create the "AND" of two nodes
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-12
+   */
+  GAUDI_API
+  Decays::Nodes::And operator&&( const Decays::Decay::Item& o2, const Decays::iNode& o1 );
+
+  /** Create the "AND" of two nodes
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-12
+   */
+  GAUDI_API
+  Decays::Nodes::And operator&&( const Gaudi::ParticleProperty* o2, const Decays::iNode& o1 );
+
+} // namespace Gaudi::Decays
diff --git a/GaudiPartProp/include/Gaudi/Decays/NodesPIDs.h b/GaudiPartProp/include/Gaudi/Decays/NodesPIDs.h
new file mode 100644
index 0000000000000000000000000000000000000000..dd99a2a6763bd5df723fbaf59e2aa3f658b9ecdb
--- /dev/null
+++ b/GaudiPartProp/include/Gaudi/Decays/NodesPIDs.h
@@ -0,0 +1,664 @@
+/***********************************************************************************\
+* (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations *
+*                                                                                   *
+* This software is distributed under the terms of the Apache version 2 licence,     *
+* copied verbatim in the file "LICENSE".                                            *
+*                                                                                   *
+* In applying this licence, CERN does not waive the privileges and immunities       *
+* granted to it by virtue of its status as an Intergovernmental Organization        *
+* or submit itself to any jurisdiction.                                             *
+\***********************************************************************************/
+#pragma once
+
+#include <Gaudi/Decays/Nodes.h>
+#include <Gaudi/Interfaces/IParticlePropertySvc.h>
+#include <Gaudi/ParticleProperty.h>
+#include <Gaudi/cxx/SynchronizedValue.h>
+#include <GaudiKernel/MsgStream.h>
+
+/** @file  Kernel/NodePIDs.h
+ *  The actual implementation of various decay nodes
+ *  @see Decays::iNode
+ *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+ *  @date 2008-04-21
+ */
+namespace Gaudi::Decays {
+  namespace Nodes {
+    /** @class Any
+     *  the most simple node in the decay tree:
+     *  it matches to all valid the Gaudi::Particles
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2008-04-12
+     */
+    class GAUDI_API Any : public Decays::iNode {
+    public:
+      /// MANDATORY: clone method ("virtual constructor")
+      Any* clone() const override;
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& /* p */ ) const override;
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+      /// MANDATORY: check the validity
+      bool valid() const override;
+      /// MANDATORY: the proper validation of the node
+      StatusCode validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const override;
+    };
+
+    /** @class Pid
+     *  The simple node in the decay tree:
+     *  it matches to a certain particle ID
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2008-04-12
+     */
+    class GAUDI_API Pid : public Decays::iNode {
+    public:
+      /// constructor from the decay item
+      Pid( const Decays::Decay::Item& item );
+      /// constructor from Particle Property
+      Pid( const Gaudi::ParticleProperty* item );
+      /// constructor from ParticleID
+      Pid( const Gaudi::ParticleID& item );
+      /// constructor from Particle name
+      Pid( const std::string& item );
+      /// MANDATORY: clone method ("virtual constructor")
+      Pid* clone() const override;
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& pid ) const override { return check( pid ); }
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+      /// MANDATORY: check the validity
+      bool valid() const override;
+      /// MANDATORY: the proper validation of the node
+      StatusCode validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const override;
+
+    public:
+      bool check( Gaudi::ParticleID pid ) const { return pid == m_item.pid(); }
+
+      /// get DaVinci Decay item
+      const Decays::Decay::Item& item() const { return m_item; }
+      /// cast to DaVinci decay item
+      operator const Decays::Decay::Item&() const { return item(); }
+
+    private:
+      /// the decay item itself
+      Decays::Decay::Item m_item;
+    };
+
+    /** @class CC
+     *  The simple node in the decay tree:
+     *  it matches to a certain particle ID or its antiparticle
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2008-04-12
+     */
+    class GAUDI_API CC : public Pid {
+    public:
+      /// constructor from the decay item
+      CC( const Decays::Decay::Item& item );
+      /// constructor from Particle Property
+      CC( const Gaudi::ParticleProperty* item );
+      /// constructor from ParticleID
+      CC( Gaudi::ParticleID item );
+      /// constructor from Particle name
+      CC( const std::string& item );
+      /// constructor from node
+      CC( const Decays::Nodes::Pid& pid );
+      /// MANDATORY: clone method ("virtual constructor")
+      CC* clone() const override;
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& pid ) const override { return pid.abspid() == item().pid().abspid(); }
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+    };
+
+    /** @class Lepton
+     *  The trivial node : it match the Lepton
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2008-04-12
+     */
+    class GAUDI_API Lepton : public Any {
+    public:
+      /// MANDATORY: clone method ("virtual constructor")
+      Lepton* clone() const override;
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& pid ) const override { return pid.isLepton(); }
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+    };
+
+    /** @class Nu
+     *  The trivial node : it match any neutral lepton
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2008-04-12
+     */
+    class GAUDI_API Nu : public Lepton {
+    public:
+      /// MANDATORY: clone method ("virtual constructor")
+      Nu* clone() const override;
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& pid ) const override {
+        return pid.isLepton() && ( 0 == pid.threeCharge() );
+      }
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+    };
+
+    /** @class Ell
+     *  The trivial node : it match any charged lepton
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2008-04-12
+     */
+    class GAUDI_API Ell : public Lepton {
+    public:
+      /// MANDATORY: clone method ("virtual constructor")
+      Ell* clone() const override;
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& pid ) const override {
+        return pid.isLepton() && ( 0 != pid.threeCharge() );
+      }
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+    };
+
+    /** @class EllPlus
+     *  The trivial node : it match any positive lepton
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2008-04-12
+     */
+    class GAUDI_API EllPlus : public Ell {
+    public:
+      /// MANDATORY: clone method ("virtual constructor")
+      EllPlus* clone() const override;
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& pid ) const override {
+        return pid.isLepton() && ( 0 < pid.threeCharge() );
+      }
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+    };
+    /** @class EllMinus
+     *  The trivial node : it match any negative lepton
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2008-04-12
+     */
+    class GAUDI_API EllMinus : public Ell {
+    public:
+      /// MANDATORY: clone method ("virtual constructor")
+      EllMinus* clone() const override;
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& pid ) const override {
+        return pid.isLepton() && ( 0 > pid.threeCharge() );
+      }
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+    };
+
+    /** @class Hadron
+     *  The trivial node : it match the Hadron
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2008-04-12
+     */
+    class GAUDI_API Hadron : public Any {
+    public:
+      /// MANDATORY: clone method ("virtual constructor")
+      Hadron* clone() const override;
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& pid ) const override { return pid.isHadron(); }
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+    };
+
+    /** @class Meson
+     *  The trivial node : it match the meson
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2008-04-12
+     */
+    class GAUDI_API Meson : public Hadron {
+    public:
+      /// MANDATORY: clone method ("virtual constructor")
+      Meson* clone() const override;
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& pid ) const override { return pid.isMeson(); }
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+    };
+
+    /** @class Baryon
+     *  The trivial node : it match the Baryon
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2008-04-12
+     */
+    class GAUDI_API Baryon : public Hadron {
+    public:
+      /// MANDATORY: clone method ("virtual constructor")
+      Baryon* clone() const override;
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& pid ) const override { return pid.isBaryon(); }
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+    };
+
+    /** @class Charged
+     *  The trivial node : it match the Charged
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2008-04-12
+     */
+    class GAUDI_API Charged : public Any {
+    public:
+      /// MANDATORY: clone method ("virtual constructor")
+      Charged* clone() const override;
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& pid ) const override { return 0 != pid.threeCharge(); }
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+    };
+
+    /** @class Positive
+     *  The trivial node : it match the positively charged  particles
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2008-04-12
+     */
+    class GAUDI_API Positive : public Charged {
+    public:
+      /// MANDATORY: clone method ("virtual constructor")
+      Positive* clone() const override;
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& pid ) const override { return 0 < pid.threeCharge(); }
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+    };
+
+    /** @class Negative
+     *  The trivial node : it match the negatively charged  particles
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2008-04-12
+     */
+    class GAUDI_API Negative : public Charged {
+    public:
+      /// MANDATORY: clone method ("virtual constructor")
+      Negative* clone() const override;
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& pid ) const override { return 0 > pid.threeCharge(); }
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+    };
+
+    /** @class Neutral
+     *  The trivial node : it match the Neutral
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2008-04-12
+     */
+    class GAUDI_API Neutral : public Charged {
+    public:
+      /// MANDATORY: clone method ("virtual constructor")
+      Neutral* clone() const override;
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& pid ) const override { return 0 == pid.threeCharge(); }
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+    };
+
+    /** @class Nucleus
+     *  The trivial node : it match the Nucleus
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2008-04-12
+     */
+    class GAUDI_API Nucleus : public Any {
+    public:
+      /// MANDATORY: clone method ("virtual constructor")
+      Nucleus* clone() const override;
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& pid ) const override { return pid.isNucleus(); }
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+    };
+
+    /** @class HasQuark
+     *  The trivial node : it match the quark content
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2008-04-12
+     */
+    class GAUDI_API HasQuark : public Any {
+    public:
+      /// constructor from the quark
+      HasQuark( Gaudi::ParticleID::Quark quark );
+      /// MANDATORY: clone method ("virtual constructor")
+      HasQuark* clone() const override;
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& pid ) const override { return pid.hasQuark( m_quark ); }
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+
+    private:
+      /// the quark to be tested
+      Gaudi::ParticleID::Quark m_quark; // the quark to be tested
+    };
+
+    /** @class JSpin
+     *  The trivial node : it match the 2J+1 spin
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2008-04-12
+     */
+    class GAUDI_API JSpin : public Any {
+    public:
+      enum { InvalidSpin = 501 };
+
+      /// constructor from the 2J+1
+      JSpin( const int spin );
+      /// MANDATORY: clone method ("virtual constructor")
+      JSpin* clone() const override;
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& pid ) const override { return spin() == pid.jSpin(); }
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+
+      /// valid only for positive spin-values
+      bool valid() const override;
+      /// MANDATORY: the proper validation of the node
+      StatusCode validate( const Gaudi::Interfaces::IParticlePropertySvc* /* svc */ ) const override;
+
+      int spin() const { return m_spin; }
+
+    private:
+      /// the j-spin to be tested
+      int m_spin;
+    };
+
+    /** @class SSpin
+     *  The trivial node : it match the 2S+1 spin
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2008-04-12
+     */
+    class GAUDI_API SSpin : public JSpin {
+    public:
+      /// constructor from the 2S+1
+      SSpin( const int spin );
+      /// MANDATORY: clone method ("virtual constructor")
+      SSpin* clone() const override;
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& pid ) const override { return spin() == pid.sSpin(); }
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+    };
+
+    /** @class LSpin
+     *  The trivial node : it match the 2L+1 spin
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2008-04-12
+     */
+    class GAUDI_API LSpin : public SSpin {
+    public:
+      /// constructor from the 2L+1
+      LSpin( const int spin );
+      /// MANDATORY: clone method ("virtual constructor")
+      LSpin* clone() const override;
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& pid ) const override { return spin() == pid.lSpin(); }
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+    };
+
+    /** @class CTau
+     *  simple pid-checker for particle lifetime (in c*tau units)
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2009-05-11
+     */
+    class GAUDI_API CTau : public Decays::iNode {
+    public:
+      /// constructor from c-tau range
+      CTau( const double low, const double high, const Gaudi::Interfaces::IParticlePropertySvc* svc = nullptr );
+      /// MANDATORY: clone method ("virtual constructor")
+      CTau* clone() const override;
+
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& pid ) const override;
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+      /// MANDATORY: check the validity
+      bool valid() const override;
+      /// MANDATORY: the proper validation of the node
+      StatusCode validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const override;
+
+      const Gaudi::Interfaces::IParticlePropertySvc* ppSvc() const { return m_ppSvc; }
+
+      /// get low  edge
+      double low() const { return m_low; }
+      /// get high edge
+      double high() const { return m_high; }
+
+      StatusCode setService( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const;
+
+    protected:
+      template <typename F, typename = std::is_invocable_r<bool, F, Gaudi::ParticleID>>
+      bool classify( Gaudi::ParticleID pid, F&& f ) const {
+        enum struct Classification { Accepted = +1, Rejected = -1, Unknown = 0 };
+        auto r = m_pids.with_lock(
+            []( const auto& pids, Gaudi::ParticleID pid ) {
+              return std::binary_search( pids.accepted.begin(), pids.accepted.end(), pid )   ? Classification::Accepted
+                     : std::binary_search( pids.rejected.begin(), pids.rejected.end(), pid ) ? Classification::Rejected
+                                                                                             : Classification::Unknown;
+            },
+            pid );
+        switch ( r ) {
+        case Classification::Accepted:
+          return true;
+        case Classification::Rejected:
+          return false;
+        case Classification::Unknown:
+          return add_( pid, std::invoke( std::forward<F>( f ), pid ) );
+        }
+        __builtin_unreachable();
+      }
+
+    private:
+      bool add_( Gaudi::ParticleID pid, bool acc ) const;
+
+    public:
+      MsgStream& printAcceptedAsTable( MsgStream& s ) const {
+        return m_pids.with_lock(
+            [&]( const KnownPids& pids, MsgStream& s, auto const& ppSvc ) -> decltype( auto ) {
+              return Gaudi::ParticleProperties::printAsTable( pids.accepted, s, ppSvc );
+            },
+            s, m_ppSvc );
+      }
+
+    private:
+      typedef SmartIF<Gaudi::Interfaces::IParticlePropertySvc> Service;
+      /// the service :
+      mutable Service m_ppSvc;
+
+    public:
+      struct KnownPids {
+        std::vector<Gaudi::ParticleID> accepted;
+        std::vector<Gaudi::ParticleID> rejected;
+      };
+
+    private:
+      mutable Gaudi::cxx::SynchronizedValue<KnownPids> m_pids;
+
+      /// low edge
+      double m_low;
+      /// high edge
+      double m_high;
+    };
+
+    /** @class ShortLived_
+     *  represent simple predicate for short-lived particles
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2009-05-11
+     */
+    class GAUDI_API ShortLived_ : public CTau {
+    public:
+      /// constructor with high edge and service
+      ShortLived_( const double high, const Gaudi::Interfaces::IParticlePropertySvc* svc = 0 );
+      /// constructor service
+      ShortLived_( const Gaudi::Interfaces::IParticlePropertySvc* svc = 0 );
+      /// MANDATORY: clone method ("virtual constructor")
+      ShortLived_* clone() const override;
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+    };
+
+    /** @class LongLived_
+     *  represent simple predicate for Long-lived particles
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2009-05-11
+     */
+    struct GAUDI_API LongLived_ : CTau {
+      /// constructor with high edge and service
+      LongLived_( const double high, const Gaudi::Interfaces::IParticlePropertySvc* svc = 0 );
+      /// constructor service
+      LongLived_( const Gaudi::Interfaces::IParticlePropertySvc* svc = 0 );
+      /// MANDATORY: clone method ("virtual constructor")
+      LongLived_* clone() const override;
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+    };
+
+    /** @class Stable
+     *  represent simple predicate for Stable particles
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2009-05-11
+     */
+    class GAUDI_API Stable : public LongLived_ {
+    public:
+      /// constructor service
+      Stable( const Gaudi::Interfaces::IParticlePropertySvc* svc = 0 );
+      /// MANDATORY: clone method ("virtual constructor")
+      Stable* clone() const override;
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+    };
+
+    /** @class StableCharged
+     *  represent simple predicate for Stable+Charged particles
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2009-05-11
+     */
+    class GAUDI_API StableCharged : public Stable {
+    public:
+      /// constructor service
+      StableCharged( const Gaudi::Interfaces::IParticlePropertySvc* svc = 0 );
+      /// MANDATORY: clone method ("virtual constructor")
+      StableCharged* clone() const override;
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& pid ) const override;
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+    };
+
+    /** @class Mass
+     *  simple pid-checker for particle mass
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2009-05-11
+     */
+    class GAUDI_API Mass : public CTau {
+    public:
+      /// constructor from mass-range
+      Mass( const double low, const double high, const Gaudi::Interfaces::IParticlePropertySvc* svc = 0 );
+      /// MANDATORY: clone method ("virtual constructor")
+      Mass* clone() const override;
+
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& pid ) const override;
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+    };
+
+    /** @class Light
+     *  simple pid-checker for particle mass
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2009-05-11
+     */
+    class GAUDI_API Light : public Mass {
+    public:
+      /// constructor from mass-range
+      Light( const double high, const Gaudi::Interfaces::IParticlePropertySvc* svc = 0 );
+      /// MANDATORY: clone method ("virtual constructor")
+      Light* clone() const override;
+
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+    };
+
+    /** @class Heavy
+     *  simple pid-checker for particle mass
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2009-05-11
+     */
+    class GAUDI_API Heavy : public Mass {
+    public:
+      /// constructor from mass-range
+      Heavy( const double low, const Gaudi::Interfaces::IParticlePropertySvc* svc = 0 );
+      /// MANDATORY: clone method ("virtual constructor")
+      Heavy* clone() const override;
+
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+    };
+
+    /** @class PosID
+     *  - It matches the particles with positive ID
+     *  - Useful way to separate e.g. charm particle and charm antiparticle
+     *  - Useful mainly in boolean operatios, e.g. <code>Charm & ID+ </code>
+     *  - Charge conjugation could be fragile
+     *  @author Vanya BELYAEV Ivan.Belyaev@iep.ru
+     *  @date 2017-02-24
+     */
+    class GAUDI_API PosID : public Decays::iNode {
+    public:
+      /// MANDATORY: clone method ("virtual constructor")
+      PosID* clone() const override;
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& /* p */ ) const override;
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+      /// MANDATORY: check the validity
+      bool valid() const override;
+      /// MANDATORY: the proper validation of the node
+      StatusCode validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const override;
+    };
+
+    /** @class NegID
+     *  - It matches the particles with negative ID
+     *  - Useful way to separate e.g. charm particle and charm antiparticle
+     *  - Useful mainly in boolean operations, e.g. <code>Charm & ID- </code>
+     *  - Charge conjugation could be fragile
+     *  @author Vanya BELYAEV Ivan.Belyaev@iep.ru
+     *  @date 2017-02-24
+     */
+    class GAUDI_API NegID : public Decays::iNode {
+    public:
+      /// MANDATORY: clone method ("virtual constructor")
+      NegID* clone() const override;
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& /* p */ ) const override;
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+      /// MANDATORY: check the validity
+      bool valid() const override;
+      /// MANDATORY: the proper validation of the node
+      StatusCode validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const override;
+    };
+
+    class GAUDI_API Symbol : public Decays::iNode {
+    public:
+      /// the constructor from the symbol
+      Symbol( const std::string& sym );
+      /// MANDATORY: clone method ("virtual constructor")
+      Symbol* clone() const override;
+
+      /// MANDATORY: the only one essential method
+      bool operator()( const Gaudi::ParticleID& pid ) const override;
+      /// MANDATORY: the specific printout
+      std::ostream& fillStream( std::ostream& s ) const override;
+      /// MANDATORY: check the validity
+      bool valid() const override;
+      /// MANDATORY: the proper validation of the node
+      StatusCode validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const override;
+
+    private:
+      /// the actual symbol
+      Decays::Node m_symbol;
+    };
+  } // namespace Nodes
+} // namespace Gaudi::Decays
diff --git a/GaudiPartProp/include/Gaudi/Decays/Symbols.h b/GaudiPartProp/include/Gaudi/Decays/Symbols.h
new file mode 100644
index 0000000000000000000000000000000000000000..2709c50d300d749385456f4459237e4c87db3c7c
--- /dev/null
+++ b/GaudiPartProp/include/Gaudi/Decays/Symbols.h
@@ -0,0 +1,125 @@
+/***********************************************************************************\
+* (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations *
+*                                                                                   *
+* This software is distributed under the terms of the Apache version 2 licence,     *
+* copied verbatim in the file "LICENSE".                                            *
+*                                                                                   *
+* In applying this licence, CERN does not waive the privileges and immunities       *
+* granted to it by virtue of its status as an Intergovernmental Organization        *
+* or submit itself to any jurisdiction.                                             *
+\***********************************************************************************/
+#pragma once
+
+#include <Gaudi/Decays/Nodes.h>
+#include <GaudiKernel/Kernel.h>
+#include <GaudiKernel/VectorMap.h>
+#include <map>
+#include <string>
+#include <vector>
+
+namespace Gaudi {
+  class IParticlePropertySvc;
+}
+
+/** @file Kernel/Symbols.h
+ *  Helper file with the definition of symbols, used for particles/nodes/decays
+ *  @see Gaudi::Interfaces::IParticlePropertySvc
+ *  @see Gaudi::ParticleProperty
+ *  @see Gaudi::ParticleID
+ *  Many thanks to Antonio PELLEGRINO for the kind help with regex expressions
+ *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+ *  @date 2009-05-07
+ */
+namespace Gaudi::Decays {
+  /** @class Symbols
+   *  Helper class to obtain the information about the valid
+   *  symbols for particles, decay descriptors and Nodes.
+   *
+   *  Many thanks to Antonio PELLEGRINO for the kind help with regex expressions
+   *
+   *  @see Decays::iNode
+   *  @see Decays::Nodes
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2009-05-07
+   */
+  class GAUDI_API Symbols {
+  public:
+    enum { InvalidService = 400, InvalidSymbol, NoParticles, NoSymbols };
+
+    /// the actual type for the list of names
+    typedef std::vector<std::string>           Names;
+    typedef std::map<std::string, std::string> CCMap;
+
+    /// get CC-map
+    const CCMap& cc() const;
+
+    /** valid basic/primitive symbol?
+     *  @param sym the symbol
+     *  @return true if it is vaild special symbol
+     */
+    bool valid( std::string sym ) const;
+    /** help for the basic primitive special symbol
+     *  @param sym the symbol
+     *  @return the help string
+     */
+    const std::string& symbol( std::string sym ) const;
+    /** get the node by symbol
+     *  @param (INPUT)  sym the symbol name
+     *  @param (OUTPUT) the symbol
+     *  @return status code
+     */
+    StatusCode symbol( std::string sym, Decays::Node& node ) const;
+
+    /** get all known basic primitive special symbols
+     *  @param names (OUTOUT) vector of all known special symbols
+     *  @return size of the vector
+     */
+    size_t symbols( Names& names ) const;
+    /** get all known particle names
+     *  @param svc   (INPUT) particle property service
+     *  @param parts (OUTPUT) vector of particle names
+     *  @return status code
+     */
+    StatusCode particles( const Gaudi::Interfaces::IParticlePropertySvc* svc, Names& parts ) const;
+
+    /** add new symbol to the internal structure
+     *  @param sym    the symbol definition
+     *  @param node   the actual node
+     *  @param help   the help string
+     *  @param ccsym  the symbol for charge coonjugation
+     *  @return true if the symbol is added into the storage
+     */
+    bool addSymbol( std::string sym, const Decays::iNode& node, const std::string& help, std::string ccsym = "" );
+
+    /** add cc-pair to the internal map
+     *  @param sym the symbol
+     *  @param ccsym the symbol for charge conjugation
+     */
+    void addCC( std::string sym, std::string ccsym = "" );
+
+    /// static accessor to teh singleton
+    static Symbols& instance();
+
+  protected:
+    /// the default constructor is protected:
+    Symbols();
+    /// the destructor is protected
+    virtual ~Symbols() = default;
+
+  private:
+    /// copy constructor is private
+    Symbols( const Symbols& );
+    /// assignment operator is private
+    Symbols& operator=( const Symbols& );
+
+    typedef GaudiUtils::VectorMap<std::string, Decays::Nodes::_Node> NodeMap;
+    typedef std::map<std::string, std::string>                       HelpMap;
+
+    /// the actual map of symbols
+    NodeMap m_nodes;
+    /// the actual help-map
+    HelpMap m_help;
+    /// the map of cc-symbols
+    CCMap m_cc;
+  };
+} // namespace Gaudi::Decays
diff --git a/GaudiPartProp/include/Gaudi/Decays/iNode.h b/GaudiPartProp/include/Gaudi/Decays/iNode.h
new file mode 100644
index 0000000000000000000000000000000000000000..8952af74096836bb09c53df6204970d154ef0127
--- /dev/null
+++ b/GaudiPartProp/include/Gaudi/Decays/iNode.h
@@ -0,0 +1,172 @@
+/***********************************************************************************\
+* (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations *
+*                                                                                   *
+* This software is distributed under the terms of the Apache version 2 licence,     *
+* copied verbatim in the file "LICENSE".                                            *
+*                                                                                   *
+* In applying this licence, CERN does not waive the privileges and immunities       *
+* granted to it by virtue of its status as an Intergovernmental Organization        *
+* or submit itself to any jurisdiction.                                             *
+\***********************************************************************************/
+#pragma once
+
+#include <GaudiKernel/Kernel.h>
+#include <GaudiKernel/StatusCode.h>
+#include <functional>
+#include <iosfwd>
+#include <memory>
+
+namespace Gaudi {
+  namespace Interfaces {
+    class IParticlePropertySvc;
+  }
+  class ParticleID;
+} // namespace Gaudi
+
+namespace Gaudi::Decays {
+  /** @class iNode Decays/iNode.h
+   *  The abstract class which represents the single "node" of decay tree
+   *
+   *  The class is imported from LoKi project
+   *
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date   2008-04-12
+   */
+  class GAUDI_API iNode {
+  public:
+    /** the basic operation: comparison of the particle PID with the node
+     *  @param   pid the particle to be compared
+     *  @return  true if the actual PID matched the node descriptor
+     */
+    virtual bool operator()( const Gaudi::ParticleID& pid ) const = 0;
+
+    /// clone method ("virtual constructor")
+    virtual iNode* clone() const = 0;
+
+    /** printout of the stream
+     *  @param s the reference to the output stream
+     *  @return the reference to the output stream
+     */
+    virtual std::ostream& fillStream( std::ostream& s ) const = 0;
+    /// check the validity of the node
+    virtual bool valid() const = 0;
+    /// invalid node?
+    virtual bool operator!() const;
+
+    /** validate the decay node
+     *  @param svc pointer to Particle Property Service
+     *  @return StatusCode
+     */
+    virtual StatusCode validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const = 0;
+
+    /// the string representation of the node
+    virtual std::string toString() const;
+
+    /// virtual destructor
+    virtual ~iNode() = default;
+  };
+
+  /** @class Node
+   *  The generic class to hold the pointer to other node
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-12
+   */
+  class GAUDI_API Node : public iNode {
+  public:
+    /// constructor from the node
+    Node( const Decays::iNode& node );
+    /// copy constructor
+    Node( const Decays::Node& right );
+    /// MANDATORY: clone method ("virtual constructor")
+    Node* clone() const override;
+    /// MANDATORY: the only one essential method
+    bool operator()( const Gaudi::ParticleID& p ) const override;
+    /// MANDATORY: the specific printout
+    std::ostream& fillStream( std::ostream& s ) const override;
+    /// MANDATORY: check the validity of the node
+    bool valid() const override;
+    /// MANDATORY: the proper validation of the node
+    StatusCode validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const override;
+
+  public:
+    Node& operator&=( const iNode& right ) { return op_and( right ); }
+    Node& operator|=( const iNode& right ) { return op_or( right ); }
+
+    // get the underlying node
+    inline const iNode& node() const { return *m_node; }
+
+    // evaluate the underlying node
+    inline bool node( const Gaudi::ParticleID& pid ) const { return node()( pid ); }
+
+    /// assignment operator:
+    Node& operator=( const Node& right );
+    /// assignment from arbitrary node
+    Node& operator=( const iNode& right );
+
+  private:
+    Node& op_and( const iNode& right );
+    Node& op_or( const iNode& right );
+
+    /// the node itself:
+    std::unique_ptr<iNode> m_node;
+  };
+
+  /** printout to the output stream
+   *  @param s the output stream
+   *  @param n the node
+   *  @return the output stream (Reference)
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-21
+   */
+  inline std::ostream& operator<<( std::ostream& s, const iNode& n ) { return n.fillStream( s ); }
+
+  /** equality
+   *  The node is "equal" to the PID , if the given pid satisfies the node criteria
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-21
+   */
+  inline bool operator==( const Decays::iNode& node, const Gaudi::ParticleID& pid ) { return node( pid ); }
+
+  /** "right" equality
+   *  The node is "equal" to the PID , if the given pid satisfies the node criteria
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-21
+   */
+  inline bool operator==( const Gaudi::ParticleID& pid, const Decays::iNode& node ) { return node == pid; }
+
+  /** non-equality
+   *  The node is "equal" to the PID , if the given PID satisfies the node criteria
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-21
+   */
+  inline bool operator!=( const Decays::iNode& node, const Gaudi::ParticleID& pid ) { return !( node == pid ); }
+
+  /** non-equality
+   *  The node is "equal" to the PID , if the given PID satisfies the node criteria
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-21
+   */
+  inline bool operator!=( const Gaudi::ParticleID& pid, const Decays::iNode& node ) { return node != pid; }
+
+  /** "on-flight" validation of the node
+   *  @param n the node
+   *  @param svc particle property service
+   *  @return status code
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-21
+   */
+  inline StatusCode operator+( const Decays::iNode& n, const Gaudi::Interfaces::IParticlePropertySvc* svc ) {
+    return n.validate( svc );
+  }
+
+  /** "on-flight" validation of the node
+   *  @param n the node
+   *  @param svc particle property service
+   *  @return status code
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-21
+   */
+  inline StatusCode operator*( const Decays::iNode& n, const Gaudi::Interfaces::IParticlePropertySvc* svc ) {
+    return n.validate( svc );
+  }
+} // namespace Gaudi::Decays
diff --git a/GaudiPartProp/include/Gaudi/Interfaces/IParticlePropertySvc.h b/GaudiPartProp/include/Gaudi/Interfaces/IParticlePropertySvc.h
new file mode 100644
index 0000000000000000000000000000000000000000..6d1dcaa8fff6feee3ee7df0304c2029c74748b91
--- /dev/null
+++ b/GaudiPartProp/include/Gaudi/Interfaces/IParticlePropertySvc.h
@@ -0,0 +1,498 @@
+/***********************************************************************************\
+* (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations *
+*                                                                                   *
+* This software is distributed under the terms of the Apache version 2 licence,     *
+* copied verbatim in the file "LICENSE".                                            *
+*                                                                                   *
+* In applying this licence, CERN does not waive the privileges and immunities       *
+* granted to it by virtue of its status as an Intergovernmental Organization        *
+* or submit itself to any jurisdiction.                                             *
+\***********************************************************************************/
+#pragma once
+
+#include <GaudiKernel/IInterface.h>
+#include <GaudiKernel/Kernel.h>
+#include <vector>
+
+namespace Gaudi {
+  class ParticleID;
+  class ParticleProperty;
+} // namespace Gaudi
+
+namespace Gaudi::Interfaces {
+  /** @class IParticlePropertySvc Kernel/IParticlePropertySvc.h
+   *  The abstract interface to Particle Property Service
+   *  @author Iain Last
+   *  @author G.Corti
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   */
+  class GAUDI_API IParticlePropertySvc : public extend_interfaces<IInterface> {
+  public:
+    DeclareInterfaceID( Gaudi::Interfaces::IParticlePropertySvc, 2, 0 );
+
+    /// the actual type of (ordered) container of particle properties
+    typedef std::vector<const Gaudi::ParticleProperty*> ParticleProperties;
+    /// the actual type of iterator over the (ordered) container of properties
+    typedef ParticleProperties::const_iterator iterator;
+
+    /** get the begin-iterator for the container of particle properties
+     *  It is assumed that the container is properly ordered
+     *  @return begin-iterator for the container of particle properties
+     */
+    virtual iterator begin() const = 0;
+    /** get the end-iterator for the container of particle properties
+     *  It is assumed that the container is properly ordered
+     *  @return end-iterator for the container of particle properties
+     */
+    virtual iterator end() const = 0;
+    /// get the container size.
+    virtual size_t size() const = 0;
+    /** Retrieve an object by name:
+     *
+     *  @code
+     *
+     *   Gaudi::Interfaces::IParticlePropertySvc* svc = ... ;
+     *
+     *   const std::string& name = ... ;
+     *
+     *   const Gaudi::ParticleProperty*  pp = svc -> find ( name ) ;
+     *
+     *  @endcode
+     *  @param name the particle name
+     *  @return pointer to particle property object
+     */
+    virtual const ParticleProperty* find( const std::string& name ) const = 0; // find by particle name
+    /** Retrieve an object by Gaudi::ParticleID:
+     *
+     *  @code
+     *
+     *   Gaudi::Interfaces::IParticlePropertySvc* svc = ... ;
+     *
+     *   const Gaudi::ParticleID& pid = ... ;
+     *
+     *   const Gaudi::ParticleProperty*  pp = svc -> find ( pid ) ;
+     *
+     *  @endcode
+     *  @param  pid     the particle's Gaudi::ParticleID
+     *  @return pointer to particle property object
+     */
+    virtual const ParticleProperty* find( const Gaudi::ParticleID& pid ) const = 0; // find by Gaudi::ParticleID
+
+    /** get the properties according to some criteria
+     *
+     *  e.g. get all leptons:
+     *
+     *  @code
+     *
+     *  #include "boost/lambda/lambda.hpp"
+     *  #include "boost/lambda/bind.hpp"
+     *  ...
+     *  using namespace boost::lambda ;
+     *  ...
+     *
+     *  const Gaudi::Interfaces::IParticlePropertySvc* svc = ... ;
+     *
+     *  typedef Gaudi::Interfaces::IParticlePropertySvc::ParticleProperties Vector ;
+     *
+     *  // create the output vector:
+     *  Vector leptons ;
+     *  // use the service
+     *  svc -> get
+     *    ( bind ( &Gaudi::ParticleID::isLepton ,
+     *             bind ( &Gaudi::ParticleProperty::particleID , _1 ) ) ,
+     *      std::back_inserter ( lepton ) ) ; // output
+     *
+     *  @endcode
+     *
+     *  Essentially it is just <c>std::copy_if</c> STL-algorithm
+     *
+     *  @param cut the predicate
+     *  @param output the output iterator
+     *  @return the updated position of output iterator
+     */
+    template <class PREDICATE, class OUTPUT>
+    OUTPUT get( const PREDICATE& cut, OUTPUT output ) const;
+
+    /** make the charge conjugation for the string/decay descriptor
+     *
+     *  @code
+     *
+     *   std::string decay = "B0 -> pi+ pi-" ;
+     *
+     *   Gaudi::IParticlePropertySvc* svc = ... ;
+     *
+     *   std::string cc = svc -> cc ( decay ) ;
+     *
+     *  @endcode
+     *
+     *  @param decay the decay descriptor
+     *  @return the charge conjugation for the decay descriptor
+     */
+    virtual std::string cc( const std::string& decay ) const = 0;
+  };
+} // namespace Gaudi::Interfaces
+
+namespace Gaudi {
+  namespace ParticleProperties {
+    /** helper utility for mapping of Gaudi::ParticleProperty object into
+     *  non-negative integral sequential identifier
+     *  @code
+     *
+     *  const Gaudi::ParticlePropertySvc* svc = ... ;
+     *
+     *  const Gaudi::ParticleProperty* pp = ... ;
+     *
+     *   size_t index = index ( pp , svc ) ;
+     *
+     *   if ( !index )
+     *   {
+     *     // error here: conversion is not possible
+     *   }
+     *
+     *  @endcode
+     *  This appears to be useful operation, but since it is
+     *  "pure technical" it does not appear as interface method.
+     *
+     *  For invalid/missing property and/or  service
+     *  <c>0</c> is returned. The valid result is always
+     *  satisfy the condition: <c> index <= service->size() </c>
+     *
+     *  @param property the property to be mapped
+     *  @param service the service
+     *  @return the sequential non-negative index
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date   2008-08-03
+     */
+    size_t index( const Gaudi::ParticleProperty* property, const Gaudi::Interfaces::IParticlePropertySvc* service );
+
+    /** helper utility for mapping of Gaudi::ParticleID object into
+     *  non-negative integral sequential identifier
+     *  @code
+     *
+     *  const Gaudi::ParticlePropertySvc* svc = ... ;
+     *
+     *  const Gaudi::ParticleID& pid = ... ;
+     *
+     *  size_t index = index ( pid , svc ) ;
+     *
+     *  if ( !index )
+     *   {
+     *     // error here: conversion is not possible
+     *   }
+     *
+     *  @endcode
+     *  This appears to be useful operation, but since it is
+     *  "pure technical" it does not appear as interface method.
+     *
+     *  For invalid/missing PID and/or  service
+     *  <c>0</c> is returned. The valid result is always
+     *  satisfy the condition: <c> index <= service->size() </c>
+     *
+     *  @param pid the object to be mapped
+     *  @param service the service
+     *  @return the sequential non-negative index
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date   2008-08-03
+     */
+    size_t index( const Gaudi::ParticleID& pid, const Gaudi::Interfaces::IParticlePropertySvc* service );
+
+    /** the inverse mapping of the integer sequential number onto
+     *  Gaudi::ParticleID object
+     *  @code
+     *
+     *  const Gaudi::ParticlePropertySvc* svc = ... ;
+     *
+     *  const size_t index = ...
+     *
+     *  const Gaudi::ParticleProperty* pp = particle ( index , svc ) ;
+     *
+     *  if ( !pp )
+     *   {
+     *     // error here: conversion is not possible
+     *   }
+     *
+     *  @endcode
+     *  This appears to be useful operation, but since it is
+     *  "pure technical" it does not appear as interface method.
+     *
+     *  For invalid/missing PID and/or  service
+     *  <c>NULL</c> is returned.
+     *
+     *  @param pid the object to be mapped
+     *  @param service the service
+     *  @return the sequential non-negative index
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date   2008-08-03
+     */
+    const Gaudi::ParticleProperty* particle( const size_t                                   index,
+                                             const Gaudi::Interfaces::IParticlePropertySvc* service );
+
+    /** the inverse mapping of the integer sequential number onto
+     *  Gaudi::ParticleID object
+     *  @code
+     *
+     *  const Gaudi::ParticlePropertySvc* svc = ... ;
+     *
+     *  const size_t index = ...
+     *
+     *  const Gaudi::ParticleID pid = particleID ( index , svc ) ;
+     *
+     *  if ( Gaudi::ParticleID() == pid )
+     *   {
+     *     // error here: conversion is not possible
+     *   }
+     *
+     *  @endcode
+     *  This appears to be useful operation, but since it is
+     *  "pure technical" it does not appear as interface method.
+     *
+     *  For invalid/missing index and/or  service
+     *  <c>Gaudi::ParticleID()</c> is returned.
+     *
+     *  @param pid the object to be mapped
+     *  @param service the service
+     *  @return the sequential non-negative index
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date   2008-08-03
+     */
+    const Gaudi::ParticleID particleID( const size_t index, const Gaudi::Interfaces::IParticlePropertySvc* service );
+
+    /** mapping by pythiaID
+     *
+     *  @code
+     *
+     *   const int pythiaID = ... ;
+     *
+     *   const Gaudi::Interfaces::IParticlePropertySvc* svc = ... ;
+     *
+     *   const Gaudi::ParticleProeprty* pp = byPythiaID( pythiaID , svc ) ;
+     *
+     *  @endcode
+     *
+     *  @attention the method is not very efficient and should not be abused
+     *  @see Gaudi::ParticleProperties::particle
+     *  @param pythia pythia identifier
+     *  @param svc    pointer to particle property service
+     *  @return the particle property for the given pythia ID
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date   2008-08-03
+     */
+    const Gaudi::ParticleProperty* byPythiaID( const int pythia, const Gaudi::Interfaces::IParticlePropertySvc* svc );
+
+    /** mapping by EvtGen-name
+     *
+     *  @code
+     *
+     *   const std::string& evtGen
+     *
+     *   const Gaudi::Interfaces::IParticlePropertySvc* svc = ... ;
+     *
+     *   const Gaudi::ParticleProperty* pp = byEvtGenName ( pythiaID , svc ) ;
+     *
+     *  @endcode
+     *
+     *  @attention the method is not very efficient and should not be abused
+     *  @see Gaudi::ParticleProperties::particle
+     *  @param evtGen the particle naem in EvtGen-generator
+     *  @param svc    pointer to particle property service
+     *  @return the particle property for the given EvtGen-name
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date   2008-08-03
+     */
+    const Gaudi::ParticleProperty* byEvtGenName( const std::string&                             evtGen,
+                                                 const Gaudi::Interfaces::IParticlePropertySvc* svc );
+
+    /** get all particle properties which satisfy the certain criteria
+     *
+     *  e.g. select all particles with 'invalid' Pythia ID = 0 :
+     *
+     *  @code
+     *
+     *  #include "boost/lambda/lambda.hpp"
+     *  #include "boost/lambda/bind.hpp"
+     *
+     *  typedef Gaudi::Interfaces::IParticlePropertySvc::ParticleProperties Vector ;
+     *  using namespace boost::lambda ;
+     *
+     *  const Gaudi::Interfaces::IParticlePropertySvc* svc = ... ;
+     *
+     *  // create the output vector:
+     *  Vector output ;
+     *  // use the function
+     *  Gaudi::ParticleProperties::get
+     *         ( svc->begin() ,  // begin-sequence
+     *           svc->end  () ,  // end-sequence
+     *           bind ( &Gaudi::ParticleProperty::pythiaID , _1 ) == 0 , // predicate
+     *           std::back_inserter( output ) ) ; // output
+     *
+     *  @endcode
+     *
+     *  or select all particles with 'invalid' EvtGen  = "unknown" :
+     *
+     *  @code
+     *
+     *  #include "boost/lambda/lambda.hpp"
+     *  #include "boost/lambda/bind.hpp"
+     *
+     *  typedef Gaudi::Interfaces::IParticlePropertySvc::ParticleProperties Vector ;
+     *  using namespace boost::lambda ;
+     *
+     *  const Gaudi::Interfaces::IParticlePropertySvc* svc = ... ;
+     *
+     *  // create the output vector:
+     *  Vector output ;
+     *  // use the function
+     *  Gaudi::ParticleProperties::get
+     *         ( svc->begin() ,  // begin-sequence
+     *           svc->end  () ,  // end-sequence
+     *           bind ( &Gaudi::ParticleProperty::evtGen , _1 ) == "unknown" , // predicate
+     *           std::back_inserter( output ) ) ; // output
+     *
+     *  @endcode
+     *
+     *  select leptons:
+     *
+     *  @code
+     *
+     *  #include "boost/lambda/lambda.hpp"
+     *  #include "boost/lambda/bind.hpp"
+     *  ...
+     *  ...
+     *  const Gaudi::Interfaces::IParticlePropertySvc* svc = ... ;
+     *
+     *  typedef Gaudi::Interfaces::IParticlePropertySvc::ParticleProperties Vector ;
+     *  using namespace boost::lambda ;
+     *
+     *  // create the output vector:
+     *  Vector leptons ;
+     *  // use the function
+     *  Gaudi::ParticleProperties::get
+     *         ( svc->begin() ,  // begin-sequence
+     *           svc->end  () ,  // end-sequence
+     *           bind ( &Gaudi::ParticleID::isLepton , bind ( &Gaudi::ParticleProperty::particleID ,_1 ) ) ,
+     *           std::back_inserter ( lepton ) ) ; // output
+     *
+     *  @endcode
+     *
+     *  Essentially it is just a missing <c>std::copy_if</c> STL-algorithm
+     *
+     *  @param first begin-iterator of input sequence of particle properties
+     *  @param last  end-iterator of input sequence of particle properties
+     *  @param cut the predicate
+     *  @param output the output iterator
+     *  @return the updated position of output iterator
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date   2008-08-03
+     */
+    template <class INPUT, class PREDICATE, class OUTPUT>
+    OUTPUT get( INPUT first, INPUT last, const PREDICATE& cut, OUTPUT output ) {
+      for ( ; first != last; ++first ) {
+        if ( cut( *first ) ) {
+          *output = *first;
+          ++output;
+        }
+      }
+      return output;
+    }
+
+    /** get all particle properties which satisfy the certain criteria
+     *
+     *  e.g. select all particles with 'invalid' Pythia ID = 0 :
+     *
+     *  @code
+     *
+     *  #include "boost/lambda/lambda.hpp"
+     *  #include "boost/lambda/bind.hpp"
+     *
+     *  typedef Gaudi::Interfaces::IParticlePropertySvc::ParticleProperties Vector ;
+     *  using namespace boost::lambda ;
+     *
+     *  const Gaudi::Interfaces::IParticlePropertySvc* svc = ... ;
+     *
+     *  // create the output vector:
+     *  Vector output ;
+     *  // use the function
+     *  Gaudi::ParticleProperties::get
+     *    ( svc ,
+     *      bind ( &Gaudi::ParticleProperty::pythiaID , _1 ) == 0 , // predicate
+     *      std::back_inserter( output ) ) ; // output
+     *
+     *  @endcode
+     *
+     *  or select all particles with 'invalid' EvtGen  = "unknown" :
+     *
+     *  @code
+     *
+     *  #include "boost/lambda/lambda.hpp"
+     *  #include "boost/lambda/bind.hpp"
+     *
+     *  typedef Gaudi::Interfaces::IParticlePropertySvc::ParticleProperties Vector ;
+     *  using namespace boost::lambda ;
+     *
+     *  const Gaudi::Interfaces::IParticlePropertySvc* svc = ... ;
+     *
+     *  // create the output vector:
+     *  Vector output ;
+     *  // use the function
+     *  Gaudi::ParticleProperties::get
+     *    ( svc ,
+     *      bind ( &Gaudi::ParticleProperty::evtGen , _1 ) == "unknown" , // predicate
+     *      std::back_inserter( output ) ) ; // output
+     *
+     *  @endcode
+     *
+     *  Select all leptons:
+     *
+     *  @code
+     *
+     *  #include "boost/lambda/lambda.hpp"
+     *  #include "boost/lambda/bind.hpp"
+     *
+     *  typedef Gaudi::Interfaces::IParticlePropertySvc::ParticleProperties Vector ;
+     *  using namespace boost::lambda ;
+     *
+     *  const Gaudi::Interfaces::IParticlePropertySvc* svc = ... ;
+     *
+     *  // create the output vector:
+     *  Vector leptons ;
+     *  // use the function
+     *  Gaudi::ParticleProperties::get
+     *    ( svc ,
+     *      bind ( &Gaudi::ParticleID::isLepton ,
+     *      bind ( &Gaudi::ParticleProperty::particleID , _1 ) ) ,
+     *      std::back_inserter ( leptons ) ) ; // output
+     *
+     *  @endcode
+     *
+     *  @param first begin-iterator of input sequence of particle properties
+     *  @param end   end-iterator of input sequence of particle properties
+     *  @param cut the predicate
+     *  @param output the output iterator
+     *  @return the updated position of output iterator
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date   2008-08-03
+     */
+    template <class PREDICATE, class OUTPUT>
+    OUTPUT get( const Gaudi::Interfaces::IParticlePropertySvc* service, const PREDICATE& cut, OUTPUT output ) {
+      if ( 0 == service ) { return output; }
+      return service->get( cut, output );
+    }
+
+    /** get all the properties at once
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date   2008-08-03
+     */
+    Gaudi::Interfaces::IParticlePropertySvc::ParticleProperties
+    allProperties( const Gaudi::Interfaces::IParticlePropertySvc* service );
+  } // namespace ParticleProperties
+
+  namespace Interfaces {
+    // get the properties according to some criteria
+    template <class PREDICATE, class OUTPUT>
+    OUTPUT IParticlePropertySvc::get( const PREDICATE& cut, OUTPUT output ) const {
+      iterator first = this->begin();
+      iterator last  = this->end();
+      return Gaudi::ParticleProperties::get( first, last, cut, output );
+    }
+  } // namespace Interfaces
+} // namespace Gaudi
diff --git a/GaudiPartProp/include/Gaudi/ParticleID.h b/GaudiPartProp/include/Gaudi/ParticleID.h
new file mode 100644
index 0000000000000000000000000000000000000000..7f357ef3672da79efe569ebfd6d9cc15dc6c5736
--- /dev/null
+++ b/GaudiPartProp/include/Gaudi/ParticleID.h
@@ -0,0 +1,192 @@
+/***********************************************************************************\
+* (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations *
+*                                                                                   *
+* This software is distributed under the terms of the Apache version 2 licence,     *
+* copied verbatim in the file "LICENSE".                                            *
+*                                                                                   *
+* In applying this licence, CERN does not waive the privileges and immunities       *
+* granted to it by virtue of its status as an Intergovernmental Organization        *
+* or submit itself to any jurisdiction.                                             *
+\***********************************************************************************/
+#pragma once
+
+#include <GaudiKernel/HashMap.h>
+#include <GaudiKernel/Kernel.h>
+#include <cmath>
+#include <cstdint>
+#include <iosfwd>
+#include <string>
+#include <tuple>
+
+namespace Gaudi {
+  /** @class ParticleID ParticleID.h
+   *
+   * Holds PDG + LHCb extension particle code, following the PDG
+   * particle numbering scheme
+   * (pdg.lbl.gov/2017/reviews/rpp2017-rev-monte-carlo-numbering.pdf). Specific
+   * conventions followed by Pythia 8 for beyond the standard model
+   * physics and color-octet quarkonia have been introduced.
+   *
+   * Nuclei with the PDG 2017 convention (following the 2006 Monte
+   * Carlo nuclear code scheme) have the numbering +/- 10LZZZAAAI. Where
+   * AAA is A - the total baryon number,
+   * ZZZ is Z - the total number of protons,
+   * L is the total number of strange quarks, and
+   * I is the isomer number where I = 0 corresponds to the ground state.
+   * Backwards compatibility with the old heavy ion scheme has also been kept.
+   *
+   * @date 19/02/2002
+   * @author Gloria Corti
+   * @date 22/03/2018
+   * @author Philip Ilten
+   */
+  class GAUDI_API ParticleID final {
+  public:
+    /// PDG ID digits (base 10) are: n nr nl nq1 ne2 nq3 nj.
+    enum Location { nj = 1, nq3, nq2, nq1, nl, nr, n, n8, n9, n10 };
+    /// Quark PDG IDs.
+    enum Quark { down = 1, up, strange, charm, bottom, top, bottom_prime, top_prime, first = down, last = top_prime };
+
+    /// Constructor with PDG code.
+    explicit ParticleID( const int pid = 0 ) { setPid( pid ); }
+
+    /// Retrieve the PDG ID.
+    int pid() const { return m_pid; }
+    /// Absolute value of the PDG ID.
+    constexpr unsigned int abspid() const { return 0 > m_pid ? -m_pid : m_pid; }
+    /// Update the PDG ID.
+    void setPid( const int pid ) { m_pid = pid; }
+
+    /// Return if the PID is valid.
+    bool isValid() const;
+    /// Return if the PID is from the standard model.
+    bool isSM() const;
+    /// Return if the PID is for a meson.
+    bool isMeson() const;
+    /// Return if the PID is for a baryon.
+    bool isBaryon() const;
+    /// Return if the PID is for a di-quark.
+    bool isDiQuark() const;
+    /// Return if the PID is for a hadron.
+    bool isHadron() const;
+    /// Return if the PID is for a lepton.
+    bool isLepton() const;
+    /// Return if the PID is for a nucleus.
+    bool isNucleus() const;
+    /// Return if the PID is for a bare quark.
+    bool isQuark() const;
+
+    /// Return if the PID is a particle with quarks, but not a nucleus.
+    bool hasQuarks() const;
+    /// Return if the PID is a particle containing a specified quark flavor.
+    bool hasQuark( const Quark& q ) const;
+    /// Return if the PID is a particle with a down quark.
+    bool hasDown() const { return hasQuark( down ); }
+    /// Return if the PID is a particle with an up quark.
+    bool hasUp() const { return hasQuark( up ); }
+    /// Return if the PID is a particle with a down quark.
+    bool hasStrange() const { return hasQuark( strange ); }
+    /// Return if the PID is a particle with a charm quark.
+    bool hasCharm() const { return hasQuark( charm ); }
+    /// Return if the PID is a particle with a bottom quark.
+    bool hasBottom() const { return hasQuark( bottom ); }
+    /// Return if the PID is a particle with a top quark.
+    bool hasTop() const { return hasQuark( top ); }
+    /// Return if the PID is a particle with a bottom' quark.
+    bool hasBottomPrime() const { return hasQuark( bottom_prime ); }
+    /// Return if the PID is a particle with a top' quark.
+    bool hasTopPrime() const { return hasQuark( top_prime ); }
+
+    /// Return three times the charge, in units of e+, valid for all particles.
+    int threeCharge() const;
+    /// Return 2J+1, where J is the total spin, valid for all particles.
+    int jSpin() const;
+    /// Return 2S+1, where S is the spin, valid only for mesons.
+    int sSpin() const;
+    /// Return 2L+1, where L is the orbital angular momentum, valid only for mesons.
+    int lSpin() const;
+
+    /// Return the atomic number for a nucleus.
+    int Z() const;
+    /// Return the nucleon number for a nucleus.
+    int A() const;
+    /// Return the number of strange quarks for a nucleus.
+    int nLambda() const;
+
+    /** Return the fundamental ID.
+     *  This is 0 for nuclei, mesons, baryons, and di-quarks.
+     *  Otherwise, this is the first two digits of the PDG ID
+     */
+    int fundamentalID() const;
+
+    /// Return everything beyond the 7th PDG ID digit.
+    int extraBits() const;
+    /// Return the digit for a given PDG ID digit location.
+    constexpr unsigned short digit( const Location& loc ) const {
+      constexpr std::uint32_t pows[10] = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 };
+      return ( abspid() / pows[loc - 1] ) % 10;
+    }
+
+    /// Equality operator.
+    bool operator==( const ParticleID& o ) const { return m_pid == o.m_pid; }
+    /// Non-equality operator.
+    bool operator!=( const ParticleID& o ) const { return m_pid != o.m_pid; }
+    /// Comparison operator.
+    bool operator<( const ParticleID& o ) const {
+      const unsigned int i1( abspid() ), i2( o.abspid() );
+      return std::tie( i1, m_pid ) < std::tie( i2, o.m_pid );
+    }
+
+    /// Fill a stream with the PID.
+    std::ostream& fillStream( std::ostream& s ) const;
+    /// Return the PID stream representation as a string.
+    std::string toString() const;
+    /// Fill a stream with the PID digit enumeration.
+    static std::ostream& printLocation( const long l, std::ostream& s );
+    /// Return the PID digit enumeration stream representation as a string.
+    static std::string printLocation( const long l );
+    /// Fill a stream with the PID quark enumeration.
+    static std::ostream& printQuark( const long q, std::ostream& s );
+    /// Return the PID quark enumeration stream representation as a string.
+    static std::string printQuark( const long q );
+
+  private:
+    /// PDG ID.
+    int m_pid{ 0 };
+  };
+
+  // Inline stream operators.
+  /// Stream operator for the PID.
+  inline std::ostream& operator<<( std::ostream& s, const Gaudi::ParticleID& o ) { return o.fillStream( s ); }
+  /// Stream operator for the PDG digit enumeration.
+  inline std::ostream& operator<<( std::ostream& s, Gaudi::ParticleID::Location l ) {
+    return Gaudi::ParticleID::printLocation( l, s );
+  }
+  /// Stream operator for the PDG quark enumeration.
+  inline std::ostream& operator<<( std::ostream& s, Gaudi::ParticleID::Quark q ) {
+    return Gaudi::ParticleID::printQuark( q, s );
+  }
+} // namespace Gaudi
+
+namespace GaudiUtils {
+  template <>
+  struct Hash<Gaudi::ParticleID> {
+    inline size_t operator()( const Gaudi::ParticleID& s ) const { return (size_t)s.pid(); }
+  };
+  template <>
+  struct Hash<const Gaudi::ParticleID> {
+    inline size_t operator()( const Gaudi::ParticleID& s ) const { return (size_t)s.pid(); }
+  };
+  template <>
+  struct Hash<Gaudi::ParticleID&> {
+    inline size_t operator()( const Gaudi::ParticleID& s ) const { return (size_t)s.pid(); }
+  };
+  template <>
+  struct Hash<const Gaudi::ParticleID&> {
+    inline size_t operator()( const Gaudi::ParticleID& s ) const { return (size_t)s.pid(); }
+  };
+} // namespace GaudiUtils
+namespace std {
+  /// Return the absolute value for a PID.
+  inline Gaudi::ParticleID abs( const Gaudi::ParticleID& p ) { return Gaudi::ParticleID( p.abspid() ); }
+} // namespace std
diff --git a/GaudiPartProp/include/Gaudi/ParticleProperty.h b/GaudiPartProp/include/Gaudi/ParticleProperty.h
new file mode 100644
index 0000000000000000000000000000000000000000..a1801afafd19a06f92ed5cb7fc48a1ea0417bfaa
--- /dev/null
+++ b/GaudiPartProp/include/Gaudi/ParticleProperty.h
@@ -0,0 +1,416 @@
+/***********************************************************************************\
+* (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations *
+*                                                                                   *
+* This software is distributed under the terms of the Apache version 2 licence,     *
+* copied verbatim in the file "LICENSE".                                            *
+*                                                                                   *
+* In applying this licence, CERN does not waive the privileges and immunities       *
+* granted to it by virtue of its status as an Intergovernmental Organization        *
+* or submit itself to any jurisdiction.                                             *
+\***********************************************************************************/
+#pragma once
+
+#include <Gaudi/ParticleID.h>
+#include <GaudiKernel/Kernel.h>
+#include <GaudiKernel/PhysicalConstants.h>
+#include <cmath>
+#include <functional>
+#include <iosfwd>
+#include <limits>
+#include <set>
+#include <string>
+#include <vector>
+
+namespace Gaudi {
+  namespace Interfaces {
+    class IParticlePropertySvc;
+  }
+
+  /** @class ParticleProperty ParticleProperty.h Gaudi/ParticleProperty.h
+   *
+   *  A trivial class to hold information about a single particle properties.
+   *  All particle properties are accessible through accessor functions
+   *
+   *  @author Iain Last,G.Corti
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   */
+  class GAUDI_API ParticleProperty final {
+  public:
+    /** @struct Compare
+     *  The comparison criteria for particle properties
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date 2008-10-14
+     */
+    struct Compare {
+      inline bool operator()( const ParticleProperty* p1, const ParticleProperty* p2 ) const {
+        return p1 == p2 ? false : 0 == p1 ? true : 0 == p2 ? false : ( *p1 < *p2 );
+      }
+    };
+
+    /** full constructor, from all data (except the antiparticle )
+     *  @param name       the name for the particle
+     *  @param pid        the PID for the particle
+     *  @param charge     the charge of the particle
+     *  @param mass       the nominal mass of the particle
+     *  @param tlife      the nominal lifetime of the particle
+     *  @param maxWidth   the maximal width of the particle (used in generator)
+     *  @param evtgen     the name of particle in EvtGen program
+     *  @param pythia     the ID for the particle used in Pythia generator
+     */
+    ParticleProperty( const std::string& name, const Gaudi::ParticleID& pid, const double charge, const double mass,
+                      const double tlife, const double maxWidth, const std::string& evtgen, const int pythia );
+    /** a bit simplified constructor, from all data (except the antiparticle )
+     *
+     *    - "evtGenName" is set from the regular "name"
+     *    - pythiaID     is set from the regular PID
+     *
+     *  @param name       the name for the particle
+     *  @param pid        the PID for the particle
+     *  @param charge     the charge of the particle
+     *  @param mass       the nominal mass of the particle
+     *  @param tlife      the nominal lifetime of the particle
+     *  @param maxWidth   the maximal width of the particle (used in generator)
+     */
+    ParticleProperty( const std::string& name, const Gaudi::ParticleID& pid, const double charge, const double mass,
+                      const double tlife, const double maxWidth );
+
+    /// Get the particle name.
+    const std::string& particle() const { return m_name; }
+    /// Get the particle name.
+    const std::string& name() const { return m_name; }
+    /// get the particle ID
+    const Gaudi::ParticleID& particleID() const { return m_pid; }
+    /// get the particle ID
+    const Gaudi::ParticleID& pdgID() const { return m_pid; }
+    /// get the particle ID
+    const Gaudi::ParticleID& pid() const { return m_pid; }
+    /// Get the particle charge.
+    double charge() const { return m_charge; }
+    /// Get the particle mass.
+    double mass() const { return m_mass; }
+    /// Get the particle lifetime.
+    double lifetime() const { return m_tlife; }
+    /// Get the particle lifetime.
+    double lifeTime() const { return m_tlife; }
+    /// Get the particle proper lifetime in c*tau units
+    double ctau() const { return Gaudi::Units::c_light * lifeTime(); }
+    /// Get the particle natural width
+    double width() const {
+      return std::abs( ctau() ) < std::numeric_limits<double>::epsilon() ? 0.0 : Gaudi::Units::hbarc / ctau();
+    }
+    /// Get the max width deviation
+    double maxWidth() const { return m_maxWidth; } // max-width
+    /// get the pointer to the anti-particle
+    const Gaudi::ParticleProperty* antiParticle() const { return anti(); }
+    /// get the pointer to the anti-particle
+    const Gaudi::ParticleProperty* anti() const { return m_anti; }
+
+    /// self-charge conjugated?
+    bool selfcc() const { return m_anti == this; }
+
+    ///  Three times the charge (in positron charge units)
+    int threeCharge() const { return m_pid.threeCharge(); }
+
+    /** set the pointer to the antiparticle
+     *  @attention it is the only one "setter"
+     *  @param p pointer to anti-particle
+     */
+    void setAntiParticle( const ParticleProperty* p );
+
+    /// Get the EvtGen name
+    const std::string& evtGenName() const { return m_evtgen; }
+    /// Get the EvtGen name
+    const std::string& evtGen() const { return m_evtgen; }
+    /// Get the Pythia ID
+    int pythiaID() const { return m_pythia; }
+    /// Get the Pythia ID
+    int pythia() const { return m_pythia; }
+
+    /// comparison/ordering operator  ( "strict-less-by-PID&Name" )
+    friend bool operator<( const ParticleProperty& lhs, const ParticleProperty& rhs ) {
+      return std::tie( lhs.m_pid, lhs.m_name ) < std::tie( rhs.m_pid, rhs.m_name );
+    }
+
+    /// implicit conversion to ParticleID class
+    operator const Gaudi::ParticleID&() const { return m_pid; }
+
+    /** the standard (a'la Gaudi) printout of the object
+     *  @param s reference to the output stream
+     *  @return reference to the output stream
+     */
+    std::ostream& fillStream( std::ostream& s ) const;
+    /// simple method for conversion into the string
+    std::string toString() const;
+
+  private:
+    /// the name for the  particle
+    std::string m_name;
+    /// the PID for the particle
+    Gaudi::ParticleID m_pid;
+    /// the charge for the particle
+    double m_charge;
+    /// the nominal mass for the particle
+    double m_mass;
+    /// the nominal proper lifetime for the particle
+    double m_tlife;
+    /// The maximum width deviation
+    double m_maxWidth;
+    /// the name of the particle for EvtGen program
+    std::string m_evtgen;
+    /// the ID for the particle used in Pythia generator
+    int m_pythia;
+    /// the pointer to the anti-particle
+    const Gaudi::ParticleProperty* m_anti;
+  };
+} // namespace Gaudi
+
+/** standard output operator to the stream
+ *  @param stream the stream
+ *  @param pp    the particle property object
+ *  @return the stream
+ *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+ *  @date  2008-08-03
+ */
+std::ostream& operator<<( std::ostream& stream, const Gaudi::ParticleProperty& pp );
+
+class MsgStream;
+namespace Gaudi {
+  namespace ParticleProperties {
+    /** print a list of properties in a form of the table
+     *
+     *  @code
+     *
+     *    Gaudi::Interfaces::IParticlePropertySvc* svc = ... ;
+     *
+     *    const std::vector<const Gaudi::ParticleProperty*>& props = ... ;
+     *
+     *    std::cout << "Properties" << std::endl ;
+     *    Gaudi::ParticleProperties::printAsTable ( props , std::cout , svc ) ;
+     *
+     *   @endcode
+     *
+     *  The utility is easy to use in conjunction with
+     *  Gaudi::ParticleProperties:;get utilities:
+     *  e.g. get all leptons from the service and print them as table:
+     *
+     *  @code
+     *
+     *  #include "boost/lambda/lambda.hpp"
+     *  #include "boost/lambda/bind.hpp"
+     *
+     *  typedef std::vector<const Gaudi::IParticleProperty*> Vector ;
+     *  const Gaudi::Interfaces::IParticlePropertySvc* svc = ... ;
+     *
+     *  // create the output vector:
+     *  Vector leptons ;
+     *  // use the function
+     *  Gaudi::ParticleProperties::get
+     *         ( svc ,
+     *           // create the predicate:
+     *           boost::lambda::bind ( &Gaudi::ParticleID::isLepton ,
+     *               boost::lambda::bind ( &Gaudi::ParticleProperty::particleID , boost::lambda::_1 ) ) ,
+     *           std::back_inserter ( leptons ) ) ; // output
+     *
+     *  // print the leptons:
+     *  std::cout << "LEPTONS" << std::endl ;
+     *  Gaudi::ParticleProperties::printAsTable_ ( leptons , std::cout , svc ) ;
+     *
+     *  @endcode
+     *
+     *  @see Gaudi::ParticleProperty
+     *  @see Gaudi::Interfaces::IParticlePropertySvc
+     *  @see Gaudi::ParticleProperties::get
+     *  @param particles the list of particle properties
+     *  @param stream  the reference to the output stream
+     *  @param service the service to extract global information
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date  2008-08-03
+     */
+    GAUDI_API
+    std::ostream& printAsTable_( const std::vector<const Gaudi::ParticleProperty*>& particles, std::ostream& stream,
+                                 const Gaudi::Interfaces::IParticlePropertySvc* service = 0 );
+
+    /** print a list of properties in a form of the table
+     *
+     *  @code
+     *
+     *    Gaudi::Interfaces::IParticlePropertySvc* svc = ... ;
+     *
+     *    const std::vector<const Gaudi::ParticleProperty*>& props = ... ;
+     *
+     *    std::cout << "Properties" << std::endl <<
+     *    Gaudi::ParticleProperties::printAsTable ( props , svc ) << std::endl
+     *
+     *   @endcode
+     *
+     *  The utility is easy to use in conjunction with
+     *  Gaudi::ParticleProperties:;get utilities:
+     *  e.g. get all leptons from the service and print them as table:
+     *
+     *  @code
+     *
+     *  #include "boost/lambda/lambda.hpp"
+     *  #include "boost/lambda/bind.hpp"
+     *
+     *  typedef std::vector<const Gaudi::IParticleProperty*> Vector ;
+     *  const Gaudi::Interfaces::IParticlePropertySvc* svc = ... ;
+     *
+     *  // create the output vector:
+     *  Vector leptons ;
+     *  // use the function
+     *  Gaudi::ParticleProperties::get
+     *         ( svc ,
+     *           // create the predicate:
+     *           boost::lambda::bind ( &Gaudi::ParticleID::isLepton ,
+     *               boost::lambda::bind ( &Gaudi::ParticleProperty::particleID , boost::lambda::_1 ) ) ,
+     *           std::back_inserter ( leptons ) ) ; // output
+     *
+     *  // print the leptons:
+     *  std::cout << "LEPTONS"
+     *            << std::endl
+     *  Gaudi::ParticleProperties::printAsTable ( leptons , svc )
+     *            << std::endl ;
+     *
+     *  @endcode
+     *
+     *  @see Gaudi::ParticleProperty
+     *  @see Gaudi::Interfaces::IParticlePropertySvc
+     *  @see Gaudi::ParticleProperties::get
+     *  @param particles the list of particle properties
+     *  @param service the service to extract global information
+     *  @return the string output
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date  2008-08-03
+     */
+    GAUDI_API
+    std::string printAsTable( const std::vector<const Gaudi::ParticleProperty*>& particles,
+                              const Gaudi::Interfaces::IParticlePropertySvc*     service = 0 );
+
+    /** print a list of properties in a form of the table
+     *
+     *  @code
+     *
+     *    Gaudi::Interfaces::IParticlePropertySvc* svc = ... ;
+     *
+     *    const std::vector<const Gaudi::ParticleProperty*>& props = ... ;
+     *
+     *    MsgStream& log = ... ;
+     *    Gaudi::ParticleProperties::printAsTable ( props , log , svc ) ;
+     *    log << endmsg ;
+     *
+     *   @endcode
+     *
+     *  The utility is easy to use in conjunction with
+     *  Gaudi::ParticleProperties:;get utilities:
+     *  e.g. get all leptons from the service and print them as table:
+     *
+     *  @code
+     *
+     *  #include "boost/lambda/lambda.hpp"
+     *  #include "boost/lambda/bind.hpp"
+     *
+     *  typedef std::vector<const Gaudi::IParticleProperty*> Vector ;
+     *  const Gaudi::Interfaces::IParticlePropertySvc* svc = ... ;
+     *
+     *  // create the output vector:
+     *  Vector leptons ;
+     *  // use the function
+     *  Gaudi::ParticleProperties::get
+     *         ( svc ,
+     *           // create the predicate:
+     *           boost::lambda::bind ( &Gaudi::ParticleID::isLepton ,
+     *               boost::lambda::bind ( &Gaudi::ParticleProperty::particleID , boost::lambda::_1 ) ) ,
+     *           std::back_inserter ( leptons ) ) ; // output
+     *
+     *  // print the leptons:
+     *  MsgStream& log = ... ;
+     *  log << "LEPTONS" << std::endl ;
+     *  Gaudi::ParticleProperties::printAsTable ( leptons , log , svc ) ;
+     *  log << endmsg ;
+     *
+     *  @endcode
+     *
+     *  @see Gaudi::ParticleProperty
+     *  @see Gaudi::Interfaces::IParticlePropertySvc
+     *  @see Gaudi::ParticleProperties::get
+     *  @param particles the list of particle properties
+     *  @param stream  the reference to the output stream
+     *  @param service the service to extract global information
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date  2008-08-03
+     */
+    GAUDI_API
+    MsgStream& printAsTable( const std::vector<const Gaudi::ParticleProperty*>& particles, MsgStream& stream,
+                             const Gaudi::Interfaces::IParticlePropertySvc* service = 0 );
+
+    /** print properties in a form of the table
+     *  @param particles (INPUT) list of particles
+     *  @param stream    (UPDATE) the stream
+     *  @param service   (INPUT) pointer to particle property service
+     *  @return the stream
+     *  @author Vanya BELYAEV Ivan.Belyaev@itep.ru
+     *  @date  2010-01-04
+     */
+    GAUDI_API
+    std::ostream& printAsTable_( const std::vector<Gaudi::ParticleID>& particles, std::ostream& stream,
+                                 const Gaudi::Interfaces::IParticlePropertySvc* service = 0 );
+
+    template <class C_, class A_>
+    inline std::ostream& printAsTable_( const std::set<Gaudi::ParticleID, C_, A_>& particles, std::ostream& stream,
+                                        const Gaudi::Interfaces::IParticlePropertySvc* service = 0 ) {
+      return printAsTable_( std::vector<Gaudi::ParticleID>( particles.begin(), particles.end() ), stream, service );
+    }
+
+    /** print properties in a form of the table
+     *  @param particles (INPUT) list of particles
+     *  @param service   (INPUT) pointer to particle property service
+     *  @return string-representation
+     *  @author Vanya BELYAEV Ivan.Belyaev@itep.ru
+     *  @date  2010-01-04
+     */
+    GAUDI_API
+    std::string printAsTable( const std::vector<Gaudi::ParticleID>&          particles,
+                              const Gaudi::Interfaces::IParticlePropertySvc* service = 0 );
+
+    template <class C_, class A_>
+    inline std::string printAsTable( const std::set<Gaudi::ParticleID, C_, A_>&     particles,
+                                     const Gaudi::Interfaces::IParticlePropertySvc* service = 0 ) {
+      return printAsTable( std::vector<Gaudi::ParticleID>( particles.begin(), particles.end() ), service );
+    }
+
+    /** print properties in a form of the table
+     *  @param particles (INPUT) list of particles
+     *  @param stream    (UPDATE) the stream
+     *  @param service   (INPUT) pointer to particle property service
+     *  @return the stream
+     *  @author Vanya BELYAEV Ivan.Belyaev@itep.ru
+     *  @date  2010-01-04
+     */
+    GAUDI_API
+    MsgStream& printAsTable( const std::vector<Gaudi::ParticleID>& particles, MsgStream& stream,
+                             const Gaudi::Interfaces::IParticlePropertySvc* service = 0 );
+
+    template <class C_, class A_>
+    inline MsgStream& printAsTable( const std::set<Gaudi::ParticleID, C_, A_>& particles, MsgStream& stream,
+                                    const Gaudi::Interfaces::IParticlePropertySvc* service = 0 ) {
+      return printAsTable( std::vector<Gaudi::ParticleID>( particles.begin(), particles.end() ), stream, service );
+    }
+  } // namespace ParticleProperties
+} // namespace Gaudi
+namespace Gaudi {
+  namespace Utils {
+    /** print a list of particle properties as formatted table
+     *  @see Gaudi::ParticleProperty
+     *  @param particles the list of particle properties
+     *  @param stream the reference to the output stream
+     *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+     *  @date  2008-08-03
+     */
+    GAUDI_API
+    std::ostream& toStream( const std::vector<const Gaudi::ParticleProperty*>& particles, std::ostream& stream );
+  } // namespace Utils
+} // namespace Gaudi
+namespace std {
+  GAUDI_API
+  const Gaudi::ParticleProperty* abs( const Gaudi::ParticleProperty* p );
+} // namespace std
diff --git a/GaudiPartProp/include/Gaudi/Tr/TrackDefaultParticles.h b/GaudiPartProp/include/Gaudi/Tr/TrackDefaultParticles.h
new file mode 100644
index 0000000000000000000000000000000000000000..8e4e49fa3e7e56b3a62da1c5d92f1225d031ae06
--- /dev/null
+++ b/GaudiPartProp/include/Gaudi/Tr/TrackDefaultParticles.h
@@ -0,0 +1,108 @@
+/***********************************************************************************\
+* (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations *
+*                                                                                   *
+* This software is distributed under the terms of the Apache version 2 licence,     *
+* copied verbatim in the file "LICENSE".                                            *
+*                                                                                   *
+* In applying this licence, CERN does not waive the privileges and immunities       *
+* granted to it by virtue of its status as an Intergovernmental Organization        *
+* or submit itself to any jurisdiction.                                             *
+\***********************************************************************************/
+#pragma once
+
+#include <GaudiKernel/StatusCode.h>
+#include <array>
+#include <iomanip>
+#include <stdexcept>
+#include <stdint.h>
+
+namespace Gaudi {
+  namespace Tr {
+    class PID {
+      enum class validated_pid_t { Electron = 0, Muon, Pion, Kaon, Proton };
+      static constexpr std::array<double, 5> s_mass = { 0.51099891, 105.65837, 139.57018, 493.677, 938.27203 };
+
+      validated_pid_t m_value;
+
+      static constexpr validated_pid_t validate( int id ) {
+        switch ( id ) {
+        case 11:
+          return validated_pid_t::Electron;
+        case 13:
+          return validated_pid_t::Muon;
+        case 211:
+          return validated_pid_t::Pion;
+        case 321:
+          return validated_pid_t::Kaon;
+        case 2212:
+          return validated_pid_t::Proton;
+        default:
+          throw std::runtime_error( "invalid PID" );
+        }
+      }
+
+    public:
+      constexpr explicit PID( const int id ) : m_value( validate( id ) ) {}
+
+      constexpr explicit PID( validated_pid_t pid ) : m_value( pid ) {}
+
+      PID() = default;
+      // Make the creation of thes PID objects expressive in user code
+      // by calling Gaudi::Tr::PID::Electron()
+      static constexpr PID Electron() { return PID{ validated_pid_t::Electron }; }
+
+      static constexpr PID Muon() { return PID{ validated_pid_t::Muon }; }
+
+      static constexpr PID Pion() { return PID{ validated_pid_t::Pion }; }
+
+      static constexpr PID Kaon() { return PID{ validated_pid_t::Kaon }; }
+
+      static constexpr PID Proton() { return PID{ validated_pid_t::Proton }; }
+
+      // Framwork functions allowing the use of PID inside a property
+      friend const char* toString( PID pid ) {
+        switch ( pid.m_value ) {
+        case validated_pid_t::Electron:
+          return "Electron";
+        case validated_pid_t::Muon:
+          return "Muon";
+        case validated_pid_t::Pion:
+          return "Pion";
+        case validated_pid_t::Kaon:
+          return "Kaon";
+        case validated_pid_t::Proton:
+          return "Proton";
+        default:
+          throw std::runtime_error( "Calling toString on invalid PID" );
+        }
+      }
+
+      friend std::ostream& toStream( const PID& pid, std::ostream& os ) {
+        return os << std::quoted( toString( pid ), '\'' );
+      }
+      friend std::ostream& operator<<( std::ostream& os, const PID& pid ) { return toStream( pid, os ); }
+
+      friend StatusCode parse( PID& pid, const std::string& in ) {
+        for ( PID ref : { Electron(), Muon(), Pion(), Kaon(), Proton() } ) {
+          if ( in != toString( ref ) ) continue;
+          pid = ref;
+          return StatusCode::SUCCESS;
+        }
+        return StatusCode::FAILURE;
+      }
+      //----------------------------------------------------------
+
+      constexpr double mass() const { return s_mass[static_cast<int>( m_value )]; }
+
+      constexpr bool isElectron() const { return validated_pid_t::Electron == m_value; }
+
+      constexpr bool isMuon() const { return validated_pid_t::Muon == m_value; }
+
+      constexpr bool isPion() const { return validated_pid_t::Pion == m_value; }
+
+      constexpr bool isKaon() const { return validated_pid_t::Kaon == m_value; }
+
+      constexpr bool isProton() const { return validated_pid_t::Proton == m_value; }
+    };
+  } // namespace Tr
+} // namespace Gaudi
diff --git a/GaudiPartProp/include/GaudiKernel/ParticleProperty.h b/GaudiPartProp/include/GaudiKernel/ParticleProperty.h
new file mode 100644
index 0000000000000000000000000000000000000000..82038357626f1eef89bb30fda43af542e32c4d7a
--- /dev/null
+++ b/GaudiPartProp/include/GaudiKernel/ParticleProperty.h
@@ -0,0 +1,17 @@
+/***********************************************************************************\
+* (c) Copyright 2023 CERN for the benefit of the LHCb and ATLAS collaborations      *
+*                                                                                   *
+* This software is distributed under the terms of the Apache version 2 licence,     *
+* copied verbatim in the file "LICENSE".                                            *
+*                                                                                   *
+* In applying this licence, CERN does not waive the privileges and immunities       *
+* granted to it by virtue of its status as an Intergovernmental Organization        *
+* or submit itself to any jurisdiction.                                             *
+\***********************************************************************************/
+#pragma once
+
+// Backward compatibility layer for users of legacy GaudiKernel/ParticleProperty.h
+
+#include <Gaudi/ParticleProperty.h>
+
+using Gaudi::ParticleProperty;
diff --git a/GaudiPartProp/python/GaudiPartProp/Check.py b/GaudiPartProp/python/GaudiPartProp/Check.py
new file mode 100644
index 0000000000000000000000000000000000000000..24bbd0bffdbabe1cf80514f42c480131f270f098
--- /dev/null
+++ b/GaudiPartProp/python/GaudiPartProp/Check.py
@@ -0,0 +1,73 @@
+#!/usr/bin/env python3
+#####################################################################################
+# (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations #
+#                                                                                   #
+# This software is distributed under the terms of the Apache version 2 licence,     #
+# copied verbatim in the file "LICENSE".                                            #
+#                                                                                   #
+# In applying this licence, CERN does not waive the privileges and immunities       #
+# granted to it by virtue of its status as an Intergovernmental Organization        #
+# or submit itself to any jurisdiction.                                             #
+#####################################################################################
+# =============================================================================
+# =============================================================================
+## @file GaudiPartProp/Check.py
+#  the trivial example to inspect the particle data table from the data base
+#  @author Vanya BELYAEV vanya@nikhef.nl
+#  @date  2009-03-06
+# =============================================================================
+"""
+The trivial example to inspect the particle data table from the data base
+"""
+
+# =============================================================================
+__author__ = "Vanya BELYAEV vanya@nikhef.nl"
+__verison__ = " "
+# =============================================================================
+
+from Configurables import ApplicationMgr, Gaudi__ParticlePropertySvc
+
+## let application manager to know about the service:
+ApplicationMgr().ExtSvc += [Gaudi__ParticlePropertySvc()]
+
+# The following is misunderstood by flake8 - the import is needed as it
+# has necessary side effects
+import GaudiPartProp.Service  # noqa: F401
+from GaudiKernel.SystemOfUnits import micrometer
+
+## switch to GaudiPython
+from GaudiPython.Bindings import AppMgr
+
+# instantiate the actual (C++) application manager
+gaudi = AppMgr()
+
+# switch off all algorithms
+gaudi.TopAlg = []
+
+# initialize everything properly
+gaudi.run(1)
+
+# get the actual (C++) particle properties service
+ppsvc = gaudi.gaudiPartProp()
+
+# finally: play with the service
+
+# get all a self-conjugated particles
+print(" Self-charge conjugated particles ")
+selfcc = ppsvc.get(lambda x: x.selfcc())
+print(selfcc)
+
+# set self-charge conjugated conjugated mesons:
+print(" CC-neutral mesons")
+mesonscc = ppsvc.get(lambda x: (x.selfcc() and x.isMeson()))
+print(mesonscc)
+
+# set self-charge conjugated conjugated mesons:
+print(" CC-neutral beauty mesons")
+mesonscc = ppsvc.get(lambda x: (x.isMeson() and x.hasBottom()))
+print(mesonscc)
+
+# get "stable" particles ( lifetime in excess of 1 micrometer
+print(" STABLE particles (c*tau> 1 um)")
+stable = ppsvc.get(lambda x: (x.ctau() > micrometer))
+print(stable)
diff --git a/GaudiPartProp/python/GaudiPartProp/DumpParticleProperties.py b/GaudiPartProp/python/GaudiPartProp/DumpParticleProperties.py
new file mode 100644
index 0000000000000000000000000000000000000000..bb8a82dec91d9bc35091993ad97428a381dbef44
--- /dev/null
+++ b/GaudiPartProp/python/GaudiPartProp/DumpParticleProperties.py
@@ -0,0 +1,50 @@
+#!/usr/bin/env python3
+#####################################################################################
+# (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations #
+#                                                                                   #
+# This software is distributed under the terms of the Apache version 2 licence,     #
+# copied verbatim in the file "LICENSE".                                            #
+#                                                                                   #
+# In applying this licence, CERN does not waive the privileges and immunities       #
+# granted to it by virtue of its status as an Intergovernmental Organization        #
+# or submit itself to any jurisdiction.                                             #
+#####################################################################################
+# =============================================================================
+# =============================================================================
+## @file DumpParticleProperties.py
+#  Demo-file for interactive work with new Particle Property Service
+#  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+#  @date 2010-10-22
+# =============================================================================
+"""Trivial script to dump the table of Particle Properties
+"""
+
+# =============================================================================
+__author__ = "Vanya BELYAEV Ivan.Belyaev@nikhef.nl"
+# =============================================================================
+
+
+def dump():
+    import GaudiPartProp.PartPropAlg
+
+    # The following is misunderstood by flake8 - the import is needed as it
+    # has necessary side effects
+    import GaudiPartProp.Service  # noqa: F401
+    from Configurables import MessageSvc
+
+    MessageSvc(OutputLevel=6)
+
+    from GaudiPython.Bindings import AppMgr
+
+    gaudi = AppMgr()
+
+    gaudi.initialize()
+
+    pps = gaudi.gaudiPartProp()
+
+    print(pps.all())
+
+
+# =============================================================================
+if "__main__" == __name__:
+    dump()
diff --git a/GaudiPartProp/python/GaudiPartProp/Nodes.py b/GaudiPartProp/python/GaudiPartProp/Nodes.py
new file mode 100644
index 0000000000000000000000000000000000000000..b80d2fa953a0331680e22786198b1218b14367e3
--- /dev/null
+++ b/GaudiPartProp/python/GaudiPartProp/Nodes.py
@@ -0,0 +1,319 @@
+#!/usr/bin/env python3
+#####################################################################################
+# (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations #
+#                                                                                   #
+# This software is distributed under the terms of the Apache version 2 licence,     #
+# copied verbatim in the file "LICENSE".                                            #
+#                                                                                   #
+# In applying this licence, CERN does not waive the privileges and immunities       #
+# granted to it by virtue of its status as an Intergovernmental Organization        #
+# or submit itself to any jurisdiction.                                             #
+#####################################################################################
+# =============================================================================
+## @file GaudiPartProp/Nodes.py
+#  Simple "decorator for nodes"
+#  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+#  @date 2008-12-03
+# =============================================================================
+"""
+Simple 'decorator for nodes'
+"""
+from __future__ import print_function
+
+# =============================================================================
+__author__ = "Vanya BELYAEV <Ivan.Belyaev@nikhef.nl>"
+__version__ = ""
+# =============================================================================
+
+# Workaround for ROOT-10769
+import warnings
+
+with warnings.catch_warnings():
+    warnings.simplefilter("ignore")
+    import cppyy
+
+import GaudiPython
+
+# namespaces shortcuts
+Decays = cppyy.gbl.Gaudi.Decays
+std = cppyy.gbl.std
+Gaudi = GaudiPython.gbl.Gaudi
+
+
+# =============================================================================
+## Decorate the nodes
+def _decorate(nodes, opers):
+    """
+    Decorate the functions
+    """
+
+    ## __call__
+    if hasattr(opers, "__call__"):
+        ## the regular call
+        def _call_(self, arg):
+            """
+            Evaluate the functor
+
+            >>> fun = ... # get the functor
+            >>> arg = ... # get the argument
+            >>> res = fun ( arg )
+            """
+            result = opers.__call__(self, arg)
+            return True if result else False
+
+        _call_.__doc__ = opers.__call__.__doc__
+
+    ## __or__
+    if hasattr(opers, "__or__"):
+        ## the regular call
+        def _or_(self, arg):
+            """
+            LOGICAL or
+
+            >>> fun1 = ... # get the functor
+            >>> fun2 = ... # get the functor
+            >>> fun  = fun1 | fun2
+            """
+            return opers.__or__(self, arg)
+
+        _or_.__doc__ = opers.__or__.__doc__
+
+    ## __ror__
+    if hasattr(opers, "__ror__"):
+        ## the regular call
+        def _ror_(self, arg):
+            """
+            LOGICAL or
+
+            >>> fun1 = ... # get the functor
+            >>> fun2 = ... # get the functor
+            >>> fun  = fun1 | fun2
+            """
+            return opers.__ror__(self, arg)
+
+        _or_.__doc__ = opers.__or__.__doc__
+
+    ## __and__
+    if hasattr(opers, "__and__"):
+        ## the regular call
+        def _and_(self, arg):
+            """
+            LOGICAL and
+
+            >>> fun1 = ... # get the functor
+            >>> fun2 = ... # get the functor
+            >>> fun  = fun1 & fun2
+            """
+            return opers.__and__(self, arg)
+
+        _and_.__doc__ = opers.__and__.__doc__
+
+    ## __rand__
+    if hasattr(opers, "__rand__"):
+        ## the regular call
+        def _rand_(self, arg):
+            """
+            LOGICAL and
+
+            >>> fun1 = ... # get the functor
+            >>> fun2 = ... # get the functor
+            >>> fun  = fun1 & fun2
+            """
+            return opers.__rand__(self, arg)
+
+        _rand_.__doc__ = opers.__rand__.__doc__
+
+    ## __invert__
+    if hasattr(opers, "__invert__"):
+        ## the regular call
+        def _invert_(self, *arg):
+            """
+            LOGICAL negation
+
+            >>> fun1 = ... # get the functor
+            >>> fun  = ~fun2
+            """
+            return opers.__invert__(self, *arg)
+
+        _invert_.__doc__ = opers.__invert__.__doc__
+
+    ## __rshift__
+    if hasattr(opers, "__rshift__"):
+        ## 'right'-shift
+        def _rshift_(self, arg):
+            """
+            Streamers
+
+            >>> fun1 = ... # get the functor
+            >>> fun1 = ... # get the functor
+            >>> fun = fun1 >> fun2
+            """
+            return opers.__rshift__(self, arg)
+
+        _rshift_.__doc__ = opers.__rshift__.__doc__
+
+    ## __rrshift__
+    if hasattr(opers, "__rrshift__"):
+        ## 'right/right'-shift
+        def _rrshift_(self, arg):
+            """
+            Evaluate the functor as streametr shift
+
+            >>> fun = ... # get the functor
+            >>> arg = ... # get the argument
+            >>> res = arg >> fun
+            """
+            result = opers.__rrshift__(self, arg)
+            return True if result else False
+
+        _rrshift_.__doc__ = opers.__rrshift__.__doc__
+
+        for node in nodes:
+            if _call_:
+                node.__call__ = _call_
+            if _or_:
+                node.__or__ = _or_
+            if _ror_:
+                node.__ror__ = _ror_
+            if _and_:
+                node.__and__ = _and_
+            if _rand_:
+                node.__rand__ = _rand_
+            if _rshift_:
+                node.__rshift__ = _rshift_
+            if _rrshift_:
+                node.__rrshift__ = _rrshift_
+            if _invert_:
+                node.__invert__ = _invert_
+
+            node.__repr__ = lambda s: s.toString()
+            node.__str__ = lambda s: s.toString()
+
+    return nodes
+
+
+## decorate the nodes
+_decorated = _decorate(
+    (
+        Decays.iNode,
+        Decays.Node,
+        #
+        Decays.Nodes.Any,
+        Decays.Nodes.Pid,
+        Decays.Nodes.CC,
+        #
+        Decays.Nodes.Lepton,
+        Decays.Nodes.Nu,
+        Decays.Nodes.Ell,
+        Decays.Nodes.EllPlus,
+        Decays.Nodes.EllMinus,
+        Decays.Nodes.Hadron,
+        Decays.Nodes.Meson,
+        Decays.Nodes.Baryon,
+        Decays.Nodes.Charged,
+        Decays.Nodes.Positive,
+        Decays.Nodes.Negative,
+        Decays.Nodes.Neutral,
+        Decays.Nodes.HasQuark,
+        Decays.Nodes.JSpin,
+        Decays.Nodes.SSpin,
+        Decays.Nodes.LSpin,
+        Decays.Nodes.Nucleus,
+        Decays.Nodes.CTau,
+        Decays.Nodes.ShortLived_,
+        Decays.Nodes.LongLived_,
+        Decays.Nodes.Stable,
+        Decays.Nodes.StableCharged,
+        Decays.Nodes.CTau,
+        Decays.Nodes.Mass,
+        Decays.Nodes.Light,
+        Decays.Nodes.Heavy,
+        Decays.Nodes.Symbol,
+        Decays.Nodes.Invalid,
+        Decays.Nodes._Node,
+        #
+        Decays.Nodes.Or,
+        Decays.Nodes.And,
+        Decays.Nodes.Not,
+    ),  ## nodes
+    # operations
+    opers=Decays.Dict.NodeOps,
+)
+
+## full list of known nodes
+
+iNode = Decays.iNode
+Node = Decays.Node
+#
+Any = Decays.Nodes.Any()  # instance
+Pid = Decays.Nodes.Pid  # type
+CC = Decays.Nodes.CC  # type
+Lepton = Decays.Nodes.Lepton()  # instance
+Nu = Decays.Nodes.Nu()  # instance
+Ell = Decays.Nodes.Ell()  # instance
+EllPlus = Decays.Nodes.EllPlus()  # instance
+EllMinus = Decays.Nodes.EllMinus()  # instance
+Hadron = Decays.Nodes.Hadron()  # instance
+Meson = Decays.Nodes.Meson()  # instance
+Baryon = Decays.Nodes.Baryon()  # instance
+Charged = Decays.Nodes.Charged()  # instance
+Positive = Decays.Nodes.Positive()  # instance
+Negative = Decays.Nodes.Negative()  # instance
+Neutral = Decays.Nodes.Neutral()  # instance
+HasQuark = Decays.Nodes.HasQuark  # type
+JSpin = Decays.Nodes.JSpin  # type
+SSpin = Decays.Nodes.SSpin  # type
+LSpin = Decays.Nodes.LSpin  # type
+Nucleus = Decays.Nodes.Nucleus()  # instance
+Or = Decays.Nodes.Or  # type
+And = Decays.Nodes.And  # type
+Not = Decays.Nodes.Not  # type
+Invalid = Decays.Nodes.Invalid()  # instance
+_Node = Decays.Nodes._Node  # type
+
+PosId = Decays.Nodes.PosID()  # instance
+NegId = Decays.Nodes.NegID()  # instance
+
+Up = HasQuark(Gaudi.ParticleID.up)
+Down = HasQuark(Gaudi.ParticleID.down)
+Strange = HasQuark(Gaudi.ParticleID.strange)
+Charm = HasQuark(Gaudi.ParticleID.charm)
+Beauty = HasQuark(Gaudi.ParticleID.bottom)
+Bottom = HasQuark(Gaudi.ParticleID.bottom)
+Top = HasQuark(Gaudi.ParticleID.top)
+
+Xu = HasQuark(Gaudi.ParticleID.up)
+Xd = HasQuark(Gaudi.ParticleID.down)
+Xs = HasQuark(Gaudi.ParticleID.strange)
+Xc = HasQuark(Gaudi.ParticleID.charm)
+Xb = HasQuark(Gaudi.ParticleID.bottom)
+Xb = HasQuark(Gaudi.ParticleID.bottom)
+Xt = HasQuark(Gaudi.ParticleID.top)
+
+Scalar = JSpin(1)
+Spinor = JSpin(2)
+Vector = JSpin(3)
+Tensor = JSpin(5)
+
+OneHalf = JSpin(2)
+ThreeHalf = JSpin(4)
+FiveHalf = JSpin(6)
+
+CTau = Decays.Nodes.CTau  # type
+LongLived_ = Decays.Nodes.LongLived_  # type
+LongLived = Decays.Nodes.LongLived_()  # instance
+ShortLived_ = Decays.Nodes.ShortLived_  # type
+ShortLived = Decays.Nodes.ShortLived_()  # instance
+Stable = Decays.Nodes.Stable()  # instance
+StableCharged = Decays.Nodes.StableCharged()  # instance
+Mass = Decays.Nodes.Mass  # type
+Light = Decays.Nodes.Light  # type
+Heavy = Decays.Nodes.Heavy  # type
+Symbol = Decays.Nodes.Symbol  # type
+
+NodeList = Decays.NodeList
+
+if "__main__" == __name__:
+    print(" decorated objects: %s " % str(_decorated))
+    print(_decorated)
+    print(dir())
diff --git a/GaudiPartProp/python/GaudiPartProp/PartPropAlg.py b/GaudiPartProp/python/GaudiPartProp/PartPropAlg.py
new file mode 100644
index 0000000000000000000000000000000000000000..6415184c0782bad0bd92fcdc9ac57d19a9bc2f78
--- /dev/null
+++ b/GaudiPartProp/python/GaudiPartProp/PartPropAlg.py
@@ -0,0 +1,27 @@
+#!/usr/bin/env gaudirun.py
+#####################################################################################
+# (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations #
+#                                                                                   #
+# This software is distributed under the terms of the Apache version 2 licence,     #
+# copied verbatim in the file "LICENSE".                                            #
+#                                                                                   #
+# In applying this licence, CERN does not waive the privileges and immunities       #
+# granted to it by virtue of its status as an Intergovernmental Organization        #
+# or submit itself to any jurisdiction.                                             #
+#####################################################################################
+# =============================================================================
+## @file
+#  The configuration file to run QMTest for the package GaudiPartProp
+#  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+#  @date   2008-12-02
+# =============================================================================
+""" The configuration file to run QMTest for the package GaudiPartProp
+"""
+# =============================================================================
+__author__ = "Vanya BELYAEV Ivan.Belyaev@nikhef.nl"
+# =============================================================================
+
+from Configurables import ApplicationMgr
+from Configurables import Gaudi__Examples__PartPropAlg as PPA
+
+ApplicationMgr(TopAlg=[PPA()], EvtSel="NONE", EvtMax=1)
diff --git a/GaudiPartProp/python/GaudiPartProp/PartPropSvc.py b/GaudiPartProp/python/GaudiPartProp/PartPropSvc.py
new file mode 100644
index 0000000000000000000000000000000000000000..8c9b0325c246e537bcb799c7734978baeb83fbd9
--- /dev/null
+++ b/GaudiPartProp/python/GaudiPartProp/PartPropSvc.py
@@ -0,0 +1,134 @@
+#!/usr/bin/env python3
+#####################################################################################
+# (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations #
+#                                                                                   #
+# This software is distributed under the terms of the Apache version 2 licence,     #
+# copied verbatim in the file "LICENSE".                                            #
+#                                                                                   #
+# In applying this licence, CERN does not waive the privileges and immunities       #
+# granted to it by virtue of its status as an Intergovernmental Organization        #
+# or submit itself to any jurisdiction.                                             #
+#####################################################################################
+# =============================================================================
+## @file PartPropSvc.py
+#  Demo-file for interactive work with new Particle Property Service
+#  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+#  @date 2008-12-02
+# =============================================================================
+""" Demo-file for interactive work with new Particle Property Service
+"""
+# =============================================================================
+from builtins import range
+
+__author__ = "Vanya BELYAEV Ivan.Belyaev@nikhef.nl"
+import GaudiPartProp.decorators
+
+# =============================================================================
+import GaudiPartProp.PartPropAlg
+
+# The following is misunderstood by flake8 - the import is needed as it
+# has necessary side effects
+import GaudiPartProp.Service  # noqa: F401
+
+# =============================================================================
+## test the nodes
+from GaudiPartProp.Nodes import (
+    CC,
+    Baryon,
+    Bottom,
+    EllMinus,
+    EllPlus,
+    FiveHalf,
+    Hadron,
+    Lepton,
+    Meson,
+    Nu,
+    Tensor,
+    ThreeHalf,
+)
+from GaudiPython.Bindings import AppMgr
+
+gaudi = AppMgr()
+gaudi.initialize()
+
+
+## simple test-function
+def test():
+    """Simple function for the test"""
+    pps = gaudi.gaudiPartProp()
+
+    for l in range(1, 6):
+        # get
+        lst1 = pps.get(lambda x: l == x.pid().lSpin())
+        print(" %s == 2*lSpin+1 " % l)
+        print(lst1)
+
+    for s in range(0, 2):
+        # get
+        lst1 = pps.get(lambda x: s == x.pid().sSpin())
+        print(" %s == 2*sSpin+1 " % s)
+        print(lst1)
+
+    for j in range(0, 7):
+        # get
+        lst1 = pps.get(lambda x: j == x.pid().jSpin())
+        print(" %s == 2*jSpi+1 " % j)
+        print(lst1)
+
+    decays = [
+        "B0   -> K- pi+",
+        "B+   -> J/psi(1S) ( K*0 -> K+ pi- ) ",
+        "D_s+ -> pi+ pi+ pi- ",
+        "B_s0 -> ( J/psi(1S) -> mu+ mu- ) ( phi(1020) -> K+ K- ) ",
+    ]
+
+    for decay in decays:
+        print("Decay&CC:  %s : %s " % (decay, pps.cc(decay)))
+
+    Item = pps.Item
+    Items = pps.Items
+    Decay = pps.Decay
+    Decays = pps.Decays
+
+    items = Items()
+    items.push_back(Item("K+"))
+    items.push_back(Item("K-"))
+
+    decay = Decay(Item("B0"), items)
+
+    print(decay.validate(pps.svc()))
+
+    decays = Decays()
+    decays.push_back(decay)
+    decays.push_back(decay)
+    decays.push_back(decay)
+
+    print(decay)
+    print(decays)
+
+
+def test2():
+    pps = gaudi.gaudiPartProp()
+
+    nodes = [
+        Lepton & ~Meson,
+        EllPlus | Nu,
+        Lepton & ~Nu,
+        EllMinus | CC("B0"),
+        Hadron & Tensor,
+        Hadron & ThreeHalf,
+        Hadron & FiveHalf,
+        EllPlus | (Bottom & Baryon),
+    ]
+
+    for node in nodes:
+        node.validate(pps.svc())
+
+        lst1 = pps.get(node)
+        print(' selected by node: "%s" ' % node)
+        print(lst1)
+
+
+if "__main__" == __name__:
+    test()
+    test2()
diff --git a/GaudiPartProp/python/GaudiPartProp/Service.py b/GaudiPartProp/python/GaudiPartProp/Service.py
new file mode 100644
index 0000000000000000000000000000000000000000..85b1c6317161848e4d0a807d640c430790eb9caf
--- /dev/null
+++ b/GaudiPartProp/python/GaudiPartProp/Service.py
@@ -0,0 +1,249 @@
+#!/usr/bin/env python3
+#####################################################################################
+# (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations #
+#                                                                                   #
+# This software is distributed under the terms of the Apache version 2 licence,     #
+# copied verbatim in the file "LICENSE".                                            #
+#                                                                                   #
+# In applying this licence, CERN does not waive the privileges and immunities       #
+# granted to it by virtue of its status as an Intergovernmental Organization        #
+# or submit itself to any jurisdiction.                                             #
+#####################################################################################
+# =============================================================================
+# =============================================================================
+## @file GaudiPartProp/Service.py
+#  Useful decorator for Gaudi::(I)ParticlePropertySvc
+#  @see Gaudi::Interfaces::IParticlePropertySvc
+#  @see Gaudi::ParticlePropertySvc
+#  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+#  @date 2008-12-01
+# =============================================================================
+"""
+Useful decorator for Gaudi::(I)ParticlePropertySvc
+"""
+# =============================================================================
+__author__ = "Vanya BELYAEV Ivan.Belyaev@nikhef.nl"
+__version__ = ""
+# =============================================================================
+__all__ = ("iParticlePropertySvc",)
+# The following is misunderstood by flake8 - the import is needed as it
+# has necessary side effects
+import GaudiPartProp.decorators  # noqa: F401
+
+# =============================================================================
+import GaudiPython.Bindings
+
+cpp = GaudiPython.Bindings.gbl
+iService = GaudiPython.Bindings.iService
+Helper = GaudiPython.Bindings.Helper
+InterfaceCast = GaudiPython.Bindings.InterfaceCast
+AppMgr = GaudiPython.Bindings.AppMgr
+Gaudi = GaudiPython.gbl.Gaudi
+
+
+# =============================================================================
+##
+class iParticlePropertySvc(iService):
+    """
+    Class iParticlePropertySvc: 'python'-twin for C++ class
+
+    Gaudi::Interfaces::IParticlePropertySvc
+
+    """
+
+    def __init__(self, name, isvc):
+        """
+        Constructor from the name and the service
+        """
+        iService.__init__(self, name, isvc)
+        self.__dict__["_ipps"] = InterfaceCast(Gaudi.Interfaces.IParticlePropertySvc)(
+            isvc
+        )
+
+    def retrieveInterface(self):
+        iService.retrieveInterface(self)
+        iParticlePropertySvc.__init__(self, self._name, self._isvc)
+
+    ## Find the Particle Property by particle name or particle ID
+    def find(self, what):
+        """
+        Find the Particle Property by particle name or particle ID
+
+        >>> svc = ...                                 # get the service
+        >>> pp1 = svc.find ( 'pi0' )                  # find by name
+        >>> pp2 = svc.find ( Gaudi.ParticleID( 511 ) ) # find by Particle ID
+
+        """
+        if not self._ipps:
+            self.retrieveInterface()
+        return self._ipps.find(what)  # return
+
+    ## get the Particle Properties by particle name or particle ID
+    def get(self, cut, asList=False):
+        """
+        Simple 'get' method for Gaudi::Interfaces::IParticlePropertySvc
+        service to extract the properties which satisfy some criteria
+
+        >>> svc = ...  # get service (Gaudi::Interfaces::IParticlePropertySvc) or vector
+        >>> leptons   = svc.get ( lambda s : s.pid().isLepton() )  # get all leptons
+        >>> longlived = svc.get ( lambda s : s.ctau() > 0.001   )  # get longlived
+
+        """
+        if not self._ipps:
+            self.retrieveInterface()
+        return self._ipps.get(cut, asList)  # return
+
+    ## begin-iterator
+    def begin(self):
+        """
+        Get the begin-iterator for the sequence of particle proeprties
+
+        >>> svc = ... # get the service
+        >>> begin = svc.begin()
+
+        """
+        if not self._ipps:
+            self.retrieveInterface()
+        return self._ipps.begin()  # return
+
+    ## end-iterator
+    def end(self):
+        """
+        Get the end-iterator for the sequence of particle proeprties
+
+        >>> svc = ... # get the service
+        >>> end = svc.end()
+
+        """
+        if not self._ipps:
+            self.retrieveInterface()
+        return self._ipps.end()  # return
+
+    ## get all
+    def all(self, asList=False):
+        """
+        Get all particle properties form the service
+
+        >>> svc = ... # get the service
+        >>> all = svc.all ()  # get all properties
+
+        """
+        if not self._ipps:
+            self.retrieveInterface()
+        return self._ipps.all(asList)  # return
+
+    ## dump the particle property table
+    def dump(self):
+        """
+        Dump the particle property table
+        """
+        self.Dump = True
+
+    ## CC-conjugation
+    def cc(self, decay):
+        """
+        Get CC-conjugationfor decay -descriptor
+
+        >>> svc = ...                       # get the service
+        >>> cc = svc.cc ( 'B0 -> K- pi+' )  # get CC-conjugation
+
+        """
+        if not self._ipps:
+            self.retrieveInterface()
+        return self._ipps.cc(decay)  # return
+
+    ## get the C++ service itself
+    def svc(self):
+        """
+        Get C++ service
+
+        >>> svc = ...  #
+        >>> svccpp = svc.svc ()
+
+        """
+        if not self._ipps:
+            self.retrieveInterface()
+        return self._ipps  # return
+
+    ## get the C++ service itself
+    def service(self):
+        """
+        Get C++ service
+
+        >>> svc = ...  #
+        >>> svccpp = svc.service ()
+
+        """
+        return self.svc()
+
+    ## validate the node/decay/tree
+    def validate(self, obj):
+        """
+        Validate the node/decay/tree
+
+        >>> svc  = ...  # get the service
+        >>> node = ...  # get the node
+        >>> sc = svc.validate ( node )
+        """
+        return obj.validate(self.svc())
+
+    ## make iteration over all known particle properties
+    def __iter__(self):
+        """
+        Make an iteration over all known particle properties:
+
+        >>> svc = ...       # get the service
+        >>> for pp i svc :  # make an iteration
+        ...     print pp
+
+        """
+        if not self._ipps:
+            self.retrieveInterface()
+        _list = self._ipps.all(False)
+        _size = len(_list)
+        _i = 0
+        while _i < _size:
+            yield _list[_i]
+            _i += 1
+
+    ## get the size (number of known particle proeprties)
+    def size(self):
+        """
+        Get the length(size) of known particle properties
+        """
+        if not self._ipps:
+            self.retrieveInterface()
+        return self._ipps.size()
+
+    ## get the size (number of known particle proeprties)
+    def __len__(self):
+        """
+        Get the length(size) of known particle properties
+        """
+        return self.size()
+
+
+# useful types
+iParticlePropertySvc.ParticleIDs = Gaudi.Interfaces.IParticlePropertySvc.ParticleIDs
+iParticlePropertySvc.Decay = Gaudi.Interfaces.IParticlePropertySvc.Decay
+iParticlePropertySvc.Decays = Gaudi.Interfaces.IParticlePropertySvc.Decays
+iParticlePropertySvc.Item = Gaudi.Interfaces.IParticlePropertySvc.Item
+iParticlePropertySvc.Items = Gaudi.Interfaces.IParticlePropertySvc.Items
+
+
+# =============================================================================
+## accessor to the service
+def _ppSvc_(self, name="Gaudi::ParticlePropertySvc"):
+    """
+    Get particle property service form application manager
+
+    >>> gaudi = ...
+    >>> pps = gaudi.gaudiPartProp()
+
+    """
+    svc = Helper.service(self._svcloc, name)
+    return iParticlePropertySvc(name, svc)
+
+
+AppMgr.gaudiPartProp = _ppSvc_
+AppMgr.gaudiPartProp = _ppSvc_
diff --git a/GaudiPartProp/python/GaudiPartProp/__init__.py b/GaudiPartProp/python/GaudiPartProp/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..fb66ba9cfe000aa0ad91d41d85680150d74fe648
--- /dev/null
+++ b/GaudiPartProp/python/GaudiPartProp/__init__.py
@@ -0,0 +1,27 @@
+#!/usr/bin/env python3
+#####################################################################################
+# (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations #
+#                                                                                   #
+# This software is distributed under the terms of the Apache version 2 licence,     #
+# copied verbatim in the file "LICENSE".                                            #
+#                                                                                   #
+# In applying this licence, CERN does not waive the privileges and immunities       #
+# granted to it by virtue of its status as an Intergovernmental Organization        #
+# or submit itself to any jurisdiction.                                             #
+#####################################################################################
+# =============================================================================
+## @file GaudiPartProp/__init__.py
+#  Helper file/module for GaudiPartProp package
+#  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+#  date 2008-12-01
+# =============================================================================
+"""
+Helper file/module for GaudiPartProp package
+"""
+# =============================================================================
+__author__ = "Vanya BELYAEV Ivan.Belyaev@nikhef.nl"
+__version__ = ""
+# =============================================================================
+# The following is misunderstood by flake8 - the import is needed as it
+# defines this for module scripts
+from ._default_table import DEFAULT_PARTICLE_PROPERTY_FILE  # noqa: F401
diff --git a/GaudiPartProp/python/GaudiPartProp/_default_table.py b/GaudiPartProp/python/GaudiPartProp/_default_table.py
new file mode 100644
index 0000000000000000000000000000000000000000..caaf1781358bb921bcaea846fe895ae5ec2da8ca
--- /dev/null
+++ b/GaudiPartProp/python/GaudiPartProp/_default_table.py
@@ -0,0 +1,13 @@
+#####################################################################################
+# (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations #
+#                                                                                   #
+# This software is distributed under the terms of the Apache version 2 licence,     #
+# copied verbatim in the file "LICENSE".                                            #
+#                                                                                   #
+# In applying this licence, CERN does not waive the privileges and immunities       #
+# granted to it by virtue of its status as an Intergovernmental Organization        #
+# or submit itself to any jurisdiction.                                             #
+#####################################################################################
+from pathlib import Path
+
+DEFAULT_PARTICLE_PROPERTY_FILE = Path(__file__).parent / "default.ParticleTable.txt"
diff --git a/GaudiPartProp/python/GaudiPartProp/decorators.py b/GaudiPartProp/python/GaudiPartProp/decorators.py
new file mode 100644
index 0000000000000000000000000000000000000000..58502c999dc1f782fc97230cb6e4a5198b8c543d
--- /dev/null
+++ b/GaudiPartProp/python/GaudiPartProp/decorators.py
@@ -0,0 +1,365 @@
+#!/usr/bin/env python3
+#####################################################################################
+# (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations #
+#                                                                                   #
+# This software is distributed under the terms of the Apache version 2 licence,     #
+# copied verbatim in the file "LICENSE".                                            #
+#                                                                                   #
+# In applying this licence, CERN does not waive the privileges and immunities       #
+# granted to it by virtue of its status as an Intergovernmental Organization        #
+# or submit itself to any jurisdiction.                                             #
+#####################################################################################
+# =============================================================================
+# =============================================================================
+## @file GaudiPartProp/decorators.py
+#  The set of basic decorator for objects from GaudiPartProp package
+#  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+#  @date   2008-12-01
+# =============================================================================
+"""
+The set of basic decorators for objects from GaudiPartProp package
+"""
+# =============================================================================
+__author__ = "Vanya BELYAEV <Ivan.Belyaev@nikhef.nl>"
+__version__ = ""
+# =============================================================================
+
+import GaudiPython
+
+# namespaces shortcuts
+cpp = GaudiPython.gbl
+std = GaudiPython.gbl.std
+Decays = GaudiPython.gbl.Gaudi.Decays
+Gaudi = GaudiPython.gbl.Gaudi
+
+
+## get all particle properties form the service
+def _get_all_(self, asList=False):
+    """
+    Get all particle properties from the service
+
+    >>> svc = ... # get the service
+    >>> all = svc.all ()  # get all properties
+
+    """
+    _all = Gaudi.ParticleProperties.allProperties(self)
+    if not asList:
+        return _all
+    return _all.toList()
+
+
+## decorate service
+Gaudi.Interfaces.IParticlePropertySvc.all = _get_all_
+
+
+## simple "get" method for the service
+def _get_pp_(self, cut, asList=False):
+    """
+    Simple 'get' method for Gaudi::Interfaces::IParticlePropertySvc
+    service to extract the properties which satisfy some criteria
+
+    >>> svc = ...  # get service (Gaudi::Interfaces::IParticlePropertySvc) or vector
+    >>> leptons   = svc.get ( lambda s : s.pid().isLepton() )  # get all leptons
+    >>> longlived = svc.get ( lambda s : s.ctau() > 0.001   )  # get longlived
+
+    """
+    _all = self.all()
+    return _all.get(cut, asList)
+
+
+## simple "get" method for the service
+def _get_ppv_(self, cut, asList=False):
+    """
+    Simple 'get' method for Gaudi::Interfaces::IParticlePropertySvc
+    service to extract the properties which satisfy some criteria
+
+    >>> svc = ...  # get service (Gaudi::Interfaces::IParticlePropertySvc) or vector
+    >>> leptons   = svc.get ( lambda s : s.pid().isLepton() )  # get all leptons
+    >>> longlived = svc.get ( lambda s : s.ctau() > 0.001   )  # get longlived
+
+    """
+    result = []
+    for pp in self:
+        if cut(pp):
+            result.append(pp)
+    if asList:
+        return result
+    vct = Gaudi.Interfaces.IParticlePropertySvc.ParticleProperties()
+    vct.fromList(result)
+    return vct
+
+
+# ## decorate service
+Gaudi.Interfaces.IParticlePropertySvc.get = _get_pp_
+Gaudi.Interfaces.IParticlePropertySvc.ParticleProperties.get = _get_ppv_
+Gaudi.Interfaces.IParticlePropertySvc.__len__ = (
+    Gaudi.Interfaces.IParticlePropertySvc.size
+)
+
+
+# =============================================================================
+## Convert Gaudi::Interfaces::IParticlePropertySvc::ParticleProperties into python list
+def _ppv_2_list_(self):
+    """
+    Convert Gaudi::Interfaces::IParticlePropertySvc::ParticleProperties into python list
+
+    >>> ppv = ...   # get the vector
+    >>> lst = ppv.toList () # convert it to the list
+
+    """
+    result = []
+    size = self.size()
+    index = 0
+    while index < size:
+        pp = self.at(index)
+        result.append(pp)
+        index += 1
+    return result
+
+
+# ==============================================================================
+## convert python list into Gaudi.IParticlePropertisvc.ParticleProperties
+def _ppv_from_lst_(self, lst):
+    """
+    Append the iterable sequence 'lst' to the vector of
+    particle properties:
+
+    >>> Vct = std.vector('const Gaudi::ParticleProperty*')
+    >>> lst = [ pp1 , pp2 , pp3 ]
+    >>> vct = Vct()
+    >>> vct.fromList ( lst )
+
+    """
+    for item in lst:
+        self.push_back(item)
+
+
+# =============================================================================
+## Print vector of particle properties in a form of table
+def _prnt_as_table_(self, *args):
+    """
+    Print vector of particle properties in a form of table
+
+    >>> print vct.asTable()
+
+    """
+    return Gaudi.ParticleProperties.printAsTable(self, *args)
+
+
+# ============================================================================
+# delegate the evaluation of unknown atrributes to Gaudi.ParticleID class
+def _get_attr_from_PID_(self, attr):
+    """
+    Delegate the evaluation of unknown atrributes to Gaudi.ParticleID class
+
+    >>> pp = ...
+    >>> print pp.jSpin()
+
+    """
+    _pid = self.pid()
+    if hasattr(_pid, attr):
+        return getattr(_pid, attr)
+    raise AttributeError("Unknown attribute: %s " % attr)
+
+
+## decorate the vector of properties
+Gaudi.Interfaces.IParticlePropertySvc.ParticleProperties.toList = _ppv_2_list_
+Gaudi.Interfaces.IParticlePropertySvc.ParticleProperties.toLst = _ppv_2_list_
+## decorate the vector of properties
+Gaudi.Interfaces.IParticlePropertySvc.ParticleProperties.fromList = _ppv_from_lst_
+Gaudi.Interfaces.IParticlePropertySvc.ParticleProperties.fromLst = _ppv_from_lst_
+## decorate the vector of properties
+Gaudi.Interfaces.IParticlePropertySvc.ParticleProperties.__repr__ = (
+    lambda s: s.toList().__repr__()
+)
+Gaudi.Interfaces.IParticlePropertySvc.ParticleProperties.__str__ = _prnt_as_table_
+Gaudi.Interfaces.IParticlePropertySvc.ParticleProperties.__len__ = (
+    Gaudi.Interfaces.IParticlePropertySvc.ParticleProperties.size
+)
+
+## decorate the printout for Gaudi::ParticleProperty
+Gaudi.ParticleProperty.__str__ = Gaudi.ParticleProperty.toString
+Gaudi.ParticleProperty.__repr__ = Gaudi.ParticleProperty.toString
+
+## decorate the attribute access for Gaudi.ParticleProperty
+Gaudi.ParticleProperty.__getattr__ = _get_attr_from_PID_
+
+## decorate the printout for Gaudi::ParticleID
+Gaudi.ParticleID.__str__ = Gaudi.ParticleID.toString
+Gaudi.ParticleID.__repr__ = Gaudi.ParticleID.toString
+
+
+def _pp_cmp_(pp1, pp2):
+    """Comparison for ParticleProperty objects."""
+    if pp1 == pp2:
+        return 0
+    comparator = Gaudi.ParticleProperty.Compare()
+    return -1 if comparator(pp1, pp2) else 1
+
+
+def _pp_lt_(pp1, pp2):
+    """Comparison `<` for ParticleProperty objects."""
+    return _pp_cmp_(pp1, pp2) < 0
+
+
+Gaudi.ParticleProperty.__cmp__ = _pp_cmp_
+Gaudi.ParticleProperty.__lt__ = _pp_lt_
+
+
+## abs for ParticleID
+def _abs_1_(self):
+    """
+    Absolute value for the PID
+
+    >>> p  = ...
+    >>> pa = abs ( p  )
+
+    """
+    if 0 <= self.pid():
+        return self
+    return Gaudi.ParticleID(self.abspid())
+
+
+## abs for ParticleProperty
+def _abs_2_(self):
+    """
+    Absolute value for the ParticleProperty
+
+    >>> p  = ...
+    >>> pa = abs ( p  )
+
+    """
+    ##
+    _pid = self.particleID()
+    if self.selfcc() or 0 <= _pid.pid():
+        return self
+    ##
+    _anti = self.anti()
+    if _anti and 0 <= _anti.particleID().pid():
+        return _anti
+    ##
+    return self
+
+
+Gaudi.ParticleID.__abs__ = _abs_1_
+Gaudi.ParticleProperty.__abs__ = _abs_2_
+
+## define the type for std::vector<Gaudi::ParticleID>
+Gaudi.ParticleIDs = std.vector(Gaudi.ParticleID)
+
+
+## get particleID objects whcih satisfy some criteria
+def _get_pid_(self, cut):
+    """
+    Get particleID objects which satisfy some criteria
+
+    >>> pids   = ...  # vector of LCHb::ParticleID objects
+    >>> good   = pids.get( lambda s :   s.isLepton() )  # get leptons
+    >>> scalar = pids.get( lambda s : 1 == s.jSpin() )  # get scalars
+
+    """
+    size = self.size()
+    index = 0
+    result = []
+    while index < size:
+        pid = self.at(index)
+        if cut(pid):
+            result.append(pid)
+        index += 1
+    return result
+
+
+## decorate the vector of properties
+Gaudi.ParticleIDs.toList = _ppv_2_list_
+Gaudi.ParticleIDs.toLst = _ppv_2_list_
+## decorate the vector of properties
+Gaudi.ParticleIDs.fromList = _ppv_from_lst_
+Gaudi.ParticleIDs.fromLst = _ppv_from_lst_
+## decorate the vector of properties
+Gaudi.ParticleIDs.__repr__ = lambda s: s.toList().__repr__()
+Gaudi.ParticleIDs.__str__ = lambda s: s.toList().__str__()
+## decorate the vector of properties
+Gaudi.ParticleIDs.get = _get_pid_
+
+Decays.Decay.Item.__str__ = lambda s: s.name()
+Decays.Decay.Item.__repr__ = lambda s: s.name()
+
+Decays.Decay.__str__ = lambda s: s.toString()
+Decays.Decay.__repr__ = lambda s: s.toString()
+
+_items = std.vector(Decays.Decay.Item)
+_items.toList = lambda s: [i for i in s]
+_items.toLst = lambda s: [i for i in s]
+_items.__str__ = lambda s: s.toList().__str__()
+_items.__repr__ = lambda s: s.toList().__repr__()
+_decays = std.vector(Decays.Decay)
+_decays.toList = lambda s: [i for i in s]
+_decays.toLst = lambda s: [i for i in s]
+_decays.__str__ = lambda s: s.toList().__str__()
+_decays.__repr__ = lambda s: s.toList().__repr__()
+
+Gaudi.Interfaces.IParticlePropertySvc.ParticleIDs = Gaudi.ParticleIDs
+Gaudi.Interfaces.IParticlePropertySvc.Decays = _decays
+Gaudi.Interfaces.IParticlePropertySvc.Items = _items
+Gaudi.Interfaces.IParticlePropertySvc.Decay = Decays.Decay
+Gaudi.Interfaces.IParticlePropertySvc.Item = Decays.Decay.Item
+
+
+def _validate_(self, svc):
+    """
+    Validate the vector of items/decays
+
+    >>> vct = ...            # get the vector of items/decays
+    >>> svc = ...            # get the service
+    >>> vcs.vaildate ( svc ) # validate
+    """
+    for o in self:
+        sc = o.validate(svc)
+        if sc.isFailure():
+            return sc
+    return cpp.StatusCode(cpp.StatusCode.SUCCESS)
+
+
+_decays.validate = _validate_
+_items.validate = _validate_
+
+_old_symbols_ = Decays.Symbols.symbols
+_old_particles_ = Decays.Symbols.particles
+
+
+def _symbols_(self):
+    """
+    Get all known predefined symbols:
+
+    >>> syms = ...         # get the table of symbols
+    >>> s = syms.symbols() # get the list of symbols
+
+    """
+    strings = std.vector("std::string")()
+    _old_symbols_(self, strings)
+    res = []
+    for s in strings:
+        res.append(s)
+    return res
+
+
+def _sym_iter_(self):
+    """
+    Iteration over all known symbols
+
+    >>> syms = ...  # get the table of symbols
+    >>> for s in syms :
+    ...    print ' help for %s :' % s , syms.symbol ( s )
+    """
+    _list = self.symbols()
+    _i = 0
+    while _i < len(_list):
+        yield _list[_i]
+        _i += 1
+
+
+Decays.Symbols.symbols = _symbols_
+Decays.Symbols.__iter__ = _sym_iter_
+
+## instance:
+Symbols = Decays.Symbols.instance()  ## instance
diff --git a/GaudiPartProp/python/GaudiPartProp/default.ParticleTable.txt b/GaudiPartProp/python/GaudiPartProp/default.ParticleTable.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9139665d48612115e8a2c7e91ea7acc49a3f6fdc
--- /dev/null
+++ b/GaudiPartProp/python/GaudiPartProp/default.ParticleTable.txt
@@ -0,0 +1,987 @@
+#
+# ParticleTable.txt file containing particle
+# properties for ParticlePropertySvc, EvtGen and Pythia.
+# Uses PDG 2014 when available.
+#
+PARTICLE
+#
+#                    GEANTID    PDGID  CHARGE   MASS(GeV)      TLIFE(s)                    EVTGENNAME    PYTHIAID    MAXWIDTH
+#
+ gamma                   1          22   0.0      0.00000000      1.000000e+16                     gamma          22      0.00000000
+ W+                     53          24   1.0     80.37900000      3.156893e-25                        W+          24      0.00000000
+ W-                     54         -24  -1.0     80.37900000      3.156893e-25                        W-         -24      0.00000000
+ Z0                     55          23   0.0     91.18760000      2.637914e-25                        Z0          23      0.00000000
+ e+                      2         -11   1.0      0.00051100      1.000000e+16                        e+         -11      0.00000000
+ e-                      3          11  -1.0      0.00051100      1.000000e+16                        e-          11      0.00000000
+ nu_e                    4          12   0.0      0.00000000      1.000000e+16                      nu_e          12      0.00000000
+ nu_e~                 302         -12   0.0      0.00000000      1.000000e+16                 anti-nu_e         -12      0.00000000
+ mu+                     5         -13   1.0      0.10565837      2.196981e-06                       mu+         -13      0.00000000
+ mu-                     6          13  -1.0      0.10565837      2.196981e-06                       mu-          13      0.00000000
+ nu_mu                 300          14   0.0      0.00000000      1.000000e+16                     nu_mu          14      0.00000000
+ nu_mu~                301         -14   0.0      0.00000000      1.000000e+16                anti-nu_mu         -14      0.00000000
+ tau+                   51         -15   1.0      1.77686000      2.903449e-13                      tau+         -15      0.00000000
+ tau-                   52          15  -1.0      1.77686000      2.903449e-13                      tau-          15      0.00000000
+ pi0                     7         111   0.0      0.13497700      8.520000e-17                       pi0         111      0.00000000
+ pi+                     8         211   1.0      0.13957061      2.603300e-08                       pi+         211      0.00000000
+ pi-                     9        -211  -1.0      0.13957061      2.603300e-08                       pi-        -211      0.00000000
+ eta                    17         221   0.0      0.54786200      5.063171e-19                       eta         221      0.00000000
+ rho(770)0              33         113   0.0      0.77526000      4.414569e-24                      rho0         113      0.00000000
+ rho(770)+              34         213   1.0      0.77526000      4.414569e-24                      rho+         213      0.00000000
+ rho(770)-              35        -213  -1.0      0.77526000      4.414569e-24                      rho-        -213      0.00000000
+ omega(782)             36         223   0.0      0.78265000      7.752794e-23                     omega         223      0.00000000
+ eta_prime             127         331   0.0      0.95778000      3.358224e-21                      eta'         331      0.00000000
+ sigma_0               850     9000221   0.0      0.47500000      1.196749e-24                   sigma_0           0      0.00000000
+ f_0(980)              596     9010221   0.0      0.99000000      1.097020e-23                       f_0       10221      0.00000000
+ a_0(980)0             132     9000111   0.0      0.98000000      8.776163e-24                      a_00       10111      0.00000000
+ a_0(980)+             133     9000211   1.0      0.98000000      8.776163e-24                      a_0+       10211      0.00000000
+ a_0(980)-             134    -9000211  -1.0      0.98000000      8.776163e-24                      a_0-      -10211      0.00000000
+ phi(1020)              37         333   0.0      1.01946100      1.549099e-22                       phi         333      0.00000000
+ h_1(1170)             597       10223   0.0      1.17000000      1.828367e-24                       h_1       10223      0.00000000
+ b_1(1235)0            588       10113   0.0      1.22950000      4.635297e-24                      b_10       10113      0.00000000
+ b_1(1235)+            592       10213   1.0      1.22950000      4.635297e-24                      b_1+       10213      0.00000000
+ b_1(1235)-            593      -10213  -1.0      1.22950000      4.635297e-24                      b_1-      -10213      0.00000000
+ a_1(1260)0            135       20113   0.0      1.23000000      1.567172e-24                      a_10       20113      0.00000000
+ a_1(1260)+             42       20213   1.0      1.23000000      1.567172e-24                      a_1+       20213      0.00000000
+ a_1(1260)-             43      -20213  -1.0      1.23000000      1.567172e-24                      a_1-      -20213      0.00000000
+ f_2(1270)             367         225   0.0      1.27550000      3.555982e-24                       f_2         225      0.00000000
+ f_1(1285)             687       20223   0.0      1.28190000      2.899612e-23                       f_1       20223      0.00000000
+ eta(1295)             811      100221   0.0      1.29400000      1.196749e-23                   eta(2S)           0      0.00000000
+ pi(1300)0             805      100111   0.0      1.30000000      1.645530e-24                   pi(2S)0           0      0.00000000
+ pi(1300)+             807      100211   1.0      1.30000000      1.645530e-24                   pi(2S)+           0      0.00000000
+ pi(1300)-             808     -100211  -1.0      1.30000000      1.645530e-24                   pi(2S)-           0      0.00000000
+ a_2(1320)0            136         115   0.0      1.31690000      6.151516e-24                      a_20         115      0.00000000
+ a_2(1320)+            137         215   1.0      1.31690000      6.151516e-24                      a_2+         215      0.00000000
+ a_2(1320)-            138        -215  -1.0      1.31690000      6.151516e-24                      a_2-        -215      0.00000000
+ f_0(1370)             686       10221   0.0      1.35000000      1.880606e-24                      f'_0       10331      0.00000000
+ h_1(1380)             604       10333   0.0      1.41600000      7.313467e-24                      h'_1       10333      0.00000000
+ pi_1(1400)0          1021     9000113   0.0      1.35400000      1.994582e-24               pi_1(1400)0           0      0.00000000
+ pi_1(1400)+          1023     9000213   1.0      1.35400000      1.994582e-24               pi_1(1400)+           0      0.00000000
+ pi_1(1400)-          1024    -9000213  -1.0      1.35400000      1.994582e-24               pi_1(1400)-           0      0.00000000
+ eta(1405)0           1025     9020221   0.0      1.40880000      1.313796e-23                eta(1405)0           0      0.00000000
+ omega(1420)           812      100223   0.0      1.42500000      3.061452e-24                 omega(2S)           0      0.00000000
+ f_1(1420)             692       20333   0.0      1.42640000      1.198929e-23                      f'_1       20333      0.00000000
+ rho(1450)0            806      100113   0.0      1.46500000      1.645530e-24                  rho(2S)0           0      0.00000000
+ rho(1450)+            809      100213   1.0      1.46500000      1.645530e-24                  rho(2S)+           0      0.00000000
+ rho(1450)-            810     -100213  -1.0      1.46500000      1.645530e-24                  rho(2S)-           0      0.00000000
+ a_0(1450)0            587       10111   0.0      1.46700000      2.483820e-24                a_0(1450)0           0      0.00000000
+ a_0(1450)+            590       10211   1.0      1.46700000      2.483820e-24                a_0(1450)+           0      0.00000000
+ a_0(1450)-            591      -10211  -1.0      1.46700000      2.483820e-24                a_0(1450)-           0      0.00000000
+ eta(1475)             826      100331   0.0      1.47500000      7.743673e-24                 eta(1475)           0      0.00000000
+ f_0(1500)             855     9030221   0.0      1.50600000      6.038644e-24                 f_0(1500)           0      0.00000000
+ f'_2(1525)            380         335   0.0      1.52500000      9.016605e-24                      f'_2         335      0.00000000
+ pi_1(1600)0          1027     9010113   0.0      1.66000000      2.742551e-24               pi_1(1600)0           0      0.00000000
+ pi_1(1600)+          1029     9010213   1.0      1.66000000      2.742551e-24               pi_1(1600)+           0      0.00000000
+ pi_1(1600)-          1030    -9010213  -1.0      1.66000000      2.742551e-24               pi_1(1600)-           0      0.00000000
+ eta_2(1645)           598       10225   0.0      1.61700000      3.636531e-24               eta_2(1645)           0      0.00000000
+ omega(1650)           746       30223   0.0      1.67000000      2.089563e-24               omega(1650)           0      0.00000000
+ pi_2(1670)0           589       10115   0.0      1.67060000      2.551209e-24               pi_2(1670)0           0      0.00000000
+ pi_2(1670)+           594       10215   1.0      1.67060000      2.551209e-24               pi_2(1670)+           0      0.00000000
+ pi_2(1670)-           595      -10215  -1.0      1.67060000      2.551209e-24               pi_2(1670)-           0      0.00000000
+ omega_3(1670)         368         227   0.0      1.66700000      3.917930e-24             omega_3(1670)           0      0.00000000
+ phi(1680)             827      100333   0.0      1.68000000      4.388081e-24                 phi(1680)           0      0.00000000
+ rho_3(1690)0          361         117   0.0      1.68880000      4.088274e-24              rho_3(1690)0           0      0.00000000
+ rho_3(1690)+          363         217   1.0      1.68880000      4.088274e-24              rho_3(1690)+           0      0.00000000
+ rho_3(1690)-          364        -217  -1.0      1.68880000      4.088274e-24              rho_3(1690)-           0      0.00000000
+ rho(1700)0            743       30113   0.0      1.72000000      2.632849e-24                  rho(3S)0           0      0.00000000
+ rho(1700)+            744       30213   1.0      1.72000000      2.632849e-24                  rho(3S)+           0      0.00000000
+ rho(1700)-            745      -30213  -1.0      1.72000000      2.632849e-24                  rho(3S)-           0      0.00000000
+ f_0(1710)             603       10331   0.0      1.70400000      5.351317e-24                 f_0(1710)           0      0.00000000
+ pi(1800)0             840     9010111   0.0      1.81000000      3.164482e-24                 pi(1800)0           0      0.00000000
+ pi(1800)+             841     9010211   1.0      1.81000000      3.164482e-24                 pi(1800)+           0      0.00000000
+ pi(1800)-             842    -9010211  -1.0      1.81000000      3.164482e-24                 pi(1800)-           0      0.00000000
+ phi_3(1850)           381         337   0.0      1.85400000      7.565657e-24               phi_3(1850)           0      0.00000000
+ eta_2(1870)           605       10335   0.0      1.85400000      0.000000e+00               eta_2(1870)           0      0.00000000
+ f_2(1950)             813     9050225   0.0      1.93600000      1.418560e-24                 f_2(1950)           0      0.00000000
+ f_2(2010)             828     9060225   0.0      2.01000000      3.291061e-24                 f_2(2010)           0      0.00000000
+ a_4(2040)0            362         119   0.0      1.96700000      2.581224e-24                a_4(2040)0           0      0.00000000
+ a_4(2040)+            365         219   1.0      1.96700000      2.581224e-24                a_4(2040)+           0      0.00000000
+ a_4(2040)-            366        -219  -1.0      1.96700000      2.581224e-24                a_4(2040)-           0      0.00000000
+ f_4(2050)             369         229   0.0      2.01800000      2.777267e-24                 f_4(2050)           0      0.00000000
+ f_2(2300)             857     9080225   0.0      2.29700000      4.417530e-24                 f_2(2300)           0      0.00000000
+ f_2(2340)             858     9090225   0.0      2.35000000      2.063361e-24                 f_2(2340)           0      0.00000000
+ K0                    370         311   0.0      0.49761100      0.000000e+00                        K0         311      0.00000000
+ K~0                   371        -311   0.0      0.49761100      0.000000e+00                   anti-K0        -311      0.00000000
+ KS0                    16         310   0.0      0.49761100      8.956400e-11                      K_S0         310      0.00000000
+ KL0                    10         130   0.0      0.49761100      5.116000e-08                      K_L0         130      0.00000000
+ K+                     11         321   1.0      0.49367700      1.238000e-08                        K+         321      0.00000000
+ K-                     12        -321  -1.0      0.49367700      1.238000e-08                        K-        -321      0.00000000
+ K*(892)0               40         313   0.0      0.89555000      1.391569e-23                       K*0         313      0.00000000
+ K*(892)~0              41        -313   0.0      0.89555000      1.391569e-23                  anti-K*0        -313      0.00000000
+ K*(892)+               38         323   1.0      0.89166000      1.308573e-23                       K*+         323      0.00000000
+ K*(892)-               39        -323  -1.0      0.89166000      1.308573e-23                       K*-        -323      0.00000000
+ K_1(1270)0            141       10313   0.0      1.27200000      7.313469e-24                      K_10       10313      0.00000000
+ K_1(1270)~0           142      -10313   0.0      1.27200000      7.313469e-24                 anti-K_10      -10313      0.00000000
+ K_1(1270)+            139       10323   1.0      1.27200000      7.313469e-24                      K_1+       10323      0.00000000
+ K_1(1270)-            140      -10323  -1.0      1.27200000      7.313469e-24                      K_1-      -10323      0.00000000
+ K_1(1400)0            145       20313   0.0      1.40300000      3.782829e-24                     K'_10       20313      0.00000000
+ K_1(1400)~0           146      -20313   0.0      1.40300000      3.782829e-24                anti-K'_10      -20313      0.00000000
+ K_1(1400)+            143       20323   1.0      1.40300000      3.782829e-24                     K'_1+       20323      0.00000000
+ K_1(1400)-            144      -20323  -1.0      1.40300000      3.782829e-24                     K'_1-      -20323      0.00000000
+ K*(1410)0             816      100313   0.0      1.42100000      2.837122e-24                      K'*0           0      0.00000000
+ K*(1410)~0            817     -100313   0.0      1.42100000      2.837122e-24                 anti-K'*0           0      0.00000000
+ K*(1410)+             822      100323   1.0      1.42100000      2.837122e-24                      K'*+           0      0.00000000
+ K*(1410)-             823     -100323  -1.0      1.42100000      2.837122e-24                      K'*-           0      0.00000000
+ K*_0(1430)0           149       10311   0.0      1.43000000      2.437823e-24                     K_0*0       10311      0.00000000
+ K*_0(1430)~0          150      -10311   0.0      1.43000000      2.437823e-24                anti-K_0*0      -10311      0.00000000
+ K*_0(1430)+           147       10321   1.0      1.43000000      2.437823e-24                     K_0*+       10321      0.00000000
+ K*_0(1430)-           148      -10321  -1.0      1.43000000      2.437823e-24                     K_0*-      -10321      0.00000000
+ K*_2(1430)0           153         315   0.0      1.43240000      6.038644e-24                     K_2*0         315      0.00000000
+ K*_2(1430)~0          154        -315   0.0      1.43240000      6.038644e-24                anti-K_2*0        -315      0.00000000
+ K*_2(1430)+           151         325   1.0      1.42560000      6.682357e-24                     K_2*+         325      0.00000000
+ K*_2(1430)-           152        -325  -1.0      1.42560000      6.682357e-24                     K_2*-        -325      0.00000000
+ K(1460)0              814      100311   0.0      1.43240000      0.000000e+00                  K(1460)0           0      0.00000000
+ K(1460)~0             815     -100311   0.0      1.43240000      0.000000e+00             anti-K(1460)0           0      0.00000000
+ K(1460)+              820      100321   1.0      1.43240000      0.000000e+00                  K(1460)+           0      0.00000000
+ K(1460)-              821     -100321  -1.0      1.43240000      0.000000e+00                  K(1460)-           0      0.00000000
+ K*(1680)0             747       30313   0.0      1.71800000      2.056913e-24                     K''*0           0      0.00000000
+ K*(1680)~0            748      -30313   0.0      1.71800000      2.056913e-24                anti-K''*0           0      0.00000000
+ K*(1680)+             749       30323   1.0      1.71800000      2.056913e-24                     K''*+           0      0.00000000
+ K*(1680)-             750      -30323  -1.0      1.71800000      2.056913e-24                     K''*-           0      0.00000000
+ K_2(1770)0            599       10315   0.0      1.77300000      3.538775e-24                K_2(1770)0           0      0.00000000
+ K_2(1770)~0           600      -10315   0.0      1.77300000      3.538775e-24           anti-K_2(1770)0           0      0.00000000
+ K_2(1770)+            601       10325   1.0      1.77300000      3.538775e-24                K_2(1770)+           0      0.00000000
+ K_2(1770)-            602      -10325  -1.0      1.77300000      3.538775e-24                K_2(1770)-           0      0.00000000
+ K*_3(1780)0           372         317   0.0      1.77600000      4.139699e-24                     K_3*0           0      0.00000000
+ K*_3(1780)~0          373        -317   0.0      1.77600000      4.139699e-24                anti-K_3*0           0      0.00000000
+ K*_3(1780)+           376         327   1.0      1.77600000      4.139699e-24                     K_3*+           0      0.00000000
+ K*_3(1780)-           377        -327  -1.0      1.77600000      4.139699e-24                     K_3*-           0      0.00000000
+ K_2(1820)0            688       20315   0.0      1.81900000      2.493227e-24                K_2(1820)0           0      0.00000000
+ K_2(1820)~0           689      -20315   0.0      1.81900000      2.493227e-24           anti-K_2(1820)0           0      0.00000000
+ K_2(1820)+            690       20325   1.0      1.81900000      2.493227e-24                K_2(1820)+           0      0.00000000
+ K_2(1820)-            691      -20325  -1.0      1.81900000      2.493227e-24                K_2(1820)-           0      0.00000000
+ K*_2(1980)0           818      100315   0.0      1.97300000      0.000000e+00               K*_2(1980)0           0      0.00000000
+ K*_2(1980)~0          819     -100315   0.0      1.97300000      0.000000e+00          anti-K*_2(1980)0           0      0.00000000
+ K*_2(1980)+           824      100325   1.0      1.97300000      0.000000e+00               K*_2(1980)+           0      0.00000000
+ K*_2(1980)-           825     -100325  -1.0      1.97300000      0.000000e+00               K*_2(1980)-           0      0.00000000
+ K*_4(2045)0           374         319   0.0      2.04500000      3.324304e-24                     K_4*0           0      0.00000000
+ K*_4(2045)~0          375        -319   0.0      2.04500000      3.324304e-24                anti-K_4*0           0      0.00000000
+ K*_4(2045)+           378         329   1.0      2.04500000      3.324304e-24                     K_4*+           0      0.00000000
+ K*_4(2045)-           379        -329  -1.0      2.04500000      3.324304e-24                     K_4*-           0      0.00000000
+ D0                     58         421   0.0      1.86483000      4.101000e-13                        D0         421      0.00000000
+ D~0                    59        -421   0.0      1.86483000      4.101000e-13                   anti-D0        -421      0.00000000
+ D+                     56         411   1.0      1.86965000      1.040000e-12                        D+         411      0.00000000
+ D-                     57        -411  -1.0      1.86965000      1.040000e-12                        D-        -411      0.00000000
+ D*(2007)0              67         423   0.0      2.00685000      1.000003e-19                       D*0         423      0.00000000
+ D*(2007)~0             68        -423   0.0      2.00685000      1.000003e-19                  anti-D*0        -423      0.00000000
+ D*(2010)+              65         413   1.0      2.01026000      7.892230e-21                       D*+         413      0.00000000
+ D*(2010)-              66        -413  -1.0      2.01026000      7.892230e-21                       D*-        -413      0.00000000
+ D*_0+                 155       10411   1.0      2.34900000      2.978335e-24                     D_0*+       10411      0.00000000
+ D*_0-                 159      -10411  -1.0      2.34900000      2.978335e-24                     D_0*-      -10411      0.00000000
+ D*_00                 163       10421   0.0      2.30000000      2.402234e-24                     D_0*0       10421      0.00000000
+ D*_0~0                167      -10421   0.0      2.30000000      2.402234e-24                anti-D_0*0      -10421      0.00000000
+ D_1(H)0               164       20423   0.0      2.44500000      2.630000e-24                     D'_10       20423      0.00000000
+ D_1(H)~0              168      -20423   0.0      2.44500000      2.630000e-24                anti-D'_10      -20423      0.00000000
+ D_1(H)+               156       20413   1.0      2.44500000      2.630000e-24                     D'_1+       20413      0.00000000
+ D_1(H)-               160      -20413  -1.0      2.44500000      2.630000e-24                     D'_1-      -20413      0.00000000
+ D_1(2420)0            165       10423   0.0      2.42080000      2.428827e-23                      D_10       10423      0.00000000
+ D_1(2420)~0           169      -10423   0.0      2.42080000      2.428827e-23                 anti-D_10      -10423      0.00000000
+ D_1(2420)+            157       10413   1.0      2.42300000      3.290000e-23                      D_1+       10413      0.00000000
+ D_1(2420)-            161      -10413  -1.0      2.42300000      3.290000e-23                      D_1-      -10413      0.00000000
+ D*_2(2460)0           170         425   0.0      2.46070000      1.385709e-23                     D_2*0         425      0.00000000
+ D*_2(2460)~0          166        -425   0.0      2.46070000      1.385709e-23                anti-D_2*0        -425      0.00000000
+ D*_2(2460)+           162         415   1.0      2.46540000      1.778952e-23                     D_2*+         415      0.00000000
+ D*_2(2460)-           158        -415  -1.0      2.46540000      1.778952e-23                     D_2*-        -415      0.00000000
+ D(2S)0                761      100421   0.0      2.58000000      0.000000e+00                    D(2S)0           0      0.00000000
+ D(2S)~0               762     -100421   0.0      2.58000000      0.000000e+00               anti-D(2S)0           0      0.00000000
+ D(2S)+                757      100411   1.0      2.58000000      0.000000e+00                    D(2S)+           0      0.00000000
+ D(2S)-                758     -100411  -1.0      2.58000000      0.000000e+00                    D(2S)-           0      0.00000000
+ D*(2640)0             763      100423   0.0      2.64000000      0.000000e+00                   D*(2S)0           0      0.00000000
+ D*(2640)~0            764     -100423   0.0      2.64000000      0.000000e+00              anti-D*(2S)0           0      0.00000000
+ D*(2640)+             759      100413   1.0      2.64000000      0.000000e+00                   D*(2S)+           0      0.00000000
+ D*(2640)-             760     -100413  -1.0      2.64000000      0.000000e+00                   D*(2S)-           0      0.00000000
+ D_s+                   60         431   1.0      1.96834000      5.043770e-13                      D_s+         431      0.00000000
+ D_s-                   61        -431  -1.0      1.96834000      5.043770e-13                      D_s-        -431      0.00000000
+ D*_s+                  69         433   1.0      2.11220000      1.000003e-19                     D_s*+         433      0.00000000
+ D*_s-                  70        -433  -1.0      2.11220000      1.000003e-19                     D_s*-        -433      0.00000000
+ D*_s0+                171       10431   1.0      2.31780000      6.582100e-22                    D_s0*+       10431      0.00000000
+ D*_s0-                175      -10431  -1.0      2.31780000      6.582100e-22                    D_s0*-      -10431      0.00000000
+ D_s1(2460)+           172       20433   1.0      2.45950000      6.582100e-22                     D_s1+       20433      0.00000000
+ D_s1(2460)-           176      -20433  -1.0      2.45950000      6.582100e-22                     D_s1-      -20433      0.00000000
+ D_s1(2536)+           173       10433   1.0      2.53511000      7.154480e-22                    D'_s1+       10433      0.00000000
+ D_s1(2536)-           177      -10433  -1.0      2.53511000      7.154480e-22                    D'_s1-      -10433      0.00000000
+ D*_s2+                174         435   1.0      2.56910000      3.894746e-23                    D_s2*+         435      0.00000000
+ D*_s2-                178        -435  -1.0      2.56910000      3.894746e-23                    D_s2*-        -435      0.00000000
+ B0                     73         511   0.0      5.27964000      1.520120e-12                        B0         511      0.00000000
+ B~0                    74        -511   0.0      5.27964000      1.520120e-12                   anti-B0        -511      0.00000000
+ B0H                 99998         510   0.0      5.27958000      1.519000e-12                       B0H           0      0.00000000
+ B0L                 99999         150   0.0      5.27958000      1.519000e-12                       B0L           0      0.00000000
+ B+                     71         521   1.0      5.27933000      1.638158e-12                        B+         521      0.00000000
+ B-                     72        -521  -1.0      5.27933000      1.638158e-12                        B-        -521      0.00000000
+ B*0                   189         513   0.0      5.32470000      1.000019e-19                       B*0         513      0.00000000
+ B*~0                  190        -513   0.0      5.32470000      1.000019e-19                  anti-B*0        -513      0.00000000
+ B*-                   187        -523  -1.0      5.32470000      1.000019e-19                       B*-        -523      0.00000000
+ B*+                   188         523   1.0      5.32470000      1.000019e-19                       B*+         523      0.00000000
+ B*_00                 201       10511   0.0      5.73800000      4.390000e-24                     B_0*0       10511      0.00000000
+ B*_0~0                205      -10511   0.0      5.73800000      4.390000e-24                anti-B_0*0      -10511      0.00000000
+ B*_0+                 193       10521   1.0      5.73800000      4.390000e-24                     B_0*+       10521      0.00000000
+ B*_0-                 197      -10521  -1.0      5.73800000      4.390000e-24                     B_0*-      -10521      0.00000000
+ B_1(H)0               202       20513   0.0      5.75700000      2.630000e-24                     B'_10       20513      0.00000000
+ B_1(H)~0              206      -20513   0.0      5.75700000      2.630000e-24                anti-B'_10      -20513      0.00000000
+ B_1(H)+               194       20523   1.0      5.75700000      2.630000e-24                     B'_1+       20523      0.00000000
+ B_1(H)-               198      -20523  -1.0      5.75700000      2.630000e-24                     B'_1-      -20523      0.00000000
+ B_1(L)0               203       10513   0.0      5.72610000      3.134000e-23                      B_10       10513      0.00000000
+ B_1(L)~0              207      -10513   0.0      5.72610000      3.134000e-23                 anti-B_10      -10513      0.00000000
+ B_1(L)+               195       10523   1.0      5.72590000      3.134000e-23                      B_1+       10523      0.00000000
+ B_1(L)-               199      -10523  -1.0      5.72590000      3.134000e-23                      B_1-      -10523      0.00000000
+ B*_20                 204         515   0.0      5.73950000      2.861792e-23                     B_2*0         515      0.00000000
+ B*_2~0                208        -515   0.0      5.73950000      2.861792e-23                anti-B_2*0        -515      0.00000000
+ B*_2+                 196         525   1.0      5.73720000      3.291060e-23                     B_2*+         525      0.00000000
+ B*_2-                 200        -525  -1.0      5.73720000      3.291060e-23                     B_2*-        -525      0.00000000
+ B_s0                   75         531   0.0      5.36688000      1.512000e-12                      B_s0         531      0.00000000
+ B_s~0                  76        -531   0.0      5.36688000      1.512000e-12                 anti-B_s0        -531      0.00000000
+ B_s0H               99996         530   0.0      5.36677000      1.661000e-12                     B_s0H           0      0.00000000
+ B_s0L               99997         350   0.0      5.36677000      1.405000e-12                     B_s0L           0      0.00000000
+ B*_s0                 191         533   0.0      5.41540000      1.000000e-19                     B_s*0         533      0.00000000
+ B*_s~0                192        -533   0.0      5.41540000      1.000000e-19                anti-B_s*0        -533      0.00000000
+ B*_s00                209       10531   0.0      5.84100000      4.390000e-24                    B_s0*0       10531      0.00000000
+ B*_s0~0               213      -10531   0.0      5.84100000      4.390000e-24               anti-B_s0*0      -10531      0.00000000
+ B_s1(H)0              210       20533   0.0      5.85900000      2.630000e-24                    B'_s10       20533      0.00000000
+ B_s1(H)~0             214      -20533   0.0      5.85900000      2.630000e-24               anti-B'_s10      -20533      0.00000000
+ B_s1(L)0              211       10533   0.0      5.82870000      1.316424e-21                     B_s10       10533      0.00000000
+ B_s1(L)~0             215      -10533   0.0      5.82870000      1.316424e-21                anti-B_s10      -10533      0.00000000
+ B*_s20                212         535   0.0      5.83985000      4.477633e-22                    B_s2*0         535      0.00000000
+ B*_s2~0               216        -535   0.0      5.83985000      4.477633e-22               anti-B_s2*0        -535      0.00000000
+ B_c+                   77         541   1.0      6.27447000      5.070971e-13                      B_c+         541      0.00000000
+ B_c-                   78        -541  -1.0      6.27447000      5.070971e-13                      B_c-        -541      0.00000000
+ B_c*+                 382         543   1.0      6.33330000      0.000000e+00                     B_c*+         543      0.00000000
+ B_c*-                 383        -543  -1.0      6.33330000      0.000000e+00                     B_c*-        -543      0.00000000
+ B_c0*+                607       10541   1.0      6.70600000      0.000000e+00                    B_c0*+       10541      0.00000000
+ B_c0*-                608      -10541  -1.0      6.70600000      0.000000e+00                    B_c0*-      -10541      0.00000000
+ B_c1(L)+              609       10543   1.0      6.74100000      0.000000e+00                     B_c1+       10543      0.00000000
+ B_c1(L)-              610      -10543  -1.0      6.74100000      0.000000e+00                     B_c1-      -10543      0.00000000
+ B_c1(H)+              693       20543   1.0      6.75000000      0.000000e+00                    B'_c1+       20543      0.00000000
+ B_c1(H)-              694      -20543  -1.0      6.75000000      0.000000e+00                    B'_c1-      -20543      0.00000000
+ B_c2*+                384         545   1.0      6.76800000      0.000000e+00                    B_c2*+         545      0.00000000
+ B_c2*-                385        -545  -1.0      6.76800000      0.000000e+00                    B_c2*-        -545      0.00000000
+ B_c(2S)+           100541      100541   1.0      6.87210000      0.000000e+00                  B_c(2S)+      100541      0.00000000
+ B_c(2S)-           100542     -100541  -1.0      6.87210000      0.000000e+00                  B_c(2S)-     -100541      0.00000000
+ B_c*(2S)+          100543      100543   1.0      6.90000000      0.000000e+00                 B_c*(2S)+      100543      0.00000000
+ B_c*(2S)-          100544     -100543  -1.0      6.90000000      0.000000e+00                 B_c*(2S)-     -100543      0.00000000
+ eta_c(1S)             128         441   0.0      2.98390000      2.216203e-23                     eta_c         441      0.00000000
+ J/psi(1S)              64         443   0.0      3.09690000      7.085169e-21                     J/psi         443      0.00000000
+ chi_c0(1P)            129       10441   0.0      3.41471000      6.328963e-23                    chi_c0       10441      0.00000000
+ chi_c1(1P)            130       20443   0.0      3.51067000      7.835857e-22                    chi_c1       20443      0.00000000
+ h_c(1P)               606       10443   0.0      3.52538000      9.403029e-22                       h_c       10443      0.00000000
+ chi_c2(1P)            131         445   0.0      3.55617000      3.410425e-22                    chi_c2         445      0.00000000
+ eta_c(2S)             829      100441   0.0      3.63750000      6.582122e-23                 eta_c(2S)      100441      0.00000000
+ psi(2S)               126      100443   0.0      3.68609700      2.238816e-21                   psi(2S)      100443      0.00000000
+ psi(3770)             765       30443   0.0      3.77313000      2.419898e-23                 psi(3770)       30443      0.00000000
+ chi_c2(2P)           1031      100445   0.0      3.92720000      2.742551e-23                chi_c2(2P)           0      0.00000000
+ psi(4040)             851     9000443   0.0      4.03900000      8.227652e-24                 psi(4040)           0      0.00000000
+ psi(4160)             853     9010443   0.0      4.19100000      9.403029e-24                 psi(4160)           0      0.00000000
+ psi(4415)             856     9020443   0.0      4.42100000      1.061633e-23                 psi(4415)           0      0.00000000
+ X_1(3872)            1016     9920443   0.0      3.87169000      2.076340e-21                 X_1(3872)     9920443      0.00000000
+ X_2(3872)            1017     9910445   0.0      3.87169000      2.076340e-21                 X_2(3872)     9910445      0.00000000
+ Z(4430)+             1018     9042413   1.0      4.47800000      3.630504e-24                  Z(4430)+     9042413      0.00000000
+ Z(4430)-             1019    -9042413  -1.0      4.47800000      3.630504e-24                  Z(4430)-    -9042413      0.00000000
+ eta_b(1S)             386         551   0.0      9.39870000      6.582120e-23                     eta_b         551      0.00000000
+ eta_b(2S)             830      100551   0.0      9.99700000      0.000000e+00                 eta_b(2S)           0      0.00000000
+ eta_b(3S)             843      200551   0.0     10.33500000      0.000000e+00                 eta_b(3S)           0      0.00000000
+ eta_b2(1D)            613       10555   0.0     10.15700000      0.000000e+00                eta_b2(1D)       10555      0.00000000
+ eta_b2(2D)            836      110555   0.0     10.44100000      0.000000e+00                eta_b2(2D)      110555      0.00000000
+ Upsilon(1S)           387         553   0.0      9.46030000      1.218911e-20                   Upsilon         553      0.00000000
+ Upsilon(2S)           831      100553   0.0     10.02326000      2.058199e-20               Upsilon(2S)      100553      0.00000000
+ Upsilon(3S)           844      200553   0.0     10.35520000      3.242425e-20               Upsilon(3S)      200553      0.00000000
+ Upsilon_1(1D)         766       30553   0.0     10.16370000      0.000000e+00             Upsilon_1(1D)       30553      0.00000000
+ Upsilon_1(2D)         839      130553   0.0     10.43490000      0.000000e+00             Upsilon_1(2D)      130553      0.00000000
+ Upsilon_2(1D)         696       20555   0.0     10.15620000      0.000000e+00             Upsilon_2(1D)       20555      0.00000000
+ Upsilon_2(2D)         838      120555   0.0     10.44060000      0.000000e+00             Upsilon_2(2D)      120555      0.00000000
+ Upsilon_3(1D)         389         557   0.0     10.15990000      0.000000e+00             Upsilon_3(1D)         557      0.00000000
+ Upsilon_3(2D)         833      100557   0.0     10.44430000      0.000000e+00             Upsilon_3(2D)      100557      0.00000000
+ Upsilon(4S)           849      300553   0.0     10.57940000      3.210791e-23               Upsilon(4S)      300553      0.00000000
+ Upsilon(10860)        852     9000553   0.0     10.88990000      1.290612e-23               Upsilon(5S)           0      0.00000000
+ Upsilon(11020)        854     9010553   0.0     10.99290000      1.343290e-23            Upsilon(11020)           0      0.00000000
+ chi_b0(1P)            611       10551   0.0      9.85940000      0.000000e+00                    chi_b0       10551      0.00000000
+ chi_b0(2P)            834      110551   0.0     10.23250000      0.000000e+00                chi_b0(2P)      110551      0.00000000
+ chi_b0(3P)            846      210551   0.0     10.50040000      0.000000e+00                chi_b0(3P)      210551      0.00000000
+ chi_b1(3P)            848      220553   0.0     10.51210000      0.000000e+00                chi_b1(3P)      220553      0.00000000
+ chi_b1(1P)            695       20553   0.0      9.89287800      0.000000e+00                    chi_b1       20553      0.00000000
+ chi_b1(2P)            837      120553   0.0     10.25546000      0.000000e+00                chi_b1(2P)      120553      0.00000000
+ chi_b2(1P)            388         555   0.0      9.91221000      0.000000e+00                    chi_b2         555      0.00000000
+ chi_b2(2P)            832      100555   0.0     10.26865000      0.000000e+00                chi_b2(2P)      100555      0.00000000
+ chi_b2(3P)            845      200555   0.0     10.52620000      0.000000e+00                chi_b2(3P)      200555      0.00000000
+ h_b(1P)               612       10553   0.0      9.89930000      0.000000e+00                       h_b       10553      0.00000000
+ h_b(2P)               835      110553   0.0     10.25500000      0.000000e+00                   h_b(2P)      110553      0.00000000
+ h_b(3P)               847      210553   0.0     10.51600000      0.000000e+00                   h_b(3P)      210553      0.00000000
+ n0                     13        2112   0.0      0.93956541      8.803000e+02                        n0        2112      0.00000000
+ n~0                    25       -2112   0.0      0.93956541      8.803000e+02                   anti-n0       -2112      0.00000000
+ p+                     14        2212   1.0      0.93827208      1.000000e+16                        p+        2212      0.00000000
+ p~-                    15       -2212  -1.0      0.93827208      1.000000e+16                   anti-p-       -2212      0.00000000
+ N(1440)0              624       12112   0.0      1.44000000      2.194041e-24                  N(1440)0           0      0.00000000
+ N(1440)~0             625      -12112   0.0      1.44000000      2.194041e-24             anti-N(1440)0           0      0.00000000
+ N(1440)+              636       12212   1.0      1.44000000      2.194041e-24                  N(1440)+           0      0.00000000
+ N(1440)~-             637      -12212  -1.0      1.44000000      2.194041e-24             anti-N(1440)-           0      0.00000000
+ N(1520)0              404        1214   0.0      1.51500000      5.983745e-24                  N(1520)0           0      0.00000000
+ N(1520)~0             405       -1214   0.0      1.51500000      5.983745e-24             anti-N(1520)0           0      0.00000000
+ N(1520)+              420        2124   1.0      1.51500000      5.983745e-24                  N(1520)+           0      0.00000000
+ N(1520)~-             421       -2124  -1.0      1.51500000      5.983745e-24             anti-N(1520)-           0      0.00000000
+ N(1535)0              705       22112   0.0      1.53000000      4.388081e-24                  N(1535)0           0      0.00000000
+ N(1535)~0             706      -22112   0.0      1.53000000      4.388081e-24             anti-N(1535)0           0      0.00000000
+ N(1535)+              713       22212   1.0      1.53000000      4.388081e-24                  N(1535)+           0      0.00000000
+ N(1535)~-             714      -22212  -1.0      1.53000000      4.388081e-24             anti-N(1535)-           0      0.00000000
+ N(1650)0              771       32112   0.0      1.65000000      5.265696e-24                  N(1650)0           0      0.00000000
+ N(1650)~0             772      -32112   0.0      1.65000000      5.265696e-24             anti-N(1650)0           0      0.00000000
+ N(1650)+              777       32212   1.0      1.65000000      5.265696e-24                  N(1650)+           0      0.00000000
+ N(1650)~-             778      -32212  -1.0      1.65000000      5.265696e-24             anti-N(1650)-           0      0.00000000
+ N(1675)0              414        2116   0.0      1.67500000      4.539393e-24                  N(1675)0           0      0.00000000
+ N(1675)~0             415       -2116   0.0      1.67500000      4.539393e-24             anti-N(1675)0           0      0.00000000
+ N(1675)+              428        2216   1.0      1.67500000      4.539393e-24                  N(1675)+           0      0.00000000
+ N(1675)~-             429       -2216  -1.0      1.67500000      4.539393e-24             anti-N(1675)-           0      0.00000000
+ N(1680)0              628       12116   0.0      1.68500000      5.485100e-24                  N(1680)0           0      0.00000000
+ N(1680)~0             629      -12116   0.0      1.68500000      5.485100e-24             anti-N(1680)0           0      0.00000000
+ N(1680)+              640       12216   1.0      1.68500000      5.485100e-24                  N(1680)+           0      0.00000000
+ N(1680)~-             641      -12216  -1.0      1.68500000      5.485100e-24             anti-N(1680)-           0      0.00000000
+ N(1700)+              711       22124   1.0      1.72000000      4.388081e-24                  N(1700)+           0      0.00000000
+ N(1700)~-             712      -22124  -1.0      1.72000000      4.388081e-24             anti-N(1700)-           0      0.00000000
+ N(1700)0              703       21214   0.0      1.72000000      4.388081e-24                  N(1700)0           0      0.00000000
+ N(1700)~0             704      -21214   0.0      1.72000000      4.388081e-24             anti-N(1700)0           0      0.00000000
+ N(1710)0              791       42112   0.0      1.71000000      6.582122e-24                  N(1710)0           0      0.00000000
+ N(1710)~0             792      -42112   0.0      1.71000000      6.582122e-24             anti-N(1710)0           0      0.00000000
+ N(1710)+              795       42212   1.0      1.71000000      6.582122e-24                  N(1710)+           0      0.00000000
+ N(1710)~-             796      -42212  -1.0      1.71000000      6.582122e-24             anti-N(1710)-           0      0.00000000
+ N(1720)0              769       31214   0.0      1.72000000      2.632849e-24                  N(1720)0           0      0.00000000
+ N(1720)~0             770      -31214   0.0      1.72000000      2.632849e-24             anti-N(1720)0           0      0.00000000
+ N(1720)+              775       32124   1.0      1.72000000      2.632849e-24                  N(1720)+           0      0.00000000
+ N(1720)~-             776      -32124  -1.0      1.72000000      2.632849e-24             anti-N(1720)-           0      0.00000000
+ N(1900)0              789       41214   0.0      1.89500000      5.476011e-24                  N(1900)0           0      0.00000000
+ N(1900)~0             790      -41214   0.0      1.89500000      5.476011e-24             anti-N(1900)0           0      0.00000000
+ N(1900)+              793       42124   1.0      1.89500000      5.476011e-24                  N(1900)+           0      0.00000000
+ N(1900)~-             794      -42124  -1.0      1.89500000      5.476011e-24             anti-N(1900)-           0      0.00000000
+ N(1990)0              630       12118   0.0      1.95000000      0.000000e+00                  N(1990)0           0      0.00000000
+ N(1990)~0             631      -12118   0.0      1.95000000      0.000000e+00             anti-N(1990)0           0      0.00000000
+ N(1990)+              642       12218   1.0      1.95000000      0.000000e+00                  N(1990)+           0      0.00000000
+ N(1990)~-             643      -12218  -1.0      1.95000000      0.000000e+00             anti-N(1990)-           0      0.00000000
+ N(2090)0              799       52114   0.0      2.00000000      0.000000e+00                  N(2090)0           0      0.00000000
+ N(2090)~0             800      -52114   0.0      2.00000000      0.000000e+00             anti-N(2090)0           0      0.00000000
+ N(2090)+              801       52214   1.0      2.00000000      0.000000e+00                  N(2090)+           0      0.00000000
+ N(2090)~-             802      -52214  -1.0      2.00000000      0.000000e+00             anti-N(2090)-           0      0.00000000
+ N(2190)0              408        1218   0.0      2.18000000      1.645530e-24                  N(2190)0           0      0.00000000
+ N(2190)~0             409       -1218   0.0      2.18000000      1.645530e-24             anti-N(2190)0           0      0.00000000
+ N(2190)+              424        2128   1.0      2.18000000      1.645530e-24                  N(2190)+           0      0.00000000
+ N(2190)~-             425       -2128  -1.0      2.18000000      1.645530e-24             anti-N(2190)-           0      0.00000000
+ Delta-                182        1114  -1.0      1.23200000      5.625745e-24                    Delta-        1114      0.00000000
+ Delta~+               186       -1114   1.0      1.23200000      5.625745e-24               anti-Delta+       -1114      0.00000000
+ Delta0                181        2114   0.0      1.23200000      5.625745e-24                    Delta0        2114      0.00000000
+ Delta~0               185       -2114   0.0      1.23200000      5.625745e-24               anti-Delta0       -2114      0.00000000
+ Delta+                180        2214   1.0      1.23200000      5.625745e-24                    Delta+        2214      0.00000000
+ Delta~-               184       -2214  -1.0      1.23200000      5.625745e-24               anti-Delta-       -2214      0.00000000
+ Delta++               179        2224   2.0      1.23200000      5.625745e-24                   Delta++        2224      0.00000000
+ Delta~--              183       -2224  -2.0      1.23200000      5.625745e-24              anti-Delta--       -2224      0.00000000
+ Delta(1600)-          767       31114  -1.0      1.57000000      2.632848e-24              Delta(1600)-           0      0.00000000
+ Delta(1600)~+         768      -31114   1.0      1.57000000      2.632848e-24         anti-Delta(1600)+           0      0.00000000
+ Delta(1600)0          773       32114   0.0      1.57000000      2.632848e-24              Delta(1600)0           0      0.00000000
+ Delta(1600)~0         774      -32114   0.0      1.57000000      2.632848e-24         anti-Delta(1600)0           0      0.00000000
+ Delta(1600)+          779       32214   1.0      1.57000000      2.632848e-24              Delta(1600)+           0      0.00000000
+ Delta(1600)~-         780      -32214  -1.0      1.57000000      2.632848e-24         anti-Delta(1600)-           0      0.00000000
+ Delta(1600)++         781       32224   2.0      1.57000000      2.632848e-24             Delta(1600)++           0      0.00000000
+ Delta(1600)~--        782      -32224  -2.0      1.57000000      2.632848e-24        anti-Delta(1600)--           0      0.00000000
+ Delta(1620)-          396        1112  -1.0      1.61000000      5.063169e-24              Delta(1620)-           0      0.00000000
+ Delta(1620)~+         397       -1112   1.0      1.61000000      5.063169e-24         anti-Delta(1620)+           0      0.00000000
+ Delta(1620)0          402        1212   0.0      1.61000000      5.063169e-24              Delta(1620)0           0      0.00000000
+ Delta(1620)~0         403       -1212   0.0      1.61000000      5.063169e-24         anti-Delta(1620)0           0      0.00000000
+ Delta(1620)+          418        2122   1.0      1.61000000      5.063169e-24              Delta(1620)+           0      0.00000000
+ Delta(1620)~-         419       -2122  -1.0      1.61000000      5.063169e-24         anti-Delta(1620)-           0      0.00000000
+ Delta(1620)++         432        2222   2.0      1.61000000      5.063169e-24             Delta(1620)++           0      0.00000000
+ Delta(1620)~--        433       -2222  -2.0      1.61000000      5.063169e-24        anti-Delta(1620)--           0      0.00000000
+ Delta(1700)-          616       11114  -1.0      1.71000000      2.194041e-24              Delta(1700)-           0      0.00000000
+ Delta(1700)~+         617      -11114   1.0      1.71000000      2.194041e-24         anti-Delta(1700)+           0      0.00000000
+ Delta(1700)0          626       12114   0.0      1.71000000      2.194041e-24              Delta(1700)0           0      0.00000000
+ Delta(1700)~0         627      -12114   0.0      1.71000000      2.194041e-24         anti-Delta(1700)0           0      0.00000000
+ Delta(1700)+          638       12214   1.0      1.71000000      2.194041e-24              Delta(1700)+           0      0.00000000
+ Delta(1700)~-         639      -12214  -1.0      1.71000000      2.194041e-24         anti-Delta(1700)-           0      0.00000000
+ Delta(1700)++         646       12224   2.0      1.71000000      2.194041e-24             Delta(1700)++           0      0.00000000
+ Delta(1700)~--        647      -12224  -2.0      1.71000000      2.194041e-24        anti-Delta(1700)--           0      0.00000000
+ Delta(1900)-          614       11112  -1.0      1.86000000      2.632848e-24              Delta(1900)-           0      0.00000000
+ Delta(1900)~+         615      -11112   1.0      1.86000000      2.632848e-24         anti-Delta(1900)+           0      0.00000000
+ Delta(1900)0          620       11212   0.0      1.86000000      2.632848e-24              Delta(1900)0           0      0.00000000
+ Delta(1900)~0         621      -11212   0.0      1.86000000      2.632848e-24         anti-Delta(1900)0           0      0.00000000
+ Delta(1900)+          632       12122   1.0      1.86000000      2.632848e-24              Delta(1900)+           0      0.00000000
+ Delta(1900)~-         633      -12122  -1.0      1.86000000      2.632848e-24         anti-Delta(1900)-           0      0.00000000
+ Delta(1900)++         644       12222   2.0      1.86000000      2.632848e-24             Delta(1900)++           0      0.00000000
+ Delta(1900)~--        645      -12222  -2.0      1.86000000      2.632848e-24        anti-Delta(1900)--           0      0.00000000
+ Delta(1905)-          398        1116  -1.0      1.88000000      1.994582e-24              Delta(1905)-           0      0.00000000
+ Delta(1905)~+         399       -1116   1.0      1.88000000      1.994582e-24         anti-Delta(1905)+           0      0.00000000
+ Delta(1905)0          406        1216   0.0      1.88000000      1.994582e-24              Delta(1905)0           0      0.00000000
+ Delta(1905)~0         407       -1216   0.0      1.88000000      1.994582e-24         anti-Delta(1905)0           0      0.00000000
+ Delta(1905)+          422        2126   1.0      1.88000000      1.994582e-24              Delta(1905)+           0      0.00000000
+ Delta(1905)~-         423       -2126  -1.0      1.88000000      1.994582e-24         anti-Delta(1905)-           0      0.00000000
+ Delta(1905)++         434        2226   2.0      1.88000000      1.994582e-24             Delta(1905)++           0      0.00000000
+ Delta(1905)~--        435       -2226  -2.0      1.88000000      1.994582e-24        anti-Delta(1905)--           0      0.00000000
+ Delta(1910)-          697       21112  -1.0      1.90000000      2.350758e-24              Delta(1910)-           0      0.00000000
+ Delta(1910)~+         698      -21112   1.0      1.90000000      2.350758e-24         anti-Delta(1910)+           0      0.00000000
+ Delta(1910)0          701       21212   0.0      1.90000000      2.350758e-24              Delta(1910)0           0      0.00000000
+ Delta(1910)~0         702      -21212   0.0      1.90000000      2.350758e-24         anti-Delta(1910)0           0      0.00000000
+ Delta(1910)+          709       22122   1.0      1.90000000      2.350758e-24              Delta(1910)+           0      0.00000000
+ Delta(1910)~-         710      -22122  -1.0      1.90000000      2.350758e-24         anti-Delta(1910)-           0      0.00000000
+ Delta(1910)++         717       22222   2.0      1.90000000      2.350758e-24             Delta(1910)++           0      0.00000000
+ Delta(1910)~--        718      -22222  -2.0      1.90000000      2.350758e-24        anti-Delta(1910)--           0      0.00000000
+ Delta(1920)-          699       21114  -1.0      1.92000000      2.531585e-24              Delta(1920)-           0      0.00000000
+ Delta(1920)~+         700      -21114   1.0      1.92000000      2.531585e-24         anti-Delta(1920)+           0      0.00000000
+ Delta(1920)0          707       22114   0.0      1.92000000      2.531585e-24              Delta(1920)0           0      0.00000000
+ Delta(1920)~0         708      -22114   0.0      1.92000000      2.531585e-24         anti-Delta(1920)0           0      0.00000000
+ Delta(1920)+          715       22214   1.0      1.92000000      2.531585e-24              Delta(1920)+           0      0.00000000
+ Delta(1920)~-         716      -22214  -1.0      1.92000000      2.531585e-24         anti-Delta(1920)-           0      0.00000000
+ Delta(1920)++         719       22224   2.0      1.92000000      2.531585e-24             Delta(1920)++           0      0.00000000
+ Delta(1920)~--        720      -22224  -2.0      1.92000000      2.531585e-24        anti-Delta(1920)--           0      0.00000000
+ Delta(1930)-          618       11116  -1.0      1.95000000      2.194040e-24              Delta(1930)-           0      0.00000000
+ Delta(1930)~+         619      -11116   1.0      1.95000000      2.194040e-24         anti-Delta(1930)+           0      0.00000000
+ Delta(1930)0          622       11216   0.0      1.95000000      2.194040e-24              Delta(1930)0           0      0.00000000
+ Delta(1930)~0         623      -11216   0.0      1.95000000      2.194040e-24         anti-Delta(1930)0           0      0.00000000
+ Delta(1930)+          634       12126   1.0      1.95000000      2.194040e-24              Delta(1930)+           0      0.00000000
+ Delta(1930)~-         635      -12126  -1.0      1.95000000      2.194040e-24         anti-Delta(1930)-           0      0.00000000
+ Delta(1930)++         648       12226   2.0      1.95000000      2.194040e-24             Delta(1930)++           0      0.00000000
+ Delta(1930)~--        649      -12226  -2.0      1.95000000      2.194040e-24        anti-Delta(1930)--           0      0.00000000
+ Delta(1950)-          400        1118  -1.0      1.93000000      2.350758e-24              Delta(1950)-           0      0.00000000
+ Delta(1950)~+         401       -1118   1.0      1.93000000      2.350758e-24         anti-Delta(1950)+           0      0.00000000
+ Delta(1950)0          416        2118   0.0      1.93000000      2.350758e-24              Delta(1950)0           0      0.00000000
+ Delta(1950)~0         417       -2118   0.0      1.93000000      2.350758e-24         anti-Delta(1950)0           0      0.00000000
+ Delta(1950)+          430        2218   1.0      1.93000000      2.350758e-24              Delta(1950)+           0      0.00000000
+ Delta(1950)~-         431       -2218  -1.0      1.93000000      2.350758e-24         anti-Delta(1950)-           0      0.00000000
+ Delta(1950)++         436        2228   2.0      1.93000000      2.350758e-24             Delta(1950)++           0      0.00000000
+ Delta(1950)~--        437       -2228  -2.0      1.93000000      2.350758e-24        anti-Delta(1950)--           0      0.00000000
+ Lambda0                18        3122   0.0      1.11568300      2.632000e-10                   Lambda0        3122      0.00000000
+ Lambda~0               26       -3122   0.0      1.11568300      2.632000e-10              anti-Lambda0       -3122      0.00000000
+ Lambda(1405)0         656       13122   0.0      1.40510000      1.316424e-23             Lambda(1405)0           0      0.00000000
+ Lambda(1405)~0        657      -13122   0.0      1.40510000      1.316424e-23        anti-Lambda(1405)0           0      0.00000000
+ Lambda(1520)0         448        3124   0.0      1.51950000      4.219309e-23             Lambda(1520)0           0      0.00000000
+ Lambda(1520)~0        449       -3124   0.0      1.51950000      4.219309e-23        anti-Lambda(1520)0           0      0.00000000
+ Lambda(1600)0         725       23122   0.0      1.60000000      4.388081e-24             Lambda(1600)0           0      0.00000000
+ Lambda(1600)~0        726      -23122   0.0      1.60000000      4.388081e-24        anti-Lambda(1600)0           0      0.00000000
+ Lambda(1670)0         783       33122   0.0      1.67000000      1.880606e-23             Lambda(1670)0           0      0.00000000
+ Lambda(1670)~0        784      -33122   0.0      1.67000000      1.880606e-23        anti-Lambda(1670)0           0      0.00000000
+ Lambda(1690)0         658       13124   0.0      1.69000000      1.097020e-23             Lambda(1690)0           0      0.00000000
+ Lambda(1690)~0        659      -13124   0.0      1.69000000      1.097020e-23        anti-Lambda(1690)0           0      0.00000000
+ Lambda(1800)0         797       43122   0.0      1.80000000      2.194041e-24             Lambda(1800)0           0      0.00000000
+ Lambda(1800)~0        798      -43122   0.0      1.80000000      2.194041e-24        anti-Lambda(1800)0           0      0.00000000
+ Lambda(1810)0         803       53122   0.0      1.81000000      4.388081e-24             Lambda(1810)0           0      0.00000000
+ Lambda(1810)~0        804      -53122   0.0      1.81000000      4.388081e-24        anti-Lambda(1810)0           0      0.00000000
+ Lambda(1820)0         450        3126   0.0      1.82000000      8.227652e-24             Lambda(1820)0           0      0.00000000
+ Lambda(1820)~0        451       -3126   0.0      1.82000000      8.227652e-24        anti-Lambda(1820)0           0      0.00000000
+ Lambda(1830)0         660       13126   0.0      1.83000000      6.928549e-24             Lambda(1830)0           0      0.00000000
+ Lambda(1830)~0        661      -13126   0.0      1.83000000      6.928549e-24        anti-Lambda(1830)0           0      0.00000000
+ Lambda(1890)0         727       23124   0.0      1.89000000      6.582122e-24             Lambda(1890)0           0      0.00000000
+ Lambda(1890)~0        728      -23124   0.0      1.89000000      6.582122e-24        anti-Lambda(1890)0           0      0.00000000
+ Lambda(2100)0         452        3128   0.0      2.10000000      3.291061e-24             Lambda(2100)0           0      0.00000000
+ Lambda(2100)~0        453       -3128   0.0      2.10000000      3.291061e-24        anti-Lambda(2100)0           0      0.00000000
+ Lambda(2110)0         729       23126   0.0      2.11000000      3.291061e-24             Lambda(2110)0           0      0.00000000
+ Lambda(2110)~0        730      -23126   0.0      2.11000000      3.291061e-24        anti-Lambda(2110)0           0      0.00000000
+ Sigma-                 21        3112  -1.0      1.19744900      1.479128e-10                    Sigma-        3112      0.00000000
+ Sigma~+                29       -3112   1.0      1.19744900      1.479128e-10               anti-Sigma+       -3112      0.00000000
+ Sigma0                 20        3212   0.0      1.19264200      7.400000e-20                    Sigma0        3212      0.00000000
+ Sigma~0                28       -3212   0.0      1.19264200      7.400000e-20               anti-Sigma0       -3212      0.00000000
+ Sigma+                 19        3222   1.0      1.18937000      8.018175e-11                    Sigma+        3222      0.00000000
+ Sigma~-                27       -3222  -1.0      1.18937000      8.018175e-11               anti-Sigma-       -3222      0.00000000
+ Sigma*-               442        3114  -1.0      1.38720000      1.670589e-23                   Sigma*-        3114      0.00000000
+ Sigma*~+              443       -3114   1.0      1.38720000      1.670589e-23              anti-Sigma*+       -3114      0.00000000
+ Sigma*0               458        3214   0.0      1.38370000      1.828367e-23                   Sigma*0        3214      0.00000000
+ Sigma*~0              459       -3214   0.0      1.38370000      1.828367e-23              anti-Sigma*0       -3214      0.00000000
+ Sigma*+               464        3224   1.0      1.38280000      1.828367e-23                   Sigma*+        3224      0.00000000
+ Sigma*~-              465       -3224  -1.0      1.38280000      1.828367e-23              anti-Sigma*-       -3224      0.00000000
+ Sigma(1660)-          650       13112  -1.0      1.66000000      6.582122e-24              Sigma(1660)-           0      0.00000000
+ Sigma(1660)~+         651      -13112   1.0      1.66000000      6.582122e-24         anti-Sigma(1660)+           0      0.00000000
+ Sigma(1660)0          662       13212   0.0      1.66000000      6.582122e-24              Sigma(1660)0           0      0.00000000
+ Sigma(1660)~0         663      -13212   0.0      1.66000000      6.582122e-24         anti-Sigma(1660)0           0      0.00000000
+ Sigma(1660)+          668       13222   1.0      1.66000000      6.582122e-24              Sigma(1660)+           0      0.00000000
+ Sigma(1660)~-         669      -13222  -1.0      1.66000000      6.582122e-24         anti-Sigma(1660)-           0      0.00000000
+ Sigma(1670)-          652       13114  -1.0      1.67000000      1.097020e-23              Sigma(1670)-           0      0.00000000
+ Sigma(1670)~+         653      -13114   1.0      1.67000000      1.097020e-23         anti-Sigma(1670)+           0      0.00000000
+ Sigma(1670)0          664       13214   0.0      1.67000000      1.097020e-23              Sigma(1670)0           0      0.00000000
+ Sigma(1670)~0         665      -13214   0.0      1.67000000      1.097020e-23         anti-Sigma(1670)0           0      0.00000000
+ Sigma(1670)+          670       13224   1.0      1.67000000      1.097020e-23              Sigma(1670)+           0      0.00000000
+ Sigma(1670)~-         671      -13224  -1.0      1.67000000      1.097020e-23         anti-Sigma(1670)-           0      0.00000000
+ Sigma(1750)-          721       23112  -1.0      1.75000000      7.313469e-24              Sigma(1750)-           0      0.00000000
+ Sigma(1750)~+         722      -23112   1.0      1.75000000      7.313469e-24         anti-Sigma(1750)+           0      0.00000000
+ Sigma(1750)0          731       23212   0.0      1.75000000      7.313469e-24              Sigma(1750)0           0      0.00000000
+ Sigma(1750)~0         732      -23212   0.0      1.75000000      7.313469e-24         anti-Sigma(1750)0           0      0.00000000
+ Sigma(1750)+          735       23222   1.0      1.75000000      7.313469e-24              Sigma(1750)+           0      0.00000000
+ Sigma(1750)~-         736      -23222  -1.0      1.75000000      7.313469e-24         anti-Sigma(1750)-           0      0.00000000
+ Sigma(1775)-          444        3116  -1.0      1.77500000      5.485102e-24              Sigma(1775)-           0      0.00000000
+ Sigma(1775)~+         445       -3116   1.0      1.77500000      5.485102e-24         anti-Sigma(1775)+           0      0.00000000
+ Sigma(1775)0          460        3216   0.0      1.77500000      5.485102e-24              Sigma(1775)0           0      0.00000000
+ Sigma(1775)~0         461       -3216   0.0      1.77500000      5.485102e-24         anti-Sigma(1775)0           0      0.00000000
+ Sigma(1775)+          466        3226   1.0      1.77500000      5.485102e-24              Sigma(1775)+           0      0.00000000
+ Sigma(1775)~-         467       -3226  -1.0      1.77500000      5.485102e-24         anti-Sigma(1775)-           0      0.00000000
+ Sigma(1915)-          654       13116  -1.0      1.91500000      5.485102e-24              Sigma(1915)-           0      0.00000000
+ Sigma(1915)~+         655      -13116   1.0      1.91500000      5.485102e-24         anti-Sigma(1915)+           0      0.00000000
+ Sigma(1915)0          666       13216   0.0      1.91500000      5.485102e-24              Sigma(1915)0           0      0.00000000
+ Sigma(1915)~0         667      -13216   0.0      1.91500000      5.485102e-24         anti-Sigma(1915)0           0      0.00000000
+ Sigma(1915)+          672       13226   1.0      1.91500000      5.485102e-24              Sigma(1915)+           0      0.00000000
+ Sigma(1915)~-         673      -13226  -1.0      1.91500000      5.485102e-24         anti-Sigma(1915)-           0      0.00000000
+ Sigma(1940)-          723       23114  -1.0      1.94000000      2.991874e-24              Sigma(1940)-           0      0.00000000
+ Sigma(1940)~+         724      -23114   1.0      1.94000000      2.991874e-24         anti-Sigma(1940)+           0      0.00000000
+ Sigma(1940)0          733       23214   0.0      1.94000000      2.991874e-24              Sigma(1940)0           0      0.00000000
+ Sigma(1940)~0         734      -23214   0.0      1.94000000      2.991874e-24         anti-Sigma(1940)0           0      0.00000000
+ Sigma(1940)+          737       23224   1.0      1.94000000      2.991874e-24              Sigma(1940)+           0      0.00000000
+ Sigma(1940)~-         738      -23224  -1.0      1.94000000      2.991874e-24         anti-Sigma(1940)-           0      0.00000000
+ Sigma(2030)0          462        3218   0.0      2.03000000      3.656734e-24              Sigma(2030)0           0      0.00000000
+ Sigma(2030)~0         463       -3218   0.0      2.03000000      3.656734e-24         anti-Sigma(2030)0           0      0.00000000
+ Sigma(2030)+          468        3228   1.0      2.03000000      3.656734e-24              Sigma(2030)+           0      0.00000000
+ Sigma(2030)~-         469       -3228  -1.0      2.03000000      3.656734e-24         anti-Sigma(2030)-           0      0.00000000
+ Sigma(2030)-          446        3118  -1.0      2.03000000      3.656734e-24              Sigma(2030)-           0      0.00000000
+ Sigma(2030)~+         447       -3118   1.0      2.03000000      3.656734e-24         anti-Sigma(2030)+           0      0.00000000
+ Sigma(2250)0         1059      103212   0.0      2.25000000      6.580000e-24              Sigma(2250)0           0      0.00000000
+ Sigma(2250)~0        1060     -103212   0.0      2.25000000      6.580000e-24         anti-Sigma(2250)0           0      0.00000000
+ Sigma(2250)+         1061      103222   1.0      2.25000000      6.580000e-24              Sigma(2250)+           0      0.00000000
+ Sigma(2250)~-        1062     -103222  -1.0      2.25000000      6.580000e-24         anti-Sigma(2250)-           0      0.00000000
+ Sigma(2250)-         1063      103112  -1.0      2.25000000      6.580000e-24              Sigma(2250)-           0      0.00000000
+ Sigma(2250)~+        1064     -103112   1.0      2.25000000      6.580000e-24         anti-Sigma(2250)+           0      0.00000000
+ Xi-                    23        3312  -1.0      1.32171000      1.639000e-10                       Xi-        3312      0.00000000
+ Xi~+                   31       -3312   1.0      1.32171000      1.639000e-10                  anti-Xi+       -3312      0.00000000
+ Xi0                    22        3322   0.0      1.31486000      2.900000e-10                       Xi0        3322      0.00000000
+ Xi~0                   30       -3322   0.0      1.31486000      2.900000e-10                  anti-Xi0       -3322      0.00000000
+ Xi*-                  472        3314  -1.0      1.53500000      6.648608e-23                      Xi*-        3314      0.00000000
+ Xi*~+                 473       -3314   1.0      1.53500000      6.648608e-23                 anti-Xi*+       -3314      0.00000000
+ Xi*0                  474        3324   0.0      1.53180000      7.233101e-23                      Xi*0        3324      0.00000000
+ Xi*~0                 475       -3324   0.0      1.53180000      7.233101e-23                 anti-Xi*0       -3324      0.00000000
+ Xi(1690)-            1033      203312  -1.0      1.69000000      0.000000e+00                 Xi(1690)-           0      0.00000000
+ Xi(1690)~+           1034     -203312   1.0      1.69000000      0.000000e+00            anti-Xi(1690)+           0      0.00000000
+ Xi(1690)0            1035      203322   0.0      1.69000000      0.000000e+00                 Xi(1690)0           0      0.00000000
+ Xi(1690)~0           1036     -203322   0.0      1.69000000      0.000000e+00            anti-Xi(1690)0           0      0.00000000
+ Xi(1820)-             674       13314  -1.0      1.82300000      2.742551e-23                 Xi(1820)-           0      0.00000000
+ Xi(1820)~+            675      -13314   1.0      1.82300000      2.742551e-23            anti-Xi(1820)+           0      0.00000000
+ Xi(1820)0             678       13324   0.0      1.82300000      2.742551e-23                 Xi(1820)0           0      0.00000000
+ Xi(1820)~0            679      -13324   0.0      1.82300000      2.742551e-23            anti-Xi(1820)0           0      0.00000000
+ Xi(1950)-            1037      103316  -1.0      1.95000000      1.097020e-23                 Xi(1950)-           0      0.00000000
+ Xi(1950)~+           1038     -103316   1.0      1.95000000      1.097020e-23            anti-Xi(1950)+           0      0.00000000
+ Xi(1950)0            1039      103326   0.0      1.95000000      1.097020e-23                 Xi(1950)0           0      0.00000000
+ Xi(1950)~0           1040     -103326   0.0      1.95000000      1.097020e-23            anti-Xi(1950)0           0      0.00000000
+ Xi(2030)-            1041      203316  -1.0      2.02500000      3.291061e-23                 Xi(2030)-           0      0.00000000
+ Xi(2030)~+           1042     -203316   1.0      2.02500000      3.291061e-23            anti-Xi(2030)+           0      0.00000000
+ Xi(2030)0            1043      203326   0.0      2.02500000      3.291061e-23                 Xi(2030)0           0      0.00000000
+ Xi(2030)~0           1044     -203326   0.0      2.02500000      3.291061e-23            anti-Xi(2030)0           0      0.00000000
+ Omega-                 24        3334  -1.0      1.67245000      8.210000e-11                    Omega-        3334      0.00000000
+ Omega~+                32       -3334   1.0      1.67245000      8.210000e-11               anti-Omega+       -3334      0.00000000
+ Omega(2250)-         1045      203338  -1.0      2.25200000      1.196749e-23              Omega(2250)-           0      0.00000000
+ Omega(2250)~+        1046     -203338   1.0      2.25200000      1.196749e-23         anti-Omega(2250)+           0      0.00000000
+ Lambda_c+              62        4122   1.0      2.28646000      2.000000e-13                 Lambda_c+        4122      0.00000000
+ Lambda_c~-             63       -4122  -1.0      2.28646000      2.000000e-13            anti-Lambda_c-       -4122      0.00000000
+ Lambda_c(2595)+       682       14122   1.0      2.59225000      2.531585e-22           Lambda_c(2593)+           0      0.00000000
+ Lambda_c(2595)~-      683      -14122  -1.0      2.59225000      2.531585e-22      anti-Lambda_c(2593)-           0      0.00000000
+ Lambda_c(2625)+      1047      104124   1.0      2.62811000      0.000000e+00           Lambda_c(2625)+           0      0.00000000
+ Lambda_c(2625)~-     1048     -104124  -1.0      2.62811000      0.000000e+00      anti-Lambda_c(2625)-           0      0.00000000
+ Lambda_c(2880)+      1049      204126   1.0      2.88163000      1.175379e-22           Lambda_c(2880)+           0      0.00000000
+ Lambda_c(2880)~-     1050     -204126  -1.0      2.88163000      1.175379e-22      anti-Lambda_c(2880)-           0      0.00000000
+ Sigma_c0               81        4112   0.0      2.45375000      3.596787e-22                  Sigma_c0        4112      0.00000000
+ Sigma_c~0              82       -4112   0.0      2.45375000      3.596787e-22             anti-Sigma_c0       -4112      0.00000000
+ Sigma_c+               83        4212   1.0      2.45290000      3.999999e-22                  Sigma_c+        4212      0.00000000
+ Sigma_c~-              84       -4212  -1.0      2.45290000      3.999999e-22             anti-Sigma_c-       -4212      0.00000000
+ Sigma_c++              85        4222   2.0      2.45397000      3.482603e-22                 Sigma_c++        4222      0.00000000
+ Sigma_c~--             86       -4222  -2.0      2.45397000      3.482603e-22            anti-Sigma_c--       -4222      0.00000000
+ Sigma_c*0             480        4114   0.0      2.51848000      4.539394e-23                 Sigma_c*0        4114      0.00000000
+ Sigma_c*~0            481       -4114   0.0      2.51848000      4.539394e-23            anti-Sigma_c*0       -4114      0.00000000
+ Sigma_c*+             486        4214   1.0      2.51750000      3.291061e-22                 Sigma_c*+        4214      0.00000000
+ Sigma_c*~-            487       -4214  -1.0      2.51750000      3.291061e-22            anti-Sigma_c*-       -4214      0.00000000
+ Sigma_c*++            488        4224   2.0      2.51841000      4.453396e-23                Sigma_c*++        4224      0.00000000
+ Sigma_c*~--           489       -4224  -2.0      2.51841000      4.453396e-23           anti-Sigma_c*--       -4224      0.00000000
+ Xi_c0                 106        4132   0.0      2.47091000      1.530726e-13                     Xi_c0        4132      0.00000000
+ Xi_c~0                107       -4132   0.0      2.47091000      1.530726e-13                anti-Xi_c0       -4132      0.00000000
+ Xi_c+                 108        4232   1.0      2.46793000      4.420000e-13                     Xi_c+        4232      0.00000000
+ Xi_c~-                109       -4232  -1.0      2.46793000      4.420000e-13                anti-Xi_c-       -4232      0.00000000
+ Xi'_c0                100        4312   0.0      2.57920000      0.000000e+00                    Xi'_c0        4312      0.00000000
+ Xi'_c~0               101       -4312   0.0      2.57920000      0.000000e+00               anti-Xi'_c0       -4312      0.00000000
+ Xi'_c+                102        4322   1.0      2.57840000      0.000000e+00                    Xi'_c+        4322      0.00000000
+ Xi'_c~-               103       -4322  -1.0      2.57840000      0.000000e+00               anti-Xi'_c-       -4322      0.00000000
+ Xi_c*0                494        4314   0.0      2.64638000      2.800902e-22                    Xi_c*0        4314      0.00000000
+ Xi_c*~0               495       -4314   0.0      2.64638000      2.800902e-22               anti-Xi_c*0       -4314      0.00000000
+ Xi_c*+                496        4324   1.0      2.64557000      3.075757e-22                    Xi_c*+        4324      0.00000000
+ Xi_c*~-               497       -4324  -1.0      2.64557000      3.075757e-22               anti-Xi_c*-       -4324      0.00000000
+ Xi_c(2790)+          1051      104324   1.0      2.79240000      7.395640e-23               Xi_c(2790)+           0      0.00000000
+ Xi_c(2790)~-         1052     -104324  -1.0      2.79240000      7.395640e-23          anti-Xi_c(2790)-           0      0.00000000
+ Xi_c(2790)0          1053      104314   0.0      2.79410000      6.582120e-23               Xi_c(2790)0           0      0.00000000
+ Xi_c(2790)~0         1054     -104314   0.0      2.79410000      6.582120e-23          anti-Xi_c(2790)0           0      0.00000000
+ Xi_c(2815)+          1055      104322   1.0      2.81673000      2.708691e-22               Xi_c(2815)+           0      0.00000000
+ Xi_c(2815)~-         1056     -104322  -1.0      2.81673000      2.708691e-22          anti-Xi_c(2815)-           0      0.00000000
+ Xi_c(2815)0          1057      104312   0.0      2.82026000      2.591386e-22               Xi_c(2815)0           0      0.00000000
+ Xi_c(2815)~0         1058     -104312   0.0      2.82026000      2.591386e-22          anti-Xi_c(2815)0           0      0.00000000
+ Omega_c0              104        4332   0.0      2.69520000      2.680000e-13                  Omega_c0        4332      0.00000000
+ Omega_c~0             105       -4332   0.0      2.69520000      2.680000e-13             anti-Omega_c0       -4332      0.00000000
+ Omega_c*0             498        4334   0.0      2.76590000      0.000000e+00                 Omega_c*0        4334      0.00000000
+ Omega_c*~0            499       -4334   0.0      2.76590000      0.000000e+00            anti-Omega_c*0       -4334      0.00000000
+ Xi_cc+                502        4412   1.0      3.62140000      0.800000e-13                    Xi_cc+        4412      0.00000000
+ Xi_cc~-               503       -4412  -1.0      3.62140000      0.800000e-13               anti-Xi_cc-       -4412      0.00000000
+ Xi*_cc+               504        4414   1.0      3.65648000      0.000000e+00                   Xi_cc*+        4414      0.00000000
+ Xi*_cc~-              505       -4414  -1.0      3.65648000      0.000000e+00              anti-Xi_cc*-       -4414      0.00000000
+ Xi_cc++               506        4422   2.0      3.62140000      2.560000e-13                   Xi_cc++        4422      0.00000000
+ Xi_cc~--              507       -4422  -2.0      3.62140000      2.560000e-13              anti-Xi_cc--       -4422      0.00000000
+ Xi*_cc++              508        4424   2.0      3.65648000      0.000000e+00                  Xi_cc*++        4424      0.00000000
+ Xi*_cc~--             509       -4424  -2.0      3.65648000      0.000000e+00             anti-Xi_cc*--       -4424      0.00000000
+ Omega_cc+             510        4432   1.0      3.73800000      1.600000e-13                 Omega_cc+        4432      0.00000000
+ Omega_cc~-            511       -4432  -1.0      3.73800000      1.600000e-13            anti-Omega_cc-       -4432      0.00000000
+ Omega*_cc+            512        4434   1.0      3.82466000      0.000000e+00                Omega_cc*+        4434      0.00000000
+ Omega*_cc~-           513       -4434  -1.0      3.82466000      0.000000e+00           anti-Omega_cc*-       -4434      0.00000000
+ Omega*_ccc++          514        4444   2.0      4.91594000      0.000000e+00              Omega*_ccc++        4444      0.00000000
+ Omega*_ccc~--         515       -4444  -2.0      4.91594000      0.000000e+00         anti-Omega*_ccc--       -4444      0.00000000
+ Lambda_b0              79        5122   0.0      5.61960000      1.470865e-12                 Lambda_b0        5122      0.00000000
+ Lambda_b~0             80       -5122   0.0      5.61960000      1.470865e-12            anti-Lambda_b0       -5122      0.00000000
+ Lambda_b(5912)0      1065       15122   0.0      5.91220000      1.316000e-21           Lambda_b(5912)0       15122      0.00000000
+ Lambda_b(5912)~0     1066      -15122   0.0      5.91220000      1.316000e-21      anti-Lambda_b(5912)0      -15122      0.00000000
+ Lambda_b(5920)0      1067        5124   0.0      5.91992000      1.316000e-21           Lambda_b(5920)0        5124      0.00000000
+ Lambda_b(5920)~0     1068       -5124   0.0      5.91992000      1.316000e-21      anti-Lambda_b(5920)0       -5124      0.00000000
+ Sigma_b-              114        5112  -1.0      5.81564000      1.343290e-22                  Sigma_b-        5112      0.00000000
+ Sigma_b~+             115       -5112   1.0      5.81564000      1.343290e-22             anti-Sigma_b+       -5112      0.00000000
+ Sigma_b0              112        5212   0.0      5.80780000      1.000000e-19                  Sigma_b0        5212      0.00000000
+ Sigma_b~0             113       -5212   0.0      5.80780000      1.000000e-19             anti-Sigma_b0       -5212      0.00000000
+ Sigma_b+              110        5222   1.0      5.81056000      1.316424e-22                  Sigma_b+        5222      0.00000000
+ Sigma_b~-             111       -5222  -1.0      5.81056000      1.316424e-22             anti-Sigma_b-       -5222      0.00000000
+ Sigma_b*-             520        5114  -1.0      5.83474000      8.776160e-23                 Sigma_b*-        5114      0.00000000
+ Sigma_b*~+            521       -5114   1.0      5.83474000      8.776160e-23            anti-Sigma_b*+       -5114      0.00000000
+ Sigma_b*0             528        5214   0.0      5.82900000      0.000000e+00                 Sigma_b*0        5214      0.00000000
+ Sigma_b*~0            529       -5214   0.0      5.82900000      0.000000e+00            anti-Sigma_b*0       -5214      0.00000000
+ Sigma_b*+             530        5224   1.0      5.83032000      7.002255e-23                 Sigma_b*+        5224      0.00000000
+ Sigma_b*~-            531       -5224  -1.0      5.83032000      7.002255e-23            anti-Sigma_b*-       -5224      0.00000000
+ Xi_b-                 122        5132  -1.0      5.79700000      1.570912e-12                     Xi_b-        5132      0.00000000
+ Xi_b~+                123       -5132   1.0      5.79700000      1.570912e-12                anti-Xi_b+       -5132      0.00000000
+ Xi_b0                 124        5232   0.0      5.79190000      1.490000e-12                     Xi_b0        5232      0.00000000
+ Xi_b~0                125       -5232   0.0      5.79190000      1.490000e-12                anti-Xi_b0       -5232      0.00000000
+ Xi'_b-                116        5312  -1.0      5.96000000      1.000000e-19                    Xi'_b-        5312      0.00000000
+ Xi'_b~+               117       -5312   1.0      5.96000000      1.000000e-19               anti-Xi'_b+       -5312      0.00000000
+ Xi'_b0                118        5322   0.0      5.96000000      1.000000e-19                    Xi'_b0        5322      0.00000000
+ Xi'_b~0               119       -5322   0.0      5.96000000      1.000000e-19               anti-Xi'_b0       -5322      0.00000000
+ Xi_b*-                538        5314  -1.0      5.97000000      0.000000e+00                    Xi_b*-        5314      0.00000000
+ Xi_b*~+               539       -5314   1.0      5.97000000      0.000000e+00               anti-Xi_b*+       -5314      0.00000000
+ Xi_b*0                540        5324   0.0      5.97000000      0.000000e+00                    Xi_b*0        5324      0.00000000
+ Xi_b*~0               541       -5324   0.0      5.97000000      0.000000e+00               anti-Xi_b*0       -5324      0.00000000
+ Omega_b*-             542        5334  -1.0      6.13000000      0.000000e+00                 Omega_b*-        5334      0.00000000
+ Omega_b*~+            543       -5334   1.0      6.13000000      0.000000e+00            anti-Omega_b*+       -5334      0.00000000
+ Omega_b-              120        5332  -1.0      6.04610000      1.645530e-12                  Omega_b-        5332      0.00000000
+ Omega_b~+             121       -5332   1.0      6.04610000      1.645530e-12             anti-Omega_b+       -5332      0.00000000
+ Xi_bc0                522        5142   0.0      6.90000000      0.500000e-12                    Xi_bc0        5142      0.00000000
+ Xi_bc~0               523       -5142   0.0      6.90000000      0.500000e-12               anti-Xi_bc0       -5142      0.00000000
+ Xi_bc+                532        5242   1.0      6.90000000      0.500000e-12                    Xi_bc+        5242      0.00000000
+ Xi_bc~-               533       -5242  -1.0      6.90000000      0.500000e-12               anti-Xi_bc-       -5242      0.00000000
+ Omega_bc0             544        5342   0.0      7.19099000      0.500000e-12                 Omega_bc0        5342      0.00000000
+ Omega_bc~0            545       -5342   0.0      7.19099000      0.500000e-12            anti-Omega_bc0       -5342      0.00000000
+ Xi'_bc0               550        5412   0.0      7.03724000      0.000000e+00                   Xi'_bc0        5412      0.00000000
+ Xi'_bc~0              551       -5412   0.0      7.03724000      0.000000e+00              anti-Xi'_bc0       -5412      0.00000000
+ Xi*_bc0               552        5414   0.0      7.04850000      0.000000e+00                   Xi*_bc0        5414      0.00000000
+ Xi*_bc~0              553       -5414   0.0      7.04850000      0.000000e+00              anti-Xi*_bc0       -5414      0.00000000
+ Xi'_bc+               554        5422   1.0      7.03724000      0.000000e+00                   Xi'_bc+        5422      0.00000000
+ Xi'_bc~-              555       -5422  -1.0      7.03724000      0.000000e+00              anti-Xi'_bc-       -5422      0.00000000
+ Xi*_bc+               556        5424   1.0      7.04850000      0.000000e+00                   Xi*_bc+        5424      0.00000000
+ Xi*_bc~-              557       -5424  -1.0      7.04850000      0.000000e+00              anti-Xi*_bc+       -5424      0.00000000
+ Omega'_bc0            558        5432   0.0      7.21101000      0.000000e+00                Omega'_bc0        5432      0.00000000
+ Omega'_bc~0           559       -5432   0.0      7.21101000      0.000000e+00           anti-Omega'_bc0       -5432      0.00000000
+ Omega*_bc0            560        5434   0.0      7.21900000      0.000000e+00                Omega*_bc0        5434      0.00000000
+ Omega*_bc~0           561       -5434   0.0      7.21900000      0.000000e+00           anti-Omega*_bc0       -5434      0.00000000
+ Omega_bcc+            562        5442   1.0      8.30945000      1.290893e-12                Omega_bcc+        5442      0.00000000
+ Omega_bcc~-           563       -5442  -1.0      8.30945000      1.290893e-12           anti-Omega_bcc-       -5442      0.00000000
+ Omega*_bcc+           564        5444   1.0      8.31325000      0.000000e+00               Omega*_bcc+        5444      0.00000000
+ Omega*_bcc~-          565       -5444  -1.0      8.31325000      0.000000e+00          anti-Omega*_bcc-       -5444      0.00000000
+ Xi_bb-                568        5512  -1.0     10.42272000      1.290893e-12                    Xi_bb-        5512      0.00000000
+ Xi_bb~+               569       -5512   1.0     10.42272000      1.290893e-12               anti-Xi_bb+       -5512      0.00000000
+ Xi*_bb-               570        5514  -1.0     10.44144000      0.000000e+00                   Xi*_bb-        5514      0.00000000
+ Xi*_bb~+              571       -5514   1.0     10.44144000      0.000000e+00              anti-Xi*_bb+       -5514      0.00000000
+ Xi_bb0                572        5522   0.0     10.42272000      1.290893e-12                    Xi_bb0        5522      0.00000000
+ Xi_bb~0               573       -5522   0.0     10.42272000      1.290893e-12               anti-Xi_bb0       -5522      0.00000000
+ Xi*_bb0               574        5524   0.0     10.44144000      0.000000e+00                   Xi*_bb0        5524      0.00000000
+ Xi*_bb~0              575       -5524   0.0     10.44144000      0.000000e+00              anti-Xi*_bb0       -5524      0.00000000
+ Omega_bb-             576        5532  -1.0     10.60209000      1.290893e-12                 Omega_bb-        5532      0.00000000
+ Omega_bb~+            577       -5532   1.0     10.60209000      1.290893e-12            anti-Omega_bb+       -5532      0.00000000
+ Omega*_bb-            578        5534  -1.0     10.61426000      0.000000e+00                Omega*_bb-        5534      0.00000000
+ Omega*_bb~+           579       -5534   1.0     10.61426000      0.000000e+00           anti-Omega*_bb+       -5534      0.00000000
+ Omega_bbc0            580        5542   0.0     11.70767000      1.290893e-12                Omega_bbc0        5542      0.00000000
+ Omega_bbc~0           581       -5542   0.0     11.70767000      1.290893e-12           anti-Omega_bbc0       -5542      0.00000000
+ Omega*_bbc0           582        5544   0.0     11.71147000      0.000000e+00               Omega*_bbc0        5544      0.00000000
+ Omega*_bbc~0          583       -5544   0.0     11.71147000      0.000000e+00          anti-Omega*_bbc0       -5544      0.00000000
+ Omega*_bbb-           584        5554  -1.0     15.11061000      0.000000e+00               Omega*_bbb-        5554      0.00000000
+ Omega*_bbb~+          585       -5554   1.0     15.11061000      0.000000e+00          anti-Omega*_bbb+       -5554      0.00000000
+ deuteron               45  1000010020   1.0      1.87561300      1.000000e+15                  deuteron           0      0.00000000
+ triton                 46  1000010030   1.0      2.80925000      1.000000e+15                   tritium           0      0.00000000
+ alpha                  47  1000020040   2.0      3.72741700      1.000000e+15                     alpha           0      0.00000000
+ geantino               48   480000000   0.0      0.00000000      1.000000e+15                  geantino           0      0.00000000
+ opticalphoton          50       20022   0.0      0.00000000      1.000000e+16                  Cerenkov           0      0.00000000
+ H_10                   87          25   0.0    125.10000000      9.400000e-26                    Higgs0          25      0.00000000
+ H_20                   88          35   0.0    310.00000000      9.400000e-26                   Higgs'0          35      0.00000000
+ H_30                   89          36   0.0    310.00000000      9.400000e-26                        A0          36      0.00000000
+ H+                     90          37   1.0    310.00000000      9.400000e-26                    Higgs+          37      0.00000000
+ H-                     91         -37  -1.0    310.00000000      9.400000e-26                    Higgs-         -37      0.00000000
+ d                     303           1  -0.3      0.00990000      0.000000e+00                         d           1      0.00000000
+ anti-d                304          -1   0.3      0.00990000      0.000000e+00                    anti-d          -1      0.00000000
+ u                     305           2   0.7      0.00560000      0.000000e+00                         u           2      0.00000000
+ anti-u                306          -2  -0.7      0.00560000      0.000000e+00                    anti-u          -2      0.00000000
+ s                     307           3  -0.3      0.19900000      0.000000e+00                         s           3      0.00000000
+ anti-s                308          -3   0.3      0.19900000      0.000000e+00                    anti-s          -3      0.00000000
+ c                     309           4   0.7      1.35000000      0.000000e+00                         c           4      0.00000000
+ anti-c                310          -4  -0.7      1.35000000      0.000000e+00                    anti-c          -4      0.00000000
+ b                     311           5  -0.3      5.00000000      0.000000e+00                         b           5      0.00000000
+ anti-b                312          -5   0.3      5.00000000      0.000000e+00                    anti-b          -5      0.00000000
+ t                     313           6   0.7    173.50000000      3.291061e-25                         t           6      0.00000000
+ anti-t                314          -6  -0.7    173.50000000      3.291061e-25                    anti-t          -6      0.00000000
+ b'                    315           7  -0.3    400.00000000      0.000000e+00                        b'           7      0.00000000
+ anti-b'               316          -7   0.3    400.00000000      0.000000e+00                   anti-b'          -7      0.00000000
+ t'                    317           8   0.7    500.00000000      0.000000e+00                        t'           8      0.00000000
+ anti-t'               318          -8  -0.7    500.00000000      0.000000e+00                   anti-t'          -8      0.00000000
+ nu_tau                319          16   0.0      0.00000000      1.000000e+16                    nu_tau          16      0.00000000
+ nu_tau~               320         -16   0.0      0.00000000      1.000000e+16               anti-nu_tau         -16      0.00000000
+ L-                    321          17  -1.0    400.00000000      0.000000e+00                        L-          17      0.00000000
+ L+                    322         -17   1.0    400.00000000      0.000000e+00                        L+         -17      0.00000000
+ nu_L                  323          18   0.0      0.00000000      0.000000e+00                      nu_L          18      0.00000000
+ anti-nu_L             324         -18   0.0      0.00000000      0.000000e+00                 anti-nu_L         -18      0.00000000
+ g                     325          21   0.0      0.00000000      1.000000e+16                         g          21      0.00000000
+ Z'0                   326          32   0.0    500.00000000      0.000000e+00                       Z'0          32      0.00000000
+ Z''0                  327          33   0.0    900.00000000      0.000000e+00                      Z''0          33      0.00000000
+ W'+                   328          34   1.0    500.00000000      0.000000e+00                       W'+          34      0.00000000
+ W'-                   329         -34  -1.0    500.00000000      0.000000e+00                       W'-         -34      0.00000000
+ Graviton              330          39   0.0      0.00000000      0.000000e+00                   unknown          39      0.00000000
+ R0                    331          41   0.0   5000.00000000      0.000000e+00                        R0          41      0.00000000
+ anti-R0               332         -41   0.0   5000.00000000      0.000000e+00                   anti-R0         -41      0.00000000
+ LQ_ue                 333          42  -0.3    200.00000000      0.000000e+00                   unknown          42      0.00000000
+ LQ_uebar              334         -42   0.3    200.00000000      0.000000e+00                   unknown         -42      0.00000000
+ Xu0                   335          43   0.0      1.00000000      0.000000e+00                       Xu0          43      0.00000000
+ Xu+                   336          44   1.0      1.00000000      0.000000e+00                       Xu+          44      0.00000000
+ Xu-                   337         -44  -1.0      1.00000000      0.000000e+00                       Xu-         -44      0.00000000
+ specflav              338          81   0.0      0.00000000      0.000000e+00                  specflav          81      0.00000000
+ rndmflav              339          82   0.0      0.00000000      0.000000e+00                  rndmflav          82      0.00000000
+ anti-rndmflav         340         -82   0.0      0.00000000      0.000000e+00             anti-rndmflav         -82      0.00000000
+ phasespa              341          83   0.0      1.00000000      0.000000e+00                  phasespa          83      0.00000000
+ c-hadron              342          84   0.7      2.00000000      3.335641e-13                  c-hadron          84      0.00000000
+ anti-c-hadron         343         -84  -0.7      2.00000000      3.335641e-13             anti-c-hadron         -84      0.00000000
+ b-hadron              344          85  -0.3      5.00000000      1.290893e-12                  b-hadron          85      0.00000000
+ anti-b-hadron         345         -85   0.3      5.00000000      1.290893e-12             anti-b-hadron         -85      0.00000000
+ t-hadron              346          86   0.7    175.00000000      0.000000e+00                  t-hadron           0      0.00000000
+ anti-t-hadron         347         -86  -0.7    175.00000000      0.000000e+00             anti-t-hadron           0      0.00000000
+ b'-hadron             348          87  -0.3    400.00000000      0.000000e+00                 b'-hadron           0      0.00000000
+ anti-b'-hadron        349         -87   0.3    400.00000000      0.000000e+00            anti-b'-hadron           0      0.00000000
+ junction              350          88   0.0      0.00000000      0.000000e+00                  junction          88      0.00000000
+ system                351          90   0.0      0.00000000      0.000000e+00                    system          90      0.00000000
+ cluster               352          91   0.0      0.00000000      0.000000e+00                   cluster          91      0.00000000
+ string                353          92   0.0      0.00000000      0.000000e+00                    string          92      0.00000000
+ indep                 354          93   0.0      0.00000000      0.000000e+00                     indep          93      0.00000000
+ CMshower              355          94   0.0      0.00000000      0.000000e+00                  CMshower          94      0.00000000
+ SPHEaxis              356          95   0.0      0.00000000      0.000000e+00                  SPHEaxis          95      0.00000000
+ THRUaxis              357          96   0.0      0.00000000      0.000000e+00                  THRUaxis          96      0.00000000
+ CLUSjet               358          97   0.0      0.00000000      0.000000e+00                   CLUSjet          97      0.00000000
+ CELLjet               359          98   0.0      0.00000000      0.000000e+00                   CELLjet          98      0.00000000
+ table                 360          99   0.0      0.00000000      0.000000e+00                     table          99      0.00000000
+ deuteron~             390 -1000010020  -1.0      1.87561300      1.000000e+15             anti-deuteron           0      0.00000000
+ triton~               392 -1000010030  -1.0      2.80925000      1.000000e+15              anti-tritium           0      0.00000000
+ alpha~                393 -1000020040  -2.0      3.72741700      1.000000e+15                anti-alpha           0      0.00000000
+ dd_1                  394        1103  -0.7      0.00000000      0.000000e+00                      dd_1        1103      0.00000000
+ anti-dd_1             395       -1103   0.7      0.00000000      0.000000e+00                 anti-dd_1       -1103      0.00000000
+ ud_0                  410        2101   0.3      0.00000000      0.000000e+00                      ud_0        2101      0.00000000
+ anti-ud_0             411       -2101  -0.3      0.00000000      0.000000e+00                 anti-ud_0       -2101      0.00000000
+ ud_1                  412        2103   0.3      0.00000000      0.000000e+00                      ud_1        2103      0.00000000
+ anti-ud_1             413       -2103  -0.3      0.00000000      0.000000e+00                 anti-ud_1       -2103      0.00000000
+ uu_1                  426        2203   1.3      0.00000000      0.000000e+00                      uu_1        2203      0.00000000
+ anti-uu_1             427       -2203  -1.3      0.00000000      0.000000e+00                 anti-uu_1       -2203      0.00000000
+ sd_0                  438        3101  -0.7      0.00000000      0.000000e+00                      sd_0        3101      0.00000000
+ anti-sd_0             439       -3101   0.7      0.00000000      0.000000e+00                 anti-sd_0       -3101      0.00000000
+ sd_1                  440        3103  -0.7      0.00000000      0.000000e+00                      sd_1        3103      0.00000000
+ anti-sd_1             441       -3103   0.7      0.00000000      0.000000e+00                 anti-sd_1       -3103      0.00000000
+ su_0                  454        3201   0.3      0.00000000      0.000000e+00                      su_0        3201      0.00000000
+ anti-su_0             455       -3201  -0.3      0.00000000      0.000000e+00                 anti-su_0       -3201      0.00000000
+ su_1                  456        3203   0.3      0.00000000      0.000000e+00                      su_1        3203      0.00000000
+ anti-su_1             457       -3203  -0.3      0.00000000      0.000000e+00                 anti-su_1       -3203      0.00000000
+ ss_1                  470        3303  -0.7      0.00000000      0.000000e+00                      ss_1        3303      0.00000000
+ anti-ss_1             471       -3303   0.7      0.00000000      0.000000e+00                 anti-ss_1       -3303      0.00000000
+ cd_0                  476        4101   0.3      0.00000000      0.000000e+00                      cd_0        4101      0.00000000
+ anti-cd_0             477       -4101  -0.3      0.00000000      0.000000e+00                 anti-cd_0       -4101      0.00000000
+ cd_1                  478        4103   0.3      0.00000000      0.000000e+00                      cd_1        4103      0.00000000
+ anti-cd_1             479       -4103  -0.3      0.00000000      0.000000e+00                 anti-cd_1       -4103      0.00000000
+ cu_0                  482        4201   1.3      0.00000000      0.000000e+00                      cu_0        4201      0.00000000
+ anti-cu_0             483       -4201  -1.3      0.00000000      0.000000e+00                 anti-cu_0       -4201      0.00000000
+ cu_1                  484        4203   1.3      0.00000000      0.000000e+00                      cu_1        4203      0.00000000
+ anti-cu_1             485       -4203  -1.3      0.00000000      0.000000e+00                 anti-cu_1       -4203      0.00000000
+ cs_0                  490        4301   0.3      0.00000000      0.000000e+00                      cs_0        4301      0.00000000
+ anti-cs_0             491       -4301  -0.3      0.00000000      0.000000e+00                 anti-cs_0       -4301      0.00000000
+ cs_1                  492        4303   0.3      0.00000000      0.000000e+00                      cs_1        4303      0.00000000
+ anti-cs_1             493       -4303  -0.3      0.00000000      0.000000e+00                 anti-cs_1       -4303      0.00000000
+ cc_1                  500        4403   1.3      0.00000000      0.000000e+00                      cc_1        4403      0.00000000
+ anti-cc_1             501       -4403  -1.3      0.00000000      0.000000e+00                 anti-cc_1       -4403      0.00000000
+ bd_0                  516        5101  -0.7      0.00000000      0.000000e+00                      bd_0        5101      0.00000000
+ anti-bd_0             517       -5101   0.7      0.00000000      0.000000e+00                 anti-bd_0       -5101      0.00000000
+ bd_1                  518        5103  -0.7      0.00000000      0.000000e+00                      bd_1        5103      0.00000000
+ anti-bd_1             519       -5103   0.7      0.00000000      0.000000e+00                 anti-bd_1       -5103      0.00000000
+ bu_0                  524        5201   0.3      0.00000000      0.000000e+00                      bu_0        5201      0.00000000
+ anti-bu_0             525       -5201  -0.3      0.00000000      0.000000e+00                 anti-bu_0       -5201      0.00000000
+ bu_1                  526        5203   0.3      0.00000000      0.000000e+00                      bu_1        5203      0.00000000
+ anti-bu_1             527       -5203  -0.3      0.00000000      0.000000e+00                 anti-bu_1       -5203      0.00000000
+ bs_0                  534        5301  -0.7      0.00000000      0.000000e+00                      bs_0        5301      0.00000000
+ anti-bs_0             535       -5301   0.7      0.00000000      0.000000e+00                 anti-bs_0       -5301      0.00000000
+ bs_1                  536        5303  -0.7      0.00000000      0.000000e+00                      bs_1        5303      0.00000000
+ anti-bs_1             537       -5303   0.7      0.00000000      0.000000e+00                 anti-bs_1       -5303      0.00000000
+ bc_0                  546        5401   0.3      0.00000000      0.000000e+00                      bc_0        5401      0.00000000
+ anti-bc_0             547       -5401  -0.3      0.00000000      0.000000e+00                 anti-bc_0       -5401      0.00000000
+ bc_1                  548        5403   0.3      0.00000000      0.000000e+00                      bc_1        5403      0.00000000
+ anti-bc_1             549       -5403  -0.3      0.00000000      0.000000e+00                 anti-bc_1       -5403      0.00000000
+ bb_1                  566        5503  -0.7      0.00000000      0.000000e+00                      bb_1        5503      0.00000000
+ anti-bb_1             567       -5503   0.7      0.00000000      0.000000e+00                 anti-bb_1       -5503      0.00000000
+ vpho                  586       10022   0.0      0.00000000      0.000000e+00                      vpho           0      0.00000000
+ Xsd                   751       30343   0.0      1.60000000      0.000000e+00                       Xsd       30343      0.00000000
+ anti-Xsd              752      -30343   0.0      1.60000000      0.000000e+00                  anti-Xsd      -30343      0.00000000
+ Xsu                   753       30353   1.0      1.60000000      0.000000e+00                       Xsu       30353      0.00000000
+ anti-Xsu              754      -30353  -1.0      1.60000000      0.000000e+00                  anti-Xsu      -30353      0.00000000
+ Xss                   755       30363   0.0      1.80000000      0.000000e+00                       Xss       30363      0.00000000
+ anti-Xss              756      -30363   0.0      1.80000000      0.000000e+00                  anti-Xss      -30363      0.00000000
+ ~d_L                  859     1000001  -0.3    500.00000000      0.000000e+00                   unknown     1000001      0.00000000
+ ~d_Lbar               860    -1000001   0.3    500.00000000      0.000000e+00                   unknown    -1000001      0.00000000
+ ~u_L                  861     1000002   0.7    500.00000000      0.000000e+00                   unknown     1000002      0.00000000
+ ~u_Lbar               862    -1000002  -0.7    500.00000000      0.000000e+00                   unknown    -1000002      0.00000000
+ ~s_L                  863     1000003  -0.3    500.00000000      0.000000e+00                   unknown     1000003      0.00000000
+ ~s_Lbar               864    -1000003   0.3    500.00000000      0.000000e+00                   unknown    -1000003      0.00000000
+ ~c_L                  865     1000004   0.7    500.00000000      0.000000e+00                   unknown     1000004      0.00000000
+ ~c_Lbar               866    -1000004  -0.7    500.00000000      0.000000e+00                   unknown    -1000004      0.00000000
+ ~b_1                  867     1000005  -0.3    500.00000000      0.000000e+00                   unknown     1000005      0.00000000
+ ~b_1bar               868    -1000005   0.3    500.00000000      0.000000e+00                   unknown    -1000005      0.00000000
+ ~t_1                  869     1000006   0.7    500.00000000      0.000000e+00                   unknown     1000006      0.00000000
+ ~t_1bar               870    -1000006  -0.7    500.00000000      0.000000e+00                   unknown    -1000006      0.00000000
+ ~e_L-                 871     1000011  -1.0    500.00000000      0.000000e+00                   unknown     1000011      0.00000000
+ ~e_L+                 872    -1000011   1.0    500.00000000      0.000000e+00                   unknown    -1000011      0.00000000
+ ~nu_eL                873     1000012   0.0    500.00000000      0.000000e+00                   unknown     1000012      0.00000000
+ ~nu_eLbar             874    -1000012   0.0    500.00000000      0.000000e+00                   unknown    -1000012      0.00000000
+ ~mu_L-                875     1000013  -1.0    500.00000000      0.000000e+00                   unknown     1000013      0.00000000
+ ~mu_L+                876    -1000013   1.0    500.00000000      0.000000e+00                   unknown    -1000013      0.00000000
+ ~nu_muL               877     1000014   0.0    500.00000000      0.000000e+00                   unknown     1000014      0.00000000
+ ~nu_muLbar            878    -1000014   0.0    500.00000000      0.000000e+00                   unknown    -1000014      0.00000000
+ ~tau_1-               879     1000015  -1.0    500.00000000      0.000000e+00                   unknown     1000015      0.00000000
+ ~tau_1+               880    -1000015   1.0    500.00000000      0.000000e+00                   unknown    -1000015      0.00000000
+ ~nu_tauL              881     1000016   0.0    500.00000000      0.000000e+00                   unknown     1000016      0.00000000
+ ~nu_tauLbar           882    -1000016   0.0    500.00000000      0.000000e+00                   unknown    -1000016      0.00000000
+ ~g                    883     1000021   0.0    500.00000000      0.000000e+00                   unknown     1000021      0.00000000
+ ~chi_10               884     1000022   0.0    500.00000000      0.000000e+00                   unknown     1000022      0.00000000
+ ~chi_20               885     1000023   0.0    500.00000000      0.000000e+00                   unknown     1000023      0.00000000
+ ~chi_1+               886     1000024   1.0    500.00000000      0.000000e+00                   unknown     1000024      0.00000000
+ ~chi_1-               887    -1000024  -1.0    500.00000000      0.000000e+00                   unknown    -1000024      0.00000000
+ ~chi_30               888     1000025   0.0    500.00000000      0.000000e+00                   unknown     1000025      0.00000000
+ ~chi_40               889     1000035   0.0    500.00000000      0.000000e+00                   unknown     1000035      0.00000000
+ ~chi_2+               890     1000037   1.0    500.00000000      0.000000e+00                   unknown     1000037      0.00000000
+ ~chi_2-               891    -1000037  -1.0    500.00000000      0.000000e+00                   unknown    -1000037      0.00000000
+ ~Gravitino            892     1000039   0.0    500.00000000      0.000000e+00                   unknown     1000039      0.00000000
+ ~d_R                  893     2000001  -0.3    500.00000000      0.000000e+00                   unknown     2000001      0.00000000
+ ~d_Rbar               894    -2000001   0.3    500.00000000      0.000000e+00                   unknown    -2000001      0.00000000
+ ~u_R                  895     2000002   0.7    500.00000000      0.000000e+00                   unknown     2000002      0.00000000
+ ~u_Rbar               896    -2000002  -0.7    500.00000000      0.000000e+00                   unknown    -2000002      0.00000000
+ ~s_R                  897     2000003  -0.3    500.00000000      0.000000e+00                   unknown     2000003      0.00000000
+ ~s_Rbar               898    -2000003   0.3    500.00000000      0.000000e+00                   unknown    -2000003      0.00000000
+ ~c_R                  899     2000004   0.7    500.00000000      0.000000e+00                   unknown     2000004      0.00000000
+ ~c_Rbar               900    -2000004  -0.7    500.00000000      0.000000e+00                   unknown    -2000004      0.00000000
+ ~b_2                  901     2000005  -0.3    500.00000000      0.000000e+00                   unknown     2000005      0.00000000
+ ~b_2bar               902    -2000005   0.3    500.00000000      0.000000e+00                   unknown    -2000005      0.00000000
+ ~t_2                  903     2000006   0.7    500.00000000      0.000000e+00                   unknown     2000006      0.00000000
+ ~t_2bar               904    -2000006  -0.7    500.00000000      0.000000e+00                   unknown    -2000006      0.00000000
+ ~e_R-                 905     2000011  -1.0    500.00000000      0.000000e+00                   unknown     2000011      0.00000000
+ ~e_R+                 906    -2000011   1.0    500.00000000      0.000000e+00                   unknown    -2000011      0.00000000
+ ~nu_eR                907     2000012   0.0    500.00000000      0.000000e+00                   unknown     2000012      0.00000000
+ ~nu_eRbar             908    -2000012   0.0    500.00000000      0.000000e+00                   unknown    -2000012      0.00000000
+ ~mu_R-                909     2000013  -1.0    500.00000000      0.000000e+00                   unknown     2000013      0.00000000
+ ~mu_R+                910    -2000013   1.0    500.00000000      0.000000e+00                   unknown    -2000013      0.00000000
+ ~nu_muR               911     2000014   0.0    500.00000000      0.000000e+00                   unknown     2000014      0.00000000
+ ~nu_muRbar            912    -2000014   0.0    500.00000000      0.000000e+00                   unknown    -2000014      0.00000000
+ ~tau_2-               913     2000015  -1.0    500.00000000      0.000000e+00                   unknown     2000015      0.00000000
+ ~tau_2+               914    -2000015   1.0    500.00000000      0.000000e+00                   unknown    -2000015      0.00000000
+ ~nu_tauR              915     2000016   0.0    500.00000000      0.000000e+00                   unknown     2000016      0.00000000
+ ~nu_tauRbar           916    -2000016   0.0    500.00000000      0.000000e+00                   unknown    -2000016      0.00000000
+ pi_tc0                917     3000111   0.0    110.00000000      0.000000e+00                   unknown     3000111      0.00000000
+ rho_tc0               918     3000113   0.0    210.00000000      0.000000e+00                   unknown     3000113      0.00000000
+ pi_tc+                919     3000211   1.0    110.00000000      0.000000e+00                   unknown     3000211      0.00000000
+ pi_tc-                920    -3000211  -1.0    110.00000000      0.000000e+00                   unknown    -3000211      0.00000000
+ rho_tc+               921     3000213   1.0    210.00000000      0.000000e+00                   unknown     3000213      0.00000000
+ rho_tc-               922    -3000213  -1.0    210.00000000      0.000000e+00                   unknown    -3000213      0.00000000
+ pi'_tc0               923     3000221   0.0    110.00000000      0.000000e+00                   unknown     3000221      0.00000000
+ omega_tc              924     3000223   0.0    210.00000000      0.000000e+00                   unknown     3000223      0.00000000
+ eta_tc0               925     3000331   0.0    350.00000000      0.000000e+00                   unknown     3000331      0.00000000
+ V8_tc                 926     3100021   0.0    500.00000000      0.000000e+00                   unknown     3100021      0.00000000
+ pi_22_1_tc            927     3100111   0.0    125.00000000      0.000000e+00                   unknown     3100111      0.00000000
+ rho_11_tc             928     3100113   0.0    400.00000000      0.000000e+00                   unknown     3100113      0.00000000
+ pi_22_8_tc            929     3200111   0.0    250.00000000      0.000000e+00                   unknown     3200111      0.00000000
+ rho_12_tc             930     3200113   0.0    350.00000000      0.000000e+00                   unknown     3200113      0.00000000
+ rho_21_tc             931     3300113   0.0    350.00000000      0.000000e+00                   unknown     3300113      0.00000000
+ rho_22_tc             932     3400113   0.0    300.00000000      0.000000e+00                   unknown     3400113      0.00000000
+ d*                    933     4000001  -0.3    400.00000000      0.000000e+00                   unknown     4000001      0.00000000
+ d*bar                 934    -4000001   0.3    400.00000000      0.000000e+00                   unknown    -4000001      0.00000000
+ u*                    935     4000002   0.7    400.00000000      0.000000e+00                   unknown     4000002      0.00000000
+ u*bar                 936    -4000002  -0.7    400.00000000      0.000000e+00                   unknown    -4000002      0.00000000
+ e*-                   937     4000011  -1.0    400.00000000      0.000000e+00                   unknown     4000011      0.00000000
+ e*bar+                938    -4000011   1.0    400.00000000      0.000000e+00                   unknown    -4000011      0.00000000
+ nu*_e0                939     4000012   0.0    400.00000000      0.000000e+00                   unknown     4000012      0.00000000
+ nu*_ebar0             940    -4000012   0.0    400.00000000      0.000000e+00                   unknown    -4000012      0.00000000
+ gv                4900021     4900021   0.0      0.00000000        0.0000e+00                        gv     4900021      0.00000000
+ Zv                4900023     4900023   0.0    125.00000000        6.5800e-23                        Zv     4900023      0.01000000
+ qv                4900101     4900101   0.0      1.00000000        0.0000e+00                        qv     4900101      0.00000000
+ qvbar            -4900101    -4900101   0.0      1.00000000        0.0000e+00                     qvbar    -4900101      0.00000000
+ pivDiag           4900111     4900111   0.0      1.20000000        5.0000e-12                   pivDiag     4900111      2.0000e-11
+ pivUp             4900211     4900211   0.0      1.20000000        0.0000e+00                     pivUp     4900211      0.00000000
+ pivDn            -4900211    -4900211   0.0      1.20000000        0.0000e+00                     pivDn    -4900211      0.00000000
+ rhovDiag          4900113     4900113   0.0      1.20000000        0.0000e+00                  rhovDiag     4900113      0.00000000
+ rhovUp            4900213     4900213   0.0      1.20000000        0.0000e+00                    rhovUp     4900213      0.00000000
+ rhovDn           -4900213    -4900213   0.0      1.20000000        0.0000e+00                    rhovDn    -4900213      0.00000000
+ Graviton*             941     5000039   0.0   1000.00000000      0.000000e+00                   unknown     5000039      0.00000000
+ nu_Re                 942     9900012   0.0    500.00000000      0.000000e+00                   unknown     9900012      0.00000000
+ nu_Rmu                943     9900014   0.0    500.00000000      0.000000e+00                   unknown     9900014      0.00000000
+ nu_Rtau               944     9900016   0.0    500.00000000      0.000000e+00                   unknown     9900016      0.00000000
+ Z_R0                  945     9900023   0.0   1200.00000000      0.000000e+00                   unknown     9900023      0.00000000
+ W_R+                  946     9900024   1.0    750.00000000      0.000000e+00                   unknown     9900024      0.00000000
+ W_R-                  947    -9900024  -1.0    750.00000000      0.000000e+00                   unknown    -9900024      0.00000000
+ H_L++                 948     9900041   2.0    200.00000000      0.000000e+00                   unknown     9900041      0.00000000
+ H_L--                 949    -9900041  -2.0    200.00000000      0.000000e+00                   unknown    -9900041      0.00000000
+ H_R++                 950     9900042   2.0    200.00000000      0.000000e+00                   unknown     9900042      0.00000000
+ H_R--                 951    -9900042  -2.0    200.00000000      0.000000e+00                   unknown    -9900042      0.00000000
+ He3[0.0]               49  1000020030   2.0      2.80923000      1.000000e+15                       He3           0      0.00000000
+ He3~[0.0]             391 -1000020030  -2.0      2.80923000      1.000000e+15                  anti-He3           0      0.00000000
+ Li7[0.0]              988  1000030070   3.0      6.53536500      0.000000e+00                   unknown           0      0.00000000
+ Be8[0.0]              992  1000040080   4.0      7.45689300      0.000000e+00                   unknown           0      0.00000000
+ Be9[0.0]              959  1000040090   4.0      8.39479200      0.000000e+00                   unknown           0      0.00000000
+ Be10[0.0]             993  1000040100   4.0      9.32754500      0.000000e+00                   unknown           0      0.00000000
+ B10[0.0]              994  1000050100   5.0      9.32698900      0.000000e+00                   unknown           0      0.00000000
+ B11[0.0]              974  1000050110   5.0     10.25510100      0.000000e+00                   unknown           0      0.00000000
+ B12[0.0]              975  1000050120   5.0     11.19129500      0.000000e+00                   unknown           0      0.00000000
+ C12[0.0]              953  1000060120   6.0     11.17490000      0.000000e+00                   unknown           0      0.00000000
+ C13[0.0]              976  1000060130   6.0     12.11254500      0.000000e+00                   unknown           0      0.00000000
+ C14[0.0]              977  1000060140   6.0     13.04393400      0.000000e+00                   unknown           0      0.00000000
+ N14[0.0]              955  1000070140   7.0     13.04378000      0.000000e+00                   unknown           0      0.00000000
+ N15[0.0]              982  1000070150   7.0     13.04377800      0.000000e+00                   unknown           0      0.00000000
+ N16[0.0]              995  1000070160   7.0     14.90958500      0.000000e+00                   unknown           0      0.00000000
+ O16[0.0]              956  1000080160   8.0     14.89510000      0.000000e+00                   unknown           0      0.00000000
+ O17[0.0]              996  1000080170   8.0     15.83458700      0.000000e+00                   unknown           0      0.00000000
+ O18[0.0]              967  1000080180   8.0     16.76610800      0.000000e+00                   unknown           0      0.00000000
+ O19[0.0]              997  1000080190   8.0     17.70171700      0.000000e+00                   unknown           0      0.00000000
+ F19[0.0]              960  1000090190   9.0     17.69689600      0.000000e+00                   unknown           0      0.00000000
+ Ne22[0.0]             983  1000100220  10.0     20.48484100      0.000000e+00                   unknown           0      0.00000000
+ Ne23[0.0]             998  1000100230  10.0     21.41920500      0.000000e+00                   unknown           0      0.00000000
+ Na24[0.0]             999  1000110240  11.0     22.34743500      0.000000e+00                   unknown           0      0.00000000
+ Mg24[0.0]             979  1000120240  12.0     22.34192000      0.000000e+00                   unknown           0      0.00000000
+ Mg25[0.0]             989  1000120250  12.0     23.27415400      0.000000e+00                   unknown           0      0.00000000
+ Mg26[0.0]             980  1000120260  12.0     24.20262600      0.000000e+00                   unknown           0      0.00000000
+ Mg27[0.0]             981  1000120270  12.0     25.13574800      0.000000e+00                   unknown           0      0.00000000
+ Al27[0.0]             952  1000130270  13.0     25.12650000      0.000000e+00                   unknown           0      0.00000000
+ Al28[0.0]             972  1000130280  13.0     26.06497800      0.000000e+00                   unknown           0      0.00000000
+ Si28[0.0]             957  1000140280  14.0     26.05320000      0.000000e+00                   unknown           0      0.00000000
+ Si29[0.0]             964  1000140290  14.0     26.99142700      0.000000e+00                   unknown           0      0.00000000
+ Si30[0.0]             968  1000140300  14.0     27.92038300      0.000000e+00                   unknown           0      0.00000000
+ P31[0.0]             1000  1000150310  15.0     28.85186900      0.000000e+00                   unknown           0      0.00000000
+ Cl39[0.0]            1001  1000170390  17.0     36.29846000      0.000000e+00                   unknown           0      0.00000000
+ Cl40[0.0]            1002  1000170400  17.0     37.23220100      0.000000e+00                   unknown           0      0.00000000
+ Ar36[0.0]            1003  1000180360  18.0     33.50354900      0.000000e+00                   unknown           0      0.00000000
+ Ar40[0.0]             973  1000180400  18.0     37.22471500      0.000000e+00                   unknown           0      0.00000000
+ Cr50[0.0]            1004  1000240500  24.0     46.52443900      0.000000e+00                   unknown           0      0.00000000
+ Cr52[0.0]             978  1000240520  24.0     48.37010000      0.000000e+00                   unknown           0      0.00000000
+ Cr53[0.0]             990  1000240530  24.0     49.31389400      0.000000e+00                   unknown           0      0.00000000
+ Cr54[0.0]            1005  1000240540  24.0     50.24374100      0.000000e+00                   unknown           0      0.00000000
+ Mn55[0.0]             991  1000250550  25.0     51.17445700      0.000000e+00                   unknown           0      0.00000000
+ Fe54[0.0]             966  1000260540  26.0     50.24442100      0.000000e+00                   unknown           0      0.00000000
+ Fe56[0.0]             961  1000260560  26.0     52.10305600      0.000000e+00                   unknown           0      0.00000000
+ Fe57[0.0]             969  1000260570  26.0     53.03497500      0.000000e+00                   unknown           0      0.00000000
+ Fe59[0.0]            1006  1000260590  26.0     54.89748000      0.000000e+00                   unknown           0      0.00000000
+ Ni58[0.0]             984  1000280580  28.0     53.96642200      0.000000e+00                   unknown           0      0.00000000
+ Ni60[0.0]             985  1000280600  28.0     55.82516400      0.000000e+00                   unknown           0      0.00000000
+ Ni61[0.0]            1007  1000280610  28.0     56.75690900      0.000000e+00                   unknown           0      0.00000000
+ Ni62[0.0]             986  1000280620  28.0     57.68587700      0.000000e+00                   unknown           0      0.00000000
+ Ni63[0.0]            1008  1000280630  28.0     58.61860500      0.000000e+00                   unknown           0      0.00000000
+ Ni64[0.0]             987  1000280640  28.0     59.54851200      0.000000e+00                   unknown           0      0.00000000
+ Cu63[0.0]             954  1000290630  29.0     58.61860000      0.000000e+00                   unknown           0      0.00000000
+ Cu65[0.0]             958  1000290650  29.0     60.47984200      0.000000e+00                   unknown           0      0.00000000
+ Mo92[0.0]            1009  1000420920  42.0     85.61063000      0.000000e+00                   unknown           0      0.00000000
+ Mo95[0.0]            1010  1000420950  42.0     88.40421000      0.000000e+00                   unknown           0      0.00000000
+ Mo96[0.0]            1011  1000420960  42.0     89.33462100      0.000000e+00                   unknown           0      0.00000000
+ Mo97[0.0]            1012  1000420970  42.0     90.26736500      0.000000e+00                   unknown           0      0.00000000
+ Mo98[0.0]            1013  1000420980  42.0     91.19828700      0.000000e+00                   unknown           0      0.00000000
+ Mo100[0.0]           1014  1000421000  42.0     93.06320300      0.000000e+00                   unknown           0      0.00000000
+ Pd108[0.0]           1015  1000461080  46.0    100.51181600      0.000000e+00                   unknown           0      0.00000000
+ Au197[0.0]           1020  1000791970  79.0    183.43336000      0.000000e+00                   unknown           0      0.00000000
+ Pb207[0.0]            962  1000822070  82.0    192.79676500      0.000000e+00                   unknown           0      0.00000000
+ Pb208[0.0]            963  1000822080  82.0    193.72896200      0.000000e+00                   unknown           0      0.00000000
+ Pb206[0.0]            965  1000822060  82.0    191.86393700      0.000000e+00                   unknown           0      0.00000000
+ Pb204[0.0]            970  1000822040  82.0    189.99962700      0.000000e+00                   unknown           0      0.00000000
+ Intermediate          971   -99000000   0.0      0.00000000      0.000000e+00                   unknown           0      0.00000000
+#
+END PARTICLE
diff --git a/GaudiPartProp/python/GaudiPartProp/tests.py b/GaudiPartProp/python/GaudiPartProp/tests.py
new file mode 100644
index 0000000000000000000000000000000000000000..1697d56bf93296256493c69733e46013ad638f9b
--- /dev/null
+++ b/GaudiPartProp/python/GaudiPartProp/tests.py
@@ -0,0 +1,116 @@
+#!/usr/bin/env python3
+#####################################################################################
+# (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations #
+#                                                                                   #
+# This software is distributed under the terms of the Apache version 2 licence,     #
+# copied verbatim in the file "LICENSE".                                            #
+#                                                                                   #
+# In applying this licence, CERN does not waive the privileges and immunities       #
+# granted to it by virtue of its status as an Intergovernmental Organization        #
+# or submit itself to any jurisdiction.                                             #
+#####################################################################################
+# =============================================================================
+# =============================================================================
+## @file GaudiPartProp/tests.py
+#  The set of basic tests for objects from GaudiPartProp package
+#  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+#  @date   2008-12-01
+# =============================================================================
+"""
+The set of basic decorators for objects from GaudiPartProp package
+"""
+
+# =============================================================================
+__author__ = "Vanya BELYAEV Ivan.Belyaev@nikhef.nl"
+__version__ = ""
+# =============================================================================
+
+from GaudiPartProp.decorators import Gaudi
+
+pp1 = Gaudi.ParticleProperty("NAME1", Gaudi.ParticleID(121), 1.0, 501.0, 0.1, 0.001)
+pp2 = Gaudi.ParticleProperty("NAME2", Gaudi.ParticleID(122), -1, 502.0, 0.1, 0.001)
+pp3 = Gaudi.ParticleProperty("NAME3", Gaudi.ParticleID(123), 0, 503.0, 0.1, 0.001)
+
+pp1.setAntiParticle(pp2)
+pp2.setAntiParticle(pp1)
+
+lst = [pp3, pp2, pp1]
+
+v1 = Gaudi.Interfaces.IParticlePropertySvc.ParticleProperties()
+
+v1.fromLst(lst)
+
+for pp in v1:
+    print(pp)
+
+print(v1)
+
+lst.sort()
+v1.clear()
+v1.fromLst(lst)
+print(v1)
+
+pid1 = Gaudi.ParticleID(121)
+pid2 = Gaudi.ParticleID(122)
+pid3 = Gaudi.ParticleID(123)
+
+lst2 = [pid3, pid2, pid1]
+
+v2 = Gaudi.ParticleIDs()
+v2.fromLst(lst2)
+print(v2)
+
+lst2.sort()
+
+v2 = Gaudi.ParticleIDs()
+v2.fromLst(lst2)
+print(v2)
+
+for pid in lst2:
+    print(pid, pid.pid())
+
+
+def checkPID(pid):
+    print(pid)
+    print(" isValid     ", pid.isValid())
+    print(" isMeson     ", pid.isMeson())
+    print(" isBaryon    ", pid.isBaryon())
+    print(" isDiQuark   ", pid.isDiQuark())
+    print(" isHadron    ", pid.isHadron())
+    print(" isLepton    ", pid.isLepton())
+    print(" isNucleus   ", pid.isNucleus())
+    print(" hasUp       ", pid.hasUp())
+    print(" hasDown     ", pid.hasDown())
+    print(" hasStrange  ", pid.hasStrange())
+    print(" hasCharm    ", pid.hasCharm())
+    print(" hasBottom   ", pid.hasBottom())
+    print(" hasTop      ", pid.hasTop())
+    print(" hasQuarks   ", pid.hasQuarks())
+    print(" isQuark     ", pid.isQuark())
+    print(" threeCharge ", pid.threeCharge())
+    print(" jSpin       ", pid.jSpin())
+    print(" sSpin       ", pid.sSpin())
+    print(" lSpin       ", pid.lSpin())
+    print(" fundamental ", pid.fundamentalID())
+    print(" extra       ", pid.extraBits())
+    print(" A           ", pid.A())
+    print(" Z           ", pid.Z())
+    print(" nLambda     ", pid.nLambda())
+
+
+lb = Gaudi.ParticleID(5122)
+
+checkPID(lb)
+
+c = Gaudi.ParticleID(Gaudi.ParticleID.charm)
+
+checkPID(c)
+
+nuc = [2212, 1000020040, 1000822080, 450000000]
+for i in nuc:
+    id = Gaudi.ParticleID(i)
+    checkPID(id)
+
+# =============================================================================
+# The END
+# =============================================================================
diff --git a/GaudiPartProp/scripts/ParticleID.py b/GaudiPartProp/scripts/ParticleID.py
new file mode 100644
index 0000000000000000000000000000000000000000..02e7bc059052e96dce44900937cb051ed9fb26b8
--- /dev/null
+++ b/GaudiPartProp/scripts/ParticleID.py
@@ -0,0 +1,70 @@
+#####################################################################################
+# (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations #
+#                                                                                   #
+# This software is distributed under the terms of the Apache version 2 licence,     #
+# copied verbatim in the file "LICENSE".                                            #
+#                                                                                   #
+# In applying this licence, CERN does not waive the privileges and immunities       #
+# granted to it by virtue of its status as an Intergovernmental Organization        #
+# or submit itself to any jurisdiction.                                             #
+#####################################################################################
+# @date 21/03/2018
+# @author Philip Ilten
+# Return the property dictionary for a given Gaudi::ParticleID.
+def properties(pid):
+    from GaudiPartProp.decorators import Gaudi
+
+    pid = Gaudi.ParticleID(pid)
+    return {
+        "isSM": pid.isSM(),
+        "isValid": pid.isValid(),
+        "isMeson": pid.isMeson(),
+        "isBaryon": pid.isBaryon(),
+        "isDiQuark": pid.isDiQuark(),
+        "isHadron": pid.isHadron(),
+        "isLepton": pid.isLepton(),
+        "isNucleus": pid.isNucleus(),
+        "hasUp": pid.hasUp(),
+        "hasDown": pid.hasDown(),
+        "hasStrange": pid.hasStrange(),
+        "hasCharm": pid.hasCharm(),
+        "hasBottom": pid.hasBottom(),
+        "hasTop": pid.hasTop(),
+        "hasBottomPrime": pid.hasBottomPrime(),
+        "hasTopPrime": pid.hasTopPrime(),
+        "isQuark": pid.isQuark(),
+        "hasQuarks": pid.hasQuarks(),
+        "Z": pid.Z(),
+        "A": pid.A(),
+        "nLambda": pid.nLambda(),
+        "threeCharge": pid.threeCharge(),
+        "jSpin": pid.jSpin(),
+        "sSpin": pid.sSpin(),
+        "lSpin": pid.lSpin(),
+    }
+
+
+# Generate the PID dictionary and optionally archive.
+def generate(dat=None):
+    import ParticleProperty
+    import PythiaID
+
+    pids = PythiaID.pids
+    pids.update(ParticleProperty.pids)
+
+    # Loop over the particles and update entries.
+    for pid in pids:
+        pids[pid] = properties(pid)
+
+    # Archive if requested.
+    if dat:
+        with open(dat, "w") as dat:
+            dat.write(repr(pids))
+    return pids
+
+
+# Load the PID dictionary.
+try:
+    pids = eval(open("ParticleID.dat").read())
+except FileNotFoundError:
+    pids = generate("ParticleID.dat")
diff --git a/GaudiPartProp/scripts/ParticleProperty.py b/GaudiPartProp/scripts/ParticleProperty.py
new file mode 100644
index 0000000000000000000000000000000000000000..aca09e83db11573ceaca1186a4cfa3741ce5efe0
--- /dev/null
+++ b/GaudiPartProp/scripts/ParticleProperty.py
@@ -0,0 +1,48 @@
+#####################################################################################
+# (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations #
+#                                                                                   #
+# This software is distributed under the terms of the Apache version 2 licence,     #
+# copied verbatim in the file "LICENSE".                                            #
+#                                                                                   #
+# In applying this licence, CERN does not waive the privileges and immunities       #
+# granted to it by virtue of its status as an Intergovernmental Organization        #
+# or submit itself to any jurisdiction.                                             #
+#####################################################################################
+# @date 21/03/2018
+# @author Philip Ilten
+# Return the property dictionary for a given Gaudi::ParticleProperty.
+def properties(pid):
+    return {
+        "name": pid.name(),
+        "threeCharge": int(round(pid.charge() * 3)),
+        "hasAnti": pid.selfcc(),
+    }
+
+
+# Generate the PID dictionary and optionally archive.
+def generate(dat=None):
+    # The following is misunderstood by flake8 - the import is needed as it
+    # has necessary side effects
+    import GaudiPartProp.PartPropSvc  # noqa: F401
+    from GaudiPython.Bindings import AppMgr
+
+    gaudi = AppMgr()
+    ppsvc = gaudi.gaudiPartProp()
+
+    # Loop over the particles and add entries.
+    pids = {}
+    for pid in ppsvc:
+        pids[pid.pid().pid()] = properties(pid)
+
+    # Archive if requested.
+    if dat:
+        with open(dat, "w") as dat:
+            dat.write(repr(pids))
+    return pids
+
+
+# Load the PID dictionary.
+try:
+    pids = eval(open("ParticleProperty.dat").read())
+except FileNotFoundError:
+    pids = generate("ParticleProperty.dat")
diff --git a/GaudiPartProp/scripts/PythiaID.py b/GaudiPartProp/scripts/PythiaID.py
new file mode 100644
index 0000000000000000000000000000000000000000..75e8f616d9f454792ec799e4ac753b80338cea51
--- /dev/null
+++ b/GaudiPartProp/scripts/PythiaID.py
@@ -0,0 +1,54 @@
+#####################################################################################
+# (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations #
+#                                                                                   #
+# This software is distributed under the terms of the Apache version 2 licence,     #
+# copied verbatim in the file "LICENSE".                                            #
+#                                                                                   #
+# In applying this licence, CERN does not waive the privileges and immunities       #
+# granted to it by virtue of its status as an Intergovernmental Organization        #
+# or submit itself to any jurisdiction.                                             #
+#####################################################################################
+# @date 21/03/2018
+# @author Philip Ilten
+# Return the property dictionary for a given Pythia8::ParticleDataEntry.
+def properties(pid, sgn=1):
+    return {
+        "name": pid.name(sgn),
+        "threeCharge": pid.chargeType(sgn),
+        "hasAnti": pid.hasAnti(),
+        "isLepton": pid.isLepton(),
+        "isQuark": pid.isQuark(),
+        "isDiQuark": pid.isDiquark(),
+        "isHadron": pid.isHadron(),
+        "isMeson": pid.isMeson(),
+        "isBaryon": pid.isBaryon(),
+        "jSpin": pid.spinType(),
+    }
+
+
+# Generate the PID dictionary and optionally archive.
+def generate(dat=None):
+    import pythia8
+
+    pythia = pythia8.Pythia("", False)
+
+    # Loop over the particles.
+    pid, pids = 1, {}
+    while pid != 0:
+        pids[pid] = properties(pythia.particleData.particleDataEntryPtr(pid))
+        if pids[pid]["hasAnti"]:
+            pids[-pid] = properties(pythia.particleData.particleDataEntryPtr(pid), -1)
+        pid = pythia.particleData.nextId(abs(pid))
+
+    # Archive if requested.
+    if dat:
+        with open(dat, "w") as dat:
+            dat.write(repr(pids))
+    return pids
+
+
+# Load the Pythia dictionary.
+try:
+    pids = eval(open("PythiaID.dat").read())
+except FileNotFoundError:
+    pids = generate("PythiaID.dat")
diff --git a/GaudiPartProp/scripts/check_ParticleID.py b/GaudiPartProp/scripts/check_ParticleID.py
new file mode 100755
index 0000000000000000000000000000000000000000..adf4cc249edc9b5045f3a25c7ce450df6843e774
--- /dev/null
+++ b/GaudiPartProp/scripts/check_ParticleID.py
@@ -0,0 +1,53 @@
+#!/usr/bin/env python3
+#####################################################################################
+# (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations #
+#                                                                                   #
+# This software is distributed under the terms of the Apache version 2 licence,     #
+# copied verbatim in the file "LICENSE".                                            #
+#                                                                                   #
+# In applying this licence, CERN does not waive the privileges and immunities       #
+# granted to it by virtue of its status as an Intergovernmental Organization        #
+# or submit itself to any jurisdiction.                                             #
+#####################################################################################
+# @date 21/03/2018
+# @author Philip Ilten
+# Compare the properties from the current ParticleID, archived
+# ParticleID, the Pythia particle database, and the particle property
+# service.
+import ParticleID
+import ParticleProperty
+import PythiaID
+
+props = [prop for prop in ParticleID.properties(1)]
+mthds = ["NEW", "OLD", "PY", "PP"]
+for pid in sorted(ParticleID.pids):
+    base = ParticleID.properties(pid)
+    if not base["isSM"]:
+        continue
+    comps = {"NEW": base, "OLD": ParticleID.pids[pid], "PY": {}, "PP": {}}
+    if pid in PythiaID.pids:
+        comps["PY"] = PythiaID.pids[pid]
+    if pid in ParticleProperty.pids:
+        comps["PP"] = ParticleProperty.pids[pid]
+    difs = [False] * len(props)
+    for idx, prop in enumerate(props):
+        for mthd, comp in comps.iteritems():
+            if mthd in mthds and prop in comp and base[prop] != comp[prop]:
+                difs[idx] = True
+    if True in difs:
+        print("------------------------------------")
+        if "name" in comps["PY"]:
+            print("PYTHIA: " + comps["PY"]["name"])
+        if "name" in comps["PP"]:
+            print("LHCB: " + comps["PP"]["name"])
+        print("%15s" * (len(mthds) + 1) % tuple([str(pid)] + mthds))
+        for prop, dif in zip(props, difs):
+            if not dif:
+                continue
+            vals = [prop]
+            for mthd in mthds:
+                if mthd in comps and prop in comps[mthd]:
+                    vals += [str(comps[mthd][prop])]
+                else:
+                    vals += [""]
+            print("%15s" * (len(vals)) % tuple(vals))
diff --git a/GaudiPartProp/scripts/dump_ParticleProperties.py b/GaudiPartProp/scripts/dump_ParticleProperties.py
new file mode 100755
index 0000000000000000000000000000000000000000..7aeca93255ccd4a8f9a6ac77722e0112c93e5651
--- /dev/null
+++ b/GaudiPartProp/scripts/dump_ParticleProperties.py
@@ -0,0 +1,28 @@
+#!/usr/bin/env python3
+#####################################################################################
+# (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations #
+#                                                                                   #
+# This software is distributed under the terms of the Apache version 2 licence,     #
+# copied verbatim in the file "LICENSE".                                            #
+#                                                                                   #
+# In applying this licence, CERN does not waive the privileges and immunities       #
+# granted to it by virtue of its status as an Intergovernmental Organization        #
+# or submit itself to any jurisdiction.                                             #
+#####################################################################################
+# =============================================================================
+# =============================================================================
+## @file dump_ParticleProperties
+#
+#  Trivial script to dump the particle properties
+#
+#  @date   2010-10-22
+#  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+#
+#  Last modification $Date: 2010-09-10 14:04:49 $
+#                 by $Author: ibelyaev $
+# =============================================================================
+import sys
+
+from GaudiPartProp.DumpParticleProperties import dump
+
+dump([a for a in sys.argv[1:] if "--" != a])
diff --git a/GaudiPartProp/src/CC.cpp b/GaudiPartProp/src/CC.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b996bb0e528d31864f1535a949b7c7067193d9b6
--- /dev/null
+++ b/GaudiPartProp/src/CC.cpp
@@ -0,0 +1,71 @@
+/***********************************************************************************\
+* (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations *
+*                                                                                   *
+* This software is distributed under the terms of the Apache version 2 licence,     *
+* copied verbatim in the file "LICENSE".                                            *
+*                                                                                   *
+* In applying this licence, CERN does not waive the privileges and immunities       *
+* granted to it by virtue of its status as an Intergovernmental Organization        *
+* or submit itself to any jurisdiction.                                             *
+\***********************************************************************************/
+#include <Gaudi/Decays/CC.h>
+
+namespace Decays = Gaudi::Decays;
+
+/** @file
+ *  Implementation file for namespace Decays::CC
+ *  @date 2008-12-13
+ *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+ */
+namespace {
+  /** simple function to make charge conjugated inside the original string.
+   *  All substrings are substituted by their charge conjugates
+   *  @param decay the original string
+   *  @param map_  the full map of substitutions
+   *  @param pos   the starting position
+   *  @return charge-conjugated string
+   */
+  inline std::string cc_( const std::string& decay, const Decays::CC::MapCC& map_,
+                          const std::string::size_type pos = 0 ) {
+    // check the validity of position
+    if ( pos >= decay.size() ) { return decay; }
+    // find the match:
+    auto                              _p = std::string::npos;
+    Decays::CC::MapCC::const_iterator _i = map_.end();
+    // look for the "nearest" and "longest" match
+    for ( auto ic = map_.begin(); map_.end() != ic; ++ic ) {
+      // find the particle
+      std::string::size_type p = decay.find( ic->first, pos );
+      // match?
+      if ( std::string::npos == p ) { continue; }
+      // find the nearest match
+      if ( p < _p ) {
+        _p = p;
+        _i = ic;
+      }
+    }
+    // no match at all.
+    if ( std::string::npos == _p || map_.end() == _i ) { return decay; }
+
+    // replace
+    std::string aux = decay;
+    aux.replace( _p, _i->first.size(), _i->second );
+
+    // advance the position
+    _p += _i->second.size();
+    // ... and start the recursion here
+    return _p < aux.size() ? cc_( aux, map_, _p ) : aux;
+  }
+} // namespace
+/* simple function to make charge conjugated inside the original string.
+ *  All substrings are substituted by their charge conjugates
+ *  @param decay the original string
+ *  @param map_  the full map of substitutions
+ *  @return charge-conjugated string
+ */
+
+std::string Decays::CC::cc( const std::string& decay, const Decays::CC::MapCC& map_ ) { return cc_( decay, map_ ); }
+
+std::string Decays::CC::cc( const std::string& decay, const std::map<std::string, std::string>& map_ ) {
+  return cc_( decay, { map_.begin(), map_.end() } );
+}
diff --git a/GaudiPartProp/src/Decay.cpp b/GaudiPartProp/src/Decay.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..68a2f972611b1d68cc2c55af797c8af081989514
--- /dev/null
+++ b/GaudiPartProp/src/Decay.cpp
@@ -0,0 +1,177 @@
+/***********************************************************************************\
+* (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations *
+*                                                                                   *
+* This software is distributed under the terms of the Apache version 2 licence,     *
+* copied verbatim in the file "LICENSE".                                            *
+*                                                                                   *
+* In applying this licence, CERN does not waive the privileges and immunities       *
+* granted to it by virtue of its status as an Intergovernmental Organization        *
+* or submit itself to any jurisdiction.                                             *
+\***********************************************************************************/
+#include <Gaudi/Decays/Decay.h>
+#include <Gaudi/Interfaces/IParticlePropertySvc.h>
+#include <Gaudi/ParticleID.h>
+#include <Gaudi/ParticleProperty.h>
+#include <sstream>
+
+namespace Decays = Gaudi::Decays;
+
+/** @file
+ *  Implementation file for class Decays::Decay
+ *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+ *  @date 2008-03-31
+ */
+Decays::Decay::Item::Item( const Gaudi::ParticleProperty* pp ) : m_pp( pp ) {
+  if ( m_pp ) {
+    m_name = m_pp->particle();
+    m_pid  = m_pp->particleID();
+  }
+}
+
+Decays::Decay::Item::Item( const std::string& name ) : m_name( name ) {}
+
+Decays::Decay::Item::Item( const Gaudi::ParticleID& pid ) : m_pid( pid ) {}
+
+StatusCode Decays::Decay::Item::validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const {
+  if ( m_pp ) {
+    m_name = m_pp->particle();
+    m_pid  = m_pp->particleID();
+    return StatusCode::SUCCESS;
+  }
+  // it not possible to validate it!
+  if ( 0 == svc ) { return StatusCode::FAILURE; }
+  // check by name
+  if ( !m_name.empty() ) {
+    m_pp = svc->find( m_name );
+    if ( !m_pp ) { return StatusCode::FAILURE; }
+    m_pid = m_pp->particleID();
+    return StatusCode::SUCCESS;
+  }
+  // check by PID
+  if ( Gaudi::ParticleID() != m_pid ) {
+    m_pp = svc->find( m_pid );
+    if ( !m_pp ) { return StatusCode::FAILURE; }
+    m_name = m_pp->particle();
+    return StatusCode::SUCCESS;
+  }
+  return StatusCode::FAILURE;
+}
+
+StatusCode Decays::Decay::Item::validate( const Gaudi::ParticleProperty* pp ) const {
+  if ( m_pp && !pp ) {
+    m_name = m_pp->particle();
+    m_pid  = m_pp->particleID();
+    return StatusCode::SUCCESS;
+  } else if ( pp ) {
+    m_pp   = pp;
+    m_name = m_pp->particle();
+    m_pid  = m_pp->particleID();
+    return StatusCode::SUCCESS;
+  }
+  return StatusCode::FAILURE;
+}
+
+Decays::Decay::Decay( const Gaudi::ParticleProperty*                     mother,
+                      const std::vector<const Gaudi::ParticleProperty*>& daughters )
+    : m_mother( mother ) {
+  setDaughters( daughters );
+}
+
+Decays::Decay::Decay( const std::string& mother, const std::vector<std::string>& daughters ) : m_mother( mother ) {
+  setDaughters( daughters );
+}
+
+Decays::Decay::Decay( const Gaudi::ParticleID& mother, const std::vector<Gaudi::ParticleID>& daughters )
+    : m_mother( mother ) {
+  setDaughters( daughters );
+}
+
+Decays::Decay::Decay( const Decays::Decay::Item& mother, const std::vector<Decays::Decay::Item>& daughters )
+    : m_mother( mother ), m_daughters( daughters ) {}
+
+StatusCode Decays::Decay::validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const {
+  // validate the mother
+  StatusCode sc = m_mother.validate( svc );
+  if ( sc.isFailure() ) { return sc; }
+  if ( m_daughters.empty() ) { return StatusCode::FAILURE; }
+  // loop over daughters
+  for ( auto idau = m_daughters.begin(); m_daughters.end() != idau; ++idau ) {
+    sc = idau->validate( svc );
+    if ( sc.isFailure() ) { return sc; }
+  }
+  return sc;
+}
+
+std::ostream& Decays::Decay::fillStream( std::ostream& s ) const {
+  m_mother.fillStream( s );
+  if ( m_daughters.empty() ) { return s; }
+  s << "->";
+  // loop over daughters
+  for ( const auto& dau : m_daughters ) { dau.fillStream( s ); }
+  return s;
+}
+
+std::ostream& Decays::Decay::Item::fillStream( std::ostream& s ) const {
+  if ( m_name.empty() ) {
+    if ( m_pp ) {
+      m_name = m_pp->particle();
+    } else if ( Gaudi::ParticleID() != m_pid ) {
+      return s << ' ' << m_pid.pid() << ' ';
+    } else {
+      return s << " ? ";
+    }
+  }
+  return s << ' ' << m_name << ' ';
+}
+
+std::string Decays::Decay::toString() const {
+  std::ostringstream s;
+  fillStream( s );
+  return s.str();
+}
+
+void Decays::Decay::setDaughters( const std::vector<const Gaudi::ParticleProperty*>& daugs ) {
+  m_daughters.clear();
+  for ( const auto& pp : daugs ) *this += pp;
+}
+
+void Decays::Decay::setDaughters( const std::vector<std::string>& daugs ) {
+  m_daughters.clear();
+  for ( const auto& pp : daugs ) *this += pp;
+}
+
+void Decays::Decay::setDaughters( const std::vector<Gaudi::ParticleID>& daugs ) {
+  m_daughters.clear();
+  for ( const auto& pp : daugs ) *this += pp;
+}
+
+void Decays::Decay::setDaughters( const Decays::Decay::Items& daugs ) { m_daughters = daugs; }
+
+Decays::Decay& Decays::Decay::operator+=( const std::string& child ) { return ( *this ) += Item( child ); }
+
+Decays::Decay& Decays::Decay::operator+=( const Gaudi::ParticleID& child ) { return ( *this ) += Item( child ); }
+
+Decays::Decay& Decays::Decay::operator+=( const Gaudi::ParticleProperty* child ) { return ( *this ) += Item( child ); }
+
+Decays::Decay& Decays::Decay::operator+=( const Decays::Decay::Item& child ) {
+  m_daughters.push_back( child );
+  return *this;
+}
+
+/*  get the component by the number
+ *  @attention index 0 corresponds to the mother particle
+ *  @param index the index (0 corresponds to the mother particle)
+ *  @return the component
+ */
+const Decays::Decay::Item& Decays::Decay::operator()( const unsigned int index ) const {
+  if ( 0 == index ) { return m_mother; }
+  return m_daughters[index - 1];
+}
+
+void Decays::Decay::setMother( const Decays::Decay::Item& mom ) { m_mother = mom; }
+
+void Decays::Decay::setMother( const Gaudi::ParticleProperty* mom ) { setMother( Item( mom ) ); }
+
+void Decays::Decay::setMother( const Gaudi::ParticleID& mom ) { setMother( Item( mom ) ); }
+
+void Decays::Decay::setMother( const std::string& mom ) { setMother( Item( mom ) ); }
diff --git a/GaudiPartProp/src/IParticlePropertySvc.cpp b/GaudiPartProp/src/IParticlePropertySvc.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b876f04e53794519268f0898650cdfdebbbee939
--- /dev/null
+++ b/GaudiPartProp/src/IParticlePropertySvc.cpp
@@ -0,0 +1,204 @@
+/***********************************************************************************\
+* (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations *
+*                                                                                   *
+* This software is distributed under the terms of the Apache version 2 licence,     *
+* copied verbatim in the file "LICENSE".                                            *
+*                                                                                   *
+* In applying this licence, CERN does not waive the privileges and immunities       *
+* granted to it by virtue of its status as an Intergovernmental Organization        *
+* or submit itself to any jurisdiction.                                             *
+\***********************************************************************************/
+#include <Gaudi/Interfaces/IParticlePropertySvc.h>
+#include <Gaudi/ParticleID.h>
+#include <Gaudi/ParticleProperty.h>
+#include <algorithm>
+
+/** @file
+ *  Implementation file for class Gaudi::Interfaces::IParticlePropertySvc
+ *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+ *  @date 2008-08-03
+ */
+
+/* helper utility for mapping of Gaudi::ParticleProperty object into
+ *  non-negative integral sequential identifier
+ *
+ *  This appears to be useful operation, but since it is
+ *  "pure technical" it does not appear as interface method.
+ *
+ *  For invalid/missing property and/or  service
+ *  <c>0</c> is returned. The valid result is always
+ *  satisfy the condition: <c> index <= service->size() </c>
+ *
+ *  @param property the property to be mapped
+ *  @param service the service
+ *  @return the sequential non-negative index
+ *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+ *  @date   2008-08-03
+ */
+
+size_t Gaudi::ParticleProperties::index( const Gaudi::ParticleProperty*                 property,
+                                         const Gaudi::Interfaces::IParticlePropertySvc* service ) {
+  if ( !property || !service ) { return 0; }
+
+  auto first = service->begin();
+  auto last  = service->end();
+  // start the binary_search
+  static constexpr auto cmp   = Gaudi::ParticleProperty::Compare();
+  auto                  ifind = std::lower_bound( first, last, property, cmp );
+  return last != ifind && !cmp( *ifind, property ) ? ( ifind - first + 1 ) : 0;
+}
+
+/* helper utility for mapping of Gaudi::ParticleID object into
+ *  non-negative integral sequential identifier
+ *
+ *  This appears to be useful operation, but since it is
+ *  "pure technical" it does not appear as interface method.
+ *
+ *  For invalid/missing PID and/or  service
+ *  <c>0</c> is returned. The valid result is always
+ *  satisfy the condition: <c> index <= service->size() </c>
+ *
+ *  @param pid the object to be mapped
+ *  @param service the service
+ *  @return the sequential non-negative index
+ *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+ *  @date   2008-08-03
+ */
+size_t Gaudi::ParticleProperties::index( const Gaudi::ParticleID&                       pid,
+                                         const Gaudi::Interfaces::IParticlePropertySvc* service ) {
+  if ( !service ) { return 0; }
+  const Gaudi::ParticleProperty* pp = service->find( pid );
+  return pp ? Gaudi::ParticleProperties::index( pp, service ) : 0;
+}
+
+/* the inverse mapping of the integer sequential number onto
+ *  Gaudi::ParticleID object
+ *
+ *  This appears to be useful operation, but since it is
+ *  "pure technical" it does not appear as interface method.
+ *
+ *  For invalid/missing PID and/or  service
+ *  <c>NULL</c> is returned.
+ *
+ *  @param pid the object to be mapped
+ *  @param service the service
+ *  @return the sequential non-negative index
+ *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+ *  @date   2008-08-03
+ */
+const Gaudi::ParticleProperty*
+Gaudi::ParticleProperties::particle( const size_t index, const Gaudi::Interfaces::IParticlePropertySvc* service ) {
+  if ( 0 == index || !service ) { return nullptr; }
+  // get the iterators from the service
+  auto first = service->begin();
+  auto last  = service->end();
+  if ( index > (size_t)std::distance( first, last ) ) { return 0; }
+  std::advance( first, index - 1 );
+  return *first;
+}
+
+/*  the inverse mapping of the integer sequential number onto
+ *  Gaudi::ParticleID object
+ *
+ *  This appears to be useful operation, but since it is
+ *  "pure technical" it does not appear as interface method.
+ *
+ *  For invalid/missing index and/or  service
+ *  <c>Gaudi::ParticleID()</c> is returned.
+ *
+ *  @param pid the object to be mapped
+ *  @param service the service
+ *  @return the sequential non-negative index
+ *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+ *  @date   2008-08-03
+ */
+
+const Gaudi::ParticleID
+Gaudi::ParticleProperties::particleID( const size_t index, const Gaudi::Interfaces::IParticlePropertySvc* service ) {
+  if ( 0 == index || !service ) { return Gaudi::ParticleID(); }
+  const Gaudi::ParticleProperty* pp = Gaudi::ParticleProperties::particle( index, service );
+  return pp ? pp->particleID() : Gaudi::ParticleID();
+}
+
+/* mapping by pythiaID
+ *
+ *  @code
+ *
+ *   const int pythiaID = ... ;
+ *
+ *   const Gaudi::Interfaces::IParticlePropertySvc* svc = ... ;
+ *
+ *   const Gaudi::ParticleProeprty* pp = byPythiaID( pythiaID , svc ) ;
+ *
+ *  @endcode
+ *
+ *  @attention the method is not very efficient and should not be abused
+ *  @see Gaudi::ParticleProperties::particle
+ *  @param pythia pythia identifier
+ *  @param svc    pointer to particle property service
+ *  @return the particle property for the given pythia ID
+ *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+ *  @date   2008-08-03
+ */
+const Gaudi::ParticleProperty*
+Gaudi::ParticleProperties::byPythiaID( const int pythia, const Gaudi::Interfaces::IParticlePropertySvc* svc ) {
+  if ( !svc ) { return nullptr; }
+  // to be efficient
+  // 1) try to use PDG-ID (fast, logarithmic search)
+  const Gaudi::ParticleProperty* pp = svc->find( Gaudi::ParticleID( pythia ) );
+  // 2) check the proper pythia ID
+  if ( pp && pythia == pp->pythiaID() ) { return pp; }
+  // 3) use the regular (linear search)
+  auto begin = svc->begin();
+  auto end   = svc->end();
+  auto found =
+      std::find_if( begin, end, [&]( const Gaudi::ParticleProperty* pp ) { return pp->pythiaID() == pythia; } );
+  return found != end ? *found : nullptr;
+}
+
+/*  mapping by EvtGen-name
+ *
+ *  @code
+ *
+ *   const std::string& evtGen = ...
+ *
+ *   const Gaudi::Interfaces::IParticlePropertySvc* svc = ... ;
+ *
+ *   const Gaudi::ParticleProperty* pp = byEvtGenName ( evtGen , svc ) ;
+ *
+ *  @endcode
+ *
+ *  @attention the method is not very efficient and should not be abused
+ *  @see Gaudi::ParticleProperties::particle
+ *  @param evtGen the particle naem in EvtGen-generator
+ *  @param svc    pointer to particle property service
+ *  @return the particle property for the given EvtGen-name
+ *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+ *  @date   2008-08-03
+ */
+const Gaudi::ParticleProperty*
+Gaudi::ParticleProperties::byEvtGenName( const std::string&                             evtGen,
+                                         const Gaudi::Interfaces::IParticlePropertySvc* svc ) {
+  if ( !svc ) { return nullptr; }
+  // to be more efficient:
+  // 1) try to use the regular name (fast, logarithmic search)
+  const Gaudi::ParticleProperty* pp = svc->find( evtGen );
+  // 2) check the proper evtgen name
+  if ( pp && evtGen == pp->evtGen() ) { return pp; }
+  // 3) use the regular (linear search)
+  auto begin = svc->begin();
+  auto end   = svc->end();
+  auto found = std::find_if( begin, end, [&]( const Gaudi::ParticleProperty* pp ) { return pp->evtGen() == evtGen; } );
+  //
+  return found != end ? *found : nullptr;
+}
+
+/*  get all the properties at once
+ *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+ *  @date   2008-08-03
+ */
+Gaudi::Interfaces::IParticlePropertySvc::ParticleProperties
+Gaudi::ParticleProperties::allProperties( const Gaudi::Interfaces::IParticlePropertySvc* service ) {
+  return service ? Gaudi::Interfaces::IParticlePropertySvc::ParticleProperties( service->begin(), service->end() )
+                 : Gaudi::Interfaces::IParticlePropertySvc::ParticleProperties();
+}
diff --git a/GaudiPartProp/src/Module/ParticlePropertySvc.cpp b/GaudiPartProp/src/Module/ParticlePropertySvc.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ed53689e3e2b312892e590d0d81d20a76a709acd
--- /dev/null
+++ b/GaudiPartProp/src/Module/ParticlePropertySvc.cpp
@@ -0,0 +1,671 @@
+/***********************************************************************************\
+* (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations *
+*                                                                                   *
+* This software is distributed under the terms of the Apache version 2 licence,     *
+* copied verbatim in the file "LICENSE".                                            *
+*                                                                                   *
+* In applying this licence, CERN does not waive the privileges and immunities       *
+* granted to it by virtue of its status as an Intergovernmental Organization        *
+* or submit itself to any jurisdiction.                                             *
+\***********************************************************************************/
+#include <Gaudi/Decays/CC.h>
+#include <Gaudi/Decays/Symbols.h>
+#include <Gaudi/Interfaces/IParticlePropertySvc.h>
+#include <Gaudi/ParticleID.h>
+#include <Gaudi/ParticleProperty.h>
+#include <GaudiKernel/IFileAccess.h>
+#include <GaudiKernel/ISvcLocator.h>
+#include <GaudiKernel/MsgStream.h>
+#include <GaudiKernel/PhysicalConstants.h>
+#include <GaudiKernel/Service.h>
+#include <GaudiKernel/VectorMap.h>
+#include <algorithm>
+#include <boost/algorithm/string.hpp>
+#include <cstdlib>
+#include <fstream>
+#include <functional>
+#include <iostream>
+#include <set>
+
+/** @file
+ *  Simple implementation of class Gaudi::ParticlePropertySvc
+ *  @author      : I. Last
+ *  - Modified by  G.Corti 09/11/1999 to read file from LHCBDBASE and
+ *                 introduce find/eraseByStdHepID methods
+ *  - Modifies by Vanya BELYAEV to allow readig of additional files to
+ *                add/replace/modify the existing particle properties
+ */
+namespace {
+  std::string defaultFilename() { // the main file with particle properties
+    auto* root = getenv( "PARAMFILESROOT" );
+    return root ? std::string{ root } + "/data/ParticleTable.txt" : std::string{ "./ParticleTable.txt" };
+  }
+} // namespace
+namespace Gaudi {
+  /** @class ParticlePropertySvc ParticlePropertySvc.cpp
+   *
+   *  This service provides access to particle properties.
+   *  The settable property of this service is the
+   *  ParticlePropertiesFile, an ASCII file containing the
+   *  list of properties for the particles.
+   *  The default file is:
+   *      "$PARAMFILESROOT/data/ParticleTable.txt"
+   *      or if $PARAMFILESROOT is not defined
+   *      "ParticleTable.txt"
+   *
+   *  @author Iain Last
+   *  @author Gloria Corti
+   *  @author Vanya BELYAEV
+   *  @date 2006-09-22
+   *
+   *  1) Modified to add possibility to redefine properties of existing
+   *  particles and to read addiitonal files.
+   *  New propeety "OtherFiles" (default is empty vector) is introduces.
+   *  Service parsed additional files after the main one.
+   *
+   *    @code
+   *
+   *    // read the additional files with particle properties
+   *    ParticlePropertySvc.OtherFiles += {
+   *       "$SOMELOCATION1/file1.txt" ,
+   *       "$SOMELOCATION2/file2.txt"
+   *    } ;
+   *
+   *    @endcode
+   *
+   *  2) Add possibility to modify only certain partiles through the
+   *  new property "Particles"  (default is enpty list),
+   *  Each line is interpreted as a line in particle data table, e.g.
+   *
+   *   @code
+   *
+   *   // redefine the properties of H_20 and H_30 particles:
+   *   ParticlePropertySvc.Particles = {
+   *       "H_20 88 35 0.0 120.0 9.4e-26 Higgs'0 35 0.0e+00" ,
+   *       "H_30 89 36 0.0  40.0 1.0e-12      A0 36 0.0e+00"
+   *     } ;
+   *
+   *   @endcode
+   *
+   *  The replaces/modified particles are reported.
+   */
+  struct ParticlePropertySvc final : public extends<Service, Gaudi::Interfaces::IParticlePropertySvc> {
+    /** get the begin-iterator for the container of particle properties
+     *  It is assumed that the container is properly ordered
+     *  @return begin-iterator for the container of particle properties
+     */
+    iterator begin() const override { return m_vector.begin(); }
+    /** get the end-iterator for the container of particle properties
+     *  It is assumed that the container is properly ordered
+     *  @return end-iterator for the container of particle properties
+     */
+    iterator end() const override { return m_vector.end(); }
+    /// get the container size.
+    size_t size() const override { return m_vector.size(); }
+    /** Retrieve an object by name:
+     *
+     *  @code
+     *
+     *   Gaudi::Interfaces::IParticlePropertySvc* svc = ... ;
+     *
+     *   const std::string& name = ... ;
+     *
+     *   const Gaudi::ParticleProperty*  pp = svc -> find ( name ) ;
+     *
+     *  @endcode
+     *  @param name the particle name
+     *  @return pointer to particle property object
+     */
+    const Gaudi::ParticleProperty* find( const std::string& name ) const override { return m_nameMap( name ); }
+    /** Retrieve an object by PID:
+     *
+     *  @code
+     *
+     *   Gaudi::Interfaces::IParticlePropertySvc* svc = ... ;
+     *
+     *   const Gaudi::ParticleID& pid = ... ;
+     *
+     *   const Gaudi::ParticleProperty*  pp = svc -> find ( pid ) ;
+     *
+     *  @endcode
+     *  @param name the particle name
+     *  @return pointer to particle property object
+     */
+    const Gaudi::ParticleProperty* find( const Gaudi::ParticleID& pid ) const override { return m_pidMap( pid ); }
+
+    /** make the charge conjugation for the string/decay descriptor
+     *
+     *  @code
+     *
+     *   std::string decay = "B0 -> pi+ pi-" ;
+     *
+     *   Gaudi::IParticleProeprtySvc* svc = ... ;
+     *
+     *   std::string cc = svc -> cc ( decay ) ;
+     *
+     *  @endcode
+     *
+     *  @param decay the decay descriptor
+     *  @return the charge conjugation for the decay descriptor
+     */
+    std::string cc( const std::string& decay ) const override;
+
+    /// Initialize the service.
+    StatusCode initialize() override;
+
+    /** Standard Constructor.
+     *  @param  name   service instance name
+     *  @param  pSvc   pointer to service locator `
+     */
+    ParticlePropertySvc( const std::string& name, // the service instance name
+                         ISvcLocator*       pSvc )      // the Service Locator
+        : base_class( name, pSvc ) {}
+
+    /** the action  in the case of interactive manipulation with properties:
+     *   - no action if the internal data is not yet build
+     *   - else rebuild the internal data
+     *  Such action will allow more flexible interactive configuration
+     *  of the service
+     *  @param p the updated property
+     */
+    void updateHandler( Gaudi::Details::PropertyBase& p );
+
+    /** the action  in the case of interactive manipulation with properties:
+     *  of the service
+     *  @param p the updated property
+     */
+    void updateDump( Gaudi::Details::PropertyBase& p );
+    /** the action  in the case of interactive manipulation with properties:
+     *  of the service
+     *  @param p the updated property
+     */
+    void updateCC( Gaudi::Details::PropertyBase& p );
+    /// dump the table of particle properties
+    void dump();
+
+    /** rebuild the Particle Property Data
+     *   - clear existing containers
+     *   - parse main file
+     *   - parse additional files
+     *   - parse the specific options
+     *   - set particle<->antiparticle links
+     *   @return status code
+     */
+    StatusCode rebuild();
+
+    /** parse the file
+     *  @param file the file name to be parsed
+     *  @return status code
+     */
+    StatusCode parse( const std::string& file );
+    /** parse the line
+     *  @param line the line to be parsed
+     *  @return status code
+     */
+    StatusCode parseLine( const std::string& line );
+
+    /** add new particle (or redefine the existing one)
+     *  @param pname  the particle  name
+     *  @param pid    the particle ID
+     *  @param charge the particle charge
+     *  @param mass   the particle mass
+     *  @param tlife  the particle tlife
+     *  @param maxWidth the particle max-width
+     *  @param evtgen the name for EvtGen
+     *  @param pythia the ID for pythia generator
+     */
+    StatusCode addParticle( const std::string& pname, const Gaudi::ParticleID& pid, const double charge,
+                            const double mass, const double tlife, const double maxWidth, const std::string& evtgen,
+                            const int pythia );
+
+    /** set properly particle<-->antiparticle relations
+     *  @return status code
+     */
+    StatusCode setAntiParticles();
+
+    /// check the difference of two properties and fill corresponding sets
+    bool diff( const Gaudi::ParticleProperty& n, const Gaudi::ParticleProperty& o );
+
+    /// the actual storage of all properties
+    typedef std::set<std::unique_ptr<Gaudi::ParticleProperty>> Set;
+    /// the actual type of map: { "name" : "property" }
+    typedef GaudiUtils::VectorMap<std::string, const Gaudi::ParticleProperty*> NameMap;
+    /// the actual type of map: { "pid"  : "property" }
+    typedef GaudiUtils::VectorMap<Gaudi::ParticleID, const Gaudi::ParticleProperty*> PidMap;
+    typedef Gaudi::Interfaces::IParticlePropertySvc::ParticleProperties              Vector;
+    /// the actual storage of all particle properties
+    Set m_set;
+    /// "visible" data (the ordered container)
+    Vector m_vector;
+    /// Map:   { "name" : "property" }
+    NameMap m_nameMap;
+    /// Map:   { "pid"  : "property" }
+    PidMap m_pidMap;
+    /// dump the table?
+    Gaudi::Property<bool> m_dump{ this, "Dump", false, &Gaudi::ParticlePropertySvc::updateDump,
+                                  "Dump all properties in a table format" };
+
+    /// the actual type for the list of files
+    typedef std::vector<std::string> Files;
+    /// the actual type for the list of particle properties (strings)
+    typedef std::vector<std::string> Particles;
+    /// the main file with particle properties
+    Gaudi::Property<std::string> m_filename{ this, "ParticlePropertiesFile", defaultFilename(),
+                                             &Gaudi::ParticlePropertySvc::updateHandler,
+                                             "The name of 'main' particle properties file" };
+    /// additional files
+    Gaudi::Property<Files> m_other{ this,
+                                    "OtherFiles",
+                                    {},
+                                    &Gaudi::ParticlePropertySvc::updateHandler,
+                                    "The (optional) list of additional files with the particle data" };
+    /// properties to be redefined explicitly
+    Gaudi::Property<Particles> m_particles{ this,
+                                            "Particles",
+                                            {},
+                                            &Gaudi::ParticlePropertySvc::updateHandler,
+                                            "The (optional) list of special particle properties" };
+
+    /// the CC-map
+    mutable Decays::CC::MapCC m_ccMap;
+    /// CC-map for properties
+    Gaudi::Property<std::map<std::string, std::string>> m_ccmap_{
+        this, "ChargeConjugations", Decays::Symbols::instance().cc(), &Gaudi::ParticlePropertySvc::updateCC,
+        "The map of charge-conjugation & protected symbols" };
+
+    typedef std::set<std::string>       NameSet;
+    typedef std::set<Gaudi::ParticleID> PidSet;
+
+    NameSet m_by_charge;
+    NameSet m_by_mass;
+    NameSet m_by_tlife;
+    NameSet m_by_width;
+    NameSet m_by_evtgen;
+    NameSet m_by_pythia;
+
+    NameSet m_replaced_names;
+    PidSet  m_replaced_pids;
+    NameSet m_no_anti;
+
+    Vector m_modified;
+  };
+} // namespace Gaudi
+
+StatusCode Gaudi::ParticlePropertySvc::initialize() {
+  // 1) initialize the base
+  StatusCode sc = Service::initialize();
+  if ( sc.isFailure() ) { return sc; }
+  // 2) create the log
+  MsgStream log( msgSvc(), name() );
+  // 3) rebuild everything
+  sc = rebuild();
+  log << MSG::INFO << "Initialising Gaudi ParticlePropertySvc" << endmsg;
+  if ( sc.isFailure() ) {
+    log << MSG::ERROR << " Unable to initialize the internal structures " << endmsg;
+    return sc;
+  }
+
+  m_by_charge.clear();
+  m_by_mass.clear();
+  m_by_tlife.clear();
+  m_by_width.clear();
+  m_by_evtgen.clear();
+  m_by_pythia.clear();
+  m_replaced_names.clear();
+  m_replaced_pids.clear();
+  m_no_anti.clear();
+
+  m_ccMap.clear();
+
+  if ( m_dump.value() || msgLevel( MSG::DEBUG ) ) { dump(); }
+
+  return StatusCode::SUCCESS;
+}
+
+/* rebuild the Particle Property Data
+ *   - clear existing containers
+ *   - parse main file
+ *   - parse additional files
+ *   - parse the specific options
+ *   - set particle<->antiparticle links
+ *   @return status code
+ */
+StatusCode Gaudi::ParticlePropertySvc::rebuild() {
+  // clear all existing containers
+  m_nameMap.clear();
+  m_pidMap.clear();
+  m_vector.clear();
+  m_ccMap.clear();
+
+  // parse the main file
+  StatusCode sc = parse( m_filename.value() );
+  if ( sc.isFailure() ) { return sc; }
+  // parse the additional files
+  for ( const auto& file : m_other.value() ) {
+    if ( sc = parse( file ); sc.isFailure() ) { return sc; }
+  }
+  // parse the options/lines
+  m_modified.clear();
+  for ( const auto& line : m_particles.value() ) {
+    if ( sc = parseLine( line ); sc.isFailure() ) { return sc; }
+  }
+  // sort the vector
+  std::stable_sort( m_vector.begin(), m_vector.end(), Gaudi::ParticleProperty::Compare() );
+  // set particle<-->antiparticle links
+  sc = setAntiParticles();
+  if ( sc.isFailure() ) { return sc; }
+  // some debug printout
+  if ( msgLevel( MSG::DEBUG ) ) {
+    debug() << " All:   " << m_vector.size() << " By Name: " << m_nameMap.size() << " By PID: " << m_pidMap.size()
+            << " Total: " << m_set.size() << endmsg;
+  }
+
+  if ( !m_modified.empty() ) {
+    auto& log = always();
+    log << " New/updated particles (from \"Particles\" property)" << std::endl;
+    Gaudi::ParticleProperties::printAsTable( m_modified, log, this );
+    log << endmsg;
+    m_modified.clear();
+  }
+
+  if ( !m_by_charge.empty() ) {
+    info() << " Charge   has beed redefined for " << Gaudi::Utils::toString( m_by_charge ) << endmsg;
+  }
+  if ( !m_by_mass.empty() ) {
+    info() << " Mass     has beed redefined for " << Gaudi::Utils::toString( m_by_mass ) << endmsg;
+  }
+  if ( !m_by_tlife.empty() ) {
+    info() << " Lifetime has beed redefined for " << Gaudi::Utils::toString( m_by_tlife ) << endmsg;
+  }
+  if ( !m_by_width.empty() ) {
+    info() << " MaxWidth has beed redefined for " << Gaudi::Utils::toString( m_by_width ) << endmsg;
+  }
+  if ( !m_by_evtgen.empty() ) {
+    info() << " EvtGenID has beed redefined for " << Gaudi::Utils::toString( m_by_evtgen ) << endmsg;
+  }
+  if ( !m_by_pythia.empty() ) {
+    info() << " PythiaID has beed redefined for " << Gaudi::Utils::toString( m_by_pythia ) << endmsg;
+  }
+  if ( !m_replaced_names.empty() ) {
+    info() << " Replaced names : " << Gaudi::Utils::toString( m_replaced_names ) << endmsg;
+  }
+  if ( !m_replaced_pids.empty() ) {
+    info() << " Replaced PIDs  : " << Gaudi::Utils::toString( m_replaced_pids ) << endmsg;
+  }
+  if ( !m_no_anti.empty() ) { info() << " No anti particle : " << Gaudi::Utils::toString( m_no_anti ) << endmsg; }
+
+  return StatusCode::SUCCESS;
+}
+
+/*  the action  in the case of interactive manipulation with properties:
+ *   - no action if the internal data is not yet build
+ *   - else rebuild the internal data
+ *  Such action will allow more flexible interactive configuration
+ *  of the service
+ */
+void Gaudi::ParticlePropertySvc::updateHandler( Gaudi::Details::PropertyBase& p ) {
+  if ( FSMState() < Gaudi::StateMachine::INITIALIZED ) { return; }
+
+  info() << "Property triggers the update of internal Particle Property Data : " << p << endmsg;
+  // rebuild the internal data
+  StatusCode sc = rebuild();
+  if ( sc.isFailure() ) {
+    throw GaudiException( "Can't rebuild Particle Properties Data", "*ParticlePropertySvc*", sc );
+  }
+  // clear CC-map
+  m_ccMap.clear();
+}
+
+//  the action  in the case of redefinition of "ChargeConjugates"
+void Gaudi::ParticlePropertySvc::updateCC( Gaudi::Details::PropertyBase& ) { m_ccMap.clear(); }
+
+/* the action  in the case of interactive manipulation with properties:
+ *  of the service
+ *  @param p the updated property
+ */
+void Gaudi::ParticlePropertySvc::updateDump( Gaudi::Details::PropertyBase& ) {
+  if ( FSMState() < Gaudi::StateMachine::INITIALIZED ) { return; }
+  dump();
+}
+
+StatusCode Gaudi::ParticlePropertySvc::parse( const std::string& file ) {
+  auto fileAccess = service<IFileAccess>( "VFSSvc" );
+  if ( !fileAccess ) {
+    error() << "Unable to locate IFileAccess('VFSSvc') service" << endmsg;
+    return StatusCode::FAILURE;
+  }
+  // "open" the file
+  auto infile = fileAccess->open( file );
+  if ( !infile.get() ) {
+    error() << "Unable to open file '" << file << "'" << endmsg;
+    return StatusCode::FAILURE;
+  }
+  info() << "Opened particle properties file : " << file << endmsg;
+  bool active = false;
+  // read the file line-by-line
+  while ( *infile ) {
+    std::string line;
+    std::getline( *infile, line );
+    // comment lines start with '#'
+    if ( line[0] == '#' ) { continue; }
+    // skip empty lines:
+    if ( line.empty() ) { continue; }
+    //
+    if ( !active ) {
+      if ( "PARTICLE" == boost::to_upper_copy( boost::trim_copy( line ) ) ) {
+        active = true;
+        continue;
+      }
+    } else {
+      if ( "END PARTICLE" == boost::to_upper_copy( boost::trim_copy( line ) ) ) {
+        active = false;
+        continue;
+      }
+    }
+
+    if ( !active ) { continue; } // skip the lines if not active
+    // parse the line
+    if ( auto sc = parseLine( line ); sc.isFailure() ) {
+      error() << "Unable to parse the file '" << file << "'" << endmsg;
+      return sc;
+    }
+  }
+
+  return StatusCode::SUCCESS;
+}
+
+/*  parse the line
+ *  the format of the line is defined by old SICB CDF
+ *  @param line the line to be parsed
+ *  @return status code
+ */
+StatusCode Gaudi::ParticlePropertySvc::parseLine( const std::string& line ) {
+  // get the input stream  from the line :
+  std::istringstream input( line );
+  // get the name
+  std::string p_name;
+  int         p_geant; // obsolete, to be ignored
+  int         p_pdg;
+  double      p_charge;
+  double      p_mass;
+  double      p_ltime;
+  std::string p_evtgen;
+  int         p_pythia;
+  double      p_maxwid;
+  // parse the line
+  if ( input >> p_name >> p_geant >> p_pdg >> p_charge >> p_mass >> p_ltime >> p_evtgen >> p_pythia >> p_maxwid ) {
+    // Negative lifetime means the width in GeV-units
+    if ( 0 > p_ltime ) {
+      p_ltime = Gaudi::Units::hbar_Planck / std::abs( p_ltime * Gaudi::Units::GeV ) / Gaudi::Units::s;
+    }
+
+    StatusCode sc = addParticle( p_name, Gaudi::ParticleID( p_pdg ), p_charge,
+                                 p_mass * Gaudi::Units::GeV,   // rescale from CDF units
+                                 p_ltime * Gaudi::Units::s,    // rescale from CDF units
+                                 p_maxwid * Gaudi::Units::GeV, // rescale from CDF units
+                                 p_evtgen, p_pythia );
+    if ( sc.isFailure() ) { return sc; }
+  } else {
+    MsgStream log( msgSvc(), name() );
+    log << MSG::ERROR << " could not parse the line: '" << line << "'" << endmsg;
+    return StatusCode::FAILURE;
+  }
+
+  return StatusCode::SUCCESS;
+}
+
+StatusCode Gaudi::ParticlePropertySvc::addParticle( const std::string& pname, const Gaudi::ParticleID& pid,
+                                                    const double charge, const double mass, const double tlife,
+                                                    const double maxWidth, const std::string& evtgen,
+                                                    const int pythia ) {
+  // create the local object
+  const Gaudi::ParticleProperty pp( pname, pid, charge, mass, tlife, maxWidth, evtgen, pythia );
+
+  // 1) find the object with same name & pid in set:
+  auto it = std::find_if( m_set.begin(), m_set.end(), [&]( const std::unique_ptr<Gaudi::ParticleProperty>& s ) {
+    return s->name() == pp.name() && s->pid() == pp.pid();
+  } );
+  // 2) object is found, redefine it!
+  Gaudi::ParticleProperty* newp = nullptr;
+  if ( m_set.end() != it ) { newp = it->get(); }
+  // new property ?
+  if ( !newp ) {
+    it   = m_set.insert( std::make_unique<Gaudi::ParticleProperty>( pp ) ).first;
+    newp = it->get();
+  } else if ( diff( *newp, pp ) ) {
+    *newp = pp; // NB: redefine the properties
+  }
+
+  // insert into name map
+  {
+    auto i1 = m_nameMap.find( newp->name() );
+    if ( m_nameMap.end() != i1 && i1->second != newp ) { m_replaced_names.insert( newp->name() ); }
+    m_nameMap.update( newp->name(), newp );
+  }
+  // insert into PID map
+  {
+    auto i2 = m_pidMap.find( newp->pid() );
+    if ( m_pidMap.end() != i2 && i2->second != newp ) { m_replaced_pids.insert( newp->pid() ); }
+    m_pidMap.update( newp->pid(), newp );
+  }
+  // insert into vector
+  if ( m_vector.end() == std::find( m_vector.begin(), m_vector.end(), newp ) ) { m_vector.push_back( newp ); }
+
+  m_modified.push_back( newp );
+
+  return StatusCode::SUCCESS;
+}
+
+StatusCode Gaudi::ParticlePropertySvc::setAntiParticles() {
+  for ( const Gaudi::ParticleProperty* _pp : m_vector ) {
+    Gaudi::ParticleProperty* pp = const_cast<Gaudi::ParticleProperty*>( _pp );
+    pp->setAntiParticle( nullptr );
+    // get the ID for antiParticle
+    Gaudi::ParticleID panti( -pp->particleID().pid() );
+    //
+    const Gaudi::ParticleProperty* anti = m_pidMap( panti );
+    //
+    if ( !anti && 0 < pp->particleID().pid() && !pp->particleID().isNucleus() ) { anti = _pp; }
+    //
+    pp->setAntiParticle( anti );
+    if ( pp && pp->antiParticle() ) {
+      if ( msgLevel( MSG::VERBOSE ) )
+        verbose() << "Antiparticle for \n" << ( *pp ) << " is set to be    \n" << ( *( pp->antiParticle() ) ) << endmsg;
+    }
+    if ( ( !pp->antiParticle() ) && ( 0 == pp->pid().extraBits() ) ) { m_no_anti.insert( pp->name() ); }
+  }
+  return StatusCode::SUCCESS;
+}
+
+namespace {
+  inline bool different( const double a, const double b, const double p = 1.e-8 ) {
+    return std::abs( a - b ) > ( std::abs( a ) + std::abs( b ) ) * std::abs( p );
+  }
+  inline bool different( const std::string& a, const std::string& b ) { return a != b; }
+} // namespace
+
+bool Gaudi::ParticlePropertySvc::diff( const Gaudi::ParticleProperty& n, const Gaudi::ParticleProperty& o ) {
+  bool d = false;
+
+  if ( different( n.charge(), o.charge() ) ) {
+    m_by_charge.insert( n.name() );
+    d = true;
+  }
+  if ( different( n.mass(), o.mass() ) ) {
+    m_by_mass.insert( n.name() );
+    d = true;
+  }
+  if ( different( n.lifetime(), o.lifetime() ) ) {
+    m_by_tlife.insert( n.name() );
+    d = true;
+  }
+  if ( different( n.maxWidth(), o.maxWidth() ) ) {
+    m_by_width.insert( n.name() );
+    d = true;
+  }
+  if ( different( n.evtGen(), o.evtGen() ) ) {
+    m_by_evtgen.insert( n.name() );
+    d = true;
+  }
+  if ( different( n.pythia(), o.pythia() ) ) {
+    m_by_pythia.insert( n.name() );
+    d = true;
+  }
+
+  if ( d ) {
+    MsgStream log( msgSvc(), name() );
+    if ( log.level() <= MSG::DEBUG )
+      log << MSG::DEBUG << " Change the properties of '" << n.name() << "'/" << n.pid().pid() << std::endl
+          << " New: " << n << std::endl
+          << " Old: " << o << endmsg;
+  }
+  return d;
+}
+
+void Gaudi::ParticlePropertySvc::dump() {
+  auto& log = always();
+  log << " The Table of Particle Properties " << std::endl;
+  Gaudi::ParticleProperties::printAsTable( m_vector, log, this );
+  log << endmsg;
+}
+
+/* make the charge conjugation for the string/decay descriptor
+ *
+ *  @code
+ *
+ *   std::string decay = "B0 -> pi+ pi-" ;
+ *
+ *   Gaudi::IParticlePropertySvc* svc = ... ;
+ *
+ *   std::string cc = svc -> cc ( decay ) ;
+ *
+ *  @endcode
+ *
+ *  @param decay the decay descriptor
+ *  @return the charge conjugation for the decay descriptor
+ */
+std::string Gaudi::ParticlePropertySvc::cc( const std::string& decay ) const {
+  // build the map if not done yet
+  if ( m_ccMap.empty() ) {
+    // get the particles from the service
+    for ( const auto& pp : m_vector ) {
+      if ( !pp ) { continue; }
+      const Gaudi::ParticleProperty* anti = pp->antiParticle();
+      if ( !anti ) { continue; }
+      m_ccMap[pp->particle()] = anti->particle();
+    }
+    // get the particles from the options
+    for ( const auto& ic : m_ccmap_.value() ) {
+      m_ccMap[ic.first]  = ic.second;
+      m_ccMap[ic.second] = ic.first;
+    }
+    if ( msgLevel( MSG::DEBUG ) ) {
+      Gaudi::Utils::toStream( m_ccMap, ( debug() << " CC-map is \n" ).stream() );
+      debug() << endmsg;
+    }
+  }
+  // use the map
+  return Decays::CC::cc( decay, m_ccMap );
+}
+
+DECLARE_COMPONENT( Gaudi::ParticlePropertySvc )
diff --git a/GaudiPartProp/src/NodePIDs.cpp b/GaudiPartProp/src/NodePIDs.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..72549e8c9128e30b9ddd183cffda833bfa9a8ce4
--- /dev/null
+++ b/GaudiPartProp/src/NodePIDs.cpp
@@ -0,0 +1,472 @@
+/***********************************************************************************\
+* (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations *
+*                                                                                   *
+* This software is distributed under the terms of the Apache version 2 licence,     *
+* copied verbatim in the file "LICENSE".                                            *
+*                                                                                   *
+* In applying this licence, CERN does not waive the privileges and immunities       *
+* granted to it by virtue of its status as an Intergovernmental Organization        *
+* or submit itself to any jurisdiction.                                             *
+\***********************************************************************************/
+#include <Gaudi/Decays/NodesPIDs.h>
+#include <Gaudi/Decays/Symbols.h>
+#include <Gaudi/Interfaces/IParticlePropertySvc.h>
+#include <Gaudi/ParticleID.h>
+#include <Gaudi/ParticleProperty.h>
+#include <GaudiKernel/SmartIF.h>
+#include <GaudiKernel/SystemOfUnits.h>
+#include <algorithm>
+#include <climits>
+#include <functional>
+
+namespace Decays = Gaudi::Decays;
+
+/** @file
+ *  The implementation file for various decay nodes
+ *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+ *  @date 2008-04-12
+ */
+namespace {
+  /** @var s_SHORTLIVED
+   *  The default high-edge for c*tau for particle to be considered
+   *  as "short-lived" particles
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-12
+   */
+  constexpr double s_SHORTLIVED = 0.1 * Gaudi::Units::micrometer;
+  /** @var s_LONGLIVED
+   *  The default low-edge for c*tau for particle to be considered
+   *  as "long-lived" particles
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-12
+   */
+  constexpr double s_LONGLIVED = s_SHORTLIVED;
+  /** @var s_STABLE
+   *  The default low-edge for c*tau for particle to be considered
+   *  as "stable" particle
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-12
+   */
+  constexpr double s_STABLE = 1 * Gaudi::Units::meter;
+  /** @var s_INFINITY
+   *  The default low-edge for c*tau for particle to be considered
+   *  as "stable" particle
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-12
+   */
+  constexpr double s_INFINITY = 0.5 * std::numeric_limits<double>::max();
+} // namespace
+namespace Gaudi::Decays {
+  /*  Create the "OR" of two nodes
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-12
+   */
+  Decays::Nodes::Or operator||( const Decays::iNode& o1, const std::string& o2 ) {
+    return o1 || Decays::Nodes::Pid( o2 );
+  }
+  Decays::Nodes::Or operator||( const Decays::iNode& o1, const Gaudi::ParticleID& o2 ) {
+    return o1 || Decays::Nodes::Pid( o2 );
+  }
+  Decays::Nodes::Or operator||( const Decays::iNode& o1, const Decays::Decay::Item& o2 ) {
+    return o1 || Decays::Nodes::Pid( o2 );
+  }
+  Decays::Nodes::Or operator||( const Decays::iNode& o1, const Gaudi::ParticleProperty* o2 ) {
+    return o1 || Decays::Nodes::Pid( o2 );
+  }
+  Decays::Nodes::Or operator||( const std::string& o2, const Decays::iNode& o1 ) {
+    return Decays::Nodes::Pid( o2 ) || o1;
+  }
+  Decays::Nodes::Or operator||( const Gaudi::ParticleID& o2, const Decays::iNode& o1 ) {
+    return Decays::Nodes::Pid( o2 ) || o1;
+  }
+  Decays::Nodes::Or operator||( const Decays::Decay::Item& o2, const Decays::iNode& o1 ) {
+    return Decays::Nodes::Pid( o2 ) || o1;
+  }
+  Decays::Nodes::Or operator||( const Gaudi::ParticleProperty* o2, const Decays::iNode& o1 ) {
+    return Decays::Nodes::Pid( o2 ) || o1;
+  }
+  /*  Create the "AND" of two nodes
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2008-04-12
+   */
+  Decays::Nodes::And operator&&( const Decays::iNode& o1, const std::string& o2 ) {
+    return o1 && Decays::Nodes::Pid( o2 );
+  }
+  Decays::Nodes::And operator&&( const Decays::iNode& o1, const Gaudi::ParticleID& o2 ) {
+    return o1 && Decays::Nodes::Pid( o2 );
+  }
+  Decays::Nodes::And operator&&( const Decays::iNode& o1, const Decays::Decay::Item& o2 ) {
+    return o1 && Decays::Nodes::Pid( o2 );
+  }
+  Decays::Nodes::And operator&&( const Decays::iNode& o1, const Gaudi::ParticleProperty* o2 ) {
+    return o1 && Decays::Nodes::Pid( o2 );
+  }
+  Decays::Nodes::And operator&&( const std::string& o2, const Decays::iNode& o1 ) {
+    return Decays::Nodes::Pid( o2 ) && o1;
+  }
+  Decays::Nodes::And operator&&( const Gaudi::ParticleID& o2, const Decays::iNode& o1 ) {
+    return Decays::Nodes::Pid( o2 ) && o1;
+  }
+  Decays::Nodes::And operator&&( const Decays::Decay::Item& o2, const Decays::iNode& o1 ) {
+    return Decays::Nodes::Pid( o2 ) && o1;
+  }
+  Decays::Nodes::And operator&&( const Gaudi::ParticleProperty* o2, const Decays::iNode& o1 ) {
+    return Decays::Nodes::Pid( o2 ) && o1;
+  }
+} // namespace Gaudi::Decays
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::Any* Decays::Nodes::Any::clone() const { return new Any( *this ); }
+// MANDATORY: check the validity
+bool Decays::Nodes::Any::valid() const { return true; }
+// MANDATORY: the proper validation of the node
+StatusCode Decays::Nodes::Any::validate( const Gaudi::Interfaces::IParticlePropertySvc* /*svc */ ) const {
+  return StatusCode::SUCCESS;
+}
+// MANDATORY: the only one essential method
+bool Decays::Nodes::Any::operator()( const Gaudi::ParticleID& /* p */ ) const { return true; }
+
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::Pid* Decays::Nodes::Pid::clone() const { return new Pid( *this ); }
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::CC* Decays::Nodes::CC::clone() const { return new CC( *this ); }
+
+// xSpin: valid only for reasonable spin
+bool Decays::Nodes::JSpin::valid() const { return 0 < spin(); }
+// MANDATORY: the proper validation of the node
+StatusCode Decays::Nodes::JSpin::validate( const Gaudi::Interfaces::IParticlePropertySvc* /*svc */ ) const {
+  return valid() ? StatusCode::SUCCESS : StatusCode{ InvalidSpin };
+}
+
+// constructor from the decay item
+Decays::Nodes::Pid::Pid( const Decays::Decay::Item& item ) : Decays::iNode(), m_item( item ) {}
+// constructor from Particle Property
+Decays::Nodes::Pid::Pid( const Gaudi::ParticleProperty* item ) : Decays::iNode(), m_item( item ) {}
+// constructor from ParticleID
+Decays::Nodes::Pid::Pid( const Gaudi::ParticleID& item ) : Decays::iNode(), m_item( item ) {}
+// constructor from Particle name
+Decays::Nodes::Pid::Pid( const std::string& item ) : Decays::iNode(), m_item( item ) {}
+// MANDATORY: check the validity
+bool Decays::Nodes::Pid::valid() const { return 0 != m_item.pp(); }
+// MANDATORY: the proper validation of the node
+StatusCode Decays::Nodes::Pid::validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const {
+  return m_item.validate( svc );
+}
+
+// constructor from the decay item
+Decays::Nodes::CC::CC( const Decays::Decay::Item& item ) : Decays::Nodes::Pid( item ) {}
+// constructor from Particle Property
+Decays::Nodes::CC::CC( const Gaudi::ParticleProperty* item ) : Decays::Nodes::Pid( item ) {}
+// constructor from ParticleID
+Decays::Nodes::CC::CC( Gaudi::ParticleID item ) : Decays::Nodes::Pid( item ) {}
+// constructor from Particle name
+Decays::Nodes::CC::CC( const std::string& item ) : Decays::Nodes::Pid( item ) {}
+// constructor from Pid
+Decays::Nodes::CC::CC( const Decays::Nodes::Pid& item ) : Decays::Nodes::Pid( item ) {}
+
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::Meson* Decays::Nodes::Meson::clone() const { return new Meson( *this ); }
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::Lepton* Decays::Nodes::Lepton::clone() const { return new Lepton( *this ); }
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::Nu* Decays::Nodes::Nu::clone() const { return new Nu( *this ); }
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::Ell* Decays::Nodes::Ell::clone() const { return new Ell( *this ); }
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::EllPlus* Decays::Nodes::EllPlus::clone() const { return new EllPlus( *this ); }
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::EllMinus* Decays::Nodes::EllMinus::clone() const { return new EllMinus( *this ); }
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::Baryon* Decays::Nodes::Baryon::clone() const { return new Baryon( *this ); }
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::Hadron* Decays::Nodes::Hadron::clone() const { return new Hadron( *this ); }
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::Charged* Decays::Nodes::Charged::clone() const { return new Charged( *this ); }
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::Positive* Decays::Nodes::Positive::clone() const { return new Positive( *this ); }
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::Negative* Decays::Nodes::Negative::clone() const { return new Negative( *this ); }
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::Neutral* Decays::Nodes::Neutral::clone() const { return new Neutral( *this ); }
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::Nucleus* Decays::Nodes::Nucleus::clone() const { return new Nucleus( *this ); }
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::HasQuark* Decays::Nodes::HasQuark::clone() const { return new HasQuark( *this ); }
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::JSpin* Decays::Nodes::JSpin::clone() const { return new JSpin( *this ); }
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::SSpin* Decays::Nodes::SSpin::clone() const { return new SSpin( *this ); }
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::LSpin* Decays::Nodes::LSpin::clone() const { return new LSpin( *this ); }
+
+// constructor from the quark
+Decays::Nodes::HasQuark::HasQuark( Gaudi::ParticleID::Quark quark ) : Decays::Nodes::Any(), m_quark( quark ) {}
+// constructor from the 2J+1
+Decays::Nodes::JSpin::JSpin( const int spin ) : Decays::Nodes::Any(), m_spin( spin ) {}
+// constructor from the 2S+1
+Decays::Nodes::SSpin::SSpin( const int spin ) : Decays::Nodes::JSpin( spin ) {}
+// constructor from the 2L+1
+Decays::Nodes::LSpin::LSpin( const int spin ) : Decays::Nodes::SSpin( spin ) {}
+
+std::ostream& Decays::Nodes::Any::fillStream( std::ostream& s ) const { return s << " X "; }
+std::ostream& Decays::Nodes::Pid::fillStream( std::ostream& s ) const { return s << " " << m_item.name() << " "; }
+std::ostream& Decays::Nodes::CC::fillStream( std::ostream& s ) const { return s << " [" << item().name() << "]cc "; }
+std::ostream& Decays::Nodes::Meson::fillStream( std::ostream& s ) const { return s << " Meson "; }
+std::ostream& Decays::Nodes::Hadron::fillStream( std::ostream& s ) const { return s << " Hadron "; }
+std::ostream& Decays::Nodes::Baryon::fillStream( std::ostream& s ) const { return s << " Baryon "; }
+std::ostream& Decays::Nodes::Lepton::fillStream( std::ostream& s ) const { return s << " Lepton "; }
+std::ostream& Decays::Nodes::Neutral::fillStream( std::ostream& s ) const { return s << " X0 "; }
+std::ostream& Decays::Nodes::Charged::fillStream( std::ostream& s ) const { return s << " Xq "; }
+std::ostream& Decays::Nodes::Positive::fillStream( std::ostream& s ) const { return s << " X+ "; }
+std::ostream& Decays::Nodes::Negative::fillStream( std::ostream& s ) const { return s << " X- "; }
+std::ostream& Decays::Nodes::Nu::fillStream( std::ostream& s ) const { return s << " Nu "; }
+std::ostream& Decays::Nodes::Ell::fillStream( std::ostream& s ) const { return s << " l "; }
+std::ostream& Decays::Nodes::EllPlus::fillStream( std::ostream& s ) const { return s << " l+ "; }
+std::ostream& Decays::Nodes::EllMinus::fillStream( std::ostream& s ) const { return s << " l- "; }
+std::ostream& Decays::Nodes::Nucleus::fillStream( std::ostream& s ) const { return s << " Nucleus "; }
+std::ostream& Decays::Nodes::HasQuark::fillStream( std::ostream& s ) const {
+  switch ( m_quark ) {
+  case Gaudi::ParticleID::down:
+    return s << " Xd ";
+  case Gaudi::ParticleID::up:
+    return s << " Xu ";
+  case Gaudi::ParticleID::strange:
+    return s << " Xs ";
+  case Gaudi::ParticleID::charm:
+    return s << " Xc ";
+  case Gaudi::ParticleID::bottom:
+    return s << " Xb ";
+  case Gaudi::ParticleID::top:
+    return s << " Xt ";
+  default:;
+  }
+  return s << " HasQuark(" << (int)m_quark << ") ";
+}
+std::ostream& Decays::Nodes::JSpin::fillStream( std::ostream& s ) const {
+  switch ( spin() ) {
+  case 1:
+    return s << " Scalar ";
+  case 2:
+    return s << " Spinor ";
+  case 3:
+    return s << " Vector ";
+  case 4:
+    return s << " ThreeHalf ";
+  case 5:
+    return s << " Tensor ";
+  case 6:
+    return s << " FiveHalf ";
+  default:;
+  }
+  return s << " JSpin(" << m_spin << ") ";
+}
+std::ostream& Decays::Nodes::SSpin::fillStream( std::ostream& s ) const { return s << " SSpin(" << spin() << ") "; }
+std::ostream& Decays::Nodes::LSpin::fillStream( std::ostream& s ) const { return s << " LSpin(" << spin() << ") "; }
+
+// constructor from c-tau range & Service
+Decays::Nodes::CTau::CTau( const double low, const double high, const Gaudi::Interfaces::IParticlePropertySvc* svc )
+    : m_low( low ), m_high( high ) {
+  if ( svc ) { m_ppSvc = const_cast<Gaudi::Interfaces::IParticlePropertySvc*>( svc ); }
+}
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::CTau* Decays::Nodes::CTau::clone() const { return new CTau( *this ); }
+// MANDATORY: the specific printout
+std::ostream& Decays::Nodes::CTau::fillStream( std::ostream& s ) const {
+  return s << " CTau(" << low() << "," << high() << ") ";
+}
+// MANDATORY: check the validity
+bool Decays::Nodes::CTau::valid() const { return m_ppSvc.isValid(); }
+// MANDATORY: the proper validation of the node
+StatusCode Decays::Nodes::CTau::validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const {
+  return setService( svc );
+}
+// MANDATORY: the only one essential method
+bool Decays::Nodes::CTau::operator()( const Gaudi::ParticleID& pid ) const {
+  return classify( pid, [&]( Gaudi::ParticleID id ) {
+    // invalid node
+    if ( !ppSvc() ) { return false; } //  REJECT for invalid service
+    // use the service
+    const Gaudi::ParticleProperty* pp = ppSvc()->find( id );
+    if ( !pp ) { return false; } // REJECT for invalid dparticle
+    // final decision: check ctau range
+    const auto ctau = pp->ctau();
+    return low() <= ctau && ctau <= high();
+  } );
+}
+bool Decays::Nodes::CTau::add_( Gaudi::ParticleID pid, bool acc ) const {
+  return m_pids.with_lock(
+      []( KnownPids& pids, Gaudi::ParticleID pid, bool acc ) {
+        auto& c     = ( acc ? pids.accepted : pids.rejected );
+        auto  ifind = std::lower_bound( c.begin(), c.end(), pid );
+        if ( c.end() == ifind || pid < ( *ifind ) ) { c.insert( ifind, pid ); }
+        return acc;
+      },
+      pid, acc );
+}
+// MANDATORY: the proper validation of the node
+StatusCode Decays::Nodes::CTau::setService( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const {
+  // if service is substituted, clear the cache
+  if ( m_ppSvc != svc ) {
+    m_pids.with_lock( []( KnownPids& pids ) {
+      pids.accepted.clear();
+      pids.rejected.clear();
+    } );
+  }
+  //
+  if ( svc ) {
+    m_ppSvc = const_cast<Gaudi::Interfaces::IParticlePropertySvc*>( svc );
+  } else {
+    m_ppSvc = nullptr;
+  }
+  //
+  return m_ppSvc.isValid() ? StatusCode::SUCCESS : StatusCode::FAILURE;
+}
+// constructor from c-tau range & Service
+Decays::Nodes::Mass::Mass( const double low, const double high, const Gaudi::Interfaces::IParticlePropertySvc* svc )
+    : Decays::Nodes::CTau( low, high, svc ) {}
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::Mass* Decays::Nodes::Mass::clone() const { return new Mass( *this ); }
+// MANDATORY: the specific printout
+std::ostream& Decays::Nodes::Mass::fillStream( std::ostream& s ) const {
+  return s << " Mass(" << low() << "," << high() << ") ";
+}
+// MANDATORY: the only one essential method
+bool Decays::Nodes::Mass::operator()( const Gaudi::ParticleID& pid ) const {
+  return classify( pid, [&]( Gaudi::ParticleID pid ) {
+    // invalid node
+    if ( !ppSvc() ) { return false; } //  REJECT for invaild service
+    // use the service
+    const Gaudi::ParticleProperty* pp = ppSvc()->find( pid );
+    if ( !pp ) { return false; } // REJECT for invalid particle
+    // final decision: check mass range
+    const auto mass = pp->mass();
+    return low() <= mass && mass <= high();
+  } );
+}
+
+namespace {
+  // idea coming from The art of computer programming by Knuth
+  constexpr bool essentiallyEqual( double const a, double const b ) {
+    return std::abs( a - b ) <= std::min( std::abs( a ), std::abs( b ) ) * std::numeric_limits<double>::epsilon();
+  }
+} // namespace
+
+// constructor with high edge and service
+Decays::Nodes::ShortLived_::ShortLived_( const double high, const Gaudi::Interfaces::IParticlePropertySvc* svc )
+    : Decays::Nodes::CTau( -1 * Gaudi::Units::km, high, svc ) {}
+// constructor with high edge and service
+Decays::Nodes::ShortLived_::ShortLived_( const Gaudi::Interfaces::IParticlePropertySvc* svc )
+    : Decays::Nodes::CTau( -1 * Gaudi::Units::km, s_SHORTLIVED, svc ) {}
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::ShortLived_* Decays::Nodes::ShortLived_::clone() const {
+  return new Decays::Nodes::ShortLived_( *this );
+}
+// MANDATORY: the specific printout
+std::ostream& Decays::Nodes::ShortLived_::fillStream( std::ostream& s ) const {
+  if ( essentiallyEqual( high(), s_SHORTLIVED ) ) { return s << " ShortLived "; }
+  return s << " ShortLived_( " << high() << ") ";
+}
+
+// constructor with high edge and service
+Decays::Nodes::LongLived_::LongLived_( const double low, const Gaudi::Interfaces::IParticlePropertySvc* svc )
+    : Decays::Nodes::CTau( low, s_INFINITY, svc ) {}
+// constructor with high edge and service
+Decays::Nodes::LongLived_::LongLived_( const Gaudi::Interfaces::IParticlePropertySvc* svc )
+    : Decays::Nodes::CTau( s_LONGLIVED, s_INFINITY, svc ) {}
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::LongLived_* Decays::Nodes::LongLived_::clone() const { return new Decays::Nodes::LongLived_( *this ); }
+// MANDATORY: the specific printout
+std::ostream& Decays::Nodes::LongLived_::fillStream( std::ostream& s ) const {
+  if ( essentiallyEqual( low(), s_LONGLIVED ) ) { return s << " LongLived "; }
+  return s << " LongLived_( " << low() << ") ";
+}
+
+// constructor with the service
+Decays::Nodes::Stable::Stable( const Gaudi::Interfaces::IParticlePropertySvc* svc )
+    : Decays::Nodes::LongLived_( s_STABLE, svc ) {}
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::Stable* Decays::Nodes::Stable::clone() const { return new Decays::Nodes::Stable( *this ); }
+// MANDATORY: the specific printout
+std::ostream& Decays::Nodes::Stable::fillStream( std::ostream& s ) const { return s << " Stable "; }
+
+// constructor with the service
+Decays::Nodes::StableCharged::StableCharged( const Gaudi::Interfaces::IParticlePropertySvc* svc )
+    : Decays::Nodes::Stable( svc ) {}
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::StableCharged* Decays::Nodes::StableCharged::clone() const {
+  return new Decays::Nodes::StableCharged( *this );
+}
+// MANDATORY: the specific printout
+std::ostream& Decays::Nodes::StableCharged::fillStream( std::ostream& s ) const { return s << " StableCharged "; }
+// MANDATORY: the only one essential method
+bool Decays::Nodes::StableCharged::operator()( const Gaudi::ParticleID& pid ) const {
+  return classify( pid, [&]( Gaudi::ParticleID id ) {
+    // invalid node
+    if ( !ppSvc() ) { return false; } //  REJECT for invalid service
+    // use the service
+    const Gaudi::ParticleProperty* pp = ppSvc()->find( id );
+    if ( !pp ) { return false; } // REJECT for invalid dparticle
+    // final decision: check ctau range
+    return low() <= pp->ctau() && 0 != id.threeCharge();
+  } );
+}
+
+// constructor with high edge and service
+Decays::Nodes::Light::Light( const double high, const Gaudi::Interfaces::IParticlePropertySvc* svc )
+    : Decays::Nodes::Mass( -1 * Gaudi::Units::TeV, high, svc ) {}
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::Light* Decays::Nodes::Light::clone() const { return new Decays::Nodes::Light( *this ); }
+// MANDATORY: the specific printout
+std::ostream& Decays::Nodes::Light::fillStream( std::ostream& s ) const { return s << " Light( " << high() << ") "; }
+
+// constructor with high edge and service
+Decays::Nodes::Heavy::Heavy( const double low, const Gaudi::Interfaces::IParticlePropertySvc* svc )
+    : Decays::Nodes::Mass( low, s_INFINITY, svc ) {}
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::Heavy* Decays::Nodes::Heavy::clone() const { return new Decays::Nodes::Heavy( *this ); }
+// MANDATORY: the specific printout
+std::ostream& Decays::Nodes::Heavy::fillStream( std::ostream& s ) const { return s << " Heavy( " << high() << ") "; }
+
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::PosID* Decays::Nodes::PosID::clone() const { return new PosID( *this ); }
+// MANDATORY: check the validity
+bool Decays::Nodes::PosID::valid() const { return true; }
+// MANDATORY: the proper validation of the node
+StatusCode Decays::Nodes::PosID::validate( const Gaudi::Interfaces::IParticlePropertySvc* /*svc */ ) const {
+  return StatusCode::SUCCESS;
+}
+// MANDATORY: the only one essential method
+bool Decays::Nodes::PosID::operator()( const Gaudi::ParticleID& p ) const { return 0 < p.pid(); }
+// MANDATORY: the specific printout
+std::ostream& Decays::Nodes::PosID::fillStream( std::ostream& s ) const { return s << " ID+ "; }
+
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::NegID* Decays::Nodes::NegID::clone() const { return new NegID( *this ); }
+// MANDATORY: check the validity
+bool Decays::Nodes::NegID::valid() const { return true; }
+// MANDATORY: the proper validation of the node
+StatusCode Decays::Nodes::NegID::validate( const Gaudi::Interfaces::IParticlePropertySvc* /*svc */ ) const {
+  return StatusCode::SUCCESS;
+}
+// MANDATORY: the only one essential method
+bool Decays::Nodes::NegID::operator()( const Gaudi::ParticleID& p ) const { return 0 > p.pid(); }
+// MANDATORY: the specific printout
+std::ostream& Decays::Nodes::NegID::fillStream( std::ostream& s ) const { return s << " ID- "; }
+
+//  constructor from the symbol
+Decays::Nodes::Symbol::Symbol( const std::string& s ) : Decays::iNode(), m_symbol( Decays::Nodes::Invalid() ) {
+  const Decays::Symbols& sym = Decays::Symbols::instance();
+  StatusCode             sc  = sym.symbol( s, m_symbol );
+  sc.ignore();
+}
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::Symbol* Decays::Nodes::Symbol::clone() const { return new Decays::Nodes::Symbol( *this ); }
+// MANDATORY: the only one essential method
+bool Decays::Nodes::Symbol::operator()( const Gaudi::ParticleID& pid ) const { return m_symbol.node( pid ); }
+// MANDATORY: the specific printout
+std::ostream& Decays::Nodes::Symbol::fillStream( std::ostream& s ) const { return s << m_symbol.node(); }
+// MANDATORY: check the validity
+bool Decays::Nodes::Symbol::valid() const { return m_symbol.valid(); }
+// MANDATORY: validate
+StatusCode Decays::Nodes::Symbol::validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const {
+  return m_symbol.validate( svc );
+}
diff --git a/GaudiPartProp/src/Nodes.cpp b/GaudiPartProp/src/Nodes.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..51c3ed80fc88899f919788a7e66e24ad6e36f04b
--- /dev/null
+++ b/GaudiPartProp/src/Nodes.cpp
@@ -0,0 +1,214 @@
+/***********************************************************************************\
+* (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations *
+*                                                                                   *
+* This software is distributed under the terms of the Apache version 2 licence,     *
+* copied verbatim in the file "LICENSE".                                            *
+*                                                                                   *
+* In applying this licence, CERN does not waive the privileges and immunities       *
+* granted to it by virtue of its status as an Intergovernmental Organization        *
+* or submit itself to any jurisdiction.                                             *
+\***********************************************************************************/
+#include <Gaudi/Decays/Nodes.h>
+#include <Gaudi/ParticleID.h>
+#include <GaudiKernel/SerializeSTL.h>
+#include <algorithm>
+#include <functional>
+
+namespace Decays = Gaudi::Decays;
+
+/** @file
+ *  The implementation file for various decay nodes
+ *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+ *  @date 2008-04-12
+ */
+
+Decays::NodeList::NodeList( const Decays::NodeList::Nodes_& nodes ) : m_nodes( nodes ) {}
+void Decays::NodeList::push_back( const Decays::Nodes::_Node& node ) { m_nodes.push_back( node ); }
+void Decays::NodeList::push_back( const Decays::iNode& node ) { m_nodes.push_back( node ); }
+void Decays::NodeList::push_back( const Decays::NodeList::Nodes_& nodes ) {
+  m_nodes.insert( m_nodes.end(), nodes.begin(), nodes.end() );
+}
+void              Decays::NodeList::push_back( const NodeList& nodes ) { push_back( nodes.m_nodes ); }
+Decays::NodeList& Decays::NodeList::operator=( const Decays::Nodes::_Node& node ) {
+  m_nodes.clear();
+  push_back( node );
+  return *this;
+}
+Decays::NodeList& Decays::NodeList::operator=( const Decays::iNode& node ) {
+  m_nodes.clear();
+  push_back( node );
+  return *this;
+}
+
+Decays::Nodes::_Node& Decays::Nodes::_Node::op_or( const Decays::NodeList& right ) {
+  if ( !right.empty() ) { m_node |= Decays::Nodes::Or( right ); }
+  return *this;
+}
+Decays::Nodes::_Node& Decays::Nodes::_Node::op_and( const Decays::NodeList& right ) {
+  if ( !right.empty() ) { m_node &= Decays::Nodes::And( right ); }
+  return *this;
+}
+
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::Invalid* Decays::Nodes::Invalid::clone() const { return new Invalid( *this ); }
+// MANDATORY: check the validity
+bool Decays::Nodes::Invalid::valid() const { return false; }
+// MANDATORY: the proper validation of the node
+StatusCode Decays::Nodes::Invalid::validate( const Gaudi::Interfaces::IParticlePropertySvc* /*svc */ ) const {
+  return StatusCode::FAILURE;
+}
+// MANDATORY: the only one essential method
+bool          Decays::Nodes::Invalid::operator()( const Gaudi::ParticleID& /* p */ ) const { return false; }
+std::ostream& Decays::Nodes::Invalid::fillStream( std::ostream& s ) const { return s << " <INVALID> "; }
+
+// the default constructor
+Decays::Nodes::_Node::_Node() : m_node( Decays::Nodes::Invalid() ) {}
+
+// constructor from two nodes
+Decays::Nodes::Or::Or( const Decays::iNode& n1, const Decays::iNode& n2 ) {
+  add( n1 );
+  add( n2 );
+}
+// constructor from three nodes
+Decays::Nodes::Or::Or( const Decays::iNode& n1, const Decays::iNode& n2, const Decays::iNode& n3 ) {
+  add( n1 );
+  add( n2 );
+  add( n3 );
+}
+// constructor from four nodes
+Decays::Nodes::Or::Or( const Decays::iNode& n1, const Decays::iNode& n2, const Decays::iNode& n3,
+                       const Decays::iNode& n4 ) {
+  add( n1 );
+  add( n2 );
+  add( n3 );
+  add( n4 );
+}
+// constructor from list of nodes
+Decays::Nodes::Or::Or( const Decays::NodeList& nodes ) { add( nodes ); }
+// add the node
+size_t Decays::Nodes::Or::add( const Decays::iNode& node ) {
+  const Decays::iNode* right = &node;
+  const Or*            _or   = dynamic_cast<const Or*>( right );
+  if ( 0 != _or ) { return add( _or->m_nodes ); } // RETURN
+  // holder ?
+  const Node* _no = dynamic_cast<const Node*>( right );
+  if ( 0 != _no ) { return add( _no->node() ); } // RETURN
+  // just add the node
+  m_nodes.push_back( node );
+  return m_nodes.size();
+}
+// add the list of nodes
+size_t Decays::Nodes::Or::add( const Decays::NodeList& nodes ) {
+  for ( const auto& n : nodes ) add( n );
+  return m_nodes.size();
+}
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::Or* Decays::Nodes::Or::clone() const { return new Or( *this ); }
+// MANDATORY: the only one essential method
+bool Decays::Nodes::Or::operator()( const Gaudi::ParticleID& pid ) const {
+  return m_nodes.end() != std::find_if( m_nodes.begin(), m_nodes.end(),
+                                        [&]( const Decays::Nodes::_Node& node ) { return node( pid ); } );
+}
+// MANDATORY: the specific printout
+std::ostream& Decays::Nodes::Or::fillStream( std::ostream& s ) const {
+  s << " (";
+  for ( Decays::NodeList::const_iterator node = m_nodes.begin(); m_nodes.end() != node; ++node ) {
+    if ( m_nodes.begin() != node ) { s << "|"; }
+    s << *node;
+  }
+  return s << ") ";
+}
+// MANDATORY: check the validity
+bool Decays::Nodes::Or::valid() const { return !m_nodes.empty() && Decays::valid( m_nodes.begin(), m_nodes.end() ); }
+// MANDATORY: the proper validation of the node
+StatusCode Decays::Nodes::Or::validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const {
+  if ( m_nodes.empty() ) { return StatusCode::FAILURE; }
+  return Decays::validate( m_nodes.begin(), m_nodes.end(), svc );
+}
+
+// constructor from two nodes
+Decays::Nodes::And::And( const Decays::iNode& n1, const Decays::iNode& n2 ) {
+  add( n1 );
+  add( n2 );
+}
+// constructor from three nodes
+Decays::Nodes::And::And( const Decays::iNode& n1, const Decays::iNode& n2, const Decays::iNode& n3 ) {
+  add( n1 );
+  add( n2 );
+  add( n3 );
+}
+// constructor from four nodes
+Decays::Nodes::And::And( const Decays::iNode& n1, const Decays::iNode& n2, const Decays::iNode& n3,
+                         const Decays::iNode& n4 ) {
+  add( n1 );
+  add( n2 );
+  add( n3 );
+  add( n4 );
+}
+// constructor form list of nodes
+Decays::Nodes::And::And( const Decays::NodeList& nodes ) { add( nodes ); }
+// add the node
+size_t Decays::Nodes::And::add( const Decays::iNode& node ) {
+  const Decays::iNode* right = &node;
+  const And*           _and  = dynamic_cast<const And*>( right );
+  if ( 0 != _and ) { return add( _and->m_nodes ); } // RETURN
+  // holder ?
+  const Node* _no = dynamic_cast<const Node*>( right );
+  if ( 0 != _no ) { return add( _no->node() ); } // RETURN
+  // just add the node
+  m_nodes.push_back( node );
+  return m_nodes.size();
+}
+// add the list of nodes
+size_t Decays::Nodes::And::add( const Decays::NodeList& nodes ) {
+  for ( const auto& n : nodes ) add( n );
+  return m_nodes.size();
+}
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::And* Decays::Nodes::And::clone() const { return new And( *this ); }
+// MANDATORY: the only one essential method
+bool Decays::Nodes::And::operator()( const Gaudi::ParticleID& pid ) const {
+  if ( m_nodes.empty() ) { return false; }
+  return std::all_of( m_nodes.begin(), m_nodes.end(), [&]( const Decays::Nodes::_Node& n ) { return n == pid; } );
+}
+// MANDATORY: the specific printout
+std::ostream& Decays::Nodes::And::fillStream( std::ostream& s ) const {
+  return GaudiUtils::details::ostream_joiner( s << " (", m_nodes, "&" ) << ") ";
+}
+// MANDATORY: check the validity
+bool Decays::Nodes::And::valid() const { return !m_nodes.empty() && Decays::valid( m_nodes.begin(), m_nodes.end() ); }
+// MANDATORY: the proper validation of the node
+StatusCode Decays::Nodes::And::validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const {
+  if ( m_nodes.empty() ) { return StatusCode::FAILURE; }
+  return Decays::validate( m_nodes.begin(), m_nodes.end(), svc );
+}
+
+// constructor from the node
+Decays::Nodes::Not::Not( const Decays::iNode& node ) : Decays::iNode(), m_node( node ) {}
+// MANDATORY: clone method ("virtual constructor")
+Decays::Nodes::Not* Decays::Nodes::Not::clone() const { return new Not( *this ); }
+// valid ?
+bool       Decays::Nodes::Not::valid() const { return m_node.valid(); }
+bool       Decays::Nodes::Not::operator()( const Gaudi::ParticleID& pid ) const { return !m_node.node( pid ); }
+StatusCode Decays::Nodes::Not::validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const {
+  return m_node.validate( svc );
+}
+
+std::ostream& Decays::Nodes::Not::fillStream( std::ostream& s ) const { return s << " ~(" << m_node << ") "; }
+
+Decays::Nodes::Or& Decays::Nodes::Or::operator+=( const Decays::iNode& node ) {
+  add( node );
+  return *this;
+}
+Decays::Nodes::And& Decays::Nodes::And::operator+=( const Decays::iNode& node ) {
+  add( node );
+  return *this;
+}
+Decays::Nodes::Or& Decays::Nodes::Or::operator+=( const Decays::NodeList& nodes ) {
+  add( nodes );
+  return *this;
+}
+Decays::Nodes::And& Decays::Nodes::And::operator+=( const Decays::NodeList& nodes ) {
+  add( nodes );
+  return *this;
+}
diff --git a/GaudiPartProp/src/ParticleID.cpp b/GaudiPartProp/src/ParticleID.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..4a460a3cb48a1e7744f911a8ef32bc2262fb0e94
--- /dev/null
+++ b/GaudiPartProp/src/ParticleID.cpp
@@ -0,0 +1,506 @@
+/***********************************************************************************\
+* (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations *
+*                                                                                   *
+* This software is distributed under the terms of the Apache version 2 licence,     *
+* copied verbatim in the file "LICENSE".                                            *
+*                                                                                   *
+* In applying this licence, CERN does not waive the privileges and immunities       *
+* granted to it by virtue of its status as an Intergovernmental Organization        *
+* or submit itself to any jurisdiction.                                             *
+\***********************************************************************************/
+#include <Gaudi/ParticleID.h>
+#include <array>
+#include <iostream>
+#include <sstream>
+
+/** @file ParticleID.cpp
+ *  Implementation file for class ParticleID.
+ *  @date 19/02/2002
+ *  @author Gloria Corti
+ *  @date 22/03/2018
+ *  @author Philip Ilten
+ */
+
+namespace {
+  typedef std::array<unsigned int, 8> DATA;
+  inline DATA                         decode( const Gaudi::ParticleID& pid ) {
+    unsigned int m_extra = pid.abspid() / 10000000;
+    unsigned int m_n     = pid.digit( Gaudi::ParticleID::n );
+    unsigned int m_nr    = pid.digit( Gaudi::ParticleID::nr );
+    unsigned int m_nl    = pid.digit( Gaudi::ParticleID::nl );
+    unsigned int m_nq1   = pid.digit( Gaudi::ParticleID::nq1 );
+    unsigned int m_nq2   = pid.digit( Gaudi::ParticleID::nq2 );
+    unsigned int m_nq3   = pid.digit( Gaudi::ParticleID::nq3 );
+    unsigned int m_nj    = pid.digit( Gaudi::ParticleID::nj );
+    unsigned int aid     = pid.abspid();
+
+    // Switch gluons to 0.
+    if ( m_nq1 == 9 ) m_nq1 = 0;
+    // Special particles with 99 code.
+    if ( m_n == 9 && m_nr == 9 ) {
+      // Translate the color-octet quarkonia numbering scheme from Pythia.
+      if ( m_nl > 3 ) {
+        std::swap( m_nl, m_nq3 );
+        m_nj  = m_nq1 % 2 ? 1 : 3;
+        m_nq1 = 0;
+        m_nq2 = m_nq3;
+      }
+      // Handle the X(3872) states.
+      else if ( m_nl != 0 ) {
+        m_nr = 0;
+      }
+      // Map left-right symmetry for double charged Higgses from Pythia.
+      else if ( !m_nq2 && m_nq3 > 2 ) {
+        m_nq3 = 0;
+        m_nj  = 9;
+      }
+    }
+    // The PDG hidden valley scheme.
+    else if ( m_n == 4 && m_nr == 9 && m_nq2 ) {
+      m_nq3 = m_nq2;
+    }
+    // The K0S/L and B0L/H.
+    else if ( aid == 130 || aid == 310 || aid == 150 || aid == 510 ) {
+      m_nl = 1;
+      m_nj = 1;
+    }
+    // Technical photons.
+    else if ( aid == 10022 || aid == 20022 ) {
+      m_nl = 0;
+    }
+    // Old heavy ion convention for hydrogen-2 nucleus.
+    else if ( m_extra == 45 ) {
+      m_extra = 100;
+      m_n     = 0;
+      m_nr    = 0;
+      m_nl    = 1;
+      m_nq1   = 0;
+      m_nq2   = 0;
+      m_nq3   = 2;
+      m_nj    = 0;
+    }
+    // Old heavy ion convention for hydrogen-3 nucleus.
+    else if ( m_extra == 46 ) {
+      m_extra = 100;
+      m_n     = 0;
+      m_nr    = 0;
+      m_nl    = 1;
+      m_nq1   = 0;
+      m_nq2   = 0;
+      m_nq3   = 3;
+      m_nj    = 0;
+    }
+    // Old heavy ion convention for helium-4 nucleus.
+    else if ( m_extra == 47 ) {
+      m_extra = 100;
+      m_n     = 0;
+      m_nr    = 0;
+      m_nl    = 2;
+      m_nq1   = 0;
+      m_nq2   = 0;
+      m_nq3   = 4;
+      m_nj    = 0;
+    }
+    // Old heavy ion convention for helium-3 nucleus.
+    else if ( m_extra == 49 ) {
+      m_extra = 100;
+      m_n     = 0;
+      m_nr    = 0;
+      m_nl    = 2;
+      m_nq1   = 0;
+      m_nq2   = 0;
+      m_nq3   = 3;
+      m_nj    = 0;
+    }
+    // The EvtGen particles Xsd (30343), Xsu (30353), and Xss (30363)
+    // which break the PDG conventions.
+    else if ( aid == 30343 ) {
+      m_nq1 = 2;
+      m_nq2 = 3;
+      m_nq3 = 1;
+    } else if ( aid == 30353 ) {
+      m_nq1 = 2;
+      m_nq2 = 3;
+      m_nq3 = 2;
+    } else if ( aid == 30363 ) {
+      m_nq1 = 2;
+      m_nq2 = 3;
+      m_nq3 = 3;
+    }
+    // Specific BSM particles.
+    else if ( aid == 1009002 ) {
+      m_nq1 = 0;
+      m_nq3 = 2;
+      m_nj  = 1;
+    } else if ( aid == 1000542 ) {
+      m_nq1 = 5;
+      m_nq2 = 5;
+      m_nq3 = 5;
+    } else if ( aid == 1000522 ) {
+      m_nq1 = 1;
+      m_nq2 = 1;
+      m_nq3 = 1;
+    } else if ( aid == 1000039 ) {
+      m_n   = 9;
+      m_nr  = 9;
+      m_nq3 = 1;
+      m_nj  = 0;
+    } else if ( aid == 3100021 ) {
+      m_nq1 = 1;
+      m_nq2 = 1;
+      m_nq3 = 2;
+    }
+    //
+    return { m_extra, m_nj, m_nq3, m_nq2, m_nq1, m_nl, m_nr, m_n };
+  }
+} // namespace
+// Return everything beyond the 7th PDG ID digit.
+int Gaudi::ParticleID::extraBits() const {
+  const unsigned int m_extra = abspid() / 10000000;
+  return 45 == m_extra ? 100u : 46 == m_extra ? 100u : 47 == m_extra ? 100u : 49 == m_extra ? 100u : m_extra;
+}
+/*  Return the fundamental ID.
+ *  This is 0 for nuclie, mesons, baryons, and di-quarks.
+ *  Otherwise, this is the first two digits of the PDG ID
+ */
+int Gaudi::ParticleID::fundamentalID() const {
+  //
+  DATA               data    = decode( *this );
+  const unsigned int m_extra = data[0];
+  const unsigned int m_nl    = data[Gaudi::ParticleID::nl];
+  const unsigned int m_nq1   = data[Gaudi::ParticleID::nq1];
+  const unsigned int m_nq2   = data[Gaudi::ParticleID::nq2];
+  const unsigned int m_nq3   = data[Gaudi::ParticleID::nq3];
+  const unsigned int m_nj    = data[Gaudi::ParticleID::nj];
+  //
+  return !m_extra && !( m_nl + m_nq1 + m_nq2 ) ? 10 * m_nq3 + m_nj : 0;
+}
+// Return if the PID is valid.
+bool Gaudi::ParticleID::isValid() const {
+  // Nuclei, geantino, and intermediate.
+  if ( extraBits() ) {
+    return m_pid == 480000000 || m_pid == -990000000 || isNucleus();
+  }
+  // Standard model particles.
+  else if ( abspid() < 100 || isHadron() || isDiQuark() ) {
+    return true;
+  }
+  // Beyond the standard model particles.
+  else {
+    return !isSM();
+  }
+}
+// Return if the PID is from the standard model.
+bool Gaudi::ParticleID::isSM() const {
+  DATA               data = decode( *this );
+  const unsigned int m_n  = data[Gaudi::ParticleID::n];
+  const unsigned int m_nr = data[Gaudi::ParticleID::nr];
+  //
+  return m_n < 1 || ( m_n == 9 && m_nr != 9 );
+}
+// Return if the PID is for a meson.
+bool Gaudi::ParticleID::isMeson() const {
+  //
+  if ( !isSM() ) { return false; }
+  //
+  DATA               data  = decode( *this );
+  const unsigned int m_nq1 = data[Gaudi::ParticleID::nq1];
+  const unsigned int m_nq2 = data[Gaudi::ParticleID::nq2];
+  const unsigned int m_nq3 = data[Gaudi::ParticleID::nq3];
+  const unsigned int m_nj  = data[Gaudi::ParticleID::nj];
+  //
+  return m_nq1 == 0 && m_nq2 != 0 && m_nq3 != 0 && m_nj != 0 && !( pid() < 0 && m_nq2 == m_nq3 );
+}
+// Return if the PID is for a baryon.
+bool Gaudi::ParticleID::isBaryon() const {
+  //
+  if ( !isSM() ) { return false; }
+  //
+  DATA               data  = decode( *this );
+  const unsigned int m_nq1 = data[Gaudi::ParticleID::nq1];
+  const unsigned int m_nq2 = data[Gaudi::ParticleID::nq2];
+  const unsigned int m_nq3 = data[Gaudi::ParticleID::nq3];
+  const unsigned int m_nj  = data[Gaudi::ParticleID::nj];
+  //
+  return m_nq1 != 0 && m_nq2 != 0 && m_nq3 != 0 && m_nj != 0;
+}
+// Return if the PID is for a di-quark.
+bool Gaudi::ParticleID::isDiQuark() const {
+  //
+  if ( !isSM() ) { return false; }
+  //
+  DATA               data  = decode( *this );
+  const unsigned int m_nq1 = data[Gaudi::ParticleID::nq1];
+  const unsigned int m_nq2 = data[Gaudi::ParticleID::nq2];
+  const unsigned int m_nq3 = data[Gaudi::ParticleID::nq3];
+  const unsigned int m_nj  = data[Gaudi::ParticleID::nj];
+  //
+  return m_nq1 != 0 && m_nq2 != 0 && m_nq3 == 0 && m_nj != 0 && !( m_nj == 1 && m_nq1 == m_nq2 );
+}
+// Return if the PID is for a hadron.
+bool Gaudi::ParticleID::isHadron() const { return isMeson() || isBaryon(); }
+// Return if the PID is for a lepton.
+bool Gaudi::ParticleID::isLepton() const {
+  const unsigned int apid = abspid();
+  return 11 <= apid && apid <= 18;
+}
+// Return if the PID is for a nucleus.
+bool Gaudi::ParticleID::isNucleus() const { return 100 <= extraBits() && Z() <= A(); }
+// Return if the PID is for a bare quark.
+bool Gaudi::ParticleID::isQuark() const {
+  const unsigned int apid = abspid();
+  return Gaudi::ParticleID::Quark::first <= apid && apid <= Gaudi::ParticleID::Quark::last;
+}
+// Return if the PID is a particle with quarks, but not a nucleus.
+bool Gaudi::ParticleID::hasQuarks() const { return !extraBits() && !fundamentalID(); }
+// Return if the PID is a particle containing a specified quark flavor.
+bool Gaudi::ParticleID::hasQuark( const Quark& q ) const {
+  if ( abspid() == q ) { return true; }
+  if ( !hasQuarks() ) { return false; }
+  //
+  DATA               data  = decode( *this );
+  const unsigned int m_nq1 = data[Gaudi::ParticleID::nq1];
+  const unsigned int m_nq2 = data[Gaudi::ParticleID::nq2];
+  const unsigned int m_nq3 = data[Gaudi::ParticleID::nq3];
+  //
+  return q == m_nq3 || q == m_nq2 || q == m_nq1;
+}
+// Return three times the charge, in units of e+, valid for all particles.
+int Gaudi::ParticleID::threeCharge() const {
+  // Lookup table for charges. The Xu+ (43) and Xu0 (44) break the PDG
+  // conventions and are EvtGen specific. The c-hadron (84), b-hadron
+  // (85), t-hadron (86), b'-hadron (87), are LHCb specific but within
+  // the acceptable 81 - 100 range. A double charged Higgs is inserted
+  // as 9 and a gravintino as 10.
+  static const int   q[101] = { 0,  -1, 2,  -1, 2,  -1, 2,  -1, 2, 6, 0, // 1  - 10.
+                                -3, 0,  -3, 0,  -3, 0,  -3, 0,  0, 0,    // 11 - 20.
+                                0,  0,  0,  3,  0,  0,  0,  0,  0, 0,    // 21 - 30.
+                                0,  0,  0,  3,  0,  0,  3,  0,  0, 0,    // 31 - 40.
+                                0,  -1, 0,  3,  0,  0,  0,  0,  0, 0,    // 41 - 50.
+                                0,  0,  0,  0,  0,  0,  0,  0,  0, 0,    // 51 - 60.
+                                0,  0,  0,  0,  0,  0,  0,  0,  0, 0,    // 61 - 70.
+                                0,  0,  0,  0,  0,  0,  0,  0,  0, 0,    // 71 - 80.
+                                0,  0,  0,  2,  -1, 2,  -1, 0,  0, 0,    // 81 - 90.
+                                0,  0,  0,  0,  0,  0,  0,  0,  0, 0 };  // 91 - 100.
+  const unsigned int fid    = fundamentalID();
+  int                charge = 0;
+  //
+  DATA               data  = decode( *this );
+  const unsigned int m_nq1 = data[Gaudi::ParticleID::nq1];
+  const unsigned int m_nq2 = data[Gaudi::ParticleID::nq2];
+  const unsigned int m_nq3 = data[Gaudi::ParticleID::nq3];
+
+  // Nuclei.
+  if ( isNucleus() ) {
+    charge = 3 * Z();
+  }
+  // Fundamental particles from the charge table.
+  else if ( fid ) {
+    charge = q[fid];
+  }
+  // Mesons.
+  else if ( !m_nq1 ) {
+    charge = abs( q[m_nq2] - q[m_nq3] );
+  }
+  // Everything else.
+  else {
+    charge = q[m_nq3] + q[m_nq2] + q[m_nq1];
+  }
+
+  return ( pid() < 0 ? -1 : 1 ) * charge;
+}
+// Return 2J+1, where J is the total spin, valid for all particles.
+int Gaudi::ParticleID::jSpin() const {
+  // Lookup table for spins. The Xu+ (43) and Xu0 (44) break the PDG
+  // conventions and are EvtGen specific. The c-hadron (84), b-hadron
+  // (85), t-hadron (86), b'-hadron (87), are LHCb specific but within
+  // the acceptable 81 - 100 range. A double charged Higgs is inserted
+  // as 9 and a gravintino is inserted as 10.
+  static const unsigned int j[101] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 1, 4, // 1  - 10.
+                                       2, 2, 2, 2, 2, 2, 2, 2, 0, 0,    // 11 - 20.
+                                       3, 3, 3, 3, 1, 0, 0, 0, 0, 0,    // 21 - 30.
+                                       0, 3, 3, 3, 1, 1, 1, 1, 5, 0,    // 31 - 40.
+                                       3, 1, 0, 0, 1, 1, 0, 0, 0, 0,    // 41 - 50.
+                                       1, 2, 3, 1, 3, 1, 1, 1, 1, 1,    // 51 - 60.
+                                       0, 0, 0, 0, 0, 0, 0, 0, 0, 0,    // 61 - 70.
+                                       0, 0, 0, 0, 0, 0, 0, 0, 0, 0,    // 71 - 80.
+                                       0, 0, 0, 0, 0, 0, 0, 0, 0, 0,    // 81 - 90.
+                                       0, 0, 3, 0, 0, 0, 0, 0, 0, 0 };  // 91 - 100.
+  const unsigned int        fid    = fundamentalID();
+  int                       spin   = 0;
+  //
+  DATA               data  = decode( *this );
+  const unsigned int m_n   = data[Gaudi::ParticleID::n];
+  const unsigned int m_nq3 = data[Gaudi::ParticleID::nq3];
+  const unsigned int m_nj  = data[Gaudi::ParticleID::nj];
+  //
+  // Fundamental particles from the spin table.
+  if ( fid ) {
+    // Supersymmetric particles.
+    if ( m_n == 1 || m_n == 2 || m_n == 3 ) {
+      spin = j[fid] % 2 + 1;
+    }
+    // Standard particles.
+    else {
+      spin = j[fid];
+    }
+  }
+  // Nuclei.
+  else if ( isNucleus() ) {
+    spin = m_nq3 % 2 + 1;
+  }
+  // Everything else.
+  else {
+    spin = m_nj;
+  }
+  //
+  return spin;
+}
+
+// Return 2S+1, where S is the spin, valid only for mesons.
+int Gaudi::ParticleID::sSpin() const {
+  //
+  if ( !isMeson() ) { return 0; }
+  //
+  DATA               data = decode( *this );
+  const unsigned int m_n  = data[Gaudi::ParticleID::n];
+  const unsigned int m_nl = data[Gaudi::ParticleID::nl];
+  const unsigned int m_nj = data[Gaudi::ParticleID::nj];
+  //
+  if ( m_n == 9 ) {
+    return 0;
+  } else if ( m_nj == 1 ) {
+    return m_nl;
+  } else if ( m_nl == 1 ) {
+    return 0;
+  } else {
+    return 1;
+  }
+}
+
+// Return 2L+1, where L is the orbital angular momentum, valid only for mesons.
+int Gaudi::ParticleID::lSpin() const {
+  //
+  if ( !isMeson() ) { return 0; }
+  //
+  DATA               data = decode( *this );
+  const unsigned int m_n  = data[Gaudi::ParticleID::n];
+  const unsigned int m_nl = data[Gaudi::ParticleID::nl];
+  const unsigned int m_nj = data[Gaudi::ParticleID::nj];
+  //
+  if ( m_n == 9 ) {
+    return 0;
+  } else if ( m_nj == 1 ) {
+    return m_nl;
+  } else if ( m_nl == 0 ) {
+    return ( m_nj - 3 ) / 2;
+  } else if ( m_nl == 3 ) {
+    return ( m_nj + 1 ) / 2;
+  } else {
+    return ( m_nj - 1 ) / 2;
+  }
+}
+// Return the atomic number for a nucleus.
+int Gaudi::ParticleID::Z() const {
+  if ( extraBits() < 100 ) { return 0; }
+  //
+  DATA data = decode( *this );
+  //
+  const unsigned int m_n  = data[Gaudi::ParticleID::n];
+  const unsigned int m_nr = data[Gaudi::ParticleID::nr];
+  const unsigned int m_nl = data[Gaudi::ParticleID::nl];
+  //
+  return m_n * 100 + m_nr * 10 + m_nl;
+}
+// Return the nucleon number for a nucleus.
+int Gaudi::ParticleID::A() const {
+  if ( extraBits() < 100 ) { return 0; }
+  //
+  DATA               data  = decode( *this );
+  const unsigned int m_nq1 = data[Gaudi::ParticleID::nq1];
+  const unsigned int m_nq2 = data[Gaudi::ParticleID::nq2];
+  const unsigned int m_nq3 = data[Gaudi::ParticleID::nq3];
+  //
+  return m_nq1 * 100 + m_nq2 * 10 + m_nq3;
+}
+// Return the number of strange quarks for a nucleus.
+int Gaudi::ParticleID::nLambda() const {
+  const unsigned int m_extra = extraBits();
+  return 100 <= m_extra ? m_extra - 100 : 0;
+}
+// Fill a stream with the PID.
+std::ostream& Gaudi::ParticleID::fillStream( std::ostream& s ) const {
+  return s << "Gaudi.ParticleID(" << m_pid << ")";
+}
+// Return the PID stream representation as a string.
+std::string Gaudi::ParticleID::toString() const {
+  std::ostringstream s;
+  fillStream( s );
+  return s.str();
+}
+
+// Fill a stream with the PID digit enumeration.
+std::ostream& Gaudi::ParticleID::printLocation( const long l, std::ostream& s ) {
+  switch ( l ) {
+  case Gaudi::ParticleID::nj:
+    return s << "Gaudi.ParticleID.nj";
+  case Gaudi::ParticleID::nq3:
+    return s << "Gaudi.ParticleID.nq3";
+  case Gaudi::ParticleID::nq2:
+    return s << "Gaudi.ParticleID.nq2";
+  case Gaudi::ParticleID::nq1:
+    return s << "Gaudi.ParticleID.nq1";
+  case Gaudi::ParticleID::nl:
+    return s << "Gaudi.ParticleID.nl";
+  case Gaudi::ParticleID::nr:
+    return s << "Gaudi.ParticleID.nr";
+  case Gaudi::ParticleID::n:
+    return s << "Gaudi.ParticleID.n";
+  case Gaudi::ParticleID::n8:
+    return s << "Gaudi.ParticleID.n8";
+  case Gaudi::ParticleID::n9:
+    return s << "Gaudi.ParticleID.n9";
+  case Gaudi::ParticleID::n10:
+    return s << "Gaudi.ParticleID.n10";
+  default:;
+  }
+  return s << "Gaudi.ParticleID.Location(" << l << ")";
+}
+
+// Return the PID digit enumeration stream representation as a string.
+std::string Gaudi::ParticleID::printLocation( const long l ) {
+  std::ostringstream s;
+  printLocation( l, s );
+  return s.str();
+}
+
+// Fill a stream with the PID quark enumeration.
+std::ostream& Gaudi::ParticleID::printQuark( const long q, std::ostream& s ) {
+  switch ( q ) {
+  case Gaudi::ParticleID::down:
+    return s << "Gaudi.ParticleID.down";
+  case Gaudi::ParticleID::up:
+    return s << "Gaudi.ParticleID.up";
+  case Gaudi::ParticleID::strange:
+    return s << "Gaudi.ParticleID.strange";
+  case Gaudi::ParticleID::charm:
+    return s << "Gaudi.ParticleID.charm";
+  case Gaudi::ParticleID::bottom:
+    return s << "Gaudi.ParticleID.bottom";
+  case Gaudi::ParticleID::top:
+    return s << "Gaudi.ParticleID.top";
+  case Gaudi::ParticleID::bottom_prime:
+    return s << "Gaudi.ParticleID.bottom_prime";
+  case Gaudi::ParticleID::top_prime:
+    return s << "Gaudi.ParticleID.top_prime";
+  default:;
+  }
+  return s << "Gaudi.ParticleID.Quark(" << q << ")";
+}
+
+// Return the PID quark enumeration stream representation as a string.
+std::string Gaudi::ParticleID::printQuark( const long q ) {
+  std::ostringstream s;
+  printQuark( q, s );
+  return s.str();
+}
diff --git a/GaudiPartProp/src/ParticleProperty.cpp b/GaudiPartProp/src/ParticleProperty.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..7ccd9b28c1a416d11a6c806ae9467a42e0ce127f
--- /dev/null
+++ b/GaudiPartProp/src/ParticleProperty.cpp
@@ -0,0 +1,408 @@
+/***********************************************************************************\
+* (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations *
+*                                                                                   *
+* This software is distributed under the terms of the Apache version 2 licence,     *
+* copied verbatim in the file "LICENSE".                                            *
+*                                                                                   *
+* In applying this licence, CERN does not waive the privileges and immunities       *
+* granted to it by virtue of its status as an Intergovernmental Organization        *
+* or submit itself to any jurisdiction.                                             *
+\***********************************************************************************/
+#include <Gaudi/Interfaces/IParticlePropertySvc.h>
+#include <Gaudi/ParticleID.h>
+#include <Gaudi/ParticleProperty.h>
+#include <GaudiKernel/MsgStream.h>
+#include <GaudiKernel/SystemOfUnits.h>
+#include <GaudiKernel/ToStream.h>
+#include <boost/format.hpp>
+#include <ostream>
+
+/** @file
+ *  Implementation file for class Gaudi:::ParticleProperty
+ *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+ *  @date 2008-08-03
+ */
+/*  standard output operator to the stream
+ *  @param stream the stream
+ *  @param pp    the particle property object
+ *  @return the stream
+ */
+std::ostream& operator<<( std::ostream& stream, const Gaudi::ParticleProperty& pp ) { return pp.fillStream( stream ); }
+/*  full constructor, from all data (except the antiparticle )
+ *  @param name       the name for the particle
+ *  @param pid        the PID for the particle
+ *  @param charge     the charge of the particle
+ *  @param mass       the nominal mass of the particle
+ *  @param tlife      the nominal lifetime of the particle
+ *  @param evtGen     the name of particle in EvtGen program
+ *  @param pythia     the ID for the particle used in Pythia generator
+ *  @param maxWidth   the maximal width of the particle (used in generator)
+ */
+Gaudi::ParticleProperty::ParticleProperty( const std::string& name, const Gaudi::ParticleID& pid, const double charge,
+                                           const double mass, const double tlife, const double maxWidth,
+                                           const std::string& evtgen, const int pythia )
+    : m_name( name )
+    , m_pid( pid )
+    , m_charge( charge )
+    , m_mass( mass )
+    , m_tlife( tlife )
+    , m_maxWidth( maxWidth )
+    , m_evtgen( evtgen )
+    , m_pythia( pythia )
+    , m_anti( 0 ) {}
+/*  A bit simplified constructor, from all data (except the antiparticle )
+ *
+ *    - "evtgen" is set from the regular "name"
+ *    - "pythia" is set from the regular PID
+ *
+ *  @param name       the name for the particle
+ *  @param pid        the PID for the particle
+ *  @param charge     the charge of the particle
+ *  @param mass       the nominal mass of the particle
+ *  @param tlife      the nominal lifetime of the particle
+ *  @param maxWidth   the maximal width of the particle (used in generator)
+ */
+Gaudi::ParticleProperty::ParticleProperty( const std::string& name, const Gaudi::ParticleID& pid, const double charge,
+                                           const double mass, const double tlife, const double maxWidth )
+    : m_name( name )
+    , m_pid( pid )
+    , m_charge( charge )
+    , m_mass( mass )
+    , m_tlife( tlife )
+    , m_maxWidth( maxWidth )
+    , m_evtgen( name )
+    , m_pythia( pid.pid() )
+    , m_anti( 0 ) {}
+/*  the standard (a'la Gaudi) printout of the object
+ *  @param s reference to the output stream
+ *  @return reference to the output stream
+ */
+std::ostream& Gaudi::ParticleProperty::fillStream( std::ostream& s ) const {
+  //
+  typedef boost::format BF;
+  //
+  // name & code
+  s << BF( "%1$-14s %|16t| PDG:%2$9d," ) % name() % particleID().pid();
+#ifdef __INTEL_COMPILER             // Disable ICC remark
+#  pragma warning( disable : 1572 ) // Floating-point equality and inequality comparisons are unreliable
+#  pragma warning( push )
+#endif
+  // charge
+  if ( 0 == charge() ) {
+    s << " Q:   0";
+  } else if ( 1.0 == charge() ) {
+    s << " Q:  +1";
+  } else if ( -1.0 == charge() ) {
+    s << " Q:  -1";
+  } else if ( 2.0 == charge() ) {
+    s << " Q:  +2";
+  } else if ( -2.0 == charge() ) {
+    s << " Q:  -2";
+  } else if ( 0.3 == charge() ) {
+    s << " Q:+1/3";
+  } else if ( -0.3 == charge() ) {
+    s << " Q:-1/3";
+  } else if ( 0.7 == charge() ) {
+    s << " Q:+2/3";
+  } else if ( -0.7 == charge() ) {
+    s << " Q:-2/3";
+  } else {
+    s << BF( " Q:%|+3.1f|," ) % float( charge() );
+  }
+#ifdef __INTEL_COMPILER // Re-enable ICC remark
+#  pragma warning( pop )
+#endif
+  // mass
+  if ( mass() < 1 * Gaudi::Units::MeV ) {
+    s << BF( ", mass:%|9.6g| keV" ) % ( mass() / Gaudi::Units::keV );
+  } else if ( mass() < 1 * Gaudi::Units::GeV ) {
+    s << BF( ", mass:%|9.6g| MeV" ) % ( mass() / Gaudi::Units::MeV );
+  } else {
+    s << BF( ", mass:%|9.6g| GeV" ) % ( mass() / Gaudi::Units::GeV );
+  }
+  // lifetime
+  if ( 1 * Gaudi::Units::km < ctau() ) {
+    s << ", lifetime: infinity  ";
+  } else if ( 0 == lifeTime() ) {
+  } // ATTENTION!!
+  else if ( 1 * Gaudi::Units::meter < ctau() ) {
+    s << BF( ",  ctau:%|12.6g| m" ) % ( ctau() / Gaudi::Units::meter );
+  } else if ( 1 * Gaudi::Units::cm < ctau() ) {
+    s << BF( ",  ctau:%|11.6g| cm" ) % ( ctau() / Gaudi::Units::cm );
+  } else if ( 0.5 * Gaudi::Units::mm < ctau() ) {
+    s << BF( ",  ctau:%|11.6g| mm" ) % ( ctau() / Gaudi::Units::mm );
+  } else if ( 0.1 * Gaudi::Units::micrometer < ctau() ) {
+    s << BF( ",  ctau:%|11.6g| um" ) % ( ctau() / Gaudi::Units::micrometer );
+  } else if ( 1 * Gaudi::Units::GeV <= width() ) {
+    s << BF( ", width:%|10.6g| GeV" ) % ( width() / Gaudi::Units::GeV );
+  } else if ( 1 * Gaudi::Units::MeV <= width() ) {
+    s << BF( ", width:%|10.6g| MeV" ) % ( width() / Gaudi::Units::MeV );
+  } else if ( 1 * Gaudi::Units::keV <= width() ) {
+    s << BF( ", width:%|10.6g| keV" ) % ( width() / Gaudi::Units::keV );
+  } else if ( 1 * Gaudi::Units::eV <= width() ) {
+    s << BF( ", width:%|10.6g| eV" ) % ( width() / Gaudi::Units::eV );
+  } else {
+    s << BF( ", ltime:%|12.6g| ns" ) % ( lifetime() / Gaudi::Units::ns );
+  }
+  // Evt Gen name
+  if ( evtGen() != name() ) { s << BF( ", EvtGen: %|-10s|" ) % evtGen(); }
+  // pythia ID
+  if ( m_pid.pid() != pythia() ) { s << BF( ", Pythia: %|-9d|" ) % pythia(); }
+  return s;
+}
+// simple method for conversion into string
+std::string Gaudi::ParticleProperty::toString() const {
+  std::ostringstream s;
+  fillStream( s );
+  return s.str();
+}
+/*  set the pointer to the antipartice
+ *  @attention it is the only one "setter"
+ *  @param p pointer to anti-particle
+ */
+void Gaudi::ParticleProperty::setAntiParticle( const ParticleProperty* p ) { m_anti = p; }
+
+/*  print a list of properties in a form of the table
+ *  @see Gaudi::ParticleProperty
+ *  @param particles the list of particle properties
+ *  @param stream  the reference to the output stream
+ *  @param service the service to extract global information
+ *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+ *  @date  2008-08-03
+ */
+std::ostream& Gaudi::ParticleProperties::printAsTable_( const std::vector<const Gaudi::ParticleProperty*>& particles,
+                                                        std::ostream&                                      stream,
+                                                        const Gaudi::Interfaces::IParticlePropertySvc*     service ) {
+  std::string fmt, hdr;
+  //
+  if ( 0 != service ) {
+    fmt += " | %|-4.4s| "; // index
+    hdr += " | %|-4.4s| "; // index
+  }
+  //
+  fmt += "| %|-18.18s|";  // the name
+  fmt += "| %|12d| ";     // PDGID
+  fmt += "| %|=4s| ";     // charge
+  fmt += "| %|13.8g|";    // mass
+  fmt += " %|-3s| ";      // unit
+  fmt += "| %|13.8g|";    // lifetime/gamma/ctau
+  fmt += " %|-3s| ";      // unit
+  fmt += "| %|=10.4g| ";  // maxwidth
+  fmt += "| %|=20.20s|";  // evtgen name
+  fmt += " | %|=10d| |";  // pythia ID
+  fmt += " %|=20.20d| |"; // antiparticle
+  //
+  hdr += "| %|=18.18s|";  // the name
+  hdr += "| %|=12.12s| "; // PDGID
+  hdr += "| %|=4.4s| ";   // charge
+  hdr += "| %|=18.18s|";  // mass
+  // hdr +=   "%|=5.5s|"     ;  // unit
+  hdr += "| %|=18.18s|"; // lifetime/gamma/ctau
+  // hdr +=   "%|=5.5s|"     ;  // unit
+  hdr += "| %|=10.10g| ";   // maxwidth
+  hdr += "| %|=20.20s|";    // evtgen name
+  hdr += " | %|=10.10s| |"; // pythia ID
+  hdr += " %|=20.20d| |";   // antiparticle
+
+  boost::format header( hdr );
+  header.exceptions( boost::io::all_error_bits ^ ( boost::io::too_many_args_bit | boost::io::too_few_args_bit ) );
+
+  if ( service ) { header % "#"; }
+  header % "Name" % "PdgID" % "Q" % "Mass" % "(c*)Tau/Gamma" % "MaxWidth" % "EvtGen" % "PythiaID" % "Antiparticle";
+
+  const std::string hdrLine = header.str();
+  const std::string dashes  = " " + std::string( hdrLine.size() - 1, '-' );
+  stream << dashes << std::endl << hdrLine << std::endl << dashes << std::endl;
+
+  for ( auto ip = particles.begin(); particles.end() != ip; ++ip ) {
+    const Gaudi::ParticleProperty* pp = *ip;
+    if ( 0 == pp ) { continue; }
+    boost::format line( fmt );
+    line.exceptions( boost::io::all_error_bits ^ ( boost::io::too_many_args_bit | boost::io::too_few_args_bit ) );
+    //
+    if ( 0 != service ) {
+      size_t index = Gaudi::ParticleProperties::index( pp, service );
+      if ( 0 == index ) {
+        line % "?";
+      } else {
+        line % index;
+      }
+    }
+    //
+    line % pp->name()               // name
+        % pp->particleID().pid();   // PDG-ID
+                                    //
+#ifdef __INTEL_COMPILER             // Disable ICC remark
+#  pragma warning( disable : 1572 ) // Floating-point equality and inequality comparisons are unreliable
+#  pragma warning( push )
+#endif
+    if ( 0 == pp->charge() ) {
+      line % "0";
+    } else if ( 0.3 == pp->charge() ) {
+      line % "+1/3";
+    } else if ( -0.3 == pp->charge() ) {
+      line % "-1/3";
+    } else if ( 0.7 == pp->charge() ) {
+      line % "+2/3";
+    } else if ( -0.7 == pp->charge() ) {
+      line % "-2/3";
+    } else {
+      line % pp->charge();
+    }
+#ifdef __INTEL_COMPILER // Re-enable ICC remark
+#  pragma warning( pop )
+#endif
+    //
+    // mass
+    if ( pp->mass() < 1 * Gaudi::Units::keV ) {
+      line % ( pp->mass() / Gaudi::Units::eV ) % "eV";
+    } else if ( pp->mass() < 1 * Gaudi::Units::MeV ) {
+      line % ( pp->mass() / Gaudi::Units::keV ) % "keV";
+    } else if ( pp->mass() < 1 * Gaudi::Units::GeV ) {
+      line % ( pp->mass() / Gaudi::Units::MeV ) % "MeV";
+    } else if ( pp->mass() < 1 * Gaudi::Units::TeV ) {
+      line % ( pp->mass() / Gaudi::Units::GeV ) % "GeV";
+    } else {
+      line % ( pp->mass() / Gaudi::Units::TeV ) % "TeV";
+    }
+    // lifetime/width/ctau
+    const double ctau  = pp->ctau();
+    const double width = pp->width();
+    const double ltime = pp->lifetime();
+    if ( 3600 * Gaudi::Units::second < ltime ) {
+      line % "stable" % "";
+    } else if ( 1 * Gaudi::Units::second < ltime ) {
+      line % ( ltime / Gaudi::Units::second ) % "s";
+    } else if ( 1 * Gaudi::Units::meter < ctau ) {
+      line % ( ctau / Gaudi::Units::meter ) % "m";
+    } else if ( 1 * Gaudi::Units::cm < ctau ) {
+      line % ( ctau / Gaudi::Units::cm ) % "cm";
+    } else if ( 0.5 * Gaudi::Units::mm < ctau ) {
+      line % ( ctau / Gaudi::Units::mm ) % "mm";
+    } else if ( 0.1 * Gaudi::Units::micrometer < ctau ) {
+      line % ( ctau / Gaudi::Units::micrometer ) % "um";
+    } else if ( 1 * Gaudi::Units::GeV < width ) {
+      line % ( width / Gaudi::Units::GeV ) % "GeV";
+    } else if ( 1 * Gaudi::Units::MeV < width ) {
+      line % ( width / Gaudi::Units::MeV ) % "MeV";
+    } else if ( 1 * Gaudi::Units::keV < width ) {
+      line % ( width / Gaudi::Units::keV ) % "keV";
+    } else if ( 1 * Gaudi::Units::eV < width ) {
+      line % ( width / Gaudi::Units::eV ) % "eV";
+    } else {
+      line % ( ltime / Gaudi::Units::ns ) % "ns";
+    }
+    //
+    line % pp->maxWidth() % pp->evtGen() % pp->pythia();
+    //
+    const Gaudi::ParticleProperty* const anti = pp->antiParticle();
+    //
+    if ( 0 == anti ) {
+      line % "-";
+    } else if ( anti == pp ) {
+      line % "self-cc";
+    } else {
+      line % anti->name();
+    }
+    //
+    stream << line << std::endl;
+  }
+  return stream << dashes << std::endl;
+}
+/*  print a list of properties in a form of the table
+ *  @see Gaudi::ParticleProperty
+ *  @param particles the list of particle properties
+ *  @param service the service to extract global information
+ *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+ *  @date  2008-08-03
+ */
+std::string Gaudi::ParticleProperties::printAsTable( const std::vector<const Gaudi::ParticleProperty*>& particles,
+                                                     const Gaudi::Interfaces::IParticlePropertySvc*     service ) {
+  std::ostringstream s;
+  printAsTable_( particles, s, service );
+  return s.str();
+}
+/*  print a list of properties in a form of the table
+ *  @see Gaudi::ParticleProperty
+ *  @param particles the list of particle properties
+ *  @param stream  the reference to the output stream
+ *  @param service the service to extract global information
+ *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+ *  @date  2008-08-03
+ */
+MsgStream& Gaudi::ParticleProperties::printAsTable( const std::vector<const Gaudi::ParticleProperty*>& particles,
+                                                    MsgStream&                                         stream,
+                                                    const Gaudi::Interfaces::IParticlePropertySvc*     service ) {
+  if ( stream.isActive() ) { printAsTable_( particles, stream.stream(), service ); }
+  return stream;
+}
+/*  print a list of particle properties as formatted table
+ *  @see Gaudi::ParticleProperty
+ *  @param particles the list of particle properties
+ *  @param stream the reference to the output stream
+ *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+ *  @date  2008-08-03
+ */
+std::ostream& Gaudi::Utils::toStream( const std::vector<const Gaudi::ParticleProperty*>& particles,
+                                      std::ostream&                                      stream ) {
+  return Gaudi::ParticleProperties::printAsTable_( particles, stream );
+}
+/* print properties in a form of the table
+ *  @param particles (INPUT) list of particles
+ *  @param stream    (UPDATE) the stream
+ *  @param service   (INPUT) pointer to particle property service
+ *  @return the stream
+ *  @author Vanya BELYAEV Ivan.Belyaev@itep.ru
+ *  @date  2010-01-04
+ */
+std::ostream& Gaudi::ParticleProperties::printAsTable_( const std::vector<Gaudi::ParticleID>&          particles,
+                                                        std::ostream&                                  stream,
+                                                        const Gaudi::Interfaces::IParticlePropertySvc* service ) {
+  //
+  if ( 0 == service ) { return Gaudi::Utils::toStream( particles, stream ); }
+
+  // convert list of ParticleIDs to list fo Particle properties:
+  std::vector<const Gaudi::ParticleProperty*> props;
+  for ( std::vector<Gaudi::ParticleID>::const_iterator ipid = particles.begin(); particles.end() != ipid; ++ipid ) {
+    const Gaudi::ParticleProperty* pp = service->find( *ipid );
+    if ( 0 == pp ) { continue; }
+    props.push_back( pp );
+  }
+  return printAsTable_( props, stream, service );
+}
+/* print properties in a form of the table
+ *  @param particles (INPUT) list of particles
+ *  @param stream    (UPDATE) the stream
+ *  @param service   (INPUT) pointer to particle property service
+ *  @return the stream
+ *  @author Vanya BELYAEV Ivan.Belyaev@itep.ru
+ *  @date  2010-01-04
+ */
+MsgStream& Gaudi::ParticleProperties::printAsTable( const std::vector<Gaudi::ParticleID>& particles, MsgStream& stream,
+                                                    const Gaudi::Interfaces::IParticlePropertySvc* service ) {
+  if ( stream.isActive() ) { printAsTable_( particles, stream.stream(), service ); }
+  return stream;
+}
+/*  print properties in a form of the table
+ *  @param particles (INPUT) list of particles
+ *  @param service   (INPUT) pointer to particle property service
+ *  @return string-representation
+ *  @author Vanya BELYAEV Ivan.Belyaev@itep.ru
+ *  @date  2010-01-04
+ */
+std::string Gaudi::ParticleProperties::printAsTable( const std::vector<Gaudi::ParticleID>&          particles,
+                                                     const Gaudi::Interfaces::IParticlePropertySvc* service ) {
+  std::ostringstream s;
+  printAsTable_( particles, s, service );
+  return s.str();
+}
+const Gaudi::ParticleProperty* std::abs( const Gaudi::ParticleProperty* p ) {
+  if ( 0 == p ) { return 0; }
+  //
+  if ( p->selfcc() || 0 <= p->particleID().pid() ) { return p; }
+  //
+  const Gaudi::ParticleProperty* a = p->anti();
+  if ( 0 != a && 0 <= a->particleID().pid() ) { return a; }
+  //
+  return p; // should it be 0 ?
+}
diff --git a/GaudiPartProp/src/ParticlePropertySvc.cpp b/GaudiPartProp/src/ParticlePropertySvc.cpp
deleted file mode 100644
index c9fab16ada03276ddc7d4fe5089755a78869aa71..0000000000000000000000000000000000000000
--- a/GaudiPartProp/src/ParticlePropertySvc.cpp
+++ /dev/null
@@ -1,425 +0,0 @@
-/***********************************************************************************\
-* (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
-*                                                                                   *
-* This software is distributed under the terms of the Apache version 2 licence,     *
-* copied verbatim in the file "LICENSE".                                            *
-*                                                                                   *
-* In applying this licence, CERN does not waive the privileges and immunities       *
-* granted to it by virtue of its status as an Intergovernmental Organization        *
-* or submit itself to any jurisdiction.                                             *
-\***********************************************************************************/
-#include "boost/algorithm/string/classification.hpp"
-#include "boost/algorithm/string/split.hpp"
-#include "boost/algorithm/string/trim.hpp"
-#include <cctype>
-#include <fstream>
-namespace ba = boost::algorithm;
-
-#include "GaudiKernel/IFileAccess.h"
-#include "GaudiKernel/ISvcLocator.h"
-#include "GaudiKernel/MsgStream.h"
-#include "GaudiKernel/ParticleProperty.h"
-#include "GaudiKernel/PhysicalConstants.h"
-#include "GaudiKernel/System.h"
-
-#include "ParticlePropertySvc.h"
-
-namespace {
-  // idea coming from The art of computer programming by Knuth
-  constexpr bool essentiallyEqual( double const a, double const b ) {
-    return std::abs( a - b ) <= std::min( std::abs( a ), std::abs( b ) ) * std::numeric_limits<double>::epsilon();
-  }
-} // namespace
-
-namespace Gaudi {
-  /** Instantiation of a static factory class used by clients to create
-   *  instances of this service
-   */
-  DECLARE_COMPONENT( ParticlePropertySvc )
-  // ============================================================================
-  /** @file
-   *
-   * class ParticlePropertySvc Class
-   *
-   * Implement a ParticlePropertySvc
-   *  @author     : I. Last
-   * Modify by  : G.Corti 09/11/1999 to read file from LHCBDBASE and
-   *             introduce find/eraseByStdHepID methods
-   * Modified by Vanya BELYAEV to allow reading of additional files
-   * to add/replace/modify the existing particle properties
-   */
-  // ============================================================================
-  ParticlePropertySvc::ParticlePropertySvc( const std::string& name, ISvcLocator* svc ) : base_class( name, svc ) {
-    /// @todo: remove reference to LHCb-specific environment variable
-    // Redefine the default name:
-    if ( System::getEnv( "PARAMFILESROOT", m_filename.value() ) ) { m_filename.value() += "/data/ParticleTable.txt"; }
-  }
-  // ============================================================================
-  /// initialize the service and setProperties
-  // ============================================================================
-  StatusCode ParticlePropertySvc::initialize() {
-    StatusCode sc = Service::initialize();
-    if ( sc.isFailure() ) { return sc; }
-
-    m_fileAccess = service( "VFSSvc" );
-    if ( !m_fileAccess ) {
-      error() << " Cannot retrieve the VFS service " << endmsg;
-      return StatusCode::FAILURE;
-    }
-
-    sc = parse();
-    if ( sc.isFailure() ) {
-      error() << " Could not parse the file " << endmsg;
-      return sc;
-    }
-    if ( !m_particles.empty() ) {
-      sc = addParticles();
-      if ( sc.isFailure() ) {
-        error() << " Could not treat particles! " << endmsg;
-        return sc;
-      }
-    }
-    debug() << "ParticleProperties parsed successfully" << endmsg;
-
-    debug() << "Access properties" << endmsg;
-    // For debugging purposes print out the size of the internal maps
-    // particle name as key: all particles in database are present here
-    debug() << "NameMap size =" << m_namemap.size() << endmsg;
-    // Geant3 ID as key: all particles in database are present here
-    debug() << "GeantID Map size =" << m_idmap.size() << endmsg;
-    // StdHep ID as key: some particles have no valid StdHep ID
-    debug() << "StdHepID Map size =" << m_stdhepidmap.size() << endmsg;
-    // Pythia ID as key: some particles are not defined in Pythia
-    debug() << "PythiaID Map size =" << m_pythiaidmap.size() << endmsg;
-
-    if ( !m_replaced.empty() ) {
-      info() << "Properties have been redefined for " << m_replaced.size()
-             << " particles : " << Gaudi::Utils::toString( m_replaced ) << endmsg;
-    }
-
-    return StatusCode::SUCCESS;
-  }
-  // =============================================================================
-  /// finalize
-  // =============================================================================
-  StatusCode ParticlePropertySvc::finalize() {
-    if ( !m_other.empty() ) {
-      info() << "Additional Properties have been read from files: " << Gaudi::Utils::toString( m_other ) << endmsg;
-    }
-
-    if ( !m_replaced.empty() ) {
-      always() << "Properties have been redefined for " << m_replaced.size()
-               << " particles : " << Gaudi::Utils::toString( m_replaced ) << endmsg;
-    }
-
-    m_fileAccess.reset();
-
-    /// finalize the base class
-    return Service::finalize();
-  }
-  // =============================================================================
-  /// Create a particle property and insert it in the maps
-  // =============================================================================
-  StatusCode ParticlePropertySvc::push_back( const std::string& particle, int geantId, int jetsetId, double charge,
-                                             double mass, double tlife, const std::string& evtName, int pythiaId,
-                                             double maxWidth ) {
-    //
-    auto& pp = m_owned.emplace_back( particle, geantId, jetsetId, charge, mass, tlife, evtName, pythiaId, maxWidth );
-    return push_back( &pp );
-  }
-  // =============================================================================
-  /// Add a particle property.
-  // =============================================================================
-  StatusCode ParticlePropertySvc::push_back( ParticleProperty* pp ) {
-    if ( !pp ) { return StatusCode::FAILURE; }
-    //
-    { // try to add into Geant(3)ID map
-      const int ID = pp->geantID();
-      // is this already in the map?
-      auto ifind = m_idmap.find( ID );
-      if ( m_idmap.end() != ifind && 0 != m_idmap[ID] ) {
-        diff( ifind->second, pp );
-        m_replaced.insert( m_idmap[ID]->particle() );
-      }
-      // put it into the map
-      m_idmap[ID] = pp;
-    }
-    //
-    { // try to add into Name map
-      const std::string& particle = pp->particle();
-      // is this already in the map?
-      auto ifind = m_namemap.find( particle );
-      if ( ifind != m_namemap.end() && ifind->second ) {
-        diff( ifind->second, pp );
-        m_replaced.insert( ifind->second->particle() );
-      }
-      // put it into the map
-      m_namemap[particle] = pp;
-    }
-    //
-    // add to StdHep map only if StdHep ID different from zero and if
-    // not Cerenkov (StdHep ID = gamma)
-    if ( 0 != pp->jetsetID() && "Tcherenkov" != pp->particle() ) { // try to add into StdHepID map
-      const int ID = pp->jetsetID();
-      // is this already in the map?
-      auto ifind = m_stdhepidmap.find( ID );
-      if ( m_stdhepidmap.end() != ifind && ifind->second ) {
-        diff( ifind->second, pp );
-        m_replaced.insert( ifind->second->particle() );
-      }
-      // put it into the map
-      m_stdhepidmap[ID] = pp;
-    }
-    //
-    // add to Pythia map only if Pythia ID is different from
-    // zero ( StdHep id is always different from zero in this case )
-    if ( 0 != pp->pythiaID() && 0 != pp->jetsetID() && "Tcherenkov" != pp->particle() ) { // try to add into PythiaID
-                                                                                          // map
-      const int ID = pp->pythiaID();
-      // is this already in the map?
-      auto ifind = m_pythiaidmap.find( ID );
-      if ( m_pythiaidmap.end() != ifind && ifind->second ) {
-        diff( ifind->second, pp );
-        m_replaced.insert( ifind->second->particle() );
-      }
-      // put it into the map
-      m_pythiaidmap[ID] = pp;
-    }
-    //
-    return rebuild();
-  }
-  // =============================================================================
-  /// Erase a property from all maps
-  // =============================================================================
-  namespace {
-    template <class MAP>
-    void _remove_( MAP& m, const ParticleProperty* pp ) {
-      auto i = std::find_if( m.begin(), m.end(), [&]( typename MAP::const_reference i ) { return i.second == pp; } );
-      if ( i != m.end() ) { m.erase( i ); }
-    }
-  } // namespace
-  // ============================================================================
-  StatusCode ParticlePropertySvc::erase( const ParticleProperty* pp ) {
-    if ( !pp ) { return StatusCode::FAILURE; }
-
-    _remove_( m_idmap, pp );
-    _remove_( m_namemap, pp );
-    _remove_( m_stdhepidmap, pp );
-    _remove_( m_pythiaidmap, pp );
-    //
-    return rebuild();
-  }
-  // ============================================================================
-  /// Parses the file and fill all the maps
-  // ============================================================================
-  StatusCode ParticlePropertySvc::parse() {
-
-    // parse "the main" file
-    StatusCode sc = parse( m_filename );
-    if ( sc.isFailure() ) { return sc; }
-
-    // parse "other" files
-    for ( auto& file : m_other ) {
-      sc = parse( file );
-      if ( sc.isFailure() ) { return sc; }
-    }
-
-    // Now check that the file format was consistent with what parser
-    // expected
-    if ( m_namemap.empty() ) {
-      error() << "Format of input file inconsistent with what expected"
-              << " - Check you are using ParticleData.txt" << endmsg;
-      return StatusCode::FAILURE;
-    }
-
-    return sc;
-  }
-  // ============================================================================
-  StatusCode ParticlePropertySvc::parse( const std::string& file ) {
-    auto infile = ( m_fileAccess ? m_fileAccess->open( file ) : nullptr );
-    if ( !infile ) {
-      error() << "Unable to open properties file : " << file << endmsg;
-      return StatusCode::FAILURE;
-    }
-
-    StatusCode sc = StatusCode::SUCCESS;
-    info() << "Opened particle properties file : " << file << endmsg;
-
-    std::vector<std::string> tokens;
-    tokens.reserve( 9 );
-    std::string line;
-    while ( std::getline( *infile, line ) ) {
-      // parse each line of the file (comment lines begin with # in the cdf
-      // file,
-      if ( line.front() == '#' ) continue;
-
-      tokens.clear();
-      ba::trim_left_if( line, ba::is_space() );
-      ba::split( tokens, line, ba::is_space(), boost::token_compress_on );
-      if ( tokens.size() != 9 ) continue;
-
-      auto gid = std::stoi( tokens[1] );
-      auto jid = std::stoi( tokens[2] );
-      // Change the particles that do not correspond to a pdg number
-      if ( jid == 0 ) jid = 10000000 * gid;
-
-      // add a particle property
-      sc = push_back( tokens[0], gid, jid, std::stod( tokens[3] ), std::stod( tokens[4] ) * Gaudi::Units::GeV,
-                      std::stod( tokens[5] ) * Gaudi::Units::s, tokens[6], std::stoi( tokens[7] ),
-                      std::stod( tokens[8] ) * Gaudi::Units::GeV );
-
-      if ( sc.isFailure() ) {
-        error() << "Error from ParticlePropertySvc::push_back for particle='" << tokens[0] << "'" << endmsg;
-      }
-    }
-    return StatusCode::SUCCESS;
-  }
-  // ============================================================================
-  /** Helper (protected) function to find an antiparticle for the given
-   *  particle ID (StdHepID)
-   *  @param pp pointer to particle property
-   *  @return pointer to antiparticle
-   */
-  // ============================================================================
-  const ParticleProperty* ParticlePropertySvc::anti( const ParticleProperty* pp ) const {
-    if ( !pp ) { return nullptr; }
-    const int ID     = pp->pdgID();
-    const int antiID = -1 * ID;
-    for ( const auto& ap : m_vectpp ) {
-      if ( ap && antiID == ap->pdgID() ) { return ap; } // RETURN
-    };
-    //
-    return pp; // RETURN
-  }
-  // ============================================================================
-  /** helper (protected) function to set the valid
-   *  particle<-->antiparticle relations
-   *  @return status code
-   */
-  // ============================================================================
-  StatusCode ParticlePropertySvc::setAntiParticles() {
-    // initialize particle<-->antiParticle relations
-    for ( auto& pp : m_vectpp ) {
-      if ( !pp ) { continue; } // CONTINUE
-      const ParticleProperty* ap = anti( pp );
-      if ( ap ) { pp->setAntiParticle( ap ); }
-    }
-    return StatusCode::SUCCESS;
-  }
-  // ============================================================================
-  /// rebuild "the linear container" from the map
-  // ============================================================================
-  namespace {
-    /// load mapped values from maps into set
-    template <typename MAP, typename SET>
-    void _load_( MAP& m, SET& result ) {
-      for ( auto i = m.begin(); m.end() != i; ++i ) { result.insert( i->second ); }
-    }
-  } // namespace
-  // ============================================================================
-  StatusCode ParticlePropertySvc::rebuild() {
-    std::set<mapped_type> local;
-    m_vectpp.clear();
-    m_vectpp.reserve( m_idmap.size() + 100 );
-    // load information from maps into the set
-    _load_( m_idmap, local );
-    _load_( m_namemap, local );
-    _load_( m_stdhepidmap, local );
-    _load_( m_pythiaidmap, local );
-    // load information from set to the linear container vector
-    std::copy( std::begin( local ), std::end( local ), std::back_inserter( m_vectpp ) );
-    return setAntiParticles();
-  }
-  // ============================================================================
-  // treat additional particles
-  // ============================================================================
-  StatusCode ParticlePropertySvc::addParticles() {
-    // loop over all "explicit" particles
-    for ( const auto& item : m_particles ) {
-      std::istringstream input( item );
-      // get the name
-      std::string p_name;
-      int         p_geant;
-      int         p_jetset;
-      double      p_charge;
-      double      p_mass;
-      double      p_ltime;
-      std::string p_evtgen;
-      int         p_pythia;
-      double      p_maxwid;
-      if ( input >> p_name >> p_geant >> p_jetset >> p_charge >> p_mass >> p_ltime >> p_evtgen >> p_pythia >>
-           p_maxwid ) {
-        always() << " Add/Modify the particle: "
-                 << " name='" << p_name << "'"
-                 << " geant=" << p_geant << " jetset=" << p_jetset << " charge=" << p_charge << " mass=" << p_mass
-                 << " ltime=" << p_ltime << " evtgen='" << p_evtgen << "'"
-                 << " pythia=" << p_pythia << " maxwid=" << p_maxwid << endmsg;
-        //
-        StatusCode sc = push_back( p_name, p_geant, p_jetset, p_charge, p_mass * Gaudi::Units::GeV,
-                                   p_ltime * Gaudi::Units::s, p_evtgen, p_pythia, p_maxwid * Gaudi::Units::GeV );
-        if ( sc.isFailure() ) { return sc; } // RETURN
-      } else {
-        error() << " could not parse '" << item << "'" << endmsg;
-        return StatusCode::FAILURE; // RETURN
-      }
-    }
-    //
-    return StatusCode::SUCCESS;
-  }
-  // ============================================================================
-  bool ParticlePropertySvc::diff( const ParticleProperty* o, const ParticleProperty* n, const MSG::Level l ) const {
-    //
-    if ( o == n ) { return false; }
-    //
-    auto& log = msgStream();
-    log << l;
-    if ( !o || !n ) {
-      log << MSG::WARNING << " ParticleProperty* point to NULL" << endmsg;
-      return true; // RETURN
-    }
-    //
-    bool result = false;
-    if ( o->particle() != n->particle() ) {
-      result = true;
-      log << " Name:'" << o->particle() << "'/'" << n->particle() << "'";
-    }
-    if ( o->geantID() != n->geantID() ) {
-      result = true;
-      log << " G3ID:" << o->geantID() << "/" << n->geantID() << "'";
-    }
-    if ( o->pdgID() != n->pdgID() ) {
-      result = true;
-      log << " PDGID:" << o->pdgID() << "/" << n->pdgID() << "'";
-    }
-    if ( o->pythiaID() != n->pythiaID() ) {
-      result = true;
-      log << " PYID:" << o->pythiaID() << "/" << n->pythiaID() << "'";
-    }
-    if ( essentiallyEqual( o->charge(), n->charge() ) ) {
-      result = true;
-      log << " Q:" << o->charge() << "/" << n->charge() << "'";
-    }
-    if ( essentiallyEqual( o->mass(), n->mass() ) ) {
-      result = true;
-      log << " M:" << o->mass() << "/" << n->mass() << "'";
-    }
-    if ( essentiallyEqual( o->lifetime(), n->lifetime() ) ) {
-      result = true;
-      log << " T:" << o->lifetime() << "/" << n->lifetime() << "'";
-    }
-    if ( o->evtGenName() != n->evtGenName() ) {
-      result = true;
-      log << " EvtGen:" << o->evtGenName() << "/" << n->evtGenName() << "'";
-    }
-    if ( essentiallyEqual( o->maxWidth(), n->maxWidth() ) ) {
-      result = true;
-      log << " WMAX:" << o->maxWidth() << "/" << n->maxWidth() << "'";
-    }
-    if ( result ) { log << endmsg; }
-    //
-    return result;
-  }
-} // namespace Gaudi
-// ============================================================================
-// The END
-// ============================================================================
diff --git a/GaudiPartProp/src/ParticlePropertySvc.h b/GaudiPartProp/src/ParticlePropertySvc.h
deleted file mode 100644
index a32f70b06e0ef2cf61a4f8446c063123e10cf9dd..0000000000000000000000000000000000000000
--- a/GaudiPartProp/src/ParticlePropertySvc.h
+++ /dev/null
@@ -1,193 +0,0 @@
-/***********************************************************************************\
-* (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
-*                                                                                   *
-* This software is distributed under the terms of the Apache version 2 licence,     *
-* copied verbatim in the file "LICENSE".                                            *
-*                                                                                   *
-* In applying this licence, CERN does not waive the privileges and immunities       *
-* granted to it by virtue of its status as an Intergovernmental Organization        *
-* or submit itself to any jurisdiction.                                             *
-\***********************************************************************************/
-#ifndef PARTICLEPROPERTYSVC_PARTICLEPROPERTYSVC_H
-#define PARTICLEPROPERTYSVC_PARTICLEPROPERTYSVC_H
-// ============================================================================
-// Include Files
-// ============================================================================
-// STD&STL
-// ============================================================================
-#include <deque>
-#include <map>
-#include <set>
-// ============================================================================
-// GaudiKernel
-// ============================================================================
-#include "GaudiKernel/IParticlePropertySvc.h"
-#include "GaudiKernel/Service.h"
-
-class IFileAccess;
-
-namespace Gaudi {
-  // ============================================================================
-  /** @class ParticlePropertySvc ParticlePropertySvc.h
-   *
-   *  This service provides access to particle properties.
-   *  The settable property of this service is the
-   *  ParticlePropertiesFile, an ASCII file containing the
-   *  list of properties for the particles.
-   *  The default file is:
-   *      "$PARAMFILESROOT/data/ParticleTable.txt"
-   *      or if $PARAMFILESROOT is not defined
-   *      "ParticleTable.txt"
-   *
-   *  @author Iain Last
-   *  @author Gloria Corti
-   *  8/11/1999 change default file from
-   *  $CDF/particle.cdf to $LHCBDBASE/cdf/particle.cdf on Unix
-   *  and use environment variable also on WinNT
-   *  Also introduce finding of particle by StdHepID
-   *
-   *  @author Vanya BELYAEV
-   *  @date 2006-09-22
-   *  1) Modified to add possibility to redefine properties of existing
-   *  particles and to read additional files.
-   *  New property "OtherFiles" (default is empty vector) is introduces.
-   *  Service parsed additional files after the main one.
-   *
-   *    @code
-   *
-   *    // read additional properties
-   *    ParticlePropertySvc.OtherFiles = {
-   *       "$SOMELOCATION1/file1.txt" ,
-   *       "$SOMELOCATION2/file2.txt"
-   *    } ;
-   *
-   *    @endcode
-   *
-   *  2) Add possibility to modify only certain particles through the
-   *  new property "Particles"  (default is empty list),
-   *  Each line is interpreted as a line in particle data table, e.g.
-   *
-   *   @code
-   *
-   *   // redefine the properties of H_20 and H_30 particles:
-   *   ParticlePropertySvc.Particles = {
-   *       "H_20 88 35 0.0 120.0 9.4e-26 Higgs'0 35 0.0e+00" ,
-   *       "H_30 89 36 0.0  40.0 1.0e-12      A0 36 0.0e+00"
-   *     } ;
-   *
-   *   @endcode
-   *
-   *  The replaces/modified particles are reported.
-   */
-  class ParticlePropertySvc : public extends<Service, IParticlePropertySvc> {
-  public:
-    // typedefs for container type
-    typedef ParticleProperty*                  mapped_type;
-    typedef std::map<int, mapped_type>         MapID;
-    typedef std::map<std::string, mapped_type> MapName;
-    typedef std::map<int, mapped_type>         MapStdHepID;
-    typedef std::map<int, mapped_type>         MapPythiaID;
-    using IParticlePropertySvc::const_iterator;
-    using IParticlePropertySvc::iterator;
-    using IParticlePropertySvc::VectPP;
-    // Inherited Service overrides:
-
-    /// Initialise the service.
-    StatusCode initialize() override;
-    /// Finalise the service.
-    StatusCode finalize() override;
-    /** Create a new particle property.
-     *  @attention ParticlePropertySvc *IS* the owner if this property!
-     *  @paramparticle String name of the particle.
-     *  @param geantId Geant3 ID of the particle.
-     *  @param jetsetId Jetset ID of the particle.
-     *  @param charge Particle charge (/e).
-     *  @param mass Particle mass (GeV).
-     *  @param tlife Particle lifetime (s).
-     *  @param evtName String name of the particle in EvtGen.
-     *  @param pythiaId Pythia ID of the particle.
-     *  @return StatusCode - SUCCESS if the particle property was added.
-     */
-    StatusCode push_back( const std::string& particle, int geantId, int jetsetId, double charge, double mass,
-                          double tlife, const std::string& evtName, int pythiaId, double maxWidth ) override;
-    /** Add a new particle property.
-     *  @attention ParticlePropertySvc is not the owner of this property!
-     *  @param pp, a particle property class.
-     *  @return StatusCode - SUCCESS if the particle property was added.
-     */
-    StatusCode push_back( ParticleProperty* pp ) override;
-    /// Get a const reference to the beginning of the container.
-    const_iterator begin() const override { return m_vectpp.begin(); }
-    /// Get a const reference to the end of the container.
-    const_iterator end() const override { return m_vectpp.end(); }
-    /// Get the container size.
-    int size() const override { return m_vectpp.size(); };
-    /// Retrieve a property by geant3 id.
-    ParticleProperty* find( int geantId ) override { return m_idmap[geantId]; }
-    /// Retrieve a property by particle name.
-    ParticleProperty* find( const std::string& name ) override { return m_namemap[name]; }
-    /// Retrieve a property by StdHep id
-    ParticleProperty* findByStdHepID( int stdHepId ) override { return m_stdhepidmap[stdHepId]; }
-    /// Retrieve a property by Pythia id
-    ParticleProperty* findByPythiaID( int pythiaID ) override { return m_pythiaidmap[pythiaID]; }
-    /// Erase a property by geant3 id.
-    StatusCode erase( int geantId ) override { return erase( find( geantId ) ); }
-    /// Erase a property by particle name.
-    StatusCode erase( const std::string& name ) override { return erase( find( name ) ); }
-    /// Erase a property by StdHep id ???
-    StatusCode eraseByStdHepID( int stdHepId ) override { return erase( findByStdHepID( stdHepId ) ); }
-    /** Standard Constructor.
-     *  @param  name   String with service name
-     *  @param  svc    Pointer to service locator interface
-     */
-    ParticlePropertySvc( const std::string& name, ISvcLocator* svc );
-
-  protected:
-    /** helper (protected) function to
-     *  find an antiparticle for the given particle ID (StdHepID)
-     *  @param pp pointer to particle property
-     *  @return pointer to antiparticle
-     */
-    const ParticleProperty* anti( const ParticleProperty* pp ) const;
-    /** helper (protected) function to set the valid
-     *  particle<-->antiparticle relations
-     *  @return status code
-     */
-    StatusCode setAntiParticles();
-    /// rebuild "the linear container" from the map
-    StatusCode rebuild();
-    /// remove particle property from all maps
-    StatusCode erase( const ParticleProperty* pp );
-    /// parse the file
-    StatusCode parse( const std::string& file );
-    // Text file parsing routine.
-    StatusCode parse();
-    // treat additional particles
-    StatusCode addParticles();
-    // compare 2 entries
-    bool diff( const ParticleProperty* o, const ParticleProperty* n, const MSG::Level l = MSG::DEBUG ) const;
-
-  private:
-    Gaudi::Property<std::string>              m_filename{ this, "ParticlePropertiesFile", "ParticleTable.txt",
-                                             "Filename of the particle properties file" };
-    Gaudi::Property<std::vector<std::string>> m_other{ this, "OtherFiles", {}, "additional file names" };
-    Gaudi::Property<std::vector<std::string>> m_particles{
-        this, "Particles", {}, "properties to be redefined explicitly" };
-
-    VectPP      m_vectpp;      ///< Vector of all particle properties
-    MapID       m_idmap;       ///< Map for geant IDs
-    MapName     m_namemap;     ///< Map for particle names
-    MapStdHepID m_stdhepidmap; ///< Map for StdHep Ids
-    MapPythiaID m_pythiaidmap; ///< Map for Pythia Ids
-
-    // local storage of ALL properties
-    std::deque<ParticleProperty> m_owned;
-    std::set<std::string>        m_replaced;
-
-    SmartIF<IFileAccess> m_fileAccess;
-  };
-} // namespace Gaudi
-// =============================================================================
-// The END
-// =============================================================================
-#endif
diff --git a/GaudiPartProp/src/Symbols.cpp b/GaudiPartProp/src/Symbols.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..c7cad46f885c86973d3b51cd8800f17428721721
--- /dev/null
+++ b/GaudiPartProp/src/Symbols.cpp
@@ -0,0 +1,220 @@
+/***********************************************************************************\
+* (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations *
+*                                                                                   *
+* This software is distributed under the terms of the Apache version 2 licence,     *
+* copied verbatim in the file "LICENSE".                                            *
+*                                                                                   *
+* In applying this licence, CERN does not waive the privileges and immunities       *
+* granted to it by virtue of its status as an Intergovernmental Organization        *
+* or submit itself to any jurisdiction.                                             *
+\***********************************************************************************/
+#include <Gaudi/Decays/CC.h>
+#include <Gaudi/Decays/NodesPIDs.h>
+#include <Gaudi/Decays/Symbols.h>
+#include <Gaudi/Interfaces/IParticlePropertySvc.h>
+#include <Gaudi/ParticleProperty.h>
+#include <GaudiKernel/StatusCode.h>
+#include <boost/algorithm/string.hpp>
+#include <iostream>
+#include <map>
+
+namespace Decays = Gaudi::Decays;
+
+/** @file
+ *  Implementation file for functions form the file Decays/Symbols.h
+ *
+ *  Many thanks to Antonio PELLEGRINO for the kind help with regex expressions
+ *
+ *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+ *  @date 2009-05-07
+ */
+namespace {
+  /** @var s_EMPTY
+   *  invalid empty string
+   *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+   *  @date 2009-05-07
+   */
+  const std::string s_EMPTY = "";
+} // namespace
+Decays::Symbols& Decays::Symbols::instance() {
+  static Decays::Symbols s_symbols;
+  return s_symbols;
+}
+// constructor
+Decays::Symbols::Symbols() {
+  addSymbol( "X", Decays::Nodes::Any(), "Any particle" );
+  //
+  addSymbol( "Hadron", Decays::Nodes::Hadron(), "Any hadron" );
+  addSymbol( "Meson", Decays::Nodes::Meson(), "Any meson" );
+  addSymbol( "Baryon", Decays::Nodes::Baryon(), "Any baryon" );
+  addSymbol( "Nucleus", Decays::Nodes::Nucleus(), "Any nucleus" );
+  addSymbol( "Lepton", Decays::Nodes::Lepton(), "Any lepton" );
+  addSymbol( "l", Decays::Nodes::Ell(), "Any charged lepton" );
+  addSymbol( "l+", Decays::Nodes::EllPlus(), "Any positive lepton", "l-" );
+  addSymbol( "l-", Decays::Nodes::EllMinus(), "Any negative lepton", "l+" );
+  addSymbol( "Nu", Decays::Nodes::Nu(), "Any neutral lepton" );
+  addSymbol( "Neutrino", Decays::Nodes::Nu(), "Any neutral lepton" );
+  //
+  addSymbol( "X0", Decays::Nodes::Neutral(), "Any neutral particle" );
+  addSymbol( "Xq", Decays::Nodes::Charged(), "Any charged particle" );
+  addSymbol( "X+", Decays::Nodes::Positive(), "Any positive particle", "X-" );
+  addSymbol( "X-", Decays::Nodes::Negative(), "Any negative particle", "X+" );
+  //
+  addSymbol( "ID+", Decays::Nodes::PosID(), "Any particle with positive ID", "ID-" );
+  addSymbol( "ID-", Decays::Nodes::NegID(), "Any particle with negative ID", "ID+" );
+  //
+  addSymbol( "Xd", Decays::Nodes::HasQuark( Gaudi::ParticleID::down ), "Any particle with d-quark" );
+  addSymbol( "Xu", Decays::Nodes::HasQuark( Gaudi::ParticleID::up ), "Any particle with u-quark" );
+  addSymbol( "Xs", Decays::Nodes::HasQuark( Gaudi::ParticleID::strange ), "Any particle with s-quark" );
+  addSymbol( "Xc", Decays::Nodes::HasQuark( Gaudi::ParticleID::charm ), "Any particle with c-quark" );
+  addSymbol( "Xb", Decays::Nodes::HasQuark( Gaudi::ParticleID::bottom ), "Any particle with b-quark" );
+  addSymbol( "Xt", Decays::Nodes::HasQuark( Gaudi::ParticleID::top ), "Any particle with t-quark" );
+  //
+  addSymbol( "Down", Decays::Nodes::HasQuark( Gaudi::ParticleID::down ), "Any particle with d-quark" );
+  addSymbol( "Up", Decays::Nodes::HasQuark( Gaudi::ParticleID::up ), "Any particle with u-quark" );
+  addSymbol( "Strange", Decays::Nodes::HasQuark( Gaudi::ParticleID::strange ), "Any particle with s-quark" );
+  addSymbol( "Charm", Decays::Nodes::HasQuark( Gaudi::ParticleID::charm ), "Any particle with c-quark" );
+  addSymbol( "Bottom", Decays::Nodes::HasQuark( Gaudi::ParticleID::bottom ), "Any particle with b-quark" );
+  addSymbol( "Beauty", Decays::Nodes::HasQuark( Gaudi::ParticleID::bottom ), "Any particle with b-quark" );
+  addSymbol( "Top", Decays::Nodes::HasQuark( Gaudi::ParticleID::top ), "Any particle with t-quark" );
+  //
+  addSymbol( "Scalar", Decays::Nodes::JSpin( 1 ), "Any scalar particle j=0" );
+  addSymbol( "Spinor", Decays::Nodes::JSpin( 2 ), "Any spinor particle j=1/2" );
+  addSymbol( "OneHalf", Decays::Nodes::JSpin( 2 ), "Any spinor particle j=1/2" );
+  addSymbol( "Vector", Decays::Nodes::JSpin( 3 ), "Any vector particle j=1" );
+  addSymbol( "ThreeHalf", Decays::Nodes::JSpin( 4 ), "Any particle with spin j=3/2" );
+  addSymbol( "Tensor", Decays::Nodes::JSpin( 5 ), "Any tensor particle j=2" );
+  addSymbol( "FiveHalf", Decays::Nodes::JSpin( 6 ), "Any particle with spin j=5/2" );
+  //
+  addSymbol( "ShortLived", Decays::Nodes::ShortLived_(), "Any short-ilved particle" );
+  addSymbol( "LongLived", Decays::Nodes::LongLived_(), "Any long-lived particle" );
+  addSymbol( "Stable", Decays::Nodes::Stable(), "Any 'stable' particle" );
+  addSymbol( "StableCharged", Decays::Nodes::StableCharged(), "Any 'trackable' particle: stable & charged" );
+  // special CC-symbols, protect them...
+  addCC( "cc" );
+  addCC( "CC" );
+  addCC( "os" );
+  addCC( "nos" );
+  addCC( "HasQuark" );
+  addCC( "JSpin" );
+  addCC( "LSpin" );
+  addCC( "SSpin" );
+  addCC( "ShortLived" );
+  addCC( "LongLived" );
+  addCC( "ShortLived_" );
+  addCC( "LongLived_" );
+  addCC( "Stable" );
+  addCC( "Light" );
+  addCC( "Heavy" );
+  addCC( "CTau" );
+  addCC( "Mass" );
+  addCC( "up" );
+  addCC( "down" );
+  addCC( "strange" );
+  addCC( "charm" );
+  addCC( "beauty" );
+  addCC( "bottom" );
+  addCC( "top" );
+}
+
+// get CC-map
+const Decays::Symbols::CCMap& Decays::Symbols::cc() const { return m_cc; }
+/*  add new symbol to the internal structure
+ *  @param symbol the symbol definition
+ *  @param node   the actual node
+ *  @param help   the help string
+ *  @param ccsym  the symbol for charge coonjugation
+ *  @return true if the symbol is added into the storage
+ */
+bool Decays::Symbols::addSymbol( std::string sym, const Decays::iNode& node, const std::string& help,
+                                 std::string ccsym ) {
+  // trim the arguments
+  boost::trim( sym );
+  auto ifind = m_nodes.find( sym );
+  if ( m_nodes.end() != ifind ) { return false; }
+  // add the node into the map
+  bool inserted = m_nodes.insert( sym, node ).second;
+  if ( !inserted ) { return false; }
+  // add the help-string
+  m_help[sym] = help;
+  // add cc-symbols
+  addCC( sym, ccsym );
+  return true;
+}
+/*  add cc-pair to the internal map
+ *  @param sym the symbol
+ *  @param ccsym the symbol for charge conjugation
+ */
+void Decays::Symbols::addCC( std::string sym, std::string ccsym ) {
+  // trim the arguments
+  boost::trim( sym );
+  boost::trim( ccsym );
+  if ( ccsym.empty() ) { ccsym = sym; }
+  m_cc[sym] = ccsym;
+  if ( ccsym != sym ) { m_cc[ccsym] = sym; }
+}
+// valid symbol?
+bool Decays::Symbols::valid( std::string sym ) const {
+  // trim the argument
+  boost::trim( sym );
+  return m_nodes.end() != m_nodes.find( sym );
+}
+// help for the symbol
+const std::string& Decays::Symbols::symbol( std::string sym ) const {
+  // trim the argument
+  boost::trim( sym );
+  NodeMap::const_iterator ifind = m_nodes.find( sym );
+  if ( m_nodes.end() == ifind ) { return s_EMPTY; }
+  HelpMap::const_iterator ihelp = m_help.find( sym );
+  if ( m_help.end() == ihelp ) { return s_EMPTY; }
+  return ihelp->second;
+}
+/*  get the node by symbol
+ *  @param (INPUT) sym the symbol name
+ *  @param (OUTPUT) the symbol
+ *  @return status code
+ */
+StatusCode Decays::Symbols::symbol( std::string sym, Decays::Node& node ) const {
+  // trim the argument
+  boost::trim( sym );
+  auto ifind = m_nodes.find( sym );
+  if ( m_nodes.end() != ifind ) {
+    node = ifind->second;
+    return StatusCode::SUCCESS;
+  }
+  node = Decays::Nodes::Invalid();
+  return StatusCode( InvalidSymbol );
+}
+// get all known symbols
+size_t Decays::Symbols::symbols( Decays::Symbols::Names& names ) const {
+  // clear names ;
+  names.clear();
+  for ( auto inode = m_nodes.begin(); m_nodes.end() != inode; ++inode ) { names.push_back( inode->first ); }
+  // sort it according to CC-criteria                               ATTENTION!
+  std::stable_sort( names.begin(), names.end(), Decays::CC::CmpCC() );
+  return names.size();
+}
+/*  get all known particle names
+ *  @param service (INPUT)  particle property service
+ *  @param parts   (OUTPUT) vector of particle names
+ *  @return status code
+ */
+StatusCode Decays::Symbols::particles( const Gaudi::Interfaces::IParticlePropertySvc* service,
+                                       Decays::Symbols::Names&                        parts ) const {
+  // clear the output
+  parts.clear();
+  // check the service
+  if ( 0 == service ) { return StatusCode( InvalidService ); }
+
+  auto begin = service->begin();
+  auto end   = service->end();
+  for ( ; end != begin; ++begin ) {
+    const Gaudi::ParticleProperty* pp = *begin;
+    if ( !pp ) { continue; }
+    parts.push_back( pp->particle() );
+  }
+  // sort it according to CC-criteria                                 ATTENTION!
+  std::stable_sort( parts.begin(), parts.end(), Decays::CC::CmpCC() );
+
+  return StatusCode::SUCCESS;
+}
diff --git a/GaudiExamples/src/PartProp/GaudiPPS.h b/GaudiPartProp/src/TrackDefaultParticles.cpp
similarity index 55%
rename from GaudiExamples/src/PartProp/GaudiPPS.h
rename to GaudiPartProp/src/TrackDefaultParticles.cpp
index b11e0ebec0dc746870dbb2ba8d7cfaa46e385353..1c505b7d5f95db5500c8740d6a442bed513aec87 100644
--- a/GaudiExamples/src/PartProp/GaudiPPS.h
+++ b/GaudiPartProp/src/TrackDefaultParticles.cpp
@@ -1,5 +1,5 @@
 /***********************************************************************************\
-* (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
+* (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations *
 *                                                                                   *
 * This software is distributed under the terms of the Apache version 2 licence,     *
 * copied verbatim in the file "LICENSE".                                            *
@@ -8,26 +8,6 @@
 * granted to it by virtue of its status as an Intergovernmental Organization        *
 * or submit itself to any jurisdiction.                                             *
 \***********************************************************************************/
-#ifndef PARTPROP_GAUDIPPS_H
-#define PARTPROP_GAUDIPPS_H 1
+#include <Gaudi/Tr/TrackDefaultParticles.h>
 
-// Include files
-// from Gaudi
-#include "GaudiKernel/Algorithm.h"
-
-namespace GaudiExamples {
-  /** Small algorithm using Gaudi::ParticlePropertySvc.
-   *
-   *  @author Marco CLEMENCIC
-   *  @date   2008-05-23
-   */
-  class GaudiPPS : public Algorithm {
-  public:
-    /// Standard constructor
-    using Algorithm::Algorithm;
-
-    StatusCode initialize() override; ///< Algorithm initialization
-    StatusCode execute() override;    ///< Algorithm execution
-  };
-} // namespace GaudiExamples
-#endif // PARTPROP_GAUDIPPS_H
+constexpr std::array<double, 5> Gaudi::Tr::PID::s_mass;
diff --git a/GaudiPartProp/src/iNode.cpp b/GaudiPartProp/src/iNode.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..cc08d738be82c70b378593af000d7a503a45312c
--- /dev/null
+++ b/GaudiPartProp/src/iNode.cpp
@@ -0,0 +1,76 @@
+/***********************************************************************************\
+* (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations *
+*                                                                                   *
+* This software is distributed under the terms of the Apache version 2 licence,     *
+* copied verbatim in the file "LICENSE".                                            *
+*                                                                                   *
+* In applying this licence, CERN does not waive the privileges and immunities       *
+* granted to it by virtue of its status as an Intergovernmental Organization        *
+* or submit itself to any jurisdiction.                                             *
+\***********************************************************************************/
+#include <Gaudi/Decays/Nodes.h>
+#include <Gaudi/Decays/iNode.h>
+#include <GaudiKernel/StatusCode.h>
+#include <sstream>
+#include <typeinfo>
+
+namespace Decays = Gaudi::Decays;
+
+/** @file
+ *  Implementation file for class Decays::iNode
+ *  @date 2008-05-04
+ *  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+ */
+std::string Decays::iNode::toString() const {
+  std::ostringstream s;
+  fillStream( s );
+  return s.str();
+}
+
+bool Decays::iNode::operator!() const { return !( this->valid() ); }
+
+Decays::Node::Node( const Decays::iNode& node ) {
+  if ( typeid( Decays::Node ) == typeid( node ) ) {
+    const Node& _node = dynamic_cast<const Node&>( node );
+    m_node.reset( _node.m_node->clone() );
+  } else {
+    m_node.reset( node.clone() );
+  }
+}
+
+Decays::Node::Node( const Decays::Node& right ) : Decays::iNode( right ), m_node( right.m_node->clone() ) {}
+
+bool Decays::Node::operator()( const Gaudi::ParticleID& pid ) const { return node( pid ); }
+
+std::ostream& Decays::Node::fillStream( std::ostream& s ) const { return m_node->fillStream( s ); }
+
+bool Decays::Node::valid() const { return m_node->valid(); }
+
+StatusCode Decays::Node::validate( const Gaudi::Interfaces::IParticlePropertySvc* svc ) const {
+  return m_node->validate( svc );
+}
+
+Decays::Node& Decays::Node::operator=( const Decays::Node& right ) {
+  if ( &right == this ) { return *this; }
+  m_node.reset( right.m_node->clone() );
+  return *this;
+}
+
+Decays::Node& Decays::Node::operator=( const Decays::iNode& right ) {
+  if ( &right == this ) { return *this; }
+  Decays::iNode* node = nullptr;
+  if ( typeid( Decays::Node ) == typeid( right ) ) {
+    const Node& _node = dynamic_cast<const Node&>( right );
+    node              = _node.m_node->clone();
+  } else {
+    node = right.clone();
+  }
+  m_node.reset( node );
+  return *this;
+}
+
+Decays::Node* Decays::Node::clone() const { return new Decays::Node( *this ); }
+
+Decays::Node& Decays::Node::op_and( const Decays::iNode& right ) { return ( *this = ( *m_node && right ) ); }
+
+Decays::Node& Decays::Node::op_or( const Decays::iNode& right ) { return ( *this = ( *m_node || right ) ); }
diff --git a/GaudiPartProp/tests/options/PartPropAlg.py b/GaudiPartProp/tests/options/PartPropAlg.py
new file mode 100644
index 0000000000000000000000000000000000000000..7635f5dcc053d4e7e0f9c8c1887009f4ee7cce0f
--- /dev/null
+++ b/GaudiPartProp/tests/options/PartPropAlg.py
@@ -0,0 +1,25 @@
+#!/usr/bin/env gaudirun.py
+#####################################################################################
+# (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations #
+#                                                                                   #
+# This software is distributed under the terms of the Apache version 2 licence,     #
+# copied verbatim in the file "LICENSE".                                            #
+#                                                                                   #
+# In applying this licence, CERN does not waive the privileges and immunities       #
+# granted to it by virtue of its status as an Intergovernmental Organization        #
+# or submit itself to any jurisdiction.                                             #
+#####################################################################################
+# =============================================================================
+## @file
+#  The configuration file to run QMTest for the package GaudiPartProp
+#  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+#  @date   2008-12-02
+# =============================================================================
+"""
+The configuration file to run QMTest for the package GaudiPartProp
+"""
+
+__author__ = "Vanya BELYAEV Ivan.Belyaev@nikhef.nl"
+__version__ = ""
+
+import GaudiPartProp.PartPropAlg
diff --git a/GaudiPartProp/tests/qmtest/partprop.qms/newparts.qmt b/GaudiPartProp/tests/qmtest/partprop.qms/newparts.qmt
new file mode 100644
index 0000000000000000000000000000000000000000..4a71c8c2ce5045a648fa6936552f751daf8e030b
--- /dev/null
+++ b/GaudiPartProp/tests/qmtest/partprop.qms/newparts.qmt
@@ -0,0 +1,37 @@
+<?xml version="1.0" ?>
+<!--
+    (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations
+
+    This software is distributed under the terms of the Apache version 2 licence,
+    copied verbatim in the file "LICENSE".
+
+    In applying this licence, CERN does not waive the privileges and immunities
+    granted to it by virtue of its status as an Intergovernmental Organization
+    or submit itself to any jurisdiction.
+-->
+<!DOCTYPE extension  PUBLIC '-//QM/2.3/Extension//EN'  'http://www.codesourcery.com/qm/dtds/2.3/-//qm/2.3/extension//en.dtd'>
+<extension class="GaudiTest.GaudiExeTest" kind="test">
+  <argument name="program">
+    <text>../../tests/scripts/newparts.py</text>
+  </argument>
+<argument name="validator"><text>
+block1 = """
+Gaudi::Particle...SUCCESS  New/updated particles (from "Particles" property)
+ ------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ | #    |        Name       |     PdgID    |   Q  |        Mass       |    (c*)Tau/Gamma  |  MaxWidth  |        EvtGen        |  PythiaID  |     Antiparticle     |
+ ------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ | 582  | chi_c1(1P)        |        20443 |   0  |       3.51067 GeV |     839.99989 keV |      0     |        chi_c1        |    20443   |        self-cc       |
+ ------------------------------------------------------------------------------------------------------------------------------------------------------------------
+"""
+block2 = """
+Gaudi::Particle...SUCCESS  New/updated particles (from "Particles" property)
+ ------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ | #    |        Name       |     PdgID    |   Q  |        Mass       |    (c*)Tau/Gamma  |  MaxWidth  |        EvtGen        |  PythiaID  |     Antiparticle     |
+ ------------------------------------------------------------------------------------------------------------------------------------------------------------------
+ | 582  | chi_c1(1P)        |        20443 |   0  |       3.51067 GeV |     839.99989 keV |      0     |        chi_c1        |    20443   |        self-cc       |
+ ------------------------------------------------------------------------------------------------------------------------------------------------------------------
+"""
+findReferenceBlock(block1)
+findReferenceBlock(block2)
+</text></argument>
+</extension>
diff --git a/GaudiPartProp/tests/qmtest/partprop.qms/partprop0.qmt b/GaudiPartProp/tests/qmtest/partprop.qms/partprop0.qmt
new file mode 100644
index 0000000000000000000000000000000000000000..bf67363e5ae285e70648a59b53bbb770077d61fc
--- /dev/null
+++ b/GaudiPartProp/tests/qmtest/partprop.qms/partprop0.qmt
@@ -0,0 +1,20 @@
+<?xml version="1.0" ?>
+<!--
+    (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations
+
+    This software is distributed under the terms of the Apache version 2 licence,
+    copied verbatim in the file "LICENSE".
+
+    In applying this licence, CERN does not waive the privileges and immunities
+    granted to it by virtue of its status as an Intergovernmental Organization
+    or submit itself to any jurisdiction.
+-->
+<!DOCTYPE extension  PUBLIC '-//QM/2.3/Extension//EN'  'http://www.codesourcery.com/qm/dtds/2.3/-//qm/2.3/extension//en.dtd'>
+<extension class="GaudiTest.GaudiExeTest" kind="test">
+  <argument name="program">
+    <text>../../python/GaudiPartProp/tests.py</text>
+  </argument>
+  <argument name="reference">
+    <text>../refs/partprop0.ref</text>
+  </argument>
+</extension>
diff --git a/GaudiPartProp/tests/qmtest/partprop.qms/partprop_pids.qmt b/GaudiPartProp/tests/qmtest/partprop.qms/partprop_pids.qmt
new file mode 100644
index 0000000000000000000000000000000000000000..06da7db22ceb46ac8ed4b3bd8d2869caffac0748
--- /dev/null
+++ b/GaudiPartProp/tests/qmtest/partprop.qms/partprop_pids.qmt
@@ -0,0 +1,1002 @@
+<?xml version="1.0" ?>
+<!--
+    (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations
+
+    This software is distributed under the terms of the Apache version 2 licence,
+    copied verbatim in the file "LICENSE".
+
+    In applying this licence, CERN does not waive the privileges and immunities
+    granted to it by virtue of its status as an Intergovernmental Organization
+    or submit itself to any jurisdiction.
+-->
+<!DOCTYPE extension  PUBLIC '-//QM/2.3/Extension//EN'  'http://www.codesourcery.com/qm/dtds/2.3/-//qm/2.3/extension//en.dtd'>
+<extension class="GaudiTest.GaudiExeTest" kind="test">
+  <argument name="program">
+    <text>../scripts/pids.py</text>
+  </argument>
+  <!-- <argument name="reference">
+    <text>../refs/partprop_pids.ref</text>
+  </argument> -->
+<argument name="validator"><text>
+block = """
+ApplicationMgr       INFO Application Manager Initialized successfully
+(-1000020040, 1000020040, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, -6, 1, 0, 0, 2, 4, 0, 0, 100)
+(-1000020030, 1000020030, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, -6, 2, 0, 0, 2, 3, 0, 0, 100)
+(-1000010030, 1000010030, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, -3, 2, 0, 0, 1, 3, 0, 0, 100)
+(-1000010020, 1000010020, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, -3, 1, 0, 0, 1, 2, 0, 0, 100)
+(-990000000, 990000000, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 0, 99)
+(-99000000, 99000000, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 0, 9)
+(-9900042, 9900042, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -6, 1, 0, 0, 0, 0, 0, 9, 0)
+(-9900041, 9900041, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -6, 1, 0, 0, 0, 0, 0, 9, 0)
+(-9900024, 9900024, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -3, 3, 0, 0, 0, 0, 0, 24, 0)
+(-9042413, 9042413, True, True, False, True, True, False, False, False, True, True, True, False, True, False, False, False, False, -3, 3, 0, 0, 0, 0, 0, 0, 0)
+(-9010213, 9010213, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 3, 0, 0, 0, 0, 0, 0, 0)
+(-9010211, 9010211, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 0, 0)
+(-9000213, 9000213, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 3, 0, 0, 0, 0, 0, 0, 0)
+(-9000211, 9000211, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 0, 0)
+(-4900213, 4900213, True, False, False, False, False, False, False, False, True, False, True, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(-4900211, 4900211, True, False, False, False, False, False, False, False, True, False, True, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(-4900101, 4900101, True, False, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(-4000012, 4000012, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 12, 0)
+(-4000011, 4000011, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 11, 0)
+(-4000002, 4000002, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -2, 2, 0, 0, 0, 0, 0, 2, 0)
+(-4000001, 4000001, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 1, 2, 0, 0, 0, 0, 0, 1, 0)
+(-3000213, 3000213, True, False, False, False, False, False, False, False, True, True, True, False, False, False, False, False, False, -3, 3, 0, 0, 0, 0, 0, 0, 0)
+(-3000211, 3000211, True, False, False, False, False, False, False, False, True, True, True, False, False, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 0, 0)
+(-2000016, 2000016, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 16, 0)
+(-2000015, 2000015, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 15, 0)
+(-2000014, 2000014, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 14, 0)
+(-2000013, 2000013, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 13, 0)
+(-2000012, 2000012, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 12, 0)
+(-2000011, 2000011, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 11, 0)
+(-2000006, 2000006, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -2, 1, 0, 0, 0, 0, 0, 6, 0)
+(-2000005, 2000005, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 1, 1, 0, 0, 0, 0, 0, 5, 0)
+(-2000004, 2000004, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -2, 1, 0, 0, 0, 0, 0, 4, 0)
+(-2000003, 2000003, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 1, 1, 0, 0, 0, 0, 0, 3, 0)
+(-2000002, 2000002, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -2, 1, 0, 0, 0, 0, 0, 2, 0)
+(-2000001, 2000001, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 1, 1, 0, 0, 0, 0, 0, 1, 0)
+(-1000037, 1000037, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 37, 0)
+(-1000024, 1000024, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 24, 0)
+(-1000016, 1000016, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 16, 0)
+(-1000015, 1000015, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 15, 0)
+(-1000014, 1000014, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 14, 0)
+(-1000013, 1000013, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 13, 0)
+(-1000012, 1000012, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 12, 0)
+(-1000011, 1000011, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 11, 0)
+(-1000006, 1000006, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -2, 1, 0, 0, 0, 0, 0, 6, 0)
+(-1000005, 1000005, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 1, 1, 0, 0, 0, 0, 0, 5, 0)
+(-1000004, 1000004, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -2, 1, 0, 0, 0, 0, 0, 4, 0)
+(-1000003, 1000003, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 1, 1, 0, 0, 0, 0, 0, 3, 0)
+(-1000002, 1000002, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -2, 1, 0, 0, 0, 0, 0, 2, 0)
+(-1000001, 1000001, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 1, 1, 0, 0, 0, 0, 0, 1, 0)
+(-204126, 204126, True, True, False, True, True, False, False, False, True, True, True, False, True, False, False, False, False, -3, 6, 0, 0, 0, 0, 0, 0, 0)
+(-203338, 203338, True, True, False, True, True, False, False, False, True, False, False, True, False, False, False, False, False, 3, 8, 0, 0, 0, 0, 0, 0, 0)
+(-203326, 203326, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(-203322, 203322, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-203316, 203316, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 6, 0, 0, 0, 0, 0, 0, 0)
+(-203312, 203312, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-104324, 104324, True, True, False, True, True, False, False, False, True, False, True, True, True, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-104322, 104322, True, True, False, True, True, False, False, False, True, False, True, True, True, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-104314, 104314, True, True, False, True, True, False, False, False, True, True, False, True, True, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-104312, 104312, True, True, False, True, True, False, False, False, True, True, False, True, True, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-104124, 104124, True, True, False, True, True, False, False, False, True, True, True, False, True, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-103326, 103326, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(-103316, 103316, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 6, 0, 0, 0, 0, 0, 0, 0)
+(-103222, 103222, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-103212, 103212, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-103112, 103112, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-100423, 100423, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(-100421, 100421, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(-100413, 100413, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, -3, 3, 1, 0, 0, 0, 0, 0, 0)
+(-100411, 100411, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 0, 0)
+(-100325, 100325, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 5, 1, 1, 0, 0, 0, 0, 0)
+(-100323, 100323, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 3, 1, 0, 0, 0, 0, 0, 0)
+(-100321, 100321, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 0, 0)
+(-100315, 100315, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(-100313, 100313, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(-100311, 100311, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(-100213, 100213, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 3, 1, 0, 0, 0, 0, 0, 0)
+(-100211, 100211, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 0, 0)
+(-53122, 53122, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-52214, 52214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-52114, 52114, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-43122, 43122, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-42212, 42212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-42124, 42124, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-42112, 42112, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-41214, 41214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-33122, 33122, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-32224, 32224, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, -6, 4, 0, 0, 0, 0, 0, 0, 0)
+(-32214, 32214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-32212, 32212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-32124, 32124, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-32114, 32114, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-32112, 32112, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-31214, 31214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-31114, 31114, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-30363, 30363, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(-30353, 30353, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 3, 0, 0, 0, 0, 0, 0, 0)
+(-30343, 30343, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(-30323, 30323, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 3, 1, 2, 0, 0, 0, 0, 0)
+(-30313, 30313, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 3, 1, 2, 0, 0, 0, 0, 0)
+(-30213, 30213, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 3, 1, 2, 0, 0, 0, 0, 0)
+(-23224, 23224, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-23222, 23222, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-23214, 23214, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-23212, 23212, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-23126, 23126, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(-23124, 23124, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-23122, 23122, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-23114, 23114, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-23112, 23112, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-22224, 22224, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, -6, 4, 0, 0, 0, 0, 0, 0, 0)
+(-22222, 22222, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, -6, 2, 0, 0, 0, 0, 0, 0, 0)
+(-22214, 22214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-22212, 22212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-22124, 22124, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-22122, 22122, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-22114, 22114, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-22112, 22112, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-21214, 21214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-21212, 21212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-21114, 21114, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-21112, 21112, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-20543, 20543, True, True, True, False, True, False, False, False, True, False, False, False, True, True, False, False, False, -3, 3, 1, 1, 0, 0, 0, 0, 0)
+(-20533, 20533, True, True, True, False, True, False, False, False, True, False, False, True, False, True, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(-20523, 20523, True, True, True, False, True, False, False, False, True, False, True, False, False, True, False, False, False, -3, 3, 1, 1, 0, 0, 0, 0, 0)
+(-20513, 20513, True, True, True, False, True, False, False, False, True, True, False, False, False, True, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(-20433, 20433, True, True, True, False, True, False, False, False, True, False, False, True, True, False, False, False, False, -3, 3, 1, 1, 0, 0, 0, 0, 0)
+(-20423, 20423, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(-20413, 20413, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, -3, 3, 1, 1, 0, 0, 0, 0, 0)
+(-20325, 20325, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 5, 1, 2, 0, 0, 0, 0, 0)
+(-20323, 20323, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 3, 1, 1, 0, 0, 0, 0, 0)
+(-20315, 20315, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 5, 1, 2, 0, 0, 0, 0, 0)
+(-20313, 20313, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(-20213, 20213, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 3, 1, 1, 0, 0, 0, 0, 0)
+(-15122, 15122, True, True, False, True, True, False, False, False, True, True, True, False, False, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-14122, 14122, True, True, False, True, True, False, False, False, True, True, True, False, True, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-13324, 13324, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-13314, 13314, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-13226, 13226, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 6, 0, 0, 0, 0, 0, 0, 0)
+(-13224, 13224, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-13222, 13222, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-13216, 13216, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(-13214, 13214, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-13212, 13212, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-13126, 13126, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(-13124, 13124, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-13122, 13122, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-13116, 13116, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 6, 0, 0, 0, 0, 0, 0, 0)
+(-13114, 13114, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-13112, 13112, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-12226, 12226, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, -6, 6, 0, 0, 0, 0, 0, 0, 0)
+(-12224, 12224, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, -6, 4, 0, 0, 0, 0, 0, 0, 0)
+(-12222, 12222, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, -6, 2, 0, 0, 0, 0, 0, 0, 0)
+(-12218, 12218, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 8, 0, 0, 0, 0, 0, 0, 0)
+(-12216, 12216, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 6, 0, 0, 0, 0, 0, 0, 0)
+(-12214, 12214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-12212, 12212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-12126, 12126, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 6, 0, 0, 0, 0, 0, 0, 0)
+(-12122, 12122, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-12118, 12118, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 8, 0, 0, 0, 0, 0, 0, 0)
+(-12116, 12116, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(-12114, 12114, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-12112, 12112, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-11216, 11216, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(-11212, 11212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-11116, 11116, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, 3, 6, 0, 0, 0, 0, 0, 0, 0)
+(-11114, 11114, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-11112, 11112, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-10543, 10543, True, True, True, False, True, False, False, False, True, False, False, False, True, True, False, False, False, -3, 3, 0, 1, 0, 0, 0, 0, 0)
+(-10541, 10541, True, True, True, False, True, False, False, False, True, False, False, False, True, True, False, False, False, -3, 1, 1, 1, 0, 0, 0, 0, 0)
+(-10533, 10533, True, True, True, False, True, False, False, False, True, False, False, True, False, True, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(-10531, 10531, True, True, True, False, True, False, False, False, True, False, False, True, False, True, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(-10523, 10523, True, True, True, False, True, False, False, False, True, False, True, False, False, True, False, False, False, -3, 3, 0, 1, 0, 0, 0, 0, 0)
+(-10521, 10521, True, True, True, False, True, False, False, False, True, False, True, False, False, True, False, False, False, -3, 1, 1, 1, 0, 0, 0, 0, 0)
+(-10513, 10513, True, True, True, False, True, False, False, False, True, True, False, False, False, True, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(-10511, 10511, True, True, True, False, True, False, False, False, True, True, False, False, False, True, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(-10433, 10433, True, True, True, False, True, False, False, False, True, False, False, True, True, False, False, False, False, -3, 3, 0, 1, 0, 0, 0, 0, 0)
+(-10431, 10431, True, True, True, False, True, False, False, False, True, False, False, True, True, False, False, False, False, -3, 1, 1, 1, 0, 0, 0, 0, 0)
+(-10423, 10423, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(-10421, 10421, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(-10413, 10413, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, -3, 3, 0, 1, 0, 0, 0, 0, 0)
+(-10411, 10411, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, -3, 1, 1, 1, 0, 0, 0, 0, 0)
+(-10325, 10325, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 5, 0, 2, 0, 0, 0, 0, 0)
+(-10323, 10323, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 3, 0, 1, 0, 0, 0, 0, 0)
+(-10321, 10321, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 1, 1, 1, 0, 0, 0, 0, 0)
+(-10315, 10315, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 5, 0, 2, 0, 0, 0, 0, 0)
+(-10313, 10313, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(-10311, 10311, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(-10215, 10215, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 5, 0, 2, 0, 0, 0, 0, 0)
+(-10213, 10213, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 3, 0, 1, 0, 0, 0, 0, 0)
+(-10211, 10211, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 1, 1, 1, 0, 0, 0, 0, 0)
+(-5554, 5554, True, True, False, True, True, False, False, False, True, False, False, False, False, True, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5544, 5544, True, True, False, True, True, False, False, False, True, False, False, False, True, True, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5542, 5542, True, True, False, True, True, False, False, False, True, False, False, False, True, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5534, 5534, True, True, False, True, True, False, False, False, True, False, False, True, False, True, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5532, 5532, True, True, False, True, True, False, False, False, True, False, False, True, False, True, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5524, 5524, True, True, False, True, True, False, False, False, True, False, True, False, False, True, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5522, 5522, True, True, False, True, True, False, False, False, True, False, True, False, False, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5514, 5514, True, True, False, True, True, False, False, False, True, True, False, False, False, True, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5512, 5512, True, True, False, True, True, False, False, False, True, True, False, False, False, True, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5503, 5503, True, True, False, False, False, False, False, False, True, False, False, False, False, True, False, False, False, 2, 3, 0, 0, 0, 0, 0, 0, 0)
+(-5444, 5444, True, True, False, True, True, False, False, False, True, False, False, False, True, True, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5442, 5442, True, True, False, True, True, False, False, False, True, False, False, False, True, True, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5434, 5434, True, True, False, True, True, False, False, False, True, False, False, True, True, True, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5432, 5432, True, True, False, True, True, False, False, False, True, False, False, True, True, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5424, 5424, True, True, False, True, True, False, False, False, True, False, True, False, True, True, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5422, 5422, True, True, False, True, True, False, False, False, True, False, True, False, True, True, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5414, 5414, True, True, False, True, True, False, False, False, True, True, False, False, True, True, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5412, 5412, True, True, False, True, True, False, False, False, True, True, False, False, True, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5403, 5403, True, True, False, False, False, False, False, False, True, False, False, False, True, True, False, False, False, -1, 3, 0, 0, 0, 0, 0, 0, 0)
+(-5401, 5401, True, True, False, False, False, False, False, False, True, False, False, False, True, True, False, False, False, -1, 1, 0, 0, 0, 0, 0, 0, 0)
+(-5342, 5342, True, True, False, True, True, False, False, False, True, False, False, True, True, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5334, 5334, True, True, False, True, True, False, False, False, True, False, False, True, False, True, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5332, 5332, True, True, False, True, True, False, False, False, True, False, False, True, False, True, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5324, 5324, True, True, False, True, True, False, False, False, True, False, True, True, False, True, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5322, 5322, True, True, False, True, True, False, False, False, True, False, True, True, False, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5314, 5314, True, True, False, True, True, False, False, False, True, True, False, True, False, True, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5312, 5312, True, True, False, True, True, False, False, False, True, True, False, True, False, True, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5303, 5303, True, True, False, False, False, False, False, False, True, False, False, True, False, True, False, False, False, 2, 3, 0, 0, 0, 0, 0, 0, 0)
+(-5301, 5301, True, True, False, False, False, False, False, False, True, False, False, True, False, True, False, False, False, 2, 1, 0, 0, 0, 0, 0, 0, 0)
+(-5242, 5242, True, True, False, True, True, False, False, False, True, False, True, False, True, True, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5232, 5232, True, True, False, True, True, False, False, False, True, False, True, True, False, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5224, 5224, True, True, False, True, True, False, False, False, True, False, True, False, False, True, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5222, 5222, True, True, False, True, True, False, False, False, True, False, True, False, False, True, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5214, 5214, True, True, False, True, True, False, False, False, True, True, True, False, False, True, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5212, 5212, True, True, False, True, True, False, False, False, True, True, True, False, False, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5203, 5203, True, True, False, False, False, False, False, False, True, False, True, False, False, True, False, False, False, -1, 3, 0, 0, 0, 0, 0, 0, 0)
+(-5201, 5201, True, True, False, False, False, False, False, False, True, False, True, False, False, True, False, False, False, -1, 1, 0, 0, 0, 0, 0, 0, 0)
+(-5142, 5142, True, True, False, True, True, False, False, False, True, True, False, False, True, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5132, 5132, True, True, False, True, True, False, False, False, True, True, False, True, False, True, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5124, 5124, True, True, False, True, True, False, False, False, True, True, True, False, False, True, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5122, 5122, True, True, False, True, True, False, False, False, True, True, True, False, False, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5114, 5114, True, True, False, True, True, False, False, False, True, True, False, False, False, True, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5112, 5112, True, True, False, True, True, False, False, False, True, True, False, False, False, True, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5103, 5103, True, True, False, False, False, False, False, False, True, True, False, False, False, True, False, False, False, 2, 3, 0, 0, 0, 0, 0, 0, 0)
+(-5101, 5101, True, True, False, False, False, False, False, False, True, True, False, False, False, True, False, False, False, 2, 1, 0, 0, 0, 0, 0, 0, 0)
+(-4444, 4444, True, True, False, True, True, False, False, False, True, False, False, False, True, False, False, False, False, -6, 4, 0, 0, 0, 0, 0, 0, 0)
+(-4434, 4434, True, True, False, True, True, False, False, False, True, False, False, True, True, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-4432, 4432, True, True, False, True, True, False, False, False, True, False, False, True, True, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-4424, 4424, True, True, False, True, True, False, False, False, True, False, True, False, True, False, False, False, False, -6, 4, 0, 0, 0, 0, 0, 0, 0)
+(-4422, 4422, True, True, False, True, True, False, False, False, True, False, True, False, True, False, False, False, False, -6, 2, 0, 0, 0, 0, 0, 0, 0)
+(-4414, 4414, True, True, False, True, True, False, False, False, True, True, False, False, True, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-4412, 4412, True, True, False, True, True, False, False, False, True, True, False, False, True, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-4403, 4403, True, True, False, False, False, False, False, False, True, False, False, False, True, False, False, False, False, -4, 3, 0, 0, 0, 0, 0, 0, 0)
+(-4334, 4334, True, True, False, True, True, False, False, False, True, False, False, True, True, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-4332, 4332, True, True, False, True, True, False, False, False, True, False, False, True, True, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-4324, 4324, True, True, False, True, True, False, False, False, True, False, True, True, True, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-4322, 4322, True, True, False, True, True, False, False, False, True, False, True, True, True, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-4314, 4314, True, True, False, True, True, False, False, False, True, True, False, True, True, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-4312, 4312, True, True, False, True, True, False, False, False, True, True, False, True, True, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-4303, 4303, True, True, False, False, False, False, False, False, True, False, False, True, True, False, False, False, False, -1, 3, 0, 0, 0, 0, 0, 0, 0)
+(-4301, 4301, True, True, False, False, False, False, False, False, True, False, False, True, True, False, False, False, False, -1, 1, 0, 0, 0, 0, 0, 0, 0)
+(-4232, 4232, True, True, False, True, True, False, False, False, True, False, True, True, True, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-4224, 4224, True, True, False, True, True, False, False, False, True, False, True, False, True, False, False, False, False, -6, 4, 0, 0, 0, 0, 0, 0, 0)
+(-4222, 4222, True, True, False, True, True, False, False, False, True, False, True, False, True, False, False, False, False, -6, 2, 0, 0, 0, 0, 0, 0, 0)
+(-4214, 4214, True, True, False, True, True, False, False, False, True, True, True, False, True, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-4212, 4212, True, True, False, True, True, False, False, False, True, True, True, False, True, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-4203, 4203, True, True, False, False, False, False, False, False, True, False, True, False, True, False, False, False, False, -4, 3, 0, 0, 0, 0, 0, 0, 0)
+(-4201, 4201, True, True, False, False, False, False, False, False, True, False, True, False, True, False, False, False, False, -4, 1, 0, 0, 0, 0, 0, 0, 0)
+(-4132, 4132, True, True, False, True, True, False, False, False, True, True, False, True, True, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-4122, 4122, True, True, False, True, True, False, False, False, True, True, True, False, True, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-4114, 4114, True, True, False, True, True, False, False, False, True, True, False, False, True, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-4112, 4112, True, True, False, True, True, False, False, False, True, True, False, False, True, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-4103, 4103, True, True, False, False, False, False, False, False, True, True, False, False, True, False, False, False, False, -1, 3, 0, 0, 0, 0, 0, 0, 0)
+(-4101, 4101, True, True, False, False, False, False, False, False, True, True, False, False, True, False, False, False, False, -1, 1, 0, 0, 0, 0, 0, 0, 0)
+(-3334, 3334, True, True, False, True, True, False, False, False, True, False, False, True, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-3324, 3324, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-3322, 3322, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-3314, 3314, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-3312, 3312, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-3303, 3303, True, True, False, False, False, False, False, False, True, False, False, True, False, False, False, False, False, 2, 3, 0, 0, 0, 0, 0, 0, 0)
+(-3228, 3228, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 8, 0, 0, 0, 0, 0, 0, 0)
+(-3226, 3226, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 6, 0, 0, 0, 0, 0, 0, 0)
+(-3224, 3224, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-3222, 3222, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-3218, 3218, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 8, 0, 0, 0, 0, 0, 0, 0)
+(-3216, 3216, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(-3214, 3214, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-3212, 3212, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-3203, 3203, True, True, False, False, False, False, False, False, True, False, True, True, False, False, False, False, False, -1, 3, 0, 0, 0, 0, 0, 0, 0)
+(-3201, 3201, True, True, False, False, False, False, False, False, True, False, True, True, False, False, False, False, False, -1, 1, 0, 0, 0, 0, 0, 0, 0)
+(-3128, 3128, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 8, 0, 0, 0, 0, 0, 0, 0)
+(-3126, 3126, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(-3124, 3124, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-3122, 3122, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-3118, 3118, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 8, 0, 0, 0, 0, 0, 0, 0)
+(-3116, 3116, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 6, 0, 0, 0, 0, 0, 0, 0)
+(-3114, 3114, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-3112, 3112, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-3103, 3103, True, True, False, False, False, False, False, False, True, True, False, True, False, False, False, False, False, 2, 3, 0, 0, 0, 0, 0, 0, 0)
+(-3101, 3101, True, True, False, False, False, False, False, False, True, True, False, True, False, False, False, False, False, 2, 1, 0, 0, 0, 0, 0, 0, 0)
+(-2228, 2228, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, -6, 8, 0, 0, 0, 0, 0, 0, 0)
+(-2226, 2226, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, -6, 6, 0, 0, 0, 0, 0, 0, 0)
+(-2224, 2224, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, -6, 4, 0, 0, 0, 0, 0, 0, 0)
+(-2222, 2222, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, -6, 2, 0, 0, 0, 0, 0, 0, 0)
+(-2218, 2218, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 8, 0, 0, 0, 0, 0, 0, 0)
+(-2216, 2216, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 6, 0, 0, 0, 0, 0, 0, 0)
+(-2214, 2214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-2212, 2212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-2203, 2203, True, True, False, False, False, False, False, False, True, False, True, False, False, False, False, False, False, -4, 3, 0, 0, 0, 0, 0, 0, 0)
+(-2128, 2128, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 8, 0, 0, 0, 0, 0, 0, 0)
+(-2126, 2126, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 6, 0, 0, 0, 0, 0, 0, 0)
+(-2124, 2124, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-2122, 2122, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-2118, 2118, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 8, 0, 0, 0, 0, 0, 0, 0)
+(-2116, 2116, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(-2114, 2114, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-2112, 2112, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-2103, 2103, True, True, False, False, False, False, False, False, True, True, True, False, False, False, False, False, False, -1, 3, 0, 0, 0, 0, 0, 0, 0)
+(-2101, 2101, True, True, False, False, False, False, False, False, True, True, True, False, False, False, False, False, False, -1, 1, 0, 0, 0, 0, 0, 0, 0)
+(-1218, 1218, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 8, 0, 0, 0, 0, 0, 0, 0)
+(-1216, 1216, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(-1214, 1214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-1212, 1212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-1118, 1118, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, 3, 8, 0, 0, 0, 0, 0, 0, 0)
+(-1116, 1116, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, 3, 6, 0, 0, 0, 0, 0, 0, 0)
+(-1114, 1114, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-1112, 1112, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-1103, 1103, True, True, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, 2, 3, 0, 0, 0, 0, 0, 0, 0)
+(-545, 545, True, True, True, False, True, False, False, False, True, False, False, False, True, True, False, False, False, -3, 5, 1, 1, 0, 0, 0, 0, 0)
+(-543, 543, True, True, True, False, True, False, False, False, True, False, False, False, True, True, False, False, False, -3, 3, 1, 0, 0, 0, 0, 0, 0)
+(-541, 541, True, True, True, False, True, False, False, False, True, False, False, False, True, True, False, False, False, -3, 1, 0, 0, 0, 0, 0, 0, 0)
+(-535, 535, True, True, True, False, True, False, False, False, True, False, False, True, False, True, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(-533, 533, True, True, True, False, True, False, False, False, True, False, False, True, False, True, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(-531, 531, True, True, True, False, True, False, False, False, True, False, False, True, False, True, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(-525, 525, True, True, True, False, True, False, False, False, True, False, True, False, False, True, False, False, False, -3, 5, 1, 1, 0, 0, 0, 0, 0)
+(-523, 523, True, True, True, False, True, False, False, False, True, False, True, False, False, True, False, False, False, -3, 3, 1, 0, 0, 0, 0, 0, 0)
+(-521, 521, True, True, True, False, True, False, False, False, True, False, True, False, False, True, False, False, False, -3, 1, 0, 0, 0, 0, 0, 0, 0)
+(-515, 515, True, True, True, False, True, False, False, False, True, True, False, False, False, True, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(-513, 513, True, True, True, False, True, False, False, False, True, True, False, False, False, True, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(-511, 511, True, True, True, False, True, False, False, False, True, True, False, False, False, True, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(-435, 435, True, True, True, False, True, False, False, False, True, False, False, True, True, False, False, False, False, -3, 5, 1, 1, 0, 0, 0, 0, 0)
+(-433, 433, True, True, True, False, True, False, False, False, True, False, False, True, True, False, False, False, False, -3, 3, 1, 0, 0, 0, 0, 0, 0)
+(-431, 431, True, True, True, False, True, False, False, False, True, False, False, True, True, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 0, 0)
+(-425, 425, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(-423, 423, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(-421, 421, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(-415, 415, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, -3, 5, 1, 1, 0, 0, 0, 0, 0)
+(-413, 413, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, -3, 3, 1, 0, 0, 0, 0, 0, 0)
+(-411, 411, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 0, 0)
+(-329, 329, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 9, 1, 3, 0, 0, 0, 0, 0)
+(-327, 327, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 7, 1, 2, 0, 0, 0, 0, 0)
+(-325, 325, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 5, 1, 1, 0, 0, 0, 0, 0)
+(-323, 323, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 3, 1, 0, 0, 0, 0, 0, 0)
+(-321, 321, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 0, 0)
+(-319, 319, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 9, 1, 3, 0, 0, 0, 0, 0)
+(-317, 317, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 7, 1, 2, 0, 0, 0, 0, 0)
+(-315, 315, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(-313, 313, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(-311, 311, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(-219, 219, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 9, 1, 3, 0, 0, 0, 0, 0)
+(-217, 217, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 7, 1, 2, 0, 0, 0, 0, 0)
+(-215, 215, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 5, 1, 1, 0, 0, 0, 0, 0)
+(-213, 213, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 3, 1, 0, 0, 0, 0, 0, 0)
+(-211, 211, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 0, 0)
+(-87, 87, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 1, 0, 0, 0, 0, 0, 0, 87, 0)
+(-86, 86, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -2, 0, 0, 0, 0, 0, 0, 86, 0)
+(-85, 85, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 1, 0, 0, 0, 0, 0, 0, 85, 0)
+(-84, 84, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -2, 0, 0, 0, 0, 0, 0, 84, 0)
+(-82, 82, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 82, 0)
+(-44, 44, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -3, 0, 0, 0, 0, 0, 0, 44, 0)
+(-42, 42, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 1, 1, 0, 0, 0, 0, 0, 42, 0)
+(-41, 41, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 41, 0)
+(-37, 37, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 37, 0)
+(-34, 34, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -3, 3, 0, 0, 0, 0, 0, 34, 0)
+(-24, 24, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -3, 3, 0, 0, 0, 0, 0, 24, 0)
+(-18, 18, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 18, 0)
+(-17, 17, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 17, 0)
+(-16, 16, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 16, 0)
+(-15, 15, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 15, 0)
+(-14, 14, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 14, 0)
+(-13, 13, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 13, 0)
+(-12, 12, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 12, 0)
+(-11, 11, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 11, 0)
+(-8, 8, True, True, False, False, False, False, False, True, False, False, False, False, False, False, False, False, True, -2, 2, 0, 0, 0, 0, 0, 8, 0)
+(-7, 7, True, True, False, False, False, False, False, True, False, False, False, False, False, False, False, True, False, 1, 2, 0, 0, 0, 0, 0, 7, 0)
+(-6, 6, True, True, False, False, False, False, False, True, False, False, False, False, False, False, True, False, False, -2, 2, 0, 0, 0, 0, 0, 6, 0)
+(-5, 5, True, True, False, False, False, False, False, True, False, False, False, False, False, True, False, False, False, 1, 2, 0, 0, 0, 0, 0, 5, 0)
+(-4, 4, True, True, False, False, False, False, False, True, False, False, False, False, True, False, False, False, False, -2, 2, 0, 0, 0, 0, 0, 4, 0)
+(-3, 3, True, True, False, False, False, False, False, True, False, False, False, True, False, False, False, False, False, 1, 2, 0, 0, 0, 0, 0, 3, 0)
+(-2, 2, True, True, False, False, False, False, False, True, False, False, True, False, False, False, False, False, False, -2, 2, 0, 0, 0, 0, 0, 2, 0)
+(-1, 1, True, True, False, False, False, False, False, True, False, True, False, False, False, False, False, False, False, 1, 2, 0, 0, 0, 0, 0, 1, 0)
+(1, 1, True, True, False, False, False, False, False, True, False, True, False, False, False, False, False, False, False, -1, 2, 0, 0, 0, 0, 0, 1, 0)
+(2, 2, True, True, False, False, False, False, False, True, False, False, True, False, False, False, False, False, False, 2, 2, 0, 0, 0, 0, 0, 2, 0)
+(3, 3, True, True, False, False, False, False, False, True, False, False, False, True, False, False, False, False, False, -1, 2, 0, 0, 0, 0, 0, 3, 0)
+(4, 4, True, True, False, False, False, False, False, True, False, False, False, False, True, False, False, False, False, 2, 2, 0, 0, 0, 0, 0, 4, 0)
+(5, 5, True, True, False, False, False, False, False, True, False, False, False, False, False, True, False, False, False, -1, 2, 0, 0, 0, 0, 0, 5, 0)
+(6, 6, True, True, False, False, False, False, False, True, False, False, False, False, False, False, True, False, False, 2, 2, 0, 0, 0, 0, 0, 6, 0)
+(7, 7, True, True, False, False, False, False, False, True, False, False, False, False, False, False, False, True, False, -1, 2, 0, 0, 0, 0, 0, 7, 0)
+(8, 8, True, True, False, False, False, False, False, True, False, False, False, False, False, False, False, False, True, 2, 2, 0, 0, 0, 0, 0, 8, 0)
+(11, 11, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 11, 0)
+(12, 12, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 12, 0)
+(13, 13, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 13, 0)
+(14, 14, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 14, 0)
+(15, 15, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 15, 0)
+(16, 16, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 16, 0)
+(17, 17, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 17, 0)
+(18, 18, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 18, 0)
+(21, 21, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 21, 0)
+(22, 22, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 22, 0)
+(23, 23, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 23, 0)
+(24, 24, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 3, 3, 0, 0, 0, 0, 0, 24, 0)
+(25, 25, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 25, 0)
+(32, 32, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 32, 0)
+(33, 33, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 33, 0)
+(34, 34, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 3, 3, 0, 0, 0, 0, 0, 34, 0)
+(35, 35, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 35, 0)
+(36, 36, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 36, 0)
+(37, 37, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 37, 0)
+(39, 39, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 5, 0, 0, 0, 0, 0, 39, 0)
+(41, 41, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 41, 0)
+(42, 42, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -1, 1, 0, 0, 0, 0, 0, 42, 0)
+(43, 43, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 43, 0)
+(44, 44, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 3, 0, 0, 0, 0, 0, 0, 44, 0)
+(81, 81, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 81, 0)
+(82, 82, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 82, 0)
+(83, 83, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 83, 0)
+(84, 84, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 2, 0, 0, 0, 0, 0, 0, 84, 0)
+(85, 85, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -1, 0, 0, 0, 0, 0, 0, 85, 0)
+(86, 86, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 2, 0, 0, 0, 0, 0, 0, 86, 0)
+(87, 87, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -1, 0, 0, 0, 0, 0, 0, 87, 0)
+(88, 88, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 88, 0)
+(90, 90, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 90, 0)
+(91, 91, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 91, 0)
+(92, 92, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 92, 0)
+(93, 93, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 93, 0)
+(94, 94, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 94, 0)
+(95, 95, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 95, 0)
+(96, 96, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 96, 0)
+(97, 97, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 97, 0)
+(98, 98, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 98, 0)
+(99, 99, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 99, 0)
+(111, 111, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(113, 113, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(115, 115, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(117, 117, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 7, 1, 2, 0, 0, 0, 0, 0)
+(119, 119, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 9, 1, 3, 0, 0, 0, 0, 0)
+(130, 130, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(150, 150, True, True, True, False, True, False, False, False, True, True, False, False, False, True, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(211, 211, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 0, 0)
+(213, 213, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 3, 1, 0, 0, 0, 0, 0, 0)
+(215, 215, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 5, 1, 1, 0, 0, 0, 0, 0)
+(217, 217, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 7, 1, 2, 0, 0, 0, 0, 0)
+(219, 219, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 9, 1, 3, 0, 0, 0, 0, 0)
+(221, 221, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(223, 223, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(225, 225, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(227, 227, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 7, 1, 2, 0, 0, 0, 0, 0)
+(229, 229, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 9, 1, 3, 0, 0, 0, 0, 0)
+(310, 310, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(311, 311, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(313, 313, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(315, 315, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(317, 317, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 7, 1, 2, 0, 0, 0, 0, 0)
+(319, 319, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 9, 1, 3, 0, 0, 0, 0, 0)
+(321, 321, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 0, 0)
+(323, 323, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 3, 1, 0, 0, 0, 0, 0, 0)
+(325, 325, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 5, 1, 1, 0, 0, 0, 0, 0)
+(327, 327, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 7, 1, 2, 0, 0, 0, 0, 0)
+(329, 329, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 9, 1, 3, 0, 0, 0, 0, 0)
+(331, 331, True, True, True, False, True, False, False, False, True, False, False, True, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(333, 333, True, True, True, False, True, False, False, False, True, False, False, True, False, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(335, 335, True, True, True, False, True, False, False, False, True, False, False, True, False, False, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(337, 337, True, True, True, False, True, False, False, False, True, False, False, True, False, False, False, False, False, 0, 7, 1, 2, 0, 0, 0, 0, 0)
+(350, 350, False, True, False, False, False, False, False, False, True, False, False, True, False, True, False, False, False, 0, 0, 0, 0, 0, 0, 0, 0, 0)
+(411, 411, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 0, 0)
+(413, 413, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, 3, 3, 1, 0, 0, 0, 0, 0, 0)
+(415, 415, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, 3, 5, 1, 1, 0, 0, 0, 0, 0)
+(421, 421, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(423, 423, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(425, 425, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(431, 431, True, True, True, False, True, False, False, False, True, False, False, True, True, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 0, 0)
+(433, 433, True, True, True, False, True, False, False, False, True, False, False, True, True, False, False, False, False, 3, 3, 1, 0, 0, 0, 0, 0, 0)
+(435, 435, True, True, True, False, True, False, False, False, True, False, False, True, True, False, False, False, False, 3, 5, 1, 1, 0, 0, 0, 0, 0)
+(441, 441, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(443, 443, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(445, 445, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(510, 510, True, True, True, False, True, False, False, False, True, True, False, False, False, True, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(511, 511, True, True, True, False, True, False, False, False, True, True, False, False, False, True, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(513, 513, True, True, True, False, True, False, False, False, True, True, False, False, False, True, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(515, 515, True, True, True, False, True, False, False, False, True, True, False, False, False, True, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(521, 521, True, True, True, False, True, False, False, False, True, False, True, False, False, True, False, False, False, 3, 1, 0, 0, 0, 0, 0, 0, 0)
+(523, 523, True, True, True, False, True, False, False, False, True, False, True, False, False, True, False, False, False, 3, 3, 1, 0, 0, 0, 0, 0, 0)
+(525, 525, True, True, True, False, True, False, False, False, True, False, True, False, False, True, False, False, False, 3, 5, 1, 1, 0, 0, 0, 0, 0)
+(530, 530, False, True, False, False, False, False, False, False, True, False, False, True, False, True, False, False, False, 0, 0, 0, 0, 0, 0, 0, 0, 0)
+(531, 531, True, True, True, False, True, False, False, False, True, False, False, True, False, True, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(533, 533, True, True, True, False, True, False, False, False, True, False, False, True, False, True, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(535, 535, True, True, True, False, True, False, False, False, True, False, False, True, False, True, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(541, 541, True, True, True, False, True, False, False, False, True, False, False, False, True, True, False, False, False, 3, 1, 0, 0, 0, 0, 0, 0, 0)
+(543, 543, True, True, True, False, True, False, False, False, True, False, False, False, True, True, False, False, False, 3, 3, 1, 0, 0, 0, 0, 0, 0)
+(545, 545, True, True, True, False, True, False, False, False, True, False, False, False, True, True, False, False, False, 3, 5, 1, 1, 0, 0, 0, 0, 0)
+(551, 551, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(553, 553, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(555, 555, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(557, 557, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 7, 1, 2, 0, 0, 0, 0, 0)
+(1103, 1103, True, True, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, -2, 3, 0, 0, 0, 0, 0, 0, 0)
+(1112, 1112, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(1114, 1114, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(1116, 1116, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, -3, 6, 0, 0, 0, 0, 0, 0, 0)
+(1118, 1118, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, -3, 8, 0, 0, 0, 0, 0, 0, 0)
+(1212, 1212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(1214, 1214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(1216, 1216, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(1218, 1218, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 8, 0, 0, 0, 0, 0, 0, 0)
+(2101, 2101, True, True, False, False, False, False, False, False, True, True, True, False, False, False, False, False, False, 1, 1, 0, 0, 0, 0, 0, 0, 0)
+(2103, 2103, True, True, False, False, False, False, False, False, True, True, True, False, False, False, False, False, False, 1, 3, 0, 0, 0, 0, 0, 0, 0)
+(2112, 2112, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(2114, 2114, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(2116, 2116, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(2118, 2118, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 8, 0, 0, 0, 0, 0, 0, 0)
+(2122, 2122, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(2124, 2124, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(2126, 2126, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 6, 0, 0, 0, 0, 0, 0, 0)
+(2128, 2128, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 8, 0, 0, 0, 0, 0, 0, 0)
+(2203, 2203, True, True, False, False, False, False, False, False, True, False, True, False, False, False, False, False, False, 4, 3, 0, 0, 0, 0, 0, 0, 0)
+(2212, 2212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(2214, 2214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(2216, 2216, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 6, 0, 0, 0, 0, 0, 0, 0)
+(2218, 2218, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 8, 0, 0, 0, 0, 0, 0, 0)
+(2222, 2222, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, 6, 2, 0, 0, 0, 0, 0, 0, 0)
+(2224, 2224, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, 6, 4, 0, 0, 0, 0, 0, 0, 0)
+(2226, 2226, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, 6, 6, 0, 0, 0, 0, 0, 0, 0)
+(2228, 2228, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, 6, 8, 0, 0, 0, 0, 0, 0, 0)
+(3101, 3101, True, True, False, False, False, False, False, False, True, True, False, True, False, False, False, False, False, -2, 1, 0, 0, 0, 0, 0, 0, 0)
+(3103, 3103, True, True, False, False, False, False, False, False, True, True, False, True, False, False, False, False, False, -2, 3, 0, 0, 0, 0, 0, 0, 0)
+(3112, 3112, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(3114, 3114, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(3116, 3116, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 6, 0, 0, 0, 0, 0, 0, 0)
+(3118, 3118, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 8, 0, 0, 0, 0, 0, 0, 0)
+(3122, 3122, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(3124, 3124, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(3126, 3126, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(3128, 3128, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 8, 0, 0, 0, 0, 0, 0, 0)
+(3201, 3201, True, True, False, False, False, False, False, False, True, False, True, True, False, False, False, False, False, 1, 1, 0, 0, 0, 0, 0, 0, 0)
+(3203, 3203, True, True, False, False, False, False, False, False, True, False, True, True, False, False, False, False, False, 1, 3, 0, 0, 0, 0, 0, 0, 0)
+(3212, 3212, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(3214, 3214, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(3216, 3216, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(3218, 3218, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 8, 0, 0, 0, 0, 0, 0, 0)
+(3222, 3222, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(3224, 3224, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(3226, 3226, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 6, 0, 0, 0, 0, 0, 0, 0)
+(3228, 3228, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 8, 0, 0, 0, 0, 0, 0, 0)
+(3303, 3303, True, True, False, False, False, False, False, False, True, False, False, True, False, False, False, False, False, -2, 3, 0, 0, 0, 0, 0, 0, 0)
+(3312, 3312, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(3314, 3314, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(3322, 3322, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(3324, 3324, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(3334, 3334, True, True, False, True, True, False, False, False, True, False, False, True, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(4101, 4101, True, True, False, False, False, False, False, False, True, True, False, False, True, False, False, False, False, 1, 1, 0, 0, 0, 0, 0, 0, 0)
+(4103, 4103, True, True, False, False, False, False, False, False, True, True, False, False, True, False, False, False, False, 1, 3, 0, 0, 0, 0, 0, 0, 0)
+(4112, 4112, True, True, False, True, True, False, False, False, True, True, False, False, True, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(4114, 4114, True, True, False, True, True, False, False, False, True, True, False, False, True, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(4122, 4122, True, True, False, True, True, False, False, False, True, True, True, False, True, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(4132, 4132, True, True, False, True, True, False, False, False, True, True, False, True, True, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(4201, 4201, True, True, False, False, False, False, False, False, True, False, True, False, True, False, False, False, False, 4, 1, 0, 0, 0, 0, 0, 0, 0)
+(4203, 4203, True, True, False, False, False, False, False, False, True, False, True, False, True, False, False, False, False, 4, 3, 0, 0, 0, 0, 0, 0, 0)
+(4212, 4212, True, True, False, True, True, False, False, False, True, True, True, False, True, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(4214, 4214, True, True, False, True, True, False, False, False, True, True, True, False, True, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(4222, 4222, True, True, False, True, True, False, False, False, True, False, True, False, True, False, False, False, False, 6, 2, 0, 0, 0, 0, 0, 0, 0)
+(4224, 4224, True, True, False, True, True, False, False, False, True, False, True, False, True, False, False, False, False, 6, 4, 0, 0, 0, 0, 0, 0, 0)
+(4232, 4232, True, True, False, True, True, False, False, False, True, False, True, True, True, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(4301, 4301, True, True, False, False, False, False, False, False, True, False, False, True, True, False, False, False, False, 1, 1, 0, 0, 0, 0, 0, 0, 0)
+(4303, 4303, True, True, False, False, False, False, False, False, True, False, False, True, True, False, False, False, False, 1, 3, 0, 0, 0, 0, 0, 0, 0)
+(4312, 4312, True, True, False, True, True, False, False, False, True, True, False, True, True, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(4314, 4314, True, True, False, True, True, False, False, False, True, True, False, True, True, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(4322, 4322, True, True, False, True, True, False, False, False, True, False, True, True, True, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(4324, 4324, True, True, False, True, True, False, False, False, True, False, True, True, True, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(4332, 4332, True, True, False, True, True, False, False, False, True, False, False, True, True, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(4334, 4334, True, True, False, True, True, False, False, False, True, False, False, True, True, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(4403, 4403, True, True, False, False, False, False, False, False, True, False, False, False, True, False, False, False, False, 4, 3, 0, 0, 0, 0, 0, 0, 0)
+(4412, 4412, True, True, False, True, True, False, False, False, True, True, False, False, True, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(4414, 4414, True, True, False, True, True, False, False, False, True, True, False, False, True, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(4422, 4422, True, True, False, True, True, False, False, False, True, False, True, False, True, False, False, False, False, 6, 2, 0, 0, 0, 0, 0, 0, 0)
+(4424, 4424, True, True, False, True, True, False, False, False, True, False, True, False, True, False, False, False, False, 6, 4, 0, 0, 0, 0, 0, 0, 0)
+(4432, 4432, True, True, False, True, True, False, False, False, True, False, False, True, True, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(4434, 4434, True, True, False, True, True, False, False, False, True, False, False, True, True, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(4444, 4444, True, True, False, True, True, False, False, False, True, False, False, False, True, False, False, False, False, 6, 4, 0, 0, 0, 0, 0, 0, 0)
+(5101, 5101, True, True, False, False, False, False, False, False, True, True, False, False, False, True, False, False, False, -2, 1, 0, 0, 0, 0, 0, 0, 0)
+(5103, 5103, True, True, False, False, False, False, False, False, True, True, False, False, False, True, False, False, False, -2, 3, 0, 0, 0, 0, 0, 0, 0)
+(5112, 5112, True, True, False, True, True, False, False, False, True, True, False, False, False, True, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(5114, 5114, True, True, False, True, True, False, False, False, True, True, False, False, False, True, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(5122, 5122, True, True, False, True, True, False, False, False, True, True, True, False, False, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(5124, 5124, True, True, False, True, True, False, False, False, True, True, True, False, False, True, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(5132, 5132, True, True, False, True, True, False, False, False, True, True, False, True, False, True, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(5142, 5142, True, True, False, True, True, False, False, False, True, True, False, False, True, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(5201, 5201, True, True, False, False, False, False, False, False, True, False, True, False, False, True, False, False, False, 1, 1, 0, 0, 0, 0, 0, 0, 0)
+(5203, 5203, True, True, False, False, False, False, False, False, True, False, True, False, False, True, False, False, False, 1, 3, 0, 0, 0, 0, 0, 0, 0)
+(5212, 5212, True, True, False, True, True, False, False, False, True, True, True, False, False, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(5214, 5214, True, True, False, True, True, False, False, False, True, True, True, False, False, True, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(5222, 5222, True, True, False, True, True, False, False, False, True, False, True, False, False, True, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(5224, 5224, True, True, False, True, True, False, False, False, True, False, True, False, False, True, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(5232, 5232, True, True, False, True, True, False, False, False, True, False, True, True, False, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(5242, 5242, True, True, False, True, True, False, False, False, True, False, True, False, True, True, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(5301, 5301, True, True, False, False, False, False, False, False, True, False, False, True, False, True, False, False, False, -2, 1, 0, 0, 0, 0, 0, 0, 0)
+(5303, 5303, True, True, False, False, False, False, False, False, True, False, False, True, False, True, False, False, False, -2, 3, 0, 0, 0, 0, 0, 0, 0)
+(5312, 5312, True, True, False, True, True, False, False, False, True, True, False, True, False, True, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(5314, 5314, True, True, False, True, True, False, False, False, True, True, False, True, False, True, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(5322, 5322, True, True, False, True, True, False, False, False, True, False, True, True, False, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(5324, 5324, True, True, False, True, True, False, False, False, True, False, True, True, False, True, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(5332, 5332, True, True, False, True, True, False, False, False, True, False, False, True, False, True, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(5334, 5334, True, True, False, True, True, False, False, False, True, False, False, True, False, True, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(5342, 5342, True, True, False, True, True, False, False, False, True, False, False, True, True, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(5401, 5401, True, True, False, False, False, False, False, False, True, False, False, False, True, True, False, False, False, 1, 1, 0, 0, 0, 0, 0, 0, 0)
+(5403, 5403, True, True, False, False, False, False, False, False, True, False, False, False, True, True, False, False, False, 1, 3, 0, 0, 0, 0, 0, 0, 0)
+(5412, 5412, True, True, False, True, True, False, False, False, True, True, False, False, True, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(5414, 5414, True, True, False, True, True, False, False, False, True, True, False, False, True, True, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(5422, 5422, True, True, False, True, True, False, False, False, True, False, True, False, True, True, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(5424, 5424, True, True, False, True, True, False, False, False, True, False, True, False, True, True, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(5432, 5432, True, True, False, True, True, False, False, False, True, False, False, True, True, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(5434, 5434, True, True, False, True, True, False, False, False, True, False, False, True, True, True, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(5442, 5442, True, True, False, True, True, False, False, False, True, False, False, False, True, True, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(5444, 5444, True, True, False, True, True, False, False, False, True, False, False, False, True, True, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(5503, 5503, True, True, False, False, False, False, False, False, True, False, False, False, False, True, False, False, False, -2, 3, 0, 0, 0, 0, 0, 0, 0)
+(5512, 5512, True, True, False, True, True, False, False, False, True, True, False, False, False, True, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(5514, 5514, True, True, False, True, True, False, False, False, True, True, False, False, False, True, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(5522, 5522, True, True, False, True, True, False, False, False, True, False, True, False, False, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(5524, 5524, True, True, False, True, True, False, False, False, True, False, True, False, False, True, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(5532, 5532, True, True, False, True, True, False, False, False, True, False, False, True, False, True, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(5534, 5534, True, True, False, True, True, False, False, False, True, False, False, True, False, True, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(5542, 5542, True, True, False, True, True, False, False, False, True, False, False, False, True, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(5544, 5544, True, True, False, True, True, False, False, False, True, False, False, False, True, True, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(5554, 5554, True, True, False, True, True, False, False, False, True, False, False, False, False, True, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(10022, 10022, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 22, 0)
+(10111, 10111, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(10113, 10113, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(10115, 10115, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 5, 0, 2, 0, 0, 0, 0, 0)
+(10211, 10211, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 1, 1, 1, 0, 0, 0, 0, 0)
+(10213, 10213, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 3, 0, 1, 0, 0, 0, 0, 0)
+(10215, 10215, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 5, 0, 2, 0, 0, 0, 0, 0)
+(10221, 10221, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(10223, 10223, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(10225, 10225, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 5, 0, 2, 0, 0, 0, 0, 0)
+(10311, 10311, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(10313, 10313, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(10315, 10315, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 5, 0, 2, 0, 0, 0, 0, 0)
+(10321, 10321, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 1, 1, 1, 0, 0, 0, 0, 0)
+(10323, 10323, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 3, 0, 1, 0, 0, 0, 0, 0)
+(10325, 10325, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 5, 0, 2, 0, 0, 0, 0, 0)
+(10331, 10331, True, True, True, False, True, False, False, False, True, False, False, True, False, False, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(10333, 10333, True, True, True, False, True, False, False, False, True, False, False, True, False, False, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(10335, 10335, True, True, True, False, True, False, False, False, True, False, False, True, False, False, False, False, False, 0, 5, 0, 2, 0, 0, 0, 0, 0)
+(10411, 10411, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, 3, 1, 1, 1, 0, 0, 0, 0, 0)
+(10413, 10413, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, 3, 3, 0, 1, 0, 0, 0, 0, 0)
+(10421, 10421, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(10423, 10423, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(10431, 10431, True, True, True, False, True, False, False, False, True, False, False, True, True, False, False, False, False, 3, 1, 1, 1, 0, 0, 0, 0, 0)
+(10433, 10433, True, True, True, False, True, False, False, False, True, False, False, True, True, False, False, False, False, 3, 3, 0, 1, 0, 0, 0, 0, 0)
+(10441, 10441, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(10443, 10443, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(10511, 10511, True, True, True, False, True, False, False, False, True, True, False, False, False, True, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(10513, 10513, True, True, True, False, True, False, False, False, True, True, False, False, False, True, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(10521, 10521, True, True, True, False, True, False, False, False, True, False, True, False, False, True, False, False, False, 3, 1, 1, 1, 0, 0, 0, 0, 0)
+(10523, 10523, True, True, True, False, True, False, False, False, True, False, True, False, False, True, False, False, False, 3, 3, 0, 1, 0, 0, 0, 0, 0)
+(10531, 10531, True, True, True, False, True, False, False, False, True, False, False, True, False, True, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(10533, 10533, True, True, True, False, True, False, False, False, True, False, False, True, False, True, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(10541, 10541, True, True, True, False, True, False, False, False, True, False, False, False, True, True, False, False, False, 3, 1, 1, 1, 0, 0, 0, 0, 0)
+(10543, 10543, True, True, True, False, True, False, False, False, True, False, False, False, True, True, False, False, False, 3, 3, 0, 1, 0, 0, 0, 0, 0)
+(10551, 10551, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(10553, 10553, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(10555, 10555, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 5, 0, 2, 0, 0, 0, 0, 0)
+(11112, 11112, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(11114, 11114, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(11116, 11116, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, -3, 6, 0, 0, 0, 0, 0, 0, 0)
+(11212, 11212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(11216, 11216, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(12112, 12112, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(12114, 12114, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(12116, 12116, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(12118, 12118, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 8, 0, 0, 0, 0, 0, 0, 0)
+(12122, 12122, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(12126, 12126, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 6, 0, 0, 0, 0, 0, 0, 0)
+(12212, 12212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(12214, 12214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(12216, 12216, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 6, 0, 0, 0, 0, 0, 0, 0)
+(12218, 12218, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 8, 0, 0, 0, 0, 0, 0, 0)
+(12222, 12222, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, 6, 2, 0, 0, 0, 0, 0, 0, 0)
+(12224, 12224, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, 6, 4, 0, 0, 0, 0, 0, 0, 0)
+(12226, 12226, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, 6, 6, 0, 0, 0, 0, 0, 0, 0)
+(13112, 13112, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(13114, 13114, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(13116, 13116, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 6, 0, 0, 0, 0, 0, 0, 0)
+(13122, 13122, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(13124, 13124, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(13126, 13126, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(13212, 13212, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(13214, 13214, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(13216, 13216, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(13222, 13222, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(13224, 13224, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(13226, 13226, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 6, 0, 0, 0, 0, 0, 0, 0)
+(13314, 13314, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(13324, 13324, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(14122, 14122, True, True, False, True, True, False, False, False, True, True, True, False, True, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(15122, 15122, True, True, False, True, True, False, False, False, True, True, True, False, False, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(20022, 20022, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 22, 0)
+(20113, 20113, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(20213, 20213, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 3, 1, 1, 0, 0, 0, 0, 0)
+(20223, 20223, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(20313, 20313, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(20315, 20315, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 5, 1, 2, 0, 0, 0, 0, 0)
+(20323, 20323, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 3, 1, 1, 0, 0, 0, 0, 0)
+(20325, 20325, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 5, 1, 2, 0, 0, 0, 0, 0)
+(20333, 20333, True, True, True, False, True, False, False, False, True, False, False, True, False, False, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(20413, 20413, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, 3, 3, 1, 1, 0, 0, 0, 0, 0)
+(20423, 20423, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(20433, 20433, True, True, True, False, True, False, False, False, True, False, False, True, True, False, False, False, False, 3, 3, 1, 1, 0, 0, 0, 0, 0)
+(20443, 20443, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(20513, 20513, True, True, True, False, True, False, False, False, True, True, False, False, False, True, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(20523, 20523, True, True, True, False, True, False, False, False, True, False, True, False, False, True, False, False, False, 3, 3, 1, 1, 0, 0, 0, 0, 0)
+(20533, 20533, True, True, True, False, True, False, False, False, True, False, False, True, False, True, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(20543, 20543, True, True, True, False, True, False, False, False, True, False, False, False, True, True, False, False, False, 3, 3, 1, 1, 0, 0, 0, 0, 0)
+(20553, 20553, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(20555, 20555, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 5, 1, 2, 0, 0, 0, 0, 0)
+(21112, 21112, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(21114, 21114, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(21212, 21212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(21214, 21214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(22112, 22112, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(22114, 22114, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(22122, 22122, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(22124, 22124, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(22212, 22212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(22214, 22214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(22222, 22222, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, 6, 2, 0, 0, 0, 0, 0, 0, 0)
+(22224, 22224, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, 6, 4, 0, 0, 0, 0, 0, 0, 0)
+(23112, 23112, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(23114, 23114, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(23122, 23122, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(23124, 23124, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(23126, 23126, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(23212, 23212, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(23214, 23214, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(23222, 23222, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(23224, 23224, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(30113, 30113, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 3, 1, 2, 0, 0, 0, 0, 0)
+(30213, 30213, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 3, 1, 2, 0, 0, 0, 0, 0)
+(30223, 30223, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 3, 1, 2, 0, 0, 0, 0, 0)
+(30313, 30313, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 3, 1, 2, 0, 0, 0, 0, 0)
+(30323, 30323, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 3, 1, 2, 0, 0, 0, 0, 0)
+(30343, 30343, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(30353, 30353, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 3, 0, 0, 0, 0, 0, 0, 0)
+(30363, 30363, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(30443, 30443, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 3, 1, 2, 0, 0, 0, 0, 0)
+(30553, 30553, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 3, 1, 2, 0, 0, 0, 0, 0)
+(31114, 31114, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(31214, 31214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(32112, 32112, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(32114, 32114, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(32124, 32124, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(32212, 32212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(32214, 32214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(32224, 32224, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, 6, 4, 0, 0, 0, 0, 0, 0, 0)
+(33122, 33122, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(41214, 41214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(42112, 42112, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(42124, 42124, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(42212, 42212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(43122, 43122, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(52114, 52114, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(52214, 52214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(53122, 53122, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(100111, 100111, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(100113, 100113, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(100211, 100211, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 0, 0)
+(100213, 100213, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 3, 1, 0, 0, 0, 0, 0, 0)
+(100221, 100221, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(100223, 100223, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(100311, 100311, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(100313, 100313, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(100315, 100315, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(100321, 100321, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 0, 0)
+(100323, 100323, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 3, 1, 0, 0, 0, 0, 0, 0)
+(100325, 100325, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 5, 1, 1, 0, 0, 0, 0, 0)
+(100331, 100331, True, True, True, False, True, False, False, False, True, False, False, True, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(100333, 100333, True, True, True, False, True, False, False, False, True, False, False, True, False, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(100411, 100411, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 0, 0)
+(100413, 100413, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, 3, 3, 1, 0, 0, 0, 0, 0, 0)
+(100421, 100421, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(100423, 100423, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(100441, 100441, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(100443, 100443, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(100445, 100445, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(100551, 100551, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(100553, 100553, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(100555, 100555, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(100557, 100557, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 7, 1, 2, 0, 0, 0, 0, 0)
+(103112, 103112, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(103212, 103212, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(103222, 103222, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(103316, 103316, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 6, 0, 0, 0, 0, 0, 0, 0)
+(103326, 103326, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(104124, 104124, True, True, False, True, True, False, False, False, True, True, True, False, True, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(104312, 104312, True, True, False, True, True, False, False, False, True, True, False, True, True, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(104314, 104314, True, True, False, True, True, False, False, False, True, True, False, True, True, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(104322, 104322, True, True, False, True, True, False, False, False, True, False, True, True, True, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(104324, 104324, True, True, False, True, True, False, False, False, True, False, True, True, True, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(110551, 110551, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(110553, 110553, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(110555, 110555, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 5, 0, 2, 0, 0, 0, 0, 0)
+(120553, 120553, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(120555, 120555, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 5, 1, 2, 0, 0, 0, 0, 0)
+(130553, 130553, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 3, 1, 2, 0, 0, 0, 0, 0)
+(200551, 200551, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(200553, 200553, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(200555, 200555, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(203312, 203312, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(203316, 203316, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 6, 0, 0, 0, 0, 0, 0, 0)
+(203322, 203322, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(203326, 203326, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(203338, 203338, True, True, False, True, True, False, False, False, True, False, False, True, False, False, False, False, False, -3, 8, 0, 0, 0, 0, 0, 0, 0)
+(204126, 204126, True, True, False, True, True, False, False, False, True, True, True, False, True, False, False, False, False, 3, 6, 0, 0, 0, 0, 0, 0, 0)
+(210551, 210551, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(210553, 210553, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(220553, 220553, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(300553, 300553, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(1000001, 1000001, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -1, 1, 0, 0, 0, 0, 0, 1, 0)
+(1000002, 1000002, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 2, 1, 0, 0, 0, 0, 0, 2, 0)
+(1000003, 1000003, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -1, 1, 0, 0, 0, 0, 0, 3, 0)
+(1000004, 1000004, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 2, 1, 0, 0, 0, 0, 0, 4, 0)
+(1000005, 1000005, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -1, 1, 0, 0, 0, 0, 0, 5, 0)
+(1000006, 1000006, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 2, 1, 0, 0, 0, 0, 0, 6, 0)
+(1000011, 1000011, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 11, 0)
+(1000012, 1000012, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 12, 0)
+(1000013, 1000013, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 13, 0)
+(1000014, 1000014, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 14, 0)
+(1000015, 1000015, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 15, 0)
+(1000016, 1000016, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 16, 0)
+(1000021, 1000021, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 21, 0)
+(1000022, 1000022, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 22, 0)
+(1000023, 1000023, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 23, 0)
+(1000024, 1000024, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 24, 0)
+(1000025, 1000025, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 25, 0)
+(1000035, 1000035, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 35, 0)
+(1000037, 1000037, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 37, 0)
+(1000039, 1000039, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 10, 0)
+(1000522, 1000522, True, False, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(1000542, 1000542, True, False, False, False, False, False, False, False, True, False, False, False, False, True, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(1009002, 1009002, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 21, 0)
+(2000001, 2000001, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -1, 1, 0, 0, 0, 0, 0, 1, 0)
+(2000002, 2000002, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 2, 1, 0, 0, 0, 0, 0, 2, 0)
+(2000003, 2000003, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -1, 1, 0, 0, 0, 0, 0, 3, 0)
+(2000004, 2000004, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 2, 1, 0, 0, 0, 0, 0, 4, 0)
+(2000005, 2000005, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -1, 1, 0, 0, 0, 0, 0, 5, 0)
+(2000006, 2000006, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 2, 1, 0, 0, 0, 0, 0, 6, 0)
+(2000011, 2000011, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 11, 0)
+(2000012, 2000012, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 12, 0)
+(2000013, 2000013, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 13, 0)
+(2000014, 2000014, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 14, 0)
+(2000015, 2000015, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 15, 0)
+(2000016, 2000016, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 16, 0)
+(3000111, 3000111, True, False, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(3000113, 3000113, True, False, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(3000211, 3000211, True, False, False, False, False, False, False, False, True, True, True, False, False, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 0, 0)
+(3000213, 3000213, True, False, False, False, False, False, False, False, True, True, True, False, False, False, False, False, False, 3, 3, 0, 0, 0, 0, 0, 0, 0)
+(3000221, 3000221, True, False, False, False, False, False, False, False, True, False, True, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(3000223, 3000223, True, False, False, False, False, False, False, False, True, False, True, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(3000331, 3000331, True, False, False, False, False, False, False, False, True, False, False, True, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(3100021, 3100021, True, False, False, False, False, False, False, False, True, True, True, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(3100111, 3100111, True, False, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(3100113, 3100113, True, False, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(3200111, 3200111, True, False, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(3200113, 3200113, True, False, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(3300113, 3300113, True, False, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(3400113, 3400113, True, False, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(4000001, 4000001, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -1, 2, 0, 0, 0, 0, 0, 1, 0)
+(4000002, 4000002, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 2, 2, 0, 0, 0, 0, 0, 2, 0)
+(4000011, 4000011, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 11, 0)
+(4000012, 4000012, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 12, 0)
+(4900021, 4900021, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 21, 0)
+(4900023, 4900023, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 23, 0)
+(4900101, 4900101, True, False, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(4900111, 4900111, True, False, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(4900113, 4900113, True, False, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(4900211, 4900211, True, False, False, False, False, False, False, False, True, False, True, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(4900213, 4900213, True, False, False, False, False, False, False, False, True, False, True, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(5000039, 5000039, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 5, 0, 0, 0, 0, 0, 39, 0)
+(9000111, 9000111, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(9000113, 9000113, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(9000211, 9000211, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 0, 0)
+(9000213, 9000213, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 3, 0, 0, 0, 0, 0, 0, 0)
+(9000221, 9000221, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(9000443, 9000443, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(9000553, 9000553, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(9010111, 9010111, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(9010113, 9010113, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(9010211, 9010211, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 0, 0)
+(9010213, 9010213, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 3, 0, 0, 0, 0, 0, 0, 0)
+(9010221, 9010221, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(9010443, 9010443, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(9010553, 9010553, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(9020221, 9020221, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(9020443, 9020443, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(9030221, 9030221, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(9042413, 9042413, True, True, False, True, True, False, False, False, True, True, True, False, True, False, False, False, False, 3, 3, 0, 0, 0, 0, 0, 0, 0)
+(9050225, 9050225, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 5, 0, 0, 0, 0, 0, 0, 0)
+(9060225, 9060225, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 5, 0, 0, 0, 0, 0, 0, 0)
+(9080225, 9080225, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 5, 0, 0, 0, 0, 0, 0, 0)
+(9090225, 9090225, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 5, 0, 0, 0, 0, 0, 0, 0)
+(9900012, 9900012, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 12, 0)
+(9900014, 9900014, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 14, 0)
+(9900016, 9900016, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 16, 0)
+(9900023, 9900023, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 23, 0)
+(9900024, 9900024, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 3, 3, 0, 0, 0, 0, 0, 24, 0)
+(9900041, 9900041, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 6, 1, 0, 0, 0, 0, 0, 9, 0)
+(9900042, 9900042, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 6, 1, 0, 0, 0, 0, 0, 9, 0)
+(9910445, 9910445, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 5, 0, 0, 0, 0, 0, 0, 0)
+(9920443, 9920443, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(480000000, 480000000, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 0, 48)
+(1000010020, 1000010020, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 3, 1, 0, 0, 1, 2, 0, 0, 100)
+(1000010030, 1000010030, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 3, 2, 0, 0, 1, 3, 0, 0, 100)
+(1000020030, 1000020030, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 6, 2, 0, 0, 2, 3, 0, 0, 100)
+(1000020040, 1000020040, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 6, 1, 0, 0, 2, 4, 0, 0, 100)
+(1000030070, 1000030070, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 9, 2, 0, 0, 3, 7, 0, 0, 100)
+(1000040080, 1000040080, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 12, 1, 0, 0, 4, 8, 0, 0, 100)
+(1000040090, 1000040090, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 12, 2, 0, 0, 4, 9, 0, 0, 100)
+(1000040100, 1000040100, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 12, 1, 0, 0, 4, 10, 0, 0, 100)
+(1000050100, 1000050100, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 15, 1, 0, 0, 5, 10, 0, 0, 100)
+(1000050110, 1000050110, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 15, 2, 0, 0, 5, 11, 0, 0, 100)
+(1000050120, 1000050120, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 15, 1, 0, 0, 5, 12, 0, 0, 100)
+(1000060120, 1000060120, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 18, 1, 0, 0, 6, 12, 0, 0, 100)
+(1000060130, 1000060130, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 18, 2, 0, 0, 6, 13, 0, 0, 100)
+(1000060140, 1000060140, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 18, 1, 0, 0, 6, 14, 0, 0, 100)
+(1000070140, 1000070140, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 21, 1, 0, 0, 7, 14, 0, 0, 100)
+(1000070150, 1000070150, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 21, 2, 0, 0, 7, 15, 0, 0, 100)
+(1000070160, 1000070160, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 21, 1, 0, 0, 7, 16, 0, 0, 100)
+(1000080160, 1000080160, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 24, 1, 0, 0, 8, 16, 0, 0, 100)
+(1000080170, 1000080170, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 24, 2, 0, 0, 8, 17, 0, 0, 100)
+(1000080180, 1000080180, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 24, 1, 0, 0, 8, 18, 0, 0, 100)
+(1000080190, 1000080190, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 24, 2, 0, 0, 8, 19, 0, 0, 100)
+(1000090190, 1000090190, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 27, 2, 0, 0, 9, 19, 0, 0, 100)
+(1000100220, 1000100220, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 30, 1, 0, 0, 10, 22, 0, 0, 100)
+(1000100230, 1000100230, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 30, 2, 0, 0, 10, 23, 0, 0, 100)
+(1000110240, 1000110240, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 33, 1, 0, 0, 11, 24, 0, 0, 100)
+(1000120240, 1000120240, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 36, 1, 0, 0, 12, 24, 0, 0, 100)
+(1000120250, 1000120250, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 36, 2, 0, 0, 12, 25, 0, 0, 100)
+(1000120260, 1000120260, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 36, 1, 0, 0, 12, 26, 0, 0, 100)
+(1000120270, 1000120270, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 36, 2, 0, 0, 12, 27, 0, 0, 100)
+(1000130270, 1000130270, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 39, 2, 0, 0, 13, 27, 0, 0, 100)
+(1000130280, 1000130280, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 39, 1, 0, 0, 13, 28, 0, 0, 100)
+(1000140280, 1000140280, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 42, 1, 0, 0, 14, 28, 0, 0, 100)
+(1000140290, 1000140290, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 42, 2, 0, 0, 14, 29, 0, 0, 100)
+(1000140300, 1000140300, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 42, 1, 0, 0, 14, 30, 0, 0, 100)
+(1000150310, 1000150310, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 45, 2, 0, 0, 15, 31, 0, 0, 100)
+(1000170390, 1000170390, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 51, 2, 0, 0, 17, 39, 0, 0, 100)
+(1000170400, 1000170400, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 51, 1, 0, 0, 17, 40, 0, 0, 100)
+(1000180360, 1000180360, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 54, 1, 0, 0, 18, 36, 0, 0, 100)
+(1000180400, 1000180400, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 54, 1, 0, 0, 18, 40, 0, 0, 100)
+(1000240500, 1000240500, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 72, 1, 0, 0, 24, 50, 0, 0, 100)
+(1000240520, 1000240520, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 72, 1, 0, 0, 24, 52, 0, 0, 100)
+(1000240530, 1000240530, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 72, 2, 0, 0, 24, 53, 0, 0, 100)
+(1000240540, 1000240540, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 72, 1, 0, 0, 24, 54, 0, 0, 100)
+(1000250550, 1000250550, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 75, 2, 0, 0, 25, 55, 0, 0, 100)
+(1000260540, 1000260540, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 78, 1, 0, 0, 26, 54, 0, 0, 100)
+(1000260560, 1000260560, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 78, 1, 0, 0, 26, 56, 0, 0, 100)
+(1000260570, 1000260570, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 78, 2, 0, 0, 26, 57, 0, 0, 100)
+(1000260590, 1000260590, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 78, 2, 0, 0, 26, 59, 0, 0, 100)
+(1000280580, 1000280580, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 84, 1, 0, 0, 28, 58, 0, 0, 100)
+(1000280600, 1000280600, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 84, 1, 0, 0, 28, 60, 0, 0, 100)
+(1000280610, 1000280610, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 84, 2, 0, 0, 28, 61, 0, 0, 100)
+(1000280620, 1000280620, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 84, 1, 0, 0, 28, 62, 0, 0, 100)
+(1000280630, 1000280630, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 84, 2, 0, 0, 28, 63, 0, 0, 100)
+(1000280640, 1000280640, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 84, 1, 0, 0, 28, 64, 0, 0, 100)
+(1000290630, 1000290630, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 87, 2, 0, 0, 29, 63, 0, 0, 100)
+(1000290650, 1000290650, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 87, 2, 0, 0, 29, 65, 0, 0, 100)
+(1000420920, 1000420920, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 126, 1, 0, 0, 42, 92, 0, 0, 100)
+(1000420950, 1000420950, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 126, 2, 0, 0, 42, 95, 0, 0, 100)
+(1000420960, 1000420960, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 126, 1, 0, 0, 42, 96, 0, 0, 100)
+(1000420970, 1000420970, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 126, 2, 0, 0, 42, 97, 0, 0, 100)
+(1000420980, 1000420980, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 126, 1, 0, 0, 42, 98, 0, 0, 100)
+(1000421000, 1000421000, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 126, 1, 0, 0, 42, 100, 0, 0, 100)
+(1000461080, 1000461080, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 138, 1, 0, 0, 46, 108, 0, 0, 100)
+(1000791970, 1000791970, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 237, 2, 0, 0, 79, 197, 0, 0, 100)
+(1000822040, 1000822040, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 246, 1, 0, 0, 82, 204, 0, 0, 100)
+(1000822060, 1000822060, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 246, 1, 0, 0, 82, 206, 0, 0, 100)
+(1000822070, 1000822070, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 246, 2, 0, 0, 82, 207, 0, 0, 100)
+(1000822080, 1000822080, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 246, 1, 0, 0, 82, 208, 0, 0, 100)
+"""
+findReferenceBlock(block)
+</text></argument>
+</extension>
diff --git a/GaudiPartProp/tests/qmtest/partprop.qms/usesvc0.qmt b/GaudiPartProp/tests/qmtest/partprop.qms/usesvc0.qmt
new file mode 100644
index 0000000000000000000000000000000000000000..aa76a9b88350eefcf6fbe3a48852262bf4eb8d23
--- /dev/null
+++ b/GaudiPartProp/tests/qmtest/partprop.qms/usesvc0.qmt
@@ -0,0 +1,15 @@
+<?xml version="1.0" ?><!DOCTYPE extension  PUBLIC '-//QM/2.3/Extension//EN'  'http://www.codesourcery.com/qm/dtds/2.3/-//qm/2.3/extension//en.dtd'>
+<!--
+    (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations
+
+    This software is distributed under the terms of the Apache version 2 licence,
+    copied verbatim in the file "LICENSE".
+
+    In applying this licence, CERN does not waive the privileges and immunities
+    granted to it by virtue of its status as an Intergovernmental Organization
+    or submit itself to any jurisdiction.
+-->
+<extension class="GaudiTest.GaudiExeTest" kind="test">
+  <argument name="program"><text>gaudirun.py</text></argument>
+  <argument name="args"><set><text>../options/PartPropAlg.py</text></set></argument>
+</extension>
diff --git a/GaudiPartProp/tests/qmtest/partprop.qms/usesvc1.qmt b/GaudiPartProp/tests/qmtest/partprop.qms/usesvc1.qmt
new file mode 100644
index 0000000000000000000000000000000000000000..6cbf0576f4628f3f60a19d02eb6051f324c2482d
--- /dev/null
+++ b/GaudiPartProp/tests/qmtest/partprop.qms/usesvc1.qmt
@@ -0,0 +1,14 @@
+<?xml version="1.0" ?><!DOCTYPE extension  PUBLIC '-//QM/2.3/Extension//EN'  'http://www.codesourcery.com/qm/dtds/2.3/-//qm/2.3/extension//en.dtd'>
+<!--
+    (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations
+
+    This software is distributed under the terms of the Apache version 2 licence,
+    copied verbatim in the file "LICENSE".
+
+    In applying this licence, CERN does not waive the privileges and immunities
+    granted to it by virtue of its status as an Intergovernmental Organization
+    or submit itself to any jurisdiction.
+-->
+<extension class="GaudiTest.GaudiExeTest" kind="test">
+  <argument name="program"><text>../scripts/PartPropSvc.py</text></argument>
+</extension>
diff --git a/GaudiPartProp/tests/refs/partprop0.ref b/GaudiPartProp/tests/refs/partprop0.ref
new file mode 100644
index 0000000000000000000000000000000000000000..7756b700025368374b1cb9fedb066c6b795352dd
--- /dev/null
+++ b/GaudiPartProp/tests/refs/partprop0.ref
@@ -0,0 +1,174 @@
+NAME3            PDG:      123, Q:   0, mass:      503 MeV,  ctau:    2.99792 cm
+NAME2            PDG:      122, Q:  -1, mass:      502 MeV,  ctau:    2.99792 cm
+NAME1            PDG:      121, Q:  +1, mass:      501 MeV,  ctau:    2.99792 cm
+ ----------------------------------------------------------------------------------------------------------------------------------------------------------
+|        Name       |     PdgID    |   Q  |        Mass       |    (c*)Tau/Gamma  |  MaxWidth  |        EvtGen        |  PythiaID  |     Antiparticle     |
+ ----------------------------------------------------------------------------------------------------------------------------------------------------------
+| NAME3             |          123 |   0  |           503 MeV |     2.9979246 cm  |    0.001   |         NAME3        |     123    |           -          |
+| NAME2             |          122 |  -1  |           502 MeV |     2.9979246 cm  |    0.001   |         NAME2        |     122    |         NAME1        |
+| NAME1             |          121 |   1  |           501 MeV |     2.9979246 cm  |    0.001   |         NAME1        |     121    |         NAME2        |
+ ----------------------------------------------------------------------------------------------------------------------------------------------------------
+
+ ----------------------------------------------------------------------------------------------------------------------------------------------------------
+|        Name       |     PdgID    |   Q  |        Mass       |    (c*)Tau/Gamma  |  MaxWidth  |        EvtGen        |  PythiaID  |     Antiparticle     |
+ ----------------------------------------------------------------------------------------------------------------------------------------------------------
+| NAME1             |          121 |   1  |           501 MeV |     2.9979246 cm  |    0.001   |         NAME1        |     121    |         NAME2        |
+| NAME2             |          122 |  -1  |           502 MeV |     2.9979246 cm  |    0.001   |         NAME2        |     122    |         NAME1        |
+| NAME3             |          123 |   0  |           503 MeV |     2.9979246 cm  |    0.001   |         NAME3        |     123    |           -          |
+ ----------------------------------------------------------------------------------------------------------------------------------------------------------
+
+[Gaudi.ParticleID(123), Gaudi.ParticleID(122), Gaudi.ParticleID(121)]
+[Gaudi.ParticleID(121), Gaudi.ParticleID(122), Gaudi.ParticleID(123)]
+Gaudi.ParticleID(121) 121
+Gaudi.ParticleID(122) 122
+Gaudi.ParticleID(123) 123
+Gaudi.ParticleID(5122)
+ isValid      True
+ isMeson      False
+ isBaryon     True
+ isDiQuark    False
+ isHadron     True
+ isLepton     False
+ isNucleus    False
+ hasUp        True
+ hasDown      True
+ hasStrange   False
+ hasCharm     False
+ hasBottom    True
+ hasTop       False
+ hasQuarks    True
+ isQuark      False
+ threeCharge  0
+ jSpin        2
+ sSpin        0
+ lSpin        0
+ fundamental  0
+ extra        0
+ A            0
+ Z            0
+ nLambda      0
+Gaudi.ParticleID(4)
+ isValid      True
+ isMeson      False
+ isBaryon     False
+ isDiQuark    False
+ isHadron     False
+ isLepton     False
+ isNucleus    False
+ hasUp        False
+ hasDown      False
+ hasStrange   False
+ hasCharm     True
+ hasBottom    False
+ hasTop       False
+ hasQuarks    False
+ isQuark      True
+ threeCharge  2
+ jSpin        2
+ sSpin        0
+ lSpin        0
+ fundamental  4
+ extra        0
+ A            0
+ Z            0
+ nLambda      0
+Gaudi.ParticleID(2212)
+ isValid      True
+ isMeson      False
+ isBaryon     True
+ isDiQuark    False
+ isHadron     True
+ isLepton     False
+ isNucleus    False
+ hasUp        True
+ hasDown      True
+ hasStrange   False
+ hasCharm     False
+ hasBottom    False
+ hasTop       False
+ hasQuarks    True
+ isQuark      False
+ threeCharge  3
+ jSpin        2
+ sSpin        0
+ lSpin        0
+ fundamental  0
+ extra        0
+ A            0
+ Z            0
+ nLambda      0
+Gaudi.ParticleID(1000020040)
+ isValid      True
+ isMeson      False
+ isBaryon     False
+ isDiQuark    False
+ isHadron     False
+ isLepton     False
+ isNucleus    True
+ hasUp        False
+ hasDown      False
+ hasStrange   False
+ hasCharm     False
+ hasBottom    False
+ hasTop       False
+ hasQuarks    False
+ isQuark      False
+ threeCharge  6
+ jSpin        1
+ sSpin        0
+ lSpin        0
+ fundamental  0
+ extra        100
+ A            4
+ Z            2
+ nLambda      0
+Gaudi.ParticleID(1000822080)
+ isValid      True
+ isMeson      False
+ isBaryon     False
+ isDiQuark    False
+ isHadron     False
+ isLepton     False
+ isNucleus    True
+ hasUp        False
+ hasDown      False
+ hasStrange   False
+ hasCharm     False
+ hasBottom    False
+ hasTop       False
+ hasQuarks    False
+ isQuark      False
+ threeCharge  246
+ jSpin        1
+ sSpin        0
+ lSpin        0
+ fundamental  0
+ extra        100
+ A            208
+ Z            82
+ nLambda      0
+Gaudi.ParticleID(450000000)
+ isValid      True
+ isMeson      False
+ isBaryon     False
+ isDiQuark    False
+ isHadron     False
+ isLepton     False
+ isNucleus    True
+ hasUp        False
+ hasDown      False
+ hasStrange   False
+ hasCharm     False
+ hasBottom    False
+ hasTop       False
+ hasQuarks    False
+ isQuark      False
+ threeCharge  3
+ jSpin        1
+ sSpin        0
+ lSpin        0
+ fundamental  0
+ extra        100
+ A            2
+ Z            1
+ nLambda      0
diff --git a/GaudiPartProp/tests/refs/partprop_pids.ref b/GaudiPartProp/tests/refs/partprop_pids.ref
new file mode 100644
index 0000000000000000000000000000000000000000..0da683b6955f642fdbb94134c8fb3f3b35d2e6fc
--- /dev/null
+++ b/GaudiPartProp/tests/refs/partprop_pids.ref
@@ -0,0 +1,977 @@
+ApplicationMgr       INFO Application Manager Initialized successfully
+(-1000020040, 1000020040, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, -6, 1, 0, 0, 2, 4, 0, 0, 100)
+(-1000020030, 1000020030, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, -6, 2, 0, 0, 2, 3, 0, 0, 100)
+(-1000010030, 1000010030, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, -3, 2, 0, 0, 1, 3, 0, 0, 100)
+(-1000010020, 1000010020, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, -3, 1, 0, 0, 1, 2, 0, 0, 100)
+(-990000000, 990000000, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 0, 99)
+(-99000000, 99000000, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 0, 9)
+(-9900042, 9900042, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -6, 1, 0, 0, 0, 0, 0, 9, 0)
+(-9900041, 9900041, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -6, 1, 0, 0, 0, 0, 0, 9, 0)
+(-9900024, 9900024, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -3, 3, 0, 0, 0, 0, 0, 24, 0)
+(-9042413, 9042413, True, True, False, True, True, False, False, False, True, True, True, False, True, False, False, False, False, -3, 3, 0, 0, 0, 0, 0, 0, 0)
+(-9010213, 9010213, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 3, 0, 0, 0, 0, 0, 0, 0)
+(-9010211, 9010211, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 0, 0)
+(-9000213, 9000213, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 3, 0, 0, 0, 0, 0, 0, 0)
+(-9000211, 9000211, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 0, 0)
+(-4900213, 4900213, True, False, False, False, False, False, False, False, True, False, True, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(-4900211, 4900211, True, False, False, False, False, False, False, False, True, False, True, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(-4900101, 4900101, True, False, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(-4000012, 4000012, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 12, 0)
+(-4000011, 4000011, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 11, 0)
+(-4000002, 4000002, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -2, 2, 0, 0, 0, 0, 0, 2, 0)
+(-4000001, 4000001, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 1, 2, 0, 0, 0, 0, 0, 1, 0)
+(-3000213, 3000213, True, False, False, False, False, False, False, False, True, True, True, False, False, False, False, False, False, -3, 3, 0, 0, 0, 0, 0, 0, 0)
+(-3000211, 3000211, True, False, False, False, False, False, False, False, True, True, True, False, False, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 0, 0)
+(-2000016, 2000016, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 16, 0)
+(-2000015, 2000015, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 15, 0)
+(-2000014, 2000014, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 14, 0)
+(-2000013, 2000013, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 13, 0)
+(-2000012, 2000012, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 12, 0)
+(-2000011, 2000011, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 11, 0)
+(-2000006, 2000006, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -2, 1, 0, 0, 0, 0, 0, 6, 0)
+(-2000005, 2000005, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 1, 1, 0, 0, 0, 0, 0, 5, 0)
+(-2000004, 2000004, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -2, 1, 0, 0, 0, 0, 0, 4, 0)
+(-2000003, 2000003, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 1, 1, 0, 0, 0, 0, 0, 3, 0)
+(-2000002, 2000002, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -2, 1, 0, 0, 0, 0, 0, 2, 0)
+(-2000001, 2000001, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 1, 1, 0, 0, 0, 0, 0, 1, 0)
+(-1000037, 1000037, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 37, 0)
+(-1000024, 1000024, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 24, 0)
+(-1000016, 1000016, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 16, 0)
+(-1000015, 1000015, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 15, 0)
+(-1000014, 1000014, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 14, 0)
+(-1000013, 1000013, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 13, 0)
+(-1000012, 1000012, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 12, 0)
+(-1000011, 1000011, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 11, 0)
+(-1000006, 1000006, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -2, 1, 0, 0, 0, 0, 0, 6, 0)
+(-1000005, 1000005, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 1, 1, 0, 0, 0, 0, 0, 5, 0)
+(-1000004, 1000004, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -2, 1, 0, 0, 0, 0, 0, 4, 0)
+(-1000003, 1000003, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 1, 1, 0, 0, 0, 0, 0, 3, 0)
+(-1000002, 1000002, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -2, 1, 0, 0, 0, 0, 0, 2, 0)
+(-1000001, 1000001, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 1, 1, 0, 0, 0, 0, 0, 1, 0)
+(-204126, 204126, True, True, False, True, True, False, False, False, True, True, True, False, True, False, False, False, False, -3, 6, 0, 0, 0, 0, 0, 0, 0)
+(-203338, 203338, True, True, False, True, True, False, False, False, True, False, False, True, False, False, False, False, False, 3, 8, 0, 0, 0, 0, 0, 0, 0)
+(-203326, 203326, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(-203322, 203322, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-203316, 203316, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 6, 0, 0, 0, 0, 0, 0, 0)
+(-203312, 203312, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-104324, 104324, True, True, False, True, True, False, False, False, True, False, True, True, True, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-104322, 104322, True, True, False, True, True, False, False, False, True, False, True, True, True, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-104314, 104314, True, True, False, True, True, False, False, False, True, True, False, True, True, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-104312, 104312, True, True, False, True, True, False, False, False, True, True, False, True, True, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-104124, 104124, True, True, False, True, True, False, False, False, True, True, True, False, True, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-103326, 103326, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(-103316, 103316, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 6, 0, 0, 0, 0, 0, 0, 0)
+(-103222, 103222, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-103212, 103212, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-103112, 103112, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-100423, 100423, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(-100421, 100421, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(-100413, 100413, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, -3, 3, 1, 0, 0, 0, 0, 0, 0)
+(-100411, 100411, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 0, 0)
+(-100325, 100325, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 5, 1, 1, 0, 0, 0, 0, 0)
+(-100323, 100323, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 3, 1, 0, 0, 0, 0, 0, 0)
+(-100321, 100321, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 0, 0)
+(-100315, 100315, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(-100313, 100313, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(-100311, 100311, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(-100213, 100213, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 3, 1, 0, 0, 0, 0, 0, 0)
+(-100211, 100211, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 0, 0)
+(-53122, 53122, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-52214, 52214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-52114, 52114, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-43122, 43122, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-42212, 42212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-42124, 42124, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-42112, 42112, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-41214, 41214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-33122, 33122, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-32224, 32224, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, -6, 4, 0, 0, 0, 0, 0, 0, 0)
+(-32214, 32214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-32212, 32212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-32124, 32124, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-32114, 32114, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-32112, 32112, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-31214, 31214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-31114, 31114, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-30363, 30363, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(-30353, 30353, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 3, 0, 0, 0, 0, 0, 0, 0)
+(-30343, 30343, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(-30323, 30323, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 3, 1, 2, 0, 0, 0, 0, 0)
+(-30313, 30313, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 3, 1, 2, 0, 0, 0, 0, 0)
+(-30213, 30213, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 3, 1, 2, 0, 0, 0, 0, 0)
+(-23224, 23224, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-23222, 23222, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-23214, 23214, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-23212, 23212, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-23126, 23126, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(-23124, 23124, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-23122, 23122, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-23114, 23114, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-23112, 23112, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-22224, 22224, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, -6, 4, 0, 0, 0, 0, 0, 0, 0)
+(-22222, 22222, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, -6, 2, 0, 0, 0, 0, 0, 0, 0)
+(-22214, 22214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-22212, 22212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-22124, 22124, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-22122, 22122, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-22114, 22114, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-22112, 22112, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-21214, 21214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-21212, 21212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-21114, 21114, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-21112, 21112, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-20543, 20543, True, True, True, False, True, False, False, False, True, False, False, False, True, True, False, False, False, -3, 3, 1, 1, 0, 0, 0, 0, 0)
+(-20533, 20533, True, True, True, False, True, False, False, False, True, False, False, True, False, True, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(-20523, 20523, True, True, True, False, True, False, False, False, True, False, True, False, False, True, False, False, False, -3, 3, 1, 1, 0, 0, 0, 0, 0)
+(-20513, 20513, True, True, True, False, True, False, False, False, True, True, False, False, False, True, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(-20433, 20433, True, True, True, False, True, False, False, False, True, False, False, True, True, False, False, False, False, -3, 3, 1, 1, 0, 0, 0, 0, 0)
+(-20423, 20423, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(-20413, 20413, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, -3, 3, 1, 1, 0, 0, 0, 0, 0)
+(-20325, 20325, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 5, 1, 2, 0, 0, 0, 0, 0)
+(-20323, 20323, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 3, 1, 1, 0, 0, 0, 0, 0)
+(-20315, 20315, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 5, 1, 2, 0, 0, 0, 0, 0)
+(-20313, 20313, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(-20213, 20213, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 3, 1, 1, 0, 0, 0, 0, 0)
+(-15122, 15122, True, True, False, True, True, False, False, False, True, True, True, False, False, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-14122, 14122, True, True, False, True, True, False, False, False, True, True, True, False, True, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-13324, 13324, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-13314, 13314, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-13226, 13226, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 6, 0, 0, 0, 0, 0, 0, 0)
+(-13224, 13224, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-13222, 13222, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-13216, 13216, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(-13214, 13214, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-13212, 13212, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-13126, 13126, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(-13124, 13124, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-13122, 13122, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-13116, 13116, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 6, 0, 0, 0, 0, 0, 0, 0)
+(-13114, 13114, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-13112, 13112, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-12226, 12226, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, -6, 6, 0, 0, 0, 0, 0, 0, 0)
+(-12224, 12224, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, -6, 4, 0, 0, 0, 0, 0, 0, 0)
+(-12222, 12222, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, -6, 2, 0, 0, 0, 0, 0, 0, 0)
+(-12218, 12218, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 8, 0, 0, 0, 0, 0, 0, 0)
+(-12216, 12216, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 6, 0, 0, 0, 0, 0, 0, 0)
+(-12214, 12214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-12212, 12212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-12126, 12126, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 6, 0, 0, 0, 0, 0, 0, 0)
+(-12122, 12122, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-12118, 12118, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 8, 0, 0, 0, 0, 0, 0, 0)
+(-12116, 12116, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(-12114, 12114, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-12112, 12112, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-11216, 11216, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(-11212, 11212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-11116, 11116, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, 3, 6, 0, 0, 0, 0, 0, 0, 0)
+(-11114, 11114, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-11112, 11112, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-10543, 10543, True, True, True, False, True, False, False, False, True, False, False, False, True, True, False, False, False, -3, 3, 0, 1, 0, 0, 0, 0, 0)
+(-10541, 10541, True, True, True, False, True, False, False, False, True, False, False, False, True, True, False, False, False, -3, 1, 1, 1, 0, 0, 0, 0, 0)
+(-10533, 10533, True, True, True, False, True, False, False, False, True, False, False, True, False, True, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(-10531, 10531, True, True, True, False, True, False, False, False, True, False, False, True, False, True, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(-10523, 10523, True, True, True, False, True, False, False, False, True, False, True, False, False, True, False, False, False, -3, 3, 0, 1, 0, 0, 0, 0, 0)
+(-10521, 10521, True, True, True, False, True, False, False, False, True, False, True, False, False, True, False, False, False, -3, 1, 1, 1, 0, 0, 0, 0, 0)
+(-10513, 10513, True, True, True, False, True, False, False, False, True, True, False, False, False, True, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(-10511, 10511, True, True, True, False, True, False, False, False, True, True, False, False, False, True, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(-10433, 10433, True, True, True, False, True, False, False, False, True, False, False, True, True, False, False, False, False, -3, 3, 0, 1, 0, 0, 0, 0, 0)
+(-10431, 10431, True, True, True, False, True, False, False, False, True, False, False, True, True, False, False, False, False, -3, 1, 1, 1, 0, 0, 0, 0, 0)
+(-10423, 10423, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(-10421, 10421, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(-10413, 10413, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, -3, 3, 0, 1, 0, 0, 0, 0, 0)
+(-10411, 10411, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, -3, 1, 1, 1, 0, 0, 0, 0, 0)
+(-10325, 10325, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 5, 0, 2, 0, 0, 0, 0, 0)
+(-10323, 10323, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 3, 0, 1, 0, 0, 0, 0, 0)
+(-10321, 10321, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 1, 1, 1, 0, 0, 0, 0, 0)
+(-10315, 10315, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 5, 0, 2, 0, 0, 0, 0, 0)
+(-10313, 10313, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(-10311, 10311, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(-10215, 10215, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 5, 0, 2, 0, 0, 0, 0, 0)
+(-10213, 10213, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 3, 0, 1, 0, 0, 0, 0, 0)
+(-10211, 10211, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 1, 1, 1, 0, 0, 0, 0, 0)
+(-5554, 5554, True, True, False, True, True, False, False, False, True, False, False, False, False, True, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5544, 5544, True, True, False, True, True, False, False, False, True, False, False, False, True, True, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5542, 5542, True, True, False, True, True, False, False, False, True, False, False, False, True, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5534, 5534, True, True, False, True, True, False, False, False, True, False, False, True, False, True, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5532, 5532, True, True, False, True, True, False, False, False, True, False, False, True, False, True, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5524, 5524, True, True, False, True, True, False, False, False, True, False, True, False, False, True, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5522, 5522, True, True, False, True, True, False, False, False, True, False, True, False, False, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5514, 5514, True, True, False, True, True, False, False, False, True, True, False, False, False, True, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5512, 5512, True, True, False, True, True, False, False, False, True, True, False, False, False, True, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5503, 5503, True, True, False, False, False, False, False, False, True, False, False, False, False, True, False, False, False, 2, 3, 0, 0, 0, 0, 0, 0, 0)
+(-5444, 5444, True, True, False, True, True, False, False, False, True, False, False, False, True, True, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5442, 5442, True, True, False, True, True, False, False, False, True, False, False, False, True, True, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5434, 5434, True, True, False, True, True, False, False, False, True, False, False, True, True, True, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5432, 5432, True, True, False, True, True, False, False, False, True, False, False, True, True, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5424, 5424, True, True, False, True, True, False, False, False, True, False, True, False, True, True, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5422, 5422, True, True, False, True, True, False, False, False, True, False, True, False, True, True, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5414, 5414, True, True, False, True, True, False, False, False, True, True, False, False, True, True, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5412, 5412, True, True, False, True, True, False, False, False, True, True, False, False, True, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5403, 5403, True, True, False, False, False, False, False, False, True, False, False, False, True, True, False, False, False, -1, 3, 0, 0, 0, 0, 0, 0, 0)
+(-5401, 5401, True, True, False, False, False, False, False, False, True, False, False, False, True, True, False, False, False, -1, 1, 0, 0, 0, 0, 0, 0, 0)
+(-5342, 5342, True, True, False, True, True, False, False, False, True, False, False, True, True, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5334, 5334, True, True, False, True, True, False, False, False, True, False, False, True, False, True, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5332, 5332, True, True, False, True, True, False, False, False, True, False, False, True, False, True, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5324, 5324, True, True, False, True, True, False, False, False, True, False, True, True, False, True, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5322, 5322, True, True, False, True, True, False, False, False, True, False, True, True, False, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5314, 5314, True, True, False, True, True, False, False, False, True, True, False, True, False, True, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5312, 5312, True, True, False, True, True, False, False, False, True, True, False, True, False, True, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5303, 5303, True, True, False, False, False, False, False, False, True, False, False, True, False, True, False, False, False, 2, 3, 0, 0, 0, 0, 0, 0, 0)
+(-5301, 5301, True, True, False, False, False, False, False, False, True, False, False, True, False, True, False, False, False, 2, 1, 0, 0, 0, 0, 0, 0, 0)
+(-5242, 5242, True, True, False, True, True, False, False, False, True, False, True, False, True, True, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5232, 5232, True, True, False, True, True, False, False, False, True, False, True, True, False, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5224, 5224, True, True, False, True, True, False, False, False, True, False, True, False, False, True, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5222, 5222, True, True, False, True, True, False, False, False, True, False, True, False, False, True, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5214, 5214, True, True, False, True, True, False, False, False, True, True, True, False, False, True, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5212, 5212, True, True, False, True, True, False, False, False, True, True, True, False, False, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5203, 5203, True, True, False, False, False, False, False, False, True, False, True, False, False, True, False, False, False, -1, 3, 0, 0, 0, 0, 0, 0, 0)
+(-5201, 5201, True, True, False, False, False, False, False, False, True, False, True, False, False, True, False, False, False, -1, 1, 0, 0, 0, 0, 0, 0, 0)
+(-5142, 5142, True, True, False, True, True, False, False, False, True, True, False, False, True, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5132, 5132, True, True, False, True, True, False, False, False, True, True, False, True, False, True, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5124, 5124, True, True, False, True, True, False, False, False, True, True, True, False, False, True, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5122, 5122, True, True, False, True, True, False, False, False, True, True, True, False, False, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5114, 5114, True, True, False, True, True, False, False, False, True, True, False, False, False, True, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-5112, 5112, True, True, False, True, True, False, False, False, True, True, False, False, False, True, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-5103, 5103, True, True, False, False, False, False, False, False, True, True, False, False, False, True, False, False, False, 2, 3, 0, 0, 0, 0, 0, 0, 0)
+(-5101, 5101, True, True, False, False, False, False, False, False, True, True, False, False, False, True, False, False, False, 2, 1, 0, 0, 0, 0, 0, 0, 0)
+(-4444, 4444, True, True, False, True, True, False, False, False, True, False, False, False, True, False, False, False, False, -6, 4, 0, 0, 0, 0, 0, 0, 0)
+(-4434, 4434, True, True, False, True, True, False, False, False, True, False, False, True, True, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-4432, 4432, True, True, False, True, True, False, False, False, True, False, False, True, True, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-4424, 4424, True, True, False, True, True, False, False, False, True, False, True, False, True, False, False, False, False, -6, 4, 0, 0, 0, 0, 0, 0, 0)
+(-4422, 4422, True, True, False, True, True, False, False, False, True, False, True, False, True, False, False, False, False, -6, 2, 0, 0, 0, 0, 0, 0, 0)
+(-4414, 4414, True, True, False, True, True, False, False, False, True, True, False, False, True, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-4412, 4412, True, True, False, True, True, False, False, False, True, True, False, False, True, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-4403, 4403, True, True, False, False, False, False, False, False, True, False, False, False, True, False, False, False, False, -4, 3, 0, 0, 0, 0, 0, 0, 0)
+(-4334, 4334, True, True, False, True, True, False, False, False, True, False, False, True, True, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-4332, 4332, True, True, False, True, True, False, False, False, True, False, False, True, True, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-4324, 4324, True, True, False, True, True, False, False, False, True, False, True, True, True, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-4322, 4322, True, True, False, True, True, False, False, False, True, False, True, True, True, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-4314, 4314, True, True, False, True, True, False, False, False, True, True, False, True, True, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-4312, 4312, True, True, False, True, True, False, False, False, True, True, False, True, True, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-4303, 4303, True, True, False, False, False, False, False, False, True, False, False, True, True, False, False, False, False, -1, 3, 0, 0, 0, 0, 0, 0, 0)
+(-4301, 4301, True, True, False, False, False, False, False, False, True, False, False, True, True, False, False, False, False, -1, 1, 0, 0, 0, 0, 0, 0, 0)
+(-4232, 4232, True, True, False, True, True, False, False, False, True, False, True, True, True, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-4224, 4224, True, True, False, True, True, False, False, False, True, False, True, False, True, False, False, False, False, -6, 4, 0, 0, 0, 0, 0, 0, 0)
+(-4222, 4222, True, True, False, True, True, False, False, False, True, False, True, False, True, False, False, False, False, -6, 2, 0, 0, 0, 0, 0, 0, 0)
+(-4214, 4214, True, True, False, True, True, False, False, False, True, True, True, False, True, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-4212, 4212, True, True, False, True, True, False, False, False, True, True, True, False, True, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-4203, 4203, True, True, False, False, False, False, False, False, True, False, True, False, True, False, False, False, False, -4, 3, 0, 0, 0, 0, 0, 0, 0)
+(-4201, 4201, True, True, False, False, False, False, False, False, True, False, True, False, True, False, False, False, False, -4, 1, 0, 0, 0, 0, 0, 0, 0)
+(-4132, 4132, True, True, False, True, True, False, False, False, True, True, False, True, True, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-4122, 4122, True, True, False, True, True, False, False, False, True, True, True, False, True, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-4114, 4114, True, True, False, True, True, False, False, False, True, True, False, False, True, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-4112, 4112, True, True, False, True, True, False, False, False, True, True, False, False, True, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-4103, 4103, True, True, False, False, False, False, False, False, True, True, False, False, True, False, False, False, False, -1, 3, 0, 0, 0, 0, 0, 0, 0)
+(-4101, 4101, True, True, False, False, False, False, False, False, True, True, False, False, True, False, False, False, False, -1, 1, 0, 0, 0, 0, 0, 0, 0)
+(-3334, 3334, True, True, False, True, True, False, False, False, True, False, False, True, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-3324, 3324, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-3322, 3322, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-3314, 3314, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-3312, 3312, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-3303, 3303, True, True, False, False, False, False, False, False, True, False, False, True, False, False, False, False, False, 2, 3, 0, 0, 0, 0, 0, 0, 0)
+(-3228, 3228, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 8, 0, 0, 0, 0, 0, 0, 0)
+(-3226, 3226, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 6, 0, 0, 0, 0, 0, 0, 0)
+(-3224, 3224, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-3222, 3222, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-3218, 3218, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 8, 0, 0, 0, 0, 0, 0, 0)
+(-3216, 3216, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(-3214, 3214, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-3212, 3212, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-3203, 3203, True, True, False, False, False, False, False, False, True, False, True, True, False, False, False, False, False, -1, 3, 0, 0, 0, 0, 0, 0, 0)
+(-3201, 3201, True, True, False, False, False, False, False, False, True, False, True, True, False, False, False, False, False, -1, 1, 0, 0, 0, 0, 0, 0, 0)
+(-3128, 3128, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 8, 0, 0, 0, 0, 0, 0, 0)
+(-3126, 3126, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(-3124, 3124, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-3122, 3122, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-3118, 3118, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 8, 0, 0, 0, 0, 0, 0, 0)
+(-3116, 3116, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 6, 0, 0, 0, 0, 0, 0, 0)
+(-3114, 3114, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-3112, 3112, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-3103, 3103, True, True, False, False, False, False, False, False, True, True, False, True, False, False, False, False, False, 2, 3, 0, 0, 0, 0, 0, 0, 0)
+(-3101, 3101, True, True, False, False, False, False, False, False, True, True, False, True, False, False, False, False, False, 2, 1, 0, 0, 0, 0, 0, 0, 0)
+(-2228, 2228, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, -6, 8, 0, 0, 0, 0, 0, 0, 0)
+(-2226, 2226, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, -6, 6, 0, 0, 0, 0, 0, 0, 0)
+(-2224, 2224, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, -6, 4, 0, 0, 0, 0, 0, 0, 0)
+(-2222, 2222, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, -6, 2, 0, 0, 0, 0, 0, 0, 0)
+(-2218, 2218, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 8, 0, 0, 0, 0, 0, 0, 0)
+(-2216, 2216, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 6, 0, 0, 0, 0, 0, 0, 0)
+(-2214, 2214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-2212, 2212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-2203, 2203, True, True, False, False, False, False, False, False, True, False, True, False, False, False, False, False, False, -4, 3, 0, 0, 0, 0, 0, 0, 0)
+(-2128, 2128, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 8, 0, 0, 0, 0, 0, 0, 0)
+(-2126, 2126, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 6, 0, 0, 0, 0, 0, 0, 0)
+(-2124, 2124, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-2122, 2122, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-2118, 2118, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 8, 0, 0, 0, 0, 0, 0, 0)
+(-2116, 2116, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(-2114, 2114, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-2112, 2112, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-2103, 2103, True, True, False, False, False, False, False, False, True, True, True, False, False, False, False, False, False, -1, 3, 0, 0, 0, 0, 0, 0, 0)
+(-2101, 2101, True, True, False, False, False, False, False, False, True, True, True, False, False, False, False, False, False, -1, 1, 0, 0, 0, 0, 0, 0, 0)
+(-1218, 1218, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 8, 0, 0, 0, 0, 0, 0, 0)
+(-1216, 1216, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(-1214, 1214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(-1212, 1212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(-1118, 1118, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, 3, 8, 0, 0, 0, 0, 0, 0, 0)
+(-1116, 1116, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, 3, 6, 0, 0, 0, 0, 0, 0, 0)
+(-1114, 1114, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(-1112, 1112, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(-1103, 1103, True, True, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, 2, 3, 0, 0, 0, 0, 0, 0, 0)
+(-545, 545, True, True, True, False, True, False, False, False, True, False, False, False, True, True, False, False, False, -3, 5, 1, 1, 0, 0, 0, 0, 0)
+(-543, 543, True, True, True, False, True, False, False, False, True, False, False, False, True, True, False, False, False, -3, 3, 1, 0, 0, 0, 0, 0, 0)
+(-541, 541, True, True, True, False, True, False, False, False, True, False, False, False, True, True, False, False, False, -3, 1, 0, 0, 0, 0, 0, 0, 0)
+(-535, 535, True, True, True, False, True, False, False, False, True, False, False, True, False, True, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(-533, 533, True, True, True, False, True, False, False, False, True, False, False, True, False, True, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(-531, 531, True, True, True, False, True, False, False, False, True, False, False, True, False, True, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(-525, 525, True, True, True, False, True, False, False, False, True, False, True, False, False, True, False, False, False, -3, 5, 1, 1, 0, 0, 0, 0, 0)
+(-523, 523, True, True, True, False, True, False, False, False, True, False, True, False, False, True, False, False, False, -3, 3, 1, 0, 0, 0, 0, 0, 0)
+(-521, 521, True, True, True, False, True, False, False, False, True, False, True, False, False, True, False, False, False, -3, 1, 0, 0, 0, 0, 0, 0, 0)
+(-515, 515, True, True, True, False, True, False, False, False, True, True, False, False, False, True, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(-513, 513, True, True, True, False, True, False, False, False, True, True, False, False, False, True, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(-511, 511, True, True, True, False, True, False, False, False, True, True, False, False, False, True, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(-435, 435, True, True, True, False, True, False, False, False, True, False, False, True, True, False, False, False, False, -3, 5, 1, 1, 0, 0, 0, 0, 0)
+(-433, 433, True, True, True, False, True, False, False, False, True, False, False, True, True, False, False, False, False, -3, 3, 1, 0, 0, 0, 0, 0, 0)
+(-431, 431, True, True, True, False, True, False, False, False, True, False, False, True, True, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 0, 0)
+(-425, 425, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(-423, 423, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(-421, 421, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(-415, 415, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, -3, 5, 1, 1, 0, 0, 0, 0, 0)
+(-413, 413, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, -3, 3, 1, 0, 0, 0, 0, 0, 0)
+(-411, 411, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 0, 0)
+(-329, 329, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 9, 1, 3, 0, 0, 0, 0, 0)
+(-327, 327, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 7, 1, 2, 0, 0, 0, 0, 0)
+(-325, 325, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 5, 1, 1, 0, 0, 0, 0, 0)
+(-323, 323, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 3, 1, 0, 0, 0, 0, 0, 0)
+(-321, 321, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 0, 0)
+(-319, 319, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 9, 1, 3, 0, 0, 0, 0, 0)
+(-317, 317, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 7, 1, 2, 0, 0, 0, 0, 0)
+(-315, 315, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(-313, 313, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(-311, 311, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(-219, 219, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 9, 1, 3, 0, 0, 0, 0, 0)
+(-217, 217, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 7, 1, 2, 0, 0, 0, 0, 0)
+(-215, 215, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 5, 1, 1, 0, 0, 0, 0, 0)
+(-213, 213, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 3, 1, 0, 0, 0, 0, 0, 0)
+(-211, 211, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 0, 0)
+(-87, 87, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 1, 0, 0, 0, 0, 0, 0, 87, 0)
+(-86, 86, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -2, 0, 0, 0, 0, 0, 0, 86, 0)
+(-85, 85, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 1, 0, 0, 0, 0, 0, 0, 85, 0)
+(-84, 84, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -2, 0, 0, 0, 0, 0, 0, 84, 0)
+(-82, 82, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 82, 0)
+(-44, 44, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -3, 0, 0, 0, 0, 0, 0, 44, 0)
+(-42, 42, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 1, 1, 0, 0, 0, 0, 0, 42, 0)
+(-41, 41, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 41, 0)
+(-37, 37, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 37, 0)
+(-34, 34, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -3, 3, 0, 0, 0, 0, 0, 34, 0)
+(-24, 24, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -3, 3, 0, 0, 0, 0, 0, 24, 0)
+(-18, 18, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 18, 0)
+(-17, 17, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 17, 0)
+(-16, 16, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 16, 0)
+(-15, 15, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 15, 0)
+(-14, 14, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 14, 0)
+(-13, 13, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 13, 0)
+(-12, 12, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 12, 0)
+(-11, 11, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 11, 0)
+(-8, 8, True, True, False, False, False, False, False, True, False, False, False, False, False, False, False, False, True, -2, 2, 0, 0, 0, 0, 0, 8, 0)
+(-7, 7, True, True, False, False, False, False, False, True, False, False, False, False, False, False, False, True, False, 1, 2, 0, 0, 0, 0, 0, 7, 0)
+(-6, 6, True, True, False, False, False, False, False, True, False, False, False, False, False, False, True, False, False, -2, 2, 0, 0, 0, 0, 0, 6, 0)
+(-5, 5, True, True, False, False, False, False, False, True, False, False, False, False, False, True, False, False, False, 1, 2, 0, 0, 0, 0, 0, 5, 0)
+(-4, 4, True, True, False, False, False, False, False, True, False, False, False, False, True, False, False, False, False, -2, 2, 0, 0, 0, 0, 0, 4, 0)
+(-3, 3, True, True, False, False, False, False, False, True, False, False, False, True, False, False, False, False, False, 1, 2, 0, 0, 0, 0, 0, 3, 0)
+(-2, 2, True, True, False, False, False, False, False, True, False, False, True, False, False, False, False, False, False, -2, 2, 0, 0, 0, 0, 0, 2, 0)
+(-1, 1, True, True, False, False, False, False, False, True, False, True, False, False, False, False, False, False, False, 1, 2, 0, 0, 0, 0, 0, 1, 0)
+(1, 1, True, True, False, False, False, False, False, True, False, True, False, False, False, False, False, False, False, -1, 2, 0, 0, 0, 0, 0, 1, 0)
+(2, 2, True, True, False, False, False, False, False, True, False, False, True, False, False, False, False, False, False, 2, 2, 0, 0, 0, 0, 0, 2, 0)
+(3, 3, True, True, False, False, False, False, False, True, False, False, False, True, False, False, False, False, False, -1, 2, 0, 0, 0, 0, 0, 3, 0)
+(4, 4, True, True, False, False, False, False, False, True, False, False, False, False, True, False, False, False, False, 2, 2, 0, 0, 0, 0, 0, 4, 0)
+(5, 5, True, True, False, False, False, False, False, True, False, False, False, False, False, True, False, False, False, -1, 2, 0, 0, 0, 0, 0, 5, 0)
+(6, 6, True, True, False, False, False, False, False, True, False, False, False, False, False, False, True, False, False, 2, 2, 0, 0, 0, 0, 0, 6, 0)
+(7, 7, True, True, False, False, False, False, False, True, False, False, False, False, False, False, False, True, False, -1, 2, 0, 0, 0, 0, 0, 7, 0)
+(8, 8, True, True, False, False, False, False, False, True, False, False, False, False, False, False, False, False, True, 2, 2, 0, 0, 0, 0, 0, 8, 0)
+(11, 11, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 11, 0)
+(12, 12, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 12, 0)
+(13, 13, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 13, 0)
+(14, 14, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 14, 0)
+(15, 15, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 15, 0)
+(16, 16, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 16, 0)
+(17, 17, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 17, 0)
+(18, 18, True, True, False, False, False, True, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 18, 0)
+(21, 21, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 21, 0)
+(22, 22, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 22, 0)
+(23, 23, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 23, 0)
+(24, 24, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 3, 3, 0, 0, 0, 0, 0, 24, 0)
+(25, 25, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 25, 0)
+(32, 32, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 32, 0)
+(33, 33, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 33, 0)
+(34, 34, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 3, 3, 0, 0, 0, 0, 0, 34, 0)
+(35, 35, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 35, 0)
+(36, 36, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 36, 0)
+(37, 37, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 37, 0)
+(39, 39, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 5, 0, 0, 0, 0, 0, 39, 0)
+(41, 41, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 41, 0)
+(42, 42, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -1, 1, 0, 0, 0, 0, 0, 42, 0)
+(43, 43, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 43, 0)
+(44, 44, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 3, 0, 0, 0, 0, 0, 0, 44, 0)
+(81, 81, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 81, 0)
+(82, 82, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 82, 0)
+(83, 83, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 83, 0)
+(84, 84, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 2, 0, 0, 0, 0, 0, 0, 84, 0)
+(85, 85, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -1, 0, 0, 0, 0, 0, 0, 85, 0)
+(86, 86, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 2, 0, 0, 0, 0, 0, 0, 86, 0)
+(87, 87, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -1, 0, 0, 0, 0, 0, 0, 87, 0)
+(88, 88, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 88, 0)
+(90, 90, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 90, 0)
+(91, 91, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 91, 0)
+(92, 92, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 92, 0)
+(93, 93, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 93, 0)
+(94, 94, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 94, 0)
+(95, 95, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 95, 0)
+(96, 96, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 96, 0)
+(97, 97, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 97, 0)
+(98, 98, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 98, 0)
+(99, 99, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 99, 0)
+(111, 111, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(113, 113, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(115, 115, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(117, 117, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 7, 1, 2, 0, 0, 0, 0, 0)
+(119, 119, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 9, 1, 3, 0, 0, 0, 0, 0)
+(130, 130, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(150, 150, True, True, True, False, True, False, False, False, True, True, False, False, False, True, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(211, 211, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 0, 0)
+(213, 213, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 3, 1, 0, 0, 0, 0, 0, 0)
+(215, 215, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 5, 1, 1, 0, 0, 0, 0, 0)
+(217, 217, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 7, 1, 2, 0, 0, 0, 0, 0)
+(219, 219, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 9, 1, 3, 0, 0, 0, 0, 0)
+(221, 221, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(223, 223, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(225, 225, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(227, 227, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 7, 1, 2, 0, 0, 0, 0, 0)
+(229, 229, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 9, 1, 3, 0, 0, 0, 0, 0)
+(310, 310, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(311, 311, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(313, 313, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(315, 315, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(317, 317, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 7, 1, 2, 0, 0, 0, 0, 0)
+(319, 319, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 9, 1, 3, 0, 0, 0, 0, 0)
+(321, 321, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 0, 0)
+(323, 323, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 3, 1, 0, 0, 0, 0, 0, 0)
+(325, 325, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 5, 1, 1, 0, 0, 0, 0, 0)
+(327, 327, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 7, 1, 2, 0, 0, 0, 0, 0)
+(329, 329, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 9, 1, 3, 0, 0, 0, 0, 0)
+(331, 331, True, True, True, False, True, False, False, False, True, False, False, True, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(333, 333, True, True, True, False, True, False, False, False, True, False, False, True, False, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(335, 335, True, True, True, False, True, False, False, False, True, False, False, True, False, False, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(337, 337, True, True, True, False, True, False, False, False, True, False, False, True, False, False, False, False, False, 0, 7, 1, 2, 0, 0, 0, 0, 0)
+(350, 350, False, True, False, False, False, False, False, False, True, False, False, True, False, True, False, False, False, 0, 0, 0, 0, 0, 0, 0, 0, 0)
+(411, 411, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 0, 0)
+(413, 413, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, 3, 3, 1, 0, 0, 0, 0, 0, 0)
+(415, 415, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, 3, 5, 1, 1, 0, 0, 0, 0, 0)
+(421, 421, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(423, 423, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(425, 425, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(431, 431, True, True, True, False, True, False, False, False, True, False, False, True, True, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 0, 0)
+(433, 433, True, True, True, False, True, False, False, False, True, False, False, True, True, False, False, False, False, 3, 3, 1, 0, 0, 0, 0, 0, 0)
+(435, 435, True, True, True, False, True, False, False, False, True, False, False, True, True, False, False, False, False, 3, 5, 1, 1, 0, 0, 0, 0, 0)
+(441, 441, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(443, 443, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(445, 445, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(510, 510, True, True, True, False, True, False, False, False, True, True, False, False, False, True, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(511, 511, True, True, True, False, True, False, False, False, True, True, False, False, False, True, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(513, 513, True, True, True, False, True, False, False, False, True, True, False, False, False, True, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(515, 515, True, True, True, False, True, False, False, False, True, True, False, False, False, True, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(521, 521, True, True, True, False, True, False, False, False, True, False, True, False, False, True, False, False, False, 3, 1, 0, 0, 0, 0, 0, 0, 0)
+(523, 523, True, True, True, False, True, False, False, False, True, False, True, False, False, True, False, False, False, 3, 3, 1, 0, 0, 0, 0, 0, 0)
+(525, 525, True, True, True, False, True, False, False, False, True, False, True, False, False, True, False, False, False, 3, 5, 1, 1, 0, 0, 0, 0, 0)
+(530, 530, False, True, False, False, False, False, False, False, True, False, False, True, False, True, False, False, False, 0, 0, 0, 0, 0, 0, 0, 0, 0)
+(531, 531, True, True, True, False, True, False, False, False, True, False, False, True, False, True, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(533, 533, True, True, True, False, True, False, False, False, True, False, False, True, False, True, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(535, 535, True, True, True, False, True, False, False, False, True, False, False, True, False, True, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(541, 541, True, True, True, False, True, False, False, False, True, False, False, False, True, True, False, False, False, 3, 1, 0, 0, 0, 0, 0, 0, 0)
+(543, 543, True, True, True, False, True, False, False, False, True, False, False, False, True, True, False, False, False, 3, 3, 1, 0, 0, 0, 0, 0, 0)
+(545, 545, True, True, True, False, True, False, False, False, True, False, False, False, True, True, False, False, False, 3, 5, 1, 1, 0, 0, 0, 0, 0)
+(551, 551, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(553, 553, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(555, 555, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(557, 557, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 7, 1, 2, 0, 0, 0, 0, 0)
+(1103, 1103, True, True, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, -2, 3, 0, 0, 0, 0, 0, 0, 0)
+(1112, 1112, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(1114, 1114, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(1116, 1116, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, -3, 6, 0, 0, 0, 0, 0, 0, 0)
+(1118, 1118, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, -3, 8, 0, 0, 0, 0, 0, 0, 0)
+(1212, 1212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(1214, 1214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(1216, 1216, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(1218, 1218, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 8, 0, 0, 0, 0, 0, 0, 0)
+(2101, 2101, True, True, False, False, False, False, False, False, True, True, True, False, False, False, False, False, False, 1, 1, 0, 0, 0, 0, 0, 0, 0)
+(2103, 2103, True, True, False, False, False, False, False, False, True, True, True, False, False, False, False, False, False, 1, 3, 0, 0, 0, 0, 0, 0, 0)
+(2112, 2112, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(2114, 2114, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(2116, 2116, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(2118, 2118, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 8, 0, 0, 0, 0, 0, 0, 0)
+(2122, 2122, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(2124, 2124, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(2126, 2126, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 6, 0, 0, 0, 0, 0, 0, 0)
+(2128, 2128, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 8, 0, 0, 0, 0, 0, 0, 0)
+(2203, 2203, True, True, False, False, False, False, False, False, True, False, True, False, False, False, False, False, False, 4, 3, 0, 0, 0, 0, 0, 0, 0)
+(2212, 2212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(2214, 2214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(2216, 2216, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 6, 0, 0, 0, 0, 0, 0, 0)
+(2218, 2218, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 8, 0, 0, 0, 0, 0, 0, 0)
+(2222, 2222, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, 6, 2, 0, 0, 0, 0, 0, 0, 0)
+(2224, 2224, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, 6, 4, 0, 0, 0, 0, 0, 0, 0)
+(2226, 2226, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, 6, 6, 0, 0, 0, 0, 0, 0, 0)
+(2228, 2228, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, 6, 8, 0, 0, 0, 0, 0, 0, 0)
+(3101, 3101, True, True, False, False, False, False, False, False, True, True, False, True, False, False, False, False, False, -2, 1, 0, 0, 0, 0, 0, 0, 0)
+(3103, 3103, True, True, False, False, False, False, False, False, True, True, False, True, False, False, False, False, False, -2, 3, 0, 0, 0, 0, 0, 0, 0)
+(3112, 3112, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(3114, 3114, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(3116, 3116, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 6, 0, 0, 0, 0, 0, 0, 0)
+(3118, 3118, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 8, 0, 0, 0, 0, 0, 0, 0)
+(3122, 3122, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(3124, 3124, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(3126, 3126, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(3128, 3128, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 8, 0, 0, 0, 0, 0, 0, 0)
+(3201, 3201, True, True, False, False, False, False, False, False, True, False, True, True, False, False, False, False, False, 1, 1, 0, 0, 0, 0, 0, 0, 0)
+(3203, 3203, True, True, False, False, False, False, False, False, True, False, True, True, False, False, False, False, False, 1, 3, 0, 0, 0, 0, 0, 0, 0)
+(3212, 3212, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(3214, 3214, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(3216, 3216, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(3218, 3218, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 8, 0, 0, 0, 0, 0, 0, 0)
+(3222, 3222, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(3224, 3224, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(3226, 3226, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 6, 0, 0, 0, 0, 0, 0, 0)
+(3228, 3228, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 8, 0, 0, 0, 0, 0, 0, 0)
+(3303, 3303, True, True, False, False, False, False, False, False, True, False, False, True, False, False, False, False, False, -2, 3, 0, 0, 0, 0, 0, 0, 0)
+(3312, 3312, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(3314, 3314, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(3322, 3322, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(3324, 3324, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(3334, 3334, True, True, False, True, True, False, False, False, True, False, False, True, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(4101, 4101, True, True, False, False, False, False, False, False, True, True, False, False, True, False, False, False, False, 1, 1, 0, 0, 0, 0, 0, 0, 0)
+(4103, 4103, True, True, False, False, False, False, False, False, True, True, False, False, True, False, False, False, False, 1, 3, 0, 0, 0, 0, 0, 0, 0)
+(4112, 4112, True, True, False, True, True, False, False, False, True, True, False, False, True, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(4114, 4114, True, True, False, True, True, False, False, False, True, True, False, False, True, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(4122, 4122, True, True, False, True, True, False, False, False, True, True, True, False, True, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(4132, 4132, True, True, False, True, True, False, False, False, True, True, False, True, True, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(4201, 4201, True, True, False, False, False, False, False, False, True, False, True, False, True, False, False, False, False, 4, 1, 0, 0, 0, 0, 0, 0, 0)
+(4203, 4203, True, True, False, False, False, False, False, False, True, False, True, False, True, False, False, False, False, 4, 3, 0, 0, 0, 0, 0, 0, 0)
+(4212, 4212, True, True, False, True, True, False, False, False, True, True, True, False, True, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(4214, 4214, True, True, False, True, True, False, False, False, True, True, True, False, True, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(4222, 4222, True, True, False, True, True, False, False, False, True, False, True, False, True, False, False, False, False, 6, 2, 0, 0, 0, 0, 0, 0, 0)
+(4224, 4224, True, True, False, True, True, False, False, False, True, False, True, False, True, False, False, False, False, 6, 4, 0, 0, 0, 0, 0, 0, 0)
+(4232, 4232, True, True, False, True, True, False, False, False, True, False, True, True, True, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(4301, 4301, True, True, False, False, False, False, False, False, True, False, False, True, True, False, False, False, False, 1, 1, 0, 0, 0, 0, 0, 0, 0)
+(4303, 4303, True, True, False, False, False, False, False, False, True, False, False, True, True, False, False, False, False, 1, 3, 0, 0, 0, 0, 0, 0, 0)
+(4312, 4312, True, True, False, True, True, False, False, False, True, True, False, True, True, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(4314, 4314, True, True, False, True, True, False, False, False, True, True, False, True, True, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(4322, 4322, True, True, False, True, True, False, False, False, True, False, True, True, True, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(4324, 4324, True, True, False, True, True, False, False, False, True, False, True, True, True, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(4332, 4332, True, True, False, True, True, False, False, False, True, False, False, True, True, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(4334, 4334, True, True, False, True, True, False, False, False, True, False, False, True, True, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(4403, 4403, True, True, False, False, False, False, False, False, True, False, False, False, True, False, False, False, False, 4, 3, 0, 0, 0, 0, 0, 0, 0)
+(4412, 4412, True, True, False, True, True, False, False, False, True, True, False, False, True, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(4414, 4414, True, True, False, True, True, False, False, False, True, True, False, False, True, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(4422, 4422, True, True, False, True, True, False, False, False, True, False, True, False, True, False, False, False, False, 6, 2, 0, 0, 0, 0, 0, 0, 0)
+(4424, 4424, True, True, False, True, True, False, False, False, True, False, True, False, True, False, False, False, False, 6, 4, 0, 0, 0, 0, 0, 0, 0)
+(4432, 4432, True, True, False, True, True, False, False, False, True, False, False, True, True, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(4434, 4434, True, True, False, True, True, False, False, False, True, False, False, True, True, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(4444, 4444, True, True, False, True, True, False, False, False, True, False, False, False, True, False, False, False, False, 6, 4, 0, 0, 0, 0, 0, 0, 0)
+(5101, 5101, True, True, False, False, False, False, False, False, True, True, False, False, False, True, False, False, False, -2, 1, 0, 0, 0, 0, 0, 0, 0)
+(5103, 5103, True, True, False, False, False, False, False, False, True, True, False, False, False, True, False, False, False, -2, 3, 0, 0, 0, 0, 0, 0, 0)
+(5112, 5112, True, True, False, True, True, False, False, False, True, True, False, False, False, True, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(5114, 5114, True, True, False, True, True, False, False, False, True, True, False, False, False, True, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(5122, 5122, True, True, False, True, True, False, False, False, True, True, True, False, False, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(5124, 5124, True, True, False, True, True, False, False, False, True, True, True, False, False, True, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(5132, 5132, True, True, False, True, True, False, False, False, True, True, False, True, False, True, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(5142, 5142, True, True, False, True, True, False, False, False, True, True, False, False, True, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(5201, 5201, True, True, False, False, False, False, False, False, True, False, True, False, False, True, False, False, False, 1, 1, 0, 0, 0, 0, 0, 0, 0)
+(5203, 5203, True, True, False, False, False, False, False, False, True, False, True, False, False, True, False, False, False, 1, 3, 0, 0, 0, 0, 0, 0, 0)
+(5212, 5212, True, True, False, True, True, False, False, False, True, True, True, False, False, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(5214, 5214, True, True, False, True, True, False, False, False, True, True, True, False, False, True, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(5222, 5222, True, True, False, True, True, False, False, False, True, False, True, False, False, True, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(5224, 5224, True, True, False, True, True, False, False, False, True, False, True, False, False, True, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(5232, 5232, True, True, False, True, True, False, False, False, True, False, True, True, False, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(5242, 5242, True, True, False, True, True, False, False, False, True, False, True, False, True, True, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(5301, 5301, True, True, False, False, False, False, False, False, True, False, False, True, False, True, False, False, False, -2, 1, 0, 0, 0, 0, 0, 0, 0)
+(5303, 5303, True, True, False, False, False, False, False, False, True, False, False, True, False, True, False, False, False, -2, 3, 0, 0, 0, 0, 0, 0, 0)
+(5312, 5312, True, True, False, True, True, False, False, False, True, True, False, True, False, True, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(5314, 5314, True, True, False, True, True, False, False, False, True, True, False, True, False, True, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(5322, 5322, True, True, False, True, True, False, False, False, True, False, True, True, False, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(5324, 5324, True, True, False, True, True, False, False, False, True, False, True, True, False, True, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(5332, 5332, True, True, False, True, True, False, False, False, True, False, False, True, False, True, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(5334, 5334, True, True, False, True, True, False, False, False, True, False, False, True, False, True, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(5342, 5342, True, True, False, True, True, False, False, False, True, False, False, True, True, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(5401, 5401, True, True, False, False, False, False, False, False, True, False, False, False, True, True, False, False, False, 1, 1, 0, 0, 0, 0, 0, 0, 0)
+(5403, 5403, True, True, False, False, False, False, False, False, True, False, False, False, True, True, False, False, False, 1, 3, 0, 0, 0, 0, 0, 0, 0)
+(5412, 5412, True, True, False, True, True, False, False, False, True, True, False, False, True, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(5414, 5414, True, True, False, True, True, False, False, False, True, True, False, False, True, True, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(5422, 5422, True, True, False, True, True, False, False, False, True, False, True, False, True, True, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(5424, 5424, True, True, False, True, True, False, False, False, True, False, True, False, True, True, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(5432, 5432, True, True, False, True, True, False, False, False, True, False, False, True, True, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(5434, 5434, True, True, False, True, True, False, False, False, True, False, False, True, True, True, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(5442, 5442, True, True, False, True, True, False, False, False, True, False, False, False, True, True, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(5444, 5444, True, True, False, True, True, False, False, False, True, False, False, False, True, True, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(5503, 5503, True, True, False, False, False, False, False, False, True, False, False, False, False, True, False, False, False, -2, 3, 0, 0, 0, 0, 0, 0, 0)
+(5512, 5512, True, True, False, True, True, False, False, False, True, True, False, False, False, True, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(5514, 5514, True, True, False, True, True, False, False, False, True, True, False, False, False, True, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(5522, 5522, True, True, False, True, True, False, False, False, True, False, True, False, False, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(5524, 5524, True, True, False, True, True, False, False, False, True, False, True, False, False, True, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(5532, 5532, True, True, False, True, True, False, False, False, True, False, False, True, False, True, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(5534, 5534, True, True, False, True, True, False, False, False, True, False, False, True, False, True, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(5542, 5542, True, True, False, True, True, False, False, False, True, False, False, False, True, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(5544, 5544, True, True, False, True, True, False, False, False, True, False, False, False, True, True, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(5554, 5554, True, True, False, True, True, False, False, False, True, False, False, False, False, True, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(10022, 10022, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 22, 0)
+(10111, 10111, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(10113, 10113, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(10115, 10115, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 5, 0, 2, 0, 0, 0, 0, 0)
+(10211, 10211, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 1, 1, 1, 0, 0, 0, 0, 0)
+(10213, 10213, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 3, 0, 1, 0, 0, 0, 0, 0)
+(10215, 10215, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 5, 0, 2, 0, 0, 0, 0, 0)
+(10221, 10221, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(10223, 10223, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(10225, 10225, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 5, 0, 2, 0, 0, 0, 0, 0)
+(10311, 10311, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(10313, 10313, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(10315, 10315, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 5, 0, 2, 0, 0, 0, 0, 0)
+(10321, 10321, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 1, 1, 1, 0, 0, 0, 0, 0)
+(10323, 10323, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 3, 0, 1, 0, 0, 0, 0, 0)
+(10325, 10325, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 5, 0, 2, 0, 0, 0, 0, 0)
+(10331, 10331, True, True, True, False, True, False, False, False, True, False, False, True, False, False, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(10333, 10333, True, True, True, False, True, False, False, False, True, False, False, True, False, False, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(10335, 10335, True, True, True, False, True, False, False, False, True, False, False, True, False, False, False, False, False, 0, 5, 0, 2, 0, 0, 0, 0, 0)
+(10411, 10411, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, 3, 1, 1, 1, 0, 0, 0, 0, 0)
+(10413, 10413, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, 3, 3, 0, 1, 0, 0, 0, 0, 0)
+(10421, 10421, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(10423, 10423, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(10431, 10431, True, True, True, False, True, False, False, False, True, False, False, True, True, False, False, False, False, 3, 1, 1, 1, 0, 0, 0, 0, 0)
+(10433, 10433, True, True, True, False, True, False, False, False, True, False, False, True, True, False, False, False, False, 3, 3, 0, 1, 0, 0, 0, 0, 0)
+(10441, 10441, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(10443, 10443, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(10511, 10511, True, True, True, False, True, False, False, False, True, True, False, False, False, True, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(10513, 10513, True, True, True, False, True, False, False, False, True, True, False, False, False, True, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(10521, 10521, True, True, True, False, True, False, False, False, True, False, True, False, False, True, False, False, False, 3, 1, 1, 1, 0, 0, 0, 0, 0)
+(10523, 10523, True, True, True, False, True, False, False, False, True, False, True, False, False, True, False, False, False, 3, 3, 0, 1, 0, 0, 0, 0, 0)
+(10531, 10531, True, True, True, False, True, False, False, False, True, False, False, True, False, True, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(10533, 10533, True, True, True, False, True, False, False, False, True, False, False, True, False, True, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(10541, 10541, True, True, True, False, True, False, False, False, True, False, False, False, True, True, False, False, False, 3, 1, 1, 1, 0, 0, 0, 0, 0)
+(10543, 10543, True, True, True, False, True, False, False, False, True, False, False, False, True, True, False, False, False, 3, 3, 0, 1, 0, 0, 0, 0, 0)
+(10551, 10551, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(10553, 10553, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(10555, 10555, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 5, 0, 2, 0, 0, 0, 0, 0)
+(11112, 11112, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(11114, 11114, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(11116, 11116, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, -3, 6, 0, 0, 0, 0, 0, 0, 0)
+(11212, 11212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(11216, 11216, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(12112, 12112, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(12114, 12114, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(12116, 12116, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(12118, 12118, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 8, 0, 0, 0, 0, 0, 0, 0)
+(12122, 12122, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(12126, 12126, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 6, 0, 0, 0, 0, 0, 0, 0)
+(12212, 12212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(12214, 12214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(12216, 12216, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 6, 0, 0, 0, 0, 0, 0, 0)
+(12218, 12218, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 8, 0, 0, 0, 0, 0, 0, 0)
+(12222, 12222, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, 6, 2, 0, 0, 0, 0, 0, 0, 0)
+(12224, 12224, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, 6, 4, 0, 0, 0, 0, 0, 0, 0)
+(12226, 12226, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, 6, 6, 0, 0, 0, 0, 0, 0, 0)
+(13112, 13112, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(13114, 13114, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(13116, 13116, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 6, 0, 0, 0, 0, 0, 0, 0)
+(13122, 13122, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(13124, 13124, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(13126, 13126, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(13212, 13212, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(13214, 13214, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(13216, 13216, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(13222, 13222, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(13224, 13224, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(13226, 13226, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 6, 0, 0, 0, 0, 0, 0, 0)
+(13314, 13314, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(13324, 13324, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(14122, 14122, True, True, False, True, True, False, False, False, True, True, True, False, True, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(15122, 15122, True, True, False, True, True, False, False, False, True, True, True, False, False, True, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(20022, 20022, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 22, 0)
+(20113, 20113, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(20213, 20213, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 3, 1, 1, 0, 0, 0, 0, 0)
+(20223, 20223, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(20313, 20313, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(20315, 20315, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 5, 1, 2, 0, 0, 0, 0, 0)
+(20323, 20323, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 3, 1, 1, 0, 0, 0, 0, 0)
+(20325, 20325, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 5, 1, 2, 0, 0, 0, 0, 0)
+(20333, 20333, True, True, True, False, True, False, False, False, True, False, False, True, False, False, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(20413, 20413, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, 3, 3, 1, 1, 0, 0, 0, 0, 0)
+(20423, 20423, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(20433, 20433, True, True, True, False, True, False, False, False, True, False, False, True, True, False, False, False, False, 3, 3, 1, 1, 0, 0, 0, 0, 0)
+(20443, 20443, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(20513, 20513, True, True, True, False, True, False, False, False, True, True, False, False, False, True, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(20523, 20523, True, True, True, False, True, False, False, False, True, False, True, False, False, True, False, False, False, 3, 3, 1, 1, 0, 0, 0, 0, 0)
+(20533, 20533, True, True, True, False, True, False, False, False, True, False, False, True, False, True, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(20543, 20543, True, True, True, False, True, False, False, False, True, False, False, False, True, True, False, False, False, 3, 3, 1, 1, 0, 0, 0, 0, 0)
+(20553, 20553, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(20555, 20555, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 5, 1, 2, 0, 0, 0, 0, 0)
+(21112, 21112, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(21114, 21114, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(21212, 21212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(21214, 21214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(22112, 22112, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(22114, 22114, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(22122, 22122, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(22124, 22124, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(22212, 22212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(22214, 22214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(22222, 22222, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, 6, 2, 0, 0, 0, 0, 0, 0, 0)
+(22224, 22224, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, 6, 4, 0, 0, 0, 0, 0, 0, 0)
+(23112, 23112, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(23114, 23114, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(23122, 23122, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(23124, 23124, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(23126, 23126, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(23212, 23212, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(23214, 23214, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(23222, 23222, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(23224, 23224, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(30113, 30113, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 3, 1, 2, 0, 0, 0, 0, 0)
+(30213, 30213, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 3, 1, 2, 0, 0, 0, 0, 0)
+(30223, 30223, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 3, 1, 2, 0, 0, 0, 0, 0)
+(30313, 30313, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 3, 1, 2, 0, 0, 0, 0, 0)
+(30323, 30323, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 3, 1, 2, 0, 0, 0, 0, 0)
+(30343, 30343, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(30353, 30353, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 3, 0, 0, 0, 0, 0, 0, 0)
+(30363, 30363, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(30443, 30443, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 3, 1, 2, 0, 0, 0, 0, 0)
+(30553, 30553, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 3, 1, 2, 0, 0, 0, 0, 0)
+(31114, 31114, True, True, False, True, True, False, False, False, True, True, False, False, False, False, False, False, False, -3, 4, 0, 0, 0, 0, 0, 0, 0)
+(31214, 31214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(32112, 32112, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(32114, 32114, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(32124, 32124, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(32212, 32212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(32214, 32214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(32224, 32224, True, True, False, True, True, False, False, False, True, False, True, False, False, False, False, False, False, 6, 4, 0, 0, 0, 0, 0, 0, 0)
+(33122, 33122, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(41214, 41214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(42112, 42112, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(42124, 42124, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(42212, 42212, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(43122, 43122, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(52114, 52114, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(52214, 52214, True, True, False, True, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(53122, 53122, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(100111, 100111, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(100113, 100113, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(100211, 100211, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 0, 0)
+(100213, 100213, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 3, 1, 0, 0, 0, 0, 0, 0)
+(100221, 100221, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(100223, 100223, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(100311, 100311, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(100313, 100313, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(100315, 100315, True, True, True, False, True, False, False, False, True, True, False, True, False, False, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(100321, 100321, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 0, 0)
+(100323, 100323, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 3, 1, 0, 0, 0, 0, 0, 0)
+(100325, 100325, True, True, True, False, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 5, 1, 1, 0, 0, 0, 0, 0)
+(100331, 100331, True, True, True, False, True, False, False, False, True, False, False, True, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(100333, 100333, True, True, True, False, True, False, False, False, True, False, False, True, False, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(100411, 100411, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 0, 0)
+(100413, 100413, True, True, True, False, True, False, False, False, True, True, False, False, True, False, False, False, False, 3, 3, 1, 0, 0, 0, 0, 0, 0)
+(100421, 100421, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(100423, 100423, True, True, True, False, True, False, False, False, True, False, True, False, True, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(100441, 100441, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(100443, 100443, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(100445, 100445, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(100551, 100551, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(100553, 100553, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(100555, 100555, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(100557, 100557, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 7, 1, 2, 0, 0, 0, 0, 0)
+(103112, 103112, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(103212, 103212, True, True, False, True, True, False, False, False, True, True, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(103222, 103222, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(103316, 103316, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 6, 0, 0, 0, 0, 0, 0, 0)
+(103326, 103326, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(104124, 104124, True, True, False, True, True, False, False, False, True, True, True, False, True, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(104312, 104312, True, True, False, True, True, False, False, False, True, True, False, True, True, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(104314, 104314, True, True, False, True, True, False, False, False, True, True, False, True, True, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 0, 0)
+(104322, 104322, True, True, False, True, True, False, False, False, True, False, True, True, True, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 0, 0)
+(104324, 104324, True, True, False, True, True, False, False, False, True, False, True, True, True, False, False, False, False, 3, 4, 0, 0, 0, 0, 0, 0, 0)
+(110551, 110551, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(110553, 110553, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(110555, 110555, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 5, 0, 2, 0, 0, 0, 0, 0)
+(120553, 120553, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(120555, 120555, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 5, 1, 2, 0, 0, 0, 0, 0)
+(130553, 130553, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 3, 1, 2, 0, 0, 0, 0, 0)
+(200551, 200551, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(200553, 200553, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(200555, 200555, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 5, 1, 1, 0, 0, 0, 0, 0)
+(203312, 203312, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(203316, 203316, True, True, False, True, True, False, False, False, True, True, False, True, False, False, False, False, False, -3, 6, 0, 0, 0, 0, 0, 0, 0)
+(203322, 203322, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 0, 0)
+(203326, 203326, True, True, False, True, True, False, False, False, True, False, True, True, False, False, False, False, False, 0, 6, 0, 0, 0, 0, 0, 0, 0)
+(203338, 203338, True, True, False, True, True, False, False, False, True, False, False, True, False, False, False, False, False, -3, 8, 0, 0, 0, 0, 0, 0, 0)
+(204126, 204126, True, True, False, True, True, False, False, False, True, True, True, False, True, False, False, False, False, 3, 6, 0, 0, 0, 0, 0, 0, 0)
+(210551, 210551, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 1, 1, 1, 0, 0, 0, 0, 0)
+(210553, 210553, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 3, 0, 1, 0, 0, 0, 0, 0)
+(220553, 220553, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 3, 1, 1, 0, 0, 0, 0, 0)
+(300553, 300553, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 3, 1, 0, 0, 0, 0, 0, 0)
+(1000001, 1000001, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -1, 1, 0, 0, 0, 0, 0, 1, 0)
+(1000002, 1000002, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 2, 1, 0, 0, 0, 0, 0, 2, 0)
+(1000003, 1000003, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -1, 1, 0, 0, 0, 0, 0, 3, 0)
+(1000004, 1000004, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 2, 1, 0, 0, 0, 0, 0, 4, 0)
+(1000005, 1000005, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -1, 1, 0, 0, 0, 0, 0, 5, 0)
+(1000006, 1000006, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 2, 1, 0, 0, 0, 0, 0, 6, 0)
+(1000011, 1000011, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 11, 0)
+(1000012, 1000012, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 12, 0)
+(1000013, 1000013, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 13, 0)
+(1000014, 1000014, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 14, 0)
+(1000015, 1000015, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 15, 0)
+(1000016, 1000016, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 16, 0)
+(1000021, 1000021, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 21, 0)
+(1000022, 1000022, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 22, 0)
+(1000023, 1000023, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 23, 0)
+(1000024, 1000024, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 24, 0)
+(1000025, 1000025, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 25, 0)
+(1000035, 1000035, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 35, 0)
+(1000037, 1000037, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 3, 2, 0, 0, 0, 0, 0, 37, 0)
+(1000039, 1000039, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 4, 0, 0, 0, 0, 0, 10, 0)
+(1000522, 1000522, True, False, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(1000542, 1000542, True, False, False, False, False, False, False, False, True, False, False, False, False, True, False, False, False, -3, 2, 0, 0, 0, 0, 0, 0, 0)
+(1009002, 1009002, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 21, 0)
+(2000001, 2000001, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -1, 1, 0, 0, 0, 0, 0, 1, 0)
+(2000002, 2000002, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 2, 1, 0, 0, 0, 0, 0, 2, 0)
+(2000003, 2000003, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -1, 1, 0, 0, 0, 0, 0, 3, 0)
+(2000004, 2000004, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 2, 1, 0, 0, 0, 0, 0, 4, 0)
+(2000005, 2000005, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -1, 1, 0, 0, 0, 0, 0, 5, 0)
+(2000006, 2000006, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 2, 1, 0, 0, 0, 0, 0, 6, 0)
+(2000011, 2000011, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 11, 0)
+(2000012, 2000012, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 12, 0)
+(2000013, 2000013, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 13, 0)
+(2000014, 2000014, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 14, 0)
+(2000015, 2000015, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -3, 1, 0, 0, 0, 0, 0, 15, 0)
+(2000016, 2000016, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 16, 0)
+(3000111, 3000111, True, False, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(3000113, 3000113, True, False, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(3000211, 3000211, True, False, False, False, False, False, False, False, True, True, True, False, False, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 0, 0)
+(3000213, 3000213, True, False, False, False, False, False, False, False, True, True, True, False, False, False, False, False, False, 3, 3, 0, 0, 0, 0, 0, 0, 0)
+(3000221, 3000221, True, False, False, False, False, False, False, False, True, False, True, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(3000223, 3000223, True, False, False, False, False, False, False, False, True, False, True, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(3000331, 3000331, True, False, False, False, False, False, False, False, True, False, False, True, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(3100021, 3100021, True, False, False, False, False, False, False, False, True, True, True, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(3100111, 3100111, True, False, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(3100113, 3100113, True, False, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(3200111, 3200111, True, False, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(3200113, 3200113, True, False, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(3300113, 3300113, True, False, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(3400113, 3400113, True, False, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(4000001, 4000001, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -1, 2, 0, 0, 0, 0, 0, 1, 0)
+(4000002, 4000002, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 2, 2, 0, 0, 0, 0, 0, 2, 0)
+(4000011, 4000011, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, -3, 2, 0, 0, 0, 0, 0, 11, 0)
+(4000012, 4000012, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 12, 0)
+(4900021, 4900021, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 21, 0)
+(4900023, 4900023, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 23, 0)
+(4900101, 4900101, True, False, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(4900111, 4900111, True, False, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(4900113, 4900113, True, False, False, False, False, False, False, False, True, True, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(4900211, 4900211, True, False, False, False, False, False, False, False, True, False, True, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(4900213, 4900213, True, False, False, False, False, False, False, False, True, False, True, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(5000039, 5000039, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 5, 0, 0, 0, 0, 0, 39, 0)
+(9000111, 9000111, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(9000113, 9000113, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(9000211, 9000211, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 0, 0)
+(9000213, 9000213, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 3, 0, 0, 0, 0, 0, 0, 0)
+(9000221, 9000221, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(9000443, 9000443, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(9000553, 9000553, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(9010111, 9010111, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(9010113, 9010113, True, True, True, False, True, False, False, False, True, True, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(9010211, 9010211, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 1, 0, 0, 0, 0, 0, 0, 0)
+(9010213, 9010213, True, True, True, False, True, False, False, False, True, True, True, False, False, False, False, False, False, 3, 3, 0, 0, 0, 0, 0, 0, 0)
+(9010221, 9010221, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(9010443, 9010443, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(9010553, 9010553, True, True, True, False, True, False, False, False, True, False, False, False, False, True, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(9020221, 9020221, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(9020443, 9020443, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(9030221, 9030221, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 1, 0, 0, 0, 0, 0, 0, 0)
+(9042413, 9042413, True, True, False, True, True, False, False, False, True, True, True, False, True, False, False, False, False, 3, 3, 0, 0, 0, 0, 0, 0, 0)
+(9050225, 9050225, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 5, 0, 0, 0, 0, 0, 0, 0)
+(9060225, 9060225, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 5, 0, 0, 0, 0, 0, 0, 0)
+(9080225, 9080225, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 5, 0, 0, 0, 0, 0, 0, 0)
+(9090225, 9090225, True, True, True, False, True, False, False, False, True, False, True, False, False, False, False, False, False, 0, 5, 0, 0, 0, 0, 0, 0, 0)
+(9900012, 9900012, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 12, 0)
+(9900014, 9900014, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 14, 0)
+(9900016, 9900016, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 2, 0, 0, 0, 0, 0, 16, 0)
+(9900023, 9900023, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 23, 0)
+(9900024, 9900024, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 3, 3, 0, 0, 0, 0, 0, 24, 0)
+(9900041, 9900041, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 6, 1, 0, 0, 0, 0, 0, 9, 0)
+(9900042, 9900042, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 6, 1, 0, 0, 0, 0, 0, 9, 0)
+(9910445, 9910445, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 5, 0, 0, 0, 0, 0, 0, 0)
+(9920443, 9920443, True, True, True, False, True, False, False, False, True, False, False, False, True, False, False, False, False, 0, 3, 0, 0, 0, 0, 0, 0, 0)
+(480000000, 480000000, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, 0, 0, 0, 0, 0, 0, 0, 0, 48)
+(1000010020, 1000010020, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 3, 1, 0, 0, 1, 2, 0, 0, 100)
+(1000010030, 1000010030, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 3, 2, 0, 0, 1, 3, 0, 0, 100)
+(1000020030, 1000020030, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 6, 2, 0, 0, 2, 3, 0, 0, 100)
+(1000020040, 1000020040, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 6, 1, 0, 0, 2, 4, 0, 0, 100)
+(1000030070, 1000030070, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 9, 2, 0, 0, 3, 7, 0, 0, 100)
+(1000040080, 1000040080, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 12, 1, 0, 0, 4, 8, 0, 0, 100)
+(1000040090, 1000040090, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 12, 2, 0, 0, 4, 9, 0, 0, 100)
+(1000040100, 1000040100, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 12, 1, 0, 0, 4, 10, 0, 0, 100)
+(1000050100, 1000050100, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 15, 1, 0, 0, 5, 10, 0, 0, 100)
+(1000050110, 1000050110, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 15, 2, 0, 0, 5, 11, 0, 0, 100)
+(1000050120, 1000050120, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 15, 1, 0, 0, 5, 12, 0, 0, 100)
+(1000060120, 1000060120, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 18, 1, 0, 0, 6, 12, 0, 0, 100)
+(1000060130, 1000060130, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 18, 2, 0, 0, 6, 13, 0, 0, 100)
+(1000060140, 1000060140, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 18, 1, 0, 0, 6, 14, 0, 0, 100)
+(1000070140, 1000070140, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 21, 1, 0, 0, 7, 14, 0, 0, 100)
+(1000070150, 1000070150, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 21, 2, 0, 0, 7, 15, 0, 0, 100)
+(1000070160, 1000070160, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 21, 1, 0, 0, 7, 16, 0, 0, 100)
+(1000080160, 1000080160, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 24, 1, 0, 0, 8, 16, 0, 0, 100)
+(1000080170, 1000080170, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 24, 2, 0, 0, 8, 17, 0, 0, 100)
+(1000080180, 1000080180, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 24, 1, 0, 0, 8, 18, 0, 0, 100)
+(1000080190, 1000080190, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 24, 2, 0, 0, 8, 19, 0, 0, 100)
+(1000090190, 1000090190, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 27, 2, 0, 0, 9, 19, 0, 0, 100)
+(1000100220, 1000100220, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 30, 1, 0, 0, 10, 22, 0, 0, 100)
+(1000100230, 1000100230, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 30, 2, 0, 0, 10, 23, 0, 0, 100)
+(1000110240, 1000110240, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 33, 1, 0, 0, 11, 24, 0, 0, 100)
+(1000120240, 1000120240, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 36, 1, 0, 0, 12, 24, 0, 0, 100)
+(1000120250, 1000120250, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 36, 2, 0, 0, 12, 25, 0, 0, 100)
+(1000120260, 1000120260, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 36, 1, 0, 0, 12, 26, 0, 0, 100)
+(1000120270, 1000120270, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 36, 2, 0, 0, 12, 27, 0, 0, 100)
+(1000130270, 1000130270, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 39, 2, 0, 0, 13, 27, 0, 0, 100)
+(1000130280, 1000130280, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 39, 1, 0, 0, 13, 28, 0, 0, 100)
+(1000140280, 1000140280, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 42, 1, 0, 0, 14, 28, 0, 0, 100)
+(1000140290, 1000140290, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 42, 2, 0, 0, 14, 29, 0, 0, 100)
+(1000140300, 1000140300, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 42, 1, 0, 0, 14, 30, 0, 0, 100)
+(1000150310, 1000150310, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 45, 2, 0, 0, 15, 31, 0, 0, 100)
+(1000170390, 1000170390, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 51, 2, 0, 0, 17, 39, 0, 0, 100)
+(1000170400, 1000170400, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 51, 1, 0, 0, 17, 40, 0, 0, 100)
+(1000180360, 1000180360, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 54, 1, 0, 0, 18, 36, 0, 0, 100)
+(1000180400, 1000180400, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 54, 1, 0, 0, 18, 40, 0, 0, 100)
+(1000240500, 1000240500, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 72, 1, 0, 0, 24, 50, 0, 0, 100)
+(1000240520, 1000240520, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 72, 1, 0, 0, 24, 52, 0, 0, 100)
+(1000240530, 1000240530, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 72, 2, 0, 0, 24, 53, 0, 0, 100)
+(1000240540, 1000240540, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 72, 1, 0, 0, 24, 54, 0, 0, 100)
+(1000250550, 1000250550, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 75, 2, 0, 0, 25, 55, 0, 0, 100)
+(1000260540, 1000260540, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 78, 1, 0, 0, 26, 54, 0, 0, 100)
+(1000260560, 1000260560, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 78, 1, 0, 0, 26, 56, 0, 0, 100)
+(1000260570, 1000260570, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 78, 2, 0, 0, 26, 57, 0, 0, 100)
+(1000260590, 1000260590, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 78, 2, 0, 0, 26, 59, 0, 0, 100)
+(1000280580, 1000280580, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 84, 1, 0, 0, 28, 58, 0, 0, 100)
+(1000280600, 1000280600, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 84, 1, 0, 0, 28, 60, 0, 0, 100)
+(1000280610, 1000280610, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 84, 2, 0, 0, 28, 61, 0, 0, 100)
+(1000280620, 1000280620, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 84, 1, 0, 0, 28, 62, 0, 0, 100)
+(1000280630, 1000280630, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 84, 2, 0, 0, 28, 63, 0, 0, 100)
+(1000280640, 1000280640, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 84, 1, 0, 0, 28, 64, 0, 0, 100)
+(1000290630, 1000290630, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 87, 2, 0, 0, 29, 63, 0, 0, 100)
+(1000290650, 1000290650, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 87, 2, 0, 0, 29, 65, 0, 0, 100)
+(1000420920, 1000420920, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 126, 1, 0, 0, 42, 92, 0, 0, 100)
+(1000420950, 1000420950, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 126, 2, 0, 0, 42, 95, 0, 0, 100)
+(1000420960, 1000420960, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 126, 1, 0, 0, 42, 96, 0, 0, 100)
+(1000420970, 1000420970, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 126, 2, 0, 0, 42, 97, 0, 0, 100)
+(1000420980, 1000420980, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 126, 1, 0, 0, 42, 98, 0, 0, 100)
+(1000421000, 1000421000, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 126, 1, 0, 0, 42, 100, 0, 0, 100)
+(1000461080, 1000461080, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 138, 1, 0, 0, 46, 108, 0, 0, 100)
+(1000791970, 1000791970, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 237, 2, 0, 0, 79, 197, 0, 0, 100)
+(1000822040, 1000822040, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 246, 1, 0, 0, 82, 204, 0, 0, 100)
+(1000822060, 1000822060, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 246, 1, 0, 0, 82, 206, 0, 0, 100)
+(1000822070, 1000822070, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 246, 2, 0, 0, 82, 207, 0, 0, 100)
+(1000822080, 1000822080, True, True, False, False, False, False, True, False, False, False, False, False, False, False, False, False, False, 246, 1, 0, 0, 82, 208, 0, 0, 100)
diff --git a/GaudiPartProp/tests/scripts/PartPropSvc.py b/GaudiPartProp/tests/scripts/PartPropSvc.py
new file mode 100755
index 0000000000000000000000000000000000000000..e144d8f0133b53bbddfbd0618ecce5be92980235
--- /dev/null
+++ b/GaudiPartProp/tests/scripts/PartPropSvc.py
@@ -0,0 +1,27 @@
+#!/usr/bin/env python
+#####################################################################################
+# (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations #
+#                                                                                   #
+# This software is distributed under the terms of the Apache version 2 licence,     #
+# copied verbatim in the file "LICENSE".                                            #
+#                                                                                   #
+# In applying this licence, CERN does not waive the privileges and immunities       #
+# granted to it by virtue of its status as an Intergovernmental Organization        #
+# or submit itself to any jurisdiction.                                             #
+#####################################################################################
+# =============================================================================
+## @file
+#  The configuration file to run QMTest for the package GaudiPartProp
+#  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+#  @date   2008-12-02
+# =============================================================================
+"""
+The configuration file to run QMTest for the package GaudiPartProp
+"""
+
+__author__ = "Vanya BELYAEV Ivan.Belyaev@nikhef.nl"
+__version__ = ""
+
+from GaudiPartProp.PartPropSvc import test
+
+test()
diff --git a/GaudiPartProp/tests/scripts/ParticleTable.dddb-20200424.txt b/GaudiPartProp/tests/scripts/ParticleTable.dddb-20200424.txt
new file mode 100644
index 0000000000000000000000000000000000000000..06e51069ffb3d9d4f38e3827435628166f1a0bc8
--- /dev/null
+++ b/GaudiPartProp/tests/scripts/ParticleTable.dddb-20200424.txt
@@ -0,0 +1,983 @@
+#
+# ParticleTable.txt file containing particle
+# properties for ParticlePropertySvc, EvtGen and Pythia.
+# Uses PDG 2014 when available.
+#
+PARTICLE
+#
+#                    GEANTID    PDGID  CHARGE   MASS(GeV)      TLIFE(s)                    EVTGENNAME    PYTHIAID    MAXWIDTH
+#
+ gamma                   1          22   0.0      0.00000000      1.000000e+16                     gamma          22      0.00000000
+ W+                     53          24   1.0     80.37900000      3.156893e-25                        W+          24      0.00000000
+ W-                     54         -24  -1.0     80.37900000      3.156893e-25                        W-         -24      0.00000000
+ Z0                     55          23   0.0     91.18760000      2.637914e-25                        Z0          23      0.00000000
+ e+                      2         -11   1.0      0.00051100      1.000000e+16                        e+         -11      0.00000000
+ e-                      3          11  -1.0      0.00051100      1.000000e+16                        e-          11      0.00000000
+ nu_e                    4          12   0.0      0.00000000      1.000000e+16                      nu_e          12      0.00000000
+ nu_e~                 302         -12   0.0      0.00000000      1.000000e+16                 anti-nu_e         -12      0.00000000
+ mu+                     5         -13   1.0      0.10565837      2.196981e-06                       mu+         -13      0.00000000
+ mu-                     6          13  -1.0      0.10565837      2.196981e-06                       mu-          13      0.00000000
+ nu_mu                 300          14   0.0      0.00000000      1.000000e+16                     nu_mu          14      0.00000000
+ nu_mu~                301         -14   0.0      0.00000000      1.000000e+16                anti-nu_mu         -14      0.00000000
+ tau+                   51         -15   1.0      1.77686000      2.903449e-13                      tau+         -15      0.00000000
+ tau-                   52          15  -1.0      1.77686000      2.903449e-13                      tau-          15      0.00000000
+ pi0                     7         111   0.0      0.13497700      8.520000e-17                       pi0         111      0.00000000
+ pi+                     8         211   1.0      0.13957061      2.603300e-08                       pi+         211      0.00000000
+ pi-                     9        -211  -1.0      0.13957061      2.603300e-08                       pi-        -211      0.00000000
+ eta                    17         221   0.0      0.54786200      5.063171e-19                       eta         221      0.00000000
+ rho(770)0              33         113   0.0      0.77526000      4.414569e-24                      rho0         113      0.00000000
+ rho(770)+              34         213   1.0      0.77526000      4.414569e-24                      rho+         213      0.00000000
+ rho(770)-              35        -213  -1.0      0.77526000      4.414569e-24                      rho-        -213      0.00000000
+ omega(782)             36         223   0.0      0.78265000      7.752794e-23                     omega         223      0.00000000
+ eta_prime             127         331   0.0      0.95778000      3.358224e-21                      eta'         331      0.00000000
+ sigma_0               850     9000221   0.0      0.47500000      1.196749e-24                   sigma_0           0      0.00000000
+ f_0(980)              596     9010221   0.0      0.99000000      1.097020e-23                       f_0       10221      0.00000000
+ a_0(980)0             132     9000111   0.0      0.98000000      8.776163e-24                      a_00       10111      0.00000000
+ a_0(980)+             133     9000211   1.0      0.98000000      8.776163e-24                      a_0+       10211      0.00000000
+ a_0(980)-             134    -9000211  -1.0      0.98000000      8.776163e-24                      a_0-      -10211      0.00000000
+ phi(1020)              37         333   0.0      1.01946100      1.549099e-22                       phi         333      0.00000000
+ h_1(1170)             597       10223   0.0      1.17000000      1.828367e-24                       h_1       10223      0.00000000
+ b_1(1235)0            588       10113   0.0      1.22950000      4.635297e-24                      b_10       10113      0.00000000
+ b_1(1235)+            592       10213   1.0      1.22950000      4.635297e-24                      b_1+       10213      0.00000000
+ b_1(1235)-            593      -10213  -1.0      1.22950000      4.635297e-24                      b_1-      -10213      0.00000000
+ a_1(1260)0            135       20113   0.0      1.23000000      1.567172e-24                      a_10       20113      0.00000000
+ a_1(1260)+             42       20213   1.0      1.23000000      1.567172e-24                      a_1+       20213      0.00000000
+ a_1(1260)-             43      -20213  -1.0      1.23000000      1.567172e-24                      a_1-      -20213      0.00000000
+ f_2(1270)             367         225   0.0      1.27550000      3.555982e-24                       f_2         225      0.00000000
+ f_1(1285)             687       20223   0.0      1.28190000      2.899612e-23                       f_1       20223      0.00000000
+ eta(1295)             811      100221   0.0      1.29400000      1.196749e-23                   eta(2S)           0      0.00000000
+ pi(1300)0             805      100111   0.0      1.30000000      1.645530e-24                   pi(2S)0           0      0.00000000
+ pi(1300)+             807      100211   1.0      1.30000000      1.645530e-24                   pi(2S)+           0      0.00000000
+ pi(1300)-             808     -100211  -1.0      1.30000000      1.645530e-24                   pi(2S)-           0      0.00000000
+ a_2(1320)0            136         115   0.0      1.31690000      6.151516e-24                      a_20         115      0.00000000
+ a_2(1320)+            137         215   1.0      1.31690000      6.151516e-24                      a_2+         215      0.00000000
+ a_2(1320)-            138        -215  -1.0      1.31690000      6.151516e-24                      a_2-        -215      0.00000000
+ f_0(1370)             686       10221   0.0      1.35000000      1.880606e-24                      f'_0       10331      0.00000000
+ h_1(1380)             604       10333   0.0      1.41600000      7.313467e-24                      h'_1       10333      0.00000000
+ pi_1(1400)0          1021     9000113   0.0      1.35400000      1.994582e-24               pi_1(1400)0           0      0.00000000
+ pi_1(1400)+          1023     9000213   1.0      1.35400000      1.994582e-24               pi_1(1400)+           0      0.00000000
+ pi_1(1400)-          1024    -9000213  -1.0      1.35400000      1.994582e-24               pi_1(1400)-           0      0.00000000
+ eta(1405)0           1025     9020221   0.0      1.40880000      1.313796e-23                eta(1405)0           0      0.00000000
+ omega(1420)           812      100223   0.0      1.42500000      3.061452e-24                 omega(2S)           0      0.00000000
+ f_1(1420)             692       20333   0.0      1.42640000      1.198929e-23                      f'_1       20333      0.00000000
+ rho(1450)0            806      100113   0.0      1.46500000      1.645530e-24                  rho(2S)0           0      0.00000000
+ rho(1450)+            809      100213   1.0      1.46500000      1.645530e-24                  rho(2S)+           0      0.00000000
+ rho(1450)-            810     -100213  -1.0      1.46500000      1.645530e-24                  rho(2S)-           0      0.00000000
+ a_0(1450)0            587       10111   0.0      1.46700000      2.483820e-24                a_0(1450)0           0      0.00000000
+ a_0(1450)+            590       10211   1.0      1.46700000      2.483820e-24                a_0(1450)+           0      0.00000000
+ a_0(1450)-            591      -10211  -1.0      1.46700000      2.483820e-24                a_0(1450)-           0      0.00000000
+ eta(1475)             826      100331   0.0      1.47500000      7.743673e-24                 eta(1475)           0      0.00000000
+ f_0(1500)             855     9030221   0.0      1.50600000      6.038644e-24                 f_0(1500)           0      0.00000000
+ f'_2(1525)            380         335   0.0      1.52500000      9.016605e-24                      f'_2         335      0.00000000
+ pi_1(1600)0          1027     9010113   0.0      1.66000000      2.742551e-24               pi_1(1600)0           0      0.00000000
+ pi_1(1600)+          1029     9010213   1.0      1.66000000      2.742551e-24               pi_1(1600)+           0      0.00000000
+ pi_1(1600)-          1030    -9010213  -1.0      1.66000000      2.742551e-24               pi_1(1600)-           0      0.00000000
+ eta_2(1645)           598       10225   0.0      1.61700000      3.636531e-24               eta_2(1645)           0      0.00000000
+ omega(1650)           746       30223   0.0      1.67000000      2.089563e-24               omega(1650)           0      0.00000000
+ pi_2(1670)0           589       10115   0.0      1.67060000      2.551209e-24               pi_2(1670)0           0      0.00000000
+ pi_2(1670)+           594       10215   1.0      1.67060000      2.551209e-24               pi_2(1670)+           0      0.00000000
+ pi_2(1670)-           595      -10215  -1.0      1.67060000      2.551209e-24               pi_2(1670)-           0      0.00000000
+ omega_3(1670)         368         227   0.0      1.66700000      3.917930e-24             omega_3(1670)           0      0.00000000
+ phi(1680)             827      100333   0.0      1.68000000      4.388081e-24                 phi(1680)           0      0.00000000
+ rho_3(1690)0          361         117   0.0      1.68880000      4.088274e-24              rho_3(1690)0           0      0.00000000
+ rho_3(1690)+          363         217   1.0      1.68880000      4.088274e-24              rho_3(1690)+           0      0.00000000
+ rho_3(1690)-          364        -217  -1.0      1.68880000      4.088274e-24              rho_3(1690)-           0      0.00000000
+ rho(1700)0            743       30113   0.0      1.72000000      2.632849e-24                  rho(3S)0           0      0.00000000
+ rho(1700)+            744       30213   1.0      1.72000000      2.632849e-24                  rho(3S)+           0      0.00000000
+ rho(1700)-            745      -30213  -1.0      1.72000000      2.632849e-24                  rho(3S)-           0      0.00000000
+ f_0(1710)             603       10331   0.0      1.70400000      5.351317e-24                 f_0(1710)           0      0.00000000
+ pi(1800)0             840     9010111   0.0      1.81000000      3.164482e-24                 pi(1800)0           0      0.00000000
+ pi(1800)+             841     9010211   1.0      1.81000000      3.164482e-24                 pi(1800)+           0      0.00000000
+ pi(1800)-             842    -9010211  -1.0      1.81000000      3.164482e-24                 pi(1800)-           0      0.00000000
+ phi_3(1850)           381         337   0.0      1.85400000      7.565657e-24               phi_3(1850)           0      0.00000000
+ eta_2(1870)           605       10335   0.0      1.85400000      0.000000e+00               eta_2(1870)           0      0.00000000
+ f_2(1950)             813     9050225   0.0      1.93600000      1.418560e-24                 f_2(1950)           0      0.00000000
+ f_2(2010)             828     9060225   0.0      2.01000000      3.291061e-24                 f_2(2010)           0      0.00000000
+ a_4(2040)0            362         119   0.0      1.96700000      2.581224e-24                a_4(2040)0           0      0.00000000
+ a_4(2040)+            365         219   1.0      1.96700000      2.581224e-24                a_4(2040)+           0      0.00000000
+ a_4(2040)-            366        -219  -1.0      1.96700000      2.581224e-24                a_4(2040)-           0      0.00000000
+ f_4(2050)             369         229   0.0      2.01800000      2.777267e-24                 f_4(2050)           0      0.00000000
+ f_2(2300)             857     9080225   0.0      2.29700000      4.417530e-24                 f_2(2300)           0      0.00000000
+ f_2(2340)             858     9090225   0.0      2.35000000      2.063361e-24                 f_2(2340)           0      0.00000000
+ K0                    370         311   0.0      0.49761100      0.000000e+00                        K0         311      0.00000000
+ K~0                   371        -311   0.0      0.49761100      0.000000e+00                   anti-K0        -311      0.00000000
+ KS0                    16         310   0.0      0.49761100      8.956400e-11                      K_S0         310      0.00000000
+ KL0                    10         130   0.0      0.49761100      5.116000e-08                      K_L0         130      0.00000000
+ K+                     11         321   1.0      0.49367700      1.238000e-08                        K+         321      0.00000000
+ K-                     12        -321  -1.0      0.49367700      1.238000e-08                        K-        -321      0.00000000
+ K*(892)0               40         313   0.0      0.89555000      1.391569e-23                       K*0         313      0.00000000
+ K*(892)~0              41        -313   0.0      0.89555000      1.391569e-23                  anti-K*0        -313      0.00000000
+ K*(892)+               38         323   1.0      0.89166000      1.308573e-23                       K*+         323      0.00000000
+ K*(892)-               39        -323  -1.0      0.89166000      1.308573e-23                       K*-        -323      0.00000000
+ K_1(1270)0            141       10313   0.0      1.27200000      7.313469e-24                      K_10       10313      0.00000000
+ K_1(1270)~0           142      -10313   0.0      1.27200000      7.313469e-24                 anti-K_10      -10313      0.00000000
+ K_1(1270)+            139       10323   1.0      1.27200000      7.313469e-24                      K_1+       10323      0.00000000
+ K_1(1270)-            140      -10323  -1.0      1.27200000      7.313469e-24                      K_1-      -10323      0.00000000
+ K_1(1400)0            145       20313   0.0      1.40300000      3.782829e-24                     K'_10       20313      0.00000000
+ K_1(1400)~0           146      -20313   0.0      1.40300000      3.782829e-24                anti-K'_10      -20313      0.00000000
+ K_1(1400)+            143       20323   1.0      1.40300000      3.782829e-24                     K'_1+       20323      0.00000000
+ K_1(1400)-            144      -20323  -1.0      1.40300000      3.782829e-24                     K'_1-      -20323      0.00000000
+ K*(1410)0             816      100313   0.0      1.42100000      2.837122e-24                      K'*0           0      0.00000000
+ K*(1410)~0            817     -100313   0.0      1.42100000      2.837122e-24                 anti-K'*0           0      0.00000000
+ K*(1410)+             822      100323   1.0      1.42100000      2.837122e-24                      K'*+           0      0.00000000
+ K*(1410)-             823     -100323  -1.0      1.42100000      2.837122e-24                      K'*-           0      0.00000000
+ K*_0(1430)0           149       10311   0.0      1.43000000      2.437823e-24                     K_0*0       10311      0.00000000
+ K*_0(1430)~0          150      -10311   0.0      1.43000000      2.437823e-24                anti-K_0*0      -10311      0.00000000
+ K*_0(1430)+           147       10321   1.0      1.43000000      2.437823e-24                     K_0*+       10321      0.00000000
+ K*_0(1430)-           148      -10321  -1.0      1.43000000      2.437823e-24                     K_0*-      -10321      0.00000000
+ K*_2(1430)0           153         315   0.0      1.43240000      6.038644e-24                     K_2*0         315      0.00000000
+ K*_2(1430)~0          154        -315   0.0      1.43240000      6.038644e-24                anti-K_2*0        -315      0.00000000
+ K*_2(1430)+           151         325   1.0      1.42560000      6.682357e-24                     K_2*+         325      0.00000000
+ K*_2(1430)-           152        -325  -1.0      1.42560000      6.682357e-24                     K_2*-        -325      0.00000000
+ K(1460)0              814      100311   0.0      1.43240000      0.000000e+00                  K(1460)0           0      0.00000000
+ K(1460)~0             815     -100311   0.0      1.43240000      0.000000e+00             anti-K(1460)0           0      0.00000000
+ K(1460)+              820      100321   1.0      1.43240000      0.000000e+00                  K(1460)+           0      0.00000000
+ K(1460)-              821     -100321  -1.0      1.43240000      0.000000e+00                  K(1460)-           0      0.00000000
+ K*(1680)0             747       30313   0.0      1.71800000      2.056913e-24                     K''*0           0      0.00000000
+ K*(1680)~0            748      -30313   0.0      1.71800000      2.056913e-24                anti-K''*0           0      0.00000000
+ K*(1680)+             749       30323   1.0      1.71800000      2.056913e-24                     K''*+           0      0.00000000
+ K*(1680)-             750      -30323  -1.0      1.71800000      2.056913e-24                     K''*-           0      0.00000000
+ K_2(1770)0            599       10315   0.0      1.77300000      3.538775e-24                K_2(1770)0           0      0.00000000
+ K_2(1770)~0           600      -10315   0.0      1.77300000      3.538775e-24           anti-K_2(1770)0           0      0.00000000
+ K_2(1770)+            601       10325   1.0      1.77300000      3.538775e-24                K_2(1770)+           0      0.00000000
+ K_2(1770)-            602      -10325  -1.0      1.77300000      3.538775e-24                K_2(1770)-           0      0.00000000
+ K*_3(1780)0           372         317   0.0      1.77600000      4.139699e-24                     K_3*0           0      0.00000000
+ K*_3(1780)~0          373        -317   0.0      1.77600000      4.139699e-24                anti-K_3*0           0      0.00000000
+ K*_3(1780)+           376         327   1.0      1.77600000      4.139699e-24                     K_3*+           0      0.00000000
+ K*_3(1780)-           377        -327  -1.0      1.77600000      4.139699e-24                     K_3*-           0      0.00000000
+ K_2(1820)0            688       20315   0.0      1.81900000      2.493227e-24                K_2(1820)0           0      0.00000000
+ K_2(1820)~0           689      -20315   0.0      1.81900000      2.493227e-24           anti-K_2(1820)0           0      0.00000000
+ K_2(1820)+            690       20325   1.0      1.81900000      2.493227e-24                K_2(1820)+           0      0.00000000
+ K_2(1820)-            691      -20325  -1.0      1.81900000      2.493227e-24                K_2(1820)-           0      0.00000000
+ K*_2(1980)0           818      100315   0.0      1.97300000      0.000000e+00               K*_2(1980)0           0      0.00000000
+ K*_2(1980)~0          819     -100315   0.0      1.97300000      0.000000e+00          anti-K*_2(1980)0           0      0.00000000
+ K*_2(1980)+           824      100325   1.0      1.97300000      0.000000e+00               K*_2(1980)+           0      0.00000000
+ K*_2(1980)-           825     -100325  -1.0      1.97300000      0.000000e+00               K*_2(1980)-           0      0.00000000
+ K*_4(2045)0           374         319   0.0      2.04500000      3.324304e-24                     K_4*0           0      0.00000000
+ K*_4(2045)~0          375        -319   0.0      2.04500000      3.324304e-24                anti-K_4*0           0      0.00000000
+ K*_4(2045)+           378         329   1.0      2.04500000      3.324304e-24                     K_4*+           0      0.00000000
+ K*_4(2045)-           379        -329  -1.0      2.04500000      3.324304e-24                     K_4*-           0      0.00000000
+ D0                     58         421   0.0      1.86483000      4.101000e-13                        D0         421      0.00000000
+ D~0                    59        -421   0.0      1.86483000      4.101000e-13                   anti-D0        -421      0.00000000
+ D+                     56         411   1.0      1.86965000      1.040000e-12                        D+         411      0.00000000
+ D-                     57        -411  -1.0      1.86965000      1.040000e-12                        D-        -411      0.00000000
+ D*(2007)0              67         423   0.0      2.00685000      1.000003e-19                       D*0         423      0.00000000
+ D*(2007)~0             68        -423   0.0      2.00685000      1.000003e-19                  anti-D*0        -423      0.00000000
+ D*(2010)+              65         413   1.0      2.01026000      7.892230e-21                       D*+         413      0.00000000
+ D*(2010)-              66        -413  -1.0      2.01026000      7.892230e-21                       D*-        -413      0.00000000
+ D*_0+                 155       10411   1.0      2.34900000      2.978335e-24                     D_0*+       10411      0.00000000
+ D*_0-                 159      -10411  -1.0      2.34900000      2.978335e-24                     D_0*-      -10411      0.00000000
+ D*_00                 163       10421   0.0      2.30000000      2.402234e-24                     D_0*0       10421      0.00000000
+ D*_0~0                167      -10421   0.0      2.30000000      2.402234e-24                anti-D_0*0      -10421      0.00000000
+ D_1(H)0               164       20423   0.0      2.44500000      2.630000e-24                     D'_10       20423      0.00000000
+ D_1(H)~0              168      -20423   0.0      2.44500000      2.630000e-24                anti-D'_10      -20423      0.00000000
+ D_1(H)+               156       20413   1.0      2.44500000      2.630000e-24                     D'_1+       20413      0.00000000
+ D_1(H)-               160      -20413  -1.0      2.44500000      2.630000e-24                     D'_1-      -20413      0.00000000
+ D_1(2420)0            165       10423   0.0      2.42080000      2.428827e-23                      D_10       10423      0.00000000
+ D_1(2420)~0           169      -10423   0.0      2.42080000      2.428827e-23                 anti-D_10      -10423      0.00000000
+ D_1(2420)+            157       10413   1.0      2.42300000      3.290000e-23                      D_1+       10413      0.00000000
+ D_1(2420)-            161      -10413  -1.0      2.42300000      3.290000e-23                      D_1-      -10413      0.00000000
+ D*_2(2460)0           170         425   0.0      2.46070000      1.385709e-23                     D_2*0         425      0.00000000
+ D*_2(2460)~0          166        -425   0.0      2.46070000      1.385709e-23                anti-D_2*0        -425      0.00000000
+ D*_2(2460)+           162         415   1.0      2.46540000      1.778952e-23                     D_2*+         415      0.00000000
+ D*_2(2460)-           158        -415  -1.0      2.46540000      1.778952e-23                     D_2*-        -415      0.00000000
+ D(2S)0                761      100421   0.0      2.58000000      0.000000e+00                    D(2S)0           0      0.00000000
+ D(2S)~0               762     -100421   0.0      2.58000000      0.000000e+00               anti-D(2S)0           0      0.00000000
+ D(2S)+                757      100411   1.0      2.58000000      0.000000e+00                    D(2S)+           0      0.00000000
+ D(2S)-                758     -100411  -1.0      2.58000000      0.000000e+00                    D(2S)-           0      0.00000000
+ D*(2640)0             763      100423   0.0      2.64000000      0.000000e+00                   D*(2S)0           0      0.00000000
+ D*(2640)~0            764     -100423   0.0      2.64000000      0.000000e+00              anti-D*(2S)0           0      0.00000000
+ D*(2640)+             759      100413   1.0      2.64000000      0.000000e+00                   D*(2S)+           0      0.00000000
+ D*(2640)-             760     -100413  -1.0      2.64000000      0.000000e+00                   D*(2S)-           0      0.00000000
+ D_s+                   60         431   1.0      1.96834000      5.043770e-13                      D_s+         431      0.00000000
+ D_s-                   61        -431  -1.0      1.96834000      5.043770e-13                      D_s-        -431      0.00000000
+ D*_s+                  69         433   1.0      2.11220000      1.000003e-19                     D_s*+         433      0.00000000
+ D*_s-                  70        -433  -1.0      2.11220000      1.000003e-19                     D_s*-        -433      0.00000000
+ D*_s0+                171       10431   1.0      2.31780000      6.582100e-22                    D_s0*+       10431      0.00000000
+ D*_s0-                175      -10431  -1.0      2.31780000      6.582100e-22                    D_s0*-      -10431      0.00000000
+ D_s1(2460)+           172       20433   1.0      2.45950000      6.582100e-22                     D_s1+       20433      0.00000000
+ D_s1(2460)-           176      -20433  -1.0      2.45950000      6.582100e-22                     D_s1-      -20433      0.00000000
+ D_s1(2536)+           173       10433   1.0      2.53511000      7.154480e-22                    D'_s1+       10433      0.00000000
+ D_s1(2536)-           177      -10433  -1.0      2.53511000      7.154480e-22                    D'_s1-      -10433      0.00000000
+ D*_s2+                174         435   1.0      2.56910000      3.894746e-23                    D_s2*+         435      0.00000000
+ D*_s2-                178        -435  -1.0      2.56910000      3.894746e-23                    D_s2*-        -435      0.00000000
+ B0                     73         511   0.0      5.27964000      1.520120e-12                        B0         511      0.00000000
+ B~0                    74        -511   0.0      5.27964000      1.520120e-12                   anti-B0        -511      0.00000000
+ B0H                 99998         510   0.0      5.27958000      1.519000e-12                       B0H           0      0.00000000
+ B0L                 99999         150   0.0      5.27958000      1.519000e-12                       B0L           0      0.00000000
+ B+                     71         521   1.0      5.27933000      1.638158e-12                        B+         521      0.00000000
+ B-                     72        -521  -1.0      5.27933000      1.638158e-12                        B-        -521      0.00000000
+ B*0                   189         513   0.0      5.32470000      1.000019e-19                       B*0         513      0.00000000
+ B*~0                  190        -513   0.0      5.32470000      1.000019e-19                  anti-B*0        -513      0.00000000
+ B*-                   187        -523  -1.0      5.32470000      1.000019e-19                       B*-        -523      0.00000000
+ B*+                   188         523   1.0      5.32470000      1.000019e-19                       B*+         523      0.00000000
+ B*_00                 201       10511   0.0      5.73800000      4.390000e-24                     B_0*0       10511      0.00000000
+ B*_0~0                205      -10511   0.0      5.73800000      4.390000e-24                anti-B_0*0      -10511      0.00000000
+ B*_0+                 193       10521   1.0      5.73800000      4.390000e-24                     B_0*+       10521      0.00000000
+ B*_0-                 197      -10521  -1.0      5.73800000      4.390000e-24                     B_0*-      -10521      0.00000000
+ B_1(H)0               202       20513   0.0      5.75700000      2.630000e-24                     B'_10       20513      0.00000000
+ B_1(H)~0              206      -20513   0.0      5.75700000      2.630000e-24                anti-B'_10      -20513      0.00000000
+ B_1(H)+               194       20523   1.0      5.75700000      2.630000e-24                     B'_1+       20523      0.00000000
+ B_1(H)-               198      -20523  -1.0      5.75700000      2.630000e-24                     B'_1-      -20523      0.00000000
+ B_1(L)0               203       10513   0.0      5.72610000      3.134000e-23                      B_10       10513      0.00000000
+ B_1(L)~0              207      -10513   0.0      5.72610000      3.134000e-23                 anti-B_10      -10513      0.00000000
+ B_1(L)+               195       10523   1.0      5.72590000      3.134000e-23                      B_1+       10523      0.00000000
+ B_1(L)-               199      -10523  -1.0      5.72590000      3.134000e-23                      B_1-      -10523      0.00000000
+ B*_20                 204         515   0.0      5.73950000      2.861792e-23                     B_2*0         515      0.00000000
+ B*_2~0                208        -515   0.0      5.73950000      2.861792e-23                anti-B_2*0        -515      0.00000000
+ B*_2+                 196         525   1.0      5.73720000      3.291060e-23                     B_2*+         525      0.00000000
+ B*_2-                 200        -525  -1.0      5.73720000      3.291060e-23                     B_2*-        -525      0.00000000
+ B_s0                   75         531   0.0      5.36688000      1.512000e-12                      B_s0         531      0.00000000
+ B_s~0                  76        -531   0.0      5.36688000      1.512000e-12                 anti-B_s0        -531      0.00000000
+ B_s0H               99996         530   0.0      5.36677000      1.661000e-12                     B_s0H           0      0.00000000
+ B_s0L               99997         350   0.0      5.36677000      1.405000e-12                     B_s0L           0      0.00000000
+ B*_s0                 191         533   0.0      5.41540000      1.000000e-19                     B_s*0         533      0.00000000
+ B*_s~0                192        -533   0.0      5.41540000      1.000000e-19                anti-B_s*0        -533      0.00000000
+ B*_s00                209       10531   0.0      5.84100000      4.390000e-24                    B_s0*0       10531      0.00000000
+ B*_s0~0               213      -10531   0.0      5.84100000      4.390000e-24               anti-B_s0*0      -10531      0.00000000
+ B_s1(H)0              210       20533   0.0      5.85900000      2.630000e-24                    B'_s10       20533      0.00000000
+ B_s1(H)~0             214      -20533   0.0      5.85900000      2.630000e-24               anti-B'_s10      -20533      0.00000000
+ B_s1(L)0              211       10533   0.0      5.82870000      1.316424e-21                     B_s10       10533      0.00000000
+ B_s1(L)~0             215      -10533   0.0      5.82870000      1.316424e-21                anti-B_s10      -10533      0.00000000
+ B*_s20                212         535   0.0      5.83985000      4.477633e-22                    B_s2*0         535      0.00000000
+ B*_s2~0               216        -535   0.0      5.83985000      4.477633e-22               anti-B_s2*0        -535      0.00000000
+ B_c+                   77         541   1.0      6.27370000      5.098466e-13                      B_c+         541      0.00000000
+ B_c-                   78        -541  -1.0      6.27370000      5.098466e-13                      B_c-        -541      0.00000000
+ B_c*+                 382         543   1.0      6.60200000      0.000000e+00                     B_c*+         543      0.00000000
+ B_c*-                 383        -543  -1.0      6.60200000      0.000000e+00                     B_c*-        -543      0.00000000
+ B_c0*+                607       10541   1.0      7.25000000      0.000000e+00                    B_c0*+       10541      0.00000000
+ B_c0*-                608      -10541  -1.0      7.25000000      0.000000e+00                    B_c0*-      -10541      0.00000000
+ B_c1(L)+              609       10543   1.0      7.30000000      0.000000e+00                     B_c1+       10543      0.00000000
+ B_c1(L)-              610      -10543  -1.0      7.30000000      0.000000e+00                     B_c1-      -10543      0.00000000
+ B_c1(H)+              693       20543   1.0      7.40000000      0.000000e+00                    B'_c1+       20543      0.00000000
+ B_c1(H)-              694      -20543  -1.0      7.40000000      0.000000e+00                    B'_c1-      -20543      0.00000000
+ B_c2*+                384         545   1.0      7.35000000      0.000000e+00                    B_c2*+         545      0.00000000
+ B_c2*-                385        -545  -1.0      7.35000000      0.000000e+00                    B_c2*-        -545      0.00000000
+ eta_c(1S)             128         441   0.0      2.98390000      2.216203e-23                     eta_c         441      0.00000000
+ J/psi(1S)              64         443   0.0      3.09690000      7.085169e-21                     J/psi         443      0.00000000
+ chi_c0(1P)            129       10441   0.0      3.41471000      6.328963e-23                    chi_c0       10441      0.00000000
+ chi_c1(1P)            130       20443   0.0      3.51067000      7.835857e-22                    chi_c1       20443      0.00000000
+ h_c(1P)               606       10443   0.0      3.52538000      9.403029e-22                       h_c       10443      0.00000000
+ chi_c2(1P)            131         445   0.0      3.55617000      3.410425e-22                    chi_c2         445      0.00000000
+ eta_c(2S)             829      100441   0.0      3.63750000      6.582122e-23                 eta_c(2S)      100441      0.00000000
+ psi(2S)               126      100443   0.0      3.68609700      2.238816e-21                   psi(2S)      100443      0.00000000
+ psi(3770)             765       30443   0.0      3.77313000      2.419898e-23                 psi(3770)       30443      0.00000000
+ chi_c2(2P)           1031      100445   0.0      3.92720000      2.742551e-23                chi_c2(2P)           0      0.00000000
+ psi(4040)             851     9000443   0.0      4.03900000      8.227652e-24                 psi(4040)           0      0.00000000
+ psi(4160)             853     9010443   0.0      4.19100000      9.403029e-24                 psi(4160)           0      0.00000000
+ psi(4415)             856     9020443   0.0      4.42100000      1.061633e-23                 psi(4415)           0      0.00000000
+ X_1(3872)            1016     9920443   0.0      3.87169000      2.076340e-21                 X_1(3872)     9920443      0.00000000
+ X_2(3872)            1017     9910445   0.0      3.87169000      2.076340e-21                 X_2(3872)     9910445      0.00000000
+ Z(4430)+             1018     9042413   1.0      4.47800000      3.630504e-24                  Z(4430)+     9042413      0.00000000
+ Z(4430)-             1019    -9042413  -1.0      4.47800000      3.630504e-24                  Z(4430)-    -9042413      0.00000000
+ eta_b(1S)             386         551   0.0      9.39870000      6.582120e-23                     eta_b         551      0.00000000
+ eta_b(2S)             830      100551   0.0      9.99700000      0.000000e+00                 eta_b(2S)           0      0.00000000
+ eta_b(3S)             843      200551   0.0     10.33500000      0.000000e+00                 eta_b(3S)           0      0.00000000
+ eta_b2(1D)            613       10555   0.0     10.15700000      0.000000e+00                eta_b2(1D)       10555      0.00000000
+ eta_b2(2D)            836      110555   0.0     10.44100000      0.000000e+00                eta_b2(2D)      110555      0.00000000
+ Upsilon(1S)           387         553   0.0      9.46030000      1.218911e-20                   Upsilon         553      0.00000000
+ Upsilon(2S)           831      100553   0.0     10.02326000      2.058199e-20               Upsilon(2S)      100553      0.00000000
+ Upsilon(3S)           844      200553   0.0     10.35520000      3.242425e-20               Upsilon(3S)      200553      0.00000000
+ Upsilon_1(1D)         766       30553   0.0     10.16370000      0.000000e+00             Upsilon_1(1D)       30553      0.00000000
+ Upsilon_1(2D)         839      130553   0.0     10.43490000      0.000000e+00             Upsilon_1(2D)      130553      0.00000000
+ Upsilon_2(1D)         696       20555   0.0     10.15620000      0.000000e+00             Upsilon_2(1D)       20555      0.00000000
+ Upsilon_2(2D)         838      120555   0.0     10.44060000      0.000000e+00             Upsilon_2(2D)      120555      0.00000000
+ Upsilon_3(1D)         389         557   0.0     10.15990000      0.000000e+00             Upsilon_3(1D)         557      0.00000000
+ Upsilon_3(2D)         833      100557   0.0     10.44430000      0.000000e+00             Upsilon_3(2D)      100557      0.00000000
+ Upsilon(4S)           849      300553   0.0     10.57940000      3.210791e-23               Upsilon(4S)      300553      0.00000000
+ Upsilon(10860)        852     9000553   0.0     10.88990000      1.290612e-23               Upsilon(5S)           0      0.00000000
+ Upsilon(11020)        854     9010553   0.0     10.99290000      1.343290e-23            Upsilon(11020)           0      0.00000000
+ chi_b0(1P)            611       10551   0.0      9.85940000      0.000000e+00                    chi_b0       10551      0.00000000
+ chi_b0(2P)            834      110551   0.0     10.23250000      0.000000e+00                chi_b0(2P)      110551      0.00000000
+ chi_b0(3P)            846      210551   0.0     10.50040000      0.000000e+00                chi_b0(3P)      210551      0.00000000
+ chi_b1(3P)            848      220553   0.0     10.51210000      0.000000e+00                chi_b1(3P)      220553      0.00000000
+ chi_b1(1P)            695       20553   0.0      9.89287800      0.000000e+00                    chi_b1       20553      0.00000000
+ chi_b1(2P)            837      120553   0.0     10.25546000      0.000000e+00                chi_b1(2P)      120553      0.00000000
+ chi_b2(1P)            388         555   0.0      9.91221000      0.000000e+00                    chi_b2         555      0.00000000
+ chi_b2(2P)            832      100555   0.0     10.26865000      0.000000e+00                chi_b2(2P)      100555      0.00000000
+ chi_b2(3P)            845      200555   0.0     10.52620000      0.000000e+00                chi_b2(3P)      200555      0.00000000
+ h_b(1P)               612       10553   0.0      9.89930000      0.000000e+00                       h_b       10553      0.00000000
+ h_b(2P)               835      110553   0.0     10.25500000      0.000000e+00                   h_b(2P)      110553      0.00000000
+ h_b(3P)               847      210553   0.0     10.51600000      0.000000e+00                   h_b(3P)      210553      0.00000000
+ n0                     13        2112   0.0      0.93956541      8.803000e+02                        n0        2112      0.00000000
+ n~0                    25       -2112   0.0      0.93956541      8.803000e+02                   anti-n0       -2112      0.00000000
+ p+                     14        2212   1.0      0.93827208      1.000000e+16                        p+        2212      0.00000000
+ p~-                    15       -2212  -1.0      0.93827208      1.000000e+16                   anti-p-       -2212      0.00000000
+ N(1440)0              624       12112   0.0      1.44000000      2.194041e-24                  N(1440)0           0      0.00000000
+ N(1440)~0             625      -12112   0.0      1.44000000      2.194041e-24             anti-N(1440)0           0      0.00000000
+ N(1440)+              636       12212   1.0      1.44000000      2.194041e-24                  N(1440)+           0      0.00000000
+ N(1440)~-             637      -12212  -1.0      1.44000000      2.194041e-24             anti-N(1440)-           0      0.00000000
+ N(1520)0              404        1214   0.0      1.51500000      5.983745e-24                  N(1520)0           0      0.00000000
+ N(1520)~0             405       -1214   0.0      1.51500000      5.983745e-24             anti-N(1520)0           0      0.00000000
+ N(1520)+              420        2124   1.0      1.51500000      5.983745e-24                  N(1520)+           0      0.00000000
+ N(1520)~-             421       -2124  -1.0      1.51500000      5.983745e-24             anti-N(1520)-           0      0.00000000
+ N(1535)0              705       22112   0.0      1.53000000      4.388081e-24                  N(1535)0           0      0.00000000
+ N(1535)~0             706      -22112   0.0      1.53000000      4.388081e-24             anti-N(1535)0           0      0.00000000
+ N(1535)+              713       22212   1.0      1.53000000      4.388081e-24                  N(1535)+           0      0.00000000
+ N(1535)~-             714      -22212  -1.0      1.53000000      4.388081e-24             anti-N(1535)-           0      0.00000000
+ N(1650)0              771       32112   0.0      1.65000000      5.265696e-24                  N(1650)0           0      0.00000000
+ N(1650)~0             772      -32112   0.0      1.65000000      5.265696e-24             anti-N(1650)0           0      0.00000000
+ N(1650)+              777       32212   1.0      1.65000000      5.265696e-24                  N(1650)+           0      0.00000000
+ N(1650)~-             778      -32212  -1.0      1.65000000      5.265696e-24             anti-N(1650)-           0      0.00000000
+ N(1675)0              414        2116   0.0      1.67500000      4.539393e-24                  N(1675)0           0      0.00000000
+ N(1675)~0             415       -2116   0.0      1.67500000      4.539393e-24             anti-N(1675)0           0      0.00000000
+ N(1675)+              428        2216   1.0      1.67500000      4.539393e-24                  N(1675)+           0      0.00000000
+ N(1675)~-             429       -2216  -1.0      1.67500000      4.539393e-24             anti-N(1675)-           0      0.00000000
+ N(1680)0              628       12116   0.0      1.68500000      5.485100e-24                  N(1680)0           0      0.00000000
+ N(1680)~0             629      -12116   0.0      1.68500000      5.485100e-24             anti-N(1680)0           0      0.00000000
+ N(1680)+              640       12216   1.0      1.68500000      5.485100e-24                  N(1680)+           0      0.00000000
+ N(1680)~-             641      -12216  -1.0      1.68500000      5.485100e-24             anti-N(1680)-           0      0.00000000
+ N(1700)+              711       22124   1.0      1.72000000      4.388081e-24                  N(1700)+           0      0.00000000
+ N(1700)~-             712      -22124  -1.0      1.72000000      4.388081e-24             anti-N(1700)-           0      0.00000000
+ N(1700)0              703       21214   0.0      1.72000000      4.388081e-24                  N(1700)0           0      0.00000000
+ N(1700)~0             704      -21214   0.0      1.72000000      4.388081e-24             anti-N(1700)0           0      0.00000000
+ N(1710)0              791       42112   0.0      1.71000000      6.582122e-24                  N(1710)0           0      0.00000000
+ N(1710)~0             792      -42112   0.0      1.71000000      6.582122e-24             anti-N(1710)0           0      0.00000000
+ N(1710)+              795       42212   1.0      1.71000000      6.582122e-24                  N(1710)+           0      0.00000000
+ N(1710)~-             796      -42212  -1.0      1.71000000      6.582122e-24             anti-N(1710)-           0      0.00000000
+ N(1720)0              769       31214   0.0      1.72000000      2.632849e-24                  N(1720)0           0      0.00000000
+ N(1720)~0             770      -31214   0.0      1.72000000      2.632849e-24             anti-N(1720)0           0      0.00000000
+ N(1720)+              775       32124   1.0      1.72000000      2.632849e-24                  N(1720)+           0      0.00000000
+ N(1720)~-             776      -32124  -1.0      1.72000000      2.632849e-24             anti-N(1720)-           0      0.00000000
+ N(1900)0              789       41214   0.0      1.89500000      5.476011e-24                  N(1900)0           0      0.00000000
+ N(1900)~0             790      -41214   0.0      1.89500000      5.476011e-24             anti-N(1900)0           0      0.00000000
+ N(1900)+              793       42124   1.0      1.89500000      5.476011e-24                  N(1900)+           0      0.00000000
+ N(1900)~-             794      -42124  -1.0      1.89500000      5.476011e-24             anti-N(1900)-           0      0.00000000
+ N(1990)0              630       12118   0.0      1.95000000      0.000000e+00                  N(1990)0           0      0.00000000
+ N(1990)~0             631      -12118   0.0      1.95000000      0.000000e+00             anti-N(1990)0           0      0.00000000
+ N(1990)+              642       12218   1.0      1.95000000      0.000000e+00                  N(1990)+           0      0.00000000
+ N(1990)~-             643      -12218  -1.0      1.95000000      0.000000e+00             anti-N(1990)-           0      0.00000000
+ N(2090)0              799       52114   0.0      2.00000000      0.000000e+00                  N(2090)0           0      0.00000000
+ N(2090)~0             800      -52114   0.0      2.00000000      0.000000e+00             anti-N(2090)0           0      0.00000000
+ N(2090)+              801       52214   1.0      2.00000000      0.000000e+00                  N(2090)+           0      0.00000000
+ N(2090)~-             802      -52214  -1.0      2.00000000      0.000000e+00             anti-N(2090)-           0      0.00000000
+ N(2190)0              408        1218   0.0      2.18000000      1.645530e-24                  N(2190)0           0      0.00000000
+ N(2190)~0             409       -1218   0.0      2.18000000      1.645530e-24             anti-N(2190)0           0      0.00000000
+ N(2190)+              424        2128   1.0      2.18000000      1.645530e-24                  N(2190)+           0      0.00000000
+ N(2190)~-             425       -2128  -1.0      2.18000000      1.645530e-24             anti-N(2190)-           0      0.00000000
+ Delta-                182        1114  -1.0      1.23200000      5.625745e-24                    Delta-        1114      0.00000000
+ Delta~+               186       -1114   1.0      1.23200000      5.625745e-24               anti-Delta+       -1114      0.00000000
+ Delta0                181        2114   0.0      1.23200000      5.625745e-24                    Delta0        2114      0.00000000
+ Delta~0               185       -2114   0.0      1.23200000      5.625745e-24               anti-Delta0       -2114      0.00000000
+ Delta+                180        2214   1.0      1.23200000      5.625745e-24                    Delta+        2214      0.00000000
+ Delta~-               184       -2214  -1.0      1.23200000      5.625745e-24               anti-Delta-       -2214      0.00000000
+ Delta++               179        2224   2.0      1.23200000      5.625745e-24                   Delta++        2224      0.00000000
+ Delta~--              183       -2224  -2.0      1.23200000      5.625745e-24              anti-Delta--       -2224      0.00000000
+ Delta(1600)-          767       31114  -1.0      1.57000000      2.632848e-24              Delta(1600)-           0      0.00000000
+ Delta(1600)~+         768      -31114   1.0      1.57000000      2.632848e-24         anti-Delta(1600)+           0      0.00000000
+ Delta(1600)0          773       32114   0.0      1.57000000      2.632848e-24              Delta(1600)0           0      0.00000000
+ Delta(1600)~0         774      -32114   0.0      1.57000000      2.632848e-24         anti-Delta(1600)0           0      0.00000000
+ Delta(1600)+          779       32214   1.0      1.57000000      2.632848e-24              Delta(1600)+           0      0.00000000
+ Delta(1600)~-         780      -32214  -1.0      1.57000000      2.632848e-24         anti-Delta(1600)-           0      0.00000000
+ Delta(1600)++         781       32224   2.0      1.57000000      2.632848e-24             Delta(1600)++           0      0.00000000
+ Delta(1600)~--        782      -32224  -2.0      1.57000000      2.632848e-24        anti-Delta(1600)--           0      0.00000000
+ Delta(1620)-          396        1112  -1.0      1.61000000      5.063169e-24              Delta(1620)-           0      0.00000000
+ Delta(1620)~+         397       -1112   1.0      1.61000000      5.063169e-24         anti-Delta(1620)+           0      0.00000000
+ Delta(1620)0          402        1212   0.0      1.61000000      5.063169e-24              Delta(1620)0           0      0.00000000
+ Delta(1620)~0         403       -1212   0.0      1.61000000      5.063169e-24         anti-Delta(1620)0           0      0.00000000
+ Delta(1620)+          418        2122   1.0      1.61000000      5.063169e-24              Delta(1620)+           0      0.00000000
+ Delta(1620)~-         419       -2122  -1.0      1.61000000      5.063169e-24         anti-Delta(1620)-           0      0.00000000
+ Delta(1620)++         432        2222   2.0      1.61000000      5.063169e-24             Delta(1620)++           0      0.00000000
+ Delta(1620)~--        433       -2222  -2.0      1.61000000      5.063169e-24        anti-Delta(1620)--           0      0.00000000
+ Delta(1700)-          616       11114  -1.0      1.71000000      2.194041e-24              Delta(1700)-           0      0.00000000
+ Delta(1700)~+         617      -11114   1.0      1.71000000      2.194041e-24         anti-Delta(1700)+           0      0.00000000
+ Delta(1700)0          626       12114   0.0      1.71000000      2.194041e-24              Delta(1700)0           0      0.00000000
+ Delta(1700)~0         627      -12114   0.0      1.71000000      2.194041e-24         anti-Delta(1700)0           0      0.00000000
+ Delta(1700)+          638       12214   1.0      1.71000000      2.194041e-24              Delta(1700)+           0      0.00000000
+ Delta(1700)~-         639      -12214  -1.0      1.71000000      2.194041e-24         anti-Delta(1700)-           0      0.00000000
+ Delta(1700)++         646       12224   2.0      1.71000000      2.194041e-24             Delta(1700)++           0      0.00000000
+ Delta(1700)~--        647      -12224  -2.0      1.71000000      2.194041e-24        anti-Delta(1700)--           0      0.00000000
+ Delta(1900)-          614       11112  -1.0      1.86000000      2.632848e-24              Delta(1900)-           0      0.00000000
+ Delta(1900)~+         615      -11112   1.0      1.86000000      2.632848e-24         anti-Delta(1900)+           0      0.00000000
+ Delta(1900)0          620       11212   0.0      1.86000000      2.632848e-24              Delta(1900)0           0      0.00000000
+ Delta(1900)~0         621      -11212   0.0      1.86000000      2.632848e-24         anti-Delta(1900)0           0      0.00000000
+ Delta(1900)+          632       12122   1.0      1.86000000      2.632848e-24              Delta(1900)+           0      0.00000000
+ Delta(1900)~-         633      -12122  -1.0      1.86000000      2.632848e-24         anti-Delta(1900)-           0      0.00000000
+ Delta(1900)++         644       12222   2.0      1.86000000      2.632848e-24             Delta(1900)++           0      0.00000000
+ Delta(1900)~--        645      -12222  -2.0      1.86000000      2.632848e-24        anti-Delta(1900)--           0      0.00000000
+ Delta(1905)-          398        1116  -1.0      1.88000000      1.994582e-24              Delta(1905)-           0      0.00000000
+ Delta(1905)~+         399       -1116   1.0      1.88000000      1.994582e-24         anti-Delta(1905)+           0      0.00000000
+ Delta(1905)0          406        1216   0.0      1.88000000      1.994582e-24              Delta(1905)0           0      0.00000000
+ Delta(1905)~0         407       -1216   0.0      1.88000000      1.994582e-24         anti-Delta(1905)0           0      0.00000000
+ Delta(1905)+          422        2126   1.0      1.88000000      1.994582e-24              Delta(1905)+           0      0.00000000
+ Delta(1905)~-         423       -2126  -1.0      1.88000000      1.994582e-24         anti-Delta(1905)-           0      0.00000000
+ Delta(1905)++         434        2226   2.0      1.88000000      1.994582e-24             Delta(1905)++           0      0.00000000
+ Delta(1905)~--        435       -2226  -2.0      1.88000000      1.994582e-24        anti-Delta(1905)--           0      0.00000000
+ Delta(1910)-          697       21112  -1.0      1.90000000      2.350758e-24              Delta(1910)-           0      0.00000000
+ Delta(1910)~+         698      -21112   1.0      1.90000000      2.350758e-24         anti-Delta(1910)+           0      0.00000000
+ Delta(1910)0          701       21212   0.0      1.90000000      2.350758e-24              Delta(1910)0           0      0.00000000
+ Delta(1910)~0         702      -21212   0.0      1.90000000      2.350758e-24         anti-Delta(1910)0           0      0.00000000
+ Delta(1910)+          709       22122   1.0      1.90000000      2.350758e-24              Delta(1910)+           0      0.00000000
+ Delta(1910)~-         710      -22122  -1.0      1.90000000      2.350758e-24         anti-Delta(1910)-           0      0.00000000
+ Delta(1910)++         717       22222   2.0      1.90000000      2.350758e-24             Delta(1910)++           0      0.00000000
+ Delta(1910)~--        718      -22222  -2.0      1.90000000      2.350758e-24        anti-Delta(1910)--           0      0.00000000
+ Delta(1920)-          699       21114  -1.0      1.92000000      2.531585e-24              Delta(1920)-           0      0.00000000
+ Delta(1920)~+         700      -21114   1.0      1.92000000      2.531585e-24         anti-Delta(1920)+           0      0.00000000
+ Delta(1920)0          707       22114   0.0      1.92000000      2.531585e-24              Delta(1920)0           0      0.00000000
+ Delta(1920)~0         708      -22114   0.0      1.92000000      2.531585e-24         anti-Delta(1920)0           0      0.00000000
+ Delta(1920)+          715       22214   1.0      1.92000000      2.531585e-24              Delta(1920)+           0      0.00000000
+ Delta(1920)~-         716      -22214  -1.0      1.92000000      2.531585e-24         anti-Delta(1920)-           0      0.00000000
+ Delta(1920)++         719       22224   2.0      1.92000000      2.531585e-24             Delta(1920)++           0      0.00000000
+ Delta(1920)~--        720      -22224  -2.0      1.92000000      2.531585e-24        anti-Delta(1920)--           0      0.00000000
+ Delta(1930)-          618       11116  -1.0      1.95000000      2.194040e-24              Delta(1930)-           0      0.00000000
+ Delta(1930)~+         619      -11116   1.0      1.95000000      2.194040e-24         anti-Delta(1930)+           0      0.00000000
+ Delta(1930)0          622       11216   0.0      1.95000000      2.194040e-24              Delta(1930)0           0      0.00000000
+ Delta(1930)~0         623      -11216   0.0      1.95000000      2.194040e-24         anti-Delta(1930)0           0      0.00000000
+ Delta(1930)+          634       12126   1.0      1.95000000      2.194040e-24              Delta(1930)+           0      0.00000000
+ Delta(1930)~-         635      -12126  -1.0      1.95000000      2.194040e-24         anti-Delta(1930)-           0      0.00000000
+ Delta(1930)++         648       12226   2.0      1.95000000      2.194040e-24             Delta(1930)++           0      0.00000000
+ Delta(1930)~--        649      -12226  -2.0      1.95000000      2.194040e-24        anti-Delta(1930)--           0      0.00000000
+ Delta(1950)-          400        1118  -1.0      1.93000000      2.350758e-24              Delta(1950)-           0      0.00000000
+ Delta(1950)~+         401       -1118   1.0      1.93000000      2.350758e-24         anti-Delta(1950)+           0      0.00000000
+ Delta(1950)0          416        2118   0.0      1.93000000      2.350758e-24              Delta(1950)0           0      0.00000000
+ Delta(1950)~0         417       -2118   0.0      1.93000000      2.350758e-24         anti-Delta(1950)0           0      0.00000000
+ Delta(1950)+          430        2218   1.0      1.93000000      2.350758e-24              Delta(1950)+           0      0.00000000
+ Delta(1950)~-         431       -2218  -1.0      1.93000000      2.350758e-24         anti-Delta(1950)-           0      0.00000000
+ Delta(1950)++         436        2228   2.0      1.93000000      2.350758e-24             Delta(1950)++           0      0.00000000
+ Delta(1950)~--        437       -2228  -2.0      1.93000000      2.350758e-24        anti-Delta(1950)--           0      0.00000000
+ Lambda0                18        3122   0.0      1.11568300      2.632000e-10                   Lambda0        3122      0.00000000
+ Lambda~0               26       -3122   0.0      1.11568300      2.632000e-10              anti-Lambda0       -3122      0.00000000
+ Lambda(1405)0         656       13122   0.0      1.40510000      1.316424e-23             Lambda(1405)0           0      0.00000000
+ Lambda(1405)~0        657      -13122   0.0      1.40510000      1.316424e-23        anti-Lambda(1405)0           0      0.00000000
+ Lambda(1520)0         448        3124   0.0      1.51950000      4.219309e-23             Lambda(1520)0           0      0.00000000
+ Lambda(1520)~0        449       -3124   0.0      1.51950000      4.219309e-23        anti-Lambda(1520)0           0      0.00000000
+ Lambda(1600)0         725       23122   0.0      1.60000000      4.388081e-24             Lambda(1600)0           0      0.00000000
+ Lambda(1600)~0        726      -23122   0.0      1.60000000      4.388081e-24        anti-Lambda(1600)0           0      0.00000000
+ Lambda(1670)0         783       33122   0.0      1.67000000      1.880606e-23             Lambda(1670)0           0      0.00000000
+ Lambda(1670)~0        784      -33122   0.0      1.67000000      1.880606e-23        anti-Lambda(1670)0           0      0.00000000
+ Lambda(1690)0         658       13124   0.0      1.69000000      1.097020e-23             Lambda(1690)0           0      0.00000000
+ Lambda(1690)~0        659      -13124   0.0      1.69000000      1.097020e-23        anti-Lambda(1690)0           0      0.00000000
+ Lambda(1800)0         797       43122   0.0      1.80000000      2.194041e-24             Lambda(1800)0           0      0.00000000
+ Lambda(1800)~0        798      -43122   0.0      1.80000000      2.194041e-24        anti-Lambda(1800)0           0      0.00000000
+ Lambda(1810)0         803       53122   0.0      1.81000000      4.388081e-24             Lambda(1810)0           0      0.00000000
+ Lambda(1810)~0        804      -53122   0.0      1.81000000      4.388081e-24        anti-Lambda(1810)0           0      0.00000000
+ Lambda(1820)0         450        3126   0.0      1.82000000      8.227652e-24             Lambda(1820)0           0      0.00000000
+ Lambda(1820)~0        451       -3126   0.0      1.82000000      8.227652e-24        anti-Lambda(1820)0           0      0.00000000
+ Lambda(1830)0         660       13126   0.0      1.83000000      6.928549e-24             Lambda(1830)0           0      0.00000000
+ Lambda(1830)~0        661      -13126   0.0      1.83000000      6.928549e-24        anti-Lambda(1830)0           0      0.00000000
+ Lambda(1890)0         727       23124   0.0      1.89000000      6.582122e-24             Lambda(1890)0           0      0.00000000
+ Lambda(1890)~0        728      -23124   0.0      1.89000000      6.582122e-24        anti-Lambda(1890)0           0      0.00000000
+ Lambda(2100)0         452        3128   0.0      2.10000000      3.291061e-24             Lambda(2100)0           0      0.00000000
+ Lambda(2100)~0        453       -3128   0.0      2.10000000      3.291061e-24        anti-Lambda(2100)0           0      0.00000000
+ Lambda(2110)0         729       23126   0.0      2.11000000      3.291061e-24             Lambda(2110)0           0      0.00000000
+ Lambda(2110)~0        730      -23126   0.0      2.11000000      3.291061e-24        anti-Lambda(2110)0           0      0.00000000
+ Sigma-                 21        3112  -1.0      1.19744900      1.479128e-10                    Sigma-        3112      0.00000000
+ Sigma~+                29       -3112   1.0      1.19744900      1.479128e-10               anti-Sigma+       -3112      0.00000000
+ Sigma0                 20        3212   0.0      1.19264200      7.400000e-20                    Sigma0        3212      0.00000000
+ Sigma~0                28       -3212   0.0      1.19264200      7.400000e-20               anti-Sigma0       -3212      0.00000000
+ Sigma+                 19        3222   1.0      1.18937000      8.018175e-11                    Sigma+        3222      0.00000000
+ Sigma~-                27       -3222  -1.0      1.18937000      8.018175e-11               anti-Sigma-       -3222      0.00000000
+ Sigma*-               442        3114  -1.0      1.38720000      1.670589e-23                   Sigma*-        3114      0.00000000
+ Sigma*~+              443       -3114   1.0      1.38720000      1.670589e-23              anti-Sigma*+       -3114      0.00000000
+ Sigma*0               458        3214   0.0      1.38370000      1.828367e-23                   Sigma*0        3214      0.00000000
+ Sigma*~0              459       -3214   0.0      1.38370000      1.828367e-23              anti-Sigma*0       -3214      0.00000000
+ Sigma*+               464        3224   1.0      1.38280000      1.828367e-23                   Sigma*+        3224      0.00000000
+ Sigma*~-              465       -3224  -1.0      1.38280000      1.828367e-23              anti-Sigma*-       -3224      0.00000000
+ Sigma(1660)-          650       13112  -1.0      1.66000000      6.582122e-24              Sigma(1660)-           0      0.00000000
+ Sigma(1660)~+         651      -13112   1.0      1.66000000      6.582122e-24         anti-Sigma(1660)+           0      0.00000000
+ Sigma(1660)0          662       13212   0.0      1.66000000      6.582122e-24              Sigma(1660)0           0      0.00000000
+ Sigma(1660)~0         663      -13212   0.0      1.66000000      6.582122e-24         anti-Sigma(1660)0           0      0.00000000
+ Sigma(1660)+          668       13222   1.0      1.66000000      6.582122e-24              Sigma(1660)+           0      0.00000000
+ Sigma(1660)~-         669      -13222  -1.0      1.66000000      6.582122e-24         anti-Sigma(1660)-           0      0.00000000
+ Sigma(1670)-          652       13114  -1.0      1.67000000      1.097020e-23              Sigma(1670)-           0      0.00000000
+ Sigma(1670)~+         653      -13114   1.0      1.67000000      1.097020e-23         anti-Sigma(1670)+           0      0.00000000
+ Sigma(1670)0          664       13214   0.0      1.67000000      1.097020e-23              Sigma(1670)0           0      0.00000000
+ Sigma(1670)~0         665      -13214   0.0      1.67000000      1.097020e-23         anti-Sigma(1670)0           0      0.00000000
+ Sigma(1670)+          670       13224   1.0      1.67000000      1.097020e-23              Sigma(1670)+           0      0.00000000
+ Sigma(1670)~-         671      -13224  -1.0      1.67000000      1.097020e-23         anti-Sigma(1670)-           0      0.00000000
+ Sigma(1750)-          721       23112  -1.0      1.75000000      7.313469e-24              Sigma(1750)-           0      0.00000000
+ Sigma(1750)~+         722      -23112   1.0      1.75000000      7.313469e-24         anti-Sigma(1750)+           0      0.00000000
+ Sigma(1750)0          731       23212   0.0      1.75000000      7.313469e-24              Sigma(1750)0           0      0.00000000
+ Sigma(1750)~0         732      -23212   0.0      1.75000000      7.313469e-24         anti-Sigma(1750)0           0      0.00000000
+ Sigma(1750)+          735       23222   1.0      1.75000000      7.313469e-24              Sigma(1750)+           0      0.00000000
+ Sigma(1750)~-         736      -23222  -1.0      1.75000000      7.313469e-24         anti-Sigma(1750)-           0      0.00000000
+ Sigma(1775)-          444        3116  -1.0      1.77500000      5.485102e-24              Sigma(1775)-           0      0.00000000
+ Sigma(1775)~+         445       -3116   1.0      1.77500000      5.485102e-24         anti-Sigma(1775)+           0      0.00000000
+ Sigma(1775)0          460        3216   0.0      1.77500000      5.485102e-24              Sigma(1775)0           0      0.00000000
+ Sigma(1775)~0         461       -3216   0.0      1.77500000      5.485102e-24         anti-Sigma(1775)0           0      0.00000000
+ Sigma(1775)+          466        3226   1.0      1.77500000      5.485102e-24              Sigma(1775)+           0      0.00000000
+ Sigma(1775)~-         467       -3226  -1.0      1.77500000      5.485102e-24         anti-Sigma(1775)-           0      0.00000000
+ Sigma(1915)-          654       13116  -1.0      1.91500000      5.485102e-24              Sigma(1915)-           0      0.00000000
+ Sigma(1915)~+         655      -13116   1.0      1.91500000      5.485102e-24         anti-Sigma(1915)+           0      0.00000000
+ Sigma(1915)0          666       13216   0.0      1.91500000      5.485102e-24              Sigma(1915)0           0      0.00000000
+ Sigma(1915)~0         667      -13216   0.0      1.91500000      5.485102e-24         anti-Sigma(1915)0           0      0.00000000
+ Sigma(1915)+          672       13226   1.0      1.91500000      5.485102e-24              Sigma(1915)+           0      0.00000000
+ Sigma(1915)~-         673      -13226  -1.0      1.91500000      5.485102e-24         anti-Sigma(1915)-           0      0.00000000
+ Sigma(1940)-          723       23114  -1.0      1.94000000      2.991874e-24              Sigma(1940)-           0      0.00000000
+ Sigma(1940)~+         724      -23114   1.0      1.94000000      2.991874e-24         anti-Sigma(1940)+           0      0.00000000
+ Sigma(1940)0          733       23214   0.0      1.94000000      2.991874e-24              Sigma(1940)0           0      0.00000000
+ Sigma(1940)~0         734      -23214   0.0      1.94000000      2.991874e-24         anti-Sigma(1940)0           0      0.00000000
+ Sigma(1940)+          737       23224   1.0      1.94000000      2.991874e-24              Sigma(1940)+           0      0.00000000
+ Sigma(1940)~-         738      -23224  -1.0      1.94000000      2.991874e-24         anti-Sigma(1940)-           0      0.00000000
+ Sigma(2030)0          462        3218   0.0      2.03000000      3.656734e-24              Sigma(2030)0           0      0.00000000
+ Sigma(2030)~0         463       -3218   0.0      2.03000000      3.656734e-24         anti-Sigma(2030)0           0      0.00000000
+ Sigma(2030)+          468        3228   1.0      2.03000000      3.656734e-24              Sigma(2030)+           0      0.00000000
+ Sigma(2030)~-         469       -3228  -1.0      2.03000000      3.656734e-24         anti-Sigma(2030)-           0      0.00000000
+ Sigma(2030)-          446        3118  -1.0      2.03000000      3.656734e-24              Sigma(2030)-           0      0.00000000
+ Sigma(2030)~+         447       -3118   1.0      2.03000000      3.656734e-24         anti-Sigma(2030)+           0      0.00000000
+ Sigma(2250)0         1059      103212   0.0      2.25000000      6.580000e-24              Sigma(2250)0           0      0.00000000
+ Sigma(2250)~0        1060     -103212   0.0      2.25000000      6.580000e-24         anti-Sigma(2250)0           0      0.00000000
+ Sigma(2250)+         1061      103222   1.0      2.25000000      6.580000e-24              Sigma(2250)+           0      0.00000000
+ Sigma(2250)~-        1062     -103222  -1.0      2.25000000      6.580000e-24         anti-Sigma(2250)-           0      0.00000000
+ Sigma(2250)-         1063      103112  -1.0      2.25000000      6.580000e-24              Sigma(2250)-           0      0.00000000
+ Sigma(2250)~+        1064     -103112   1.0      2.25000000      6.580000e-24         anti-Sigma(2250)+           0      0.00000000
+ Xi-                    23        3312  -1.0      1.32171000      1.639000e-10                       Xi-        3312      0.00000000
+ Xi~+                   31       -3312   1.0      1.32171000      1.639000e-10                  anti-Xi+       -3312      0.00000000
+ Xi0                    22        3322   0.0      1.31486000      2.900000e-10                       Xi0        3322      0.00000000
+ Xi~0                   30       -3322   0.0      1.31486000      2.900000e-10                  anti-Xi0       -3322      0.00000000
+ Xi*-                  472        3314  -1.0      1.53500000      6.648608e-23                      Xi*-        3314      0.00000000
+ Xi*~+                 473       -3314   1.0      1.53500000      6.648608e-23                 anti-Xi*+       -3314      0.00000000
+ Xi*0                  474        3324   0.0      1.53180000      7.233101e-23                      Xi*0        3324      0.00000000
+ Xi*~0                 475       -3324   0.0      1.53180000      7.233101e-23                 anti-Xi*0       -3324      0.00000000
+ Xi(1690)-            1033      203312  -1.0      1.69000000      0.000000e+00                 Xi(1690)-           0      0.00000000
+ Xi(1690)~+           1034     -203312   1.0      1.69000000      0.000000e+00            anti-Xi(1690)+           0      0.00000000
+ Xi(1690)0            1035      203322   0.0      1.69000000      0.000000e+00                 Xi(1690)0           0      0.00000000
+ Xi(1690)~0           1036     -203322   0.0      1.69000000      0.000000e+00            anti-Xi(1690)0           0      0.00000000
+ Xi(1820)-             674       13314  -1.0      1.82300000      2.742551e-23                 Xi(1820)-           0      0.00000000
+ Xi(1820)~+            675      -13314   1.0      1.82300000      2.742551e-23            anti-Xi(1820)+           0      0.00000000
+ Xi(1820)0             678       13324   0.0      1.82300000      2.742551e-23                 Xi(1820)0           0      0.00000000
+ Xi(1820)~0            679      -13324   0.0      1.82300000      2.742551e-23            anti-Xi(1820)0           0      0.00000000
+ Xi(1950)-            1037      103316  -1.0      1.95000000      1.097020e-23                 Xi(1950)-           0      0.00000000
+ Xi(1950)~+           1038     -103316   1.0      1.95000000      1.097020e-23            anti-Xi(1950)+           0      0.00000000
+ Xi(1950)0            1039      103326   0.0      1.95000000      1.097020e-23                 Xi(1950)0           0      0.00000000
+ Xi(1950)~0           1040     -103326   0.0      1.95000000      1.097020e-23            anti-Xi(1950)0           0      0.00000000
+ Xi(2030)-            1041      203316  -1.0      2.02500000      3.291061e-23                 Xi(2030)-           0      0.00000000
+ Xi(2030)~+           1042     -203316   1.0      2.02500000      3.291061e-23            anti-Xi(2030)+           0      0.00000000
+ Xi(2030)0            1043      203326   0.0      2.02500000      3.291061e-23                 Xi(2030)0           0      0.00000000
+ Xi(2030)~0           1044     -203326   0.0      2.02500000      3.291061e-23            anti-Xi(2030)0           0      0.00000000
+ Omega-                 24        3334  -1.0      1.67245000      8.210000e-11                    Omega-        3334      0.00000000
+ Omega~+                32       -3334   1.0      1.67245000      8.210000e-11               anti-Omega+       -3334      0.00000000
+ Omega(2250)-         1045      203338  -1.0      2.25200000      1.196749e-23              Omega(2250)-           0      0.00000000
+ Omega(2250)~+        1046     -203338   1.0      2.25200000      1.196749e-23         anti-Omega(2250)+           0      0.00000000
+ Lambda_c+              62        4122   1.0      2.28646000      2.000000e-13                 Lambda_c+        4122      0.00000000
+ Lambda_c~-             63       -4122  -1.0      2.28646000      2.000000e-13            anti-Lambda_c-       -4122      0.00000000
+ Lambda_c(2595)+       682       14122   1.0      2.59225000      2.531585e-22           Lambda_c(2593)+           0      0.00000000
+ Lambda_c(2595)~-      683      -14122  -1.0      2.59225000      2.531585e-22      anti-Lambda_c(2593)-           0      0.00000000
+ Lambda_c(2625)+      1047      104124   1.0      2.62811000      0.000000e+00           Lambda_c(2625)+           0      0.00000000
+ Lambda_c(2625)~-     1048     -104124  -1.0      2.62811000      0.000000e+00      anti-Lambda_c(2625)-           0      0.00000000
+ Lambda_c(2880)+      1049      204126   1.0      2.88163000      1.175379e-22           Lambda_c(2880)+           0      0.00000000
+ Lambda_c(2880)~-     1050     -204126  -1.0      2.88163000      1.175379e-22      anti-Lambda_c(2880)-           0      0.00000000
+ Sigma_c0               81        4112   0.0      2.45375000      3.596787e-22                  Sigma_c0        4112      0.00000000
+ Sigma_c~0              82       -4112   0.0      2.45375000      3.596787e-22             anti-Sigma_c0       -4112      0.00000000
+ Sigma_c+               83        4212   1.0      2.45290000      3.999999e-22                  Sigma_c+        4212      0.00000000
+ Sigma_c~-              84       -4212  -1.0      2.45290000      3.999999e-22             anti-Sigma_c-       -4212      0.00000000
+ Sigma_c++              85        4222   2.0      2.45397000      3.482603e-22                 Sigma_c++        4222      0.00000000
+ Sigma_c~--             86       -4222  -2.0      2.45397000      3.482603e-22            anti-Sigma_c--       -4222      0.00000000
+ Sigma_c*0             480        4114   0.0      2.51848000      4.539394e-23                 Sigma_c*0        4114      0.00000000
+ Sigma_c*~0            481       -4114   0.0      2.51848000      4.539394e-23            anti-Sigma_c*0       -4114      0.00000000
+ Sigma_c*+             486        4214   1.0      2.51750000      3.291061e-22                 Sigma_c*+        4214      0.00000000
+ Sigma_c*~-            487       -4214  -1.0      2.51750000      3.291061e-22            anti-Sigma_c*-       -4214      0.00000000
+ Sigma_c*++            488        4224   2.0      2.51841000      4.453396e-23                Sigma_c*++        4224      0.00000000
+ Sigma_c*~--           489       -4224  -2.0      2.51841000      4.453396e-23           anti-Sigma_c*--       -4224      0.00000000
+ Xi_c0                 106        4132   0.0      2.47091000      1.530726e-13                     Xi_c0        4132      0.00000000
+ Xi_c~0                107       -4132   0.0      2.47091000      1.530726e-13                anti-Xi_c0       -4132      0.00000000
+ Xi_c+                 108        4232   1.0      2.46793000      4.420000e-13                     Xi_c+        4232      0.00000000
+ Xi_c~-                109       -4232  -1.0      2.46793000      4.420000e-13                anti-Xi_c-       -4232      0.00000000
+ Xi'_c0                100        4312   0.0      2.57920000      0.000000e+00                    Xi'_c0        4312      0.00000000
+ Xi'_c~0               101       -4312   0.0      2.57920000      0.000000e+00               anti-Xi'_c0       -4312      0.00000000
+ Xi'_c+                102        4322   1.0      2.57840000      0.000000e+00                    Xi'_c+        4322      0.00000000
+ Xi'_c~-               103       -4322  -1.0      2.57840000      0.000000e+00               anti-Xi'_c-       -4322      0.00000000
+ Xi_c*0                494        4314   0.0      2.64638000      2.800902e-22                    Xi_c*0        4314      0.00000000
+ Xi_c*~0               495       -4314   0.0      2.64638000      2.800902e-22               anti-Xi_c*0       -4314      0.00000000
+ Xi_c*+                496        4324   1.0      2.64557000      3.075757e-22                    Xi_c*+        4324      0.00000000
+ Xi_c*~-               497       -4324  -1.0      2.64557000      3.075757e-22               anti-Xi_c*-       -4324      0.00000000
+ Xi_c(2790)+          1051      104324   1.0      2.79240000      7.395640e-23               Xi_c(2790)+           0      0.00000000
+ Xi_c(2790)~-         1052     -104324  -1.0      2.79240000      7.395640e-23          anti-Xi_c(2790)-           0      0.00000000
+ Xi_c(2790)0          1053      104314   0.0      2.79410000      6.582120e-23               Xi_c(2790)0           0      0.00000000
+ Xi_c(2790)~0         1054     -104314   0.0      2.79410000      6.582120e-23          anti-Xi_c(2790)0           0      0.00000000
+ Xi_c(2815)+          1055      104322   1.0      2.81673000      2.708691e-22               Xi_c(2815)+           0      0.00000000
+ Xi_c(2815)~-         1056     -104322  -1.0      2.81673000      2.708691e-22          anti-Xi_c(2815)-           0      0.00000000
+ Xi_c(2815)0          1057      104312   0.0      2.82026000      2.591386e-22               Xi_c(2815)0           0      0.00000000
+ Xi_c(2815)~0         1058     -104312   0.0      2.82026000      2.591386e-22          anti-Xi_c(2815)0           0      0.00000000
+ Omega_c0              104        4332   0.0      2.69520000      2.680000e-13                  Omega_c0        4332      0.00000000
+ Omega_c~0             105       -4332   0.0      2.69520000      2.680000e-13             anti-Omega_c0       -4332      0.00000000
+ Omega_c*0             498        4334   0.0      2.76590000      0.000000e+00                 Omega_c*0        4334      0.00000000
+ Omega_c*~0            499       -4334   0.0      2.76590000      0.000000e+00            anti-Omega_c*0       -4334      0.00000000
+ Xi_cc+                502        4412   1.0      3.62140000      0.800000e-13                    Xi_cc+        4412      0.00000000
+ Xi_cc~-               503       -4412  -1.0      3.62140000      0.800000e-13               anti-Xi_cc-       -4412      0.00000000
+ Xi*_cc+               504        4414   1.0      3.65648000      0.000000e+00                   Xi_cc*+        4414      0.00000000
+ Xi*_cc~-              505       -4414  -1.0      3.65648000      0.000000e+00              anti-Xi_cc*-       -4414      0.00000000
+ Xi_cc++               506        4422   2.0      3.62140000      2.560000e-13                   Xi_cc++        4422      0.00000000
+ Xi_cc~--              507       -4422  -2.0      3.62140000      2.560000e-13              anti-Xi_cc--       -4422      0.00000000
+ Xi*_cc++              508        4424   2.0      3.65648000      0.000000e+00                  Xi_cc*++        4424      0.00000000
+ Xi*_cc~--             509       -4424  -2.0      3.65648000      0.000000e+00             anti-Xi_cc*--       -4424      0.00000000
+ Omega_cc+             510        4432   1.0      3.73800000      1.600000e-13                 Omega_cc+        4432      0.00000000
+ Omega_cc~-            511       -4432  -1.0      3.73800000      1.600000e-13            anti-Omega_cc-       -4432      0.00000000
+ Omega*_cc+            512        4434   1.0      3.82466000      0.000000e+00                Omega_cc*+        4434      0.00000000
+ Omega*_cc~-           513       -4434  -1.0      3.82466000      0.000000e+00           anti-Omega_cc*-       -4434      0.00000000
+ Omega*_ccc++          514        4444   2.0      4.91594000      0.000000e+00              Omega*_ccc++        4444      0.00000000
+ Omega*_ccc~--         515       -4444  -2.0      4.91594000      0.000000e+00         anti-Omega*_ccc--       -4444      0.00000000
+ Lambda_b0              79        5122   0.0      5.61960000      1.470865e-12                 Lambda_b0        5122      0.00000000
+ Lambda_b~0             80       -5122   0.0      5.61960000      1.470865e-12            anti-Lambda_b0       -5122      0.00000000
+ Lambda_b(5912)0      1065       15122   0.0      5.91220000      1.316000e-21           Lambda_b(5912)0       15122      0.00000000
+ Lambda_b(5912)~0     1066      -15122   0.0      5.91220000      1.316000e-21      anti-Lambda_b(5912)0      -15122      0.00000000
+ Lambda_b(5920)0      1067        5124   0.0      5.91992000      1.316000e-21           Lambda_b(5920)0        5124      0.00000000
+ Lambda_b(5920)~0     1068       -5124   0.0      5.91992000      1.316000e-21      anti-Lambda_b(5920)0       -5124      0.00000000
+ Sigma_b-              114        5112  -1.0      5.81564000      1.343290e-22                  Sigma_b-        5112      0.00000000
+ Sigma_b~+             115       -5112   1.0      5.81564000      1.343290e-22             anti-Sigma_b+       -5112      0.00000000
+ Sigma_b0              112        5212   0.0      5.80780000      1.000000e-19                  Sigma_b0        5212      0.00000000
+ Sigma_b~0             113       -5212   0.0      5.80780000      1.000000e-19             anti-Sigma_b0       -5212      0.00000000
+ Sigma_b+              110        5222   1.0      5.81056000      1.316424e-22                  Sigma_b+        5222      0.00000000
+ Sigma_b~-             111       -5222  -1.0      5.81056000      1.316424e-22             anti-Sigma_b-       -5222      0.00000000
+ Sigma_b*-             520        5114  -1.0      5.83474000      8.776160e-23                 Sigma_b*-        5114      0.00000000
+ Sigma_b*~+            521       -5114   1.0      5.83474000      8.776160e-23            anti-Sigma_b*+       -5114      0.00000000
+ Sigma_b*0             528        5214   0.0      5.82900000      0.000000e+00                 Sigma_b*0        5214      0.00000000
+ Sigma_b*~0            529       -5214   0.0      5.82900000      0.000000e+00            anti-Sigma_b*0       -5214      0.00000000
+ Sigma_b*+             530        5224   1.0      5.83032000      7.002255e-23                 Sigma_b*+        5224      0.00000000
+ Sigma_b*~-            531       -5224  -1.0      5.83032000      7.002255e-23            anti-Sigma_b*-       -5224      0.00000000
+ Xi_b-                 122        5132  -1.0      5.79700000      1.570912e-12                     Xi_b-        5132      0.00000000
+ Xi_b~+                123       -5132   1.0      5.79700000      1.570912e-12                anti-Xi_b+       -5132      0.00000000
+ Xi_b0                 124        5232   0.0      5.79190000      1.490000e-12                     Xi_b0        5232      0.00000000
+ Xi_b~0                125       -5232   0.0      5.79190000      1.490000e-12                anti-Xi_b0       -5232      0.00000000
+ Xi'_b-                116        5312  -1.0      5.96000000      1.000000e-19                    Xi'_b-        5312      0.00000000
+ Xi'_b~+               117       -5312   1.0      5.96000000      1.000000e-19               anti-Xi'_b+       -5312      0.00000000
+ Xi'_b0                118        5322   0.0      5.96000000      1.000000e-19                    Xi'_b0        5322      0.00000000
+ Xi'_b~0               119       -5322   0.0      5.96000000      1.000000e-19               anti-Xi'_b0       -5322      0.00000000
+ Xi_b*-                538        5314  -1.0      5.97000000      0.000000e+00                    Xi_b*-        5314      0.00000000
+ Xi_b*~+               539       -5314   1.0      5.97000000      0.000000e+00               anti-Xi_b*+       -5314      0.00000000
+ Xi_b*0                540        5324   0.0      5.97000000      0.000000e+00                    Xi_b*0        5324      0.00000000
+ Xi_b*~0               541       -5324   0.0      5.97000000      0.000000e+00               anti-Xi_b*0       -5324      0.00000000
+ Omega_b*-             542        5334  -1.0      6.13000000      0.000000e+00                 Omega_b*-        5334      0.00000000
+ Omega_b*~+            543       -5334   1.0      6.13000000      0.000000e+00            anti-Omega_b*+       -5334      0.00000000
+ Omega_b-              120        5332  -1.0      6.04610000      1.645530e-12                  Omega_b-        5332      0.00000000
+ Omega_b~+             121       -5332   1.0      6.04610000      1.645530e-12             anti-Omega_b+       -5332      0.00000000
+ Xi_bc0                522        5142   0.0      6.90000000      0.500000e-12                    Xi_bc0        5142      0.00000000
+ Xi_bc~0               523       -5142   0.0      6.90000000      0.500000e-12               anti-Xi_bc0       -5142      0.00000000
+ Xi_bc+                532        5242   1.0      6.90000000      0.500000e-12                    Xi_bc+        5242      0.00000000
+ Xi_bc~-               533       -5242  -1.0      6.90000000      0.500000e-12               anti-Xi_bc-       -5242      0.00000000
+ Omega_bc0             544        5342   0.0      7.19099000      0.500000e-12                 Omega_bc0        5342      0.00000000
+ Omega_bc~0            545       -5342   0.0      7.19099000      0.500000e-12            anti-Omega_bc0       -5342      0.00000000
+ Xi'_bc0               550        5412   0.0      7.03724000      0.000000e+00                   Xi'_bc0        5412      0.00000000
+ Xi'_bc~0              551       -5412   0.0      7.03724000      0.000000e+00              anti-Xi'_bc0       -5412      0.00000000
+ Xi*_bc0               552        5414   0.0      7.04850000      0.000000e+00                   Xi*_bc0        5414      0.00000000
+ Xi*_bc~0              553       -5414   0.0      7.04850000      0.000000e+00              anti-Xi*_bc0       -5414      0.00000000
+ Xi'_bc+               554        5422   1.0      7.03724000      0.000000e+00                   Xi'_bc+        5422      0.00000000
+ Xi'_bc~-              555       -5422  -1.0      7.03724000      0.000000e+00              anti-Xi'_bc-       -5422      0.00000000
+ Xi*_bc+               556        5424   1.0      7.04850000      0.000000e+00                   Xi*_bc+        5424      0.00000000
+ Xi*_bc~-              557       -5424  -1.0      7.04850000      0.000000e+00              anti-Xi*_bc+       -5424      0.00000000
+ Omega'_bc0            558        5432   0.0      7.21101000      0.000000e+00                Omega'_bc0        5432      0.00000000
+ Omega'_bc~0           559       -5432   0.0      7.21101000      0.000000e+00           anti-Omega'_bc0       -5432      0.00000000
+ Omega*_bc0            560        5434   0.0      7.21900000      0.000000e+00                Omega*_bc0        5434      0.00000000
+ Omega*_bc~0           561       -5434   0.0      7.21900000      0.000000e+00           anti-Omega*_bc0       -5434      0.00000000
+ Omega_bcc+            562        5442   1.0      8.30945000      1.290893e-12                Omega_bcc+        5442      0.00000000
+ Omega_bcc~-           563       -5442  -1.0      8.30945000      1.290893e-12           anti-Omega_bcc-       -5442      0.00000000
+ Omega*_bcc+           564        5444   1.0      8.31325000      0.000000e+00               Omega*_bcc+        5444      0.00000000
+ Omega*_bcc~-          565       -5444  -1.0      8.31325000      0.000000e+00          anti-Omega*_bcc-       -5444      0.00000000
+ Xi_bb-                568        5512  -1.0     10.42272000      1.290893e-12                    Xi_bb-        5512      0.00000000
+ Xi_bb~+               569       -5512   1.0     10.42272000      1.290893e-12               anti-Xi_bb+       -5512      0.00000000
+ Xi*_bb-               570        5514  -1.0     10.44144000      0.000000e+00                   Xi*_bb-        5514      0.00000000
+ Xi*_bb~+              571       -5514   1.0     10.44144000      0.000000e+00              anti-Xi*_bb+       -5514      0.00000000
+ Xi_bb0                572        5522   0.0     10.42272000      1.290893e-12                    Xi_bb0        5522      0.00000000
+ Xi_bb~0               573       -5522   0.0     10.42272000      1.290893e-12               anti-Xi_bb0       -5522      0.00000000
+ Xi*_bb0               574        5524   0.0     10.44144000      0.000000e+00                   Xi*_bb0        5524      0.00000000
+ Xi*_bb~0              575       -5524   0.0     10.44144000      0.000000e+00              anti-Xi*_bb0       -5524      0.00000000
+ Omega_bb-             576        5532  -1.0     10.60209000      1.290893e-12                 Omega_bb-        5532      0.00000000
+ Omega_bb~+            577       -5532   1.0     10.60209000      1.290893e-12            anti-Omega_bb+       -5532      0.00000000
+ Omega*_bb-            578        5534  -1.0     10.61426000      0.000000e+00                Omega*_bb-        5534      0.00000000
+ Omega*_bb~+           579       -5534   1.0     10.61426000      0.000000e+00           anti-Omega*_bb+       -5534      0.00000000
+ Omega_bbc0            580        5542   0.0     11.70767000      1.290893e-12                Omega_bbc0        5542      0.00000000
+ Omega_bbc~0           581       -5542   0.0     11.70767000      1.290893e-12           anti-Omega_bbc0       -5542      0.00000000
+ Omega*_bbc0           582        5544   0.0     11.71147000      0.000000e+00               Omega*_bbc0        5544      0.00000000
+ Omega*_bbc~0          583       -5544   0.0     11.71147000      0.000000e+00          anti-Omega*_bbc0       -5544      0.00000000
+ Omega*_bbb-           584        5554  -1.0     15.11061000      0.000000e+00               Omega*_bbb-        5554      0.00000000
+ Omega*_bbb~+          585       -5554   1.0     15.11061000      0.000000e+00          anti-Omega*_bbb+       -5554      0.00000000
+ deuteron               45  1000010020   1.0      1.87561300      1.000000e+15                  deuteron           0      0.00000000
+ triton                 46  1000010030   1.0      2.80925000      1.000000e+15                   tritium           0      0.00000000
+ alpha                  47  1000020040   2.0      3.72741700      1.000000e+15                     alpha           0      0.00000000
+ geantino               48   480000000   0.0      0.00000000      1.000000e+15                  geantino           0      0.00000000
+ opticalphoton          50       20022   0.0      0.00000000      1.000000e+16                  Cerenkov           0      0.00000000
+ H_10                   87          25   0.0    125.10000000      9.400000e-26                    Higgs0          25      0.00000000
+ H_20                   88          35   0.0    310.00000000      9.400000e-26                   Higgs'0          35      0.00000000
+ H_30                   89          36   0.0    310.00000000      9.400000e-26                        A0          36      0.00000000
+ H+                     90          37   1.0    310.00000000      9.400000e-26                    Higgs+          37      0.00000000
+ H-                     91         -37  -1.0    310.00000000      9.400000e-26                    Higgs-         -37      0.00000000
+ d                     303           1  -0.3      0.00990000      0.000000e+00                         d           1      0.00000000
+ anti-d                304          -1   0.3      0.00990000      0.000000e+00                    anti-d          -1      0.00000000
+ u                     305           2   0.7      0.00560000      0.000000e+00                         u           2      0.00000000
+ anti-u                306          -2  -0.7      0.00560000      0.000000e+00                    anti-u          -2      0.00000000
+ s                     307           3  -0.3      0.19900000      0.000000e+00                         s           3      0.00000000
+ anti-s                308          -3   0.3      0.19900000      0.000000e+00                    anti-s          -3      0.00000000
+ c                     309           4   0.7      1.35000000      0.000000e+00                         c           4      0.00000000
+ anti-c                310          -4  -0.7      1.35000000      0.000000e+00                    anti-c          -4      0.00000000
+ b                     311           5  -0.3      5.00000000      0.000000e+00                         b           5      0.00000000
+ anti-b                312          -5   0.3      5.00000000      0.000000e+00                    anti-b          -5      0.00000000
+ t                     313           6   0.7    173.50000000      3.291061e-25                         t           6      0.00000000
+ anti-t                314          -6  -0.7    173.50000000      3.291061e-25                    anti-t          -6      0.00000000
+ b'                    315           7  -0.3    400.00000000      0.000000e+00                        b'           7      0.00000000
+ anti-b'               316          -7   0.3    400.00000000      0.000000e+00                   anti-b'          -7      0.00000000
+ t'                    317           8   0.7    500.00000000      0.000000e+00                        t'           8      0.00000000
+ anti-t'               318          -8  -0.7    500.00000000      0.000000e+00                   anti-t'          -8      0.00000000
+ nu_tau                319          16   0.0      0.00000000      1.000000e+16                    nu_tau          16      0.00000000
+ nu_tau~               320         -16   0.0      0.00000000      1.000000e+16               anti-nu_tau         -16      0.00000000
+ L-                    321          17  -1.0    400.00000000      0.000000e+00                        L-          17      0.00000000
+ L+                    322         -17   1.0    400.00000000      0.000000e+00                        L+         -17      0.00000000
+ nu_L                  323          18   0.0      0.00000000      0.000000e+00                      nu_L          18      0.00000000
+ anti-nu_L             324         -18   0.0      0.00000000      0.000000e+00                 anti-nu_L         -18      0.00000000
+ g                     325          21   0.0      0.00000000      1.000000e+16                         g          21      0.00000000
+ Z'0                   326          32   0.0    500.00000000      0.000000e+00                       Z'0          32      0.00000000
+ Z''0                  327          33   0.0    900.00000000      0.000000e+00                      Z''0          33      0.00000000
+ W'+                   328          34   1.0    500.00000000      0.000000e+00                       W'+          34      0.00000000
+ W'-                   329         -34  -1.0    500.00000000      0.000000e+00                       W'-         -34      0.00000000
+ Graviton              330          39   0.0      0.00000000      0.000000e+00                   unknown          39      0.00000000
+ R0                    331          41   0.0   5000.00000000      0.000000e+00                        R0          41      0.00000000
+ anti-R0               332         -41   0.0   5000.00000000      0.000000e+00                   anti-R0         -41      0.00000000
+ LQ_ue                 333          42  -0.3    200.00000000      0.000000e+00                   unknown          42      0.00000000
+ LQ_uebar              334         -42   0.3    200.00000000      0.000000e+00                   unknown         -42      0.00000000
+ Xu0                   335          43   0.0      1.00000000      0.000000e+00                       Xu0          43      0.00000000
+ Xu+                   336          44   1.0      1.00000000      0.000000e+00                       Xu+          44      0.00000000
+ Xu-                   337         -44  -1.0      1.00000000      0.000000e+00                       Xu-         -44      0.00000000
+ specflav              338          81   0.0      0.00000000      0.000000e+00                  specflav          81      0.00000000
+ rndmflav              339          82   0.0      0.00000000      0.000000e+00                  rndmflav          82      0.00000000
+ anti-rndmflav         340         -82   0.0      0.00000000      0.000000e+00             anti-rndmflav         -82      0.00000000
+ phasespa              341          83   0.0      1.00000000      0.000000e+00                  phasespa          83      0.00000000
+ c-hadron              342          84   0.7      2.00000000      3.335641e-13                  c-hadron          84      0.00000000
+ anti-c-hadron         343         -84  -0.7      2.00000000      3.335641e-13             anti-c-hadron         -84      0.00000000
+ b-hadron              344          85  -0.3      5.00000000      1.290893e-12                  b-hadron          85      0.00000000
+ anti-b-hadron         345         -85   0.3      5.00000000      1.290893e-12             anti-b-hadron         -85      0.00000000
+ t-hadron              346          86   0.7    175.00000000      0.000000e+00                  t-hadron           0      0.00000000
+ anti-t-hadron         347         -86  -0.7    175.00000000      0.000000e+00             anti-t-hadron           0      0.00000000
+ b'-hadron             348          87  -0.3    400.00000000      0.000000e+00                 b'-hadron           0      0.00000000
+ anti-b'-hadron        349         -87   0.3    400.00000000      0.000000e+00            anti-b'-hadron           0      0.00000000
+ junction              350          88   0.0      0.00000000      0.000000e+00                  junction          88      0.00000000
+ system                351          90   0.0      0.00000000      0.000000e+00                    system          90      0.00000000
+ cluster               352          91   0.0      0.00000000      0.000000e+00                   cluster          91      0.00000000
+ string                353          92   0.0      0.00000000      0.000000e+00                    string          92      0.00000000
+ indep                 354          93   0.0      0.00000000      0.000000e+00                     indep          93      0.00000000
+ CMshower              355          94   0.0      0.00000000      0.000000e+00                  CMshower          94      0.00000000
+ SPHEaxis              356          95   0.0      0.00000000      0.000000e+00                  SPHEaxis          95      0.00000000
+ THRUaxis              357          96   0.0      0.00000000      0.000000e+00                  THRUaxis          96      0.00000000
+ CLUSjet               358          97   0.0      0.00000000      0.000000e+00                   CLUSjet          97      0.00000000
+ CELLjet               359          98   0.0      0.00000000      0.000000e+00                   CELLjet          98      0.00000000
+ table                 360          99   0.0      0.00000000      0.000000e+00                     table          99      0.00000000
+ deuteron~             390 -1000010020  -1.0      1.87561300      0.000000e+00             anti-deuteron           0      0.00000000
+ triton~               392 -1000010030  -1.0      2.80925000      0.000000e+00              anti-tritium           0      0.00000000
+ alpha~                393 -1000020040  -2.0      3.72741700      0.000000e+00                anti-alpha           0      0.00000000
+ dd_1                  394        1103  -0.7      0.00000000      0.000000e+00                      dd_1        1103      0.00000000
+ anti-dd_1             395       -1103   0.7      0.00000000      0.000000e+00                 anti-dd_1       -1103      0.00000000
+ ud_0                  410        2101   0.3      0.00000000      0.000000e+00                      ud_0        2101      0.00000000
+ anti-ud_0             411       -2101  -0.3      0.00000000      0.000000e+00                 anti-ud_0       -2101      0.00000000
+ ud_1                  412        2103   0.3      0.00000000      0.000000e+00                      ud_1        2103      0.00000000
+ anti-ud_1             413       -2103  -0.3      0.00000000      0.000000e+00                 anti-ud_1       -2103      0.00000000
+ uu_1                  426        2203   1.3      0.00000000      0.000000e+00                      uu_1        2203      0.00000000
+ anti-uu_1             427       -2203  -1.3      0.00000000      0.000000e+00                 anti-uu_1       -2203      0.00000000
+ sd_0                  438        3101  -0.7      0.00000000      0.000000e+00                      sd_0        3101      0.00000000
+ anti-sd_0             439       -3101   0.7      0.00000000      0.000000e+00                 anti-sd_0       -3101      0.00000000
+ sd_1                  440        3103  -0.7      0.00000000      0.000000e+00                      sd_1        3103      0.00000000
+ anti-sd_1             441       -3103   0.7      0.00000000      0.000000e+00                 anti-sd_1       -3103      0.00000000
+ su_0                  454        3201   0.3      0.00000000      0.000000e+00                      su_0        3201      0.00000000
+ anti-su_0             455       -3201  -0.3      0.00000000      0.000000e+00                 anti-su_0       -3201      0.00000000
+ su_1                  456        3203   0.3      0.00000000      0.000000e+00                      su_1        3203      0.00000000
+ anti-su_1             457       -3203  -0.3      0.00000000      0.000000e+00                 anti-su_1       -3203      0.00000000
+ ss_1                  470        3303  -0.7      0.00000000      0.000000e+00                      ss_1        3303      0.00000000
+ anti-ss_1             471       -3303   0.7      0.00000000      0.000000e+00                 anti-ss_1       -3303      0.00000000
+ cd_0                  476        4101   0.3      0.00000000      0.000000e+00                      cd_0        4101      0.00000000
+ anti-cd_0             477       -4101  -0.3      0.00000000      0.000000e+00                 anti-cd_0       -4101      0.00000000
+ cd_1                  478        4103   0.3      0.00000000      0.000000e+00                      cd_1        4103      0.00000000
+ anti-cd_1             479       -4103  -0.3      0.00000000      0.000000e+00                 anti-cd_1       -4103      0.00000000
+ cu_0                  482        4201   1.3      0.00000000      0.000000e+00                      cu_0        4201      0.00000000
+ anti-cu_0             483       -4201  -1.3      0.00000000      0.000000e+00                 anti-cu_0       -4201      0.00000000
+ cu_1                  484        4203   1.3      0.00000000      0.000000e+00                      cu_1        4203      0.00000000
+ anti-cu_1             485       -4203  -1.3      0.00000000      0.000000e+00                 anti-cu_1       -4203      0.00000000
+ cs_0                  490        4301   0.3      0.00000000      0.000000e+00                      cs_0        4301      0.00000000
+ anti-cs_0             491       -4301  -0.3      0.00000000      0.000000e+00                 anti-cs_0       -4301      0.00000000
+ cs_1                  492        4303   0.3      0.00000000      0.000000e+00                      cs_1        4303      0.00000000
+ anti-cs_1             493       -4303  -0.3      0.00000000      0.000000e+00                 anti-cs_1       -4303      0.00000000
+ cc_1                  500        4403   1.3      0.00000000      0.000000e+00                      cc_1        4403      0.00000000
+ anti-cc_1             501       -4403  -1.3      0.00000000      0.000000e+00                 anti-cc_1       -4403      0.00000000
+ bd_0                  516        5101  -0.7      0.00000000      0.000000e+00                      bd_0        5101      0.00000000
+ anti-bd_0             517       -5101   0.7      0.00000000      0.000000e+00                 anti-bd_0       -5101      0.00000000
+ bd_1                  518        5103  -0.7      0.00000000      0.000000e+00                      bd_1        5103      0.00000000
+ anti-bd_1             519       -5103   0.7      0.00000000      0.000000e+00                 anti-bd_1       -5103      0.00000000
+ bu_0                  524        5201   0.3      0.00000000      0.000000e+00                      bu_0        5201      0.00000000
+ anti-bu_0             525       -5201  -0.3      0.00000000      0.000000e+00                 anti-bu_0       -5201      0.00000000
+ bu_1                  526        5203   0.3      0.00000000      0.000000e+00                      bu_1        5203      0.00000000
+ anti-bu_1             527       -5203  -0.3      0.00000000      0.000000e+00                 anti-bu_1       -5203      0.00000000
+ bs_0                  534        5301  -0.7      0.00000000      0.000000e+00                      bs_0        5301      0.00000000
+ anti-bs_0             535       -5301   0.7      0.00000000      0.000000e+00                 anti-bs_0       -5301      0.00000000
+ bs_1                  536        5303  -0.7      0.00000000      0.000000e+00                      bs_1        5303      0.00000000
+ anti-bs_1             537       -5303   0.7      0.00000000      0.000000e+00                 anti-bs_1       -5303      0.00000000
+ bc_0                  546        5401   0.3      0.00000000      0.000000e+00                      bc_0        5401      0.00000000
+ anti-bc_0             547       -5401  -0.3      0.00000000      0.000000e+00                 anti-bc_0       -5401      0.00000000
+ bc_1                  548        5403   0.3      0.00000000      0.000000e+00                      bc_1        5403      0.00000000
+ anti-bc_1             549       -5403  -0.3      0.00000000      0.000000e+00                 anti-bc_1       -5403      0.00000000
+ bb_1                  566        5503  -0.7      0.00000000      0.000000e+00                      bb_1        5503      0.00000000
+ anti-bb_1             567       -5503   0.7      0.00000000      0.000000e+00                 anti-bb_1       -5503      0.00000000
+ vpho                  586       10022   0.0      0.00000000      0.000000e+00                      vpho           0      0.00000000
+ Xsd                   751       30343   0.0      1.60000000      0.000000e+00                       Xsd       30343      0.00000000
+ anti-Xsd              752      -30343   0.0      1.60000000      0.000000e+00                  anti-Xsd      -30343      0.00000000
+ Xsu                   753       30353   1.0      1.60000000      0.000000e+00                       Xsu       30353      0.00000000
+ anti-Xsu              754      -30353  -1.0      1.60000000      0.000000e+00                  anti-Xsu      -30353      0.00000000
+ Xss                   755       30363   0.0      1.80000000      0.000000e+00                       Xss       30363      0.00000000
+ anti-Xss              756      -30363   0.0      1.80000000      0.000000e+00                  anti-Xss      -30363      0.00000000
+ ~d_L                  859     1000001  -0.3    500.00000000      0.000000e+00                   unknown     1000001      0.00000000
+ ~d_Lbar               860    -1000001   0.3    500.00000000      0.000000e+00                   unknown    -1000001      0.00000000
+ ~u_L                  861     1000002   0.7    500.00000000      0.000000e+00                   unknown     1000002      0.00000000
+ ~u_Lbar               862    -1000002  -0.7    500.00000000      0.000000e+00                   unknown    -1000002      0.00000000
+ ~s_L                  863     1000003  -0.3    500.00000000      0.000000e+00                   unknown     1000003      0.00000000
+ ~s_Lbar               864    -1000003   0.3    500.00000000      0.000000e+00                   unknown    -1000003      0.00000000
+ ~c_L                  865     1000004   0.7    500.00000000      0.000000e+00                   unknown     1000004      0.00000000
+ ~c_Lbar               866    -1000004  -0.7    500.00000000      0.000000e+00                   unknown    -1000004      0.00000000
+ ~b_1                  867     1000005  -0.3    500.00000000      0.000000e+00                   unknown     1000005      0.00000000
+ ~b_1bar               868    -1000005   0.3    500.00000000      0.000000e+00                   unknown    -1000005      0.00000000
+ ~t_1                  869     1000006   0.7    500.00000000      0.000000e+00                   unknown     1000006      0.00000000
+ ~t_1bar               870    -1000006  -0.7    500.00000000      0.000000e+00                   unknown    -1000006      0.00000000
+ ~e_L-                 871     1000011  -1.0    500.00000000      0.000000e+00                   unknown     1000011      0.00000000
+ ~e_L+                 872    -1000011   1.0    500.00000000      0.000000e+00                   unknown    -1000011      0.00000000
+ ~nu_eL                873     1000012   0.0    500.00000000      0.000000e+00                   unknown     1000012      0.00000000
+ ~nu_eLbar             874    -1000012   0.0    500.00000000      0.000000e+00                   unknown    -1000012      0.00000000
+ ~mu_L-                875     1000013  -1.0    500.00000000      0.000000e+00                   unknown     1000013      0.00000000
+ ~mu_L+                876    -1000013   1.0    500.00000000      0.000000e+00                   unknown    -1000013      0.00000000
+ ~nu_muL               877     1000014   0.0    500.00000000      0.000000e+00                   unknown     1000014      0.00000000
+ ~nu_muLbar            878    -1000014   0.0    500.00000000      0.000000e+00                   unknown    -1000014      0.00000000
+ ~tau_1-               879     1000015  -1.0    500.00000000      0.000000e+00                   unknown     1000015      0.00000000
+ ~tau_1+               880    -1000015   1.0    500.00000000      0.000000e+00                   unknown    -1000015      0.00000000
+ ~nu_tauL              881     1000016   0.0    500.00000000      0.000000e+00                   unknown     1000016      0.00000000
+ ~nu_tauLbar           882    -1000016   0.0    500.00000000      0.000000e+00                   unknown    -1000016      0.00000000
+ ~g                    883     1000021   0.0    500.00000000      0.000000e+00                   unknown     1000021      0.00000000
+ ~chi_10               884     1000022   0.0    500.00000000      0.000000e+00                   unknown     1000022      0.00000000
+ ~chi_20               885     1000023   0.0    500.00000000      0.000000e+00                   unknown     1000023      0.00000000
+ ~chi_1+               886     1000024   1.0    500.00000000      0.000000e+00                   unknown     1000024      0.00000000
+ ~chi_1-               887    -1000024  -1.0    500.00000000      0.000000e+00                   unknown    -1000024      0.00000000
+ ~chi_30               888     1000025   0.0    500.00000000      0.000000e+00                   unknown     1000025      0.00000000
+ ~chi_40               889     1000035   0.0    500.00000000      0.000000e+00                   unknown     1000035      0.00000000
+ ~chi_2+               890     1000037   1.0    500.00000000      0.000000e+00                   unknown     1000037      0.00000000
+ ~chi_2-               891    -1000037  -1.0    500.00000000      0.000000e+00                   unknown    -1000037      0.00000000
+ ~Gravitino            892     1000039   0.0    500.00000000      0.000000e+00                   unknown     1000039      0.00000000
+ ~d_R                  893     2000001  -0.3    500.00000000      0.000000e+00                   unknown     2000001      0.00000000
+ ~d_Rbar               894    -2000001   0.3    500.00000000      0.000000e+00                   unknown    -2000001      0.00000000
+ ~u_R                  895     2000002   0.7    500.00000000      0.000000e+00                   unknown     2000002      0.00000000
+ ~u_Rbar               896    -2000002  -0.7    500.00000000      0.000000e+00                   unknown    -2000002      0.00000000
+ ~s_R                  897     2000003  -0.3    500.00000000      0.000000e+00                   unknown     2000003      0.00000000
+ ~s_Rbar               898    -2000003   0.3    500.00000000      0.000000e+00                   unknown    -2000003      0.00000000
+ ~c_R                  899     2000004   0.7    500.00000000      0.000000e+00                   unknown     2000004      0.00000000
+ ~c_Rbar               900    -2000004  -0.7    500.00000000      0.000000e+00                   unknown    -2000004      0.00000000
+ ~b_2                  901     2000005  -0.3    500.00000000      0.000000e+00                   unknown     2000005      0.00000000
+ ~b_2bar               902    -2000005   0.3    500.00000000      0.000000e+00                   unknown    -2000005      0.00000000
+ ~t_2                  903     2000006   0.7    500.00000000      0.000000e+00                   unknown     2000006      0.00000000
+ ~t_2bar               904    -2000006  -0.7    500.00000000      0.000000e+00                   unknown    -2000006      0.00000000
+ ~e_R-                 905     2000011  -1.0    500.00000000      0.000000e+00                   unknown     2000011      0.00000000
+ ~e_R+                 906    -2000011   1.0    500.00000000      0.000000e+00                   unknown    -2000011      0.00000000
+ ~nu_eR                907     2000012   0.0    500.00000000      0.000000e+00                   unknown     2000012      0.00000000
+ ~nu_eRbar             908    -2000012   0.0    500.00000000      0.000000e+00                   unknown    -2000012      0.00000000
+ ~mu_R-                909     2000013  -1.0    500.00000000      0.000000e+00                   unknown     2000013      0.00000000
+ ~mu_R+                910    -2000013   1.0    500.00000000      0.000000e+00                   unknown    -2000013      0.00000000
+ ~nu_muR               911     2000014   0.0    500.00000000      0.000000e+00                   unknown     2000014      0.00000000
+ ~nu_muRbar            912    -2000014   0.0    500.00000000      0.000000e+00                   unknown    -2000014      0.00000000
+ ~tau_2-               913     2000015  -1.0    500.00000000      0.000000e+00                   unknown     2000015      0.00000000
+ ~tau_2+               914    -2000015   1.0    500.00000000      0.000000e+00                   unknown    -2000015      0.00000000
+ ~nu_tauR              915     2000016   0.0    500.00000000      0.000000e+00                   unknown     2000016      0.00000000
+ ~nu_tauRbar           916    -2000016   0.0    500.00000000      0.000000e+00                   unknown    -2000016      0.00000000
+ pi_tc0                917     3000111   0.0    110.00000000      0.000000e+00                   unknown     3000111      0.00000000
+ rho_tc0               918     3000113   0.0    210.00000000      0.000000e+00                   unknown     3000113      0.00000000
+ pi_tc+                919     3000211   1.0    110.00000000      0.000000e+00                   unknown     3000211      0.00000000
+ pi_tc-                920    -3000211  -1.0    110.00000000      0.000000e+00                   unknown    -3000211      0.00000000
+ rho_tc+               921     3000213   1.0    210.00000000      0.000000e+00                   unknown     3000213      0.00000000
+ rho_tc-               922    -3000213  -1.0    210.00000000      0.000000e+00                   unknown    -3000213      0.00000000
+ pi'_tc0               923     3000221   0.0    110.00000000      0.000000e+00                   unknown     3000221      0.00000000
+ omega_tc              924     3000223   0.0    210.00000000      0.000000e+00                   unknown     3000223      0.00000000
+ eta_tc0               925     3000331   0.0    350.00000000      0.000000e+00                   unknown     3000331      0.00000000
+ V8_tc                 926     3100021   0.0    500.00000000      0.000000e+00                   unknown     3100021      0.00000000
+ pi_22_1_tc            927     3100111   0.0    125.00000000      0.000000e+00                   unknown     3100111      0.00000000
+ rho_11_tc             928     3100113   0.0    400.00000000      0.000000e+00                   unknown     3100113      0.00000000
+ pi_22_8_tc            929     3200111   0.0    250.00000000      0.000000e+00                   unknown     3200111      0.00000000
+ rho_12_tc             930     3200113   0.0    350.00000000      0.000000e+00                   unknown     3200113      0.00000000
+ rho_21_tc             931     3300113   0.0    350.00000000      0.000000e+00                   unknown     3300113      0.00000000
+ rho_22_tc             932     3400113   0.0    300.00000000      0.000000e+00                   unknown     3400113      0.00000000
+ d*                    933     4000001  -0.3    400.00000000      0.000000e+00                   unknown     4000001      0.00000000
+ d*bar                 934    -4000001   0.3    400.00000000      0.000000e+00                   unknown    -4000001      0.00000000
+ u*                    935     4000002   0.7    400.00000000      0.000000e+00                   unknown     4000002      0.00000000
+ u*bar                 936    -4000002  -0.7    400.00000000      0.000000e+00                   unknown    -4000002      0.00000000
+ e*-                   937     4000011  -1.0    400.00000000      0.000000e+00                   unknown     4000011      0.00000000
+ e*bar+                938    -4000011   1.0    400.00000000      0.000000e+00                   unknown    -4000011      0.00000000
+ nu*_e0                939     4000012   0.0    400.00000000      0.000000e+00                   unknown     4000012      0.00000000
+ nu*_ebar0             940    -4000012   0.0    400.00000000      0.000000e+00                   unknown    -4000012      0.00000000
+ gv                4900021     4900021   0.0      0.00000000        0.0000e+00                        gv     4900021      0.00000000
+ Zv                4900023     4900023   0.0    125.00000000        6.5800e-23                        Zv     4900023      0.01000000
+ qv                4900101     4900101   0.0      1.00000000        0.0000e+00                        qv     4900101      0.00000000
+ qvbar            -4900101    -4900101   0.0      1.00000000        0.0000e+00                     qvbar    -4900101      0.00000000
+ pivDiag           4900111     4900111   0.0      1.20000000        5.0000e-12                   pivDiag     4900111      2.0000e-11
+ pivUp             4900211     4900211   0.0      1.20000000        0.0000e+00                     pivUp     4900211      0.00000000
+ pivDn            -4900211    -4900211   0.0      1.20000000        0.0000e+00                     pivDn    -4900211      0.00000000
+ rhovDiag          4900113     4900113   0.0      1.20000000        0.0000e+00                  rhovDiag     4900113      0.00000000
+ rhovUp            4900213     4900213   0.0      1.20000000        0.0000e+00                    rhovUp     4900213      0.00000000
+ rhovDn           -4900213    -4900213   0.0      1.20000000        0.0000e+00                    rhovDn    -4900213      0.00000000
+ Graviton*             941     5000039   0.0   1000.00000000      0.000000e+00                   unknown     5000039      0.00000000
+ nu_Re                 942     9900012   0.0    500.00000000      0.000000e+00                   unknown     9900012      0.00000000
+ nu_Rmu                943     9900014   0.0    500.00000000      0.000000e+00                   unknown     9900014      0.00000000
+ nu_Rtau               944     9900016   0.0    500.00000000      0.000000e+00                   unknown     9900016      0.00000000
+ Z_R0                  945     9900023   0.0   1200.00000000      0.000000e+00                   unknown     9900023      0.00000000
+ W_R+                  946     9900024   1.0    750.00000000      0.000000e+00                   unknown     9900024      0.00000000
+ W_R-                  947    -9900024  -1.0    750.00000000      0.000000e+00                   unknown    -9900024      0.00000000
+ H_L++                 948     9900041   2.0    200.00000000      0.000000e+00                   unknown     9900041      0.00000000
+ H_L--                 949    -9900041  -2.0    200.00000000      0.000000e+00                   unknown    -9900041      0.00000000
+ H_R++                 950     9900042   2.0    200.00000000      0.000000e+00                   unknown     9900042      0.00000000
+ H_R--                 951    -9900042  -2.0    200.00000000      0.000000e+00                   unknown    -9900042      0.00000000
+ He3[0.0]               49  1000020030   2.0      2.80923000      1.000000e+15                       He3           0      0.00000000
+ He3~[0.0]             391 -1000020030  -2.0      2.80923000      0.000000e+00                  anti-He3           0      0.00000000
+ Li7[0.0]              988  1000030070   3.0      6.53536500      0.000000e+00                   unknown           0      0.00000000
+ Be8[0.0]              992  1000040080   4.0      7.45689300      0.000000e+00                   unknown           0      0.00000000
+ Be9[0.0]              959  1000040090   4.0      8.39479200      0.000000e+00                   unknown           0      0.00000000
+ Be10[0.0]             993  1000040100   4.0      9.32754500      0.000000e+00                   unknown           0      0.00000000
+ B10[0.0]              994  1000050100   5.0      9.32698900      0.000000e+00                   unknown           0      0.00000000
+ B11[0.0]              974  1000050110   5.0     10.25510100      0.000000e+00                   unknown           0      0.00000000
+ B12[0.0]              975  1000050120   5.0     11.19129500      0.000000e+00                   unknown           0      0.00000000
+ C12[0.0]              953  1000060120   6.0     11.17490000      0.000000e+00                   unknown           0      0.00000000
+ C13[0.0]              976  1000060130   6.0     12.11254500      0.000000e+00                   unknown           0      0.00000000
+ C14[0.0]              977  1000060140   6.0     13.04393400      0.000000e+00                   unknown           0      0.00000000
+ N14[0.0]              955  1000070140   7.0     13.04378000      0.000000e+00                   unknown           0      0.00000000
+ N15[0.0]              982  1000070150   7.0     13.04377800      0.000000e+00                   unknown           0      0.00000000
+ N16[0.0]              995  1000070160   7.0     14.90958500      0.000000e+00                   unknown           0      0.00000000
+ O16[0.0]              956  1000080160   8.0     14.89510000      0.000000e+00                   unknown           0      0.00000000
+ O17[0.0]              996  1000080170   8.0     15.83458700      0.000000e+00                   unknown           0      0.00000000
+ O18[0.0]              967  1000080180   8.0     16.76610800      0.000000e+00                   unknown           0      0.00000000
+ O19[0.0]              997  1000080190   8.0     17.70171700      0.000000e+00                   unknown           0      0.00000000
+ F19[0.0]              960  1000090190   9.0     17.69689600      0.000000e+00                   unknown           0      0.00000000
+ Ne22[0.0]             983  1000100220  10.0     20.48484100      0.000000e+00                   unknown           0      0.00000000
+ Ne23[0.0]             998  1000100230  10.0     21.41920500      0.000000e+00                   unknown           0      0.00000000
+ Na24[0.0]             999  1000110240  11.0     22.34743500      0.000000e+00                   unknown           0      0.00000000
+ Mg24[0.0]             979  1000120240  12.0     22.34192000      0.000000e+00                   unknown           0      0.00000000
+ Mg25[0.0]             989  1000120250  12.0     23.27415400      0.000000e+00                   unknown           0      0.00000000
+ Mg26[0.0]             980  1000120260  12.0     24.20262600      0.000000e+00                   unknown           0      0.00000000
+ Mg27[0.0]             981  1000120270  12.0     25.13574800      0.000000e+00                   unknown           0      0.00000000
+ Al27[0.0]             952  1000130270  13.0     25.12650000      0.000000e+00                   unknown           0      0.00000000
+ Al28[0.0]             972  1000130280  13.0     26.06497800      0.000000e+00                   unknown           0      0.00000000
+ Si28[0.0]             957  1000140280  14.0     26.05320000      0.000000e+00                   unknown           0      0.00000000
+ Si29[0.0]             964  1000140290  14.0     26.99142700      0.000000e+00                   unknown           0      0.00000000
+ Si30[0.0]             968  1000140300  14.0     27.92038300      0.000000e+00                   unknown           0      0.00000000
+ P31[0.0]             1000  1000150310  15.0     28.85186900      0.000000e+00                   unknown           0      0.00000000
+ Cl39[0.0]            1001  1000170390  17.0     36.29846000      0.000000e+00                   unknown           0      0.00000000
+ Cl40[0.0]            1002  1000170400  17.0     37.23220100      0.000000e+00                   unknown           0      0.00000000
+ Ar36[0.0]            1003  1000180360  18.0     33.50354900      0.000000e+00                   unknown           0      0.00000000
+ Ar40[0.0]             973  1000180400  18.0     37.22471500      0.000000e+00                   unknown           0      0.00000000
+ Cr50[0.0]            1004  1000240500  24.0     46.52443900      0.000000e+00                   unknown           0      0.00000000
+ Cr52[0.0]             978  1000240520  24.0     48.37010000      0.000000e+00                   unknown           0      0.00000000
+ Cr53[0.0]             990  1000240530  24.0     49.31389400      0.000000e+00                   unknown           0      0.00000000
+ Cr54[0.0]            1005  1000240540  24.0     50.24374100      0.000000e+00                   unknown           0      0.00000000
+ Mn55[0.0]             991  1000250550  25.0     51.17445700      0.000000e+00                   unknown           0      0.00000000
+ Fe54[0.0]             966  1000260540  26.0     50.24442100      0.000000e+00                   unknown           0      0.00000000
+ Fe56[0.0]             961  1000260560  26.0     52.10305600      0.000000e+00                   unknown           0      0.00000000
+ Fe57[0.0]             969  1000260570  26.0     53.03497500      0.000000e+00                   unknown           0      0.00000000
+ Fe59[0.0]            1006  1000260590  26.0     54.89748000      0.000000e+00                   unknown           0      0.00000000
+ Ni58[0.0]             984  1000280580  28.0     53.96642200      0.000000e+00                   unknown           0      0.00000000
+ Ni60[0.0]             985  1000280600  28.0     55.82516400      0.000000e+00                   unknown           0      0.00000000
+ Ni61[0.0]            1007  1000280610  28.0     56.75690900      0.000000e+00                   unknown           0      0.00000000
+ Ni62[0.0]             986  1000280620  28.0     57.68587700      0.000000e+00                   unknown           0      0.00000000
+ Ni63[0.0]            1008  1000280630  28.0     58.61860500      0.000000e+00                   unknown           0      0.00000000
+ Ni64[0.0]             987  1000280640  28.0     59.54851200      0.000000e+00                   unknown           0      0.00000000
+ Cu63[0.0]             954  1000290630  29.0     58.61860000      0.000000e+00                   unknown           0      0.00000000
+ Cu65[0.0]             958  1000290650  29.0     60.47984200      0.000000e+00                   unknown           0      0.00000000
+ Mo92[0.0]            1009  1000420920  42.0     85.61063000      0.000000e+00                   unknown           0      0.00000000
+ Mo95[0.0]            1010  1000420950  42.0     88.40421000      0.000000e+00                   unknown           0      0.00000000
+ Mo96[0.0]            1011  1000420960  42.0     89.33462100      0.000000e+00                   unknown           0      0.00000000
+ Mo97[0.0]            1012  1000420970  42.0     90.26736500      0.000000e+00                   unknown           0      0.00000000
+ Mo98[0.0]            1013  1000420980  42.0     91.19828700      0.000000e+00                   unknown           0      0.00000000
+ Mo100[0.0]           1014  1000421000  42.0     93.06320300      0.000000e+00                   unknown           0      0.00000000
+ Pd108[0.0]           1015  1000461080  46.0    100.51181600      0.000000e+00                   unknown           0      0.00000000
+ Au197[0.0]           1020  1000791970  79.0    183.43336000      0.000000e+00                   unknown           0      0.00000000
+ Pb207[0.0]            962  1000822070  82.0    192.79676500      0.000000e+00                   unknown           0      0.00000000
+ Pb208[0.0]            963  1000822080  82.0    193.72896200      0.000000e+00                   unknown           0      0.00000000
+ Pb206[0.0]            965  1000822060  82.0    191.86393700      0.000000e+00                   unknown           0      0.00000000
+ Pb204[0.0]            970  1000822040  82.0    189.99962700      0.000000e+00                   unknown           0      0.00000000
+ Intermediate          971   -99000000   0.0      0.00000000      0.000000e+00                   unknown           0      0.00000000
+#
+END PARTICLE
diff --git a/GaudiPartProp/tests/scripts/newparts.py b/GaudiPartProp/tests/scripts/newparts.py
new file mode 100755
index 0000000000000000000000000000000000000000..9d9be9679ebb9e42cd3e73ab3673a77c9b359090
--- /dev/null
+++ b/GaudiPartProp/tests/scripts/newparts.py
@@ -0,0 +1,85 @@
+#!/usr/bin/env python3
+#####################################################################################
+# (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations #
+#                                                                                   #
+# This software is distributed under the terms of the Apache version 2 licence,     #
+# copied verbatim in the file "LICENSE".                                            #
+#                                                                                   #
+# In applying this licence, CERN does not waive the privileges and immunities       #
+# granted to it by virtue of its status as an Intergovernmental Organization        #
+# or submit itself to any jurisdiction.                                             #
+#####################################################################################
+# =============================================================================
+## @file newparts.py
+#  Simple test for adding new particle
+#  @author Vanya BELYAEV Ivan.Belyaev@itep.ru
+#  @date 2018-07-12
+# =============================================================================
+""" Simple test for adding new particle
+"""
+
+# =============================================================================
+__author__ = "Vanya BELYAEV Ivan.Belyaev@itep.ru"
+from pathlib import Path
+
+import GaudiPartProp.decorators
+
+# =============================================================================
+# The following lines are misunderstood by flake8 - the imports are needed as they
+# have necessary side effects
+import GaudiPartProp.PartPropAlg  # noqa: F401
+import GaudiPartProp.Service  # noqa: F401
+from Configurables import Gaudi__ParticlePropertySvc
+from GaudiKernel.SystemOfUnits import GeV, second
+from GaudiPython.Bindings import AppMgr
+
+# =============================================================================
+## test the nodes
+Gaudi__ParticlePropertySvc(
+    ParticlePropertiesFile=str(
+        Path(__file__).parent / "ParticleTable.dddb-20200424.txt"
+    )
+)
+
+gaudi = AppMgr()
+gaudi.initialize()
+
+
+## simple test-function
+def test():
+    """Simple function for the test"""
+    pps = gaudi.gaudiPartProp()
+
+    try:
+        # If we have no ParticleProperties this isn't going to work
+        c = pps.find("chi_c1(1P)")
+
+        ## redefine properties
+        line1 = "%s 0 %d 0.0 %g %20.12g %s %d %g " % (
+            c.name(),
+            c.pid().pid(),
+            c.mass() / GeV,
+            c.lifetime() / second,
+            c.evtGen(),
+            c.pythia(),
+            c.maxWidth() / GeV,
+        )
+        line2 = "%s 0 %d 0.0 %g %20.12g %s %d %g " % (
+            c.name(),
+            c.pid().pid(),
+            c.mass() / GeV,
+            -c.width() / GeV,
+            c.evtGen(),
+            c.pythia(),
+            c.maxWidth() / GeV,
+        )
+
+        pps.Particles = [line1]
+        pps.Particles = [line2]
+    except ReferenceError:
+        pass
+
+
+# =============================================================================
+if "__main__" == __name__:
+    test()
diff --git a/GaudiPartProp/tests/scripts/pids.py b/GaudiPartProp/tests/scripts/pids.py
new file mode 100755
index 0000000000000000000000000000000000000000..bd42b8c28c4f2105a9f893ad4096056718924f5b
--- /dev/null
+++ b/GaudiPartProp/tests/scripts/pids.py
@@ -0,0 +1,120 @@
+#!/usr/bin/env python
+#####################################################################################
+# (c) Copyright 1998-2023 CERN for the benefit of the LHCb and ATLAS collaborations #
+#                                                                                   #
+# This software is distributed under the terms of the Apache version 2 licence,     #
+# copied verbatim in the file "LICENSE".                                            #
+#                                                                                   #
+# In applying this licence, CERN does not waive the privileges and immunities       #
+# granted to it by virtue of its status as an Intergovernmental Organization        #
+# or submit itself to any jurisdiction.                                             #
+#####################################################################################
+# =============================================================================
+## @file PartPropSvc.py
+#  Demo-file for interactive work with new Particle Property Service
+#  @author Vanya BELYAEV Ivan.Belyaev@nikhef.nl
+#  @date 2008-12-02
+# =============================================================================
+"""
+Demo-file for interactive work with new Particle Property Service
+"""
+
+__author__ = "Vanya BELYAEV Ivan.Belyaev@nikhef.nl"
+from pathlib import Path
+
+# The following lines are misunderstood by flake8 - the imports are needed as
+# they have necessary side effects
+import GaudiPartProp.PartPropAlg  # noqa: F401
+import GaudiPartProp.Service  # noqa: F401
+
+# from DDDB.CheckDD4Hep import UseDD4Hep
+# if UseDD4Hep:
+#     # use a predefined particle table file
+from Configurables import Gaudi__ParticlePropertySvc
+
+## test the nodes
+from GaudiPartProp.Nodes import Gaudi
+from GaudiPython.Bindings import AppMgr
+
+Gaudi__ParticlePropertySvc(
+    ParticlePropertiesFile=str(
+        Path(__file__).parent / "ParticleTable.dddb-20200424.txt"
+    )
+)
+
+gaudi = AppMgr()
+gaudi.initialize()
+
+
+## simple test-function
+def test():
+    """Simple function for the test"""
+    pps = gaudi.gaudiPartProp()
+
+    ##  get all known pids
+    all = pps.get(lambda x: True)
+
+    pids = set()
+    for p in all:
+        pids.add(p.particleID().pid())
+
+    ## add "special" values
+    pids.add(10022)
+    pids.add(20022)
+    ##
+    pids.add(30343)
+    pids.add(30353)
+    pids.add(30363)
+    ##
+    pids.add(1009002)
+    pids.add(1000542)
+    pids.add(1000522)
+    pids.add(1000039)
+    pids.add(3100021)
+    pids.add(480000000)
+    pids.add(-990000000)
+
+    for p in sorted(pids):
+        pp = Gaudi.ParticleID(p)
+
+        print(
+            "({})".format(
+                ", ".join(
+                    str(x)
+                    for x in (
+                        pp.pid(),
+                        pp.abspid(),
+                        pp.isValid(),
+                        pp.isSM(),
+                        pp.isMeson(),
+                        pp.isBaryon(),
+                        pp.isHadron(),
+                        pp.isLepton(),
+                        pp.isNucleus(),
+                        pp.isQuark(),
+                        pp.hasQuarks(),
+                        pp.hasDown(),
+                        pp.hasUp(),
+                        pp.hasStrange(),
+                        pp.hasCharm(),
+                        pp.hasBottom(),
+                        pp.hasTop(),
+                        pp.hasBottomPrime(),
+                        pp.hasTopPrime(),
+                        pp.threeCharge(),
+                        pp.jSpin(),
+                        pp.sSpin(),
+                        pp.lSpin(),
+                        pp.Z(),
+                        pp.A(),
+                        pp.nLambda(),
+                        pp.fundamentalID(),
+                        pp.extraBits(),
+                    )
+                )
+            )
+        )
+
+
+if "__main__" == __name__:
+    test()
diff --git a/GaudiPython/dict/kernel.h b/GaudiPython/dict/kernel.h
index d7b790349083bbe235a16e741f620dc9b56e052e..26f6562a07b37feb1b1d1313c7028daf860ebc1c 100644
--- a/GaudiPython/dict/kernel.h
+++ b/GaudiPython/dict/kernel.h
@@ -25,7 +25,6 @@
 #include "GaudiKernel/IRegistry.h"
 #include "GaudiKernel/Map.h"
 #include "GaudiKernel/MapBase.h"
-#include "GaudiKernel/ParticleProperty.h"
 #include "GaudiKernel/Range.h"
 #include "GaudiKernel/SerializeSTL.h"
 #include "GaudiKernel/Stat.h"
diff --git a/GaudiPython/dict/selection_fragment_main.xml b/GaudiPython/dict/selection_fragment_main.xml
index db2f7f5f854df43a73d1487e2dca505cfea8ba1a..40b223c2edc6fc74fd31d7840a819117eeb126c1 100644
--- a/GaudiPython/dict/selection_fragment_main.xml
+++ b/GaudiPython/dict/selection_fragment_main.xml
@@ -51,7 +51,6 @@
   <class pattern = "AIDA::I*"  />
   <class name    = "GaudiPython::PyAlgorithm"/>
   <class name    = "GaudiPython::CallbackStreamBuf"/>
-  <class name    = "ParticleProperty"/>
 
   <class name    = "Gaudi::StringKey" />
   <class name    = "Gaudi::Utils::MapBase" />
diff --git a/ci-utils/preset-default.cmake b/ci-utils/preset-default.cmake
index c42425255becfe92c2901a17f552a5389f4133bc..145c7e81004f50413d1296b7696a449a767e9f72 100644
--- a/ci-utils/preset-default.cmake
+++ b/ci-utils/preset-default.cmake
@@ -10,4 +10,5 @@
 # set(GAUDI_USE_INTELAMPLIFIER   OFF CACHE BOOL "")
 # set(GAUDI_USE_JEMALLOC         ON  CACHE BOOL "")
 # set(GAUDI_ENABLE_GAUDIALG      OFF CACHE BOOL "")
+# set(GAUDI_ENABLE_GAUDIPARTPROP ON  CACHE BOOL "")
 # set(BUILD_TESTING              ON  CACHE BOOL "")
diff --git a/ci-utils/preset-full.cmake b/ci-utils/preset-full.cmake
index 98ccb053a525d1ee0f5bd2aa097724a28a3a966d..6c7c58d008c1ed4d337968ade75115c2c118f401 100644
--- a/ci-utils/preset-full.cmake
+++ b/ci-utils/preset-full.cmake
@@ -10,4 +10,5 @@ set(GAUDI_USE_DOXYGEN          ON  CACHE BOOL "")
 set(GAUDI_USE_INTELAMPLIFIER   ON  CACHE BOOL "")
 set(GAUDI_USE_JEMALLOC         ON  CACHE BOOL "")
 set(GAUDI_ENABLE_GAUDIALG      ON  CACHE BOOL "")
+set(GAUDI_ENABLE_GAUDIPARTPROP ON  CACHE BOOL "")
 set(BUILD_TESTING              ON  CACHE BOOL "")
diff --git a/ci-utils/preset-minimal.cmake b/ci-utils/preset-minimal.cmake
index 8a58d67413ad029854b4a15e9ab23f484f93759d..dd8e50d0746a62a26bd3a0e6535c7f6aa2305d1d 100644
--- a/ci-utils/preset-minimal.cmake
+++ b/ci-utils/preset-minimal.cmake
@@ -10,4 +10,5 @@ set(GAUDI_USE_DOXYGEN          OFF CACHE BOOL "")
 set(GAUDI_USE_INTELAMPLIFIER   OFF CACHE BOOL "")
 set(GAUDI_USE_JEMALLOC         OFF CACHE BOOL "")
 set(GAUDI_ENABLE_GAUDIALG      OFF CACHE BOOL "")
+set(GAUDI_ENABLE_GAUDIPARTPROP OFF CACHE BOOL "")
 set(BUILD_TESTING              OFF CACHE BOOL "")
diff --git a/ci-utils/preset-no-AIDA.cmake b/ci-utils/preset-no-AIDA.cmake
index 756ecda66f05d85e4221485d1efecc1dcd971055..bffb63416008d48cf0e0b8d123dd4d4cee220e55 100644
--- a/ci-utils/preset-no-AIDA.cmake
+++ b/ci-utils/preset-no-AIDA.cmake
@@ -10,4 +10,5 @@ set(GAUDI_USE_DOXYGEN          ON  CACHE BOOL "")
 set(GAUDI_USE_INTELAMPLIFIER   ON  CACHE BOOL "")
 set(GAUDI_USE_JEMALLOC         ON  CACHE BOOL "")
 set(GAUDI_ENABLE_GAUDIALG      OFF CACHE BOOL "")
+set(GAUDI_ENABLE_GAUDIPARTPROP ON  CACHE BOOL "")
 set(BUILD_TESTING              ON  CACHE BOOL "")
diff --git a/ci-utils/preset-no-GaudiAlg.cmake b/ci-utils/preset-no-GaudiAlg.cmake
index 0bb43683554b3490ee655140b5630e769b2e4ebe..e3c5668a649a5bc3cdaad79f8a8bee99c0c53db0 100644
--- a/ci-utils/preset-no-GaudiAlg.cmake
+++ b/ci-utils/preset-no-GaudiAlg.cmake
@@ -10,4 +10,5 @@ set(GAUDI_USE_DOXYGEN          ON  CACHE BOOL "")
 set(GAUDI_USE_INTELAMPLIFIER   ON  CACHE BOOL "")
 set(GAUDI_USE_JEMALLOC         ON  CACHE BOOL "")
 set(GAUDI_ENABLE_GAUDIALG      OFF CACHE BOOL "")
+set(GAUDI_ENABLE_GAUDIPARTPROP ON  CACHE BOOL "")
 set(BUILD_TESTING              ON  CACHE BOOL "")
diff --git a/ci-utils/preset-no-test.cmake b/ci-utils/preset-no-test.cmake
index 81f183cf90c8c3befd8067b1786b4eb46a51549d..f31bf21593708716f2545a8bbc1adea4d5594606 100644
--- a/ci-utils/preset-no-test.cmake
+++ b/ci-utils/preset-no-test.cmake
@@ -10,4 +10,5 @@
 # set(GAUDI_USE_INTELAMPLIFIER   OFF CACHE BOOL "")
 # set(GAUDI_USE_JEMALLOC         ON  CACHE BOOL "")
 # set(GAUDI_ENABLE_GAUDIALG      OFF CACHE BOOL "")
+# set(GAUDI_ENABLE_GAUDIPARTPROP ON  CACHE BOOL "")
 set(BUILD_TESTING              OFF CACHE BOOL "")
diff --git a/cmake/GaudiDependencies.cmake b/cmake/GaudiDependencies.cmake
index cc39608902803d08447021f1b4094f90ebc68244..82a529f7b08dd83771ec3bbfd9a3e9dc1558d809 100644
--- a/cmake/GaudiDependencies.cmake
+++ b/cmake/GaudiDependencies.cmake
@@ -139,6 +139,7 @@ endif()
 set(gperftools_pkgconfig_module "libprofiler>=2.7.0")
 
 option(GAUDI_ENABLE_GAUDIALG "Build the subdirectory GaudiAlg" NO)
+option(GAUDI_ENABLE_GAUDIPARTPROP "Build the subdirectory GaudiPartProp" YES)
 
 foreach(dep IN LISTS deps)
   string(TOUPPER ${dep} DEP)