From a592081ac0c54bdf54a99d61f5da54f184b3957a Mon Sep 17 00:00:00 2001
From: Felix Weiglhofer <weiglhofer@fias.uni-frankfurt.de>
Date: Thu, 19 Oct 2023 08:06:05 +0000
Subject: [PATCH] cbmreco: Integrate TRD and TRD2D Unpacker.

* Add `--dump-setup` to dump unpacker setups to file.
* Add TRD and TRD2D setup files converted to YAML
* Enable TRD and TRD2D Unpacker in cbmreco
* Make TRD and TRD2D Unpacker parallel
---
 algo/base/Options.cxx                       |    2 +-
 algo/detectors/trd/ReadoutConfig.h          |    5 +
 algo/detectors/trd/Unpack.cxx               |   48 +-
 algo/detectors/trd/Unpack.h                 |   53 +-
 algo/detectors/trd2d/ReadoutConfig.cxx      |   23 +-
 algo/detectors/trd2d/ReadoutConfig.h        |   35 +-
 algo/detectors/trd2d/Unpack.cxx             |   31 +-
 algo/detectors/trd2d/Unpack.h               |   19 +-
 algo/global/Reco.cxx                        |    8 -
 algo/params/Trd2dReadoutSetup.yaml          | 1846 +++++++++++++++++++
 algo/params/TrdReadoutSetup.yaml            | 1524 +++++++++++++++
 algo/unpack/Unpack.cxx                      |   37 +-
 algo/unpack/UnpackChain.cxx                 |   10 +
 macro/reco/reco_fairroot.C                  |    3 +-
 reco/app/cbmreco_fairrun/Application.cxx    |    7 +-
 reco/app/cbmreco_fairrun/ProgramOptions.cxx |    1 +
 reco/app/cbmreco_fairrun/ProgramOptions.h   |    4 +
 reco/app/cbmreco_fairrun/main.cxx           |    2 +-
 reco/tasks/CbmReco.cxx                      |   17 +-
 reco/tasks/CbmReco.h                        |   11 +-
 reco/tasks/CbmTaskUnpack.cxx                |   18 +-
 reco/tasks/CbmTaskUnpack.h                  |   11 +-
 22 files changed, 3592 insertions(+), 123 deletions(-)
 create mode 100644 algo/params/Trd2dReadoutSetup.yaml
 create mode 100644 algo/params/TrdReadoutSetup.yaml

diff --git a/algo/base/Options.cxx b/algo/base/Options.cxx
index 51486227db..e743e92ab6 100644
--- a/algo/base/Options.cxx
+++ b/algo/base/Options.cxx
@@ -75,7 +75,7 @@ Options::Options(int argc, char** argv)
       "comma seperated list of reconstruction output types (hit, digi, ...)")
     ("steps", po::value(&fRecoSteps)->multitoken()->default_value({Step::Unpack, Step::LocalReco})->value_name("<steps>"),
       "comma seperated list of reconstruction steps (upack, digitrigger, localreco, ...)")
-    ("systems,s", po::value(&fDetectors)->multitoken()->default_value({Subsystem::STS, Subsystem::TOF, Subsystem::BMON, Subsystem::MUCH, Subsystem::RICH})->value_name("<detectors>"),
+    ("systems,s", po::value(&fDetectors)->multitoken()->default_value({Subsystem::STS, Subsystem::TOF, Subsystem::BMON, Subsystem::MUCH, Subsystem::RICH, Subsystem::TRD, Subsystem::TRD2D})->value_name("<detectors>"),
       "comma seperated list of detectors to process (sts, mvd, ...)")
     ("child-id,c", po::value(&fChildId)->default_value("00")->value_name("<id>"), "online process id on node")
     ("num-ts,n", po::value(&fNumTimeslices)->default_value(-1)->value_name("<num>"),
diff --git a/algo/detectors/trd/ReadoutConfig.h b/algo/detectors/trd/ReadoutConfig.h
index bd927bb03e..aeceeb60e4 100644
--- a/algo/detectors/trd/ReadoutConfig.h
+++ b/algo/detectors/trd/ReadoutConfig.h
@@ -10,6 +10,8 @@
 #include <utility>
 #include <vector>
 
+#include "config/Property.h"
+
 namespace cbm::algo::trd
 {
 
@@ -83,6 +85,9 @@ namespace cbm::algo::trd
     // --- TRD channel map
     // --- Map index: (equipment, crob, elink, chan), map value: (channel address)
     std::map<uint16_t, std::vector<std::vector<std::vector<uint32_t>>>> fChannelMap = {};  //!
+
+    CBM_PROPERTIES(config::Property(&ReadoutConfig::fReadoutMap, "readoutMap", "TRD readout map", {}, YAML::Hex),
+                   config::Property(&ReadoutConfig::fChannelMap, "channelMap", "TRD channel map"));
   };
 
 }  // namespace cbm::algo::trd
diff --git a/algo/detectors/trd/Unpack.cxx b/algo/detectors/trd/Unpack.cxx
index d16208fd22..3e7667371e 100644
--- a/algo/detectors/trd/Unpack.cxx
+++ b/algo/detectors/trd/Unpack.cxx
@@ -15,21 +15,23 @@ namespace cbm::algo::trd
 
   // ----   Algorithm execution   ---------------------------------------------
   Unpack::resultType Unpack::operator()(const uint8_t* msContent, const fles::MicrosliceDescriptor& msDescr,
-                                        const uint64_t tTimeslice)
+                                        const uint64_t tTimeslice) const
   {
     // --- Output data
     resultType result = {};
 
+    MsContext ctx = {};
+
     // Get the µSlice starttime relative to the timeslice starttime (constant is clock length of Spadic in ns)
-    fMsStartTimeRelCC = (msDescr.idx - tTimeslice) / fAsicClockCycle;
+    ctx.fMsStartTimeRelCC = (msDescr.idx - tTimeslice) / fAsicClockCycle;
 
     // We only want to count on TS_MSB per Stream per TS_MSB package (each eLink sends its own TS_MSB frame)
     // so we store the current TS_MSB and compare it to the incoming.
     std::int8_t currTsMsb = 0;
 
     // Reset the TS_MSB counter for the new µSlice we unpack
-    fNrTsMsbVec.clear();
-    fNrTsMsbVec.resize(fStreamsPerWord);
+    ctx.fNrTsMsbVec.resize(fStreamsPerWord);
+
 
     // Get the µslice size in bytes to calculate the number of completed words
     auto mssize = msDescr.size;
@@ -47,6 +49,8 @@ namespace cbm::algo::trd
     // We have 32 bit spadic frames in this readout version
     const auto mscontent = reinterpret_cast<const size_t*>(msContent);
 
+    result.first.reserve(nwords);
+
     // Loop over all 64bit-Spadic-Words in the current µslice
     for (std::uint32_t istream = 0; istream < fStreamsPerWord; istream++) {
       currTsMsb = -1;
@@ -67,7 +71,7 @@ namespace cbm::algo::trd
         switch (kWordtype) {
           case Spadic::MsMessageType::kEPO: {
             auto tsmsb = getTsMsb(frame, result.second);
-            if (((tsmsb - currTsMsb) & 0x3f) == 1 || currTsMsb == -1) fNrTsMsbVec.at(istream)++;
+            if (((tsmsb - currTsMsb) & 0x3f) == 1 || currTsMsb == -1) ctx.fNrTsMsbVec.at(istream)++;
             currTsMsb = tsmsb;
             result.second.fNumEpochMsgs++;
             break;
@@ -75,7 +79,7 @@ namespace cbm::algo::trd
           }
           case Spadic::MsMessageType::kSOM: {
             // Create the raw message and fill it with all information we can get from the SOM msg
-            CbmTrdRawMessageSpadic raw = makeRaw(frame, criId, crobId, elinkId, istream);
+            CbmTrdRawMessageSpadic raw = makeRaw(frame, criId, crobId, elinkId, istream, ctx);
 
             // FIXME since we can not deduce the sample position from the messages we need in
             // future some parameter handling here to place the samples at the correct position
@@ -163,7 +167,7 @@ namespace cbm::algo::trd
               // the message is done and the raw message container should contain everything we need.
               // So now we can call makeDigi(). Nevertheless there is a chance for a corrupted message,
               // which ends up with 0 samples so we have to check for it.
-              if (isample > 0) result.first.push_back(makeDigi(raw));
+              if (isample > 0) result.first.push_back(makeDigi(raw, ctx));
             }
             else {
               // We move the word counter backwards by one, such that the unexpected message can correctly be digested
@@ -207,7 +211,7 @@ namespace cbm::algo::trd
   // --------------------------------------------------------------------------
 
   // ---- digestBufInfoFlags ----
-  Spadic::MsInfoType Unpack::digestBufInfoFlags(const std::uint32_t frame)
+  Spadic::MsInfoType Unpack::digestBufInfoFlags(const std::uint32_t frame) const
   {
     auto flag = (frame >> 15) & 0x3;
     Spadic::MsInfoType infotype;
@@ -218,16 +222,16 @@ namespace cbm::algo::trd
   }
 
   // ---- digestInfoMsg ----
-  void Unpack::digestInfoMsg(const std::uint32_t frame)
+  void Unpack::digestInfoMsg(const std::uint32_t frame) const
   {
     /// Save info message if needed.
-    //if (fOptOutBVec) { fOptOutBVec->emplace_back(std::make_pair(fLastFulltime, frame)); }
+    //if (fOptOutBVec) { fOptOutBVec->emplace_back(std::make_pair(ctx.fLastFulltime, frame)); }
     Spadic::MsInfoType infotype = getInfoType(frame);
     // "Spadic_Info_Types";
   }
 
   // ---- digestInfoMsg ----
-  void Unpack::digestMsFlags(const std::uint16_t flags, UnpackMonitorData& monitor)
+  void Unpack::digestMsFlags(const std::uint16_t flags, UnpackMonitorData& monitor) const
   {
     if (flags & static_cast<std::uint16_t>(fles::MicrosliceFlags::CrcValid)) { monitor.fNumCrcValidFlags++; }
     if (flags & static_cast<std::uint16_t>(fles::MicrosliceFlags::OverflowFlim)) { monitor.fNumOverflowFlimFlags++; }
@@ -236,7 +240,7 @@ namespace cbm::algo::trd
   }
 
   // ---- extractSample ----
-  std::float_t Unpack::extractAvgSample(size_t* adcbuffer, size_t* nadcbits)
+  std::float_t Unpack::extractAvgSample(size_t* adcbuffer, size_t* nadcbits) const
   {
     // can not extract samples from a buffer with less than 9 bits
     assert(*nadcbits >= 9);
@@ -263,7 +267,7 @@ namespace cbm::algo::trd
   }
 
   // ---- extractSample ----
-  std::int16_t Unpack::extractSample(size_t* adcbuffer, size_t* nadcbits)
+  std::int16_t Unpack::extractSample(size_t* adcbuffer, size_t* nadcbits) const
   {
     // can not extract samples from a buffer with less than 9 bits
     assert(*nadcbits >= 9);
@@ -284,7 +288,7 @@ namespace cbm::algo::trd
   }
 
   // ---- getInfoType ----
-  Spadic::MsInfoType Unpack::getInfoType(const std::uint32_t frame)
+  Spadic::MsInfoType Unpack::getInfoType(const std::uint32_t frame) const
   {
     // Set first 20 bits to 1 for the mask
     size_t mask = 0x000FFFFF;
@@ -324,7 +328,7 @@ namespace cbm::algo::trd
   }
 
   // ---- getMessageType ----
-  Spadic::MsMessageType Unpack::getMessageType(const std::uint32_t frame)
+  Spadic::MsMessageType Unpack::getMessageType(const std::uint32_t frame) const
   {
     std::uint32_t checkframe = frame;
     checkframe &= 0xffffff;
@@ -358,7 +362,7 @@ namespace cbm::algo::trd
   }
 
   // ---- getTsMsb ----
-  std::uint8_t Unpack::getTsMsb(const std::uint32_t frame, UnpackMonitorData& monitor)
+  std::uint8_t Unpack::getTsMsb(const std::uint32_t frame, UnpackMonitorData& monitor) const
   {
     if ((frame & 0xf) > 0)
       return -2;  // if a 'error' ts_msb is received the tsmsb value is not correct. To not mess up the counting -2 is returned.
@@ -383,7 +387,7 @@ namespace cbm::algo::trd
   }
 
   // ---- makeDigi ----
-  CbmTrdDigi Unpack::makeDigi(CbmTrdRawMessageSpadic raw)
+  CbmTrdDigi Unpack::makeDigi(CbmTrdRawMessageSpadic raw, MsContext& ctx) const
   {
     // Extract the trigger type and translate it to the digi enum
     auto rawTriggerType = static_cast<Spadic::eTriggerType>(raw.GetHitType());
@@ -401,7 +405,7 @@ namespace cbm::algo::trd
     int32_t padChNr = elinkPar.fChanAddress.at(raw.GetChannelId());
 
     // Store the full time information to last full-time member for error message handling
-    fLastFulltime = raw.GetFullTime();
+    ctx.fLastFulltime = raw.GetFullTime();
 
     // Get the time information and apply the necessary correction
     uint64_t time = raw.GetTime() - elinkPar.fTimeOffset;
@@ -434,7 +438,7 @@ namespace cbm::algo::trd
 
   // ---- makeRaw ----
   CbmTrdRawMessageSpadic Unpack::makeRaw(const std::uint32_t frame, std::uint16_t criId, std::uint8_t crobId,
-                                         std::uint16_t elinkId, std::uint8_t istream)
+                                         std::uint16_t elinkId, std::uint8_t istream, MsContext& ctx) const
   {
     auto chId             = static_cast<std::uint8_t>(((frame >> 17) & 0xf));
     auto timestamp        = static_cast<std::uint8_t>((frame >> 9) & 0xff);
@@ -444,7 +448,7 @@ namespace cbm::algo::trd
     // We directly start with the largest possible samples vector to only init it once
     std::vector<std::int16_t> samples = std::vector<std::int16_t>(0);
 
-    uint64_t fulltime = fMsStartTimeRelCC + (fNrTsMsbVec.at(istream) * fTsMsbLengthCC) + timestamp;
+    uint64_t fulltime = ctx.fMsStartTimeRelCC + (ctx.fNrTsMsbVec.at(istream) * fTsMsbLengthCC) + timestamp;
 
     // Create message
     return CbmTrdRawMessageSpadic(chId, elinkId, crobId, criId, hitType, nsamples, multihit, fulltime, samples);
@@ -467,7 +471,7 @@ namespace cbm::algo::trd
   }
 
   // --- GetCharge ----
-  float_t Unpack::GetMaxAdcValue(const std::vector<std::int16_t>* samples)
+  float_t Unpack::GetMaxAdcValue(const std::vector<std::int16_t>* samples) const
   {
     // Safety for corrupted input samples
     assert(samples->size() >= fPeakingBinMin);
@@ -494,7 +498,7 @@ namespace cbm::algo::trd
   }
 
   // ---- GetBaseline ----
-  float_t Unpack::GetBaseline(const std::vector<std::int16_t>* samples)
+  float_t Unpack::GetBaseline(const std::vector<std::int16_t>* samples) const
   {
     // The spadic 2.2 has a functionality that an average baseline can be written to the first sample.
     // So first we have to check if this is active.
diff --git a/algo/detectors/trd/Unpack.h b/algo/detectors/trd/Unpack.h
index ff7e9e54b0..756f49ca3f 100644
--- a/algo/detectors/trd/Unpack.h
+++ b/algo/detectors/trd/Unpack.h
@@ -121,13 +121,25 @@ namespace cbm::algo::trd
      ** @return TRD digi data
      **/
     resultType operator()(const uint8_t* msContent, const fles::MicrosliceDescriptor& msDescr,
-                          const uint64_t tTimeslice);
+                          const uint64_t tTimeslice) const;
 
     /** @brief Set the parameter container
      ** @param params Pointer to parameter container
      **/
     void SetParams(std::unique_ptr<UnpackPar> params) { fParams = *(std::move(params)); }
 
+  private:  // Types
+    struct MsContext {
+      /** @brief Start time of the current µSlice relative to the Timeslice start time in Spadic CC. */
+      size_t fMsStartTimeRelCC = 0;
+
+      /** @brief Time of the last succesful digest hit message */
+      size_t fLastFulltime = 0;
+
+      /** @brief Counter for the ts_msb used to reconstruct the time */
+      std::vector<std::uint8_t> fNrTsMsbVec = {};
+    };
+
   private:                   // members
     UnpackPar fParams = {};  ///< Parameter container
 
@@ -143,20 +155,20 @@ namespace cbm::algo::trd
      ** @param frame
      ** @return Spadic::MsInfoType
      **/
-    Spadic::MsInfoType digestBufInfoFlags(const std::uint32_t frame);
+    Spadic::MsInfoType digestBufInfoFlags(const std::uint32_t frame) const;
 
     /**
      ** @brief Digest the flags of the currently unpacked µSlice.
      ** @param flags flags stored in the µSlice descriptor
      ** @param storage of monitoring data
      **/
-    void digestMsFlags(const std::uint16_t flags, UnpackMonitorData& monitor);
+    void digestMsFlags(const std::uint16_t flags, UnpackMonitorData& monitor) const;
 
     /**
      ** @brief Digest a info message run all default information forwarding from the msg.
      ** @param frame
      **/
-    void digestInfoMsg(const std::uint32_t frame);
+    void digestInfoMsg(const std::uint32_t frame) const;
 
     /**
      ** @brief Extract one adc sample from a given adcbuffer
@@ -164,7 +176,7 @@ namespace cbm::algo::trd
      ** @param[in,out] nadcbits
      ** @return std::int16_t
      **/
-    std::int16_t extractSample(size_t* adcbuffer, size_t* nadcbits);
+    std::int16_t extractSample(size_t* adcbuffer, size_t* nadcbits) const;
 
     /**
      ** @brief Extract the baseline average sample from a given adcbuffer.
@@ -175,10 +187,10 @@ namespace cbm::algo::trd
      ** @param[in,out] nadcbits
      ** @return std::float_t
      **/
-    std::float_t extractAvgSample(size_t* adcbuffer, size_t* nadcbits);
+    std::float_t extractAvgSample(size_t* adcbuffer, size_t* nadcbits) const;
 
     /** @brief Identify the InfoType of a 64bit InfoMessage word inside a Microslice */
-    Spadic::MsInfoType getInfoType(const std::uint32_t frame);
+    Spadic::MsInfoType getInfoType(const std::uint32_t frame) const;
 
     /**
      ** @brief Get the ts_msb information from the TS_MSB(kEPO) frame. We take the first of the 3
@@ -187,7 +199,7 @@ namespace cbm::algo::trd
      ** @param storage of monitoring data
      ** @return ts_msb value
      **/
-    std::uint8_t getTsMsb(const std::uint32_t frame, UnpackMonitorData& monitor);
+    std::uint8_t getTsMsb(const std::uint32_t frame, UnpackMonitorData& monitor) const;
 
     /**
      ** @brief Create a CbmTrdRawMessageSpadic from the hit message input.
@@ -199,7 +211,7 @@ namespace cbm::algo::trd
      ** @todo Check if we can get rid of the future obsolete microslice stuff.
      **/
     CbmTrdRawMessageSpadic makeRaw(const std::uint32_t frame, std::uint16_t criId, std::uint8_t crobId,
-                                   std::uint16_t elinkId, std::uint8_t istream);
+                                   std::uint16_t elinkId, std::uint8_t istream, MsContext& ctx) const;
 
     /**
      ** @brief Get the Digi Trigger Type from the raw message triggertype
@@ -212,21 +224,21 @@ namespace cbm::algo::trd
      ** @brief Create an actual digi from the raw message
      ** @param raw
      **/
-    CbmTrdDigi makeDigi(CbmTrdRawMessageSpadic raw);
+    CbmTrdDigi makeDigi(CbmTrdRawMessageSpadic raw, MsContext& ctx) const;
 
     /**
      ** @brief Get the Bin Time Shift value
      ** @param samples
      ** @return ULong64_t
      **/
-    uint64_t GetBinTimeShift(const std::vector<std::int16_t>* /*samples*/) { return 0.; };
+    uint64_t GetBinTimeShift(const std::vector<std::int16_t>* /*samples*/) const { return 0.; };
 
     /**
      ** @brief Get the MaxAdc value
      ** @param samples
      ** @return Float_t
      **/
-    std::float_t GetMaxAdcValue(const std::vector<std::int16_t>* samples);
+    std::float_t GetMaxAdcValue(const std::vector<std::int16_t>* samples) const;
 
     /**
      ** @brief Get the Baseline value
@@ -234,27 +246,18 @@ namespace cbm::algo::trd
      ** @param samples
      ** @return float_t
      **/
-    float_t GetBaseline(const std::vector<std::int16_t>* samples);
+    float_t GetBaseline(const std::vector<std::int16_t>* samples) const;
 
     /** @brief Identify the message type of a given 32bit frame inside a Microslice */
-    Spadic::MsMessageType getMessageType(const std::uint32_t frame);
-
-    /** @brief Counter for the ts_msb used to reconstruct the time */
-    std::vector<std::uint8_t> fNrTsMsbVec = {};
+    Spadic::MsMessageType getMessageType(const std::uint32_t frame) const;
 
     /** @brief Bytes per spadic frame stored in the microslices */
-    static const std::uint8_t fBytesPerWord = 8;
+    static constexpr std::uint8_t fBytesPerWord = 8;
 
     /** For the msg format used from 2021 ongoing we have 2 parallel streams per word. *
      ** All data from eLinks 0..20 go to one stream and 21..41 to the other            */
     /** @brief Number of streams per word **/
-    static const std::uint8_t fStreamsPerWord = 2;
-
-    /** @brief Start time of the current µSlice relative to the Timeslice start time in Spadic CC. */
-    size_t fMsStartTimeRelCC = 0;
-
-    /** @brief Time of the last succesful digest hit message */
-    size_t fLastFulltime = 0;
+    static constexpr std::uint8_t fStreamsPerWord = 2;
 
     /** @brief Number of samples not considered for max adc */
     static constexpr size_t fNrOfPresamples = 1;
diff --git a/algo/detectors/trd2d/ReadoutConfig.cxx b/algo/detectors/trd2d/ReadoutConfig.cxx
index 90914b95b9..7352f30eb0 100644
--- a/algo/detectors/trd2d/ReadoutConfig.cxx
+++ b/algo/detectors/trd2d/ReadoutConfig.cxx
@@ -72,7 +72,7 @@ namespace cbm::algo::trd2d
       for (uint8_t crob_id = 0; crob_id < NCROBMOD; crob_id++) {
         uint16_t eq_id = entry.second[crob_id];
         if (!eq_id) continue;
-        fReadoutMap[eq_id] = std::make_pair(mod_id, crob_id);
+        fReadoutMap[eq_id] = {mod_id, crob_id};
       }
     }
   }
@@ -95,7 +95,8 @@ namespace cbm::algo::trd2d
         for (auto chanMap : asicMap.second) {
           uint16_t chanId                              = chanMap.first;
           std::tuple<int32_t, bool, uint64_t> chanPars = chanMap.second;
-          fChannelMap[equipmentId][asicId][chanId]     = chanPars;
+          ChanMapping entry = {std::get<0>(chanPars), std::get<1>(chanPars), std::get<2>(chanPars)};
+          fChannelMap[equipmentId][asicId][chanId] = entry;
         }
       }
     }
@@ -104,9 +105,9 @@ namespace cbm::algo::trd2d
 
 
   // ---  Mapping (equimentId, asicId, channel) -> (pad address, mask flag, daq offset)  -----
-  std::tuple<int32_t, bool, uint64_t> ReadoutConfig::ChanMap(uint16_t equipId, uint16_t asic, uint16_t chan)
+  ReadoutConfig::ChanMapping ReadoutConfig::ChanMap(uint16_t equipId, uint16_t asic, uint16_t chan)
   {
-    std::tuple<int32_t, bool, uint64_t> result = std::make_tuple(-1, false, 0);
+    ChanMapping result                         = {-1, false, 0};
     auto it                                    = fChannelMap.find(equipId);
     if (it != fChannelMap.end()) {
       if (asic < fChannelMap[equipId].size()) {
@@ -119,9 +120,9 @@ namespace cbm::algo::trd2d
 
 
   // ---  Mapping (equimentId) -> (module id, crob id)  ---------------------------------
-  std::pair<uint16_t, uint8_t> ReadoutConfig::CompMap(uint16_t equipId)
+  ReadoutConfig::CompMapping ReadoutConfig::CompMap(uint16_t equipId)
   {
-    std::pair<uint16_t, uint8_t> result(0, 0);
+    CompMapping result = {};
     auto equipIter = fReadoutMap.find(equipId);
     if (equipIter != fReadoutMap.end()) { result = equipIter->second; }
     return result;
@@ -136,8 +137,8 @@ namespace cbm::algo::trd2d
     for (auto comp : fReadoutMap) {
       uint16_t equipmentId = comp.first;
       auto value           = comp.second;
-      uint16_t moduleId    = value.first;
-      uint16_t crobId      = value.second;
+      uint16_t moduleId    = value.moduleId;
+      uint16_t crobId      = value.crobId;
       ss << "Equipment " << equipmentId << " Module " << moduleId << " Crob " << crobId << "\n";
     }
     ss << "\n";
@@ -152,9 +153,9 @@ namespace cbm::algo::trd2d
         ss << "\n Equipment " << equipmentId << " AsicId " << asicId << " nChans " << numChans;
         for (size_t chanId = 0; chanId < numChans; chanId++) {
           auto entry         = asicMap.second.at(asicId).at(chanId);
-          int32_t address    = std::get<0>(entry);
-          bool isMasked      = std::get<1>(entry);
-          uint64_t daqOffset = std::get<2>(entry);
+          int32_t address    = entry.padAddress;
+          bool isMasked      = entry.rPairingFlag;
+          uint64_t daqOffset = entry.daqOffset;
           ss << "\n Equipment " << equipmentId << " AsicId " << asicId << " chanID " << chanId << " pad address "
              << address << " mask " << isMasked << " daq offset " << daqOffset;
         }
diff --git a/algo/detectors/trd2d/ReadoutConfig.h b/algo/detectors/trd2d/ReadoutConfig.h
index f3f1bf7921..3d42facdc8 100644
--- a/algo/detectors/trd2d/ReadoutConfig.h
+++ b/algo/detectors/trd2d/ReadoutConfig.h
@@ -11,6 +11,7 @@
 #include <vector>
 
 #include "Unpack.h"
+#include "config/Property.h"
 
 namespace cbm::algo::trd2d
 {
@@ -31,6 +32,26 @@ namespace cbm::algo::trd2d
   class ReadoutConfig {
 
   public:
+    struct CompMapping {
+      uint16_t moduleId;
+      uint8_t crobId;
+
+      CBM_FORMAT(YAML::Flow);
+      CBM_PROPERTIES(config::Property(&CompMapping::moduleId, "moduleId", "Module ID"),
+                     config::Property(&CompMapping::crobId, "crobId", "CROB ID"));
+    };
+
+    struct ChanMapping {
+      int32_t padAddress;
+      bool rPairingFlag;
+      uint64_t daqOffset;
+
+      CBM_FORMAT(YAML::Flow);
+      CBM_PROPERTIES(config::Property(&ChanMapping::padAddress, "padAddress", "Pad address"),
+                     config::Property(&ChanMapping::rPairingFlag, "rPairingFlag", "R pairing flag"),
+                     config::Property(&ChanMapping::daqOffset, "daqOffset", "DAQ offset"));
+    };
+
     /** @brief Constructor **/
     ReadoutConfig();
 
@@ -65,7 +86,7 @@ namespace cbm::algo::trd2d
      ** @param equipId     Equipment identifier (component)
      ** @return pair (module id, crob id)
      */
-    std::pair<uint16_t, uint8_t> CompMap(uint16_t equipId);
+    CompMapping CompMap(uint16_t equipId);
 
 
     /** @brief API: Mapping from component, asic and channel to tuple (pad address, R pairing flag, daq offset)
@@ -74,7 +95,7 @@ namespace cbm::algo::trd2d
      ** @param channel     Channel number within CROB
      ** @return tuple (pad address, R pairing flag, daq offset)
      */
-    std::tuple<int32_t, bool, uint64_t> ChanMap(uint16_t equipId, uint16_t asic, uint16_t chan);
+    ChanMapping ChanMap(uint16_t equipId, uint16_t asic, uint16_t chan);
 
 
     /** @brief Debug output of readout map **/
@@ -90,11 +111,17 @@ namespace cbm::algo::trd2d
   private:
     // --- TRD2D readout map
     // --- Map index: (equipment), map value: (module id, crob id)
-    std::map<uint16_t, std::pair<uint16_t, uint8_t>> fReadoutMap = {};  //!
+    std::map<uint16_t, CompMapping> fReadoutMap = {};  //!
 
     // --- TRD2D channel map
     // --- Map index: (equipment, asic, chan), map value: (pad address, mask flag, daq offset)
-    std::map<uint16_t, std::vector<std::vector<std::tuple<int32_t, bool, uint64_t>>>> fChannelMap = {};  //!
+    std::map<uint16_t, std::vector<std::vector<ChanMapping>>> fChannelMap = {};  //!
+
+    CBM_PROPERTIES(config::Property(&ReadoutConfig::fReadoutMap, "readoutMap", "Maps equipment to module and CROB ID",
+                                    YAML::Hex),
+                   config::Property(&ReadoutConfig::fChannelMap, "channelMap",
+                                    "Maps equipment, ASIC and channel to pad address, R pairing flag and DAQ offset",
+                                    {}, YAML::Hex));
   };
 
 }  // namespace cbm::algo::trd2d
diff --git a/algo/detectors/trd2d/Unpack.cxx b/algo/detectors/trd2d/Unpack.cxx
index 9e5b563b2a..89018954fa 100644
--- a/algo/detectors/trd2d/Unpack.cxx
+++ b/algo/detectors/trd2d/Unpack.cxx
@@ -27,13 +27,12 @@ namespace cbm::algo::trd2d
 
   // ----   Algorithm execution   ---------------------------------------------
   Unpack::resultType Unpack::operator()(const uint8_t* msContent, const fles::MicrosliceDescriptor& msDescr,
-                                        const uint64_t tTimeslice)
+                                        const uint64_t tTimeslice) const
   {
     // --- Output data
     resultType result = {};
 
-    // Reset monitoring data
-    fMonitor = UnpackMonitorData();
+    MsContext ctx = {};
 
     // define time wrt start of time slice in TRD/FASP clks [80 MHz]. Contains:
     //  - relative offset of the MS wrt the TS
@@ -63,7 +62,7 @@ namespace cbm::algo::trd2d
       if (isaux) {
         if (ch_id == 0) {
           // clear buffer
-          if (vMess.size()) { pushDigis(vMess, time); }
+          if (vMess.size()) { pushDigis(vMess, time, ctx); }
           vMess.clear();
 
           lFaspOld = 0xff;
@@ -72,28 +71,28 @@ namespace cbm::algo::trd2d
         continue;
       }
       if (lFaspOld != fasp_id) {
-        if (vMess.size()) { pushDigis(vMess, time); }
+        if (vMess.size()) { pushDigis(vMess, time, ctx); }
         vMess.clear();
         lFaspOld = fasp_id;
       }
       if (data & 0x1) {
-        fMonitor.fNumErrEndBitSet++;
+        ctx.fMonitor.fNumErrEndBitSet++;
         continue;
       }
       if (data & 0x2000) {
-        fMonitor.fNumSelfTriggeredData++;
+        ctx.fMonitor.fNumSelfTriggeredData++;
         data &= 0x1fff;
       }
       vMess.emplace_back(ch_id, kData, slice, data >> 1, crob_id, lFaspOld);
     }
-    result.first  = FinalizeComponent();  //TO DO: Original (non-algo) version calls this after MS loop!!
-    result.second = fMonitor;
+    result.first  = FinalizeComponent(ctx);  //TO DO: Original (non-algo) version calls this after MS loop!!
+    result.second = ctx.fMonitor;
 
     return result;
   }
 
   //_________________________________________________________________________________
-  bool Unpack::pushDigis(std::vector<FaspMessage> messes, const uint64_t time)
+  bool Unpack::pushDigis(std::vector<FaspMessage> messes, const uint64_t time, MsContext& ctx) const
   {
     const uint16_t mod_id        = fParams.fModId;
     const UnpackAsicPar& asicPar = fParams.fAsicParams[messes[0].fasp];
@@ -105,7 +104,7 @@ namespace cbm::algo::trd2d
       const uint64_t lTime                = time + tdaqOffset + imess.tlab;
       const uint16_t lchR                 = hasPairingR ? imess.data : 0;
       const uint16_t lchT                 = hasPairingR ? 0 : imess.data;
-      std::vector<CbmTrdDigi>& digiBuffer = fDigiBuffer[pad];
+      std::vector<CbmTrdDigi>& digiBuffer = ctx.fDigiBuffer[pad];
 
       if (digiBuffer.size() == 0) {  // init pad position in map and build digi for message
         digiBuffer.emplace_back(pad, lchT, lchR, lTime);
@@ -161,14 +160,14 @@ namespace cbm::algo::trd2d
     return true;
   }
 
-  std::vector<CbmTrdDigi> Unpack::FinalizeComponent()
+  std::vector<CbmTrdDigi> Unpack::FinalizeComponent(MsContext& ctx) const
   {
     std::vector<CbmTrdDigi> outputDigis;
 
     for (uint16_t ipad(0); ipad < NFASPMOD * NFASPCH; ipad++) {
-      if (!fDigiBuffer[ipad].size()) continue;
+      if (!ctx.fDigiBuffer[ipad].size()) continue;
       uint nIncomplete(0);
-      for (auto id = fDigiBuffer[ipad].begin(); id != fDigiBuffer[ipad].end(); id++) {
+      for (auto id = ctx.fDigiBuffer[ipad].begin(); id != ctx.fDigiBuffer[ipad].end(); id++) {
         double r, t;
         int32_t dt;
         r = (*id).GetCharge(t, dt);
@@ -183,9 +182,9 @@ namespace cbm::algo::trd2d
         outputDigis.emplace_back(std::move((*id)));
       }
       // clear digi buffer wrt the digi which was forwarded to higher structures
-      fDigiBuffer[ipad].clear();
+      ctx.fDigiBuffer[ipad].clear();
       if (nIncomplete > 2) {
-        fMonitor.fNumIncompleteDigis++;  //TO DO: This must be moved if finalization is done after MS loop
+        ctx.fMonitor.fNumIncompleteDigis++;  //TO DO: This must be moved if finalization is done after MS loop
       }
     }
     return outputDigis;
diff --git a/algo/detectors/trd2d/Unpack.h b/algo/detectors/trd2d/Unpack.h
index 1421df9180..408b659700 100644
--- a/algo/detectors/trd2d/Unpack.h
+++ b/algo/detectors/trd2d/Unpack.h
@@ -130,22 +130,28 @@ namespace cbm::algo::trd2d
      ** @return TRD digi data
      **/
     resultType operator()(const uint8_t* msContent, const fles::MicrosliceDescriptor& msDescr,
-                          const uint64_t tTimeslice);
+                          const uint64_t tTimeslice) const;
 
     /** @brief Set the parameter container
      ** @param params Pointer to parameter container
      **/
     void SetParams(std::unique_ptr<UnpackPar> params) { fParams = *(std::move(params)); }
 
+  private:  // Types
+    struct MsContext {
+      UnpackMonitorData fMonitor;  ///< Container for monitoring data
+
+      std::array<std::vector<CbmTrdDigi>, NFASPMOD* NFASPCH> fDigiBuffer = {
+        {}};  ///> Buffered digi for each pad in CROB component
+    };
+
   private:                   // members
     UnpackPar fParams = {};  ///< Parameter container
 
-    UnpackMonitorData fMonitor;  ///< Container for monitoring data
-
-    bool pushDigis(std::vector<FaspMessage> messages, const uint64_t time);
+    bool pushDigis(std::vector<FaspMessage> messages, const uint64_t time, MsContext& ctx) const;
 
     /** @brief Finalize component (e.g. copy from temp buffers)  */
-    std::vector<CbmTrdDigi> FinalizeComponent();
+    std::vector<CbmTrdDigi> FinalizeComponent(MsContext& ctx) const;
 
     // Constants
     /** @brief Bytes per FASP frame stored in the microslices (32 bits words)
@@ -164,9 +170,6 @@ namespace cbm::algo::trd2d
    * c - channel id
    */
     static const std::uint8_t fBytesPerWord = 4;
-
-    std::array<std::vector<CbmTrdDigi>, NFASPMOD* NFASPCH> fDigiBuffer = {
-      {}};  ///> Buffered digi for each pad in CROB component
   };
 
 
diff --git a/algo/global/Reco.cxx b/algo/global/Reco.cxx
index 14ce8b2a71..17da31ad94 100644
--- a/algo/global/Reco.cxx
+++ b/algo/global/Reco.cxx
@@ -27,14 +27,6 @@ void Reco::Validate(const Options& opts)
   if (!fs::exists(opts.ParamsDir())) {
     throw std::runtime_error("ParamsDir does not exist: " + opts.ParamsDir().string());
   }
-
-  for (auto detector : opts.Detectors()) {
-    switch (detector) {
-      case fles::Subsystem::TRD:
-      case fles::Subsystem::TRD2D: throw std::runtime_error(fmt::format("Unsupported system: {}", ToString(detector)));
-      default: break;
-    }
-  }
 }
 
 void Reco::Init(const Options& opts)
diff --git a/algo/params/Trd2dReadoutSetup.yaml b/algo/params/Trd2dReadoutSetup.yaml
new file mode 100644
index 0000000000..32ff7a1900
--- /dev/null
+++ b/algo/params/Trd2dReadoutSetup.yaml
@@ -0,0 +1,1846 @@
+---
+readoutMap:
+  65473: {moduleId: 5, crobId: 2}
+  65474: {moduleId: 5, crobId: 0}
+  65477: {moduleId: 5, crobId: 1}
+channelMap:
+  65473:
+    -
+      - {padAddress: -1120, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 1119, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1119, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1118, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1118, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1117, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1117, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1116, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1116, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 1115, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -1115, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1114, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1114, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1113, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1113, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1112, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -1112, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1111, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1111, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1110, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1110, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1109, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1109, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1108, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1108, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1107, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1107, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1106, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1106, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1105, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1105, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1104, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -1104, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1103, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1103, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1102, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1102, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1101, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1101, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1100, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1100, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1099, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1099, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1098, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1098, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1097, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1097, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1096, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -1168, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1168, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1169, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1169, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1170, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1170, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1171, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1171, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1172, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1172, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1173, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1173, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1174, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1174, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1175, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1175, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -1176, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1176, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1177, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1177, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1178, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1178, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1179, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1179, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1180, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1180, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1181, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1181, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1182, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1182, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1183, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1183, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -1184, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1184, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1185, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1185, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1186, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1186, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1187, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1187, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1188, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1188, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1189, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1189, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1190, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1190, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1191, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1191, rPairingFlag: true, daqOffset: 3}
+    -
+      - {padAddress: -1144, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1143, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1143, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1142, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1142, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1141, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1141, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1140, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1140, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1139, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1139, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1138, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1138, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1137, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1137, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1136, rPairingFlag: true, daqOffset: 0}
+    -
+      - {padAddress: -1136, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 1135, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1135, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1134, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1134, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1133, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1133, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1132, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1132, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1131, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1131, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1130, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1130, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1129, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1129, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1128, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -1128, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1127, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -1127, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1126, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1126, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1125, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1125, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1124, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1124, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1123, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1123, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1122, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1122, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1121, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1121, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1120, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -1192, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1192, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1193, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1193, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1194, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1194, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1195, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1195, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1196, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1196, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1197, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1197, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1198, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1198, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1199, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1199, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -1200, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1200, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1201, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1201, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1202, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1202, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1203, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1203, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1204, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1204, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1205, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1205, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1206, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1206, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1207, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1207, rPairingFlag: true, daqOffset: 3}
+    -
+      - {padAddress: -1208, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1208, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1209, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1209, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1210, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1210, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1211, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1211, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1212, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1212, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1213, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1213, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1214, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1214, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1215, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1215, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -1264, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 1263, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1263, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1262, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1262, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1261, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1261, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1260, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1260, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 1259, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1259, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1258, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1258, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1257, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1257, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1256, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -1256, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1255, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1255, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 1254, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1254, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1253, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1253, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 1252, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1252, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1251, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1251, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1250, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1250, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1249, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1249, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1248, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -1248, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 1247, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -1247, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 1246, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1246, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1245, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1245, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1244, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1244, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 1243, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1243, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1242, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1242, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1241, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1241, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 1240, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -1312, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1312, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1313, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1313, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1314, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1314, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1315, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1315, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1316, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1316, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1317, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1317, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1318, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1318, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1319, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1319, rPairingFlag: true, daqOffset: 3}
+    -
+      - {padAddress: -1320, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1320, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1321, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1321, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1322, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1322, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1323, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1323, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1324, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1324, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1325, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1325, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1326, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1326, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1327, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1327, rPairingFlag: true, daqOffset: 3}
+    -
+      - {padAddress: -1328, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1328, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1329, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1329, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1330, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1330, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1331, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1331, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1332, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1332, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1333, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1333, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1334, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1334, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1335, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1335, rPairingFlag: true, daqOffset: 3}
+    -
+      - {padAddress: -1288, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1287, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1287, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1286, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1286, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1285, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1285, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1284, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1284, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1283, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1283, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 1282, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1282, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1281, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1281, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1280, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -1280, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 1279, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -1279, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1278, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1278, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 1277, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1277, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1276, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1276, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1275, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1275, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1274, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1274, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1273, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1273, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1272, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -1272, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 1271, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1271, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1270, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1270, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1269, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1269, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1268, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1268, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1267, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1267, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1266, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1266, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1265, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -1265, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 1264, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -1336, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1336, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1337, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1337, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1338, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1338, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1339, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1339, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1340, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1340, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1341, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1341, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1342, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1342, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1343, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1343, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -1344, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1344, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1345, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1345, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1346, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1346, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1347, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1347, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1348, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1348, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1349, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1349, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1350, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1350, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1351, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1351, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -1352, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1352, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1353, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1353, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1354, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1354, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1355, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1355, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1356, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1356, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1357, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1357, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1358, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1358, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1359, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1359, rPairingFlag: true, daqOffset: 3}
+    -
+      - {padAddress: -976, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 975, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -975, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 974, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -974, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 973, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -973, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 972, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -972, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 971, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -971, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 970, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -970, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 969, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -969, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 968, rPairingFlag: true, daqOffset: 0}
+    -
+      - {padAddress: -968, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 967, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -967, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 966, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -966, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 965, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -965, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 964, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -964, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 963, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -963, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 962, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -962, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 961, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -961, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 960, rPairingFlag: true, daqOffset: 0}
+    -
+      - {padAddress: -960, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 959, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -959, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 958, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -958, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 957, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -957, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 956, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -956, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 955, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -955, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 954, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -954, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 953, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -953, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 952, rPairingFlag: true, daqOffset: 0}
+    -
+      - {padAddress: -1024, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1024, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1025, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1025, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1026, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1026, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1027, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1027, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1028, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1028, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1029, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1029, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1030, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1030, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1031, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1031, rPairingFlag: true, daqOffset: 3}
+    -
+      - {padAddress: -1032, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1032, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1033, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1033, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1034, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1034, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1035, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1035, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1036, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1036, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1037, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1037, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1038, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1038, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1039, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1039, rPairingFlag: true, daqOffset: 3}
+    -
+      - {padAddress: -1040, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1040, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1041, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1041, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1042, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1042, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1043, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1043, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1044, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1044, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1045, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1045, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1046, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1046, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1047, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1047, rPairingFlag: true, daqOffset: 3}
+    -
+      - {padAddress: -1000, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 999, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -999, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 998, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -998, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 997, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -997, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 996, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -996, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 995, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -995, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 994, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -994, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 993, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -993, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 992, rPairingFlag: true, daqOffset: 0}
+    -
+      - {padAddress: -992, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 991, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -991, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 990, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -990, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 989, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -989, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 988, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -988, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 987, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -987, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 986, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -986, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 985, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -985, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 984, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -984, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 983, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -983, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 982, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -982, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 981, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -981, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 980, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -980, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 979, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -979, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 978, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -978, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 977, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -977, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 976, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -1048, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1048, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1049, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1049, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1050, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1050, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1051, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1051, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1052, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1052, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1053, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1053, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1054, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1054, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1055, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1055, rPairingFlag: true, daqOffset: 3}
+    -
+      - {padAddress: -1056, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1056, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1057, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1057, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1058, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1058, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1059, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1059, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1060, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1060, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1061, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1061, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1062, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1062, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1063, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1063, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -1064, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1064, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1065, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1065, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1066, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1066, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1067, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1067, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -1068, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1068, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1069, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 1069, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1070, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1070, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -1071, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 1071, rPairingFlag: true, daqOffset: 3}
+  65474:
+    -
+      - {padAddress: -112, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 111, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -111, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 110, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -110, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 109, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -109, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 108, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -108, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 107, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -107, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 106, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -106, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 105, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -105, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 104, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -104, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 103, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -103, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 102, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -102, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 101, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -101, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 100, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -100, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 99, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -99, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 98, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -98, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 97, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -97, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 96, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -96, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 95, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -95, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 94, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -94, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 93, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -93, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 92, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -92, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 91, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -91, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 90, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -90, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 89, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -89, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 88, rPairingFlag: true, daqOffset: 0}
+    -
+      - {padAddress: -160, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 160, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -161, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 161, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -162, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 162, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -163, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 163, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -164, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 164, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -165, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 165, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -166, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 166, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -167, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 167, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -168, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 168, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -169, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 169, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -170, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 170, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -171, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 171, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -172, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 172, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -173, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 173, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -174, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 174, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -175, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 175, rPairingFlag: true, daqOffset: 3}
+    -
+      - {padAddress: -176, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 176, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -177, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 177, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -178, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 178, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -179, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 179, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -180, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 180, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -181, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 181, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -182, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 182, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -183, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 183, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -136, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 135, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -135, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 134, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -134, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 133, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -133, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 132, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -132, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 131, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -131, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 130, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -130, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 129, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -129, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 128, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -128, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 127, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -127, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 126, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -126, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 125, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -125, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 124, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -124, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 123, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -123, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 122, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -122, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 121, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -121, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 120, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -120, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 119, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -119, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 118, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -118, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 117, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -117, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 116, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -116, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 115, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -115, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 114, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -114, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 113, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -113, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 112, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -184, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 184, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -185, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 185, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -186, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 186, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -187, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 187, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -188, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 188, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -189, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 189, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -190, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 190, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -191, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 191, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -192, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 192, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -193, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 193, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -194, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 194, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -195, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 195, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -196, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 196, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -197, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 197, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -198, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 198, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -199, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 199, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -200, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 200, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -201, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 201, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -202, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 202, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -203, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 203, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -204, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 204, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -205, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 205, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -206, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 206, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -207, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 207, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -256, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 255, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -255, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 254, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -254, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 253, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -253, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 252, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -252, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 251, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -251, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 250, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -250, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 249, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -249, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 248, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -248, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 247, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -247, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 246, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -246, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 245, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -245, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 244, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -244, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 243, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -243, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 242, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -242, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 241, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -241, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 240, rPairingFlag: true, daqOffset: 0}
+    -
+      - {padAddress: -240, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 239, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -239, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 238, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -238, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 237, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -237, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 236, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -236, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 235, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -235, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 234, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -234, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 233, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -233, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 232, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -304, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 304, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -305, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 305, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -306, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 306, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -307, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 307, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -308, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 308, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -309, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 309, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -310, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 310, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -311, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 311, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -312, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 312, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -313, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 313, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -314, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 314, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -315, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 315, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -316, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 316, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -317, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 317, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -318, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 318, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -319, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 319, rPairingFlag: true, daqOffset: 3}
+    -
+      - {padAddress: -320, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 320, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -321, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 321, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -322, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 322, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -323, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 323, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -324, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 324, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -325, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 325, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -326, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 326, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -327, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 327, rPairingFlag: true, daqOffset: 3}
+    -
+      - {padAddress: -280, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 279, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -279, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 278, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -278, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 277, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -277, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 276, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -276, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 275, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -275, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 274, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -274, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 273, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -273, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 272, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -272, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 271, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -271, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 270, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -270, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 269, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -269, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 268, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -268, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 267, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -267, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 266, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -266, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 265, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -265, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 264, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -264, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 263, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -263, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 262, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -262, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 261, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -261, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 260, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -260, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 259, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -259, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 258, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -258, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 257, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -257, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 256, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -328, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 328, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -329, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 329, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -330, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 330, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -331, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 331, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -332, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 332, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -333, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 333, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -334, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 334, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -335, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 335, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -336, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 336, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -337, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 337, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -338, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 338, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -339, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 339, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -340, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 340, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -341, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 341, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -342, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 342, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -343, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 343, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -344, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 344, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -345, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 345, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -346, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 346, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -347, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 347, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -348, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 348, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -349, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 349, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -350, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 350, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -351, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 351, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -400, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 399, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -399, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 398, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -398, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 397, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -397, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 396, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -396, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 395, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -395, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 394, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -394, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 393, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -393, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 392, rPairingFlag: true, daqOffset: 0}
+    -
+      - {padAddress: -392, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 391, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -391, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 390, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -390, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 389, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -389, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 388, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -388, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 387, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -387, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 386, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -386, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 385, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -385, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 384, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -384, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 383, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -383, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 382, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -382, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 381, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -381, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 380, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -380, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 379, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -379, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 378, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -378, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 377, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -377, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 376, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -448, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 448, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -449, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 449, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -450, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 450, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -451, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 451, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -452, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 452, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -453, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 453, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -454, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 454, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -455, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 455, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -456, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 456, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -457, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 457, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -458, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 458, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -459, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 459, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -460, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 460, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -461, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 461, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -462, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 462, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -463, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 463, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -464, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 464, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -465, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 465, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -466, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 466, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -467, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 467, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -468, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 468, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -469, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 469, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -470, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 470, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -471, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 471, rPairingFlag: true, daqOffset: 3}
+    -
+      - {padAddress: -424, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 423, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -423, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 422, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -422, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 421, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -421, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 420, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -420, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 419, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -419, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 418, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -418, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 417, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -417, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 416, rPairingFlag: true, daqOffset: 0}
+    -
+      - {padAddress: -416, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 415, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -415, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 414, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -414, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 413, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -413, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 412, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -412, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 411, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -411, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 410, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -410, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 409, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -409, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 408, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -408, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 407, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -407, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 406, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -406, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 405, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -405, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 404, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -404, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 403, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -403, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 402, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -402, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 401, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -401, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 400, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -472, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 472, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -473, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 473, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -474, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 474, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -475, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 475, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -476, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 476, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -477, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 477, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -478, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 478, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -479, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 479, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -480, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 480, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -481, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 481, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -482, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 482, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -483, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 483, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -484, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 484, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -485, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 485, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -486, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 486, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -487, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 487, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -488, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 488, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -489, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 489, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -490, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 490, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -491, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 491, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -492, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 492, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -493, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 493, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -494, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 494, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -495, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 495, rPairingFlag: false, daqOffset: 3}
+  65477:
+    -
+      - {padAddress: -544, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 543, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -543, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 542, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -542, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 541, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -541, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 540, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -540, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 539, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -539, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 538, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -538, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 537, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -537, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 536, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -536, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 535, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -535, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 534, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -534, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 533, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -533, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 532, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -532, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 531, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -531, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 530, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -530, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 529, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -529, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 528, rPairingFlag: true, daqOffset: 0}
+    -
+      - {padAddress: -528, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 527, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -527, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 526, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -526, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 525, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -525, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 524, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -524, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 523, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -523, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 522, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -522, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 521, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -521, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 520, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -592, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 592, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -593, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 593, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -594, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 594, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -595, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 595, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -596, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 596, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -597, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 597, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -598, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 598, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -599, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 599, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -600, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 600, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -601, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 601, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -602, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 602, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -603, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 603, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -604, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 604, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -605, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 605, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -606, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 606, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -607, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 607, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -608, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 608, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -609, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 609, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -610, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 610, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -611, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 611, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -612, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 612, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -613, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 613, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -614, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 614, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -615, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 615, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -568, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 567, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -567, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 566, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -566, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 565, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -565, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 564, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -564, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 563, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -563, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 562, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -562, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 561, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -561, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 560, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -560, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 559, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -559, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 558, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -558, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 557, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -557, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 556, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -556, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 555, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -555, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 554, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -554, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 553, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -553, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 552, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -552, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 551, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -551, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 550, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -550, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 549, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -549, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 548, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -548, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 547, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -547, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 546, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -546, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 545, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -545, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 544, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -616, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 616, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -617, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 617, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -618, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 618, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -619, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 619, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -620, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 620, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -621, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 621, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -622, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 622, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -623, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 623, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -624, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 624, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -625, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 625, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -626, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 626, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -627, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 627, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -628, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 628, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -629, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 629, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -630, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 630, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -631, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 631, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -632, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 632, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -633, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 633, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -634, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 634, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -635, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 635, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -636, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 636, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -637, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 637, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -638, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 638, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -639, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 639, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -688, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 687, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -687, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 686, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -686, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 685, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -685, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 684, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -684, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 683, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -683, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 682, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -682, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 681, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -681, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 680, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -680, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 679, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -679, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 678, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -678, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 677, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -677, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 676, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -676, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 675, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -675, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 674, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -674, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 673, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -673, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 672, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -672, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 671, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -671, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 670, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -670, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 669, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -669, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 668, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -668, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 667, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -667, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 666, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -666, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 665, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -665, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 664, rPairingFlag: true, daqOffset: 0}
+    -
+      - {padAddress: -736, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 736, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -737, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 737, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -738, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 738, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -739, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 739, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -740, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 740, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -741, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 741, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -742, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 742, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -743, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 743, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -744, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 744, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -745, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 745, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -746, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 746, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -747, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 747, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -748, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 748, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -749, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 749, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -750, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 750, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -751, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 751, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -752, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 752, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -753, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 753, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -754, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 754, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -755, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 755, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -756, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 756, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -757, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 757, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -758, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 758, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -759, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 759, rPairingFlag: true, daqOffset: 3}
+    -
+      - {padAddress: -712, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 711, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -711, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 710, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -710, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 709, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -709, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 708, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -708, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 707, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -707, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 706, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -706, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 705, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -705, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 704, rPairingFlag: true, daqOffset: 0}
+    -
+      - {padAddress: -704, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 703, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -703, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 702, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -702, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 701, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -701, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 700, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -700, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 699, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -699, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 698, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -698, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 697, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -697, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 696, rPairingFlag: true, daqOffset: 0}
+    -
+      - {padAddress: -696, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 695, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -695, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 694, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -694, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 693, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -693, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 692, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -692, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 691, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -691, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 690, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -690, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 689, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -689, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 688, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -760, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 760, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -761, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 761, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -762, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 762, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -763, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 763, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -764, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 764, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -765, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 765, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -766, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 766, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -767, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 767, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -768, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 768, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -769, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 769, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -770, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 770, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -771, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 771, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -772, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 772, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -773, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 773, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -774, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 774, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -775, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 775, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -776, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 776, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -777, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 777, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -778, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 778, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -779, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 779, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -780, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 780, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -781, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 781, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -782, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 782, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -783, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 783, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -832, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 831, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -831, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 830, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -830, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 829, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -829, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 828, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -828, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 827, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -827, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 826, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -826, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 825, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -825, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 824, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -824, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 823, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -823, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 822, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -822, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 821, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -821, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 820, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -820, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 819, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -819, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 818, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -818, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 817, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -817, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 816, rPairingFlag: true, daqOffset: 0}
+    -
+      - {padAddress: -816, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 815, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -815, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 814, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -814, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 813, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -813, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 812, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -812, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 811, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -811, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 810, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -810, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 809, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -809, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 808, rPairingFlag: true, daqOffset: 0}
+    -
+      - {padAddress: -880, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 880, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -881, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 881, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -882, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 882, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -883, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 883, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -884, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 884, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -885, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 885, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -886, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 886, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -887, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 887, rPairingFlag: true, daqOffset: 3}
+    -
+      - {padAddress: -888, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 888, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -889, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 889, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -890, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 890, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -891, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 891, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -892, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 892, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -893, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 893, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -894, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 894, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: -895, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 895, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -896, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 896, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -897, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 897, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -898, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 898, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -899, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 899, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -900, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 900, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -901, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 901, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -902, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 902, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -903, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 903, rPairingFlag: true, daqOffset: 3}
+    -
+      - {padAddress: -856, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 855, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -855, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 854, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -854, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 853, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -853, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 852, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -852, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 851, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -851, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 850, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -850, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 849, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -849, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 848, rPairingFlag: true, daqOffset: 0}
+    -
+      - {padAddress: -848, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 847, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -847, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 846, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -846, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 845, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -845, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 844, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -844, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 843, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -843, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 842, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -842, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 841, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -841, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 840, rPairingFlag: false, daqOffset: 0}
+    -
+      - {padAddress: -840, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 839, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -839, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 838, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -838, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 837, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -837, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 836, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -836, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 835, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: -835, rPairingFlag: false, daqOffset: 0}
+      - {padAddress: 834, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -834, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 833, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: -833, rPairingFlag: true, daqOffset: 0}
+      - {padAddress: 832, rPairingFlag: true, daqOffset: 0}
+    -
+      - {padAddress: -904, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 904, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -905, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 905, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -906, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 906, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -907, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 907, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -908, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 908, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -909, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 909, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -910, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 910, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -911, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 911, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -912, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 912, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -913, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 913, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -914, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 914, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -915, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 915, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -916, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 916, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -917, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 917, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -918, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 918, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -919, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 919, rPairingFlag: false, daqOffset: 3}
+    -
+      - {padAddress: -920, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 920, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -921, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 921, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -922, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 922, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -923, rPairingFlag: true, daqOffset: 3}
+      - {padAddress: 923, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -924, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 924, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -925, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 925, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -926, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 926, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: -927, rPairingFlag: false, daqOffset: 3}
+      - {padAddress: 927, rPairingFlag: false, daqOffset: 3}
+...
diff --git a/algo/params/TrdReadoutSetup.yaml b/algo/params/TrdReadoutSetup.yaml
new file mode 100644
index 0000000000..407e6a3e5e
--- /dev/null
+++ b/algo/params/TrdReadoutSetup.yaml
@@ -0,0 +1,1524 @@
+---
+readoutMap:
+  0x80d3:
+    -
+      - 37017
+      - 37017
+      - 37018
+      - 37018
+      - 37019
+      - 37019
+      - 37020
+      - 37020
+      - 37021
+      - 37021
+      - 37022
+      - 37022
+      - 37023
+      - 37023
+      - 37009
+      - 37009
+      - 37010
+      - 37010
+      - 37011
+      - 37011
+      - 37012
+      - 37012
+      - 37013
+      - 37013
+      - 37014
+      - 37014
+      - 37015
+      - 37015
+      - 37001
+      - 37001
+      - 37002
+      - 37002
+      - 37003
+      - 37003
+      - 37004
+      - 37004
+      - 37005
+      - 37005
+      - 37006
+      - 37006
+      - 37007
+      - 37007
+  0x80d5:
+    -
+      - 21017
+      - 21017
+      - 21018
+      - 21018
+      - 21019
+      - 21019
+      - 21020
+      - 21020
+      - 21021
+      - 21021
+      - 21022
+      - 21022
+      - 21023
+      - 21023
+      - 21009
+      - 21009
+      - 21010
+      - 21010
+      - 21011
+      - 21011
+      - 21012
+      - 21012
+      - 21013
+      - 21013
+      - 21014
+      - 21014
+      - 21015
+      - 21015
+      - 21001
+      - 21001
+      - 21002
+      - 21002
+      - 21003
+      - 21003
+      - 21004
+      - 21004
+      - 21005
+      - 21005
+      - 21006
+      - 21006
+      - 21007
+      - 21007
+channelMap:
+  32979:
+    -
+      -
+        - 663
+        - 535
+        - 662
+        - 534
+        - 661
+        - 659
+        - 533
+        - 660
+        - 658
+        - 532
+        - 531
+        - 657
+        - 656
+        - 530
+        - 529
+        - 528
+      -
+        - 671
+        - 670
+        - 669
+        - 543
+        - 542
+        - 668
+        - 667
+        - 541
+        - 539
+        - 666
+        - 540
+        - 538
+        - 665
+        - 537
+        - 664
+        - 536
+      -
+        - 679
+        - 551
+        - 678
+        - 550
+        - 677
+        - 675
+        - 549
+        - 676
+        - 674
+        - 548
+        - 547
+        - 673
+        - 672
+        - 546
+        - 545
+        - 544
+      -
+        - 687
+        - 686
+        - 685
+        - 559
+        - 558
+        - 684
+        - 683
+        - 557
+        - 555
+        - 682
+        - 556
+        - 554
+        - 681
+        - 553
+        - 680
+        - 552
+      -
+        - 695
+        - 567
+        - 694
+        - 566
+        - 693
+        - 691
+        - 565
+        - 692
+        - 690
+        - 564
+        - 563
+        - 689
+        - 688
+        - 562
+        - 561
+        - 560
+      -
+        - 703
+        - 702
+        - 701
+        - 575
+        - 574
+        - 700
+        - 699
+        - 573
+        - 571
+        - 698
+        - 572
+        - 570
+        - 697
+        - 569
+        - 696
+        - 568
+      -
+        - 711
+        - 583
+        - 710
+        - 582
+        - 709
+        - 707
+        - 581
+        - 708
+        - 706
+        - 580
+        - 579
+        - 705
+        - 704
+        - 578
+        - 577
+        - 576
+      -
+        - 719
+        - 718
+        - 717
+        - 591
+        - 590
+        - 716
+        - 715
+        - 589
+        - 587
+        - 714
+        - 588
+        - 586
+        - 713
+        - 585
+        - 712
+        - 584
+      -
+        - 727
+        - 599
+        - 726
+        - 598
+        - 725
+        - 723
+        - 597
+        - 724
+        - 722
+        - 596
+        - 595
+        - 721
+        - 720
+        - 594
+        - 593
+        - 592
+      -
+        - 735
+        - 734
+        - 733
+        - 607
+        - 606
+        - 732
+        - 731
+        - 605
+        - 603
+        - 730
+        - 604
+        - 602
+        - 729
+        - 601
+        - 728
+        - 600
+      -
+        - 743
+        - 615
+        - 742
+        - 614
+        - 741
+        - 739
+        - 613
+        - 740
+        - 738
+        - 612
+        - 611
+        - 737
+        - 736
+        - 610
+        - 609
+        - 608
+      -
+        - 751
+        - 750
+        - 749
+        - 623
+        - 622
+        - 748
+        - 747
+        - 621
+        - 619
+        - 746
+        - 620
+        - 618
+        - 745
+        - 617
+        - 744
+        - 616
+      -
+        - 759
+        - 631
+        - 758
+        - 630
+        - 757
+        - 755
+        - 629
+        - 756
+        - 754
+        - 628
+        - 627
+        - 753
+        - 752
+        - 626
+        - 625
+        - 624
+      -
+        - 767
+        - 766
+        - 765
+        - 639
+        - 638
+        - 764
+        - 763
+        - 637
+        - 635
+        - 762
+        - 636
+        - 634
+        - 761
+        - 633
+        - 760
+        - 632
+      -
+        - 407
+        - 279
+        - 406
+        - 278
+        - 405
+        - 403
+        - 277
+        - 404
+        - 402
+        - 276
+        - 275
+        - 401
+        - 400
+        - 274
+        - 273
+        - 272
+      -
+        - 415
+        - 414
+        - 413
+        - 287
+        - 286
+        - 412
+        - 411
+        - 285
+        - 283
+        - 410
+        - 284
+        - 282
+        - 409
+        - 281
+        - 408
+        - 280
+      -
+        - 423
+        - 295
+        - 422
+        - 294
+        - 421
+        - 419
+        - 293
+        - 420
+        - 418
+        - 292
+        - 291
+        - 417
+        - 416
+        - 290
+        - 289
+        - 288
+      -
+        - 431
+        - 430
+        - 429
+        - 303
+        - 302
+        - 428
+        - 427
+        - 301
+        - 299
+        - 426
+        - 300
+        - 298
+        - 425
+        - 297
+        - 424
+        - 296
+      -
+        - 439
+        - 311
+        - 438
+        - 310
+        - 437
+        - 435
+        - 309
+        - 436
+        - 434
+        - 308
+        - 307
+        - 433
+        - 432
+        - 306
+        - 305
+        - 304
+      -
+        - 447
+        - 446
+        - 445
+        - 319
+        - 318
+        - 444
+        - 443
+        - 317
+        - 315
+        - 442
+        - 316
+        - 314
+        - 441
+        - 313
+        - 440
+        - 312
+      -
+        - 455
+        - 327
+        - 454
+        - 326
+        - 453
+        - 451
+        - 325
+        - 452
+        - 450
+        - 324
+        - 323
+        - 449
+        - 448
+        - 322
+        - 321
+        - 320
+      -
+        - 463
+        - 462
+        - 461
+        - 335
+        - 334
+        - 460
+        - 459
+        - 333
+        - 331
+        - 458
+        - 332
+        - 330
+        - 457
+        - 329
+        - 456
+        - 328
+      -
+        - 471
+        - 343
+        - 470
+        - 342
+        - 469
+        - 467
+        - 341
+        - 468
+        - 466
+        - 340
+        - 339
+        - 465
+        - 464
+        - 338
+        - 337
+        - 336
+      -
+        - 479
+        - 478
+        - 477
+        - 351
+        - 350
+        - 476
+        - 475
+        - 349
+        - 347
+        - 474
+        - 348
+        - 346
+        - 473
+        - 345
+        - 472
+        - 344
+      -
+        - 487
+        - 359
+        - 486
+        - 358
+        - 485
+        - 483
+        - 357
+        - 484
+        - 482
+        - 356
+        - 355
+        - 481
+        - 480
+        - 354
+        - 353
+        - 352
+      -
+        - 495
+        - 494
+        - 493
+        - 367
+        - 366
+        - 492
+        - 491
+        - 365
+        - 363
+        - 490
+        - 364
+        - 362
+        - 489
+        - 361
+        - 488
+        - 360
+      -
+        - 503
+        - 375
+        - 502
+        - 374
+        - 501
+        - 499
+        - 373
+        - 500
+        - 498
+        - 372
+        - 371
+        - 497
+        - 496
+        - 370
+        - 369
+        - 368
+      -
+        - 511
+        - 510
+        - 509
+        - 383
+        - 382
+        - 508
+        - 507
+        - 381
+        - 379
+        - 506
+        - 380
+        - 378
+        - 505
+        - 377
+        - 504
+        - 376
+      -
+        - 151
+        - 23
+        - 150
+        - 22
+        - 149
+        - 147
+        - 21
+        - 148
+        - 146
+        - 20
+        - 19
+        - 145
+        - 144
+        - 18
+        - 17
+        - 16
+      -
+        - 159
+        - 158
+        - 157
+        - 31
+        - 30
+        - 156
+        - 155
+        - 29
+        - 27
+        - 154
+        - 28
+        - 26
+        - 153
+        - 25
+        - 152
+        - 24
+      -
+        - 167
+        - 39
+        - 166
+        - 38
+        - 165
+        - 163
+        - 37
+        - 164
+        - 162
+        - 36
+        - 35
+        - 161
+        - 160
+        - 34
+        - 33
+        - 32
+      -
+        - 175
+        - 174
+        - 173
+        - 47
+        - 46
+        - 172
+        - 171
+        - 45
+        - 43
+        - 170
+        - 44
+        - 42
+        - 169
+        - 41
+        - 168
+        - 40
+      -
+        - 183
+        - 55
+        - 182
+        - 54
+        - 181
+        - 179
+        - 53
+        - 180
+        - 178
+        - 52
+        - 51
+        - 177
+        - 176
+        - 50
+        - 49
+        - 48
+      -
+        - 191
+        - 190
+        - 189
+        - 63
+        - 62
+        - 188
+        - 187
+        - 61
+        - 59
+        - 186
+        - 60
+        - 58
+        - 185
+        - 57
+        - 184
+        - 56
+      -
+        - 199
+        - 71
+        - 198
+        - 70
+        - 197
+        - 195
+        - 69
+        - 196
+        - 194
+        - 68
+        - 67
+        - 193
+        - 192
+        - 66
+        - 65
+        - 64
+      -
+        - 207
+        - 206
+        - 205
+        - 79
+        - 78
+        - 204
+        - 203
+        - 77
+        - 75
+        - 202
+        - 76
+        - 74
+        - 201
+        - 73
+        - 200
+        - 72
+      -
+        - 215
+        - 87
+        - 214
+        - 86
+        - 213
+        - 211
+        - 85
+        - 212
+        - 210
+        - 84
+        - 83
+        - 209
+        - 208
+        - 82
+        - 81
+        - 80
+      -
+        - 223
+        - 222
+        - 221
+        - 95
+        - 94
+        - 220
+        - 219
+        - 93
+        - 91
+        - 218
+        - 92
+        - 90
+        - 217
+        - 89
+        - 216
+        - 88
+      -
+        - 231
+        - 103
+        - 230
+        - 102
+        - 229
+        - 227
+        - 101
+        - 228
+        - 226
+        - 100
+        - 99
+        - 225
+        - 224
+        - 98
+        - 97
+        - 96
+      -
+        - 239
+        - 238
+        - 237
+        - 111
+        - 110
+        - 236
+        - 235
+        - 109
+        - 107
+        - 234
+        - 108
+        - 106
+        - 233
+        - 105
+        - 232
+        - 104
+      -
+        - 247
+        - 119
+        - 246
+        - 118
+        - 245
+        - 243
+        - 117
+        - 244
+        - 242
+        - 116
+        - 115
+        - 241
+        - 240
+        - 114
+        - 113
+        - 112
+      -
+        - 255
+        - 254
+        - 253
+        - 127
+        - 126
+        - 252
+        - 251
+        - 125
+        - 123
+        - 250
+        - 124
+        - 122
+        - 249
+        - 121
+        - 248
+        - 120
+  32981:
+    -
+      -
+        - 663
+        - 535
+        - 662
+        - 534
+        - 661
+        - 659
+        - 533
+        - 660
+        - 658
+        - 532
+        - 531
+        - 657
+        - 656
+        - 530
+        - 529
+        - 528
+      -
+        - 671
+        - 670
+        - 669
+        - 543
+        - 542
+        - 668
+        - 667
+        - 541
+        - 539
+        - 666
+        - 540
+        - 538
+        - 665
+        - 537
+        - 664
+        - 536
+      -
+        - 679
+        - 551
+        - 678
+        - 550
+        - 677
+        - 675
+        - 549
+        - 676
+        - 674
+        - 548
+        - 547
+        - 673
+        - 672
+        - 546
+        - 545
+        - 544
+      -
+        - 687
+        - 686
+        - 685
+        - 559
+        - 558
+        - 684
+        - 683
+        - 557
+        - 555
+        - 682
+        - 556
+        - 554
+        - 681
+        - 553
+        - 680
+        - 552
+      -
+        - 695
+        - 567
+        - 694
+        - 566
+        - 693
+        - 691
+        - 565
+        - 692
+        - 690
+        - 564
+        - 563
+        - 689
+        - 688
+        - 562
+        - 561
+        - 560
+      -
+        - 703
+        - 702
+        - 701
+        - 575
+        - 574
+        - 700
+        - 699
+        - 573
+        - 571
+        - 698
+        - 572
+        - 570
+        - 697
+        - 569
+        - 696
+        - 568
+      -
+        - 711
+        - 583
+        - 710
+        - 582
+        - 709
+        - 707
+        - 581
+        - 708
+        - 706
+        - 580
+        - 579
+        - 705
+        - 704
+        - 578
+        - 577
+        - 576
+      -
+        - 719
+        - 718
+        - 717
+        - 591
+        - 590
+        - 716
+        - 715
+        - 589
+        - 587
+        - 714
+        - 588
+        - 586
+        - 713
+        - 585
+        - 712
+        - 584
+      -
+        - 727
+        - 599
+        - 726
+        - 598
+        - 725
+        - 723
+        - 597
+        - 724
+        - 722
+        - 596
+        - 595
+        - 721
+        - 720
+        - 594
+        - 593
+        - 592
+      -
+        - 735
+        - 734
+        - 733
+        - 607
+        - 606
+        - 732
+        - 731
+        - 605
+        - 603
+        - 730
+        - 604
+        - 602
+        - 729
+        - 601
+        - 728
+        - 600
+      -
+        - 743
+        - 615
+        - 742
+        - 614
+        - 741
+        - 739
+        - 613
+        - 740
+        - 738
+        - 612
+        - 611
+        - 737
+        - 736
+        - 610
+        - 609
+        - 608
+      -
+        - 751
+        - 750
+        - 749
+        - 623
+        - 622
+        - 748
+        - 747
+        - 621
+        - 619
+        - 746
+        - 620
+        - 618
+        - 745
+        - 617
+        - 744
+        - 616
+      -
+        - 759
+        - 631
+        - 758
+        - 630
+        - 757
+        - 755
+        - 629
+        - 756
+        - 754
+        - 628
+        - 627
+        - 753
+        - 752
+        - 626
+        - 625
+        - 624
+      -
+        - 767
+        - 766
+        - 765
+        - 639
+        - 638
+        - 764
+        - 763
+        - 637
+        - 635
+        - 762
+        - 636
+        - 634
+        - 761
+        - 633
+        - 760
+        - 632
+      -
+        - 407
+        - 279
+        - 406
+        - 278
+        - 405
+        - 403
+        - 277
+        - 404
+        - 402
+        - 276
+        - 275
+        - 401
+        - 400
+        - 274
+        - 273
+        - 272
+      -
+        - 415
+        - 414
+        - 413
+        - 287
+        - 286
+        - 412
+        - 411
+        - 285
+        - 283
+        - 410
+        - 284
+        - 282
+        - 409
+        - 281
+        - 408
+        - 280
+      -
+        - 423
+        - 295
+        - 422
+        - 294
+        - 421
+        - 419
+        - 293
+        - 420
+        - 418
+        - 292
+        - 291
+        - 417
+        - 416
+        - 290
+        - 289
+        - 288
+      -
+        - 431
+        - 430
+        - 429
+        - 303
+        - 302
+        - 428
+        - 427
+        - 301
+        - 299
+        - 426
+        - 300
+        - 298
+        - 425
+        - 297
+        - 424
+        - 296
+      -
+        - 439
+        - 311
+        - 438
+        - 310
+        - 437
+        - 435
+        - 309
+        - 436
+        - 434
+        - 308
+        - 307
+        - 433
+        - 432
+        - 306
+        - 305
+        - 304
+      -
+        - 447
+        - 446
+        - 445
+        - 319
+        - 318
+        - 444
+        - 443
+        - 317
+        - 315
+        - 442
+        - 316
+        - 314
+        - 441
+        - 313
+        - 440
+        - 312
+      -
+        - 455
+        - 327
+        - 454
+        - 326
+        - 453
+        - 451
+        - 325
+        - 452
+        - 450
+        - 324
+        - 323
+        - 449
+        - 448
+        - 322
+        - 321
+        - 320
+      -
+        - 463
+        - 462
+        - 461
+        - 335
+        - 334
+        - 460
+        - 459
+        - 333
+        - 331
+        - 458
+        - 332
+        - 330
+        - 457
+        - 329
+        - 456
+        - 328
+      -
+        - 471
+        - 343
+        - 470
+        - 342
+        - 469
+        - 467
+        - 341
+        - 468
+        - 466
+        - 340
+        - 339
+        - 465
+        - 464
+        - 338
+        - 337
+        - 336
+      -
+        - 479
+        - 478
+        - 477
+        - 351
+        - 350
+        - 476
+        - 475
+        - 349
+        - 347
+        - 474
+        - 348
+        - 346
+        - 473
+        - 345
+        - 472
+        - 344
+      -
+        - 487
+        - 359
+        - 486
+        - 358
+        - 485
+        - 483
+        - 357
+        - 484
+        - 482
+        - 356
+        - 355
+        - 481
+        - 480
+        - 354
+        - 353
+        - 352
+      -
+        - 495
+        - 494
+        - 493
+        - 367
+        - 366
+        - 492
+        - 491
+        - 365
+        - 363
+        - 490
+        - 364
+        - 362
+        - 489
+        - 361
+        - 488
+        - 360
+      -
+        - 503
+        - 375
+        - 502
+        - 374
+        - 501
+        - 499
+        - 373
+        - 500
+        - 498
+        - 372
+        - 371
+        - 497
+        - 496
+        - 370
+        - 369
+        - 368
+      -
+        - 511
+        - 510
+        - 509
+        - 383
+        - 382
+        - 508
+        - 507
+        - 381
+        - 379
+        - 506
+        - 380
+        - 378
+        - 505
+        - 377
+        - 504
+        - 376
+      -
+        - 151
+        - 23
+        - 150
+        - 22
+        - 149
+        - 147
+        - 21
+        - 148
+        - 146
+        - 20
+        - 19
+        - 145
+        - 144
+        - 18
+        - 17
+        - 16
+      -
+        - 159
+        - 158
+        - 157
+        - 31
+        - 30
+        - 156
+        - 155
+        - 29
+        - 27
+        - 154
+        - 28
+        - 26
+        - 153
+        - 25
+        - 152
+        - 24
+      -
+        - 167
+        - 39
+        - 166
+        - 38
+        - 165
+        - 163
+        - 37
+        - 164
+        - 162
+        - 36
+        - 35
+        - 161
+        - 160
+        - 34
+        - 33
+        - 32
+      -
+        - 175
+        - 174
+        - 173
+        - 47
+        - 46
+        - 172
+        - 171
+        - 45
+        - 43
+        - 170
+        - 44
+        - 42
+        - 169
+        - 41
+        - 168
+        - 40
+      -
+        - 183
+        - 55
+        - 182
+        - 54
+        - 181
+        - 179
+        - 53
+        - 180
+        - 178
+        - 52
+        - 51
+        - 177
+        - 176
+        - 50
+        - 49
+        - 48
+      -
+        - 191
+        - 190
+        - 189
+        - 63
+        - 62
+        - 188
+        - 187
+        - 61
+        - 59
+        - 186
+        - 60
+        - 58
+        - 185
+        - 57
+        - 184
+        - 56
+      -
+        - 199
+        - 71
+        - 198
+        - 70
+        - 197
+        - 195
+        - 69
+        - 196
+        - 194
+        - 68
+        - 67
+        - 193
+        - 192
+        - 66
+        - 65
+        - 64
+      -
+        - 207
+        - 206
+        - 205
+        - 79
+        - 78
+        - 204
+        - 203
+        - 77
+        - 75
+        - 202
+        - 76
+        - 74
+        - 201
+        - 73
+        - 200
+        - 72
+      -
+        - 215
+        - 87
+        - 214
+        - 86
+        - 213
+        - 211
+        - 85
+        - 212
+        - 210
+        - 84
+        - 83
+        - 209
+        - 208
+        - 82
+        - 81
+        - 80
+      -
+        - 223
+        - 222
+        - 221
+        - 95
+        - 94
+        - 220
+        - 219
+        - 93
+        - 91
+        - 218
+        - 92
+        - 90
+        - 217
+        - 89
+        - 216
+        - 88
+      -
+        - 231
+        - 103
+        - 230
+        - 102
+        - 229
+        - 227
+        - 101
+        - 228
+        - 226
+        - 100
+        - 99
+        - 225
+        - 224
+        - 98
+        - 97
+        - 96
+      -
+        - 239
+        - 238
+        - 237
+        - 111
+        - 110
+        - 236
+        - 235
+        - 109
+        - 107
+        - 234
+        - 108
+        - 106
+        - 233
+        - 105
+        - 232
+        - 104
+      -
+        - 247
+        - 119
+        - 246
+        - 118
+        - 245
+        - 243
+        - 117
+        - 244
+        - 242
+        - 116
+        - 115
+        - 241
+        - 240
+        - 114
+        - 113
+        - 112
+      -
+        - 255
+        - 254
+        - 253
+        - 127
+        - 126
+        - 252
+        - 251
+        - 125
+        - 123
+        - 250
+        - 124
+        - 122
+        - 249
+        - 121
+        - 248
+        - 120
+...
diff --git a/algo/unpack/Unpack.cxx b/algo/unpack/Unpack.cxx
index 0c9ada648e..bb71ddcd56 100644
--- a/algo/unpack/Unpack.cxx
+++ b/algo/unpack/Unpack.cxx
@@ -53,6 +53,17 @@ namespace cbm::algo
         ParallelMsLoop(Subsystem::RICH, monitor, digiTs.fRich, monitor.fRich, *timeslice, fAlgoRich, 0x03);
     }
 
+    if (DetectorEnabled(Subsystem::TRD)) {
+      monitor.fNumBytesInTrd +=
+        ParallelMsLoop(Subsystem::TRD, monitor, digiTs.fTrd, monitor.fTrd, *timeslice, fAlgoTrd, 0x01);
+    }
+
+    if (DetectorEnabled(Subsystem::TRD2D)) {
+      monitor.fNumBytesInTrd2d +=
+        ParallelMsLoop(Subsystem::TRD2D, monitor, digiTs.fTrd2d, monitor.fTrd2d, *timeslice, fAlgoTrd2d, 0x02);
+    }
+
+
     // ---  Component loop
     for (uint64_t comp = 0; comp < timeslice->num_components(); comp++) {
 
@@ -84,14 +95,14 @@ namespace cbm::algo
       // if (subsystem == Subsystem::BMON) {
       //   MsLoop(timeslice, fAlgoBmon, comp, equipmentId, &digiTs.fT0, monitor, &monitor.fBmon, 0x00);
       // }
-      if (subsystem == Subsystem::TRD) {
-        monitor.fNumBytesInTrd +=
-          MsLoop(timeslice, fAlgoTrd, comp, equipmentId, &digiTs.fTrd, monitor, &monitor.fTrd, 0x01);
-      }
-      if (subsystem == Subsystem::TRD2D) {
-        monitor.fNumBytesInTrd2d +=
-          MsLoop(timeslice, fAlgoTrd2d, comp, equipmentId, &digiTs.fTrd2d, monitor, &monitor.fTrd2d, 0x02);
-      }
+      // if (subsystem == Subsystem::TRD) {
+      //   monitor.fNumBytesInTrd +=
+      //     MsLoop(timeslice, fAlgoTrd, comp, equipmentId, &digiTs.fTrd, monitor, &monitor.fTrd, 0x01);
+      // }
+      // if (subsystem == Subsystem::TRD2D) {
+      //   monitor.fNumBytesInTrd2d +=
+      //     MsLoop(timeslice, fAlgoTrd2d, comp, equipmentId, &digiTs.fTrd2d, monitor, &monitor.fTrd2d, 0x02);
+      // }
       // if (subsystem == Subsystem::RICH) {
       //   monitor.fNumBytesInRich +=
       //     MsLoop(timeslice, fAlgoRich, comp, equipmentId, &digiTs.fRich, monitor, &monitor.fRich, 0x03);
@@ -408,15 +419,15 @@ namespace cbm::algo
         for (size_t chan = 0; chan < numChans; chan++) {
           trd2d::UnpackChannelPar chanPar;
           auto pars           = fTrd2dConfig.ChanMap(equip, asic, chan);
-          chanPar.fPadAddress = std::get<0>(pars);  // Pad address for channel
-          chanPar.fMask       = std::get<1>(pars);  // Flag channel mask
-          chanPar.fDaqOffset  = std::get<2>(pars);  // Time calibration parameter
+          chanPar.fPadAddress = pars.padAddress;    // Pad address for channel
+          chanPar.fMask       = pars.rPairingFlag;  // Flag channel mask
+          chanPar.fDaqOffset  = pars.daqOffset;     // Time calibration parameter
           asicPar.fChanParams.push_back(chanPar);
         }
         auto comppars          = fTrd2dConfig.CompMap(equip);
         par->fSystemTimeOffset = fSystemTimeOffset[Subsystem::TRD2D];
-        par->fModId            = comppars.first;
-        par->fCrobId           = comppars.second;
+        par->fModId            = comppars.moduleId;
+        par->fCrobId           = comppars.crobId;
         par->fAsicParams.push_back(asicPar);
       }
       fAlgoTrd2d[equip].SetParams(std::move(par));
diff --git a/algo/unpack/UnpackChain.cxx b/algo/unpack/UnpackChain.cxx
index 670652090f..68ff5f9bd1 100644
--- a/algo/unpack/UnpackChain.cxx
+++ b/algo/unpack/UnpackChain.cxx
@@ -3,12 +3,22 @@
    Authors: Felix Weiglhofer [committer] */
 #include "UnpackChain.h"
 
+#include "config/Yaml.h"
+
 using namespace cbm::algo;
 using fles::Subsystem;
 
 void UnpackChain::Init()
 {
   fUnpack.SetApplyWalkCorrection(true);
+  if (Opts().HasDetector(Subsystem::TRD)) {
+    auto yaml          = YAML::LoadFile((Opts().ParamsDir() / "TrdReadoutSetup.yaml").string());
+    fUnpack.fTrdConfig = config::Read<trd::ReadoutConfig>(yaml);
+  }
+  if (Opts().HasDetector(Subsystem::TRD2D)) {
+    auto yaml            = YAML::LoadFile((Opts().ParamsDir() / "Trd2dReadoutSetup.yaml").string());
+    fUnpack.fTrd2dConfig = config::Read<trd2d::ReadoutConfig>(yaml);
+  }
   fUnpack.Init(Opts().Detectors());
 }
 
diff --git a/macro/reco/reco_fairroot.C b/macro/reco/reco_fairroot.C
index a234228a34..059dc1d849 100644
--- a/macro/reco/reco_fairroot.C
+++ b/macro/reco/reco_fairroot.C
@@ -62,7 +62,8 @@ void reco_fairroot(TString tsaFile, TString configFile, TString outFile,
   // -----   Run reconstruction   -------------------------------------------
   TStopwatch timer;
   timer.Start();
-  CbmReco run(tsaFile.Data(), outFile.Data(), configFile.Data(), numTs, port);
+  CbmReco::Config config;
+  CbmReco run(config, tsaFile.Data(), outFile.Data(), configFile.Data(), numTs, port);
   run.Run();
   timer.Stop();
   // ------------------------------------------------------------------------
diff --git a/reco/app/cbmreco_fairrun/Application.cxx b/reco/app/cbmreco_fairrun/Application.cxx
index e58543c8aa..a5aedb8935 100644
--- a/reco/app/cbmreco_fairrun/Application.cxx
+++ b/reco/app/cbmreco_fairrun/Application.cxx
@@ -23,8 +23,11 @@ Application::Application(ProgramOptions const& opt) : fOpt(opt)
     fout << config.ToYaml();
   }
 
-  fCbmReco = std::make_unique<CbmReco>(fOpt.InputUri(), fOpt.OutputRootFile(), fOpt.ConfigYamlFile(), fOpt.MaxNumTs(),
-                                       fOpt.HttpServerPort(), fMonitor.get());
+  CbmReco::Config recoConfig;
+  recoConfig.dumpSetup = fOpt.DumpSetup();
+
+  fCbmReco = std::make_unique<CbmReco>(recoConfig, fOpt.InputUri(), fOpt.OutputRootFile(), fOpt.ConfigYamlFile(),
+                                       fOpt.MaxNumTs(), fOpt.HttpServerPort(), fMonitor.get());
 }
 
 void Application::Run() { fCbmReco->Run(); }
diff --git a/reco/app/cbmreco_fairrun/ProgramOptions.cxx b/reco/app/cbmreco_fairrun/ProgramOptions.cxx
index 970485daa0..12b8972f1b 100644
--- a/reco/app/cbmreco_fairrun/ProgramOptions.cxx
+++ b/reco/app/cbmreco_fairrun/ProgramOptions.cxx
@@ -52,6 +52,7 @@ void ProgramOptions::ParseOptions(int argc, char* argv[])
              "name of a yaml config file containing the reconstruction chain configuration");
   config_add("save-config", po::value<std::string>(&fSaveConfigYamlFile)->value_name("<filename>"),
              "save configuration to yaml file (mostly for debugging)");
+  config_add("dump-setup", po::bool_switch(&fDumpSetup), "dump the readout setup to yaml");
   config_add("max-timeslice-number,n", po::value<int32_t>(&fMaxNumTs)->value_name("<n>"),
              "quit after processing given number of timeslices (default: unlimited)");
   config_add("http-server-port,p", po::value<uint16_t>(&fHttpServerPort)->value_name("<n>"),
diff --git a/reco/app/cbmreco_fairrun/ProgramOptions.h b/reco/app/cbmreco_fairrun/ProgramOptions.h
index 0b253a7f25..fd22cdf2c3 100644
--- a/reco/app/cbmreco_fairrun/ProgramOptions.h
+++ b/reco/app/cbmreco_fairrun/ProgramOptions.h
@@ -51,6 +51,9 @@ public:
   /** @brief Get save configuration file name (.yaml format) **/
   [[nodiscard]] const std::string& SaveConfigYamlFile() const { return fSaveConfigYamlFile; }
 
+  /** @brief Get flag to dump the readout setup to yaml **/
+  [[nodiscard]] bool DumpSetup() const { return fDumpSetup; }
+
   /** @brief Get maximum number of timeslices to process **/
   [[nodiscard]] int32_t MaxNumTs() const { return fMaxNumTs; }
 
@@ -67,6 +70,7 @@ private:
   std::string fOutputRootFile = "/dev/null";  ///< Output file name (.root format)
   std::string fConfigYamlFile;                ///< Configuration file name (.yaml format)
   std::string fSaveConfigYamlFile;            ///< Save configuration file name (.yaml format)
+  bool fDumpSetup          = false;           ///< Dump the readout setup to yaml
   int32_t fMaxNumTs        = INT32_MAX;       ///< Maximum number of timeslices to process
   uint16_t fHttpServerPort = 0;               ///< Port number for the HTTP server. If 0, server will not be activated.
 };
diff --git a/reco/app/cbmreco_fairrun/main.cxx b/reco/app/cbmreco_fairrun/main.cxx
index 461e8b6d1c..bb47c0e4fe 100644
--- a/reco/app/cbmreco_fairrun/main.cxx
+++ b/reco/app/cbmreco_fairrun/main.cxx
@@ -15,7 +15,7 @@ int main(int argc, char* argv[])
   }
   catch (std::exception const& e) {
     L_(fatal) << e.what();
-    return EXIT_FAILURE;
+    throw;
   }
 
   L_(info) << "exiting";
diff --git a/reco/tasks/CbmReco.cxx b/reco/tasks/CbmReco.cxx
index 3045c23c93..a08eb468b1 100644
--- a/reco/tasks/CbmReco.cxx
+++ b/reco/tasks/CbmReco.cxx
@@ -33,8 +33,10 @@ using std::string;
 
 
 // -----   Constructor from single source   -----------------------------------
-CbmReco::CbmReco(string source, string outFile, string configFile, int32_t numTs, uint16_t port, cbm::Monitor* monitor)
-  : fSourceNames {source}
+CbmReco::CbmReco(Config config, string source, string outFile, string configFile, int32_t numTs, uint16_t port,
+                 cbm::Monitor* monitor)
+  : fConfig(config)
+  , fSourceNames {source}
   , fOutputFileName(outFile)
   , fConfigFileName(configFile)
   , fNumTs(numTs)
@@ -46,9 +48,10 @@ CbmReco::CbmReco(string source, string outFile, string configFile, int32_t numTs
 
 
 // -----   Constructor from multiple sources   --------------------------------
-CbmReco::CbmReco(std::vector<string> sources, string outFile, string configFile, int32_t numTs, uint16_t port,
-                 cbm::Monitor* monitor)
-  : fSourceNames(sources)
+CbmReco::CbmReco(Config config, std::vector<string> sources, string outFile, string configFile, int32_t numTs,
+                 uint16_t port, cbm::Monitor* monitor)
+  : fConfig(config)
+  , fSourceNames(sources)
   , fOutputFileName(outFile)
   , fConfigFileName(configFile)
   , fNumTs(numTs)
@@ -122,7 +125,9 @@ int32_t CbmReco::Run()
 
   // --- Unpacking
   if (!isRootInput) {
-    auto unpack = make_unique<CbmTaskUnpack>();
+    CbmTaskUnpack::Config unpackConfig;
+    unpackConfig.dumpSetup = fConfig.dumpSetup;
+    auto unpack            = make_unique<CbmTaskUnpack>(unpackConfig);
     unpack->SetMonitor(fMonitor);
     unpack->SetOutputBranchPersistent("DigiTimeslice.", false);
     run.AddTask(unpack.release());
diff --git a/reco/tasks/CbmReco.h b/reco/tasks/CbmReco.h
index 77d11ab08e..54658a3256 100644
--- a/reco/tasks/CbmReco.h
+++ b/reco/tasks/CbmReco.h
@@ -44,6 +44,12 @@ namespace cbm
 class CbmReco {
 
 public:
+  // Configuration structure
+  // TODO: move more settings here
+  struct Config {
+    bool dumpSetup = false;
+  };
+
   /** @brief Default constructor **/
   //CbmReco() {};
 
@@ -55,7 +61,7 @@ public:
    ** @param config  Configuration
    ** @param port    Port number for the http server. If 0, server will not be activated.
    **/
-  CbmReco(std::string source, std::string outFile, std::string configFile,
+  CbmReco(Config config, std::string source, std::string outFile, std::string configFile,
           int32_t numTs = std::numeric_limits<int32_t>::max(), uint16_t port = 0, cbm::Monitor* monitor = nullptr);
 
 
@@ -66,7 +72,7 @@ public:
    ** @param config  Configuration
    ** @param port    Port number for the http server
    **/
-  CbmReco(std::vector<std::string> sources, std::string outFile, std::string configFile,
+  CbmReco(Config config, std::vector<std::string> sources, std::string outFile, std::string configFile,
           int32_t numTs = std::numeric_limits<int32_t>::max(), uint16_t port = 0, cbm::Monitor* monitor = nullptr);
 
 
@@ -87,6 +93,7 @@ public:
 
 
 private:
+  Config fConfig                        = {};  ///< Configuration
   std::vector<std::string> fSourceNames = {};  ///< Sources (input files or stream)
   std::string fOutputFileName           = "";  ///< Output file (ROOT)
   std::string fConfigFileName           = "";  ///< Configuration file (YAML)
diff --git a/reco/tasks/CbmTaskUnpack.cxx b/reco/tasks/CbmTaskUnpack.cxx
index 3fab920d5e..aea57d1d8e 100644
--- a/reco/tasks/CbmTaskUnpack.cxx
+++ b/reco/tasks/CbmTaskUnpack.cxx
@@ -36,10 +36,13 @@
 #include <sstream>
 #include <vector>
 
+#include "config/Yaml.h"
+
 using namespace std;
+using namespace cbm::algo;
 
 // -----   Constructor   -----------------------------------------------------
-CbmTaskUnpack::CbmTaskUnpack() : FairTask("Unpack") {}
+CbmTaskUnpack::CbmTaskUnpack(Config config) : FairTask("Unpack"), fConfig(config) {}
 // ---------------------------------------------------------------------------
 
 
@@ -154,6 +157,8 @@ InitStatus CbmTaskUnpack::Init()
   // ---- Initialize unpacker
   fUnpack.fTrdConfig   = InitTrdReadoutConfig();
   fUnpack.fTrd2dConfig = InitTrd2dReadoutConfig();
+  if (fConfig.dumpSetup) { DumpUnpackSetup(); }
+
   fUnpack.Init();
 
   return kSUCCESS;
@@ -292,4 +297,15 @@ cbm::algo::trd::ReadoutConfig CbmTaskUnpack::InitTrdReadoutConfig()
   return TrdConfig;
 }
 
+void CbmTaskUnpack::DumpUnpackSetup()
+{
+  LOG(info) << "--- Dumping readout setup to yaml file ---";
+
+  auto yaml = config::Dump {}(fUnpack.fTrdConfig);
+  std::ofstream("TrdReadoutSetup.yaml") << yaml;
+
+  yaml = config::Dump {}(fUnpack.fTrd2dConfig);
+  std::ofstream("Trd2dReadoutSetup.yaml") << yaml;
+}
+
 ClassImp(CbmTaskUnpack)
diff --git a/reco/tasks/CbmTaskUnpack.h b/reco/tasks/CbmTaskUnpack.h
index 9fe372bcf3..2c5c3c78b7 100644
--- a/reco/tasks/CbmTaskUnpack.h
+++ b/reco/tasks/CbmTaskUnpack.h
@@ -46,8 +46,12 @@ class CbmTaskUnpack : public FairTask {
 
 
 public:
+  struct Config {
+    bool dumpSetup = false;
+  };
+
   /** @brief Constructor **/
-  CbmTaskUnpack();
+  CbmTaskUnpack(Config config);
 
 
   /** @brief Copy constructor (disabled) **/
@@ -78,7 +82,6 @@ private:  // methods
   /** @brief Task initialisation **/
   virtual InitStatus Init();
 
-
   /** @brief Initialisation of address maps for Trd **/
   cbm::algo::trd::ReadoutConfig InitTrdReadoutConfig();
 
@@ -86,7 +89,11 @@ private:  // methods
   /** @brief Initialisation of address maps for Trd2d **/
   cbm::algo::trd2d::ReadoutConfig InitTrd2dReadoutConfig();
 
+  void DumpUnpackSetup();
+
 private:  // members
+  Config fConfig = {};  ///< Configuration
+
   CbmSourceTs* fSource   = nullptr;
   cbm::Monitor* fMonitor = nullptr;
   std::string fHostname;
-- 
GitLab